Refactor notification to simplify event handling

This commit is contained in:
Yuya Ochiai 2016-06-16 22:10:55 +09:00
parent 73a11ea398
commit 722807a5cb
3 changed files with 40 additions and 45 deletions

View file

@ -97,39 +97,23 @@ function isElementVisible(elem) {
return elem.offsetHeight !== 0; 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. notification.override({
// In current version, use tray balloon for notification // Send a notification event to the main process.
function isLowerThanOrEqualWindows8_1() { notification: function(title, options) {
if (process.platform != 'win32') { ipc.send('notified', {
return false; title: title,
} options: options
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 {
// Show window even if it is hidden/minimized when notification is clicked. // Show window even if it is hidden/minimized when notification is clicked.
notification.override({ onclick: function() {
onclick: function() { if (process.platform === 'win32') {
if (process.platform === 'win32') { // show() breaks Aero Snap state.
// show() breaks Aero Snap state. electron.remote.getCurrentWindow().focus();
electron.remote.getCurrentWindow().focus();
}
else {
electron.remote.getCurrentWindow().show();
}
ipc.sendToHost('onNotificationClick');
} }
}); else {
} electron.remote.getCurrentWindow().show();
}
ipc.sendToHost('onNotificationClick');
}
});

View file

@ -3,5 +3,12 @@ var release_split = os.release().split('.');
module.exports = { module.exports = {
major: parseInt(release_split[0]), 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);
}
}; };

View file

@ -14,6 +14,7 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
var settings = require('./common/settings'); var settings = require('./common/settings');
const osVersion = require('./common/osVersion');
var certificateStore = require('./main/certificateStore').load(path.resolve(app.getPath('userData'), 'certificate.json')); var certificateStore = require('./main/certificateStore').load(path.resolve(app.getPath('userData'), 'certificate.json'));
var appMenu = require('./main/menus/app'); var appMenu = require('./main/menus/app');
const allowProtocolDialog = require('./main/allowProtocolDialog'); const allowProtocolDialog = require('./main/allowProtocolDialog');
@ -184,15 +185,19 @@ app.on('ready', function() {
mainWindow.focus(); mainWindow.focus();
}); });
ipc.on('notified', function(event, arg) { ipc.on('notified', function(event, arg) {
trayIcon.displayBalloon({ if (process.platform === 'win32') {
icon: path.resolve(__dirname, 'resources/appicon.png'), if (config.notifications.flashWindow === 2) {
title: arg.title, mainWindow.flashFrame(true);
content: arg.options.body }
}); // 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
/* Todo: add idle here */ if (osVersion.isLowerThanOrEqualWindows8_1()) {
if (config.notifications.flashWindow == 2) { trayIcon.displayBalloon({
mainWindow.flashFrame(true); icon: path.resolve(__dirname, 'resources/appicon.png'),
title: arg.title,
content: arg.options.body
});
}
} }
}); });
@ -215,7 +220,6 @@ app.on('ready', function() {
else { else {
trayIcon.setImage(trayImages.normal); trayIcon.setImage(trayImages.normal);
trayIcon.setToolTip(app.getName()); trayIcon.setToolTip(app.getName());
mainWindow.flashFrame(false);
} }
}); });
} }