Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobiasKaminsky <tobias@kaminsky.me>2022-07-26 09:28:56 +0300
committertobiasKaminsky <tobias@kaminsky.me>2022-07-26 09:28:56 +0300
commitc555cefb9db8c5e6e067249d3a16aea924551688 (patch)
treecbbc756dc89cd01bf435887effe8802fcf140ac4
parentc1512ff580a681aba5d225608b4e85b5557bf047 (diff)
When uploading files to an encrypted folder do not allow to upload entire foldersdoNotUploadFolderWhenEncryption
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
-rw-r--r--app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java19
-rw-r--r--app/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java18
-rw-r--r--app/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java8
-rw-r--r--app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java10
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