detail: re-add toolbar play/shuffle

This commit is contained in:
Alexander Capehart 2025-01-04 11:21:58 -07:00
parent 92a07e346b
commit 3007ad3ced
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
10 changed files with 152 additions and 10 deletions

View file

@ -141,9 +141,15 @@ class AlbumDetailFragment : DetailFragment<Album, Song>() {
binding.detailPlayButton?.setOnClickListener {
playbackModel.play(unlikelyToBeNull(detailModel.currentAlbum.value))
}
binding.detailToolbarPlay.setOnClickListener {
playbackModel.play(unlikelyToBeNull(detailModel.currentAlbum.value))
}
binding.detailShuffleButton?.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentAlbum.value))
}
binding.detailToolbarShuffle.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentAlbum.value))
}
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
}

View file

@ -164,9 +164,15 @@ class ArtistDetailFragment : DetailFragment<Artist, Music>() {
binding.detailPlayButton?.setOnClickListener {
playbackModel.play(unlikelyToBeNull(detailModel.currentArtist.value))
}
binding.detailToolbarPlay.setOnClickListener {
playbackModel.play(unlikelyToBeNull(detailModel.currentArtist.value))
}
binding.detailShuffleButton?.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentArtist.value))
}
binding.detailToolbarShuffle.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentArtist.value))
}
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
}

View file

@ -133,9 +133,15 @@ class GenreDetailFragment : DetailFragment<Genre, Music>() {
binding.detailPlayButton?.setOnClickListener {
playbackModel.play(unlikelyToBeNull(detailModel.currentGenre.value))
}
binding.detailToolbarPlay.setOnClickListener {
playbackModel.play(unlikelyToBeNull(detailModel.currentGenre.value))
}
binding.detailShuffleButton?.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentGenre.value))
}
binding.detailToolbarShuffle.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentGenre.value))
}
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
}

View file

@ -232,12 +232,24 @@ class PlaylistDetailFragment :
playbackModel.play(unlikelyToBeNull(detailModel.currentPlaylist.value))
}
}
binding.detailToolbarPlay.apply {
isEnabled = playable
setOnClickListener {
playbackModel.play(unlikelyToBeNull(detailModel.currentPlaylist.value))
}
}
binding.detailShuffleButton?.apply {
isEnabled = playable
setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentPlaylist.value))
}
}
binding.detailToolbarShuffle.apply {
isEnabled = playable
setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentPlaylist.value))
}
}
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
}

View file

@ -164,16 +164,32 @@
<TextView
android:id="@+id/detail_toolbar_title"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="@dimen/spacing_tiny"
android:maxLines="1"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:textAppearance="@style/TextAppearance.Auxio.TitleLarge"
android:textColor="?attr/colorOnSurface"
tools:text="Name" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_play"
style="@style/Widget.Auxio.Button.Icon.Small.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_play_24" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_shuffle"
style="@style/Widget.Auxio.Button.Icon.Small.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_shuffle_off_24" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>

View file

@ -146,18 +146,35 @@
<TextView
android:id="@+id/detail_toolbar_title"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="@dimen/spacing_tiny"
android:maxLines="1"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:textAppearance="@style/TextAppearance.Auxio.TitleLarge"
android:textColor="?attr/colorOnSurface"
tools:text="Name" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_play"
style="@style/Widget.Auxio.Button.Icon.Small.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_play_24" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_shuffle"
style="@style/Widget.Auxio.Button.Icon.Small.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_shuffle_off_24" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>
<com.google.android.material.appbar.MaterialToolbar

View file

@ -161,18 +161,35 @@
<TextView
android:id="@+id/detail_toolbar_title"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="@dimen/spacing_tiny"
android:maxLines="1"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:textAppearance="@style/TextAppearance.Auxio.TitleLarge"
android:textColor="?attr/colorOnSurface"
tools:text="Name" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_play"
style="@style/Widget.Auxio.Button.Icon.Small.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_play_24" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_shuffle"
style="@style/Widget.Auxio.Button.Icon.Small.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_shuffle_off_24" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>
<com.google.android.material.appbar.MaterialToolbar

View file

@ -164,16 +164,32 @@
<TextView
android:id="@+id/detail_toolbar_title"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="@dimen/spacing_tiny"
android:maxLines="1"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:textAppearance="@style/TextAppearance.Auxio.TitleLarge"
android:textColor="?attr/colorOnSurface"
tools:text="Name" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_play"
style="@style/Widget.Auxio.Button.Icon.Small.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_play_24" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_shuffle"
style="@style/Widget.Auxio.Button.Icon.Small.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_shuffle_off_24" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>

View file

@ -136,18 +136,35 @@
<TextView
android:id="@+id/detail_toolbar_title"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="@dimen/spacing_tiny"
android:maxLines="1"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:layout_marginStart="@dimen/spacing_tiny"
android:textAppearance="@style/TextAppearance.Auxio.TitleLarge"
android:textColor="?attr/colorOnSurface"
tools:text="Name" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_play"
style="@style/Widget.Auxio.Button.Icon.Small.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_play_24" />
<org.oxycblt.auxio.ui.RippleFixMaterialButton
android:id="@+id/detail_toolbar_shuffle"
style="@style/Widget.Auxio.Button.Icon.Small.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_shuffle_off_24" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>
<com.google.android.material.appbar.MaterialToolbar

View file

@ -297,8 +297,32 @@
<item name="iconTint" tools:ignore="PrivateResource">@color/m3_text_button_foreground_color_selector</item>
</style>
<style name="Widget.Auxio.Button.Icon.Small.Secondary" parent="Widget.Auxio.Button.Icon.Small">
<item name="materialThemeOverlay">@style/ThemeOverlay.Auxio.IconButton.Huge</item>
<style name="Widget.Auxio.Button.Icon.Small.Primary" parent="Widget.Material3.Button.IconButton.Filled">
<item name="iconSize">@dimen/size_icon_small</item>
<item name="android:minWidth">@dimen/size_touchable_small</item>
<item name="android:minHeight">@dimen/size_touchable_small</item>
<item name="android:insetTop">@dimen/spacing_tiny</item>
<item name="android:insetBottom">@dimen/spacing_tiny</item>
<item name="android:insetLeft">@dimen/spacing_tiny</item>
<item name="android:insetRight">@dimen/spacing_tiny</item>
<item name="android:paddingStart">@dimen/spacing_small</item>
<item name="android:paddingEnd">@dimen/spacing_small</item>
<item name="android:paddingTop">@dimen/spacing_small</item>
<item name="android:paddingBottom">@dimen/spacing_small</item>
</style>
<style name="Widget.Auxio.Button.Icon.Small.Secondary" parent="Widget.Material3.Button.IconButton.Filled.Tonal">
<item name="iconSize">@dimen/size_icon_small</item>
<item name="android:minWidth">@dimen/size_touchable_small</item>
<item name="android:minHeight">@dimen/size_touchable_small</item>
<item name="android:insetTop">@dimen/spacing_tiny</item>
<item name="android:insetBottom">@dimen/spacing_tiny</item>
<item name="android:insetLeft">@dimen/spacing_tiny</item>
<item name="android:insetRight">@dimen/spacing_tiny</item>
<item name="android:paddingStart">@dimen/spacing_small</item>
<item name="android:paddingEnd">@dimen/spacing_small</item>
<item name="android:paddingTop">@dimen/spacing_small</item>
<item name="android:paddingBottom">@dimen/spacing_small</item>
</style>
<style name="Widget.Auxio.Button.Icon.Small.PlayPause" parent="Widget.Auxio.Button.Icon.Small">
@ -321,10 +345,15 @@
<item name="android:paddingEnd">8dp</item>
<item name="android:paddingTop">8dp</item>
<item name="android:paddingBottom">8dp</item>
<item name="materialThemeOverlay">@style/ThemeOverlay.Auxio.IconButton.Huge</item>
<item name="materialThemeOverlay">@style/ThemeOverlay.Auxio.IconButton.Palette.Secondary</item>
</style>
<style name="ThemeOverlay.Auxio.IconButton.Huge" parent="">
<style name="ThemeOverlay.Auxio.IconButton.Palette.Primary" parent="">
<item name="colorContainer">?attr/colorPrimaryContainer</item>
<item name="colorOnContainer">?attr/colorOnPrimaryContainer</item>
</style>
<style name="ThemeOverlay.Auxio.IconButton.Palette.Secondary" parent="">
<item name="colorContainer">?attr/colorSecondaryContainer</item>
<item name="colorOnContainer">?attr/colorOnSecondaryContainer</item>
</style>