remember last window size
This commit is contained in:
+13
-2
@@ -15,12 +15,23 @@ type ServerConfig struct {
|
|||||||
Default bool
|
Default bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AppConfig struct {
|
||||||
|
WindowWidth int
|
||||||
|
WindowHeight int
|
||||||
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Servers []*ServerConfig
|
Application AppConfig
|
||||||
|
Servers []*ServerConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
func DefaultConfig() *Config {
|
||||||
return &Config{}
|
return &Config{
|
||||||
|
Application: AppConfig{
|
||||||
|
WindowWidth: 1000,
|
||||||
|
WindowHeight: 800,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadConfigFile(filepath string) (*Config, error) {
|
func ReadConfigFile(filepath string) (*Config, error) {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"supersonic/ui"
|
"supersonic/ui"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"fyne.io/fyne/v2"
|
||||||
"fyne.io/fyne/v2/app"
|
"fyne.io/fyne/v2/app"
|
||||||
"github.com/20after4/configdir"
|
"github.com/20after4/configdir"
|
||||||
"github.com/zalando/go-keyring"
|
"github.com/zalando/go-keyring"
|
||||||
@@ -29,7 +30,15 @@ func main() {
|
|||||||
|
|
||||||
fyneApp := app.New()
|
fyneApp := app.New()
|
||||||
fyneApp.Settings().SetTheme(&ui.MyTheme{})
|
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
|
// TODO: There is some race condition with running this initial startup
|
||||||
// task immediately before showing and running the window/Fyne main loop where
|
// task immediately before showing and running the window/Fyne main loop where
|
||||||
@@ -55,6 +64,11 @@ func main() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
mainWindow.Show()
|
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()
|
fyneApp.Run()
|
||||||
myApp.Config.WriteConfigFile(configPath())
|
myApp.Config.WriteConfigFile(configPath())
|
||||||
myApp.Shutdown()
|
myApp.Shutdown()
|
||||||
|
|||||||
+2
-2
@@ -35,7 +35,7 @@ var (
|
|||||||
HomePage = browsing.AlbumsRoute(backend.AlbumSortRecentlyAdded)
|
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{
|
m := MainWindow{
|
||||||
App: app,
|
App: app,
|
||||||
Window: fyneApp.NewWindow(appName),
|
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.BottomPanel.ImageManager = app.ImageManager
|
||||||
m.container = container.NewBorder(nil, m.BottomPanel, nil, nil, m.BrowsingPane)
|
m.container = container.NewBorder(nil, m.BottomPanel, nil, nil, m.BrowsingPane)
|
||||||
m.Window.SetContent(m.container)
|
m.Window.SetContent(m.container)
|
||||||
m.Window.Resize(fyne.NewSize(1000, 800))
|
m.Window.Resize(size)
|
||||||
app.PlaybackManager.OnSongChange(func(song *subsonic.Child) {
|
app.PlaybackManager.OnSongChange(func(song *subsonic.Child) {
|
||||||
if song == nil {
|
if song == nil {
|
||||||
m.Window.SetTitle(appName)
|
m.Window.SetTitle(appName)
|
||||||
|
|||||||
Reference in New Issue
Block a user