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}}
+
-
+
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