From 106194fa524730d6a6409d75c57910eedbeab870 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Sat, 20 Jul 2024 16:06:56 -0600 Subject: [PATCH] playback: add split screen playback form factor --- .../auxio/playback/PlaybackPanelFragment.kt | 16 +- .../layout-h240dp/fragment_playback_panel.xml | 176 ++++++++++++++++++ .../res/layout/fragment_playback_panel.xml | 85 +++------ app/src/main/res/values/styles_ui.xml | 12 ++ 4 files changed, 224 insertions(+), 65 deletions(-) create mode 100644 app/src/main/res/layout-h240dp/fragment_playback_panel.xml diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt index 80f9a99d0..c73a1b814 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt @@ -102,12 +102,12 @@ class PlaybackPanelFragment : isSelected = true setOnClickListener { navigateToCurrentArtist() } } - binding.playbackAlbum.apply { + binding.playbackAlbum?.apply { isSelected = true setOnClickListener { navigateToCurrentAlbum() } } - binding.playbackSeekBar.listener = this + binding.playbackSeekBar?.listener = this // Set up actions // TODO: Add better playback button accessibility @@ -116,7 +116,7 @@ class PlaybackPanelFragment : binding.playbackPlayPause.setOnClickListener { playbackModel.togglePlaying() } binding.playbackSkipNext.setOnClickListener { playbackModel.next() } binding.playbackShuffle.setOnClickListener { playbackModel.toggleShuffled() } - binding.playbackMore.setOnClickListener { + binding.playbackMore?.setOnClickListener { playbackModel.song.value?.let { listModel.openMenu(R.menu.playback_song, it, PlaySong.ByItself) } @@ -135,7 +135,7 @@ class PlaybackPanelFragment : equalizerLauncher = null binding.playbackSong.isSelected = false binding.playbackArtist.isSelected = false - binding.playbackAlbum.isSelected = false + binding.playbackAlbum?.isSelected = false binding.playbackToolbar.setOnMenuItemClickListener(null) } @@ -185,10 +185,10 @@ class PlaybackPanelFragment : val context = requireContext() logD("Updating song display: $song") binding.playbackCover.bind(song) - binding.playbackSong.text = song.name.resolve(context) + binding.playbackSong?.text = song.name.resolve(context) binding.playbackArtist.text = song.artists.resolveNames(context) - binding.playbackAlbum.text = song.album.name.resolve(context) - binding.playbackSeekBar.durationDs = song.durationMs.msToDs() + binding.playbackAlbum?.text = song.album.name.resolve(context) + binding.playbackSeekBar?.durationDs = song.durationMs.msToDs() } private fun updateParent(parent: MusicParent?) { @@ -199,7 +199,7 @@ class PlaybackPanelFragment : } private fun updatePosition(positionDs: Long) { - requireBinding().playbackSeekBar.positionDs = positionDs + requireBinding().playbackSeekBar?.positionDs = positionDs } private fun updateRepeat(repeatMode: RepeatMode) { diff --git a/app/src/main/res/layout-h240dp/fragment_playback_panel.xml b/app/src/main/res/layout-h240dp/fragment_playback_panel.xml new file mode 100644 index 000000000..b73de1fd9 --- /dev/null +++ b/app/src/main/res/layout-h240dp/fragment_playback_panel.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_playback_panel.xml b/app/src/main/res/layout/fragment_playback_panel.xml index 07ba982bd..fa845fb33 100644 --- a/app/src/main/res/layout/fragment_playback_panel.xml +++ b/app/src/main/res/layout/fragment_playback_panel.xml @@ -12,95 +12,67 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:menu="@menu/toolbar_playback" - app:titleCentered="true" - app:subtitleCentered="true" - app:titleTextAppearance="@style/TextAppearance.Auxio.LabelLarge" - app:subtitleTextAppearance="@style/TextAppearance.Auxio.BodySmall" app:navigationIcon="@drawable/ic_down_24" + app:subtitleCentered="true" + app:subtitleTextAppearance="@style/TextAppearance.Auxio.BodySmall" app:title="@string/lbl_playback" + app:titleCentered="true" + app:titleTextAppearance="@style/TextAppearance.Auxio.LabelLarge" tools:subtitle="@string/lbl_all_songs" /> - + app:layout_constraintTop_toBottomOf="@+id/playback_toolbar" /> - - - - - - - + app:layout_constraintHorizontal_bias="0.5" + app:layout_constraintStart_toEndOf="@+id/playback_cover" + app:layout_constraintTop_toBottomOf="@+id/playback_info_container"> - diff --git a/app/src/main/res/values/styles_ui.xml b/app/src/main/res/values/styles_ui.xml index 0b8603e51..000a8e899 100644 --- a/app/src/main/res/values/styles_ui.xml +++ b/app/src/main/res/values/styles_ui.xml @@ -277,6 +277,18 @@ @color/m3_text_button_foreground_color_selector + + + + +