Changeset b05215


Ignore:
Timestamp:
Aug 11, 2008, 5:51:34 PM (11 years ago)
Author:
rene <rene@…>
Branches:
master
Children:
49a198
Parents:
b89f87
Message:

added code for statusmenu

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chrome/content/v_identity/v_identity.js

    rb89f87 rb05215  
    2222    Contributor(s):
    2323 * ***** END LICENSE BLOCK ***** */
     24
     25var vI_statusmenu = {
     26    prefroot : Components.classes["@mozilla.org/preferences-service;1"]
     27        .getService(Components.interfaces.nsIPrefService)
     28        .getBranch(null),
     29
     30    objStatusMenu : null,
     31    objSaveBaseIDMenuItem : null,
     32    objStorageSaveMenuItem : null,
     33    objStatusMenuSeparator : null,
     34    objSaveSwitch : null,
     35    objStatusText : null,
     36   
     37    observe: function(subject, topic, data) {
     38        switch (data) {
     39            case "extensions.virtualIdentity.storage_show_switch":
     40                vI_statusmenu.objSaveSwitch.setAttribute("hidden", !vI_statusmenu.prefroot.getBoolPref(data));
     41                // no break, continue like with storedefault
     42            case "extensions.virtualIdentity.storage_storedefault":
     43                vI_statusmenu.objStorageSaveMenuItem.setAttribute("checked", vI_statusmenu.prefroot.getBoolPref("extensions.virtualIdentity.storage_storedefault"));
     44                break;
     45            case "extensions.virtualIdentity.storage_store_base_id":
     46                vI_statusmenu.objSaveBaseIDMenuItem.setAttribute("checked", vI_statusmenu.prefroot.getBoolPref(data));
     47                break;
     48            case "extensions.virtualIdentity.storage":
     49                if (vI_statusmenu.prefroot.getBoolPref(data)) {
     50                    vI_statusmenu.objStorageSaveMenuItem.removeAttribute("hidden");
     51                    vI_statusmenu.objSaveBaseIDMenuItem.removeAttribute("hidden");
     52                    vI_statusmenu.objStatusMenuSeparator.removeAttribute("hidden");
     53                }
     54                else {
     55                    vI_statusmenu.objStorageSaveMenuItem.setAttribute("hidden", "true");
     56                    vI_statusmenu.objSaveBaseIDMenuItem.setAttribute("hidden", "true");
     57                    vI_statusmenu.objStatusMenuSeparator.setAttribute("hidden", "true");
     58                }
     59                break;
     60        }
     61        vI_statusmenu.menuConstraint(vI_statusmenu.objStorageSaveMenuItem);
     62    },
     63   
     64    addObserver: function() {
     65        vI_statusmenu.prefroot.addObserver("extensions.virtualIdentity.storage", vI_statusmenu, false);
     66        vI_statusmenu.prefroot.addObserver("extensions.virtualIdentity.storage_show_switch", vI_statusmenu, false);
     67        vI_statusmenu.prefroot.addObserver("extensions.virtualIdentity.storage_storedefault", vI_statusmenu, false);   
     68        vI_statusmenu.prefroot.addObserver("extensions.virtualIdentity.storage_store_base_id", vI_statusmenu, false);   
     69    },
     70   
     71    removeObserver: function() {
     72        vI_statusmenu.prefroot.removeObserver("extensions.virtualIdentity.storage", vI_statusmenu);
     73        vI_statusmenu.prefroot.removeObserver("extensions.virtualIdentity.storage_show_switch", vI_statusmenu);
     74        vI_statusmenu.prefroot.removeObserver("extensions.virtualIdentity.storage_storedefault", vI_statusmenu);
     75        vI_statusmenu.prefroot.removeObserver("extensions.virtualIdentity.storage_store_base_id", vI_statusmenu);
     76    },
     77   
     78    init : function () {
     79        vI_statusmenu.prefroot.QueryInterface(Components.interfaces.nsIPrefBranch2);
     80
     81        vI_statusmenu.objStatusMenu = document.getElementById("vI-status-menu");
     82        vI_statusmenu.objSaveBaseIDMenuItem = document.getElementById("vI_statusMenu_storage_saveBaseID");
     83        vI_statusmenu.objStorageSaveMenuItem = document.getElementById("vI_statusMenu_storage_save");
     84        vI_statusmenu.objStatusMenuSeparator = document.getElementById("vI_statusMenu_separator");
     85        vI_statusmenu.objSaveSwitch = document.getElementById("storage_save");
     86        vI_statusmenu.objStatusText = document.getElementById("statusText");
     87
     88        vI_statusmenu.addObserver();
     89        vI_statusmenu.observe(null, null, "extensions.virtualIdentity.storage_show_switch");
     90        vI_statusmenu.observe(null, null, "extensions.virtualIdentity.storage_store_base_id");
     91        vI_statusmenu.observe(null, null, "extensions.virtualIdentity.storage");
     92    },
     93   
     94    saveBaseIDClicked : function () {
     95        vI_statusmenu.menuConstraint(vI_statusmenu.objStorageSaveMenuItem);
     96    },
     97
     98    __timeout : 5,  // timeout for status messages in seconds
     99    __addStatusMessage : function(save) {
     100        var message = vI.elements.strings.getString("vident.statusText.save." + save);
     101        vI_statusmenu.objStatusText.setAttribute("label", message);
     102        window.setTimeout(vI_statusmenu.__clearStatusMessage, vI_statusmenu.__timeout * 1000);
     103    },
     104
     105    __clearStatusMessage : function() {
     106        vI_statusmenu.objStatusText.setAttribute("label", "");
     107    },
     108
     109    menuConstraint : function (elem) {
     110        var save = "off";
     111        if (vI_statusmenu.prefroot.getBoolPref("extensions.virtualIdentity.storage") &&
     112            elem.getAttribute("checked") == "true") {
     113            if (vI_statusmenu.objSaveBaseIDMenuItem.getAttribute("checked") == "true")
     114                save = "base";
     115            else save = "ok";
     116        }
     117        vI_statusmenu.objStatusMenu.setAttribute("save", save);
     118        vI_statusmenu.__addStatusMessage(save);
     119    },
     120
     121    clicked : function (button) {
     122        if (button != 0) return; // only react on left mouse button
     123        if (!vI_statusmenu.prefroot.getBoolPref("extensions.virtualIdentity.storage")) return;
     124
     125        var curSaveStatus = (vI_statusmenu.objStorageSaveMenuItem.getAttribute("checked") == "true");
     126        var curSaveBaseIDStatus = (vI_statusmenu.objSaveBaseIDMenuItem.getAttribute("checked") == "true");
     127        var newSaveStatus = ((!curSaveStatus) || (curSaveStatus && !curSaveBaseIDStatus))
     128        var newSaveBaseIDStatus = (!curSaveBaseIDStatus && curSaveStatus)
     129        vI_statusmenu.objStorageSaveMenuItem.setAttribute("checked", newSaveStatus)
     130        vI_statusmenu.objSaveBaseIDMenuItem.setAttribute("checked", newSaveBaseIDStatus)
     131
     132        var elem = vI_statusmenu.objStorageSaveMenuItem;
     133        vI_statusmenu.menuConstraint(elem);
     134    },
     135}
    24136
    25137var vI = {
     
    214326        vI_smtpSelector.init();
    215327        vI_msgIdentityClone.init();
     328        vI_statusmenu.init();
    216329    },
    217330   
     
    364477window.addEventListener('load', vI.init, false);        // TB 1.5x, SM
    365478window.addEventListener('compose-window-init', vI.init, true);  // TB 2.x 3.x
     479
     480window.addEventListener("unload", function(e) { try {vI_statusmenu.removeObserver();} catch (ex) { } }, false);
     481
Note: See TracChangeset for help on using the changeset viewer.