diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 5ae68fc78..3538b4235 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -57,8 +57,7 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat import org.oxycblt.auxio.util.unlikelyToBeNull /** - * A wrapper around the home fragment that shows the playback fragment and controls the more - * high-level navigation features. + * A wrapper around the home fragment that shows the playback fragment and high-level navigation. * * @author Alexander Capehart (OxygenCobalt) */ 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 d466e51c8..8b6da9d08 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -73,7 +73,7 @@ class AlbumDetailFragment : ListFragment(), AlbumDetailHeaderAdapter.Listener, DetailListAdapter.Listener { - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() @@ -317,7 +317,6 @@ class AlbumDetailFragment : is PendingMenu.ForPlaylist -> error("Unexpected menu $pendingMenu") } findNavController().navigateSafe(directions) - menuModel.pendingMenu.consume() } private fun updateSelection(selected: List) { @@ -333,20 +332,19 @@ class AlbumDetailFragment : } private fun handleDecision(decision: PlaylistDecision?) { - when (decision) { - is PlaylistDecision.Add -> { - logD("Adding ${decision.songs.size} songs to a playlist") - findNavController() - .navigateSafe( - AlbumDetailFragmentDirections.addToPlaylist( - decision.songs.map { it.uid }.toTypedArray())) - musicModel.playlistDecision.consume() + if (decision == null) return + val directions = + when (decision) { + is PlaylistDecision.Add -> { + logD("Adding ${decision.songs.size} songs to a playlist") + AlbumDetailFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray()) + } + is PlaylistDecision.New, + is PlaylistDecision.Rename, + is PlaylistDecision.Delete -> error("Unexpected decision $decision") } - is PlaylistDecision.New, - is PlaylistDecision.Rename, - is PlaylistDecision.Delete -> error("Unexpected decision $decision") - null -> {} - } + findNavController().navigateSafe(directions) } private fun updatePlayback(song: Song?, parent: MusicParent?, isPlaying: Boolean) { 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 55033234c..5d3ab0a75 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -71,7 +71,7 @@ class ArtistDetailFragment : ListFragment(), DetailHeaderAdapter.Listener, DetailListAdapter.Listener { - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() @@ -329,7 +329,6 @@ class ArtistDetailFragment : is PendingMenu.ForPlaylist -> error("Unexpected menu $pendingMenu") } findNavController().navigateSafe(directions) - menuModel.pendingMenu.consume() } private fun updateSelection(selected: List) { @@ -345,20 +344,19 @@ class ArtistDetailFragment : } private fun handleDecision(decision: PlaylistDecision?) { - when (decision) { - is PlaylistDecision.Add -> { - logD("Adding ${decision.songs.size} songs to a playlist") - findNavController() - .navigateSafe( - ArtistDetailFragmentDirections.addToPlaylist( - decision.songs.map { it.uid }.toTypedArray())) - musicModel.playlistDecision.consume() + if (decision == null) return + val directions = + when (decision) { + is PlaylistDecision.Add -> { + logD("Adding ${decision.songs.size} songs to a playlist") + ArtistDetailFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray()) + } + is PlaylistDecision.New, + is PlaylistDecision.Rename, + is PlaylistDecision.Delete -> error("Unexpected decision $decision") } - is PlaylistDecision.New, - is PlaylistDecision.Rename, - is PlaylistDecision.Delete -> error("Unexpected decision $decision") - null -> {} - } + findNavController().navigateSafe(directions) } private fun updatePlayback(song: Song?, parent: MusicParent?, isPlaying: Boolean) { 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 93705e610..8d299c448 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -71,7 +71,7 @@ class GenreDetailFragment : ListFragment(), DetailHeaderAdapter.Listener, DetailListAdapter.Listener { - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() @@ -317,7 +317,6 @@ class GenreDetailFragment : is PendingMenu.ForPlaylist -> error("Unexpected menu $pendingMenu") } findNavController().navigateSafe(directions) - menuModel.pendingMenu.consume() } private fun updateSelection(selected: List) { @@ -333,20 +332,19 @@ class GenreDetailFragment : } private fun handleDecision(decision: PlaylistDecision?) { - when (decision) { - is PlaylistDecision.Add -> { - logD("Adding ${decision.songs.size} songs to a playlist") - findNavController() - .navigateSafe( - GenreDetailFragmentDirections.addToPlaylist( - decision.songs.map { it.uid }.toTypedArray())) - musicModel.playlistDecision.consume() + if (decision == null) return + val directions = + when (decision) { + is PlaylistDecision.Add -> { + logD("Adding ${decision.songs.size} songs to a playlist") + ArtistDetailFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray()) + } + is PlaylistDecision.New, + is PlaylistDecision.Rename, + is PlaylistDecision.Delete -> error("Unexpected decision $decision") } - is PlaylistDecision.New, - is PlaylistDecision.Rename, - is PlaylistDecision.Delete -> error("Unexpected decision $decision") - null -> {} - } + findNavController().navigateSafe(directions) } private fun updatePlayback(song: Song?, parent: MusicParent?, isPlaying: Boolean) { 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 aeadf1bea..f27164c85 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt @@ -74,7 +74,7 @@ class PlaylistDetailFragment : DetailHeaderAdapter.Listener, PlaylistDetailListAdapter.Listener, NavController.OnDestinationChangedListener { - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() @@ -362,7 +362,6 @@ class PlaylistDetailFragment : is PendingMenu.ForPlaylist -> error("Unexpected menu $pendingMenu") } findNavController().navigateSafe(directions) - menuModel.pendingMenu.consume() } private fun updateSelection(selected: List) { @@ -377,23 +376,20 @@ class PlaylistDetailFragment : private fun handleDecision(decision: PlaylistDecision?) { if (decision == null) return - when (decision) { - is PlaylistDecision.Rename -> { - logD("Renaming ${decision.playlist}") - findNavController() - .navigateSafe( - PlaylistDetailFragmentDirections.renamePlaylist(decision.playlist.uid)) + val directions = + when (decision) { + is PlaylistDecision.Rename -> { + logD("Renaming ${decision.playlist}") + PlaylistDetailFragmentDirections.renamePlaylist(decision.playlist.uid) + } + is PlaylistDecision.Delete -> { + logD("Deleting ${decision.playlist}") + PlaylistDetailFragmentDirections.deletePlaylist(decision.playlist.uid) + } + is PlaylistDecision.Add, + is PlaylistDecision.New -> error("Unexpected decision $decision") } - is PlaylistDecision.Delete -> { - logD("Deleting ${decision.playlist}") - findNavController() - .navigateSafe( - PlaylistDetailFragmentDirections.deletePlaylist(decision.playlist.uid)) - } - is PlaylistDecision.Add, - is PlaylistDecision.New -> error("Unexpected decision $decision") - } - musicModel.playlistDecision.consume() + findNavController().navigateSafe(directions) } private fun updatePlayback(song: Song?, parent: MusicParent?, isPlaying: Boolean) { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt index e63c630ac..f43da103c 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt @@ -69,8 +69,8 @@ class SongDetailDialog : ViewBindingMaterialDialogFragment T.zipName(context: Context): String { val name = name return if (name is Name.Known && name.sort != null) { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/picker/NavigationPickerViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/picker/DetailPickerViewModel.kt similarity index 98% rename from app/src/main/java/org/oxycblt/auxio/detail/picker/NavigationPickerViewModel.kt rename to app/src/main/java/org/oxycblt/auxio/detail/picker/DetailPickerViewModel.kt index a510b6e4a..46c4431c9 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/picker/NavigationPickerViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/picker/DetailPickerViewModel.kt @@ -1,6 +1,6 @@ /* * Copyright (c) 2023 Auxio Project - * NavigationPickerViewModel.kt is part of Auxio. + * DetailPickerViewModel.kt is part of Auxio. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -49,6 +49,11 @@ class NavigationPickerViewModel @Inject constructor(private val musicRepository: musicRepository.addUpdateListener(this) } + override fun onCleared() { + super.onCleared() + musicRepository.removeUpdateListener(this) + } + override fun onMusicChanges(changes: MusicRepository.Changes) { if (!changes.deviceLibrary) return val deviceLibrary = musicRepository.deviceLibrary ?: return @@ -57,11 +62,6 @@ class NavigationPickerViewModel @Inject constructor(private val musicRepository: logD("Updated artist choices: ${_artistChoices.value}") } - override fun onCleared() { - super.onCleared() - musicRepository.removeUpdateListener(this) - } - /** * Set the [Music.UID] of the item to show artist choices for. * diff --git a/app/src/main/java/org/oxycblt/auxio/detail/picker/ShowArtistDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/picker/ShowArtistDialog.kt index 2e7ef1ba1..0b3a91af3 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/picker/ShowArtistDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/picker/ShowArtistDialog.kt @@ -35,6 +35,7 @@ import org.oxycblt.auxio.list.adapter.UpdateInstructions import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.ui.ViewBindingMaterialDialogFragment import org.oxycblt.auxio.util.collectImmediately +import org.oxycblt.auxio.util.logD /** * A picker [ViewBindingMaterialDialogFragment] intended for when the [Artist] to show is ambiguous. @@ -66,14 +67,9 @@ class ShowArtistDialog : adapter = choiceAdapter } + detailModel.toShow.consume() pickerModel.setArtistChoiceUid(args.itemUid) - collectImmediately(pickerModel.artistChoices) { - if (it != null) { - choiceAdapter.update(it.choices, UpdateInstructions.Replace(0)) - } else { - findNavController().navigateUp() - } - } + collectImmediately(pickerModel.artistChoices, ::handleChoices) } override fun onDestroyBinding(binding: DialogMusicChoicesBinding) { @@ -82,8 +78,17 @@ class ShowArtistDialog : } override fun onClick(item: Artist, viewHolder: RecyclerView.ViewHolder) { + findNavController().navigateUp() // User made a choice, navigate to the artist. detailModel.showArtist(item) - findNavController().navigateUp() + } + + private fun handleChoices(choices: ArtistShowChoices?) { + if (choices == null) { + logD("No choices to show, navigating away") + findNavController().navigateUp() + return + } + choiceAdapter.update(choices.choices, UpdateInstructions.Diff) } } diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index d0df07da6..5b6d03413 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -492,33 +492,27 @@ class HomeFragment : private fun handleDecision(decision: PlaylistDecision?) { if (decision == null) return - when (decision) { - is PlaylistDecision.New -> { - logD("Creating new playlist") - findNavController() - .navigateSafe( - HomeFragmentDirections.newPlaylist( - decision.songs.map { it.uid }.toTypedArray())) + val directions = + when (decision) { + is PlaylistDecision.New -> { + logD("Creating new playlist") + HomeFragmentDirections.newPlaylist(decision.songs.map { it.uid }.toTypedArray()) + } + is PlaylistDecision.Rename -> { + logD("Renaming ${decision.playlist}") + HomeFragmentDirections.renamePlaylist(decision.playlist.uid) + } + is PlaylistDecision.Delete -> { + logD("Deleting ${decision.playlist}") + HomeFragmentDirections.deletePlaylist(decision.playlist.uid) + } + is PlaylistDecision.Add -> { + logD("Adding ${decision.songs.size} to a playlist") + HomeFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray()) + } } - is PlaylistDecision.Rename -> { - logD("Renaming ${decision.playlist}") - findNavController() - .navigateSafe(HomeFragmentDirections.renamePlaylist(decision.playlist.uid)) - } - is PlaylistDecision.Delete -> { - logD("Deleting ${decision.playlist}") - findNavController() - .navigateSafe(HomeFragmentDirections.deletePlaylist(decision.playlist.uid)) - } - is PlaylistDecision.Add -> { - logD("Adding ${decision.songs.size} to a playlist") - findNavController() - .navigateSafe( - HomeFragmentDirections.addToPlaylist( - decision.songs.map { it.uid }.toTypedArray())) - } - } - musicModel.playlistDecision.consume() + findNavController().navigateSafe(directions) } private fun updateFab(songs: List, isFastScrolling: Boolean) { @@ -606,7 +600,6 @@ class HomeFragment : pendingMenu.menuRes, pendingMenu.music.uid) } findNavController().navigateSafe(directions) - menuModel.pendingMenu.consume() } private fun updateSelection(selected: List) { diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt index 0ef4695b3..cf1c494ce 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt @@ -60,7 +60,7 @@ class AlbumListFragment : FastScrollRecyclerView.Listener, FastScrollRecyclerView.PopupProvider { private val homeModel: HomeViewModel by activityViewModels() - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt index 3d020e823..c17cef002 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt @@ -58,7 +58,7 @@ class ArtistListFragment : FastScrollRecyclerView.PopupProvider, FastScrollRecyclerView.Listener { private val homeModel: HomeViewModel by activityViewModels() - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt index efc0656ad..75f849c46 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt @@ -57,7 +57,7 @@ class GenreListFragment : FastScrollRecyclerView.PopupProvider, FastScrollRecyclerView.Listener { private val homeModel: HomeViewModel by activityViewModels() - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt index 639dafbd9..793459b24 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt @@ -55,7 +55,7 @@ class PlaylistListFragment : FastScrollRecyclerView.PopupProvider, FastScrollRecyclerView.Listener { private val homeModel: HomeViewModel by activityViewModels() - override val detailModel: DetailViewModel by activityViewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index 8dd627c86..2ac91301d 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -28,7 +28,6 @@ import dagger.hilt.android.AndroidEntryPoint import java.util.Formatter import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentHomeListBinding -import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.home.HomeViewModel import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.ListFragment @@ -59,7 +58,6 @@ class SongListFragment : FastScrollRecyclerView.PopupProvider, FastScrollRecyclerView.Listener { private val homeModel: HomeViewModel by activityViewModels() - override val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/list/ListFragment.kt b/app/src/main/java/org/oxycblt/auxio/list/ListFragment.kt index 9348d64b1..30ea99f61 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/ListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/ListFragment.kt @@ -24,7 +24,6 @@ import androidx.appcompat.widget.PopupMenu import androidx.core.view.MenuCompat import androidx.recyclerview.widget.RecyclerView import androidx.viewbinding.ViewBinding -import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.list.selection.SelectionFragment import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.util.logD @@ -36,7 +35,6 @@ import org.oxycblt.auxio.util.logD */ abstract class ListFragment : SelectionFragment(), SelectableListListener { - protected abstract val detailModel: DetailViewModel private var currentMenu: PopupMenu? = null override fun onDestroyBinding(binding: VB) { diff --git a/app/src/main/java/org/oxycblt/auxio/list/menu/MenuDialogFragment.kt b/app/src/main/java/org/oxycblt/auxio/list/menu/MenuDialogFragment.kt index a78065e2c..6ca9f6c6c 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/menu/MenuDialogFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/menu/MenuDialogFragment.kt @@ -66,6 +66,7 @@ abstract class MenuDialogFragment : } // --- VIEWMODEL SETUP --- + menuModel.pendingMenu.consume() menuModel.setCurrentMenu(uid) collectImmediately(menuModel.currentMusic, this::updateMusic) } diff --git a/app/src/main/java/org/oxycblt/auxio/music/picker/AddToPlaylistDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/picker/AddToPlaylistDialog.kt index 00175dc2a..112680338 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/picker/AddToPlaylistDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/picker/AddToPlaylistDialog.kt @@ -72,6 +72,7 @@ class AddToPlaylistDialog : } // --- VIEWMODEL SETUP --- + musicModel.playlistDecision.consume() pickerModel.setSongsToAdd(args.songUids) collectImmediately(pickerModel.currentSongsToAdd, ::updatePendingSongs) collectImmediately(pickerModel.playlistAddChoices, ::updatePlaylistChoices) diff --git a/app/src/main/java/org/oxycblt/auxio/music/picker/DeletePlaylistDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/picker/DeletePlaylistDialog.kt index fbe599750..a36e1c3d4 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/picker/DeletePlaylistDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/picker/DeletePlaylistDialog.kt @@ -71,6 +71,7 @@ class DeletePlaylistDialog : ViewBindingMaterialDialogFragment() { - override val detailModel: DetailViewModel by activityViewModels() + private val searchModel: SearchViewModel by viewModels() + private val detailModel: DetailViewModel by activityViewModels() private val menuModel: MenuViewModel by activityViewModels() override val selectionModel: SelectionViewModel by activityViewModels() override val playbackModel: PlaybackViewModel by activityViewModels() override val musicModel: MusicViewModel by activityViewModels() - private val searchModel: SearchViewModel by viewModels() private val searchAdapter = SearchAdapter(this) private var imm: InputMethodManager? = null private var launchedKeyboard = false @@ -236,12 +236,13 @@ class SearchFragment : ListFragment() { } is Show.SongArtistDetails -> { logD("Navigating to artist choices for ${show.song}") - findNavController().navigateSafe(SearchFragmentDirections.showArtist(show.song.uid)) + findNavController() + .navigateSafe(SearchFragmentDirections.showArtists(show.song.uid)) } is Show.AlbumArtistDetails -> { logD("Navigating to artist choices for ${show.album}") findNavController() - .navigateSafe(SearchFragmentDirections.showArtist(show.album.uid)) + .navigateSafe(SearchFragmentDirections.showArtists(show.album.uid)) } is Show.GenreDetails -> { logD("Navigating to ${show.genre}") @@ -281,7 +282,6 @@ class SearchFragment : ListFragment() { } } findNavController().navigateSafe(directions) - musicModel.playlistDecision.consume() } private fun updatePlayback(song: Song?, parent: MusicParent?, isPlaying: Boolean) { @@ -309,7 +309,6 @@ class SearchFragment : ListFragment() { pendingMenu.menuRes, pendingMenu.music.uid) } findNavController().navigateSafe(directions) - menuModel.pendingMenu.consume() } private fun updateSelection(selected: List) { diff --git a/app/src/main/res/menu/item_album_song.xml b/app/src/main/res/menu/item_album_song.xml index 7df67a7c4..e31ea20b7 100644 --- a/app/src/main/res/menu/item_album_song.xml +++ b/app/src/main/res/menu/item_album_song.xml @@ -1,13 +1,13 @@ - - + + + + + + + + + android:title="@string/lbl_share" + android:icon="@drawable/ic_share_24"/> \ No newline at end of file diff --git a/app/src/main/res/menu/item_artist_song.xml b/app/src/main/res/menu/item_artist_song.xml index 803a12785..2b5877b34 100644 --- a/app/src/main/res/menu/item_artist_song.xml +++ b/app/src/main/res/menu/item_artist_song.xml @@ -1,13 +1,13 @@ - - + + + + + + + + - - + + + + + + + +