app: add upgrade configuration to settings page

This commit is contained in:
Eva Ho
2025-12-17 14:37:18 -05:00
parent d087e46bd1
commit e76abac24e
17 changed files with 552 additions and 36 deletions

View File

@@ -47,6 +47,34 @@ func (t *winTray) initMenus() error {
return nil
}
func (t *winTray) ClearUpdateAvailable() error {
if t.updateNotified {
slog.Debug("clearing update notification and menu items")
if err := t.removeMenuItem(updateSeparatorMenuID, 0); err != nil {
return fmt.Errorf("unable to remove menu entries %w", err)
}
if err := t.removeMenuItem(updateAvailableMenuID, 0); err != nil {
return fmt.Errorf("unable to remove menu entries %w", err)
}
if err := t.removeMenuItem(updateMenuID, 0); err != nil {
return fmt.Errorf("unable to remove menu entries %w", err)
}
if err := t.removeMenuItem(separatorMenuID, 0); err != nil {
return fmt.Errorf("unable to remove menu entries %w", err)
}
iconFilePath, err := iconBytesToFilePath(wt.normalIcon)
if err != nil {
return fmt.Errorf("unable to write icon data to temp file: %w", err)
}
if err := t.setIcon(iconFilePath); err != nil {
return fmt.Errorf("unable to set icon: %w", err)
}
t.updateNotified = false
t.pendingUpdate = false
}
return nil
}
func (t *winTray) UpdateAvailable(ver string) error {
if !t.updateNotified {
slog.Debug("updating menu and sending notification for new update")

View File

@@ -369,24 +369,24 @@ func (t *winTray) addSeparatorMenuItem(menuItemId, parentId uint32) error {
return nil
}
// func (t *winTray) hideMenuItem(menuItemId, parentId uint32) error {
// const ERROR_SUCCESS syscall.Errno = 0
func (t *winTray) removeMenuItem(menuItemId, parentId uint32) error {
const ERROR_SUCCESS syscall.Errno = 0
// t.muMenus.RLock()
// menu := uintptr(t.menus[parentId])
// t.muMenus.RUnlock()
// res, _, err := pRemoveMenu.Call(
// menu,
// uintptr(menuItemId),
// MF_BYCOMMAND,
// )
// if res == 0 && err.(syscall.Errno) != ERROR_SUCCESS {
// return err
// }
// t.delFromVisibleItems(parentId, menuItemId)
t.muMenus.RLock()
menu := uintptr(t.menus[parentId])
t.muMenus.RUnlock()
res, _, err := pRemoveMenu.Call(
menu,
uintptr(menuItemId),
MF_BYCOMMAND,
)
if res == 0 && err.(syscall.Errno) != ERROR_SUCCESS {
return err
}
t.delFromVisibleItems(parentId, menuItemId)
// return nil
// }
return nil
}
func (t *winTray) showMenu() error {
p := point{}

View File

@@ -30,6 +30,7 @@ var (
pPostQuitMessage = u32.NewProc("PostQuitMessage")
pRegisterClass = u32.NewProc("RegisterClassExW")
pRegisterWindowMessage = u32.NewProc("RegisterWindowMessageW")
pRemoveMenu = u32.NewProc("RemoveMenu")
pSendMessage = u32.NewProc("SendMessageW")
pSetForegroundWindow = u32.NewProc("SetForegroundWindow")
pSetMenuInfo = u32.NewProc("SetMenuInfo")