From 9af80592b3437bc2cb38648f77ba6d6bf9f0aa3c Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Sun, 5 Dec 2021 23:39:48 +0530 Subject: [PATCH] Code Cleanup --- .../retromusic/activities/MainActivity.kt | 22 +++++++++---------- .../fragments/base/AbsRecyclerViewFragment.kt | 5 +++-- .../retromusic/fragments/home/HomeFragment.kt | 5 +++-- .../retromusic/interfaces/IScrollHelper.kt | 5 +++++ 4 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/interfaces/IScrollHelper.kt 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