Эх сурвалжийг харах

wip

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 2 жил өмнө
parent
commit
464a6ad1b6

+ 1 - 0
app/src/main/java/com/nextcloud/client/etm/EtmActivity.kt

@@ -71,6 +71,7 @@ class EtmActivity : ToolbarActivity(), Injectable {
         }
     }
 
+    @Deprecated("Deprecated in Java")
     override fun onBackPressed() {
         if (!vm.onBackPressed()) {
             super.onBackPressed()

+ 1 - 0
app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -399,6 +399,7 @@ public abstract class DrawerActivity extends ToolbarActivity
         DrawerMenuUtil.filterSearchMenuItems(menu, user, getResources());
         DrawerMenuUtil.filterTrashbinMenuItem(menu, capability);
         DrawerMenuUtil.filterActivityMenuItem(menu, capability);
+        DrawerMenuUtil.filterGroupfoldersMenuItem(menu, capability);
 
         DrawerMenuUtil.setupHomeMenuItem(menu, getResources());
 

+ 60 - 1
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -59,9 +59,11 @@ import com.google.android.material.appbar.AppBarLayout;
 import com.google.android.material.snackbar.Snackbar;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.appinfo.AppInfo;
+import com.nextcloud.client.core.AsyncRunner;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.files.DeepLinkHandler;
 import com.nextcloud.client.media.PlayerServiceConnection;
+import com.nextcloud.client.network.ClientFactory;
 import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.utils.IntentUtil;
@@ -78,6 +80,7 @@ import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
 import com.owncloud.android.files.services.NameCollisionPolicy;
+import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
@@ -96,6 +99,7 @@ import com.owncloud.android.operations.UploadFileOperation;
 import com.owncloud.android.syncadapter.FileSyncAdapter;
 import com.owncloud.android.ui.asynctasks.CheckAvailableSpaceTask;
 import com.owncloud.android.ui.asynctasks.FetchRemoteFileTask;
+import com.owncloud.android.ui.asynctasks.GetRemoteFileTask;
 import com.owncloud.android.ui.dialog.SendShareDialog;
 import com.owncloud.android.ui.dialog.SortingOrderDialogFragment;
 import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment;
@@ -150,6 +154,7 @@ import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
 import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import kotlin.Unit;
 
 import static com.owncloud.android.datamodel.OCFile.PATH_SEPARATOR;
 import static com.owncloud.android.utils.PermissionUtil.PERMISSION_CHOICE_DIALOG_TAG;
@@ -181,6 +186,7 @@ public class FileDisplayActivity extends FileActivity
     public static final String TAG_PUBLIC_LINK = "PUBLIC_LINK";
     public static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG";
     public static final String KEY_FILE_ID = "KEY_FILE_ID";
+    public static final String KEY_FILE_PATH = "KEY_FILE_PATH";
     public static final String KEY_ACCOUNT = "KEY_ACCOUNT";
 
 
@@ -237,6 +243,7 @@ public class FileDisplayActivity extends FileActivity
 
     @Inject
     FastScrollUtils fastScrollUtils;
+    @Inject AsyncRunner asyncRunner;
 
     public static Intent openFileIntent(Context context, User user, OCFile file) {
         final Intent intent = new Intent(context, PreviewImageActivity.class);
@@ -2439,13 +2446,21 @@ public class FileDisplayActivity extends FileActivity
 
         String userName = intent.getStringExtra(KEY_ACCOUNT);
         String fileId = intent.getStringExtra(KEY_FILE_ID);
+        String filePath = intent.getStringExtra(KEY_FILE_PATH);
 
         if (userName == null && fileId == null && intent.getData() != null) {
             openDeepLink(intent.getData());
         } else {
             Optional<User> optionalUser = userName == null ? getUser() : getUserAccountManager().getUser(userName);
             if (optionalUser.isPresent()) {
-                openFile(optionalUser.get(), fileId);
+                if (!TextUtils.isEmpty(fileId)) {
+                    openFile(optionalUser.get(), fileId);
+                } else if (!TextUtils.isEmpty(filePath)) {
+                    openFileByPath(optionalUser.get(), filePath);
+                } else {
+                    dismissLoadingDialog();
+                    DisplayUtils.showSnackMessage(this, getString(R.string.file_not_found));
+                }
             } else {
                 dismissLoadingDialog();
                 DisplayUtils.showSnackMessage(this, getString(R.string.associated_account_not_found));
@@ -2507,7 +2522,51 @@ public class FileDisplayActivity extends FileActivity
                                                                           storageManager,
                                                                           this);
         fetchRemoteFileTask.execute();
+    }
+
+    private void openFileByPath(User user, String filepath) {
+        setUser(user);
+
+        if (filepath == null) {
+            dismissLoadingDialog();
+            DisplayUtils.showSnackMessage(this, getString(R.string.error_retrieving_file));
+            return;
+        }
+
+        FileDataStorageManager storageManager = getStorageManager();
+
+        if (storageManager == null) {
+            storageManager = new FileDataStorageManager(user, getContentResolver());
+        }
+
+        OwnCloudClient client;
+        try {
+            client = clientFactory.create(user);
+        } catch (ClientFactory.CreationException e) {
+            dismissLoadingDialog();
+            DisplayUtils.showSnackMessage(this, getString(R.string.error_retrieving_file));
+            return;
+        }
 
+        GetRemoteFileTask getRemoteFileTask = new GetRemoteFileTask(this,
+                                                                    filepath,
+                                                                    client,
+                                                                    storageManager,
+                                                                    user);
+        asyncRunner.postQuickTask(getRemoteFileTask, this::onFileRequestResult, null);
+    }
+
+    private Unit onFileRequestResult(GetRemoteFileTask.Result result) {
+        setFile(result.getFile());
+
+        OCFileListFragment fileFragment = new OCFileListFragment();
+        setLeftFragment(fileFragment);
+        //fileFragment.onItemClicked(result.getFile());
+
+        fileFragment.listDirectory(result.getFile(), false, false);
+
+        dismissLoadingDialog();
+        return null;
     }
 
     public void performUnifiedSearch(String query) {

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/adapter/GroupfolderListAdapter.kt

@@ -38,7 +38,7 @@ import java.io.File
 class GroupfolderListAdapter(
     val context: Context,
     val viewThemeUtils: ViewThemeUtils,
-    val groupfolderListInterface: GroupfolderListInterface
+    private val groupfolderListInterface: GroupfolderListInterface
 ) :
     RecyclerView.Adapter<RecyclerView.ViewHolder>() {
     lateinit var list: List<Groupfolder>

+ 1 - 2
app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java

@@ -23,7 +23,6 @@
 
 package com.owncloud.android.ui.fragment;
 
-import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.AsyncTask;
@@ -398,4 +397,4 @@ public class GalleryFragment extends OCFileListFragment implements GalleryFragme
     protected void setGridViewColumns(float scaleFactor) {
         // do nothing
     }
-}
+}

+ 13 - 40
app/src/main/java/com/owncloud/android/ui/fragment/GroupfolderListFragment.kt

@@ -21,17 +21,18 @@
 package com.owncloud.android.ui.fragment
 
 import android.annotation.SuppressLint
+import android.content.Intent
+import android.content.Intent.ACTION_VIEW
 import android.os.Bundle
 import android.os.Handler
-import android.view.View
 import androidx.lifecycle.lifecycleScope
 import androidx.recyclerview.widget.GridLayoutManager
 import com.nextcloud.android.lib.resources.groupfolders.Groupfolder
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.logger.Logger
+import com.owncloud.android.MainApp
 import com.owncloud.android.R
 import com.owncloud.android.datamodel.OCFile
-import com.owncloud.android.lib.common.utils.Log_OC
 import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation
 import com.owncloud.android.lib.resources.files.model.RemoteFile
 import com.owncloud.android.ui.activity.FileDisplayActivity
@@ -146,48 +147,20 @@ class GroupfolderListFragment : OCFileListFragment(), Injectable, GroupfolderLis
         }
     }
 
-    override fun onShareIconClick(file: OCFile) {
-        fetchFileAndRun(file) { fetched ->
-            super.onShareIconClick(fetched)
-        }
-    }
-
-    override fun showShareDetailView(file: OCFile) {
-        fetchFileAndRun(file) { fetched ->
-            super.showShareDetailView(fetched)
-        }
-    }
-
-    override fun showActivityDetailView(file: OCFile) {
-        fetchFileAndRun(file) { fetched ->
-            super.showActivityDetailView(fetched)
-        }
-    }
-
-    override fun onOverflowIconClicked(file: OCFile, view: View?) {
-        fetchFileAndRun(file) { fetched ->
-            super.onOverflowIconClicked(fetched, view)
-        }
-    }
-
-    override fun onItemClicked(file: OCFile) {
-        fetchFileAndRun(file) { fetched ->
-            super.onItemClicked(fetched)
-        }
-    }
-
-    override fun onLongItemClicked(file: OCFile): Boolean {
-        fetchFileAndRun(file) { fetched ->
-            super.onLongItemClicked(fetched)
-        }
-        return true
-    }
-
     companion object {
         private val SHARED_TAG = GroupfolderListFragment::class.java.simpleName
     }
 
     override fun onFolderClick(path: String) {
-        Log_OC.d("groupfolder", path)
+        MainApp.showOnlyFilesOnDevice(false)
+        Intent(
+            context,
+            FileDisplayActivity::class.java
+        ).apply {
+            addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+            action = ACTION_VIEW
+            putExtra(FileDisplayActivity.KEY_FILE_PATH, path)
+            startActivity(this)
+        }
     }
 }

+ 6 - 0
app/src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java

@@ -64,6 +64,12 @@ public final class DrawerMenuUtil {
         }
     }
 
+    public static void filterGroupfoldersMenuItem(Menu menu, @Nullable OCCapability capability) {
+        if (capability != null && capability.getGroupfolders().isFalse()) {
+            filterMenuItems(menu, R.id.nav_groupfolders);
+        }
+    }
+
     public static void removeMenuItem(Menu menu, int id, boolean remove) {
         if (remove) {
             menu.removeItem(id);