Ticket #10280: proper_intercat_by_ui.2.diff

File proper_intercat_by_ui.2.diff, 5.3 KB (added by erinn, 6 years ago)
  • extensions.js

    old new  
    754754      }
    755755    },
    756756
     757    cmd_goToEnablePlugins: {
     758      isEnabled: function cmd_goToEnablePlugins_isEnabled() true,
     759      doCommand: function cmd_goToEnablePlugins_doCommand() {
     760        Services.prefs.setBoolPref("plugin.disable", false);
     761      }
     762    },
     763
     764    cmd_goToDisablePlugins: {
     765      isEnabled: function cmd_goToDisablePlugins_isEnabled() true,
     766      doCommand: function cmd_goToDisablePlugins_doCommand() {
     767        Services.prefs.setBoolPref("plugin.disable", true);
     768      }
     769    },
     770
    757771    cmd_goToRecentUpdates: {
    758772      isEnabled: function cmd_goToRecentUpdates_isEnabled() true,
    759773      doCommand: function cmd_goToRecentUpdates_doCommand() {
     
    23992413  node: null,
    24002414  _listBox: null,
    24012415  _emptyNotice: null,
     2416  _pluginDisabledNotice: null,
     2417  _pluginEnabledNotice: null,
    24022418  _type: null,
     2419  _pluginListEmpty: false,
    24032420
    24042421  initialize: function gListView_initialize() {
    24052422    this.node = document.getElementById("list-view");
    24062423    this._listBox = document.getElementById("addon-list");
    24072424    this._emptyNotice = document.getElementById("addon-list-empty");
     2425    this._pluginDisabledNotice = document.getElementById("plugin-disabled");
     2426    this._pluginEnabledNotice = document.getElementById("plugin-enabled");
    24082427
    24092428    var self = this;
    24102429    this._listBox.addEventListener("keydown", function listbox_onKeydown(aEvent) {
     
    24172436    }, false);
    24182437  },
    24192438
     2439  shutdown: function gListView_shutdown() {
     2440    AddonManager.removeAddonListener(this);
     2441  },
     2442
    24202443  show: function gListView_show(aType, aRequest) {
    24212444    if (!(aType in AddonManager.addonTypes))
    24222445      throw Components.Exception("Attempting to show unknown type " + aType, Cr.NS_ERROR_INVALID_ARG);
     
    24242447    this._type = aType;
    24252448    this.node.setAttribute("type", aType);
    24262449    this.showEmptyNotice(false);
     2450    this.showPluginEnabledNotice(false);
     2451    this.showPluginDisabledNotice(false);
    24272452
    24282453    while (this._listBox.itemCount > 0)
    24292454      this._listBox.removeItemAt(0);
     2455    this._pluginListEmpty = true;
    24302456
    24312457    var self = this;
    24322458    getAddonsAndInstalls(aType, function show_getAddonsAndInstalls(aAddonsList, aInstallsList) {
     
    24412467      for (let installItem of aInstallsList)
    24422468        elements.push(createItem(installItem, true));
    24432469
    2444       self.showEmptyNotice(elements.length == 0);
    24452470      if (elements.length > 0) {
    24462471        sortElements(elements, ["uiState", "name"], true);
    24472472        for (let element of elements)
    24482473          self._listBox.appendChild(element);
    24492474      }
     2475      self.showAllNeedNotices(true);
    24502476
    24512477      gEventManager.registerInstallListener(self);
    24522478      gViewController.updateCommands();
    24532479      gViewController.notifyViewChanged();
     2480      AddonManager.addAddonListener(self);
    24542481    });
    24552482  },
    24562483
    24572484  hide: function gListView_hide() {
     2485    AddonManager.removeAddonListener(this);
    24582486    gEventManager.unregisterInstallListener(this);
    24592487    doPendingUninstalls(this._listBox);
    24602488  },
     
    24632491    this._emptyNotice.hidden = !aShow;
    24642492  },
    24652493
     2494  showPluginDisabledNotice: function gListView_showPluginDisabledNotice(aShow) {
     2495    this._pluginDisabledNotice.hidden = !aShow;
     2496  },
     2497
     2498  showPluginEnabledNotice: function gListView_showPluginEnabledNotice(aShow) {
     2499    this._pluginEnabledNotice.hidden = !aShow;
     2500  },
     2501
     2502  showAllNeedNotices: function gListView_showAllNeedNotices(aShow) {
     2503      var empty_list = (this._listBox.itemCount == 0);
     2504      var show_empty_notice = true;     
     2505
     2506      if (this._type == "plugin") {
     2507        var update_notices = (this._pluginListEmpty != empty_list);
     2508        this._pluginListEmpty = empty_list;
     2509
     2510        if (update_notices || aShow) {
     2511          var plugin_disable = false;
     2512
     2513          try {
     2514            plugin_disable = Services.prefs.getBoolPref("plugin.disable")
     2515          } catch (e) {}
     2516
     2517          if (plugin_disable == true) {
     2518            this.showPluginEnabledNotice(false);
     2519            this.showPluginDisabledNotice(true);
     2520            show_empty_notice = false;
     2521          } else { 
     2522            this.showPluginDisabledNotice(false);
     2523            this.showPluginEnabledNotice(true);
     2524          }
     2525        }
     2526      }
     2527      if (show_empty_notice == true)
     2528        this.showEmptyNotice(empty_list);
     2529  },
     2530
    24662531  onSortChanged: function gListView_onSortChanged(aSortBy, aAscending) {
    24672532    sortList(this._listBox, aSortBy, aAscending);
    24682533  },
     
    24982563      this.removeItem(aInstall, true);
    24992564  },
    25002565
     2566  onUninstalled: function gListView_onUninstalled()  {
     2567    this.showAllNeedNotices(false);
     2568  },
     2569
    25012570  addItem: function gListView_addItem(aObj, aIsInstall) {
    25022571    if (aObj.type != this._type)
    25032572      return;
     
    25132582
    25142583    let item = createItem(aObj, aIsInstall);
    25152584    this._listBox.insertBefore(item, this._listBox.firstChild);
    2516     this.showEmptyNotice(false);
     2585    this.showAllNeedNotices(false);
    25172586  },
    25182587
    25192588  removeItem: function gListView_removeItem(aObj, aIsInstall) {
     
    25222591    for (let item of this._listBox.childNodes) {
    25232592      if (item[prop] == aObj) {
    25242593        this._listBox.removeChild(item);
    2525         this.showEmptyNotice(this._listBox.itemCount == 0);
     2594        this.showAllNeedNotices(false);
    25262595        return;
    25272596      }
    25282597    }