| Index: options.js |
| =================================================================== |
| --- a/options.js |
| +++ b/options.js |
| @@ -602,6 +602,13 @@ |
| document.body.setAttribute("data-tab", |
| element.getAttribute("data-tab")); |
| break; |
| + case "toggle-pref": |
| + ext.backgroundPage.sendMessage( |
| + { |
| + type: "prefs.toggle", |
| + key: findParentData(element, "pref", false) |
| + }); |
| + break; |
| case "update-all-subscriptions": |
| ext.backgroundPage.sendMessage( |
| { |
| @@ -690,6 +697,29 @@ |
| }, false); |
| // Advanced tab |
| + var tweaks = document.querySelectorAll("#tweaks li[data-pref]"); |
| + tweaks = Array.prototype.map.call(tweaks, function(checkbox) |
| + { |
| + return checkbox.getAttribute("data-pref"); |
| + }); |
| + tweaks.forEach(function(key) |
| + { |
| + getPref(key, function(value) |
| + { |
| + onPrefMessage(key, value); |
| + }); |
| + }); |
| + ext.backgroundPage.sendMessage( |
| + { |
| + type: "app.get", |
| + what: "features" |
| + }, |
| + function(features) |
| + { |
| + hidePref("show_devtools_panel", !features.devToolsPanel); |
| + hidePref("safari_contentblocker", !features.safariContentBlocker); |
| + }); |
| + |
| var filterTextbox = document.querySelector("#custom-filters-add input"); |
| placeholderValue = getMessage("options_customFilters_textbox_placeholder"); |
| filterTextbox.setAttribute("placeholder", placeholderValue); |
| @@ -846,17 +876,12 @@ |
| function getAcceptableAdsURL(callback) |
| { |
| - ext.backgroundPage.sendMessage( |
| - { |
| - type: "prefs.get", |
| - key: "subscriptions_exceptionsurl" |
| - }, |
| - function(value) |
| + getPref("subscriptions_exceptionsurl", function(value) |
| { |
| getAcceptableAdsURL = function(callback) |
| { |
| callback(value); |
| - } |
| + }; |
| getAcceptableAdsURL(callback); |
| }); |
| } |
| @@ -956,6 +981,58 @@ |
| } |
| } |
| + function hidePref(key, value) |
| + { |
| + var element = document.querySelector("[data-pref='" + key + "']"); |
| + if (element) |
| + element.setAttribute("aria-hidden", value); |
| + } |
| + |
| + function getPref(key, callback) |
| + { |
| + var checkPref = getPref.checks[key] || getPref.checkNone; |
| + checkPref(function(isActive) |
| + { |
| + if (!isActive) |
| + { |
| + hidePref(key, !isActive); |
| + return; |
| + } |
| + |
| + ext.backgroundPage.sendMessage( |
| + { |
| + type: "prefs.get", |
| + key: key |
| + }, callback); |
| + }); |
| + } |
| + |
| + getPref.checkNone = function(callback) |
| + { |
| + callback(true); |
| + }; |
| + |
| + getPref.checks = |
| + { |
| + notifications_ignoredcategories: function(callback) |
| + { |
| + getPref("notifications_showui", callback); |
| + } |
| + }; |
| + |
| + function onPrefMessage(key, value) |
| + { |
| + var checkbox = document.querySelector("[data-pref='" + key + "'] button[role='checkbox']"); |
| + if (checkbox) |
| + { |
| + if (key == "notifications_ignoredcategories") |
| + value = (value.indexOf("*") == -1); |
| + checkbox.setAttribute("aria-checked", value); |
| + } |
| + else if (key == "notifications_showui") |
| + hidePref("notifications_ignoredcategories", !value); |
| + } |
| + |
| function onShareLinkClick(e) |
| { |
| e.preventDefault(); |
| @@ -1014,6 +1091,9 @@ |
| case "filters.listen": |
| onFilterMessage(message.action, message.args[0]); |
| break; |
| + case "prefs.listen": |
| + onPrefMessage(message.action, message.args[0]); |
| + break; |
| case "subscriptions.listen": |
| onSubscriptionMessage(message.action, message.args[0]); |
| break; |
| @@ -1032,8 +1112,16 @@ |
| }); |
| ext.backgroundPage.sendMessage( |
| { |
| + type: "prefs.listen", |
| + filter: ["notifications_ignoredcategories", "notifications_showui", |
| + "safari_contentblocker", "show_devtools_panel", |
|
saroyanm
2016/03/16 10:59:18
detail: please use two spaces for indentation, sam
Thomas Greiner
2016/03/16 11:14:36
Is this a personal preference? Note that those are
saroyanm
2016/03/16 12:27:34
No I just wasn't considering the Indentation level
|
| + "shouldShowBlockElementMenu"] |
| + }); |
| + ext.backgroundPage.sendMessage( |
| + { |
| type: "subscriptions.listen", |
| - filter: ["added", "disabled", "homepage", "lastDownload", "removed", "title"] |
| + filter: ["added", "disabled", "homepage", "lastDownload", "removed", |
| + "title"] |
| }); |
| window.addEventListener("DOMContentLoaded", onDOMLoaded, false); |