fix: Fix Breadcrumbs disappearing when resuming the folders tab
This commit is contained in:
parent
125681b938
commit
210d9afa1a
1 changed files with 33 additions and 22 deletions
|
@ -55,6 +55,7 @@ import code.name.monkey.retromusic.helper.menu.SongMenuHelper
|
||||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
||||||
import code.name.monkey.retromusic.interfaces.ICallbacks
|
import code.name.monkey.retromusic.interfaces.ICallbacks
|
||||||
import code.name.monkey.retromusic.interfaces.IMainActivityFragmentCallbacks
|
import code.name.monkey.retromusic.interfaces.IMainActivityFragmentCallbacks
|
||||||
|
import code.name.monkey.retromusic.interfaces.IScrollHelper
|
||||||
import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListener
|
import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListener
|
||||||
import code.name.monkey.retromusic.misc.WrappedAsyncTaskLoader
|
import code.name.monkey.retromusic.misc.WrappedAsyncTaskLoader
|
||||||
import code.name.monkey.retromusic.model.Song
|
import code.name.monkey.retromusic.model.Song
|
||||||
|
@ -64,8 +65,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil.startDirectory
|
||||||
import code.name.monkey.retromusic.util.ThemedFastScroller.create
|
import code.name.monkey.retromusic.util.ThemedFastScroller.create
|
||||||
import code.name.monkey.retromusic.util.getExternalStorageDirectory
|
import code.name.monkey.retromusic.util.getExternalStorageDirectory
|
||||||
import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory
|
import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory
|
||||||
|
import code.name.monkey.retromusic.views.BreadCrumbLayout
|
||||||
import code.name.monkey.retromusic.views.BreadCrumbLayout.Crumb
|
import code.name.monkey.retromusic.views.BreadCrumbLayout.Crumb
|
||||||
import code.name.monkey.retromusic.views.BreadCrumbLayout.SavedStateWrapper
|
|
||||||
import code.name.monkey.retromusic.views.BreadCrumbLayout.SelectionCallback
|
import code.name.monkey.retromusic.views.BreadCrumbLayout.SelectionCallback
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import com.google.android.material.transition.MaterialFadeThrough
|
import com.google.android.material.transition.MaterialFadeThrough
|
||||||
|
@ -81,7 +82,7 @@ import java.util.LinkedList
|
||||||
|
|
||||||
class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
IMainActivityFragmentCallbacks, SelectionCallback, ICallbacks,
|
IMainActivityFragmentCallbacks, SelectionCallback, ICallbacks,
|
||||||
LoaderManager.LoaderCallbacks<List<File>>, StorageClickListener {
|
LoaderManager.LoaderCallbacks<List<File>>, StorageClickListener, IScrollHelper {
|
||||||
private var _binding: FragmentFolderBinding? = null
|
private var _binding: FragmentFolderBinding? = null
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
|
|
||||||
|
@ -124,17 +125,6 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
|
||||||
|
|
||||||
private fun setUpTitle() {
|
|
||||||
toolbar.setNavigationOnClickListener {
|
|
||||||
findNavController().navigate(R.id.action_search, null, navOptions)
|
|
||||||
}
|
|
||||||
binding.appBarLayout.title = resources.getString(R.string.folders)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
||||||
super.onActivityCreated(savedInstanceState)
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
switchToFileAdapter()
|
switchToFileAdapter()
|
||||||
setCrumb(
|
setCrumb(
|
||||||
|
@ -144,11 +134,29 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
binding.breadCrumbs.restoreFromStateWrapper(BundleCompat.getParcelable(savedInstanceState, CRUMBS, SavedStateWrapper::class.java))
|
binding.breadCrumbs.restoreFromStateWrapper(
|
||||||
|
BundleCompat.getParcelable(
|
||||||
|
savedInstanceState,
|
||||||
|
CRUMBS,
|
||||||
|
BreadCrumbLayout.SavedStateWrapper::class.java
|
||||||
|
)
|
||||||
|
)
|
||||||
LoaderManager.getInstance(this).initLoader(LOADER_ID, null, this)
|
LoaderManager.getInstance(this).initLoader(LOADER_ID, null, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onSaveInstanceState(outState: Bundle) {
|
||||||
|
super.onSaveInstanceState(outState)
|
||||||
|
outState.putParcelable(CRUMBS, binding.breadCrumbs.stateWrapper)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setUpTitle() {
|
||||||
|
toolbar.setNavigationOnClickListener {
|
||||||
|
findNavController().navigate(R.id.action_search, null, navOptions)
|
||||||
|
}
|
||||||
|
binding.appBarLayout.title = resources.getString(R.string.folders)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
saveScrollPosition()
|
saveScrollPosition()
|
||||||
|
@ -417,13 +425,11 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveScrollPosition() {
|
private fun saveScrollPosition() {
|
||||||
val crumb = activeCrumb
|
activeCrumb?.scrollPosition =
|
||||||
if (crumb != null) {
|
(binding.recyclerView.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
|
||||||
crumb.scrollPosition =
|
|
||||||
(binding.recyclerView.layoutManager as LinearLayoutManager?)!!.findFirstVisibleItemPosition()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun scanPaths(toBeScanned: Array<String?>) {
|
private fun scanPaths(toBeScanned: Array<String?>) {
|
||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
return
|
return
|
||||||
|
@ -483,8 +489,8 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
adapter?.swapDataSet(files)
|
adapter?.swapDataSet(files)
|
||||||
val crumb = activeCrumb
|
val crumb = activeCrumb
|
||||||
if (crumb != null) {
|
if (crumb != null) {
|
||||||
(binding.recyclerView.layoutManager as LinearLayoutManager?)
|
(binding.recyclerView.layoutManager as LinearLayoutManager)
|
||||||
?.scrollToPositionWithOffset(crumb.scrollPosition, 0)
|
.scrollToPositionWithOffset(crumb.scrollPosition, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -548,7 +554,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun listSongs(
|
private suspend fun listSongs(
|
||||||
context: Context,
|
context: Context,
|
||||||
files: List<File?>,
|
files: List<File?>,
|
||||||
fileFilter: FileFilter,
|
fileFilter: FileFilter,
|
||||||
|
@ -578,6 +584,11 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun scrollToTop() {
|
||||||
|
binding.recyclerView.scrollToPosition(0)
|
||||||
|
binding.appBarLayout.setExpanded(true, true)
|
||||||
|
}
|
||||||
|
|
||||||
private fun switchToFileAdapter() {
|
private fun switchToFileAdapter() {
|
||||||
adapter = SongFileAdapter(mainActivity, LinkedList(), R.layout.item_list, this)
|
adapter = SongFileAdapter(mainActivity, LinkedList(), R.layout.item_list, this)
|
||||||
adapter!!.registerAdapterDataObserver(
|
adapter!!.registerAdapterDataObserver(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue