From d8b63d93d8c386fbea60901e0beaf2f4edc7fc0d Mon Sep 17 00:00:00 2001 From: Siiiiinth <60766886+Siiiiinth@users.noreply.github.com> Date: Sun, 25 Jan 2026 10:21:57 +0100 Subject: [PATCH] insertItemsIntoPlayQueueAt func --- backend/playbackengine.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/backend/playbackengine.go b/backend/playbackengine.go index 02561e9..21a4d3e 100644 --- a/backend/playbackengine.go +++ b/backend/playbackengine.go @@ -62,8 +62,8 @@ type playbackEngine struct { latestTrackPosition float64 // cleared by checkScrobble callbacksDisabled bool - playQueue []mediaprovider.MediaItem - playQueueShuffle []mediaprovider.MediaItem + playQueue []mediaprovider.MediaItem + shuffledPlayQueue []mediaprovider.MediaItem nowPlayingIdx int isRadio bool @@ -219,23 +219,23 @@ func (p *playbackEngine) SetPlayer(pl player.BasePlayer) error { return nil } -// Interface functions for interacting with the play queue +// ======================= START PLAY QUEUE FUNCS =========================== func (p *playbackEngine) getPlayQueueLength() int { if p.shuffle { - return len(p.playQueueShuffle) + return len(p.shuffledPlayQueue) } return len(p.playQueue) } func (p *playbackEngine) clearPlayQueue() { p.playQueue = nil - p.playQueueShuffle = nil + p.shuffledPlayQueue = nil } func (p *playbackEngine) setPlayQueue(items []mediaprovider.MediaItem) { if p.shuffle { - p.playQueueShuffle = items + p.shuffledPlayQueue = items } else { p.playQueue = items } @@ -245,6 +245,10 @@ func (p *playbackEngine) getPlayQueueItemAt(idx int) mediaprovider.MediaItem { 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 { return p.playQueue } @@ -253,6 +257,8 @@ func (p *playbackEngine) GetPlayQueueDeepCopy() []mediaprovider.MediaItem { return deepCopyMediaItemSlice(p.playQueue) } +// ======================== END PLAY QUEUE FUNCS ============================= + func (p *playbackEngine) PlayTrackAt(idx int) error { return p.playTrackAt(idx, 0) } @@ -434,8 +440,8 @@ func (p *playbackEngine) doLoaditems(items []mediaprovider.MediaItem, insertQueu if insertQueueMode == InsertNext { insertIdx = p.nowPlayingIdx + 1 } - p.setPlayQueue(append(p.playQueue[:insertIdx], append(items, p.playQueue[insertIdx:]...)...)) + p.insertItemsIntoPlayQueueAt(items, insertIdx) p.invokeNoArgCallbacks(p.onQueueChange) return nil } @@ -457,7 +463,7 @@ func (p *playbackEngine) LoadRadioStation(radio *mediaprovider.RadioStation, ins firstHalf := p.playQueue[:insertIdx] copy(new, firstHalf) 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.invokeNoArgCallbacks(p.onQueueChange)