From ef503a1e29a540c7318efb5f2018efbf00706198 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Thu, 19 Oct 2017 11:15:25 +0200 Subject: Add option to disable system tray icon --- src/electron/Settings.js | 14 ++++++++++- src/electron/ipc-api/appIndicator.js | 45 +++++++++++------------------------- 2 files changed, 26 insertions(+), 33 deletions(-) (limited to 'src/electron') diff --git a/src/electron/Settings.js b/src/electron/Settings.js index 049a08296..824b4c20c 100644 --- a/src/electron/Settings.js +++ b/src/electron/Settings.js @@ -1,5 +1,17 @@ +import { observable } from 'mobx'; + +import { DEFAULT_APP_SETTINGS } from '../config'; + export default class Settings { - store = {}; + @observable store = { + autoLaunchOnStart: DEFAULT_APP_SETTINGS.autoLaunchOnStart, + autoLaunchInBackground: DEFAULT_APP_SETTINGS.autoLaunchInBackground, + runInBackground: DEFAULT_APP_SETTINGS.runInBackground, + enableSystemTray: DEFAULT_APP_SETTINGS.enableSystemTray, + minimizeToSystemTray: DEFAULT_APP_SETTINGS.minimizeToSystemTray, + locale: DEFAULT_APP_SETTINGS.locale, + beta: DEFAULT_APP_SETTINGS.beta, + }; set(settings) { this.store = Object.assign(this.store, settings); diff --git a/src/electron/ipc-api/appIndicator.js b/src/electron/ipc-api/appIndicator.js index 576234d25..d31819068 100644 --- a/src/electron/ipc-api/appIndicator.js +++ b/src/electron/ipc-api/appIndicator.js @@ -1,12 +1,11 @@ -import { app, ipcMain, Tray, Menu } from 'electron'; +import { app, ipcMain } from 'electron'; import path from 'path'; +import { autorun } from 'mobx'; -const INDICATOR_TRAY_PLAIN = 'tray'; -const INDICATOR_TRAY_UNREAD = 'tray-unread'; const INDICATOR_TASKBAR = 'taskbar'; - const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; -let trayIcon; + +let isTrayIconEnabled; function getAsset(type, asset) { return path.join( @@ -15,26 +14,14 @@ function getAsset(type, asset) { } export default (params) => { - trayIcon = new Tray(getAsset('tray', INDICATOR_TRAY_PLAIN)); - const trayMenuTemplate = [ - { - label: 'Show Franz', - click() { - params.mainWindow.show(); - }, - }, { - label: 'Quit Franz', - click() { - app.quit(); - }, - }, - ]; - - const trayMenu = Menu.buildFromTemplate(trayMenuTemplate); - trayIcon.setContextMenu(trayMenu); + autorun(() => { + isTrayIconEnabled = params.settings.get('enableSystemTray'); - trayIcon.on('click', () => { - params.mainWindow.show(); + if (!isTrayIconEnabled) { + params.trayIcon.hide(); + } else if (isTrayIconEnabled) { + params.trayIcon.show(); + } }); ipcMain.on('updateAppIndicator', (event, args) => { @@ -68,13 +55,7 @@ export default (params) => { } } - // Update system tray - trayIcon.setImage(getAsset('tray', args.indicator !== 0 ? INDICATOR_TRAY_UNREAD : INDICATOR_TRAY_PLAIN)); - - if (process.platform === 'darwin') { - trayIcon.setPressedImage( - getAsset('tray', `${args.indicator !== 0 ? INDICATOR_TRAY_UNREAD : INDICATOR_TRAY_PLAIN}-active`), - ); - } + // Update Tray + params.trayIcon.setIndicator(args.indicator); }); }; -- cgit v1.2.3-70-g09d2