From af1ec40dbe44a930b974e84405b3518616e59033 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Sat, 20 Jul 2024 16:28:36 -0600 Subject: [PATCH] detail: fix issues on small form factors --- .../auxio/detail/AlbumDetailFragment.kt | 4 +- .../auxio/detail/ArtistDetailFragment.kt | 12 +- .../auxio/detail/GenreDetailFragment.kt | 4 +- .../auxio/detail/PlaylistDetailFragment.kt | 4 +- .../fragment_detail.xml | 9 +- .../res/layout-h480dp/fragment_detail.xml | 5 +- .../res/layout-w600dp/fragment_detail.xml | 206 ++++++++++++++++++ app/src/main/res/layout/fragment_detail.xml | 84 ++++--- 8 files changed, 266 insertions(+), 62 deletions(-) rename app/src/main/res/{layout-land => layout-h280dp}/fragment_detail.xml (96%) create mode 100644 app/src/main/res/layout-w600dp/fragment_detail.xml diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index d14d75f8f..b5855dd63 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -137,10 +137,10 @@ class AlbumDetailFragment : DetailFragment() { text = context.getString(R.string.fmt_three, date, songCount, duration) } - binding.detailPlayButton.setOnClickListener { + binding.detailPlayButton?.setOnClickListener { playbackModel.play(unlikelyToBeNull(detailModel.currentAlbum.value)) } - binding.detailShuffleButton.setOnClickListener { + binding.detailShuffleButton?.setOnClickListener { playbackModel.shuffle(unlikelyToBeNull(detailModel.currentAlbum.value)) } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt index 4ea8ffb73..78d38b191 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -149,22 +149,22 @@ class ArtistDetailFragment : DetailFragment() { // In the case that this header used to he configured to have no songs, // we want to reset the visibility of all information that was hidden. - binding.detailPlayButton.isVisible = true - binding.detailShuffleButton.isVisible = true + binding.detailPlayButton?.isVisible = true + binding.detailShuffleButton?.isVisible = true } else { // The artist does not have any songs, so hide functionality that makes no sense. // ex. Play and Shuffle, Song Counts, and Genre Information. // Artists are always guaranteed to have albums however, so continue to show those. logD("Artist is empty, disabling genres and playback") binding.detailSubhead.isVisible = false - binding.detailPlayButton.isEnabled = false - binding.detailShuffleButton.isEnabled = false + binding.detailPlayButton?.isEnabled = false + binding.detailShuffleButton?.isEnabled = false } - binding.detailPlayButton.setOnClickListener { + binding.detailPlayButton?.setOnClickListener { playbackModel.play(unlikelyToBeNull(detailModel.currentArtist.value)) } - binding.detailShuffleButton.setOnClickListener { + binding.detailShuffleButton?.setOnClickListener { playbackModel.shuffle(unlikelyToBeNull(detailModel.currentArtist.value)) } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt index ec65f97bd..6081d6efd 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -129,10 +129,10 @@ class GenreDetailFragment : DetailFragment() { R.string.fmt_two, context.getPlural(R.plurals.fmt_artist_count, genre.artists.size), context.getPlural(R.plurals.fmt_song_count, genre.songs.size)) - binding.detailPlayButton.setOnClickListener { + binding.detailPlayButton?.setOnClickListener { playbackModel.play(unlikelyToBeNull(detailModel.currentGenre.value)) } - binding.detailShuffleButton.setOnClickListener { + binding.detailShuffleButton?.setOnClickListener { playbackModel.shuffle(unlikelyToBeNull(detailModel.currentGenre.value)) } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt index b5f1fb8e9..f50a3b6f2 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt @@ -225,13 +225,13 @@ class PlaylistDetailFragment : logD("Playlist is being edited or is empty, disabling playback options") } - binding.detailPlayButton.apply { + binding.detailPlayButton?.apply { isEnabled = playable setOnClickListener { playbackModel.play(unlikelyToBeNull(detailModel.currentPlaylist.value)) } } - binding.detailShuffleButton.apply { + binding.detailShuffleButton?.apply { isEnabled = playable setOnClickListener { playbackModel.shuffle(unlikelyToBeNull(detailModel.currentPlaylist.value)) diff --git a/app/src/main/res/layout-land/fragment_detail.xml b/app/src/main/res/layout-h280dp/fragment_detail.xml similarity index 96% rename from app/src/main/res/layout-land/fragment_detail.xml rename to app/src/main/res/layout-h280dp/fragment_detail.xml index 1ffac5630..91c4371b1 100644 --- a/app/src/main/res/layout-land/fragment_detail.xml +++ b/app/src/main/res/layout-h280dp/fragment_detail.xml @@ -18,6 +18,8 @@ android:id="@+id/detail_collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" + app:expandedTitleMargin="0dp" + app:forceApplySystemWindowInsetTop="false" app:layout_scrollFlags="scroll|exitUntilCollapsed|snap" app:titleEnabled="false" app:toolbarId="@+id/detail_toolbar"> @@ -25,12 +27,11 @@ @@ -39,6 +40,7 @@ style="@style/Widget.Auxio.Image.Large" app:enablePlaybackIndicator="false" app:enableSelectionBadge="false" + android:layout_marginTop="@dimen/spacing_medium" app:layout_constraintBottom_toTopOf="@+id/detail_play_button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -108,6 +110,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing_mid_medium" android:layout_marginEnd="@dimen/spacing_small" + android:layout_marginBottom="@dimen/spacing_mid_medium" android:text="@string/lbl_play" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button" diff --git a/app/src/main/res/layout-h480dp/fragment_detail.xml b/app/src/main/res/layout-h480dp/fragment_detail.xml index 4bab91c03..694fde20b 100644 --- a/app/src/main/res/layout-h480dp/fragment_detail.xml +++ b/app/src/main/res/layout-h480dp/fragment_detail.xml @@ -25,9 +25,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml index b94cec508..ccfc8bb21 100644 --- a/app/src/main/res/layout/fragment_detail.xml +++ b/app/src/main/res/layout/fragment_detail.xml @@ -18,6 +18,8 @@ android:id="@+id/detail_collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" + app:expandedTitleMargin="0dp" + app:forceApplySystemWindowInsetTop="false" app:layout_scrollFlags="scroll|exitUntilCollapsed|snap" app:titleEnabled="false" app:toolbarId="@+id/detail_toolbar"> @@ -25,91 +27,83 @@ - - - + app:layout_collapseMode="pin">