Only show music entries in now screensaver now playing
This commit is contained in:
committed by
Niels van Velzen
parent
d04d3b9388
commit
1a80b8e264
@@ -52,9 +52,10 @@ class DreamViewModel(
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
private val _mediaContent = playbackManager.queue.entry
|
||||
.map { entry ->
|
||||
entry?.baseItem?.let { baseItem ->
|
||||
DreamContent.NowPlaying(entry, baseItem)
|
||||
}
|
||||
entry
|
||||
?.takeIf { it.visibleInScreensaver }
|
||||
?.baseItem
|
||||
?.let { baseItem -> DreamContent.NowPlaying(entry, baseItem) }
|
||||
}
|
||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), null)
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.jellyfin.androidtv.integration.dream
|
||||
|
||||
import org.jellyfin.playback.core.element.ElementKey
|
||||
import org.jellyfin.playback.core.element.requiredElement
|
||||
import org.jellyfin.playback.core.queue.QueueEntry
|
||||
|
||||
private val visibleInScreensaverKey = ElementKey<Boolean>("visibleInScreensaver")
|
||||
|
||||
/**
|
||||
* Get or set whether this [QueueEntry] is shown in the screensaver.
|
||||
*/
|
||||
var QueueEntry.visibleInScreensaver by requiredElement(visibleInScreensaverKey) { false }
|
||||
@@ -10,6 +10,7 @@ import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.jellyfin.androidtv.integration.dream.visibleInScreensaver
|
||||
import org.jellyfin.androidtv.ui.playback.AudioEventListener
|
||||
import org.jellyfin.androidtv.ui.playback.MediaManager
|
||||
import org.jellyfin.androidtv.ui.playback.PlaybackController
|
||||
@@ -141,7 +142,7 @@ class RewriteMediaManager(
|
||||
override fun addToAudioQueue(items: List<BaseItemDto>) {
|
||||
if (items.isEmpty()) return
|
||||
|
||||
playbackManager.queue.addSupplier(BaseItemQueueSupplier(api, items))
|
||||
playbackManager.queue.addSupplier(BaseItemQueueSupplier(api, items, true))
|
||||
playbackManager.state.setPlaybackOrder(if (isShuffleMode) PlaybackOrder.SHUFFLE else PlaybackOrder.DEFAULT)
|
||||
|
||||
if (playbackManager.state.playState.value != PlayState.PLAYING) playbackManager.state.play()
|
||||
@@ -161,7 +162,7 @@ class RewriteMediaManager(
|
||||
playbackManager.queue.clear()
|
||||
|
||||
if (filteredItems.isNotEmpty()) {
|
||||
playbackManager.queue.addSupplier(BaseItemQueueSupplier(api, filteredItems))
|
||||
playbackManager.queue.addSupplier(BaseItemQueueSupplier(api, filteredItems, true))
|
||||
playbackManager.state.play()
|
||||
}
|
||||
}
|
||||
@@ -225,13 +226,16 @@ class RewriteMediaManager(
|
||||
class BaseItemQueueSupplier(
|
||||
private val api: ApiClient,
|
||||
val items: List<BaseItemDto>,
|
||||
val visibleInScreensaver: Boolean,
|
||||
) : QueueSupplier {
|
||||
override val size: Int
|
||||
get() = items.size
|
||||
|
||||
override suspend fun getItem(index: Int): QueueEntry? {
|
||||
val item = items.getOrNull(index) ?: return null
|
||||
return createBaseItemQueueEntry(api, item)
|
||||
return createBaseItemQueueEntry(api, item).also {
|
||||
it.visibleInScreensaver = visibleInScreensaver
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class VideoPlayerFragment : Fragment() {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
// Create a queue from the items added to the legacy video queue
|
||||
val queueSupplier = RewriteMediaManager.BaseItemQueueSupplier(api, videoQueueManager.getCurrentVideoQueue())
|
||||
val queueSupplier = RewriteMediaManager.BaseItemQueueSupplier(api, videoQueueManager.getCurrentVideoQueue(), false)
|
||||
Timber.i("Created a queue with ${queueSupplier.items.size} items")
|
||||
playbackManager.queue.clear()
|
||||
playbackManager.queue.addSupplier(queueSupplier)
|
||||
|
||||
Reference in New Issue
Block a user