| Index: lib/stats.js |
| =================================================================== |
| --- a/lib/stats.js |
| +++ b/lib/stats.js |
| @@ -23,6 +23,8 @@ |
| let {BlockingFilter} = require("filterClasses"); |
| let {FilterNotifier} = require("filterNotifier"); |
| +let badgeColor = [100, 100, 100, 255]; |
| + |
| /** |
| * Get statistics for specified tab |
| * @param {String} key field key |
| @@ -43,7 +45,7 @@ |
| if (action != "filter.hitCount") |
| return; |
| - var blocked = item instanceof BlockingFilter; |
| + let blocked = item instanceof BlockingFilter; |
| // Increment counts |
| if (blocked) |
| @@ -62,5 +64,57 @@ |
| else |
| frameData.blocked = 1; |
| } |
| + |
| + // Update number in icon |
| + if (Prefs.show_iconnumber) |
| + { |
| + tab.browserAction.setBadgeBackgroundColor(badgeColor); |
| + tab.browserAction.setBadgeText(frameData.blocked.toString()); |
| + } |
| } |
| }); |
| + |
| +/** |
| + * Execute function for each tab in any window |
| + * @param {Function} func function to be executed |
| + */ |
| +function forEachTab(func) |
| +{ |
| + ext.windows.getAll(function(windows) |
| + { |
| + for (let i = 0; i < windows.length; i++) |
| + { |
| + windows[i].getAllTabs(function(tabs) |
| + { |
| + for (let i = 0; i < tabs.length; i++) |
| + func(tabs[i]); |
| + }); |
| + } |
| + }); |
| +} |
| + |
| +Prefs.addListener(function(name) |
| +{ |
| + if (name != "show_iconnumber") |
| + return; |
| + |
| + if (Prefs.show_iconnumber) |
| + { |
| + // Add number to icon |
| + forEachTab(function(tab) { |
| + tab.browserAction.setBadgeBackgroundColor(badgeColor); |
| + |
| + let frameData = getFrameData(tab, 0); |
| + if (frameData && "blocked" in frameData) |
| + tab.browserAction.setBadgeText(frameData.blocked.toString()); |
| + }); |
| + } |
| + else |
| + { |
| + // Remove number from icon |
| + forEachTab(function(tab) |
| + { |
| + tab.browserAction.setBadgeText(""); |
| + }); |
| + } |
| +}); |