diff options
| author | Phil Crosby | 2010-01-18 00:44:13 -0800 |
|---|---|---|
| committer | Phil Crosby | 2010-01-18 00:44:13 -0800 |
| commit | 66a863495355a8fc1deac3f81a3eb619f78aa0d6 (patch) | |
| tree | fd2eab6f33fa59127f46f56ba855ba2800540723 | |
| parent | f24f6e50d7dcabe06d730b19fe5710905e413d33 (diff) | |
| download | vimium-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.html | 38 |
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(); } |
