From d0a68353a7b46214697dbd9e32e97fdc07792649 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 17 May 2023 12:08:31 -0600 Subject: [PATCH] music: simplify picker closing Simplify picker closing navigation by avoiding weird communication via state change and instead simply navigate twice from NewPlaylistDialog. This is probably really stupid. But so is the other way. --- .../org/oxycblt/auxio/detail/PlaylistDetailFragment.kt | 2 +- .../org/oxycblt/auxio/music/device/DeviceMusicImpl.kt | 1 + .../oxycblt/auxio/music/picker/AddToPlaylistDialog.kt | 3 ++- .../org/oxycblt/auxio/music/picker/NewPlaylistDialog.kt | 9 ++++++++- app/src/main/res/layout/fragment_main.xml | 2 -- 5 files changed, 12 insertions(+), 5 deletions(-) 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 d1214f6b2..8c4cb4d2f 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt @@ -127,7 +127,7 @@ class PlaylistDetailFragment : true } R.id.action_delete -> { - musicModel.deletePlaylist(currentPlaylist) + musicModel.createPlaylist() true } else -> false diff --git a/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt b/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt index ef17f395d..4de6f3c37 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt @@ -36,6 +36,7 @@ import org.oxycblt.auxio.util.update // TODO: Entirely rework music equality such that it's not completely UID-focused and actually // takes metadata into account +// TODO: Reduce need for raw objects to save some memory /** * Library-backed implementation of [Song]. 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 03cb0e597..e1058d1b5 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 @@ -22,6 +22,7 @@ import android.os.Bundle import android.view.LayoutInflater import androidx.appcompat.app.AlertDialog import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.ConcatAdapter @@ -47,7 +48,7 @@ class AddToPlaylistDialog : ClickableListListener, NewPlaylistFooterAdapter.Listener { private val musicModel: MusicViewModel by activityViewModels() - private val pickerModel: PlaylistPickerViewModel by activityViewModels() + private val pickerModel: PlaylistPickerViewModel by viewModels() // Information about what playlist to name for is initially within the navigation arguments // as UIDs, as that is the only safe way to parcel playlist information. private val args: AddToPlaylistDialogArgs by navArgs() diff --git a/app/src/main/java/org/oxycblt/auxio/music/picker/NewPlaylistDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/picker/NewPlaylistDialog.kt index d4b4d02ea..6c14b6d04 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/picker/NewPlaylistDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/picker/NewPlaylistDialog.kt @@ -23,6 +23,7 @@ import android.view.LayoutInflater import androidx.appcompat.app.AlertDialog import androidx.core.widget.addTextChangedListener import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import dagger.hilt.android.AndroidEntryPoint @@ -42,7 +43,7 @@ import org.oxycblt.auxio.util.unlikelyToBeNull @AndroidEntryPoint class NewPlaylistDialog : ViewBindingDialogFragment() { private val musicModel: MusicViewModel by activityViewModels() - private val pickerModel: PlaylistPickerViewModel by activityViewModels() + private val pickerModel: PlaylistPickerViewModel by viewModels() // Information about what playlist to name for is initially within the navigation arguments // as UIDs, as that is the only safe way to parcel playlist information. private val args: NewPlaylistDialogArgs by navArgs() @@ -62,6 +63,12 @@ class NewPlaylistDialog : ViewBindingDialogFragment() musicModel.createPlaylist(name, pendingPlaylist.songs) pickerModel.dropPendingAddition() requireContext().showToast(R.string.lng_playlist_created) + findNavController().apply { + navigateUp() + // Do an additional navigation away from the playlist addition dialog, if + // needed. If that dialog isn't present, this should be a no-op. Hopefully. + navigateUp() + } } .setNegativeButton(R.string.lbl_cancel, null) } diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 6c22299d1..abc7469ee 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -8,8 +8,6 @@ android:background="?attr/colorSurface" android:transitionGroup="true"> - -