From d8a58a6d96939122e862d65de83645ddaa8505bc Mon Sep 17 00:00:00 2001 From: Damontecres Date: Wed, 4 Mar 2026 09:25:43 -0500 Subject: [PATCH] Add stop button --- .../damontecres/wholphin/services/MusicService.kt | 6 ++++-- .../wholphin/ui/detail/music/NowPlayingButtons.kt | 10 ++++++++++ .../wholphin/ui/detail/music/NowPlayingOverlay.kt | 2 ++ .../wholphin/ui/detail/music/NowPlayingPage.kt | 1 + .../wholphin/ui/detail/music/NowPlayingViewModel.kt | 6 ++++-- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt b/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt index f47c0915..65043595 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt @@ -68,7 +68,6 @@ class MusicService ).build() .also { it.addListener(MusicPlayerListener(it, _state)) - it.prepare() } } @@ -85,7 +84,10 @@ class MusicService } } } - onMain { player.play() } + onMain { + player.prepare() + player.play() + } } suspend fun stop() { diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingButtons.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingButtons.kt index b987484e..44f08012 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingButtons.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingButtons.kt @@ -61,6 +61,7 @@ fun NowPlayingButtons( controllerViewState: ControllerViewState, initialFocusRequester: FocusRequester, onClickMore: () -> Unit, + onClickStop: () -> Unit, modifier: Modifier = Modifier, ) { val playPauseState = rememberPlayPauseButtonState(player) @@ -87,6 +88,15 @@ fun NowPlayingButtons( onControllerInteraction = onControllerInteraction, modifier = Modifier, ) + PlaybackButton( + iconRes = R.drawable.baseline_stop_24, + onClick = { + onClickStop.invoke() + }, + enabled = true, + onControllerInteraction = onControllerInteraction, + modifier = Modifier, + ) } PlaybackButtons( player = player, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingOverlay.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingOverlay.kt index 66cde708..4b1481a1 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingOverlay.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingOverlay.kt @@ -72,6 +72,7 @@ fun NowPlayingOverlay( onClickMore: () -> Unit, onMoveQueue: (Int, MoveDirection) -> Unit, onClickMoreItem: (Int, AudioItem) -> Unit, + onClickStop: () -> Unit, modifier: Modifier = Modifier, ) { val scope = rememberCoroutineScope() @@ -131,6 +132,7 @@ fun NowPlayingOverlay( controllerViewState = controllerViewState, initialFocusRequester = focusRequester, onClickMore = onClickMore, + onClickStop = onClickStop, modifier = Modifier .fillMaxWidth() diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt index 763cd178..8fe13d07 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt @@ -231,6 +231,7 @@ fun NowPlayingPage( onClickSong = { index, _ -> viewModel.play(index) }, onClickMoreItem = { index, song -> showContextForItem.invoke(false, index, song) }, onLongClickSong = { index, song -> showContextForItem.invoke(true, index, song) }, + onClickStop = { viewModel.stop() }, modifier = Modifier .background(AppColors.TransparentBlack50) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingViewModel.kt index 4a1d5029..3febe097 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingViewModel.kt @@ -185,7 +185,9 @@ class NowPlayingViewModel fun removeFromQueue(index: Int) = viewModelScope.launchDefault { musicService.removeFromQueue(index) } fun stop() { - player.stop() - navigationManager.goBack() + viewModelScope.launchDefault { + musicService.stop() + navigationManager.goBack() + } } }