diff options
| -rw-r--r-- | options.html | 61 |
1 files changed, 40 insertions, 21 deletions
diff --git a/options.html b/options.html index 8be47f4c..f752abcd 100644 --- a/options.html +++ b/options.html @@ -70,7 +70,10 @@ tr.advancedOption { display:none; } - + input:read-only { + background-color: #eee; + color: #666; + } </style> <script type="text/javascript"> @@ -93,9 +96,13 @@ function initializeOptions() { populateOptions(); - for (var i = 0; i < editableFields.length; i++) + + for (var i = 0; i < editableFields.length; i++) { $(editableFields[i]).addEventListener("keyup", onOptionKeyup, false); - $("filterLinkHints").addEventListener("click", onOptionKeyup, false); + $(editableFields[i]).addEventListener("change", enableSaveButton, false); + $(editableFields[i]).addEventListener("change", onDataLoaded, false); + } + $("advancedOptions").addEventListener("click", openAdvancedOptions, false); $("showCommands").addEventListener("click", function () { showDialog("vimiumCommandListingContainer", @@ -104,11 +111,14 @@ } function onOptionKeyup(event) { - var isCheckbox = event.target.getAttribute("type") == "checkbox"; - if (isCheckbox || event.target.getAttribute("savedValue") != event.target.value) + if (event.target.getAttribute("savedValue") != event.target.value) enableSaveButton(); } + function onDataLoaded() { + $("linkHintCharacters").readOnly = $("filterLinkHints").checked; + } + function enableSaveButton() { $("saveOptions").removeAttribute("disabled"); } // Saves options to localStorage. @@ -118,19 +128,23 @@ for (var i = 0; i < editableFields.length; i++) { var fieldName = editableFields[i]; var field = $(fieldName); - var fieldValue = field.value.trim(); - var defaultFieldValue = (defaultSettings[fieldName] != null) ? - defaultSettings[fieldName].toString() : ""; - if (field.getAttribute("type") == "checkbox") + var fieldValue; + if (field.getAttribute("type") == "checkbox") { fieldValue = field.checked ? "true" : "false"; + } else { + fieldValue = field.value.trim(); + field.value = fieldValue; + } + + var defaultFieldValue = (defaultSettings[fieldName] != null) ? + defaultSettings[fieldName].toString() : ""; if (fieldValue == defaultFieldValue) delete localStorage[fieldName]; else localStorage[fieldName] = fieldValue; - field.value = fieldValue; field.setAttribute("savedValue", fieldValue); if (postSaveHooks[fieldName]) { postSaveHooks[fieldName](fieldValue); } @@ -143,24 +157,29 @@ for (var i = 0; i < editableFields.length; i++) { var val = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || ""; var field = $(editableFields[i]); - - // if a true or false is stored, assume we're working with a checkbox - if (val == "true") - field.checked = true; - if (val == "false") - field.checked = false; - - field.value = val; - field.setAttribute("savedValue", field.value); + setFieldValue($(editableFields[i]), val); } + onDataLoaded(); } function restoreToDefaults() { - for (var i = 0; i < editableFields.length; i++) - $(editableFields[i]).value = defaultSettings[editableFields[i]] || ""; + for (var i = 0; i < editableFields.length; i++) { + var val = defaultSettings[editableFields[i]] || ""; + setFieldValue($(editableFields[i]), val); + } + onDataLoaded(); enableSaveButton(); } + function setFieldValue(field, value) { + if (field.getAttribute('type') == 'checkbox') + field.checked = value == "true"; + else + field.value = value; + + field.setAttribute("savedValue", value); + } + function openAdvancedOptions(event) { var elements = document.getElementsByClassName("advancedOption"); for (var i = 0; i < elements.length; i++) |
