| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 'use strict';
- const {Tray, Menu} = require('electron');
- const path = require('path');
- /**
- * 托盘模块
- */
- module.exports = {
- /**
- * 安装
- */
- install (eeApp) {
- // 开发环境,代码热更新开启时,会导致托盘中有残影
- // 目前没有找到合适的解决方案
- // 启用热更新功能时,不加载该模块
- // 如果调试该模式,请使用dev模式
- if (process.env.EE_SERVER_ENV == 'local' && process.env.HOT_RELOAD == 'true') return;
-
- eeApp.logger.info('[preload] load tray module');
- const trayConfig = eeApp.config.tray;
- const mainWindow = eeApp.electron.mainWindow;
- // 托盘图标
- let iconPath = path.join(eeApp.config.homeDir, trayConfig.icon);
-
- // 托盘菜单功能列表
- let trayMenuTemplate = [
- {
- label: '显示',
- click: function () {
- mainWindow.show();
- }
- },
- {
- label: '退出',
- click: function () {
- eeApp.appQuit();
- }
- }
- ]
-
- // 点击关闭,最小化到托盘
- mainWindow.on('close', (event) => {
- if (eeApp.electron.extra.closeWindow == true) {
- return;
- }
- mainWindow.hide();
- event.preventDefault();
- });
- // 测试发现:创建的Tray对象实例变量和app.whenReady()在同一模块中定义才行
- // 赋值给eeApp.electron.tray,已在框架ee-core包中定义
- // 如果赋值给其它变量,可能出现异常,估计是electron的bug
-
- eeApp.electron.tray = new Tray(iconPath);
- let appTray = eeApp.electron.tray;
- appTray.setToolTip(trayConfig.title); // 托盘标题
- const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);
- appTray.setContextMenu(contextMenu);
-
- // 监听 显示/隐藏
- // appTray.on('click', function(){
- // if (mainWindow.isVisible()) {
- // mainWindow.hide();
- // //mainWindow.setSkipTaskbar(true);
- // } else {
- // mainWindow.show();
- // //mainWindow.setSkipTaskbar(false);
- // }
- // });
- }
- }
|