diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cb8cd40a..b18f594f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## dev + +## What's Improved +- Added ability to click on the playback bar to exit the queue view + ## 3.0.4 #### What's New diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 6c1913d5f..8ce51e915 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -268,8 +268,8 @@ class MainFragment : } when (action) { - is MainNavigationAction.Expand -> tryExpandSheets() - is MainNavigationAction.Collapse -> tryCollapseSheets() + is MainNavigationAction.OpenPlaybackPanel -> tryOpenPlaybackPanel() + is MainNavigationAction.ClosePlaybackPanel -> tryClosePlaybackPanel() is MainNavigationAction.Directions -> findNavController().navigateSafe(action.directions) } @@ -279,7 +279,7 @@ class MainFragment : private fun handleExploreNavigation(item: Music?) { if (item != null) { - tryCollapseSheets() + tryClosePlaybackPanel() } } @@ -318,22 +318,33 @@ class MainFragment : } } - private fun tryExpandSheets() { + private fun tryOpenPlaybackPanel() { val binding = requireBinding() val playbackSheetBehavior = binding.playbackSheet.coordinatorLayoutBehavior as PlaybackBottomSheetBehavior + if (playbackSheetBehavior.state == BackportBottomSheetBehavior.STATE_COLLAPSED) { // Playback sheet is not expanded and not hidden, we can expand it. playbackSheetBehavior.state = BackportBottomSheetBehavior.STATE_EXPANDED + return + } + + val queueSheetBehavior = + (binding.queueSheet.coordinatorLayoutBehavior ?: return) as QueueBottomSheetBehavior + if (playbackSheetBehavior.state == BackportBottomSheetBehavior.STATE_EXPANDED && + queueSheetBehavior.state == BackportBottomSheetBehavior.STATE_EXPANDED) { + // Queue sheet and playback sheet is expanded, close the queue sheet so the + // playback panel can eb shown. + queueSheetBehavior.state = BackportBottomSheetBehavior.STATE_COLLAPSED } } - private fun tryCollapseSheets() { + private fun tryClosePlaybackPanel() { val binding = requireBinding() val playbackSheetBehavior = binding.playbackSheet.coordinatorLayoutBehavior as PlaybackBottomSheetBehavior if (playbackSheetBehavior.state == BackportBottomSheetBehavior.STATE_EXPANDED) { - // Make sure the queue is also collapsed here. + // Playback sheet (and possibly queue) needs to be collapsed. val queueSheetBehavior = binding.queueSheet.coordinatorLayoutBehavior as QueueBottomSheetBehavior? playbackSheetBehavior.state = BackportBottomSheetBehavior.STATE_COLLAPSED 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 c613fc8ea..9397661ba 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt @@ -80,6 +80,7 @@ class MusicViewModel @Inject constructor(private val musicRepository: MusicRepos /** * Create a new generic playlist. + * * @param name The name of the new playlist. If null, the user will be prompted for a name. */ fun createPlaylist(name: String? = null) { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt index bda248be7..29c0d889e 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt @@ -56,7 +56,7 @@ class PlaybackBarFragment : ViewBindingFragment() { // --- UI SETUP --- binding.root.apply { - setOnClickListener { navModel.mainNavigateTo(MainNavigationAction.Expand) } + setOnClickListener { navModel.mainNavigateTo(MainNavigationAction.OpenPlaybackPanel) } setOnLongClickListener { playbackModel.song.value?.let(navModel::exploreNavigateTo) true 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 67137eeb9..c185d0db7 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt @@ -84,7 +84,9 @@ class PlaybackPanelFragment : } binding.playbackToolbar.apply { - setNavigationOnClickListener { navModel.mainNavigateTo(MainNavigationAction.Collapse) } + setNavigationOnClickListener { + navModel.mainNavigateTo(MainNavigationAction.ClosePlaybackPanel) + } setOnMenuItemClickListener(this@PlaybackPanelFragment) } diff --git a/app/src/main/java/org/oxycblt/auxio/ui/NavigationViewModel.kt b/app/src/main/java/org/oxycblt/auxio/ui/NavigationViewModel.kt index 116f57013..17d5b9d23 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/NavigationViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/NavigationViewModel.kt @@ -128,10 +128,10 @@ class NavigationViewModel : ViewModel() { */ sealed class MainNavigationAction { /** Expand the playback panel. */ - object Expand : MainNavigationAction() + object OpenPlaybackPanel : MainNavigationAction() /** Collapse the playback bottom sheet. */ - object Collapse : MainNavigationAction() + object ClosePlaybackPanel : MainNavigationAction() /** * Navigate to the given [NavDirections].