From b00de4d976e287b6c1627083838ae853d552b2fd Mon Sep 17 00:00:00 2001 From: lyswhut Date: Sat, 14 Nov 2020 22:29:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=98=E7=9B=98=E8=8F=9C=E5=8D=95=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=98=BE=E7=A4=BA=E3=80=81=E9=9A=90=E8=97=8F=E4=B8=BB?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E9=80=89=E9=A1=B9=EF=BC=8C=E4=B8=BALinux?= =?UTF-8?q?=E3=80=81MAC=E7=89=88=E6=B7=BB=E5=8A=A0=E6=89=98=E7=9B=98?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 4 ++++ src/main/events/MainWindow.js | 12 ++++++++++++ src/main/events/_name.js | 3 +++ src/main/modules/tray.js | 30 +++++++++++++++++++++++++++-- src/main/rendererEvents/winEvent.js | 8 ++++++++ 5 files changed, 55 insertions(+), 2 deletions(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index 8f20c3c4..cf015e85 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -1,3 +1,7 @@ +### 新增 + +- 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单 + ### 优化 - 移除kg源的歌词文件开头的空白字符串 diff --git a/src/main/events/MainWindow.js b/src/main/events/MainWindow.js index ec6855ba..59b228a0 100644 --- a/src/main/events/MainWindow.js +++ b/src/main/events/MainWindow.js @@ -17,6 +17,18 @@ class MainWindow extends EventEmitter { toggleHide() { this.emit(MAIN_WINDOW_EVENT_NAME.toggle_hide) } + + readyToShow() { + this.emit(MAIN_WINDOW_EVENT_NAME.ready_to_show) + } + + show() { + this.emit(MAIN_WINDOW_EVENT_NAME.show) + } + + hide() { + this.emit(MAIN_WINDOW_EVENT_NAME.hide) + } } module.exports = MainWindow diff --git a/src/main/events/_name.js b/src/main/events/_name.js index 4eb8650f..251ba7bb 100644 --- a/src/main/events/_name.js +++ b/src/main/events/_name.js @@ -10,6 +10,9 @@ exports.mainWindow = { quit: 'quit', toggle_minimize: 'toggle_minimize', toggle_hide: 'toggle_hide', + ready_to_show: 'ready_to_show', + show: 'show', + hide: 'hide', } exports.tray = { diff --git a/src/main/modules/tray.js b/src/main/modules/tray.js index 88cc70e6..58579990 100644 --- a/src/main/modules/tray.js +++ b/src/main/modules/tray.js @@ -1,6 +1,6 @@ const { app, Tray, Menu } = require('electron') const { isWin } = require('../../common/utils') -const { tray: TRAY_EVENT_NAME, common: COMMON_EVENT_NAME } = require('../events/_name') +const { tray: TRAY_EVENT_NAME, common: COMMON_EVENT_NAME, mainWindow: MAIN_WINDOW_NAME } = require('../events/_name') const path = require('path') let isEnableTray = null let themeId = null @@ -29,6 +29,16 @@ global.lx_event.common.on(COMMON_EVENT_NAME.config, sourceName => { createMenu(global.modules.tray) }) +global.lx_event.mainWindow.on(MAIN_WINDOW_NAME.ready_to_show, () => { + createMenu(global.modules.tray) +}) +global.lx_event.mainWindow.on(MAIN_WINDOW_NAME.show, () => { + createMenu(global.modules.tray) +}) +global.lx_event.mainWindow.on(MAIN_WINDOW_NAME.hide, () => { + createMenu(global.modules.tray) +}) + const createTray = () => { if ((global.modules.tray && !global.modules.tray.isDestroyed()) || !global.appSetting.tray || !global.appSetting.tray.isShow) return @@ -58,8 +68,24 @@ const destroyTray = () => { } const createMenu = tray => { - if (!global.modules.tray || !isWin) return + if (!global.modules.tray) return let menu = [] + global.modules.mainWindow && menu.push(global.modules.mainWindow.isVisible() ? { + label: '隐藏主界面', + click() { + global.modules.mainWindow.hide() + }, + } : { + label: '显示主界面', + click() { + if (!global.modules.mainWindow) return + if (!global.modules.mainWindow.isVisible()) { + global.modules.mainWindow.show() + } + global.modules.mainWindow.restore() + global.modules.mainWindow.focus() + }, + }) menu.push(global.appSetting.desktopLyric.enable ? { label: '关闭桌面歌词', click() { diff --git a/src/main/rendererEvents/winEvent.js b/src/main/rendererEvents/winEvent.js index 766a9438..6d797ec9 100644 --- a/src/main/rendererEvents/winEvent.js +++ b/src/main/rendererEvents/winEvent.js @@ -29,5 +29,13 @@ module.exports = mainWindow => { mainWindow.once('ready-to-show', () => { mainWindow.show() + global.lx_event.mainWindow.readyToShow() + }) + + mainWindow.on('show', () => { + global.lx_event.mainWindow.show() + }) + mainWindow.on('hide', () => { + global.lx_event.mainWindow.hide() }) }