| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- const { Tray, Menu } = require('electron');
- const path = require('path');
- const Ps = require('ee-core/ps');
- const Log = require('ee-core/log');
- const Electron = require('ee-core/electron');
- const CoreWindow = require('ee-core/electron/window');
- const Conf = require('ee-core/config');
- const EE = require('ee-core/ee');
- /**
- * 托盘插件
- * @class
- */
- class TrayAddon {
- constructor() {
- this.tray = null;
- }
- /**
- * 创建托盘
- */
- create () {
- // 开发环境,代码热更新开启时,会导致托盘中有残影
- if (Ps.isDev() && Ps.isHotReload()) return;
-
- Log.info('[addon:tray] load');
- const { CoreApp } = EE;
- const cfg = Conf.getValue('addons.tray');
- const mainWindow = CoreWindow.getMainWindow();
- // 托盘图标
- let iconPath = path.join(Ps.getHomeDir(), cfg.icon);
-
- // 托盘菜单功能列表
- let trayMenuTemplate = [
- {
- label: '显示',
- click: function () {
- mainWindow.show();
- }
- },
- {
- label: '退出',
- click: function () {
- CoreApp.appQuit();
- }
- }
- ]
-
- // 点击关闭,最小化到托盘
- mainWindow.on('close', (event) => {
- if (Electron.extra.closeWindow == true) {
- return;
- }
- mainWindow.hide();
- event.preventDefault();
- });
-
- // 实例化托盘
- this.tray = new Tray(iconPath);
- this.tray.setToolTip(cfg.title);
- const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);
- this.tray.setContextMenu(contextMenu);
- }
- }
- TrayAddon.toString = () => '[class TrayAddon]';
- module.exports = TrayAddon;
|