Форк Rambox
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
1.8 KiB

const path = require('path');
const electron = require('electron');
const app = electron.app;
const MenuItem = electron.MenuItem;
let tray = null;
exports.create = win => {
if (process.platform === 'darwin' || tray) {
return;
}
const icon = process.platform === 'linux' ? 'IconTray.png' : 'Icon.ico';
const iconPath = path.join(__dirname, `../resources/${icon}`);
let showMB = new MenuItem({
label: 'Show Rambox'
,position: '1'
,visible: false
,click(btn) {
win.show();
contextMenu.items[0].visible = false;
contextMenu.items[1].visible = true;
}
});
let hideMB = new MenuItem({
label: 'Minimize Rambox'
,position: '2'
,click(btn) {
win.hide();
contextMenu.items[1].visible = false;
contextMenu.items[0].visible = true;
}
});
const contextMenu = electron.Menu.buildFromTemplate([
showMB,
hideMB,
{
label: 'Preferences'
},
{
type: 'separator'
},
{
label: 'Quit'
,click() {
app.quit();
}
}
]);
tray = new electron.Tray(iconPath);
tray.setToolTip('Rambox');
tray.setContextMenu(contextMenu);
tray.on('click', function() {
if ( win.isVisible() ) {
win.hide();
contextMenu.items[1].visible = false;
contextMenu.items[0].visible = true;
} else {
win.show();
contextMenu.items[0].visible = false;
contextMenu.items[1].visible = true;
}
});
win.on('hide', function() {
contextMenu.items[1].visible = false;
contextMenu.items[0].visible = true;
});
};
exports.setBadge = shouldDisplayUnread => {
if (process.platform === 'darwin' || !tray) {
return;
}
let icon;
if (process.platform === 'linux') {
icon = shouldDisplayUnread ? 'IconTrayUnread.png' : 'IconTray.png';
} else {
icon = shouldDisplayUnread ? 'IconTrayUnread.ico' : 'Icon.ico';
}
const iconPath = path.join(__dirname, `../resources/${icon}`);
tray.setImage(iconPath);
};