Browse Source

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 years ago
parent
commit
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);
         ThemeButtonUtils.colorPrimaryButton(uploadButton, this);
         uploadButton.setOnClickListener(this);
-        uploadButton.setEnabled(false);
+        uploadButton.setEnabled(mLocalFolderPickerMode);
 
         int localBehaviour = preferences.getUploaderBehaviour();
 
@@ -458,7 +458,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
 
     private void updateUploadButtonActive() {
         final boolean anySelected = mFileListFragment.getCheckedFilesCount() > 0;
-        uploadButton.setEnabled(anySelected);
+        uploadButton.setEnabled(anySelected || mLocalFolderPickerMode);
     }
 
     private void setSelectAllMenuItem(MenuItem selectAll, boolean checked) {
@@ -600,7 +600,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
      */
     @Override
     public void onFileClick(File file) {
-        uploadButton.setEnabled(mFileListFragment.getCheckedFilesCount() > 0);
+        updateUploadButtonActive();
 
         boolean selectAll = mFileListFragment.getCheckedFilesCount() == mFileListFragment.getFilesCount();
         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) {
+                File finalFile = file;
+
                 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.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());
                 setThumbnail(file, gridViewHolder.thumbnail, mContext);
 
-                gridViewHolder.checkbox.setVisibility(View.VISIBLE);
-
-                File finalFile = file;
                 gridViewHolder.itemLayout.setOnClickListener(v -> localFileListFragmentInterface
-                        .onItemClicked(finalFile));
-                gridViewHolder.checkbox.setOnClickListener(v -> localFileListFragmentInterface
-                        .onItemCheckboxClicked(finalFile));
-
+                    .onItemClicked(finalFile));
 
                 if (holder instanceof LocalFileListItemViewHolder) {
                     LocalFileListItemViewHolder itemViewHolder = (LocalFileListItemViewHolder) holder;