remember volume setting across restarts

This commit is contained in:
Drew Weymouth
2023-02-19 14:19:31 -08:00
parent 631ef947e5
commit a83e21d7ea
5 changed files with 27 additions and 7 deletions
+13
View File
@@ -46,6 +46,8 @@ func StartupApp() (*App, error) {
if err := a.initMPV(); err != nil { if err := a.initMPV(); err != nil {
return nil, err return nil, err
} }
a.Config.LocalPlayback.Volume = clamp(a.Config.LocalPlayback.Volume, 0, 100)
a.Player.SetVolume(a.Config.LocalPlayback.Volume)
a.ServerManager = NewServerManager() a.ServerManager = NewServerManager()
a.PlaybackManager = NewPlaybackManager(a.bgrndCtx, a.ServerManager, a.Player) a.PlaybackManager = NewPlaybackManager(a.bgrndCtx, a.ServerManager, a.Player)
@@ -91,10 +93,21 @@ func (a *App) LoginToDefaultServer() error {
func (a *App) Shutdown() { func (a *App) Shutdown() {
a.Player.Stop() a.Player.Stop()
a.Config.LocalPlayback.Volume = a.Player.GetVolume()
a.cancel() a.cancel()
a.Player.Destroy() a.Player.Destroy()
a.Config.WriteConfigFile(configPath())
} }
func configPath() string { func configPath() string {
return path.Join(configdir.LocalConfig(AppName), configFile) return path.Join(configdir.LocalConfig(AppName), configFile)
} }
func clamp(i, min, max int) int {
if i < min {
i = min
} else if i > max {
i = max
}
return i
}
+8
View File
@@ -32,12 +32,17 @@ type PlaylistPageConfig struct {
TracklistColumns []string TracklistColumns []string
} }
type LocalPlaybackConfig struct {
Volume int
}
type Config struct { type Config struct {
Application AppConfig Application AppConfig
Servers []*ServerConfig Servers []*ServerConfig
AlbumPage AlbumPageConfig AlbumPage AlbumPageConfig
NowPlayingPage NowPlayingPageConfig NowPlayingPage NowPlayingPageConfig
PlaylistPage PlaylistPageConfig PlaylistPage PlaylistPageConfig
LocalPlayback LocalPlaybackConfig
} }
func DefaultConfig() *Config { func DefaultConfig() *Config {
@@ -55,6 +60,9 @@ func DefaultConfig() *Config {
PlaylistPage: PlaylistPageConfig{ PlaylistPage: PlaylistPageConfig{
TracklistColumns: []string{"Artist", "Album", "Time", "Plays"}, TracklistColumns: []string{"Artist", "Album", "Time", "Plays"},
}, },
LocalPlayback: LocalPlaybackConfig{
Volume: 100,
},
} }
} }
-1
View File
@@ -63,6 +63,5 @@ func main() {
fyneApp.Run() fyneApp.Run()
// shutdown tasks // shutdown tasks
myApp.Config.WriteConfigFile(configPath())
myApp.Shutdown() myApp.Shutdown()
} }
+1 -1
View File
@@ -64,7 +64,7 @@ func NewBottomPanel(p *player.Player, nav func(browsing.Route)) *BottomPanel {
p.Seek(fmt.Sprintf("%d", int(f*100)), player.SeekAbsolutePercent) p.Seek(fmt.Sprintf("%d", int(f*100)), player.SeekAbsolutePercent)
}) })
bp.AuxControls = widgets.NewAuxControls() bp.AuxControls = widgets.NewAuxControls(p.GetVolume())
bp.AuxControls.VolumeControl.OnVolumeChanged = func(v int) { bp.AuxControls.VolumeControl.OnVolumeChanged = func(v int) {
_ = p.SetVolume(v) _ = p.SetVolume(v)
} }
+5 -5
View File
@@ -17,9 +17,9 @@ type AuxControls struct {
container *fyne.Container container *fyne.Container
} }
func NewAuxControls() *AuxControls { func NewAuxControls(initialVolume int) *AuxControls {
a := &AuxControls{ a := &AuxControls{
VolumeControl: NewVolumeControl(), VolumeControl: NewVolumeControl(initialVolume),
} }
a.container = container.NewHBox(layout.NewSpacer(), a.VolumeControl) a.container = container.NewHBox(layout.NewSpacer(), a.VolumeControl)
return a return a
@@ -97,16 +97,16 @@ type VolumeControl struct {
container *fyne.Container container *fyne.Container
} }
func NewVolumeControl() *VolumeControl { func NewVolumeControl(initialVol int) *VolumeControl {
v := &VolumeControl{} v := &VolumeControl{}
v.ExtendBaseWidget(v) v.ExtendBaseWidget(v)
v.icon = newTappableIcon(theme.VolumeUpIcon()) v.icon = newTappableIcon(theme.VolumeUpIcon())
v.icon.OnTapped = v.toggleMute v.icon.OnTapped = v.toggleMute
v.slider = NewVolumeSlider(100) v.slider = NewVolumeSlider(100)
v.lastVol = 100 v.lastVol = initialVol
v.slider.Step = 1 v.slider.Step = 1
v.slider.Orientation = widget.Horizontal v.slider.Orientation = widget.Horizontal
v.slider.Value = 100 v.slider.Value = float64(v.lastVol)
v.slider.OnChanged = v.onChanged v.slider.OnChanged = v.onChanged
v.container = container.NewHBox(container.NewCenter(v.icon), v.slider) v.container = container.NewHBox(container.NewCenter(v.icon), v.slider)
return v return v