[Android] Fix root tap on the breadcrumb for sub picking and in browser

Nicolas Pomepuy git at videolan.org
Thu Dec 17 08:11:58 UTC 2020


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Dec 17 07:07:22 2020 +0100| [ca5a4af91341db1828472c1df6bbe1468d713996] | committer: Nicolas Pomepuy

Fix root tap on the breadcrumb for sub picking and in browser

> https://code.videolan.org/videolan/vlc-android/commit/ca5a4af91341db1828472c1df6bbe1468d713996
---

 .../org/videolan/vlc/gui/browser/BaseBrowserFragment.kt   |  4 ++++
 .../org/videolan/vlc/gui/browser/FilePickerFragment.kt    | 15 ++++++++++++++-
 .../src/org/videolan/vlc/providers/FileBrowserProvider.kt |  1 +
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt b/application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt
index a93a2d0e9..7e139256e 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt
@@ -179,6 +179,10 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
     }
 
     override fun backTo(tag: String) {
+        if (tag == "root") {
+            requireActivity().finish()
+            return
+        }
         val supportFragmentManager = requireActivity().supportFragmentManager
         var poped = false
         for (i in 0 until supportFragmentManager.backStackEntryCount) {
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt b/application/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt
index 336add175..ecdea3187 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt
@@ -30,6 +30,7 @@ import android.os.Bundle
 import android.view.View
 import androidx.core.net.toUri
 import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
 import androidx.lifecycle.ViewModelProviders
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -44,7 +45,6 @@ import org.videolan.vlc.R
 import org.videolan.vlc.gui.ContentActivity
 import org.videolan.vlc.repository.DirectoryRepository
 import org.videolan.vlc.util.FileUtils
-import org.videolan.vlc.util.isSchemeFile
 import org.videolan.vlc.viewmodels.browser.BrowserModel
 import org.videolan.vlc.viewmodels.browser.TYPE_PICKER
 
@@ -92,6 +92,19 @@ class FilePickerFragment : FileBrowserFragment(), BrowserContainer<MediaLibraryI
 
     }
 
+    override fun backTo(tag: String) {
+        if (tag == "root") {
+            val supportFragmentManager = requireActivity().supportFragmentManager
+            for (i in 0 until supportFragmentManager.backStackEntryCount) {
+                supportFragmentManager.popBackStack(tag, FragmentManager.POP_BACK_STACK_INCLUSIVE)
+            }
+            viewModel.setDestination(MLServiceLocator.getAbstractMediaWrapper(tag.toUri()))
+            supportFragmentManager.beginTransaction().detach(this).attach(this).commit()
+            return
+        }
+        super.backTo(tag)
+    }
+
     override fun onImageClick(v: View, position: Int, item: MediaLibraryItem) {}
 
     private fun pickFile(mw: MediaWrapper) {
diff --git a/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt b/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt
index 89c454c09..62952f0a2 100644
--- a/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt
+++ b/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt
@@ -126,6 +126,7 @@ open class FileBrowserProvider(
                 }
                 loading.postValue(false)
             }
+            url == "root" -> launch { browseRootImpl() }
             else -> super.browse(url)
         }
     }



More information about the Android mailing list