Skip to content

Commit e3ea038

Browse files
Merge pull request #15301 from nextcloud/backport/15127/stable-3.32
[stable-3.32] Redirect to All Files from FileDisplayActivity's Fragments
2 parents 08aedfb + 8795037 commit e3ea038

File tree

5 files changed

+59
-3
lines changed

5 files changed

+59
-3
lines changed

app/src/main/java/com/nextcloud/utils/extensions/DrawerActivityExtensions.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
package com.nextcloud.utils.extensions
99

10+
import android.content.Intent
1011
import com.owncloud.android.MainApp
1112
import com.owncloud.android.R
13+
import com.owncloud.android.datamodel.OCFile
1214
import com.owncloud.android.ui.activity.DrawerActivity
15+
import com.owncloud.android.ui.activity.FileDisplayActivity
1316

1417
/**
1518
* Determines the appropriate menu item ID based on the current ActionBar title.
@@ -50,3 +53,31 @@ fun DrawerActivity.getMenuItemIdFromTitle(): Int? {
5053
}
5154
}
5255
}
56+
57+
@Suppress("ReturnCount")
58+
fun DrawerActivity.handleBackButtonEvent(currentDir: OCFile): Boolean {
59+
if (DrawerActivity.menuItemId == R.id.nav_all_files && currentDir.isRootDirectory) {
60+
moveTaskToBack(true)
61+
return true
62+
}
63+
64+
val isParentDirExists = (storageManager.getFileById(currentDir.parentId) != null)
65+
if (isParentDirExists) {
66+
return false
67+
}
68+
69+
DrawerActivity.menuItemId = R.id.nav_all_files
70+
setNavigationViewItemChecked()
71+
72+
MainApp.showOnlyFilesOnDevice(false)
73+
MainApp.showOnlyPersonalFiles(false)
74+
75+
Intent(applicationContext, FileDisplayActivity::class.java).apply {
76+
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
77+
action = FileDisplayActivity.ALL_FILES
78+
}.run {
79+
startActivity(this)
80+
}
81+
82+
return true
83+
}

app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import android.content.res.Configuration
2424
import android.os.Bundle
2525
import android.text.TextUtils
2626
import android.util.DisplayMetrics
27+
import android.view.KeyEvent
2728
import android.view.LayoutInflater
2829
import android.view.Menu
2930
import android.view.MenuInflater
@@ -59,6 +60,7 @@ import com.nextcloud.client.network.ConnectivityService.GenericCallback
5960
import com.nextcloud.client.preferences.AppPreferences
6061
import com.nextcloud.client.preferences.AppPreferencesImpl
6162
import com.nextcloud.utils.extensions.getTypedActivity
63+
import com.nextcloud.utils.extensions.handleBackButtonEvent
6264
import com.owncloud.android.MainApp
6365
import com.owncloud.android.R
6466
import com.owncloud.android.databinding.ListFragmentBinding
@@ -730,6 +732,18 @@ open class ExtendedListFragment :
730732
}
731733
}
732734

735+
protected fun setupBackButtonRedirectToAllFiles() {
736+
view?.isFocusableInTouchMode = true
737+
view?.requestFocus()
738+
view?.setOnKeyListener { _: View, keyCode: Int, event: KeyEvent ->
739+
val fda = getTypedActivity(FileActivity::class.java)
740+
if (fda != null && (event.action == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK)) {
741+
return@setOnKeyListener fda.handleBackButtonEvent(fda.currentDir)
742+
}
743+
false
744+
}
745+
}
746+
733747
companion object {
734748
protected val TAG: String = ExtendedListFragment::class.java.getSimpleName()
735749

app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,12 @@ public void onResume() {
236236
}
237237
}
238238

239+
@Override
240+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
241+
super.onViewCreated(view, savedInstanceState);
242+
setupBackButtonRedirectToAllFiles();
243+
}
244+
239245
@Override
240246
public void onMessageEvent(ChangeMenuEvent changeMenuEvent) {
241247
super.onMessageEvent(changeMenuEvent);

app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,12 @@ public void onResume() {
284284
super.onResume();
285285
}
286286

287+
@Override
288+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
289+
super.onViewCreated(view, savedInstanceState);
290+
setupBackButtonRedirectToAllFiles();
291+
}
292+
287293
/**
288294
* {@inheritDoc}
289295
*/

app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,8 @@ class BackupFragment : FileFragment(), OnDateSetListener, Injectable {
289289
* Refreshes the folder and returns updated backup files
290290
*/
291291
@Suppress("TooGenericExceptionCaught")
292-
private suspend fun fetchBackupFiles(folder: OCFile, storageManager: FileDataStorageManager): List<OCFile> {
293-
return withContext(Dispatchers.IO) {
292+
private suspend fun fetchBackupFiles(folder: OCFile, storageManager: FileDataStorageManager): List<OCFile> =
293+
withContext(Dispatchers.IO) {
294294
try {
295295
val operation = RefreshFolderOperation(
296296
folder,
@@ -317,7 +317,6 @@ class BackupFragment : FileFragment(), OnDateSetListener, Injectable {
317317
listOf()
318318
}
319319
}
320-
}
321320

322321
@Deprecated("Deprecated in Java")
323322
override fun onOptionsItemSelected(item: MenuItem): Boolean {

0 commit comments

Comments
 (0)