playback: remove playbackmode field

Remove the useless PlaybackMode field.

Parent does the same job, but better.
This commit is contained in:
OxygenCobalt 2022-04-28 19:58:39 -06:00
parent 180faa6f50
commit 3d70028bd2
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
5 changed files with 24 additions and 44 deletions

View file

@ -191,7 +191,7 @@ class AlbumDetailFragment : DetailFragment(), AlbumDetailAdapter.Listener {
}
}
if (playbackModel.playbackMode.value == PlaybackMode.IN_ALBUM &&
if (playbackModel.parent.value is Album &&
playbackModel.parent.value?.id == unlikelyToBeNull(detailModel.currentAlbum.value).id) {
detailAdapter.highlightSong(song, binding.detailRecycler)
} else {

View file

@ -128,7 +128,7 @@ class ArtistDetailFragment : DetailFragment(), DetailAdapter.Listener {
private fun updateSong(song: Song?) {
val binding = requireBinding()
if (playbackModel.playbackMode.value == PlaybackMode.IN_ARTIST &&
if (playbackModel.parent.value is Artist &&
playbackModel.parent.value?.id == detailModel.currentArtist.value?.id) {
detailAdapter.highlightSong(song, binding.detailRecycler)
} else {

View file

@ -116,7 +116,7 @@ class GenreDetailFragment : DetailFragment(), DetailAdapter.Listener {
private fun updateSong(song: Song?) {
val binding = requireBinding()
if (playbackModel.playbackMode.value == PlaybackMode.IN_GENRE &&
if (playbackModel.parent.value is Genre &&
playbackModel.parent.value?.id == unlikelyToBeNull(detailModel.currentGenre.value).id) {
detailAdapter.highlightSong(song, binding.detailRecycler)
} else {

View file

@ -318,7 +318,6 @@ class PlaybackViewModel : ViewModel(), PlaybackStateManager.Callback {
onPositionUpdate(playbackManager.position)
onParentUpdate(playbackManager.parent)
onQueueUpdate(playbackManager.queue, playbackManager.index)
onModeUpdate(playbackManager.playbackMode)
onPlayingUpdate(playbackManager.isPlaying)
onShuffleUpdate(playbackManager.isShuffling)
onLoopUpdate(playbackManager.loopMode)
@ -346,10 +345,6 @@ class PlaybackViewModel : ViewModel(), PlaybackStateManager.Callback {
mNextUp.value = queue.slice(index.inc() until queue.size)
}
override fun onModeUpdate(mode: PlaybackMode) {
mMode.value = mode
}
override fun onPlayingUpdate(isPlaying: Boolean) {
mIsPlaying.value = isPlaying
}

View file

@ -66,11 +66,6 @@ class PlaybackStateManager private constructor() {
// Queue
private var mQueue = mutableListOf<Song>()
private var mIndex = 0
private var mPlaybackMode = PlaybackMode.ALL_SONGS
set(value) {
field = value
callbacks.forEach { it.onModeUpdate(value) }
}
// Status
private var mIsPlaying = false
@ -108,9 +103,6 @@ class PlaybackStateManager private constructor() {
/** The current position in the queue */
val index: Int
get() = mIndex
/** The current [PlaybackMode] */
val playbackMode: PlaybackMode
get() = mPlaybackMode
/** Whether playback is paused or not */
val isPlaying: Boolean
get() = mIsPlaying
@ -173,8 +165,6 @@ class PlaybackStateManager private constructor() {
}
}
mPlaybackMode = mode
updatePlayback(song)
// Keep shuffle on, if enabled
setShuffling(settingsManager.keepShuffle && mIsShuffling, keepSong = true)
@ -193,15 +183,12 @@ class PlaybackStateManager private constructor() {
when (parent) {
is Album -> {
mQueue = parent.songs.toMutableList()
mPlaybackMode = PlaybackMode.IN_ALBUM
}
is Artist -> {
mQueue = parent.songs.toMutableList()
mPlaybackMode = PlaybackMode.IN_ARTIST
}
is Genre -> {
mQueue = parent.songs.toMutableList()
mPlaybackMode = PlaybackMode.IN_GENRE
}
}
@ -214,7 +201,6 @@ class PlaybackStateManager private constructor() {
logD("RETARD. ${musicStore.library}")
val library = musicStore.library ?: return
mPlaybackMode = PlaybackMode.ALL_SONGS
mQueue = library.songs.toMutableList()
mParent = null
@ -375,15 +361,12 @@ class PlaybackStateManager private constructor() {
val lastSong = mSong
mQueue =
when (mPlaybackMode) {
PlaybackMode.ALL_SONGS ->
settingsManager.libSongSort.songs(library.songs).toMutableList()
PlaybackMode.IN_ALBUM ->
settingsManager.detailAlbumSort.album(mParent as Album).toMutableList()
PlaybackMode.IN_ARTIST ->
when (parent) {
null -> settingsManager.libSongSort.songs(library.songs).toMutableList()
is Album -> settingsManager.detailAlbumSort.album(mParent as Album).toMutableList()
is Artist ->
settingsManager.detailArtistSort.artist(mParent as Artist).toMutableList()
PlaybackMode.IN_GENRE ->
settingsManager.detailGenreSort.genre(mParent as Genre).toMutableList()
is Genre -> settingsManager.detailGenreSort.genre(mParent as Genre).toMutableList()
}
if (keepSong) {
@ -469,16 +452,23 @@ class PlaybackStateManager private constructor() {
// Pack the entire state and save it to the database.
withContext(Dispatchers.IO) {
val start = System.currentTimeMillis()
val database = PlaybackStateDatabase.getInstance(context)
val playbackMode =
when (parent) {
is Album -> PlaybackMode.IN_ALBUM
is Artist -> PlaybackMode.IN_ARTIST
is Genre -> PlaybackMode.IN_GENRE
null -> PlaybackMode.ALL_SONGS
}
database.writeState(
PlaybackStateDatabase.SavedState(
mSong,
mPosition,
mParent,
mIndex,
mPlaybackMode,
playbackMode,
mIsShuffling,
mLoopMode,
))
@ -513,8 +503,9 @@ class PlaybackStateManager private constructor() {
if (playbackState != null) {
unpackFromPlaybackState(playbackState)
unpackQueue(queue)
doParentSanityCheck()
mQueue = queue
pushQueueUpdate()
doParentSanityCheck(playbackState.playbackMode)
doIndexSanityCheck()
}
@ -528,7 +519,6 @@ class PlaybackStateManager private constructor() {
// Turn the simplified information from PlaybackState into usable data.
// Do queue setup first
mPlaybackMode = playbackState.playbackMode
mParent = playbackState.parent
mIndex = playbackState.queueIndex
@ -540,23 +530,18 @@ class PlaybackStateManager private constructor() {
seekTo(playbackState.position)
}
private fun unpackQueue(queue: MutableList<Song>) {
mQueue = queue
pushQueueUpdate()
}
/** Do a sanity check to make sure the parent was not lost in the restore process. */
private fun doParentSanityCheck() {
private fun doParentSanityCheck(playbackMode: PlaybackMode) {
// Check if the parent was lost while in the DB.
if (mSong != null && mParent == null && mPlaybackMode != PlaybackMode.ALL_SONGS) {
if (mSong != null && mParent == null && playbackMode != PlaybackMode.ALL_SONGS) {
logD("Parent lost, attempting restore")
mParent =
when (mPlaybackMode) {
when (playbackMode) {
PlaybackMode.ALL_SONGS -> null
PlaybackMode.IN_ALBUM -> mQueue.firstOrNull()?.album
PlaybackMode.IN_ARTIST -> mQueue.firstOrNull()?.album?.artist
PlaybackMode.IN_GENRE -> mQueue.firstOrNull()?.genre
PlaybackMode.ALL_SONGS -> null
}
}
}