2
|
1 var extensionAppEnabler = {
|
|
2
|
|
3 prefs: null,
|
|
4 cs: null,
|
|
5
|
|
6 init: function() {
|
|
7 var pos = gAddonContextMenus.indexOf("menuitem_enable");
|
|
8 gAddonContextMenus.splice(pos, 0, "menuitem_appenable");
|
|
9 this.cs = Components.classes["@oxymoronical.com/nightly/addoncompatibility;1"]
|
|
10 .createInstance(Components.interfaces.nttIAddonCompatibilityService);
|
|
11 },
|
|
12
|
|
13 initView: function() {
|
|
14 var enableb = document.getElementById("enableallButton");
|
|
15
|
|
16 if (!this.prefs.getBoolPref("showEnableAll")) {
|
|
17 enableb.hidden = true;
|
|
18 return;
|
|
19 }
|
|
20
|
|
21 var parent = document.getElementById("viewGroup");
|
|
22 var node = parent.firstChild;
|
|
23 while (node != null) {
|
|
24 if (node.selected) {
|
|
25 switch (node.id) {
|
|
26 case "extensions-view":
|
|
27 case "themes-view":
|
|
28 case "locales-view":
|
|
29 enableb.hidden = false;
|
|
30 break;
|
|
31 default:
|
|
32 enableb.hidden = true;
|
|
33 }
|
|
34 return;
|
|
35 }
|
|
36 node = node.nextSibling;
|
|
37 }
|
|
38
|
|
39 enableb.hidden = true;
|
|
40 },
|
|
41
|
|
42 load: function() {
|
|
43 var prefservice = Components.classes['@mozilla.org/preferences-service;1']
|
|
44 .getService(Components.interfaces.nsIPrefService);
|
|
45 this.prefs = prefservice.getBranch("nightly.")
|
|
46 .QueryInterface(Components.interfaces.nsIPrefBranchInternal);
|
|
47
|
|
48 var context = document.getElementById("addonContextMenu");
|
|
49 context.addEventListener("popupshowing", function() { extensionAppEnabler.popupShowing(); }, false);
|
|
50
|
|
51 var radios = document.getElementById("viewGroup");
|
|
52 radios.addEventListener("select", function() { extensionAppEnabler.initView(); }, false);
|
|
53 this.initView();
|
|
54 },
|
|
55
|
|
56 popupShowing: function() {
|
|
57 var item = gExtensionsView.selectedItem;
|
|
58 var menu = document.getElementById("menuitem_appenable");
|
|
59 var menuclone = document.getElementById("menuitem_appenable_clone");
|
|
60 var addon = this.cs.getAddonForID(item.getAttribute("addonID"));
|
|
61 menu.hidden = !(addon.isValid() && addon.needsOverride(false));
|
|
62 if (menuclone)
|
|
63 menuclone.hidden = menu.hidden;
|
|
64 },
|
|
65
|
|
66 appEnable: function() {
|
|
67 var ev = gExtensionsView;
|
|
68 var item = ev.selectedItem;
|
|
69 this.cs.confirmOverride([this.cs.getAddonForID(item.getAttribute("addonID"))], 1);
|
|
70 this.syncCompatibility();
|
|
71 },
|
|
72
|
|
73 enableAll: function() {
|
|
74 var addons = [];
|
|
75 var items = gExtensionsView.children;
|
|
76 for (var i = 0; i < items.length; i++) {
|
|
77 var addon = this.cs.getAddonForID(items[i].getAttribute("addonID"));
|
|
78 if (addon.isValid() && addon.needsOverride(false))
|
|
79 addons.push(addon);
|
|
80 }
|
|
81 if (addons.length > 0) {
|
|
82 this.cs.confirmOverride(addons, addons.length);
|
|
83 this.syncCompatibility();
|
|
84 }
|
|
85 },
|
|
86
|
|
87 syncCompatibility: function() {
|
|
88 var prefService = Components.classes['@mozilla.org/preferences-service;1']
|
|
89 .getService(Components.interfaces.nsIPrefBranch);
|
|
90 try {
|
|
91 var checkCompatibility = prefService.getBoolPref("extensions.checkCompatibility");
|
|
92 prefService.setBoolPref("extensions.checkCompatibility", !checkCompatibility);
|
|
93 prefService.setBoolPref("extensions.checkCompatibility", checkCompatibility);
|
|
94 }
|
|
95 catch (e) {
|
|
96 prefService.setBoolPref("extensions.checkCompatibility", false);
|
|
97 prefService.setBoolPref("extensions.checkCompatibility", true);
|
|
98 }
|
|
99 updateOptionalViews();
|
|
100 updateGlobalCommands();
|
|
101 }
|
|
102 }
|
|
103
|
|
104 extensionAppEnabler.init();
|
|
105
|
|
106 window.addEventListener("load", function() { extensionAppEnabler.load(); }, false);
|