Refactor notification to simplify event handling
This commit is contained in:
parent
73a11ea398
commit
722807a5cb
|
@ -97,39 +97,23 @@ function isElementVisible(elem) {
|
|||
return elem.offsetHeight !== 0;
|
||||
}
|
||||
|
||||
// On Windows 8.1 and Windows 8, a shortcut with a Application User Model ID must be installed to the Start screen.
|
||||
// In current version, use tray balloon for notification
|
||||
function isLowerThanOrEqualWindows8_1() {
|
||||
if (process.platform != 'win32') {
|
||||
return false;
|
||||
}
|
||||
var osVersion = require('../../common/osVersion');
|
||||
return (osVersion.major <= 6 && osVersion.minor <= 3);
|
||||
};
|
||||
|
||||
if (process.platform === 'win32' && isLowerThanOrEqualWindows8_1()) {
|
||||
// Show balloon when notified.
|
||||
notification.override({
|
||||
notification: function(title, options) {
|
||||
ipc.send('notified', {
|
||||
title: title,
|
||||
options: options
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
notification.override({
|
||||
// Send a notification event to the main process.
|
||||
notification: function(title, options) {
|
||||
ipc.send('notified', {
|
||||
title: title,
|
||||
options: options
|
||||
});
|
||||
},
|
||||
// Show window even if it is hidden/minimized when notification is clicked.
|
||||
notification.override({
|
||||
onclick: function() {
|
||||
if (process.platform === 'win32') {
|
||||
// show() breaks Aero Snap state.
|
||||
electron.remote.getCurrentWindow().focus();
|
||||
}
|
||||
else {
|
||||
electron.remote.getCurrentWindow().show();
|
||||
}
|
||||
ipc.sendToHost('onNotificationClick');
|
||||
onclick: function() {
|
||||
if (process.platform === 'win32') {
|
||||
// show() breaks Aero Snap state.
|
||||
electron.remote.getCurrentWindow().focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
electron.remote.getCurrentWindow().show();
|
||||
}
|
||||
ipc.sendToHost('onNotificationClick');
|
||||
}
|
||||
});
|
||||
|
|
|
@ -3,5 +3,12 @@ var release_split = os.release().split('.');
|
|||
|
||||
module.exports = {
|
||||
major: parseInt(release_split[0]),
|
||||
minor: parseInt(release_split[1])
|
||||
minor: parseInt(release_split[1]),
|
||||
isLowerThanOrEqualWindows8_1: function() {
|
||||
if (process.platform != 'win32') {
|
||||
return false;
|
||||
}
|
||||
// consider Windows 7 and later.
|
||||
return (this.major <= 6 && this.minor <= 3);
|
||||
}
|
||||
};
|
||||
|
|
24
src/main.js
24
src/main.js
|
@ -14,6 +14,7 @@ const fs = require('fs');
|
|||
const path = require('path');
|
||||
|
||||
var settings = require('./common/settings');
|
||||
const osVersion = require('./common/osVersion');
|
||||
var certificateStore = require('./main/certificateStore').load(path.resolve(app.getPath('userData'), 'certificate.json'));
|
||||
var appMenu = require('./main/menus/app');
|
||||
const allowProtocolDialog = require('./main/allowProtocolDialog');
|
||||
|
@ -184,15 +185,19 @@ app.on('ready', function() {
|
|||
mainWindow.focus();
|
||||
});
|
||||
ipc.on('notified', function(event, arg) {
|
||||
trayIcon.displayBalloon({
|
||||
icon: path.resolve(__dirname, 'resources/appicon.png'),
|
||||
title: arg.title,
|
||||
content: arg.options.body
|
||||
});
|
||||
|
||||
/* Todo: add idle here */
|
||||
if (config.notifications.flashWindow == 2) {
|
||||
mainWindow.flashFrame(true);
|
||||
if (process.platform === 'win32') {
|
||||
if (config.notifications.flashWindow === 2) {
|
||||
mainWindow.flashFrame(true);
|
||||
}
|
||||
// On Windows 8.1 and Windows 8, a shortcut with a Application User Model ID must be installed to the Start screen.
|
||||
// In current version, use tray balloon for notification
|
||||
if (osVersion.isLowerThanOrEqualWindows8_1()) {
|
||||
trayIcon.displayBalloon({
|
||||
icon: path.resolve(__dirname, 'resources/appicon.png'),
|
||||
title: arg.title,
|
||||
content: arg.options.body
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -215,7 +220,6 @@ app.on('ready', function() {
|
|||
else {
|
||||
trayIcon.setImage(trayImages.normal);
|
||||
trayIcon.setToolTip(app.getName());
|
||||
mainWindow.flashFrame(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue