From c793e99d516665cd590cfbda2118df3575710af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80lex=20Magaz=20Gra=C3=A7a?= Date: Sun, 3 May 2026 12:57:09 +0200 Subject: [PATCH 1/3] Exit selection mode when pressing back on Songs tab --- .../screens/library/songs/SongListFragment.kt | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/songs/SongListFragment.kt b/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/songs/SongListFragment.kt index a2e5fd663..637704177 100644 --- a/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/songs/SongListFragment.kt +++ b/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/songs/SongListFragment.kt @@ -10,6 +10,8 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import android.widget.Toast +import androidx.activity.OnBackPressedCallback +import androidx.activity.addCallback import androidx.appcompat.widget.SwitchCompat import androidx.compose.runtime.getValue import androidx.compose.ui.platform.ComposeView @@ -64,11 +66,18 @@ class SongListFragment : private lateinit var playlistMenuView: PlaylistMenuView + private var onBackPressedCallback: OnBackPressedCallback? = null + // Lifecycle override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + onBackPressedCallback = requireActivity().onBackPressedDispatcher + .addCallback(this, false) { + viewModel.clearSelection() + } + setHasOptionsMenu(true) } @@ -99,12 +108,12 @@ class SongListFragment : viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.uiState .collect { state -> - val count = state.selectedSongs.size - if (count == 0) { - contextualToolbarHelper.hide() - } else { + if (state.isSelecting) { + onBackPressedCallback?.isEnabled = true + contextualToolbarHelper.show() + val count = state.selectedSongs.size contextualToolbarHelper.contextualToolbar?.title = Phrase.fromPlural(requireContext(), R.plurals.multi_select_items_selected, count) .put("count", count) @@ -117,6 +126,9 @@ class SongListFragment : .distinct(), ) } + } else { + onBackPressedCallback?.isEnabled = false + contextualToolbarHelper.hide() } updateToolbarMenuSortOrder(state.sortOrder) From 0df0a7b3a787df8c58d0c24631ccd2b4f0ee6dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80lex=20Magaz=20Gra=C3=A7a?= Date: Mon, 4 May 2026 20:36:39 +0200 Subject: [PATCH 2/3] Exit selection mode when pressing back on Albums tab --- .../library/albums/AlbumListFragment.kt | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albums/AlbumListFragment.kt b/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albums/AlbumListFragment.kt index 54850f82e..ee82e0d85 100644 --- a/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albums/AlbumListFragment.kt +++ b/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albums/AlbumListFragment.kt @@ -10,6 +10,8 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import android.widget.Toast +import androidx.activity.OnBackPressedCallback +import androidx.activity.addCallback import androidx.appcompat.widget.SwitchCompat import androidx.compose.runtime.getValue import androidx.compose.ui.platform.ComposeView @@ -64,11 +66,18 @@ class AlbumListFragment : private lateinit var playlistMenuView: PlaylistMenuView + private var onBackPressedCallback: OnBackPressedCallback? = null + // Lifecycle override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + onBackPressedCallback = requireActivity().onBackPressedDispatcher + .addCallback(this, false) { + viewModel.clearSelection() + } + setHasOptionsMenu(true) } @@ -99,12 +108,12 @@ class AlbumListFragment : viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.uiState .collect { state -> - val count = state.selectedAlbums.size - if (count == 0) { - contextualToolbarHelper.hide() - } else { + if (state.isSelecting) { + onBackPressedCallback?.isEnabled = true + contextualToolbarHelper.show() + val count = state.selectedAlbums.size contextualToolbarHelper.contextualToolbar?.title = Phrase.fromPlural(requireContext(), R.plurals.multi_select_items_selected, count) .put("count", count) @@ -117,6 +126,9 @@ class AlbumListFragment : .distinct(), ) } + } else { + onBackPressedCallback?.isEnabled = false + contextualToolbarHelper.hide() } updateToolbarMenuViewMode(state.viewMode) From 5b817c9bccb8b207a734699d98df013d9b927dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80lex=20Magaz=20Gra=C3=A7a?= Date: Mon, 4 May 2026 20:37:06 +0200 Subject: [PATCH 3/3] Exit selection mode when pressing back on Artists tab --- .../albumartists/AlbumArtistListFragment.kt | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albumartists/AlbumArtistListFragment.kt b/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albumartists/AlbumArtistListFragment.kt index 1bfa5808b..6a31649e5 100644 --- a/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albumartists/AlbumArtistListFragment.kt +++ b/android/app/src/main/java/com/simplecityapps/shuttle/ui/screens/library/albumartists/AlbumArtistListFragment.kt @@ -10,6 +10,8 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import android.widget.Toast +import androidx.activity.OnBackPressedCallback +import androidx.activity.addCallback import androidx.appcompat.widget.SwitchCompat import androidx.compose.runtime.getValue import androidx.compose.ui.platform.ComposeView @@ -63,11 +65,18 @@ class AlbumArtistListFragment : private lateinit var playlistMenuView: PlaylistMenuView + private var onBackPressedCallback: OnBackPressedCallback? = null + // Lifecycle override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + onBackPressedCallback = requireActivity().onBackPressedDispatcher + .addCallback(this, false) { + viewModel.clearSelection() + } + setHasOptionsMenu(true) } @@ -98,12 +107,12 @@ class AlbumArtistListFragment : viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.uiState .collect { state -> - val count = state.selectedArtists.size - if (count == 0) { - contextualToolbarHelper.hide() - } else { + if (state.isSelecting) { + onBackPressedCallback?.isEnabled = true + contextualToolbarHelper.show() + val count = state.selectedArtists.size contextualToolbarHelper.contextualToolbar?.title = Phrase.fromPlural(requireContext(), R.plurals.multi_select_items_selected, count) .put("count", count) @@ -116,6 +125,9 @@ class AlbumArtistListFragment : .distinct(), ) } + } else { + onBackPressedCallback?.isEnabled = false + contextualToolbarHelper.hide() } updateToolbarMenuViewMode(state.viewMode)