Fix settings window lifecycle
This commit is contained in:
@@ -31,6 +31,7 @@ type App struct {
|
|||||||
previousAction *walk.Action
|
previousAction *walk.Action
|
||||||
nextAction *walk.Action
|
nextAction *walk.Action
|
||||||
settingsAction *walk.Action
|
settingsAction *walk.Action
|
||||||
|
settingsDialog *walk.Dialog
|
||||||
timerMu sync.Mutex
|
timerMu sync.Mutex
|
||||||
timer *time.Timer
|
timer *time.Timer
|
||||||
busy atomic.Bool
|
busy atomic.Bool
|
||||||
@@ -194,8 +195,6 @@ func (a *App) refresh(automatic bool) {
|
|||||||
a.setBusy(false)
|
a.setBusy(false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.notifyError("刷新壁纸失败:" + err.Error())
|
a.notifyError("刷新壁纸失败:" + err.Error())
|
||||||
} else {
|
|
||||||
_ = a.notifyIcon.ShowInfo(appName, "壁纸已刷新。")
|
|
||||||
}
|
}
|
||||||
if automatic {
|
if automatic {
|
||||||
a.scheduleTimer()
|
a.scheduleTimer()
|
||||||
|
|||||||
+22
-2
@@ -25,6 +25,12 @@ var styleOptions = []struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) showSettings() {
|
func (a *App) showSettings() {
|
||||||
|
if a.settingsDialog != nil {
|
||||||
|
a.settingsDialog.Show()
|
||||||
|
_ = a.settingsDialog.Activate()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var dlg *walk.Dialog
|
var dlg *walk.Dialog
|
||||||
var apiEdit, intervalEdit, cacheEdit *walk.LineEdit
|
var apiEdit, intervalEdit, cacheEdit *walk.LineEdit
|
||||||
var autoCheck, startupCheck *walk.CheckBox
|
var autoCheck, startupCheck *walk.CheckBox
|
||||||
@@ -39,7 +45,7 @@ func (a *App) showSettings() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := Dialog{
|
err := Dialog{
|
||||||
AssignTo: &dlg,
|
AssignTo: &dlg,
|
||||||
Title: "GoWallpaper 设置",
|
Title: "GoWallpaper 设置",
|
||||||
MinSize: Size{520, 300},
|
MinSize: Size{520, 300},
|
||||||
@@ -93,15 +99,29 @@ func (a *App) showSettings() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
dlg.Accept()
|
dlg.Accept()
|
||||||
|
if cfg.APIURL == "" {
|
||||||
|
a.notifyInfo("配置已保存。刷新壁纸前需要先设置随机图片 API 地址。")
|
||||||
|
} else {
|
||||||
|
a.notifyInfo("配置已保存。")
|
||||||
|
}
|
||||||
}},
|
}},
|
||||||
PushButton{Text: "取消", OnClicked: func() { dlg.Cancel() }},
|
PushButton{Text: "取消", OnClicked: func() { dlg.Cancel() }},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}.Run(a.mw)
|
}.Create(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.notifyError("无法打开设置窗口:" + err.Error())
|
a.notifyError("无法打开设置窗口:" + err.Error())
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
a.settingsDialog = dlg
|
||||||
|
dlg.Closing().Attach(func(_ *bool, _ walk.CloseReason) {
|
||||||
|
if a.settingsDialog == dlg {
|
||||||
|
a.settingsDialog = nil
|
||||||
|
}
|
||||||
|
})
|
||||||
|
dlg.Show()
|
||||||
|
_ = dlg.Activate()
|
||||||
}
|
}
|
||||||
|
|
||||||
func parsePositiveInt(value, field string) (int, error) {
|
func parsePositiveInt(value, field string) (int, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user