Index: options.js |
=================================================================== |
--- a/options.js |
+++ b/options.js |
@@ -67,7 +67,17 @@ |
$("#removeCustomFilter").click(removeSelectedFilters); |
$("#rawFiltersButton").click(toggleFiltersInRawFormat); |
$("#importRawFilters").click(importRawFiltersText); |
- FilterNotifier.addListener(onFilterChange); |
+ |
+ FilterNotifier.on("load", reloadFilters); |
+ FilterNotifier.on("subscription.title", onSubscriptionChange); |
+ FilterNotifier.on("subscription.disabled", onSubscriptionChange); |
+ FilterNotifier.on("subscription.homepage", onSubscriptionChange); |
+ FilterNotifier.on("subscription.lastDownload", onSubscriptionChange); |
+ FilterNotifier.on("subscription.downloadStatus", onSubscriptionChange); |
+ FilterNotifier.on("subscription.added", onSubscriptionAdded); |
+ FilterNotifier.on("subscription.removed", onSubscriptionRemoved); |
+ FilterNotifier.on("filter.added", onFilterAdded); |
+ FilterNotifier.on("filter.removed", onFilterRemoved); |
// Display jQuery UI elements |
$("#tabs").tabs(); |
@@ -175,7 +185,16 @@ |
// Cleans up when the options window is closed |
function unloadOptions() |
{ |
- FilterNotifier.removeListener(onFilterChange); |
+ FilterNotifier.off("load", reloadFilters); |
+ FilterNotifier.off("subscription.title", onSubscriptionChange); |
+ FilterNotifier.off("subscription.disabled", onSubscriptionChange); |
+ FilterNotifier.off("subscription.homepage", onSubscriptionChange); |
+ FilterNotifier.off("subscription.lastDownload", onSubscriptionChange); |
+ FilterNotifier.off("subscription.downloadStatus", onSubscriptionChange); |
+ FilterNotifier.off("subscription.added", onSubscriptionAdded); |
+ FilterNotifier.off("subscription.removed", onSubscriptionRemoved); |
+ FilterNotifier.off("filter.added", onFilterAdded); |
+ FilterNotifier.off("filter.removed", onFilterRemoved); |
} |
function initCheckbox(id, descriptor) |
@@ -421,61 +440,59 @@ |
} |
} |
-function onFilterChange(action, item, param1, param2) |
+function onSubscriptionChange(subscription) |
{ |
- switch (action) |
+ var element = findSubscriptionElement(subscription); |
+ if (element) |
+ updateSubscriptionInfo(element); |
+} |
+ |
+function onSubscriptionAdded(subscription) |
+{ |
+ if (subscription instanceof SpecialSubscription) |
{ |
- case "load": |
- reloadFilters(); |
- break; |
- case "subscription.title": |
- case "subscription.disabled": |
- case "subscription.homepage": |
- case "subscription.lastDownload": |
- case "subscription.downloadStatus": |
- var element = findSubscriptionElement(item); |
- if (element) |
- updateSubscriptionInfo(element); |
- break; |
- case "subscription.added": |
- if (item instanceof SpecialSubscription) |
- { |
- for (var i = 0; i < item.filters.length; i++) |
- onFilterChange("filter.added", item.filters[i]); |
- } |
- else if (item.url == Prefs.subscriptions_exceptionsurl) |
- $("#acceptableAds").prop("checked", true); |
- else if (!findSubscriptionElement(item)) |
- addSubscriptionEntry(item); |
- break; |
- case "subscription.removed": |
- if (item instanceof SpecialSubscription) |
- { |
- for (var i = 0; i < item.filters.length; i++) |
- onFilterChange("filter.removed", item.filters[i]); |
- } |
- else if (item.url == Prefs.subscriptions_exceptionsurl) |
- $("#acceptableAds").prop("checked", false); |
- else |
- { |
- var element = findSubscriptionElement(item); |
- if (element) |
- element.parentNode.removeChild(element); |
- } |
- break; |
- case "filter.added": |
- if (item instanceof WhitelistFilter && /^@@\|\|([^\/:]+)\^\$document$/.test(item.text)) |
- appendToListBox("excludedDomainsBox", RegExp.$1); |
- else |
- appendToListBox("userFiltersBox", item.text); |
- break; |
- case "filter.removed": |
- if (item instanceof WhitelistFilter && /^@@\|\|([^\/:]+)\^\$document$/.test(item.text)) |
- removeFromListBox("excludedDomainsBox", RegExp.$1); |
- else |
- removeFromListBox("userFiltersBox", item.text); |
- break; |
+ for (var i = 0; i < subscription.filters.length; i++) |
+ onFilterChange("filter.added", subscription.filters[i]); |
} |
+ else if (subscription.url == Prefs.subscriptions_exceptionsurl) |
+ $("#acceptableAds").prop("checked", true); |
+ else if (!findSubscriptionElement(subscription)) |
+ addSubscriptionEntry(subscription); |
+} |
+ |
+function onSubscriptionRemoved(subscription) |
+{ |
+ if (subscription instanceof SpecialSubscription) |
+ { |
+ for (var i = 0; i < subscription.filters.length; i++) |
+ onFilterChange("filter.removed", subscription.filters[i]); |
+ } |
+ else if (subscription.url == Prefs.subscriptions_exceptionsurl) |
+ $("#acceptableAds").prop("checked", false); |
+ else |
+ { |
+ var element = findSubscriptionElement(subscription); |
+ if (element) |
+ element.parentNode.removeChild(element); |
+ } |
+} |
+ |
+function onFilterAdded(filter) |
+{ |
+ if (filter instanceof WhitelistFilter && |
+ /^@@\|\|([^\/:]+)\^\$document$/.test(filter.text)) |
+ appendToListBox("excludedDomainsBox", RegExp.$1); |
+ else |
+ appendToListBox("userFiltersBox", filter.text); |
+} |
+ |
+function onFilterRemoved(filter) |
+{ |
+ if (filter instanceof WhitelistFilter && |
+ /^@@\|\|([^\/:]+)\^\$document$/.test(filter.text)) |
+ removeFromListBox("excludedDomainsBox", RegExp.$1); |
+ else |
+ removeFromListBox("userFiltersBox", filter.text); |
} |
// Populates a list box with a number of entries |