Add "Play single" entry to play a single song instead of the radio/playlist
This commit is contained in:
@@ -24,9 +24,9 @@ import it.vfsfitvnm.vimusic.models.Playlist
|
|||||||
import it.vfsfitvnm.vimusic.models.SongInPlaylist
|
import it.vfsfitvnm.vimusic.models.SongInPlaylist
|
||||||
import it.vfsfitvnm.vimusic.models.SongWithInfo
|
import it.vfsfitvnm.vimusic.models.SongWithInfo
|
||||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.rememberPlaylistOrAlbumRoute
|
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.rememberArtistRoute
|
import it.vfsfitvnm.vimusic.ui.screens.rememberArtistRoute
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.rememberCreatePlaylistRoute
|
import it.vfsfitvnm.vimusic.ui.screens.rememberCreatePlaylistRoute
|
||||||
|
import it.vfsfitvnm.vimusic.ui.screens.rememberPlaylistOrAlbumRoute
|
||||||
import it.vfsfitvnm.vimusic.utils.*
|
import it.vfsfitvnm.vimusic.utils.*
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -149,6 +149,10 @@ fun NonQueuedMediaItemMenu(
|
|||||||
YoutubePlayer.Radio.setup(playlistId = playlistId)
|
YoutubePlayer.Radio.setup(playlistId = playlistId)
|
||||||
player?.mediaController?.forcePlay(mediaItem)
|
player?.mediaController?.forcePlay(mediaItem)
|
||||||
},
|
},
|
||||||
|
onPlaySingle = {
|
||||||
|
YoutubePlayer.Radio.reset()
|
||||||
|
player?.mediaController?.forcePlay(mediaItem)
|
||||||
|
},
|
||||||
onPlayNext = if (player?.playbackState == Player.STATE_READY) ({
|
onPlayNext = if (player?.playbackState == Player.STATE_READY) ({
|
||||||
player.mediaController.addNext(mediaItem)
|
player.mediaController.addNext(mediaItem)
|
||||||
}) else null,
|
}) else null,
|
||||||
@@ -192,6 +196,7 @@ fun BaseMediaItemMenu(
|
|||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onStartRadio: (() -> Unit)? = null,
|
onStartRadio: (() -> Unit)? = null,
|
||||||
|
onPlaySingle: (() -> Unit)? = null,
|
||||||
onPlayNext: (() -> Unit)? = null,
|
onPlayNext: (() -> Unit)? = null,
|
||||||
onEnqueue: (() -> Unit)? = null,
|
onEnqueue: (() -> Unit)? = null,
|
||||||
onRemoveFromQueue: (() -> Unit)? = null,
|
onRemoveFromQueue: (() -> Unit)? = null,
|
||||||
@@ -211,6 +216,7 @@ fun BaseMediaItemMenu(
|
|||||||
onDismiss = onDismiss,
|
onDismiss = onDismiss,
|
||||||
onStartRadio = onStartRadio,
|
onStartRadio = onStartRadio,
|
||||||
onPlayNext = onPlayNext,
|
onPlayNext = onPlayNext,
|
||||||
|
onPlaySingle = onPlaySingle,
|
||||||
onEnqueue = onEnqueue,
|
onEnqueue = onEnqueue,
|
||||||
onAddToPlaylist = { playlist, position ->
|
onAddToPlaylist = { playlist, position ->
|
||||||
coroutineScope.launch(Dispatchers.IO) {
|
coroutineScope.launch(Dispatchers.IO) {
|
||||||
@@ -250,6 +256,7 @@ fun MediaItemMenu(
|
|||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onStartRadio: (() -> Unit)? = null,
|
onStartRadio: (() -> Unit)? = null,
|
||||||
|
onPlaySingle: (() -> Unit)? = null,
|
||||||
onPlayNext: (() -> Unit)? = null,
|
onPlayNext: (() -> Unit)? = null,
|
||||||
onEnqueue: (() -> Unit)? = null,
|
onEnqueue: (() -> Unit)? = null,
|
||||||
onDeleteFromDatabase: (() -> Unit)? = null,
|
onDeleteFromDatabase: (() -> Unit)? = null,
|
||||||
@@ -359,6 +366,17 @@ fun MediaItemMenu(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onPlaySingle?.let { onPlaySingle ->
|
||||||
|
MenuEntry(
|
||||||
|
icon = R.drawable.play,
|
||||||
|
text = "Play single",
|
||||||
|
onClick = {
|
||||||
|
onDismiss()
|
||||||
|
onPlaySingle()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
onPlayNext?.let { onPlayNext ->
|
onPlayNext?.let { onPlayNext ->
|
||||||
MenuEntry(
|
MenuEntry(
|
||||||
icon = R.drawable.play,
|
icon = R.drawable.play,
|
||||||
|
|||||||
Reference in New Issue
Block a user