Files
web-giao-ban-go/tray/tray_windows.go
T

72 lines
2.1 KiB
Go

//go:build windows
package tray
import (
"fmt"
"os/exec"
"github.com/getlantern/systray"
"web-giao-ban-go/config"
"web-giao-ban-go/logger"
)
func openBrowser(url string) {
_ = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start()
}
func Run(onServerReady func()) {
systray.Run(func() {
cfg := config.Get()
baseURL := fmt.Sprintf("http://localhost:%d", cfg.Server.Port)
adminPath := cfg.Server.AdminPath
if adminPath == "" {
adminPath = "/admin"
}
systray.SetIcon(DefaultIconBytes())
systray.SetTitle("DH-HIS Giao Ban")
systray.SetTooltip(fmt.Sprintf("DH-HIS Quản Lý Giao Ban (Port %d)", cfg.Server.Port))
mTitle := systray.AddMenuItem(fmt.Sprintf("🏥 DH-HIS Giao Ban (%s)", cfg.Updater.CurrentVersion), "Phiên bản phần mềm")
mTitle.Disable()
systray.AddSeparator()
mOpenWeb := systray.AddMenuItem("📊 Mở Báo Cáo Giao Ban", "Mở giao diện báo cáo giao ban bệnh viện")
mOpenAdmin := systray.AddMenuItem("⚙️ Quản Trị Hệ Thống", "Thiết lập kết nối CSDL và tham số")
mOpenLogs := systray.AddMenuItem("📜 Xem Nhật Ký / Log App", "Xem trực tiếp log hoạt động của ứng dụng")
mCheckUpdate := systray.AddMenuItem("🔄 Kiểm Tra Bản Cập Nhật", "Kiểm tra phiên bản mới từ Gitea")
systray.AddSeparator()
mQuit := systray.AddMenuItem("❌ Thoát Ứng Dụng", "Dừng dịch vụ và thoát")
// Start web server in background
if onServerReady != nil {
go onServerReady()
}
// Handle tray menu events
go func() {
for {
select {
case <-mOpenWeb.ClickedCh:
openBrowser(baseURL + "/web-giao-ban-go")
case <-mOpenAdmin.ClickedCh:
openBrowser(baseURL + "/web-giao-ban-go" + adminPath)
case <-mOpenLogs.ClickedCh:
openBrowser(baseURL + "/web-giao-ban-go" + adminPath + "#tab-logs")
case <-mCheckUpdate.ClickedCh:
openBrowser(baseURL + "/web-giao-ban-go" + adminPath + "#tab-update")
case <-mQuit.ClickedCh:
logger.Info("Người dùng chọn Thoát từ khay hệ thống (System Tray)")
systray.Quit()
return
}
}
}()
}, func() {
logger.Info("System Tray đã đóng")
})
}