aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Crosby2010-01-18 00:44:13 -0800
committerPhil Crosby2010-01-18 00:44:13 -0800
commit66a863495355a8fc1deac3f81a3eb619f78aa0d6 (patch)
treefd2eab6f33fa59127f46f56ba855ba2800540723
parentf24f6e50d7dcabe06d730b19fe5710905e413d33 (diff)
downloadvimium-66a863495355a8fc1deac3f81a3eb619f78aa0d6.tar.bz2
Clean up how defaults are restored, and avoid persisting preferences which are equal to the defaults to localStorage.
-rw-r--r--options.html38
1 files changed, 18 insertions, 20 deletions
diff --git a/options.html b/options.html
index a6dcf323..5a1c5610 100644
--- a/options.html
+++ b/options.html
@@ -21,7 +21,6 @@
}
td {
padding:5px 0;
- vertical-align:top;
}
textarea#excludedUrls {
width:450px;
@@ -58,11 +57,12 @@
var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings;
+ var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters"];
+
function initializeOptions() {
populateOptions();
- var elements = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters"];
- for (var i = 0; i < elements.length; i++)
- $(elements[i]).addEventListener("change", enableSaveButton, false);
+ for (var i = 0; i < editableFields.length; i++)
+ $(editableFields[i]).addEventListener("change", enableSaveButton, false);
$("advancedOptions").addEventListener("click", openAdvancedOptions, false);
}
@@ -70,30 +70,28 @@
// Saves options to localStorage.
function saveOptions() {
- localStorage["scrollStepSize"] = $("scrollStepSize").value
- localStorage["defaultZoomLevel"] = $("defaultZoomLevel").value
- localStorage["excludedUrls"] = $("excludedUrls").value;
- localStorage["linkHintCharacters"] = $("linkHintCharacters").value;
+ // If the value is unchanged from the default, delete the preference from localStorage; this gives us
+ // the freedom to change the defaults in the future.
+ for (var i = 0; i < editableFields.length; i++) {
+ var fieldName = editableFields[i];
+ var fieldValue = $(fieldName).value.trim();
+ if (fieldValue == defaultSettings[fieldName])
+ delete localStorage[fieldName];
+ else
+ localStorage[fieldName] = fieldValue;
+ }
$("saveOptions").disabled = true;
}
// Restores select box state to saved value from localStorage.
function populateOptions() {
- // TODO(ilya): Create a single option list with defaults somewhere to share across various scripts.
- var scrollStepSize = localStorage["scrollStepSize"] || defaultSettings.scrollStepSize;
- var defaultZoomLevel = localStorage["defaultZoomLevel"] || defaultSettings.defaultZoomLevel;
- var defaultExcludedUrls = localStorage["excludedUrls"] || "";
-
- $("scrollStepSize").value = scrollStepSize;
- $("defaultZoomLevel").value = defaultZoomLevel;
- $("excludedUrls").value = defaultExcludedUrls;
+ for (var i = 0; i < editableFields.length; i++)
+ $(editableFields[i]).value = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || "";
}
function restoreToDefaults() {
- scrollStepSize.value = defaultSettings.scrollStepSize;
- defaultZoomLevel.value = defaultSettings.defaultZoomLevel;
- excludedUrls.value = "";
- linkHintCharacters.value = "sadfjklewcmp";
+ for (var i = 0; i < editableFields.length; i++)
+ $(editableFields[i]).value = defaultSettings[editableFields[i]] || "";
enableSaveButton();
}