insertItemsIntoPlayQueueAt func

This commit is contained in:
Siiiiinth
2026-02-15 09:28:38 -08:00
committed by Drew Weymouth
parent ba0fcfb9ab
commit d8b63d93d8
+14 -8
View File
@@ -62,8 +62,8 @@ type playbackEngine struct {
latestTrackPosition float64 // cleared by checkScrobble latestTrackPosition float64 // cleared by checkScrobble
callbacksDisabled bool callbacksDisabled bool
playQueue []mediaprovider.MediaItem playQueue []mediaprovider.MediaItem
playQueueShuffle []mediaprovider.MediaItem shuffledPlayQueue []mediaprovider.MediaItem
nowPlayingIdx int nowPlayingIdx int
isRadio bool isRadio bool
@@ -219,23 +219,23 @@ func (p *playbackEngine) SetPlayer(pl player.BasePlayer) error {
return nil return nil
} }
// Interface functions for interacting with the play queue // ======================= START PLAY QUEUE FUNCS ===========================
func (p *playbackEngine) getPlayQueueLength() int { func (p *playbackEngine) getPlayQueueLength() int {
if p.shuffle { if p.shuffle {
return len(p.playQueueShuffle) return len(p.shuffledPlayQueue)
} }
return len(p.playQueue) return len(p.playQueue)
} }
func (p *playbackEngine) clearPlayQueue() { func (p *playbackEngine) clearPlayQueue() {
p.playQueue = nil p.playQueue = nil
p.playQueueShuffle = nil p.shuffledPlayQueue = nil
} }
func (p *playbackEngine) setPlayQueue(items []mediaprovider.MediaItem) { func (p *playbackEngine) setPlayQueue(items []mediaprovider.MediaItem) {
if p.shuffle { if p.shuffle {
p.playQueueShuffle = items p.shuffledPlayQueue = items
} else { } else {
p.playQueue = items p.playQueue = items
} }
@@ -245,6 +245,10 @@ func (p *playbackEngine) getPlayQueueItemAt(idx int) mediaprovider.MediaItem {
return p.playQueue[idx] return p.playQueue[idx]
} }
func (p *playbackEngine) insertItemsIntoPlayQueueAt(items []mediaprovider.MediaItem, idx int) {
p.setPlayQueue(append(p.playQueue[:idx], append(items, p.playQueue[idx:]...)...))
}
func (p *playbackEngine) getPlayQueue() []mediaprovider.MediaItem { func (p *playbackEngine) getPlayQueue() []mediaprovider.MediaItem {
return p.playQueue return p.playQueue
} }
@@ -253,6 +257,8 @@ func (p *playbackEngine) GetPlayQueueDeepCopy() []mediaprovider.MediaItem {
return deepCopyMediaItemSlice(p.playQueue) return deepCopyMediaItemSlice(p.playQueue)
} }
// ======================== END PLAY QUEUE FUNCS =============================
func (p *playbackEngine) PlayTrackAt(idx int) error { func (p *playbackEngine) PlayTrackAt(idx int) error {
return p.playTrackAt(idx, 0) return p.playTrackAt(idx, 0)
} }
@@ -434,8 +440,8 @@ func (p *playbackEngine) doLoaditems(items []mediaprovider.MediaItem, insertQueu
if insertQueueMode == InsertNext { if insertQueueMode == InsertNext {
insertIdx = p.nowPlayingIdx + 1 insertIdx = p.nowPlayingIdx + 1
} }
p.setPlayQueue(append(p.playQueue[:insertIdx], append(items, p.playQueue[insertIdx:]...)...))
p.insertItemsIntoPlayQueueAt(items, insertIdx)
p.invokeNoArgCallbacks(p.onQueueChange) p.invokeNoArgCallbacks(p.onQueueChange)
return nil return nil
} }
@@ -457,7 +463,7 @@ func (p *playbackEngine) LoadRadioStation(radio *mediaprovider.RadioStation, ins
firstHalf := p.playQueue[:insertIdx] firstHalf := p.playQueue[:insertIdx]
copy(new, firstHalf) copy(new, firstHalf)
new[len(firstHalf)] = radio new[len(firstHalf)] = radio
copy(new[len(firstHalf)+1:], p.playQueue[insertIdx:]) copy(new[len(firstHalf)+1:], p.playQueue[insertIdx:]) //TODO_SHUFFLE: Test shuffle with radio stations
p.setPlayQueue(new) p.setPlayQueue(new)
p.invokeNoArgCallbacks(p.onQueueChange) p.invokeNoArgCallbacks(p.onQueueChange)