diff options
author | tobiasKaminsky <tobias@kaminsky.me> | 2022-07-26 09:28:56 +0300 |
---|---|---|
committer | tobiasKaminsky <tobias@kaminsky.me> | 2022-07-26 09:28:56 +0300 |
commit | c555cefb9db8c5e6e067249d3a16aea924551688 (patch) | |
tree | cbbc756dc89cd01bf435887effe8802fcf140ac4 | |
parent | c1512ff580a681aba5d225608b4e85b5557bf047 (diff) |
When uploading files to an encrypted folder do not allow to upload entire foldersdoNotUploadFolderWhenEncryption
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
4 files changed, 42 insertions, 13 deletions
diff --git a/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java index 2f6eadb712..34a396c5f3 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java @@ -92,6 +92,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList public static final int RESULT_OK_AND_DO_NOTHING = 2; public static final int RESULT_OK_AND_MOVE = RESULT_FIRST_USER; public static final String REQUEST_CODE_KEY = "requestCode"; + private static final String ENCRYPTED_FOLDER_KEY = "encrypted_folder"; private static final String QUERY_TO_MOVE_DIALOG_TAG = "QUERY_TO_MOVE"; private static final String TAG = "UploadFilesActivity"; @@ -112,6 +113,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList private SearchView mSearchView; private Spinner mBehaviourSpinner; private MaterialButton uploadButton; + private boolean isWithinEncryptedFolder = false; @VisibleForTesting @@ -127,10 +129,14 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList * @param user the user for which the upload activity is called * @param requestCode If >= 0, this code will be returned in onActivityResult() */ - public static void startUploadActivityForResult(Activity activity, User user, int requestCode) { + public static void startUploadActivityForResult(Activity activity, + User user, + int requestCode, + boolean isWithinEncryptedFolder) { Intent action = new Intent(activity, UploadFilesActivity.class); action.putExtra(EXTRA_USER, user); action.putExtra(REQUEST_CODE_KEY, requestCode); + action.putExtra(ENCRYPTED_FOLDER_KEY, isWithinEncryptedFolder); activity.startActivityForResult(action, requestCode); } @@ -144,12 +150,14 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList if (extras != null) { mLocalFolderPickerMode = extras.getBoolean(KEY_LOCAL_FOLDER_PICKER_MODE, false); requestCode = (int) extras.get(REQUEST_CODE_KEY); + isWithinEncryptedFolder = extras.getBoolean(ENCRYPTED_FOLDER_KEY, false); } if (savedInstanceState != null) { - mCurrentDir = new File(savedInstanceState.getString(UploadFilesActivity.KEY_DIRECTORY_PATH, + mCurrentDir = new File(savedInstanceState.getString(KEY_DIRECTORY_PATH, Environment.getExternalStorageDirectory().getAbsolutePath())); - mSelectAll = savedInstanceState.getBoolean(UploadFilesActivity.KEY_ALL_SELECTED, false); + mSelectAll = savedInstanceState.getBoolean(KEY_ALL_SELECTED, false); + isWithinEncryptedFolder = savedInstanceState.getBoolean(ENCRYPTED_FOLDER_KEY, false); } else { String lastUploadFrom = preferences.getUploadFromLocalLastPath(); @@ -620,6 +628,11 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList return mLocalFolderPickerMode; } + @Override + public boolean isWithinEncryptedFolder() { + return isWithinEncryptedFolder; + } + /** * Performs corresponding action when user presses 'Cancel' or 'Upload' button * <p> diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index f716dd4e64..12cebd2e34 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -75,6 +75,7 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View private Set<File> checkedFiles; private ThemeColorUtils themeColorUtils; private ThemeDrawableUtils themeDrawableUtils; + private boolean isWithinEncryptedFolder; private static final int VIEWTYPE_ITEM = 0; private static final int VIEWTYPE_FOOTER = 1; @@ -86,7 +87,8 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View AppPreferences preferences, Context context, ThemeColorUtils themeColorUtils, - ThemeDrawableUtils themeDrawableUtils) { + ThemeDrawableUtils themeDrawableUtils, + boolean isWithinEncryptedFolder) { this.preferences = preferences; mContext = context; mLocalFolderPicker = localFolderPickerMode; @@ -94,6 +96,7 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View checkedFiles = new HashSet<>(); this.themeColorUtils = themeColorUtils; this.themeDrawableUtils = themeDrawableUtils; + this.isWithinEncryptedFolder = isWithinEncryptedFolder; swapDirectory(directory); } @@ -120,7 +123,15 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View } public void addAllFilesToCheckedFiles() { - checkedFiles.addAll(mFiles); + if (isWithinEncryptedFolder) { + for (File file : mFilesAll) { + if (file.isFile()) { + checkedFiles.add(file); + } + } + } else { + checkedFiles.addAll(mFiles); + } } public void removeAllFilesFromCheckedFiles() { @@ -204,6 +215,9 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View if (file.isDirectory()) { itemViewHolder.fileSize.setVisibility(View.GONE); itemViewHolder.fileSeparator.setVisibility(View.GONE); + if (isWithinEncryptedFolder) { + itemViewHolder.checkbox.setVisibility(View.GONE); + } } else { itemViewHolder.fileSize.setVisibility(View.VISIBLE); itemViewHolder.fileSeparator.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java index 8d8bfa0881..18cc8dc47e 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java @@ -136,7 +136,8 @@ public class LocalFileListFragment extends ExtendedListFragment implements preferences, getActivity(), themeColorUtils, - themeDrawableUtils); + themeDrawableUtils, + mContainerActivity.isWithinEncryptedFolder()); setRecyclerViewAdapter(mAdapter); listDirectory(mContainerActivity.getInitialDirectory()); @@ -425,12 +426,13 @@ public class LocalFileListFragment extends ExtendedListFragment implements File getInitialDirectory(); /** - * config check if the list should behave in - * folder picker mode only displaying folders but no files. + * config check if the list should behave in folder picker mode only displaying folders but no files. * * @return true if folder picker mode, else false */ boolean isFolderPickerMode(); + + boolean isWithinEncryptedFolder(); } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 4a41cbbe9d..2da4c75da0 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -43,7 +43,6 @@ import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.Toast; -import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.behavior.HideBottomViewOnScrollBehavior; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; @@ -534,10 +533,11 @@ public class OCFileListFragment extends ExtendedListFragment implements @Override public void uploadFiles() { UploadFilesActivity.startUploadActivityForResult( - getActivity(), - ((FileActivity) getActivity()).getUser().orElseThrow(RuntimeException::new), - FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM - ); + getActivity(), + ((FileActivity) getActivity()).getUser().orElseThrow(RuntimeException::new), + FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM, + getCurrentFile().isEncrypted() + ); } @Override |