72 lines
2.1 KiB
Go
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")
|
||
|
|
})
|
||
|
|
}
|