diff options
author | Andras Becsi <andras.becsi@theqtcompany.com> | 2015-08-07 14:26:29 +0200 |
---|---|---|
committer | Andras Becsi <andras.becsi@theqtcompany.com> | 2015-08-12 17:22:04 +0200 |
commit | 5ae11ca3407e88044f7d79c86c94815119a5280a (patch) | |
tree | 46a84a5a42cedd5ce0a6f22fa9f214d1d9ffefb5 /src | |
parent | ee4de7abba1b868254c01f3f0c09af6e72263e5f (diff) |
Simplify how settings are persisted and loaded
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/BrowserWindow.qml | 1 | ||||
-rw-r--r-- | src/qml/SettingsView.qml | 43 |
2 files changed, 21 insertions, 23 deletions
diff --git a/src/qml/BrowserWindow.qml b/src/qml/BrowserWindow.qml index 5b3f567..9e55e4b 100644 --- a/src/qml/BrowserWindow.qml +++ b/src/qml/BrowserWindow.qml @@ -159,6 +159,7 @@ Item { } onDoneClicked: { + settingsView.save() settingsView.state = "disabled" } } diff --git a/src/qml/SettingsView.qml b/src/qml/SettingsView.qml index 1eeb3a3..6ed6e3f 100644 --- a/src/qml/SettingsView.qml +++ b/src/qml/SettingsView.qml @@ -58,6 +58,18 @@ Rectangle { { "name": "Enable Plugins", "active": false, "notify": function(v) { pluginsEnabled = v; } } ] + function save() { + for (var i = 0; i < appSettings.length; ++i) { + var setting = appSettings[i] + + listModel.get(i).active = setting.active + // Do not persist private browsing mode + if (setting.name === "Private Browsing") + continue + engine.saveSetting(setting.name, setting.active) + } + } + state: "disabled" states: [ @@ -129,9 +141,7 @@ Rectangle { onClicked: { var setting = appSettings[index] setting.active = checked - listModel.get(index).active = checked setting.notify(checked) - listView.save() } style: SwitchStyle { handle: Rectangle { @@ -156,31 +166,18 @@ Rectangle { } } - function save() { - // Do not persist private browsing mode - appSettings[0].active = false - engine.saveSetting("settings", JSON.stringify(appSettings)) - } - Component.onCompleted: { - var string = engine.restoreSetting("settings", JSON.stringify(appSettings)) - var list = JSON.parse(string) - for (var i = 0; i < list.length; ++i) { - var persistentSetting = list[i] - var localSetting = appSettings[i] - - if (localSetting.name !== persistentSetting.name) { - console.error("Conflicting configuration layout detected, using default setting!\nIf the problem persists please remove " + engine.settingsPath +" and restart the application.") - listModel.append(localSetting) - continue + for (var i = 0; i < appSettings.length; ++i) { + var setting = appSettings[i] + var active = JSON.parse(engine.restoreSetting(setting.name, setting.active)) + if (setting.active !== active) { + setting.active = active + setting.notify(active) } - - listModel.append({ "name": persistentSetting.name, "active": persistentSetting.active }) - localSetting.active = persistentSetting.active - localSetting.notify(persistentSetting.active) + listModel.append(setting) } listView.forceLayout() } - Component.onDestruction: save() + Component.onDestruction: root.save() } } |