diff options
Diffstat (limited to 'options.html')
| -rw-r--r-- | options.html | 54 |
1 files changed, 20 insertions, 34 deletions
diff --git a/options.html b/options.html index 1724f51b..f1194554 100644 --- a/options.html +++ b/options.html @@ -79,12 +79,12 @@ <script type="text/javascript"> $ = function(id) { return document.getElementById(id); }; - currentlyShowingDialog = null; - var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings; var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters", - "userDefinedLinkHintCss", "keyMappings", "filterLinkHints"]; + "userDefinedLinkHintCss", "keyMappings", "filterLinkHints"]; + + var canBeEmptyFields = ["excludedUrls", "keyMappings", "userDefinedLinkHintCss"]; var postSaveHooks = { keyMappings: function (value) { @@ -106,8 +106,8 @@ $("advancedOptions").addEventListener("click", openAdvancedOptions, false); $("showCommands").addEventListener("click", function () { - showDialog("vimiumCommandListingContainer", - chrome.extension.getBackgroundPage().helpDialogHtml(true, true, "Command Listing")); + showHelpDialog( + chrome.extension.getBackgroundPage().helpDialogHtml(true, true, "Command Listing"), frameId); }, false); } @@ -141,12 +141,18 @@ var defaultFieldValue = (defaultSettings[fieldName] != null) ? defaultSettings[fieldName].toString() : ""; + // Don't save to storage if it's equal to the default if (fieldValue == defaultFieldValue) delete localStorage[fieldName]; - else + // ..or if it's empty and not a field that we allow to be empty. + else if (!fieldValue && canBeEmptyFields.indexOf(fieldName) == -1) { + delete localStorage[fieldName]; + fieldValue = defaultFieldValue; + } else localStorage[fieldName] = fieldValue; - field.setAttribute("savedValue", fieldValue); + $(fieldName).value = fieldValue; + $(fieldName).setAttribute("savedValue", fieldValue); if (postSaveHooks[fieldName]) { postSaveHooks[fieldName](fieldValue); } } @@ -156,9 +162,13 @@ // Restores select box state to saved value from localStorage. function populateOptions() { for (var i = 0; i < editableFields.length; i++) { - var val = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || ""; - var field = $(editableFields[i]); - setFieldValue($(editableFields[i]), val); + // If it's null or undefined, let's go to the default. We want to allow empty strings in certain cases. + if (localStorage[editableFields[i]] != "" && !localStorage[editableFields[i]]) { + var val = defaultSettings[editableFields[i]] || ""; + } else { + var val = localStorage[editableFields[i]]; + } + setFieldValue($(editableFields[i]), val); } onDataLoaded(); } @@ -187,30 +197,6 @@ elements[i].style.display = (elements[i].style.display == "table-row") ? "none" : "table-row"; event.preventDefault(); } - - function showDialog(dialogId, dialogHtml) { - if (currentlyShowingDialog) - return false; - - currentlyShowingDialog = dialogId; - var container = document.createElement("div"); - container.id = currentlyShowingDialog; - container.innerHTML = dialogHtml; - container.getElementsByClassName("closeButton")[0].addEventListener("click", hideDialog, false); - container.getElementsByClassName("optionsPage")[0].style.display = 'none'; - document.body.appendChild(container); - var dialog = document.getElementById("vimiumHelpDialog"); - dialog.style.top = Math.max((window.innerHeight - dialog.clientHeight) / 2.0, 20) + "px"; - } - - function hideDialog() { - var dialog = document.getElementById(currentlyShowingDialog); - if (dialog) - dialog.parentNode.removeChild(dialog); - - currentlyShowingDialog = null; - } - </script> </head> |
