浏览代码

Fix folder selection in custom autoupload folders

Hide checkboxes and keep choose button enabled. The flow to select folders is to navigate into them and tap "Choose", as is typical in file browsers.

Signed-off-by: Álvaro Brey Vilas <alvaro.brey@nextcloud.com>
Álvaro Brey Vilas 3 年之前
父节点
当前提交
900145da05

+ 3 - 3
app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -189,7 +189,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
         uploadButton = findViewById(R.id.upload_files_btn_upload);
         uploadButton = findViewById(R.id.upload_files_btn_upload);
         ThemeButtonUtils.colorPrimaryButton(uploadButton, this);
         ThemeButtonUtils.colorPrimaryButton(uploadButton, this);
         uploadButton.setOnClickListener(this);
         uploadButton.setOnClickListener(this);
-        uploadButton.setEnabled(false);
+        uploadButton.setEnabled(mLocalFolderPickerMode);
 
 
         int localBehaviour = preferences.getUploaderBehaviour();
         int localBehaviour = preferences.getUploaderBehaviour();
 
 
@@ -458,7 +458,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
 
 
     private void updateUploadButtonActive() {
     private void updateUploadButtonActive() {
         final boolean anySelected = mFileListFragment.getCheckedFilesCount() > 0;
         final boolean anySelected = mFileListFragment.getCheckedFilesCount() > 0;
-        uploadButton.setEnabled(anySelected);
+        uploadButton.setEnabled(anySelected || mLocalFolderPickerMode);
     }
     }
 
 
     private void setSelectAllMenuItem(MenuItem selectAll, boolean checked) {
     private void setSelectAllMenuItem(MenuItem selectAll, boolean checked) {
@@ -600,7 +600,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
      */
      */
     @Override
     @Override
     public void onFileClick(File file) {
     public void onFileClick(File file) {
-        uploadButton.setEnabled(mFileListFragment.getCheckedFilesCount() > 0);
+        updateUploadButtonActive();
 
 
         boolean selectAll = mFileListFragment.getCheckedFilesCount() == mFileListFragment.getFilesCount();
         boolean selectAll = mFileListFragment.getCheckedFilesCount() == mFileListFragment.getFilesCount();
         setSelectAllMenuItem(mOptionsMenu.findItem(R.id.action_select_all), selectAll);
         setSelectAllMenuItem(mOptionsMenu.findItem(R.id.action_select_all), selectAll);

+ 19 - 16
app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java

@@ -159,31 +159,34 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View
             }
             }
 
 
             if (file != null) {
             if (file != null) {
+                File finalFile = file;
+
                 LocalFileListGridImageViewHolder gridViewHolder = (LocalFileListGridImageViewHolder) holder;
                 LocalFileListGridImageViewHolder gridViewHolder = (LocalFileListGridImageViewHolder) holder;
 
 
-                // checkbox
-                if (isCheckedFile(file)) {
-                    gridViewHolder.itemLayout.setBackgroundColor(mContext.getResources()
-                            .getColor(R.color.selected_item_background));
-                    gridViewHolder.checkbox.setImageDrawable(
-                        ThemeDrawableUtils.tintDrawable(R.drawable.ic_checkbox_marked,
-                                                        ThemeColorUtils.primaryColor(mContext)));
-                } else {
+                if (mLocalFolderPicker) {
                     gridViewHolder.itemLayout.setBackgroundColor(mContext.getResources().getColor(R.color.bg_default));
                     gridViewHolder.itemLayout.setBackgroundColor(mContext.getResources().getColor(R.color.bg_default));
-                    gridViewHolder.checkbox.setImageResource(R.drawable.ic_checkbox_blank_outline);
+                    gridViewHolder.checkbox.setVisibility(View.GONE);
+                } else {
+                    gridViewHolder.checkbox.setVisibility(View.VISIBLE);
+                    if (isCheckedFile(file)) {
+                        gridViewHolder.itemLayout.setBackgroundColor(mContext.getResources()
+                                                                         .getColor(R.color.selected_item_background));
+                        gridViewHolder.checkbox.setImageDrawable(
+                            ThemeDrawableUtils.tintDrawable(R.drawable.ic_checkbox_marked,
+                                                            ThemeColorUtils.primaryColor(mContext)));
+                    } else {
+                        gridViewHolder.itemLayout.setBackgroundColor(mContext.getResources().getColor(R.color.bg_default));
+                        gridViewHolder.checkbox.setImageResource(R.drawable.ic_checkbox_blank_outline);
+                    }
+                    gridViewHolder.checkbox.setOnClickListener(v -> localFileListFragmentInterface
+                        .onItemCheckboxClicked(finalFile));
                 }
                 }
 
 
                 gridViewHolder.thumbnail.setTag(file.hashCode());
                 gridViewHolder.thumbnail.setTag(file.hashCode());
                 setThumbnail(file, gridViewHolder.thumbnail, mContext);
                 setThumbnail(file, gridViewHolder.thumbnail, mContext);
 
 
-                gridViewHolder.checkbox.setVisibility(View.VISIBLE);
-
-                File finalFile = file;
                 gridViewHolder.itemLayout.setOnClickListener(v -> localFileListFragmentInterface
                 gridViewHolder.itemLayout.setOnClickListener(v -> localFileListFragmentInterface
-                        .onItemClicked(finalFile));
-                gridViewHolder.checkbox.setOnClickListener(v -> localFileListFragmentInterface
-                        .onItemCheckboxClicked(finalFile));
-
+                    .onItemClicked(finalFile));
 
 
                 if (holder instanceof LocalFileListItemViewHolder) {
                 if (holder instanceof LocalFileListItemViewHolder) {
                     LocalFileListItemViewHolder itemViewHolder = (LocalFileListItemViewHolder) holder;
                     LocalFileListItemViewHolder itemViewHolder = (LocalFileListItemViewHolder) holder;