From cec32f68e3930295c172524aa385fe8818575fa9 Mon Sep 17 00:00:00 2001 From: Siiiiinth <60766886+Siiiiinth@users.noreply.github.com> Date: Sun, 1 Feb 2026 14:21:57 +0100 Subject: [PATCH] save shuffle state in config --- backend/config.go | 2 ++ backend/playbackengine.go | 4 ---- backend/playbackmanager.go | 6 ++++-- ui/bottompanel.go | 2 +- ui/widgets/auxcontrols.go | 3 ++- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/backend/config.go b/backend/config.go index 6883f21..d5bd475 100644 --- a/backend/config.go +++ b/backend/config.go @@ -123,6 +123,7 @@ type NowPlayingPageConfig struct { type PlaybackConfig struct { Autoplay bool + Shuffle bool RepeatMode string SkipOneStarWhenShuffling bool SkipKeywordWhenShuffling string @@ -263,6 +264,7 @@ func DefaultConfig(appVersionTag string) *Config { }, Playback: PlaybackConfig{ Autoplay: false, + Shuffle: false, RepeatMode: "None", UseWaveformSeekbar: false, }, diff --git a/backend/playbackengine.go b/backend/playbackengine.go index f71b069..1000cf1 100644 --- a/backend/playbackengine.go +++ b/backend/playbackengine.go @@ -358,10 +358,6 @@ func (p *playbackEngine) SetShuffle(shuffle bool) { p.invokeNoArgCallbacks(p.onQueueChange) } -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 0e47c37..63bef50 100644 --- a/backend/playbackmanager.go +++ b/backend/playbackmanager.go @@ -373,8 +373,8 @@ func (p *PlaybackManager) LoadAlbum(albumID string, insertQueueMode InsertQueueM return nil } -func (p *PlaybackManager) GetShuffle() bool { - return p.engine.GetShuffle() +func (p *PlaybackManager) IsShuffle() bool { + return p.cfg.Shuffle } // Loads the specified playlist into the play queue. @@ -644,6 +644,8 @@ func (p *PlaybackManager) SetAutoplay(autoplay bool) { } func (p *PlaybackManager) SetShuffle(shuffle bool) { + p.cfg.Shuffle = shuffle + fmt.Println("Setting shuffle in config") p.engine.SetShuffle(shuffle) } diff --git a/ui/bottompanel.go b/ui/bottompanel.go index c4afe87..779424e 100644 --- a/ui/bottompanel.go +++ b/ui/bottompanel.go @@ -102,7 +102,7 @@ func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr pm.SeekFraction(f) }) - bp.AuxControls = widgets.NewAuxControls(pm.Volume(), pm.GetLoopMode(), pm.IsAutoplay()) + bp.AuxControls = widgets.NewAuxControls(pm.Volume(), pm.GetLoopMode(), pm.IsAutoplay(), pm.IsShuffle()) pm.OnLoopModeChange(func(lm backend.LoopMode) { fyne.Do(func() { bp.AuxControls.SetLoopMode(lm) }) }) diff --git a/ui/widgets/auxcontrols.go b/ui/widgets/auxcontrols.go index b77b140..e63f4c9 100644 --- a/ui/widgets/auxcontrols.go +++ b/ui/widgets/auxcontrols.go @@ -34,7 +34,7 @@ type AuxControls struct { container *fyne.Container } -func NewAuxControls(initialVolume int, initialLoopMode backend.LoopMode, initialAutoplay bool) *AuxControls { +func NewAuxControls(initialVolume int, initialLoopMode backend.LoopMode, initialAutoplay bool, initialShuffle bool) *AuxControls { a := &AuxControls{ VolumeControl: NewVolumeControl(initialVolume), shuffle: NewIconButton(myTheme.ShuffleIcon, nil), @@ -44,6 +44,7 @@ func NewAuxControls(initialVolume int, initialLoopMode backend.LoopMode, initial showQueue: NewIconButton(myTheme.PlayQueueIcon, nil), } + a.shuffle.Highlighted = initialShuffle a.shuffle.IconSize = IconButtonSizeSmaller a.shuffle.SetToolTip(lang.L("Shuffle")) a.shuffle.OnTapped = func() {