diff --git a/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/PlayerViewModel.kt b/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/PlayerViewModel.kt index c2b00e32..c56e3f3f 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/PlayerViewModel.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/PlayerViewModel.kt @@ -71,10 +71,15 @@ class PlayerViewModel( controller!!.seekToPrevious() } - fun shuffleSongs(songs: List) { + fun playSongs(songs: List, shuffle: Boolean = false) { viewModelScope.launch { - val shuffleQueue = songs.shuffled().map { it.asMediaItem } - playAll(shuffleQueue) + val queue = if (shuffle) { + songs.shuffled() + } else { + songs + } + .map { it.asMediaItem } + playAll(queue) } } diff --git a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/music/LocalMusicScreen.kt b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/music/LocalMusicScreen.kt index 0b5e4c4f..f27ca154 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/music/LocalMusicScreen.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/music/LocalMusicScreen.kt @@ -3,12 +3,16 @@ package app.suhasdissa.vibeyou.ui.screens.music import android.view.SoundEffectConstants import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material.icons.filled.Shuffle import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon @@ -98,14 +102,28 @@ fun LocalMusicScreen( 0 -> { val view = LocalView.current Scaffold(floatingActionButton = { - FloatingActionButton(onClick = { - view.playSoundEffect(SoundEffectConstants.CLICK) - playerViewModel.shuffleSongs(localSongViewModel.songs) - }) { - Icon( - imageVector = Icons.Default.Shuffle, - contentDescription = stringResource(R.string.shuffle) - ) + Row { + FloatingActionButton(onClick = { + view.playSoundEffect(SoundEffectConstants.CLICK) + playerViewModel.playSongs(localSongViewModel.songs) + }) { + Icon( + imageVector = Icons.Default.PlayArrow, + contentDescription = stringResource(R.string.play_all) + ) + } + + Spacer(modifier = Modifier.width(12.dp)) + + FloatingActionButton(onClick = { + view.playSoundEffect(SoundEffectConstants.CLICK) + playerViewModel.playSongs(localSongViewModel.songs, shuffle = true) + }) { + Icon( + imageVector = Icons.Default.Shuffle, + contentDescription = stringResource(R.string.shuffle) + ) + } } }) { innerPadding -> Column( diff --git a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/AlbumScreen.kt b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/AlbumScreen.kt index 117d5ebc..ef95901f 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/AlbumScreen.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/AlbumScreen.kt @@ -50,7 +50,7 @@ fun AlbumScreen( MiniPlayerScaffold(fab = { if (state is AlbumInfoState.Success) { FloatingActionButton(onClick = { - playerViewModel.shuffleSongs(state.songs) + playerViewModel.playSongs(state.songs, shuffle = true) }) { Icon( imageVector = Icons.Default.Shuffle, diff --git a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/songs/SongsScreen.kt b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/songs/SongsScreen.kt index ec36bafa..42d23d21 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/songs/SongsScreen.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/songs/SongsScreen.kt @@ -34,7 +34,7 @@ fun SongsScreen( Scaffold(floatingActionButton = { FloatingActionButton(onClick = { view.playSoundEffect(SoundEffectConstants.CLICK) - playerViewModel.shuffleSongs(songs) + playerViewModel.playSongs(songs) }) { Icon( imageVector = Icons.Default.Shuffle, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7dbece54..fdbd6f7f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -62,4 +62,5 @@ Change music cache size Music cache limit Unlimited + Play all \ No newline at end of file