From 58cda9cc7fb79ca9df6746de7f9662bc08dc156a Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 13 Oct 2017 12:29:40 +0200 Subject: initial commit --- src/electron/ipc-api/tray.js | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/electron/ipc-api/tray.js (limited to 'src/electron/ipc-api/tray.js') diff --git a/src/electron/ipc-api/tray.js b/src/electron/ipc-api/tray.js new file mode 100644 index 000000000..43364c0ed --- /dev/null +++ b/src/electron/ipc-api/tray.js @@ -0,0 +1,48 @@ +import { Tray, Menu, ipcMain } from 'electron'; +import path from 'path'; + +const INDICATOR_PLAIN = 'franz-taskbar'; +const INDICATOR_UNREAD = 'franz-taskbar-unread'; + +const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; + +let trayIcon; + +function getAsset(asset) { + return path.join( + __dirname, '..', '..', 'assets', 'images', 'tray', process.platform, `${asset}.${FILE_EXTENSION}`, + ); +} + +export default (params) => { + // if (process.platform === 'win32' || process.platform === 'linux') { + trayIcon = new Tray(getAsset(INDICATOR_PLAIN)); + const trayMenuTemplate = [ + { + label: 'Show Franz', + click() { + params.mainWindow.show(); + }, + }, { + label: 'Quit Franz', + click() { + params.app.quit(); + }, + }, + ]; + + const trayMenu = Menu.buildFromTemplate(trayMenuTemplate); + trayIcon.setContextMenu(trayMenu); + + trayIcon.on('click', () => { + params.mainWindow.show(); + }); + + ipcMain.on('updateTrayIconIndicator', (event, args) => { + trayIcon.setImage(getAsset(args.count !== 0 ? INDICATOR_UNREAD : INDICATOR_PLAIN)); + + if (process.platform === 'darwin') { + trayIcon.setPressedImage(getAsset(`${args.count !== 0 ? INDICATOR_UNREAD : INDICATOR_PLAIN}-active`)); + } + }); +}; -- cgit v1.2.3-70-g09d2