diff --git a/app/build.gradle b/app/build.gradle index 0a14a0b74..c38c26e0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -116,7 +116,7 @@ dependencies { implementation "androidx.preference:preference-ktx:1.2.0" // Database - def room_version = '2.6.0-alpha01' + def room_version = '2.6.0-alpha02' implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-ktx:$room_version" 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 b0c60107f..8bf635e5e 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -222,7 +222,7 @@ class AlbumDetailFragment : } override fun onNavigateToParentArtist() { - detailModel.showAlbum(unlikelyToBeNull(detailModel.currentAlbum.value)) + detailModel.showArtist(unlikelyToBeNull(detailModel.currentAlbum.value)) } private fun updateAlbum(album: Album?) { @@ -314,18 +314,17 @@ class AlbumDetailFragment : private fun handleDecision(decision: PlaylistDecision?) { when (decision) { - is PlaylistDecision.Add ->{ + is PlaylistDecision.Add -> { logD("Adding ${decision.songs.size} songs to a playlist") - findNavController().navigateSafe( - AlbumDetailFragmentDirections.addToPlaylist( - decision.songs.map { it.uid }.toTypedArray()) - ) + findNavController() + .navigateSafe( + AlbumDetailFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray())) musicModel.playlistDecision.consume() } - - 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 -> {} } } 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 347c13a1b..86208424b 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -324,18 +324,17 @@ class ArtistDetailFragment : private fun handleDecision(decision: PlaylistDecision?) { when (decision) { - is PlaylistDecision.Add ->{ + is PlaylistDecision.Add -> { logD("Adding ${decision.songs.size} songs to a playlist") - findNavController().navigateSafe( - ArtistDetailFragmentDirections.addToPlaylist( - decision.songs.map { it.uid }.toTypedArray()) - ) + findNavController() + .navigateSafe( + ArtistDetailFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray())) musicModel.playlistDecision.consume() } - - 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 -> {} } } 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 d0d4ff1bd..a2d2e2cd9 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -289,6 +289,7 @@ class GenreDetailFragment : } is Show.GenreDetails -> { logD("Navigated to this genre") + detailModel.toShow.consume() } is Show.PlaylistDetails -> { error("Unexpected show command $show") @@ -311,18 +312,17 @@ class GenreDetailFragment : private fun handleDecision(decision: PlaylistDecision?) { when (decision) { - is PlaylistDecision.Add ->{ + is PlaylistDecision.Add -> { logD("Adding ${decision.songs.size} songs to a playlist") - findNavController().navigateSafe( - GenreDetailFragmentDirections.addToPlaylist( - decision.songs.map { it.uid }.toTypedArray()) - ) + findNavController() + .navigateSafe( + GenreDetailFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray())) musicModel.playlistDecision.consume() } - - 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 -> {} } } 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 38aac6dcf..dc13ef831 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt @@ -336,6 +336,7 @@ class PlaylistDetailFragment : } is Show.PlaylistDetails -> { logD("Navigated to this playlist") + detailModel.toShow.consume() } is Show.GenreDetails -> { error("Unexpected show command $show") @@ -359,19 +360,18 @@ class PlaylistDetailFragment : when (decision) { is PlaylistDecision.Rename -> { logD("Renaming ${decision.playlist}") - findNavController().navigateSafe( - PlaylistDetailFragmentDirections.renamePlaylist(decision.playlist.uid) - ) + findNavController() + .navigateSafe( + PlaylistDetailFragmentDirections.renamePlaylist(decision.playlist.uid)) } - is PlaylistDecision.Delete -> { logD("Deleting ${decision.playlist}") - findNavController().navigateSafe( - PlaylistDetailFragmentDirections.deletePlaylist(decision.playlist.uid) - ) + findNavController() + .navigateSafe( + PlaylistDetailFragmentDirections.deletePlaylist(decision.playlist.uid)) } - - is PlaylistDecision.Add, is PlaylistDecision.New -> error("Unexpected decision $decision") + is PlaylistDecision.Add, + is PlaylistDecision.New -> error("Unexpected decision $decision") } musicModel.playlistDecision.consume() } 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 3d08cdfa0..7aa4dbe5f 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -486,29 +486,27 @@ class HomeFragment : when (decision) { is PlaylistDecision.New -> { logD("Creating new playlist") - findNavController().navigateSafe( - HomeFragmentDirections.newPlaylist(decision.songs.map { it.uid }.toTypedArray())) + findNavController() + .navigateSafe( + HomeFragmentDirections.newPlaylist( + decision.songs.map { it.uid }.toTypedArray())) } - is PlaylistDecision.Rename -> { logD("Renaming ${decision.playlist}") - findNavController().navigateSafe( - HomeFragmentDirections.renamePlaylist(decision.playlist.uid) - ) + findNavController() + .navigateSafe(HomeFragmentDirections.renamePlaylist(decision.playlist.uid)) } - is PlaylistDecision.Delete -> { logD("Deleting ${decision.playlist}") - findNavController().navigateSafe( - HomeFragmentDirections.deletePlaylist(decision.playlist.uid) - ) + 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()) - ) + findNavController() + .navigateSafe( + HomeFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray())) } } musicModel.playlistDecision.consume() @@ -560,11 +558,11 @@ class HomeFragment : } is Show.SongArtistDetails -> { logD("Navigating to artist choices for ${show.song}") - findNavController().navigateSafe(HomeFragmentDirections.showArtist(show.song.uid)) + findNavController().navigateSafe(HomeFragmentDirections.showArtists(show.song.uid)) } is Show.AlbumArtistDetails -> { logD("Navigating to artist choices for ${show.album}") - findNavController().navigateSafe(HomeFragmentDirections.showArtist(show.album.uid)) + findNavController().navigateSafe(HomeFragmentDirections.showArtists(show.album.uid)) } is Show.GenreDetails -> { logD("Navigating to ${show.genre}") @@ -573,7 +571,7 @@ class HomeFragment : is Show.PlaylistDetails -> { logD("Navigating to ${show.playlist}") findNavController() - .navigateSafe(HomeFragmentDirections.showGenre(show.playlist.uid)) + .navigateSafe(HomeFragmentDirections.showPlaylist(show.playlist.uid)) } null -> {} } diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt index b8717d220..5c2b2b86a 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt @@ -53,7 +53,8 @@ constructor( get() = _statistics private val _playlistDecision = MutableEvent() - val playlistDecision: Event get() = _playlistDecision + val playlistDecision: Event + get() = _playlistDecision init { musicRepository.addUpdateListener(this) 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 0f1c2b57b..02b59c01e 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt @@ -96,7 +96,12 @@ class PlaybackPanelFragment : // respective item. binding.playbackSong.apply { isSelected = true - setOnClickListener { playbackModel.song.value?.let(detailModel::showAlbum) } + setOnClickListener { + playbackModel.song.value?.let { + detailModel.showAlbum(it) + playbackModel.openMain() + } + } } binding.playbackArtist.apply { isSelected = true @@ -229,10 +234,16 @@ class PlaybackPanelFragment : } private fun navigateToCurrentArtist() { - playbackModel.song.value?.let(detailModel::showArtist) + playbackModel.song.value?.let { + detailModel.showArtist(it) + playbackModel.openMain() + } } private fun navigateToCurrentAlbum() { - playbackModel.song.value?.let(detailModel::showAlbum) + playbackModel.song.value?.let { + detailModel.showAlbum(it.album) + playbackModel.openMain() + } } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt b/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt index 466b56812..82ba84ddb 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt @@ -136,7 +136,6 @@ interface QueueDao { } // TODO: Figure out how to get RepeatMode to map to an int instead of a string -// TODO: Use intrinsic table names rather than custom names @Entity data class PlaybackState( @PrimaryKey val id: Int, diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchEngine.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchEngine.kt index 24c5389fd..2c8d9158f 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchEngine.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchEngine.kt @@ -35,8 +35,6 @@ import org.oxycblt.auxio.util.logD * Implements the fuzzy-ish searching algorithm used in the search view. * * @author Alexander Capehart - * - * TODO: Handle locale changes */ interface SearchEngine { /** diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index 7239221f0..4efc4c704 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -34,7 +34,6 @@ import com.google.android.material.transition.MaterialSharedAxis import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentSearchBinding -import org.oxycblt.auxio.detail.ArtistDetailFragmentDirections import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.detail.Show import org.oxycblt.auxio.home.HomeFragmentDirections @@ -204,8 +203,6 @@ class SearchFragment : ListFragment() { } } - - private fun handleShow(show: Show?) { when (show) { is Show.SongDetails -> { @@ -259,35 +256,32 @@ class SearchFragment : ListFragment() { hideKeyboard() } - 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())) + findNavController() + .navigateSafe( + HomeFragmentDirections.newPlaylist( + decision.songs.map { it.uid }.toTypedArray())) } - is PlaylistDecision.Rename -> { logD("Renaming ${decision.playlist}") - findNavController().navigateSafe( - HomeFragmentDirections.renamePlaylist(decision.playlist.uid) - ) + findNavController() + .navigateSafe(HomeFragmentDirections.renamePlaylist(decision.playlist.uid)) } - is PlaylistDecision.Delete -> { logD("Deleting ${decision.playlist}") - findNavController().navigateSafe( - SearchFragmentDirections.deletePlaylist(decision.playlist.uid) - ) + findNavController() + .navigateSafe(SearchFragmentDirections.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()) - ) + findNavController() + .navigateSafe( + HomeFragmentDirections.addToPlaylist( + decision.songs.map { it.uid }.toTypedArray())) } } musicModel.playlistDecision.consume() diff --git a/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt index 8e8f3d589..4149cc0f5 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt @@ -55,7 +55,7 @@ class RootPreferenceFragment : BasePreferenceFragment(R.xml.preferences_root) { override fun onOpenDialogPreference(preference: WrappedDialogPreference) { if (preference.key == getString(R.string.set_key_music_dirs)) { - findNavController().navigate(RootPreferenceFragmentDirections.musicDirsSettings()) + findNavController().navigateSafe(RootPreferenceFragmentDirections.musicDirsSettings()) } }