From f109130fb8436760b381653c997cb4d3a57bda31 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Mon, 4 Jan 2021 10:28:13 -0700 Subject: [PATCH] Update menus Implement a "Go to artist" option in library albums, along with removing unneeded icons to reduce the space taken up by them. --- .../auxio/detail/ArtistDetailFragment.kt | 4 +- .../oxycblt/auxio/library/LibraryFragment.kt | 2 +- .../org/oxycblt/auxio/ui/InterfaceUtils.kt | 56 ++++++++++++++++--- app/src/main/res/menu/menu_album_actions.xml | 15 ++--- .../main/res/menu/menu_album_song_actions.xml | 3 - app/src/main/res/menu/menu_artist_actions.xml | 8 +-- .../res/menu/menu_artist_album_actions.xml | 19 +++++++ app/src/main/res/menu/menu_library.xml | 5 +- 8 files changed, 81 insertions(+), 31 deletions(-) create mode 100644 app/src/main/res/menu/menu_artist_album_actions.xml 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 79b33a29b..39821f268 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -14,7 +14,7 @@ import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.BaseModel import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.playback.state.PlaybackMode -import org.oxycblt.auxio.ui.setupAlbumActions +import org.oxycblt.auxio.ui.setupArtistAlbumActions /** * The [DetailFragment] for an artist. @@ -53,7 +53,7 @@ class ArtistDetailFragment : DetailFragment() { } }, doOnLongClick = { data, view -> - PopupMenu(requireContext(), view).setupAlbumActions( + PopupMenu(requireContext(), view).setupArtistAlbumActions( requireContext(), data, playbackModel ) } diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt index 9fee6824f..34dc73746 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt @@ -206,7 +206,7 @@ class LibraryFragment : Fragment(), SearchView.OnQueryTextListener { when (data) { is Song -> menu.setupSongActions(requireContext(), data, playbackModel, detailModel) - is Album -> menu.setupAlbumActions(requireContext(), data, playbackModel) + is Album -> menu.setupAlbumActions(requireContext(), data, playbackModel, detailModel) is Artist -> menu.setupArtistActions(data, playbackModel) is Genre -> menu.setupGenreActions(data, playbackModel) diff --git a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt index 641fe5985..d2357ec1a 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt @@ -188,21 +188,16 @@ fun PopupMenu.setupAlbumSongActions( * @param context [Context] required * @param album [Album] The menu should correspond to * @param playbackModel The [PlaybackViewModel] the menu should dispatch actions to. + * @param detailModel The [DetailViewModel] the menu should dispatch actions to. */ fun PopupMenu.setupAlbumActions( context: Context, album: Album, - playbackModel: PlaybackViewModel + playbackModel: PlaybackViewModel, + detailModel: DetailViewModel ) { setOnMenuItemClickListener { when (it.itemId) { - R.id.action_queue_add -> { - playbackModel.addToUserQueue(album) - context.getString(R.string.label_queue_added).createToast(context) - - true - } - R.id.action_play -> { playbackModel.playAlbum(album, false) true @@ -213,12 +208,57 @@ fun PopupMenu.setupAlbumActions( true } + R.id.action_queue_add -> { + playbackModel.addToUserQueue(album) + context.getString(R.string.label_queue_added).createToast(context) + + true + } + + R.id.action_go_artist -> { + detailModel.navToItem(album.artist) + + true + } + else -> false } } inflateAndShow(R.menu.menu_album_actions) } +/** + * Show actions for an [Album] in the artist detail fragment + * @param context [Context] required + * @param album [Album] The menu should correspond to + * @param playbackModel The [PlaybackViewModel] the menu should dispatch actions to. + */ +fun PopupMenu.setupArtistAlbumActions(context: Context, album: Album, playbackModel: PlaybackViewModel) { + setOnMenuItemClickListener { + when (it.itemId) { + R.id.action_play -> { + playbackModel.playAlbum(album, false) + true + } + + R.id.action_shuffle -> { + playbackModel.playAlbum(album, true) + true + } + + R.id.action_queue_add -> { + playbackModel.addToUserQueue(album) + context.getString(R.string.label_queue_added).createToast(context) + + true + } + + else -> false + } + } + inflateAndShow(R.menu.menu_artist_album_actions) +} + /** * Show actions for an [Artist]. * @param artist The [Artist] The menu should correspond to diff --git a/app/src/main/res/menu/menu_album_actions.xml b/app/src/main/res/menu/menu_album_actions.xml index e2403d10e..bdbed3882 100644 --- a/app/src/main/res/menu/menu_album_actions.xml +++ b/app/src/main/res/menu/menu_album_actions.xml @@ -3,17 +3,14 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + android:title="@string/label_play" /> + android:title="@string/label_shuffle" /> + android:title="@string/label_queue_add" /> + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_album_song_actions.xml b/app/src/main/res/menu/menu_album_song_actions.xml index a2abddad5..38083c11f 100644 --- a/app/src/main/res/menu/menu_album_song_actions.xml +++ b/app/src/main/res/menu/menu_album_song_actions.xml @@ -2,14 +2,11 @@ \ No newline at end of file diff --git a/app/src/main/res/menu/menu_artist_actions.xml b/app/src/main/res/menu/menu_artist_actions.xml index 40891ec77..027814c0f 100644 --- a/app/src/main/res/menu/menu_artist_actions.xml +++ b/app/src/main/res/menu/menu_artist_actions.xml @@ -3,12 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + android:title="@string/label_play" /> + android:title="@string/label_shuffle" /> \ No newline at end of file diff --git a/app/src/main/res/menu/menu_artist_album_actions.xml b/app/src/main/res/menu/menu_artist_album_actions.xml new file mode 100644 index 000000000..e2403d10e --- /dev/null +++ b/app/src/main/res/menu/menu_artist_album_actions.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_library.xml b/app/src/main/res/menu/menu_library.xml index 53e6e58df..0a85b8674 100644 --- a/app/src/main/res/menu/menu_library.xml +++ b/app/src/main/res/menu/menu_library.xml @@ -12,8 +12,9 @@ tools:ignore="AlwaysShowAction" />