From 19e119127553dd615899280abef72f4c9da1b2c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E8=90=8C=E5=93=92=E8=B5=AB=E8=90=9D?= Date: Wed, 5 Apr 2023 13:02:17 +0800 Subject: [PATCH] :sparkles: Feature: add dock menu and appbar menu --- src/main/apis/app/system/index.ts | 100 +++++++++++++++++++++--------- src/main/lifeCycle/index.ts | 21 ++++++- vue.config.js | 2 +- 3 files changed, 93 insertions(+), 30 deletions(-) diff --git a/src/main/apis/app/system/index.ts b/src/main/apis/app/system/index.ts index a03ed5e..d1e4e5a 100644 --- a/src/main/apis/app/system/index.ts +++ b/src/main/apis/app/system/index.ts @@ -21,8 +21,79 @@ import { T } from '~/main/i18n' import { isMacOSVersionGreaterThanOrEqualTo } from '~/main/utils/getMacOSVersion' import { buildPicBedListMenu } from '~/main/events/remotes/menu' let contextMenu: Menu | null -let menu: Menu | null let tray: Tray | null + +export function createMenu () { + const submenu = buildPicBedListMenu() + const appMenu = Menu.buildFromTemplate([ + { + label: 'PicList', + submenu: [ + { + label: T('ABOUT'), + click () { + dialog.showMessageBox({ + title: 'PicList', + message: 'PicList', + detail: `Version: ${pkg.version}\nAuthor: Kuingsmile\nGithub: https://github.com/Kuingsmile/PicList` + }) + } + }, + { + label: T('OPEN_MAIN_WINDOW'), + click () { + const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW) + settingWindow!.show() + settingWindow!.focus() + if (windowManager.has(IWindowList.MINI_WINDOW)) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } + } + }, + // @ts-ignore + { + label: T('OPEN_UPDATE_HELPER'), + type: 'checkbox', + checked: db.get('settings.showUpdateTip'), + click () { + const value = db.get('settings.showUpdateTip') + db.set('settings.showUpdateTip', !value) + } + }, + { + label: T('PRIVACY_AGREEMENT'), + click () { + privacyManager.show(false) + } + }, + { + label: T('RELOAD_APP'), + click () { + app.relaunch() + app.exit(0) + } + } + ] + }, + { + label: T('CHOOSE_DEFAULT_PICBED'), + type: 'submenu', + // @ts-ignore + submenu + }, + { + label: T('QUIT'), + submenu: [ + { + label: T('QUIT'), + role: 'quit' + } + ] + } + ]) + Menu.setApplicationMenu(appMenu) +} + export function createContextMenu () { if (process.platform === 'darwin' || process.platform === 'win32') { const submenu = buildPicBedListMenu() @@ -250,33 +321,6 @@ export function createTray () { } } -export function createMenu () { - if (process.env.NODE_ENV !== 'development') { - const template = [{ - label: 'Edit', - submenu: [ - { label: 'Undo', accelerator: 'CmdOrCtrl+Z', selector: 'undo:' }, - { label: 'Redo', accelerator: 'Shift+CmdOrCtrl+Z', selector: 'redo:' }, - { type: 'separator' }, - { label: 'Cut', accelerator: 'CmdOrCtrl+X', selector: 'cut:' }, - { label: 'Copy', accelerator: 'CmdOrCtrl+C', selector: 'copy:' }, - { label: 'Paste', accelerator: 'CmdOrCtrl+V', selector: 'paste:' }, - { label: 'Select All', accelerator: 'CmdOrCtrl+A', selector: 'selectAll:' }, - { - label: 'Quit', - accelerator: 'CmdOrCtrl+Q', - click () { - app.quit() - } - } - ] - }] - // @ts-ignore - menu = Menu.buildFromTemplate(template) - Menu.setApplicationMenu(menu) - } -} - const toggleWindow = (bounds: IBounds) => { const trayWindow = windowManager.get(IWindowList.TRAY_WINDOW)! if (trayWindow.isVisible()) { diff --git a/src/main/lifeCycle/index.ts b/src/main/lifeCycle/index.ts index 1ecc7df..254bd36 100644 --- a/src/main/lifeCycle/index.ts +++ b/src/main/lifeCycle/index.ts @@ -3,7 +3,8 @@ import { app, globalShortcut, protocol, - Notification + Notification, + Menu } from 'electron' import { createProtocol @@ -40,6 +41,7 @@ import { remoteNoticeHandler } from 'apis/app/remoteNotice' import { manageIpcList } from '../manage/events/ipcList' import getManageApi from '../manage/Main' import UpDownTaskQueue from '../manage/datastore/upDownTaskQueue' +import { T } from '~/main/i18n' const isDevelopment = process.env.NODE_ENV !== 'production' const handleStartUpFiles = (argv: string[], cwd: string) => { @@ -89,6 +91,23 @@ class LifeCycle { } windowManager.create(IWindowList.TRAY_WINDOW) windowManager.create(IWindowList.SETTING_WINDOW) + if (process.platform === 'darwin') { + app.dock.setMenu( + Menu.buildFromTemplate([ + { + label: T('OPEN_MAIN_WINDOW'), + click () { + const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW) + settingWindow!.show() + settingWindow!.focus() + if (windowManager.has(IWindowList.MINI_WINDOW)) { + windowManager.get(IWindowList.MINI_WINDOW)!.hide() + } + } + } + ]) + ) + } createTray() db.set('needReload', false) updateChecker() diff --git a/vue.config.js b/vue.config.js index 4ac4ccf..1964de6 100644 --- a/vue.config.js +++ b/vue.config.js @@ -68,7 +68,7 @@ const config = { mac: { icon: 'build/icons/icon.icns', extendInfo: { - LSUIElement: 1 + LSUIElement: 0 }, target: [{ target: 'dmg',