diff options
Diffstat (limited to 'options.html')
| -rw-r--r-- | options.html | 68 |
1 files changed, 58 insertions, 10 deletions
diff --git a/options.html b/options.html index 344fc01d..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"> @@ -80,7 +83,7 @@ var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings; var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters", - "userDefinedLinkHintCss", "keyMappings"]; + "userDefinedLinkHintCss", "keyMappings", "filterLinkHints"]; var postSaveHooks = { "keyMappings": function (value) { @@ -93,8 +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); + $(editableFields[i]).addEventListener("change", enableSaveButton, false); + $(editableFields[i]).addEventListener("change", onDataLoaded, false); + } + $("advancedOptions").addEventListener("click", openAdvancedOptions, false); $("showCommands").addEventListener("click", function () { showDialog("vimiumCommandListingContainer", @@ -107,6 +115,10 @@ enableSaveButton(); } + function onDataLoaded() { + $("linkHintCharacters").readOnly = $("filterLinkHints").checked; + } + function enableSaveButton() { $("saveOptions").removeAttribute("disabled"); } // Saves options to localStorage. @@ -115,15 +127,25 @@ // 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(); + var field = $(fieldName); + + 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; - $(fieldName).value = fieldValue; - $(fieldName).setAttribute("savedValue", fieldValue); + + field.setAttribute("savedValue", fieldValue); if (postSaveHooks[fieldName]) { postSaveHooks[fieldName](fieldValue); } } @@ -133,17 +155,31 @@ // Restores select box state to saved value from localStorage. function populateOptions() { for (var i = 0; i < editableFields.length; i++) { - $(editableFields[i]).value = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || ""; - $(editableFields[i]).setAttribute("savedValue", $(editableFields[i]).value); + var val = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || ""; + var field = $(editableFields[i]); + 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++) @@ -255,6 +291,18 @@ <textarea id="userDefinedLinkHintCss" type="text"></textarea> </td> </tr> + <tr class="advancedOption"> + <td class="caption">Filter link hints</td> + <td verticalAlign="top"> + <div class="help"> + <div class="example"> + Typing in link hints mode will filter link hints by the link text.<br/><br/> + Note: You <em>must</em> use numeric link hint characters in this mode + </div> + </div> + <input id="filterLinkHints" type="checkbox"/> + </td> + </tr> </table> <div id="buttonsPanel"> |
