fix: Fix Breadcrumbs disappearing when resuming the folders tab

This commit is contained in:
Prathamesh More 2023-03-09 10:46:11 +05:30
parent 125681b938
commit 210d9afa1a

View file

@ -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.interfaces.ICallbacks
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.WrappedAsyncTaskLoader
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.getExternalStorageDirectory
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.SavedStateWrapper
import code.name.monkey.retromusic.views.BreadCrumbLayout.SelectionCallback
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.transition.MaterialFadeThrough
@ -81,7 +82,7 @@ import java.util.LinkedList
class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
IMainActivityFragmentCallbacks, SelectionCallback, ICallbacks,
LoaderManager.LoaderCallbacks<List<File>>, StorageClickListener {
LoaderManager.LoaderCallbacks<List<File>>, StorageClickListener, IScrollHelper {
private var _binding: FragmentFolderBinding? = null
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) {
switchToFileAdapter()
setCrumb(
@ -144,11 +134,29 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
true
)
} 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)
}
}
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() {
super.onPause()
saveScrollPosition()
@ -417,13 +425,11 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
}
private fun saveScrollPosition() {
val crumb = activeCrumb
if (crumb != null) {
crumb.scrollPosition =
(binding.recyclerView.layoutManager as LinearLayoutManager?)!!.findFirstVisibleItemPosition()
}
activeCrumb?.scrollPosition =
(binding.recyclerView.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
}
private fun scanPaths(toBeScanned: Array<String?>) {
if (activity == null) {
return
@ -483,8 +489,8 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
adapter?.swapDataSet(files)
val crumb = activeCrumb
if (crumb != null) {
(binding.recyclerView.layoutManager as LinearLayoutManager?)
?.scrollToPositionWithOffset(crumb.scrollPosition, 0)
(binding.recyclerView.layoutManager as LinearLayoutManager)
.scrollToPositionWithOffset(crumb.scrollPosition, 0)
}
}
@ -548,7 +554,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
}
}
suspend fun listSongs(
private suspend fun listSongs(
context: Context,
files: List<File?>,
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() {
adapter = SongFileAdapter(mainActivity, LinkedList(), R.layout.item_list, this)
adapter!!.registerAdapterDataObserver(