From ffd251ab62e1ec42e0bee7d44ef6028f6548b70a Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Sat, 15 Jan 2022 11:45:36 +0530 Subject: [PATCH] [Home] Code Cleanup --- .../retromusic/fragments/home/HomeBinding.kt | 23 +++ .../fragments/home/HomeBindingAdapter.kt | 32 ---- .../retromusic/fragments/home/HomeFragment.kt | 27 ++- .../retromusic/views/HomeImageLayout.kt | 52 ++++++ .../views/insets/InsetsLinearLayout.kt | 19 +++ .../res/layout-land/fragment_banner_home.xml | 158 ------------------ .../main/res/layout-land/fragment_home.xml | 45 +---- .../main/res/layout/banner_image_layout.xml | 78 +++++++++ .../main/res/layout/fragment_banner_home.xml | 155 ----------------- app/src/main/res/layout/fragment_home.xml | 45 +---- app/src/main/res/layout/user_image_layout.xml | 45 +++++ 11 files changed, 241 insertions(+), 438 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBinding.kt delete mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBindingAdapter.kt create mode 100644 app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt create mode 100644 app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsLinearLayout.kt delete mode 100644 app/src/main/res/layout-land/fragment_banner_home.xml create mode 100644 app/src/main/res/layout/banner_image_layout.xml delete mode 100644 app/src/main/res/layout/fragment_banner_home.xml create mode 100644 app/src/main/res/layout/user_image_layout.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBinding.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBinding.kt new file mode 100644 index 000000000..7ea737b7c --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBinding.kt @@ -0,0 +1,23 @@ +package code.name.monkey.retromusic.fragments.home + +import code.name.monkey.retromusic.databinding.FragmentHomeBinding + +class HomeBinding( + homeBinding: FragmentHomeBinding +) { + val root = homeBinding.root + val container = homeBinding.container + val contentContainer = homeBinding.contentContainer + val appBarLayout = homeBinding.appBarLayout + val toolbar = homeBinding.toolbar + val bannerImage = homeBinding.imageLayout.bannerImage + val userImage = homeBinding.imageLayout.userImage + val lastAdded = homeBinding.homeContent.absPlaylists.lastAdded + val topPlayed = homeBinding.homeContent.absPlaylists.topPlayed + val actionShuffle = homeBinding.homeContent.absPlaylists.actionShuffle + val history = homeBinding.homeContent.absPlaylists.history + val recyclerView = homeBinding.homeContent.recyclerView + val titleWelcome = homeBinding.imageLayout.titleWelcome + val appNameText = homeBinding.appNameText + val suggestions = homeBinding.homeContent.suggestions +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBindingAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBindingAdapter.kt deleted file mode 100644 index ed18d9c80..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeBindingAdapter.kt +++ /dev/null @@ -1,32 +0,0 @@ -package code.name.monkey.retromusic.fragments.home - -import code.name.monkey.retromusic.databinding.FragmentBannerHomeBinding -import code.name.monkey.retromusic.databinding.FragmentHomeBinding - -class HomeBindingAdapter( - homeBinding: FragmentHomeBinding?, - bannerHomeBinding: FragmentBannerHomeBinding? -) { - val root = homeBinding?.root ?: bannerHomeBinding?.root!! - val container = homeBinding?.container ?: bannerHomeBinding?.container!! - val contentContainer = homeBinding?.contentContainer ?: bannerHomeBinding?.contentContainer!! - val appBarLayout = homeBinding?.appBarLayout ?: bannerHomeBinding?.appBarLayout!! - val toolbar = homeBinding?.toolbar - ?: bannerHomeBinding?.toolbar!! - val bannerImage = bannerHomeBinding?.bannerImage - val userImage = homeBinding?.userImage - ?: bannerHomeBinding?.userImage!! - val lastAdded = homeBinding?.homeContent?.absPlaylists?.lastAdded - ?: bannerHomeBinding?.homeContent?.absPlaylists?.lastAdded!! - val topPlayed = homeBinding?.homeContent?.absPlaylists?.topPlayed - ?: bannerHomeBinding?.homeContent?.absPlaylists?.topPlayed!! - val actionShuffle = homeBinding?.homeContent?.absPlaylists?.actionShuffle - ?: bannerHomeBinding?.homeContent?.absPlaylists?.actionShuffle!! - val history = homeBinding?.homeContent?.absPlaylists?.history - ?: bannerHomeBinding?.homeContent?.absPlaylists?.history!! - val recyclerView = homeBinding?.homeContent?.recyclerView - ?: bannerHomeBinding?.homeContent?.recyclerView!! - val titleWelcome = homeBinding?.titleWelcome ?: bannerHomeBinding?.titleWelcome!! - val appNameText = homeBinding?.appNameText ?: bannerHomeBinding?.appNameText!! - val suggestions = homeBinding?.homeContent?.suggestions ?: bannerHomeBinding?.homeContent?.suggestions!! -} \ No newline at end of file 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 335a84a5c..f4a3bc51f 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 @@ -35,7 +35,6 @@ import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.* import code.name.monkey.retromusic.adapter.HomeAdapter -import code.name.monkey.retromusic.databinding.FragmentBannerHomeBinding import code.name.monkey.retromusic.databinding.FragmentHomeBinding import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog import code.name.monkey.retromusic.dialogs.ImportPlaylistDialog @@ -56,15 +55,15 @@ 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), - IScrollHelper { + AbsMainActivityFragment(R.layout.fragment_home), IScrollHelper { - private var _binding: HomeBindingAdapter? = null + private var _binding: HomeBinding? = null private val binding get() = _binding!! override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = getBinding(PreferenceUtil.isHomeBanner, view) + val homeBinding = FragmentHomeBinding.bind(view) + _binding = HomeBinding(homeBinding) mainActivity.setSupportActionBar(binding.toolbar) mainActivity.supportActionBar?.title = null setupListeners() @@ -105,7 +104,7 @@ class HomeFragment : private fun adjustPlaylistButtons() { val buttons = listOf(binding.history, binding.lastAdded, binding.topPlayed, binding.actionShuffle) - buttons.maxOf { it.lineCount }.let { maxLineCount-> + buttons.maxOf { it.lineCount }.let { maxLineCount -> buttons.forEach { button -> // Set the highest line count to every button for consistency button.setLines(maxLineCount) @@ -160,16 +159,10 @@ class HomeFragment : ) } // Reload suggestions - binding.suggestions.refreshButton.setOnClickListener { libraryViewModel.forceReload(ReloadType.Suggestions) } - } - - private fun getBinding(homeBanner: Boolean, view: View): HomeBindingAdapter { - return if (homeBanner) { - val homeBannerBinding = FragmentBannerHomeBinding.bind(view) - HomeBindingAdapter(null, homeBannerBinding) - } else { - val homeBinding = FragmentHomeBinding.bind(view) - HomeBindingAdapter(homeBinding, null) + binding.suggestions.refreshButton.setOnClickListener { + libraryViewModel.forceReload( + ReloadType.Suggestions + ) } } @@ -243,7 +236,7 @@ class HomeFragment : } private fun loadSuggestions(songs: List) { - if (songs.isEmpty()){ + if (songs.isEmpty()) { binding.suggestions.root.isVisible = false return } diff --git a/app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt b/app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt new file mode 100644 index 000000000..79c55b040 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt @@ -0,0 +1,52 @@ +package code.name.monkey.retromusic.views + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.FrameLayout +import android.widget.ImageView +import android.widget.TextView +import code.name.monkey.retromusic.databinding.BannerImageLayoutBinding +import code.name.monkey.retromusic.databinding.UserImageLayoutBinding +import code.name.monkey.retromusic.util.PreferenceUtil + +class HomeImageLayout @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = -1, + defStyleRes: Int = -1 +) : FrameLayout(context, attrs, defStyleAttr, defStyleRes) { + private var userImageBinding: UserImageLayoutBinding? = null + private var bannerImageBinding: BannerImageLayoutBinding? = null + + init { + if (PreferenceUtil.isHomeBanner) { + bannerImageBinding = BannerImageLayoutBinding.inflate(LayoutInflater.from(context)) + addView(bannerImageBinding!!.root) + } else { + userImageBinding = UserImageLayoutBinding.inflate(LayoutInflater.from(context)) + addView(userImageBinding!!.root) + } + } + + val userImage: ImageView + get() = if (PreferenceUtil.isHomeBanner) { + bannerImageBinding!!.userImage + } else { + userImageBinding!!.userImage + } + + val bannerImage: ImageView? + get() = if (PreferenceUtil.isHomeBanner) { + bannerImageBinding!!.bannerImage + } else { + null + } + + val titleWelcome : TextView + get() = if (PreferenceUtil.isHomeBanner) { + bannerImageBinding!!.titleWelcome + } else { + userImageBinding!!.titleWelcome + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsLinearLayout.kt b/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsLinearLayout.kt new file mode 100644 index 000000000..ec6c08f04 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsLinearLayout.kt @@ -0,0 +1,19 @@ +package code.name.monkey.retromusic.views.insets + +import android.content.Context +import android.util.AttributeSet +import android.widget.LinearLayout +import androidx.constraintlayout.widget.ConstraintLayout +import code.name.monkey.retromusic.extensions.drawAboveSystemBarsWithPadding +import code.name.monkey.retromusic.util.RetroUtil + +class InsetsLinearLayout @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + init { + if (!RetroUtil.isLandscape()) + drawAboveSystemBarsWithPadding() + } +} \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_banner_home.xml b/app/src/main/res/layout-land/fragment_banner_home.xml deleted file mode 100644 index 858d33922..000000000 --- a/app/src/main/res/layout-land/fragment_banner_home.xml +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_home.xml b/app/src/main/res/layout-land/fragment_home.xml index 7d68937a5..fa7257ac1 100644 --- a/app/src/main/res/layout-land/fragment_home.xml +++ b/app/src/main/res/layout-land/fragment_home.xml @@ -71,44 +71,13 @@ android:layout_height="wrap_content" android:transitionGroup="true"> - - - - - + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/imageLayout" /> \ No newline at end of file diff --git a/app/src/main/res/layout/banner_image_layout.xml b/app/src/main/res/layout/banner_image_layout.xml new file mode 100644 index 000000000..23b32d5d4 --- /dev/null +++ b/app/src/main/res/layout/banner_image_layout.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_banner_home.xml b/app/src/main/res/layout/fragment_banner_home.xml deleted file mode 100644 index fffcd5f41..000000000 --- a/app/src/main/res/layout/fragment_banner_home.xml +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 1c8cf07d8..934ecfc83 100755 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -70,44 +70,13 @@ android:layout_height="wrap_content" android:transitionGroup="true"> - - - - - + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/imageLayout" /> diff --git a/app/src/main/res/layout/user_image_layout.xml b/app/src/main/res/layout/user_image_layout.xml new file mode 100644 index 000000000..dec1dfdde --- /dev/null +++ b/app/src/main/res/layout/user_image_layout.xml @@ -0,0 +1,45 @@ + + + + + + + + \ No newline at end of file