messengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscord
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.
88 lines
1.8 KiB
88 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); |
|
};
|
|
|