diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
index 72b1910ee..60dc7fe89 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
@@ -27,10 +27,9 @@ import code.name.monkey.retromusic.*
import code.name.monkey.retromusic.activities.base.AbsCastActivity
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
import code.name.monkey.retromusic.extensions.*
-import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment
-import code.name.monkey.retromusic.fragments.home.HomeFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.SearchQueryHelper.getSongs
+import code.name.monkey.retromusic.interfaces.IScrollHelper
import code.name.monkey.retromusic.model.CategoryInfo
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.repository.PlaylistSongsLoader
@@ -90,21 +89,17 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
bottomNavigationView.setupWithNavController(navController)
// Scroll Fragment to top
bottomNavigationView.setOnItemReselectedListener {
- currentFragment(R.id.fragment_container)
- .also {
- if (it is AbsRecyclerViewFragment<*, *>) {
- it.scrollToTop()
- }
- if (it is HomeFragment) {
- it.scrollToTop()
- }
+ currentFragment(R.id.fragment_container).apply {
+ if (this is IScrollHelper) {
+ scrollToTop()
}
+ }
}
// This is more like a work-around as for start destination of navGraph
// enterTransition won't work as expected
navGraph.setStartDestination(R.id.libraryFragment)
navController.addOnDestinationChangedListener { _, destination, _ ->
- when (destination.id) {
+ when (destination.id) {
R.id.action_home, R.id.action_song, R.id.action_album, R.id.action_artist, R.id.action_folder, R.id.action_playlist, R.id.action_genre -> {
// Save the last tab
if (PreferenceUtil.rememberLastTab) {
@@ -117,7 +112,10 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
setBottomNavVisibility(visible = false)
hideBottomSheet(true)
}
- else -> setBottomNavVisibility(visible = false, animate = true) // Hide Bottom Navigation Bar
+ else -> setBottomNavVisibility(
+ visible = false,
+ animate = true
+ ) // Hide Bottom Navigation Bar
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt
index 51dfccdd9..c7eeebe77 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt
@@ -34,6 +34,7 @@ import code.name.monkey.retromusic.extensions.accentColor
import code.name.monkey.retromusic.extensions.dip
import code.name.monkey.retromusic.extensions.drawNextToNavbar
import code.name.monkey.retromusic.helper.MusicPlayerRemote
+import code.name.monkey.retromusic.interfaces.IScrollHelper
import code.name.monkey.retromusic.util.ThemedFastScroller.create
import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.transition.MaterialFadeThrough
@@ -42,7 +43,7 @@ import me.zhanghai.android.fastscroll.FastScroller
import me.zhanghai.android.fastscroll.FastScrollerBuilder
abstract class AbsRecyclerViewFragment, LM : RecyclerView.LayoutManager> :
- AbsMainActivityFragment(R.layout.fragment_main_recycler) {
+ AbsMainActivityFragment(R.layout.fragment_main_recycler), IScrollHelper {
private var _binding: FragmentMainRecyclerBinding? = null
private val binding get() = _binding!!
@@ -200,7 +201,7 @@ abstract class AbsRecyclerViewFragment, LM : Recycle
val container get() = binding.root
- fun scrollToTop() {
+ override fun scrollToTop() {
recyclerView.scrollToPosition(0)
binding.appBarLayout.setExpanded(true, true)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
index 6f521637c..4bc9ca231 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
@@ -40,6 +40,7 @@ import code.name.monkey.retromusic.extensions.drawNextToNavbar
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension
+import code.name.monkey.retromusic.interfaces.IScrollHelper
import code.name.monkey.retromusic.util.PreferenceUtil
import com.google.android.gms.cast.framework.CastButtonFactory
import com.google.android.material.shape.MaterialShapeDrawable
@@ -47,7 +48,7 @@ import com.google.android.material.transition.MaterialFadeThrough
import com.google.android.material.transition.MaterialSharedAxis
class HomeFragment :
- AbsMainActivityFragment(if (PreferenceUtil.isHomeBanner) R.layout.fragment_banner_home else R.layout.fragment_home) {
+ AbsMainActivityFragment(if (PreferenceUtil.isHomeBanner) R.layout.fragment_banner_home else R.layout.fragment_home), IScrollHelper {
private var _binding: HomeBindingAdapter? = null
private val binding get() = _binding!!
@@ -189,7 +190,7 @@ class HomeFragment :
CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast)
}
- fun scrollToTop() {
+ override fun scrollToTop() {
binding.container.scrollTo(0, 0)
binding.appBarLayout.setExpanded(true)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/interfaces/IScrollHelper.kt b/app/src/main/java/code/name/monkey/retromusic/interfaces/IScrollHelper.kt
new file mode 100644
index 000000000..112bdcdc1
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/interfaces/IScrollHelper.kt
@@ -0,0 +1,5 @@
+package code.name.monkey.retromusic.interfaces
+
+interface IScrollHelper {
+ fun scrollToTop()
+}
\ No newline at end of file