Skip to content
This repository was archived by the owner on Feb 27, 2024. It is now read-only.

Commit ebb6f1b

Browse files
feat: 添加程序托盘功能
1 parent 11c8a12 commit ebb6f1b

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

main.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"fyne.io/fyne/v2"
1313
"fyne.io/fyne/v2/app"
14+
"fyne.io/fyne/v2/driver/desktop"
1415
"fyne.io/fyne/v2/container"
1516
"fyne.io/fyne/v2/layout"
1617
"fyne.io/fyne/v2/widget"
@@ -131,7 +132,7 @@ func main() {
131132
}
132133
}
133134

134-
window.SetCloseIntercept(func() {
135+
stopButton := widget.NewButton("关闭程序", func() {
135136
dialog.ShowConfirm("警告", "确定要退出程序吗?", func(b bool) {
136137
if b {
137138
if daemon.Started {
@@ -143,9 +144,33 @@ func main() {
143144
}, window)
144145
})
145146

147+
if desk, ok := app.(desktop.App); ok {
148+
m := fyne.NewMenu("MCSManager",
149+
fyne.NewMenuItem("显示", func() {
150+
window.Show()
151+
}))
152+
fyne.NewMenuItem("关闭", func() {
153+
window.Show()
154+
dialog.ShowConfirm("警告", "确定要退出程序吗?", func(b bool) {
155+
if b {
156+
if daemon.Started {
157+
dialog.ShowInformation("错误", "您必须关闭后台程序才能关闭本窗口", window)
158+
return
159+
}
160+
os.Exit(0)
161+
}
162+
}, window)
163+
})
164+
desk.SetSystemTrayMenu(m)
165+
}
166+
167+
window.SetCloseIntercept(func() {
168+
window.Hide()
169+
})
170+
146171
paddingContainer1 := container.New(layout.NewPaddedLayout(), infoLabel.Canvas)
147172
paddingContainer2 := container.New(layout.NewPaddedLayout(), container.New(layout.NewVBoxLayout(), statusLabel.Canvas, tipLabelWrapper))
148-
paddingContainer3 := container.New(layout.NewPaddedLayout(), container.New(layout.NewVBoxLayout(), btnWrapper, openBrowser))
173+
paddingContainer3 := container.New(layout.NewPaddedLayout(), container.New(layout.NewVBoxLayout(), btnWrapper, openBrowser, stopButton))
149174
content := container.New(layout.NewVBoxLayout(), paddingContainer1, layout.NewSpacer(), paddingContainer2, paddingContainer3)
150175
window.SetContent(container.New(layout.NewPaddedLayout(), content))
151176
window.ShowAndRun()

0 commit comments

Comments
 (0)