From 71a5df9d513d8bf5f5777c043e6f9a5a38cff38d Mon Sep 17 00:00:00 2001 From: Siiiiinth <60766886+Siiiiinth@users.noreply.github.com> Date: Sat, 17 Jan 2026 19:03:33 +0100 Subject: [PATCH] added shuffle button to UI + base data flow --- backend/playbackengine.go | 9 +++++++++ backend/playbackmanager.go | 8 ++++++++ ui/bottompanel.go | 3 +++ ui/widgets/auxcontrols.go | 8 ++++---- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/backend/playbackengine.go b/backend/playbackengine.go index b10450b..2105248 100644 --- a/backend/playbackengine.go +++ b/backend/playbackengine.go @@ -266,6 +266,15 @@ func (p *playbackEngine) GetLoopMode() LoopMode { return p.loopMode } +func (p *playbackEngine) SetShuffle(shuffle bool) { + p.shuffle = shuffle + //TODO: Implement functionality +} + +func (p *playbackEngine) GetShuffle() bool { + return p.shuffle +} + func (p *playbackEngine) PlaybackStatus() PlaybackStatus { stat := p.pendingPlayerChangeStatus if !p.pendingPlayerChange { diff --git a/backend/playbackmanager.go b/backend/playbackmanager.go index 2ab4345..3ded22e 100644 --- a/backend/playbackmanager.go +++ b/backend/playbackmanager.go @@ -354,6 +354,10 @@ func (p *PlaybackManager) LoadAlbum(albumID string, insertQueueMode InsertQueueM return nil } +func (p *PlaybackManager) GetShuffle() bool { + return p.engine.GetShuffle() +} + // Loads the specified playlist into the play queue. func (p *PlaybackManager) LoadPlaylist(playlistID string, insertQueueMode InsertQueueMode, shuffle bool) error { playlist, err := p.engine.sm.Server.GetPlaylist(playlistID) @@ -620,6 +624,10 @@ func (p *PlaybackManager) SetAutoplay(autoplay bool) { } } +func (p *PlaybackManager) SetShuffle(shuffle bool) { + p.engine.SetShuffle(shuffle) +} + func (p *PlaybackManager) Volume() int { return p.engine.CurrentPlayer().GetVolume() } diff --git a/ui/bottompanel.go b/ui/bottompanel.go index 01b413c..7f8a3ab 100644 --- a/ui/bottompanel.go +++ b/ui/bottompanel.go @@ -121,6 +121,9 @@ func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr bp.AuxControls.OnChangeAutoplay = func(autoplay bool) { pm.SetAutoplay(autoplay) } + bp.AuxControls.OnChangeShuffle = func(shuffle bool) { + pm.SetShuffle(shuffle) + } bp.AuxControls.OnShowPlayQueue(contr.ShowPopUpPlayQueue) bp.AuxControls.OnShowCastMenu(contr.ShowCastMenu) diff --git a/ui/widgets/auxcontrols.go b/ui/widgets/auxcontrols.go index 3da8839..b77b140 100644 --- a/ui/widgets/auxcontrols.go +++ b/ui/widgets/auxcontrols.go @@ -111,11 +111,11 @@ func (a *AuxControls) SetLoopMode(mode backend.LoopMode) { } func (a *AuxControls) SetShuffle(isShuffle bool) { - if isShuffle { - a.shuffle.Highlighted = true - } else { - a.shuffle.Highlighted = false + if isShuffle == a.shuffle.Highlighted { + return } + a.shuffle.Highlighted = isShuffle + a.shuffle.Refresh() } func (a *AuxControls) DisableCastButton() {