diff --git a/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt index 628c28188e4b..9b908f53a860 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt @@ -89,7 +89,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() { sut.supportFragmentManager.executePendingTransactions() val fragment = (sut.fragment as OCFileListFragment) val root = sut.storageManager.getFileByEncryptedRemotePath("/") - fragment.listDirectory(root, false, false) + fragment.listDirectory(root, false) } val screenShotName = createName(testClassName + "_" + "showFiles", "") @@ -220,7 +220,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() { sut.addFragment(fragment) sut.supportFragmentManager.executePendingTransactions() val root = sut.storageManager.getFileByEncryptedRemotePath("/") - fragment.listDirectory(root, false, false) + fragment.listDirectory(root, false) fragment.adapter.setShowShareAvatar(true) } @@ -308,7 +308,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() { sut.addFragment(fragment) sut.supportFragmentManager.executePendingTransactions() val root = sut.storageManager.getFileByEncryptedRemotePath("/") - fragment.listDirectory(root, false, false) + fragment.listDirectory(root, false) fragment.adapter.setShowShareAvatar(true) } @@ -347,7 +347,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() { sut.supportFragmentManager.executePendingTransactions() val testFolder: OCFile = sut.storageManager.getFileByEncryptedRemotePath("/test/") testFolder.richWorkspace = getFile("java.md").readText() - fragment.listDirectory(testFolder, false, false) + fragment.listDirectory(testFolder, false) } val screenShotName = createName(testClassName + "_" + "showRichWorkspace", "") diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index ff5e800637b8..a99edf52417e 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -531,7 +531,7 @@ class FileDisplayActivity : /** First fragment */ val listOfFiles = this.listOfFilesFragment if (listOfFiles != null && TextUtils.isEmpty(searchQuery)) { - listOfFiles.listDirectory(getCurrentDir(), file, MainApp.isOnlyOnDevice(), false) + listOfFiles.listDirectory(getCurrentDir(), file, MainApp.isOnlyOnDevice()) } else { Log_OC.e(TAG, "Still have a chance to lose the initialization of list fragment >(") } @@ -806,9 +806,9 @@ class FileDisplayActivity : resetScrolling(true) } - fun updateListOfFilesFragment(fromSearch: Boolean) { + fun updateListOfFilesFragment() { val fileListFragment = this.listOfFilesFragment - fileListFragment?.listDirectory(MainApp.isOnlyOnDevice(), fromSearch) + fileListFragment?.listDirectory(MainApp.isOnlyOnDevice()) } fun resetSearchView() { @@ -1357,10 +1357,10 @@ class FileDisplayActivity : if (searchView != null && !TextUtils.isEmpty(searchQuery)) { searchView?.setQuery(searchQuery, false) } else if (!ocFileListFragment.isSearchFragment && startFile == null) { - updateListOfFilesFragment(false) + updateListOfFilesFragment() ocFileListFragment.registerFabListener() } else { - ocFileListFragment.listDirectory(startFile, false, false) + ocFileListFragment.listDirectory(startFile, false) updateActionBarTitleAndHomeButton(startFile) } @@ -1565,7 +1565,7 @@ class FileDisplayActivity : return } - ocFileListFragment.listDirectory(currentDir, MainApp.isOnlyOnDevice(), false) + ocFileListFragment.listDirectory(currentDir, MainApp.isOnlyOnDevice()) } private fun handleScrollBehaviour(ocFileListFragment: OCFileListFragment?) { @@ -1679,7 +1679,7 @@ class FileDisplayActivity : if (sameAccount && isDescendant) { val linkedToRemotePath = intent.getStringExtra(FileUploadWorker.EXTRA_LINKED_TO_PATH) if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) { - updateListOfFilesFragment(false) + updateListOfFilesFragment() } } @@ -1752,7 +1752,7 @@ class FileDisplayActivity : if (sameAccount && isDescendant) { val linkedToRemotePath = intent.getStringExtra(FileDownloadWorker.EXTRA_LINKED_TO_PATH) if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) { - updateListOfFilesFragment(false) + updateListOfFilesFragment() } val intentAction = intent.action @@ -1813,7 +1813,7 @@ class FileDisplayActivity : val listOfFiles = this.listOfFilesFragment if (listOfFiles != null) { // should never be null, indeed val root = storageManager.getFileByPath(OCFile.ROOT_PATH) - listOfFiles.listDirectory(root, MainApp.isOnlyOnDevice(), false) + listOfFiles.listDirectory(root, MainApp.isOnlyOnDevice()) file = listOfFiles.currentFile startSyncFolderOperation(root, false) } @@ -1998,7 +1998,7 @@ class FileDisplayActivity : if (fileListFragment == null) { fileListFragment = listOfFilesFragment } - fileListFragment?.listDirectory(currentDir, MainApp.isOnlyOnDevice(), false) + fileListFragment?.listDirectory(currentDir, MainApp.isOnlyOnDevice()) } private fun handleDownloadWorkerState() { @@ -2124,7 +2124,7 @@ class FileDisplayActivity : } val parentFile = storageManager.getFileById(removedFile.parentId) if (parentFile != null && parentFile == getCurrentDir()) { - updateListOfFilesFragment(false) + updateListOfFilesFragment() } else if (leftFragment is OCFileListFragment && SearchRemoteOperation.SearchType.FAVORITE_SEARCH == leftFragment.searchEvent?.searchType ) { @@ -2208,7 +2208,7 @@ class FileDisplayActivity : */ private fun onCopyFileOperationFinish(operation: CopyFileOperation?, result: RemoteOperationResult<*>) { if (result.isSuccess) { - updateListOfFilesFragment(false) + updateListOfFilesFragment() refreshGalleryFragmentIfNeeded() } else { try { @@ -2258,7 +2258,7 @@ class FileDisplayActivity : val file = storageManager.getFileById(renamedFile.parentId) if (file != null && file == getCurrentDir()) { - updateListOfFilesFragment(false) + updateListOfFilesFragment() } refreshGalleryFragmentIfNeeded() fetchRecommendedFilesIfNeeded(ignoreETag = true, currentDir) @@ -2317,7 +2317,7 @@ class FileDisplayActivity : * {@inheritDoc} */ override fun onTransferStateChanged(file: OCFile, downloading: Boolean, uploading: Boolean) { - updateListOfFilesFragment(false) + updateListOfFilesFragment() val leftFragment = this.leftFragment val optionalUser = user if (leftFragment is FileDetailFragment && file == leftFragment.file && optionalUser.isPresent) { @@ -3050,7 +3050,7 @@ class FileDisplayActivity : if (TextUtils.isEmpty(message)) { val temp = file file = getCurrentDir() - listOfFiles.listDirectory(getCurrentDir(), temp, MainApp.isOnlyOnDevice(), false) + listOfFiles.listDirectory(getCurrentDir(), temp, MainApp.isOnlyOnDevice()) updateActionBarTitleAndHomeButton(null) } else { val view = listOfFiles.view diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt index 3730796b21ae..106c22183bbf 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt @@ -25,6 +25,7 @@ import androidx.lifecycle.lifecycleScope import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.nextcloud.client.account.User import com.nextcloud.client.di.Injectable +import com.nextcloud.utils.extensions.getParcelableArgument import com.nextcloud.utils.fileNameValidator.FileNameValidator import com.owncloud.android.R import com.owncloud.android.databinding.FilesFolderPickerBinding @@ -188,7 +189,7 @@ open class FolderPickerActivity : folder = file } - listOfFilesFragment?.listDirectory(folder, false, false) + listOfFilesFragment?.listDirectory(folder, false) startSyncFolderOperation(folder, false) updateUiElements() } @@ -275,8 +276,13 @@ open class FolderPickerActivity : super.onResume() Log_OC.e(TAG, "onResume() start") - refreshListOfFilesFragment(false) - file = listOfFilesFragment?.currentFile + val extraFolder = intent.getParcelableArgument(EXTRA_FOLDER, OCFile::class.java) + if (extraFolder != null) { + file = extraFolder + } else { + file = listOfFilesFragment?.currentFile + } + refreshListOfFilesFragment(file) updateUiElements() val intentFilter = getSyncIntentFilter() @@ -351,14 +357,14 @@ open class FolderPickerActivity : } } - private fun refreshListOfFilesFragment(fromSearch: Boolean) { - listOfFilesFragment?.listDirectory(false, fromSearch) + private fun refreshListOfFilesFragment(directory: OCFile?) { + listOfFilesFragment?.listDirectory(directory, false) } fun browseToRoot() { listOfFilesFragment?.let { val root = storageManager.getFileByEncryptedRemotePath(OCFile.ROOT_PATH) - it.listDirectory(root, false, false) + it.listDirectory(root, false) file = it.currentFile updateUiElements() startSyncFolderOperation(root, false) @@ -560,7 +566,7 @@ open class FolderPickerActivity : currentFile = currentDir } if (currentDir.remotePath == syncFolderRemotePath) { - listOfFilesFragment?.listDirectory(currentDir, false, false) + listOfFilesFragment?.listDirectory(currentDir, false) } file = currentFile } @@ -652,8 +658,7 @@ open class FolderPickerActivity : } companion object { - @JvmField - val EXTRA_FOLDER = FolderPickerActivity::class.java.canonicalName?.plus(".EXTRA_FOLDER") + const val EXTRA_FOLDER = "com.owncloud.android.ui.activity.FolderPickerActivity".plus(".EXTRA_FOLDER") @JvmField @Deprecated( diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt index 54bbad82e7ab..a7c5aae95e72 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt @@ -254,7 +254,7 @@ open class ExtendedListFragment : is FileDisplayActivity -> { if (isBackPressed && query.isEmpty()) { activity.resetSearchView() - activity.updateListOfFilesFragment(true) + activity.updateListOfFilesFragment() } else { Handler(Looper.getMainLooper()).post { if (adapter is OCFileListAdapter) { 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 18038398955f..b8f91ae7cb84 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 @@ -440,7 +440,7 @@ public void onActivityCreated(Bundle savedInstanceState) { if (getActivity() instanceof FileDisplayActivity fda) { fda.updateActionBarTitleAndHomeButton(fda.getCurrentDir()); } - listDirectory(MainApp.isOnlyOnDevice(), false); + listDirectory(MainApp.isOnlyOnDevice()); } protected void setAdapter(Bundle args) { @@ -1027,7 +1027,7 @@ private String ensureTrailingSeparator(String path) { } private void updateFileList() { - listDirectory(mFile, MainApp.isOnlyOnDevice(), false); + listDirectory(mFile, MainApp.isOnlyOnDevice()); onRefresh(false); restoreIndexAndTopPosition(); } @@ -1243,7 +1243,7 @@ private void browseToFolder(OCFile file, int position) { resetMenuItems(); } - listDirectory(file, MainApp.isOnlyOnDevice(), false); + listDirectory(file, MainApp.isOnlyOnDevice()); // then, notify parent activity to let it update its state and view mContainerActivity.onBrowsedDownTo(file); // save index and top position @@ -1266,7 +1266,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { // update state and view of this fragment searchFragment = false; - listDirectory(file, MainApp.isOnlyOnDevice(), false); + listDirectory(file, MainApp.isOnlyOnDevice()); // then, notify parent activity to let it update its state and view mContainerActivity.onBrowsedDownTo(file); // save index and top position @@ -1437,6 +1437,8 @@ private void pickFolderForMoveOrCopy(final Set checkedFiles) { paths.add(file.getRemotePath()); } action.putStringArrayListExtra(FolderPickerActivity.EXTRA_FILE_PATHS, paths); + action.putExtra(FolderPickerActivity.EXTRA_FOLDER, getCurrentFile()); + action.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); // No animation since we stay in the same folder action.putExtra(FolderPickerActivity.EXTRA_ACTION, extraAction); getActivity().startActivityForResult(action, requestCode); } @@ -1453,10 +1455,10 @@ public OCFile getCurrentFile() { } /** - * Calls {@link OCFileListFragment#listDirectory(OCFile, boolean, boolean)} with a null parameter + * Calls {@link OCFileListFragment#listDirectory(OCFile, boolean)} with a null parameter */ - public void listDirectory(boolean onlyOnDevice, boolean fromSearch) { - listDirectory(null, onlyOnDevice, fromSearch); + public void listDirectory(boolean onlyOnDevice) { + listDirectory(null, onlyOnDevice); } public void refreshDirectory() { @@ -1468,15 +1470,15 @@ public void refreshDirectory() { final var currentFile = getCurrentFile(); if (currentFile != null) { - listDirectory(currentFile, MainApp.isOnlyOnDevice(), false); + listDirectory(currentFile, MainApp.isOnlyOnDevice()); } } - public void listDirectory(OCFile directory, boolean onlyOnDevice, boolean fromSearch) { - listDirectory(directory, null, onlyOnDevice, fromSearch); + public void listDirectory(@Nullable OCFile directory, boolean onlyOnDevice) { + listDirectory(directory, null, onlyOnDevice); } - private OCFile getDirectoryForListDirectory(OCFile directory, FileDataStorageManager storageManager) { + private OCFile getDirectoryForListDirectory(@Nullable OCFile directory, FileDataStorageManager storageManager) { if (directory == null) { if (mFile != null) { directory = mFile; @@ -1500,7 +1502,7 @@ private OCFile getDirectoryForListDirectory(OCFile directory, FileDataStorageMan * * @param directory File to be listed */ - public void listDirectory(OCFile directory, OCFile file, boolean onlyOnDevice, boolean fromSearch) { + public void listDirectory(@Nullable OCFile directory, OCFile file, boolean onlyOnDevice) { if (!searchFragment) { FileDataStorageManager storageManager = mContainerActivity.getStorageManager(); if (storageManager == null) {