diff --git a/backend/config.go b/backend/config.go index ae58b39..6026114 100644 --- a/backend/config.go +++ b/backend/config.go @@ -28,6 +28,7 @@ type AppConfig struct { EnableSystemTray bool CloseToSystemTray bool StartupPage string + SettingsTab string AllowMultiInstance bool // Experimental - may be removed in future @@ -124,6 +125,7 @@ func DefaultConfig(appVersionTag string) *Config { EnableSystemTray: true, CloseToSystemTray: false, StartupPage: "Albums", + SettingsTab: "General", AllowMultiInstance: false, }, AlbumPage: AlbumPageConfig{ diff --git a/ui/dialogs/settingsdialog.go b/ui/dialogs/settingsdialog.go index 562c200..0376eb7 100644 --- a/ui/dialogs/settingsdialog.go +++ b/ui/dialogs/settingsdialog.go @@ -63,9 +63,11 @@ func NewSettingsDialog( s.createEqualizerTab(equalizerBands), s.createExperimentalTab(window), ) + tabs.SelectIndex(s.getActiveTabNumFromConfig()) // workaround issue where inactivated tabs don't fully update when theme setting is changed tabs.OnSelected = func(ti *container.TabItem) { ti.Content.Refresh() + s.saveSelectedTab(tabs.SelectedIndex()) } s.promptText = widget.NewRichTextWithText("") s.content = container.NewVBox(tabs, widget.NewSeparator(), @@ -453,3 +455,31 @@ func (s *SettingsDialog) onAudioExclusiveSettingsChanged() { func (s *SettingsDialog) CreateRenderer() fyne.WidgetRenderer { return widget.NewSimpleRenderer(s.content) } + +func (s *SettingsDialog) saveSelectedTab(tabNum int) { + var tabName string + switch tabNum { + case 0: + tabName = "General" + case 1: + tabName = "Playback" + case 2: + tabName = "Equalizer" + case 3: + tabName = "Experimental" + } + s.config.Application.SettingsTab = tabName +} + +func (s *SettingsDialog) getActiveTabNumFromConfig() int { + switch s.config.Application.SettingsTab { + case "Playback": + return 1 + case "Equalizer": + return 2 + case "Experimental": + return 3 + default: + return 0 + } +}