diff --git a/app/controllers/settings-controller.js b/app/controllers/settings-controller.js index f779bf9..be5154f 100644 --- a/app/controllers/settings-controller.js +++ b/app/controllers/settings-controller.js @@ -1,16 +1,40 @@ let angApp = require(__dirname+'/../init') -angApp.controller('SettingsController', function ($scope, AppStateService, SettingsService) { +angApp.controller('SettingsController', function ($scope, $rootScope, AppStateService, SettingsService) { + + let formInitialized = false + $scope.settingsChanged = false + $scope.settingsSaved = false + + const settingsSetPristine = () => { + $scope.settingsChanged = false + formInitialized = false + } $scope.closeSettings = () => { - AppStateService.set(AppStateService.previousState) + $scope.settings = SettingsService.loadAll() + settingsSetPristine() + AppStateService.set(AppStateService.APP_STATE_DEFAULT) } $scope.saveSettings = () => { + $scope.settingsSaved = true SettingsService.saveAll($scope.settings) - $scope.closeSettings() + settingsSetPristine() + } + + $scope.restartApp = () => { + $rootScope.$broadcast('app:restart') } $scope.settings = SettingsService.loadAll() + $scope.$watch("settings", () => { + if (!formInitialized) { + formInitialized = true + } else { + $scope.settingsChanged = true + } + }, true) + }) \ No newline at end of file diff --git a/app/views/settings/page.html b/app/views/settings/page.html index 9e5cbd4..3940b95 100644 --- a/app/views/settings/page.html +++ b/app/views/settings/page.html @@ -14,8 +14,13 @@
{{item.hint}}
+
+ + Click here to restart the app and apply your changes + +
- +
diff --git a/main.js b/main.js index edd7556..1032961 100644 --- a/main.js +++ b/main.js @@ -1,5 +1,5 @@ // Modules to control application life and create native browser window -const { app, BrowserWindow, shell } = require('electron') +const { app, BrowserWindow, ipcMain, shell } = require('electron') // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. @@ -80,16 +80,6 @@ function createWindow () { }) } - // Handle shutdown event on Mac with minimizeOnClose - // to prevent shutdown interrupt - if (isMac && minimizeOnClose) { - const { powerMonitor } = require('electron') - powerMonitor.on('shutdown', () => { - app.isQuitting = true - app.quit() - }) - } - // Save window size if (preserveWindowSize) { mainWindow.on('resize', (e) => { @@ -112,6 +102,23 @@ function createWindow () { }) } + // Handle shutdown event on Mac with minimizeOnClose + // to prevent shutdown interrupt + if (isMac && minimizeOnClose) { + const { powerMonitor } = require('electron') + powerMonitor.on('shutdown', () => { + app.isQuitting = true + app.quit() + }) + } + + // Handle restart + ipcMain.on('app-restart', (evt, arg) => { + app.isQuitting = true + app.relaunch() + app.exit() + }) + // Emitted when the window is closed. mainWindow.on('closed', function () { // Dereference the window object, usually you would store windows diff --git a/renderer.js b/renderer.js index 7d953ca..a47ce0c 100644 --- a/renderer.js +++ b/renderer.js @@ -52,6 +52,10 @@ angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService }, 0) }) + $scope.$on('app:restart', (event, data) => { + ipcRenderer.send('app-restart') + }) + SettingsService.initDefaults() ChimeVerseService.getCredentialsAndLogin() diff --git a/resources/css/page-settings.css b/resources/css/page-settings.css index a8b2cc9..b145ec2 100644 --- a/resources/css/page-settings.css +++ b/resources/css/page-settings.css @@ -9,4 +9,8 @@ .form-item__hint { color: #777; font-size: 13px; +} + +.form-item__save-button.active { + color: blue; } \ No newline at end of file