move current track to front on shuffle
This commit is contained in:
@@ -229,6 +229,13 @@ func (p *playbackEngine) getPlayQueue() []mediaprovider.MediaItem {
|
|||||||
return p.playQueue
|
return p.playQueue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *playbackEngine) getActivePlayQueue() []mediaprovider.MediaItem {
|
||||||
|
if p.shuffle {
|
||||||
|
return p.shuffledPlayQueue
|
||||||
|
}
|
||||||
|
return p.playQueue
|
||||||
|
}
|
||||||
|
|
||||||
func (p *playbackEngine) getPlayQueueLength() int {
|
func (p *playbackEngine) getPlayQueueLength() int {
|
||||||
return len(p.getPlayQueue())
|
return len(p.getPlayQueue())
|
||||||
}
|
}
|
||||||
@@ -259,6 +266,10 @@ func (p *playbackEngine) GetPlayQueueDeepCopy() []mediaprovider.MediaItem {
|
|||||||
return deepCopyMediaItemSlice(p.getPlayQueue())
|
return deepCopyMediaItemSlice(p.getPlayQueue())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *playbackEngine) GetActivePlayQueueDeepCopy() []mediaprovider.MediaItem {
|
||||||
|
return deepCopyMediaItemSlice(p.getActivePlayQueue())
|
||||||
|
}
|
||||||
|
|
||||||
// ======================== END PLAY QUEUE FUNCS =============================
|
// ======================== END PLAY QUEUE FUNCS =============================
|
||||||
|
|
||||||
func (p *playbackEngine) PlayTrackAt(idx int) error {
|
func (p *playbackEngine) PlayTrackAt(idx int) error {
|
||||||
@@ -332,9 +343,8 @@ func (p *playbackEngine) SetShuffle(shuffle bool) {
|
|||||||
rand.Shuffle(len(shuffledQueue), func(i, j int) {
|
rand.Shuffle(len(shuffledQueue), func(i, j int) {
|
||||||
shuffledQueue[i], shuffledQueue[j] = shuffledQueue[j], shuffledQueue[i]
|
shuffledQueue[i], shuffledQueue[j] = shuffledQueue[j], shuffledQueue[i]
|
||||||
})
|
})
|
||||||
// TODO_SHUFFLE: move now playing track to beginning of queue
|
p.shuffledPlayQueue = sharedutil.ReorderItems(shuffledQueue, []int{p.GetNewNowPlayingIdx(shuffledQueue)}, 0)
|
||||||
newNowPlayingIdx = p.GetNewNowPlayingIdx(shuffledQueue)
|
newNowPlayingIdx = 0
|
||||||
p.shuffledPlayQueue = shuffledQueue
|
|
||||||
} else {
|
} else {
|
||||||
newNowPlayingIdx = p.GetNewNowPlayingIdx(p.playQueue)
|
newNowPlayingIdx = p.GetNewNowPlayingIdx(p.playQueue)
|
||||||
}
|
}
|
||||||
@@ -554,8 +564,11 @@ func (p *playbackEngine) UpdatePlayQueue(items []mediaprovider.MediaItem) error
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if p.shuffle {
|
||||||
p.setPlayQueue(newQueue)
|
p.setShuffledPlayQueue(newQueue)
|
||||||
|
} else {
|
||||||
|
p.setPlayQueue(newQueue)
|
||||||
|
}
|
||||||
if p.nowPlayingIdx >= 0 && newNowPlayingIdx == -1 {
|
if p.nowPlayingIdx >= 0 && newNowPlayingIdx == -1 {
|
||||||
return p.Stop()
|
return p.Stop()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user