[Android] Fix audio item selection with action mode

Nicolas Pomepuy git at videolan.org
Tue May 7 10:12:25 CEST 2019


vlc-android | branch: fix_actionmode_selection | Nicolas Pomepuy <nicolas.pomepuy at gmail.com> | Tue May  7 10:12:21 2019 +0200| [1d3752fa8c21c0133091c499c5b84aeba92829c2] | committer: Nicolas Pomepuy

Fix audio item selection with action mode

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

 .../src/org/videolan/vlc/gui/PlaylistFragment.kt       |  2 +-
 .../org/videolan/vlc/gui/audio/AudioBrowserFragment.kt | 10 +++++++---
 .../src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt | 18 +++++++++++-------
 3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt b/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt
index 090ae2951..747cc958a 100644
--- a/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt
@@ -106,7 +106,7 @@ class PlaylistFragment : BaseAudioBrowser(), SwipeRefreshLayout.OnRefreshListene
         val itemSize = requireActivity().getScreenWidth() / nbColumns - spacing * 2
 
         playlistAdapter = AudioBrowserAdapter(MediaLibraryItem.TYPE_PLAYLIST, this, itemSize)
-        currentAdapter = playlistAdapter
+        adapter = playlistAdapter
 
         playlists.layoutManager = gridLayoutManager
         playlists.adapter = playlistAdapter
diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt
index 62600b80b..44970fe7d 100644
--- a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserFragment.kt
@@ -234,8 +234,8 @@ class AudioBrowserFragment : BaseAudioBrowser(), SwipeRefreshLayout.OnRefreshLis
     }
 
     private fun updateEmptyView() {
-        emptyView.visibility = if (currentAdapter != null && currentAdapter!!.isEmpty) View.VISIBLE else View.GONE
-        medialibrarySettingsBtn.visibility = if (currentAdapter != null && currentAdapter!!.isEmpty) View.VISIBLE else View.GONE
+        emptyView.visibility = if (getCurrentAdapter() != null && getCurrentAdapter()!!.isEmpty) View.VISIBLE else View.GONE
+        medialibrarySettingsBtn.visibility = if (getCurrentAdapter() != null && getCurrentAdapter()!!.isEmpty) View.VISIBLE else View.GONE
         setFabPlayShuffleAllVisibility()
     }
 
@@ -292,7 +292,7 @@ class AudioBrowserFragment : BaseAudioBrowser(), SwipeRefreshLayout.OnRefreshLis
 
     override fun onUpdateFinished(adapter: RecyclerView.Adapter<*>) {
         super.onUpdateFinished(adapter)
-        if (currentAdapter != null && adapter === currentAdapter) {
+        if (getCurrentAdapter() != null && adapter === getCurrentAdapter()) {
             swipeRefreshLayout?.isEnabled = (getCurrentRV().layoutManager as LinearLayoutManager).findFirstVisibleItemPosition() <= 0
             updateEmptyView()
             fastScroller.setRecyclerView(getCurrentRV(), viewModel)
@@ -306,6 +306,10 @@ class AudioBrowserFragment : BaseAudioBrowser(), SwipeRefreshLayout.OnRefreshLis
         return lists[viewPager!!.currentItem]!!
     }
 
+    override fun getCurrentAdapter(): AudioBrowserAdapter? {
+        return adapters[viewPager!!.currentItem]
+    }
+
     private class AudioBrowserHandler internal constructor(owner: AudioBrowserFragment) : WeakHandler<AudioBrowserFragment>(owner) {
 
         override fun handleMessage(msg: Message) {
diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt b/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt
index 782237030..3a3129da4 100644
--- a/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt
@@ -63,7 +63,11 @@ abstract class BaseAudioBrowser : MediaBrowserFragment<MLPagedModel<*>>(), IEven
     private val tcl = TabLayout.TabLayoutOnPageChangeListener(tabLayout)
 
     protected abstract fun getCurrentRV(): RecyclerView
-    protected var currentAdapter: AudioBrowserAdapter? = null
+    protected var adapter: AudioBrowserAdapter? = null
+
+    open fun getCurrentAdapter(): AudioBrowserAdapter? {
+        return adapter
+    }
 
     private lateinit var layoutOnPageChangeListener: TabLayout.TabLayoutOnPageChangeListener
 
@@ -151,7 +155,7 @@ abstract class BaseAudioBrowser : MediaBrowserFragment<MLPagedModel<*>>(), IEven
     }
 
     override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
-        val selection = currentAdapter?.multiSelectHelper?.getSelection()
+        val selection = getCurrentAdapter()?.multiSelectHelper?.getSelection()
         val count = selection?.size
         if (count == 0) {
             stopActionMode()
@@ -165,7 +169,7 @@ abstract class BaseAudioBrowser : MediaBrowserFragment<MLPagedModel<*>>(), IEven
     }
 
     override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
-        val list = currentAdapter?.multiSelectHelper?.getSelection()
+        val list = getCurrentAdapter()?.multiSelectHelper?.getSelection()
         stopActionMode()
         if (list != null && list.isNotEmpty())
             runIO(Runnable {
@@ -186,7 +190,7 @@ abstract class BaseAudioBrowser : MediaBrowserFragment<MLPagedModel<*>>(), IEven
     }
 
     override fun onDestroyActionMode(actionMode: ActionMode) {
-        onDestroyActionMode(currentAdapter)
+        onDestroyActionMode(getCurrentAdapter())
     }
 
     internal fun onDestroyActionMode(adapter: AudioBrowserAdapter?) {
@@ -204,14 +208,14 @@ abstract class BaseAudioBrowser : MediaBrowserFragment<MLPagedModel<*>>(), IEven
 
     override fun onClick(v: View, position: Int, item: MediaLibraryItem) {
         if (actionMode != null) {
-            currentAdapter?.multiSelectHelper?.toggleSelection(position)
+            getCurrentAdapter()?.multiSelectHelper?.toggleSelection(position)
             invalidateActionMode()
         }
     }
 
     override fun onLongClick(v: View, position: Int, item: MediaLibraryItem): Boolean {
         if (actionMode != null) return false
-        currentAdapter?.multiSelectHelper?.toggleSelection(position)
+        getCurrentAdapter()?.multiSelectHelper?.toggleSelection(position)
         startActionMode()
         return true
     }
@@ -247,7 +251,7 @@ abstract class BaseAudioBrowser : MediaBrowserFragment<MLPagedModel<*>>(), IEven
     }
 
     override fun onCtxAction(position: Int, option: Int) {
-        val adapter = currentAdapter
+        val adapter = getCurrentAdapter()
         if (position >= adapter?.itemCount ?: 0) return
         val media = adapter?.getItem(position) ?: return
         when (option) {



More information about the Android mailing list