From 6a931d62f48e49934729416a49d3f0f70dd11fd2 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Sun, 22 Jan 2023 16:24:53 -0800 Subject: [PATCH] remember last window size --- backend/config.go | 15 +++++++++++++-- main.go | 16 +++++++++++++++- ui/mainwindow.go | 4 ++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/backend/config.go b/backend/config.go index 854276e..1a8963a 100644 --- a/backend/config.go +++ b/backend/config.go @@ -15,12 +15,23 @@ type ServerConfig struct { Default bool } +type AppConfig struct { + WindowWidth int + WindowHeight int +} + type Config struct { - Servers []*ServerConfig + Application AppConfig + Servers []*ServerConfig } func DefaultConfig() *Config { - return &Config{} + return &Config{ + Application: AppConfig{ + WindowWidth: 1000, + WindowHeight: 800, + }, + } } func ReadConfigFile(filepath string) (*Config, error) { diff --git a/main.go b/main.go index b7f5f2e..5ec929c 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "supersonic/ui" "time" + "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "github.com/20after4/configdir" "github.com/zalando/go-keyring" @@ -29,7 +30,15 @@ func main() { fyneApp := app.New() fyneApp.Settings().SetTheme(&ui.MyTheme{}) - mainWindow := ui.NewMainWindow(fyneApp, appname, myApp) + w := float32(myApp.Config.Application.WindowWidth) + if w <= 1 { + w = 1000 + } + h := float32(myApp.Config.Application.WindowHeight) + if h <= 1 { + h = 800 + } + mainWindow := ui.NewMainWindow(fyneApp, appname, myApp, fyne.NewSize(w, h)) // TODO: There is some race condition with running this initial startup // task immediately before showing and running the window/Fyne main loop where @@ -55,6 +64,11 @@ func main() { }() mainWindow.Show() + mainWindow.Window.SetCloseIntercept(func() { + myApp.Config.Application.WindowHeight = int(mainWindow.Canvas().Size().Height) + myApp.Config.Application.WindowWidth = int(mainWindow.Canvas().Size().Width) + mainWindow.Window.Close() + }) fyneApp.Run() myApp.Config.WriteConfigFile(configPath()) myApp.Shutdown() diff --git a/ui/mainwindow.go b/ui/mainwindow.go index 09d9f28..e47d20a 100644 --- a/ui/mainwindow.go +++ b/ui/mainwindow.go @@ -35,7 +35,7 @@ var ( HomePage = browsing.AlbumsRoute(backend.AlbumSortRecentlyAdded) ) -func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindow { +func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App, size fyne.Size) MainWindow { m := MainWindow{ App: app, Window: fyneApp.NewWindow(appName), @@ -48,7 +48,7 @@ func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindo m.BottomPanel.ImageManager = app.ImageManager m.container = container.NewBorder(nil, m.BottomPanel, nil, nil, m.BrowsingPane) m.Window.SetContent(m.container) - m.Window.Resize(fyne.NewSize(1000, 800)) + m.Window.Resize(size) app.PlaybackManager.OnSongChange(func(song *subsonic.Child) { if song == nil { m.Window.SetTitle(appName)