Skip to content

Commit 450aa05

Browse files
committed
Configuring global shortcuts working
1 parent d205b41 commit 450aa05

File tree

4 files changed

+78
-4
lines changed

4 files changed

+78
-4
lines changed

app/js/settings.js

+31-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,34 @@ var ipc = require('ipc');
55
var closeEl = document.querySelector('.close');
66
closeEl.addEventListener('click', function (e) {
77
ipc.send('close-settings-window');
8-
});
8+
});
9+
10+
var configuration = require('../configuration');
11+
12+
var modifierCheckboxes = document.querySelectorAll('.global-shortcut');
13+
14+
for (var i = 0; i < modifierCheckboxes.length; i++) {
15+
var shortcutKeys = configuration.readSettings('shortcutKeys');
16+
var modifierKey = modifierCheckboxes[i].attributes['data-modifier-key'].value;
17+
modifierCheckboxes[i].checked = shortcutKeys.indexOf(modifierKey) !== -1;
18+
19+
modifierCheckboxes[i].addEventListener('click', function (e) {
20+
bindModifierCheckboxes(e);
21+
});
22+
}
23+
24+
function bindModifierCheckboxes(e) {
25+
var shortcutKeys = configuration.readSettings('shortcutKeys');
26+
var modifierKey = e.target.attributes['data-modifier-key'].value;
27+
28+
if (shortcutKeys.indexOf(modifierKey) !== -1) {
29+
var shortcutKeyIndex = shortcutKeys.indexOf(modifierKey);
30+
shortcutKeys.splice(shortcutKeyIndex, 1);
31+
}
32+
else {
33+
shortcutKeys.push(modifierKey);
34+
}
35+
36+
configuration.saveSettings('shortcutKeys', shortcutKeys);
37+
ipc.send('set-global-shortcuts');
38+
}

configuration.js

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
'use strict';
2+
3+
var nconf = require('nconf').file({file: getUserHome() + '/sound-machine-config.json'});
4+
5+
function saveSettings(settingKey, settingValue) {
6+
nconf.set(settingKey, settingValue);
7+
nconf.save();
8+
}
9+
10+
function readSettings(settingKey) {
11+
nconf.load();
12+
return nconf.get(settingKey);
13+
}
14+
15+
function getUserHome() {
16+
return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
17+
}
18+
19+
module.exports = {
20+
saveSettings: saveSettings,
21+
readSettings: readSettings
22+
};

main.js

+22-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ var mainWindow = null;
77

88
var globalShortcut = require('global-shortcut');
99

10+
var configuration = require('./configuration');
11+
1012
app.on('ready', function() {
13+
if (!configuration.readSettings('shortcutKeys')) {
14+
configuration.saveSettings('shortcutKeys', ['ctrl', 'shift']);
15+
}
16+
1117
mainWindow = new BrowserWindow({
1218
frame: false,
1319
height: 700,
@@ -17,13 +23,22 @@ app.on('ready', function() {
1723

1824
mainWindow.loadUrl('file://' + __dirname + '/app/index.html');
1925

20-
globalShortcut.register('ctrl+shift+1', function () {
26+
setGlobalShortcuts();
27+
});
28+
29+
function setGlobalShortcuts() {
30+
globalShortcut.unregisterAll();
31+
32+
var shortcutKeysSetting = configuration.readSettings('shortcutKeys');
33+
var shortcutPrefix = shortcutKeysSetting.length === 0 ? '' : shortcutKeysSetting.join('+') + '+';
34+
35+
globalShortcut.register(shortcutPrefix + '1', function () {
2136
mainWindow.webContents.send('global-shortcut', 0);
2237
});
23-
globalShortcut.register('ctrl+shift+2', function () {
38+
globalShortcut.register(shortcutPrefix + '2', function () {
2439
mainWindow.webContents.send('global-shortcut', 1);
2540
});
26-
});
41+
}
2742

2843
var ipc = require('ipc');
2944

@@ -56,4 +71,8 @@ ipc.on('close-settings-window', function () {
5671
if (settingsWindow) {
5772
settingsWindow.close();
5873
}
74+
});
75+
76+
ipc.on('set-global-shortcuts', function () {
77+
setGlobalShortcuts();
5978
});

package.json

+3
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,8 @@
77
},
88
"devDependencies": {
99
"electron-prebuilt": "^0.30.3"
10+
},
11+
"dependencies": {
12+
"nconf": "^0.7.2"
1013
}
1114
}

0 commit comments

Comments
 (0)