This is just some static backup of the original site, don't expect every link to work!

Ignore:
Timestamp:
Nov 3, 2014, 12:35:40 PM (8 years ago)
Author:
rene <rene@…>
Branches:
ng_0.9
Children:
7204cb
Parents:
3c9c29
Message:

code formatting (no code changes)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • content/v_identity.js

    r3c9c29 r509348  
    2424
    2525Components.utils.import("resource://v_identity/vI_nameSpaceWrapper.js");
    26 virtualIdentityExtension.ns(function() { with (virtualIdentityExtension.LIB) {
    27 
    28 let Log = vI.setupLogging("virtualIdentity.main");
    29 Components.utils.import("resource://v_identity/vI_account.js", virtualIdentityExtension);
    30 Components.utils.import("resource://v_identity/vI_prefs.js", virtualIdentityExtension);
    31 Components.utils.import("resource://v_identity/vI_replyToSelf.js", virtualIdentityExtension);
    32 Components.utils.import("resource://v_identity/vI_accountUtils.js", virtualIdentityExtension);
    33 Components.utils.import("resource://v_identity/plugins/signatureSwitch.js", virtualIdentityExtension);
    34 
    35 var main = {
    36     headerParser : Components.classes["@mozilla.org/messenger/headerparser;1"]
    37                 .getService(Components.interfaces.nsIMsgHeaderParser),
    38    
    39     unicodeConverter : Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
    40                 .createInstance(Components.interfaces.nsIScriptableUnicodeConverter),
    41                            
    42     accountManager : Components.classes["@mozilla.org/messenger/account-manager;1"]
    43             .getService(Components.interfaces.nsIMsgAccountManager),
    44        
    45 
    46     gMsgCompose : null, // to store the global gMsgCompose after MsgComposeDialog is closed
    47 
    48     // Those variables keep pointers to original functions which might get replaced later
    49     original_functions : {
    50         GenericSendMessage : null,
    51         FillIdentityList : null
    52     },
    53 
    54     // some pointers to the layout-elements of the extension
    55     elements : {
    56         init_base : function() {
    57             main.elements.Area_MsgIdentityHbox = document.getElementById("virtualIdentityExtension_msgIdentityHbox");
    58             main.elements.Obj_MsgIdentity = document.getElementById("msgIdentity");
    59         },
    60         init_rest : function() {
    61             main.elements.Obj_MsgIdentityPopup = document.getElementById("msgIdentityPopup");
    62             main.elements.Obj_vILogo = document.getElementById("virtualIdentityExtension_Logo");
    63         },
    64         strings : null
    65     },
    66 
    67     ComposeStateListener : {
    68         NotifyComposeBodyReady: function() {
    69             Log.debug("NotifyComposeBodyReady");
    70             main.initSystemStage2();
    71         },
    72         NotifyComposeFieldsReady: function() {
    73             Log.debug("NotifyComposeFieldsReady");
    74         },
    75         ComposeProcessDone: function(aResult) {
    76             Log.debug("StateListener reports ComposeProcessDone");
    77             vI.vIaccount_removeUsedVIAccount();
    78             main.Cleanup(); // not really required, parallel handled by main.close
    79             vI.storage.clean();
    80         },
    81         SaveInFolderDone: function(folderURI) {
    82             Log.debug("SaveInFolderDone");
    83             vI.vIaccount_removeUsedVIAccount();
    84             main.Cleanup();
    85             vI.storage.clean();
    86         }
    87     },
    88    
    89     replacement_functions : {
    90         FillIdentityList: function(menulist) {
    91             Log.debug("mod. FillIdentityList");
    92             var accounts = virtualIdentityExtension.getAccountsArray();
    93             for (let acc = 0; acc < accounts.length; acc++) {
    94                 let server = accounts[acc].incomingServer;
    95                 if (!server)
    96                     continue;
    97                
    98                 // check for VirtualIdentity Account
    99                 try {   vI.prefroot.getBoolPref("mail.account." + accounts[acc].key + ".vIdentity"); continue; } catch (e) { };
    100                 let account = accounts[acc];
    101                 let identities = virtualIdentityExtension.getIdentitiesArray(account);
    102 
    103                 if (identities.length == 0)
    104                     continue;
    105 
    106                 for (let i = 0; i < identities.length; i++) {
    107                     let identity = identities[i];
    108                     let item = menulist.appendItem(identity.identityName, identity.key,
    109                                                     account.incomingServer.prettyName);
    110                     item.setAttribute("accountkey", account.key);
    111                     if (i == 0) {
    112                         // Mark the first identity as default.
    113                         item.setAttribute("default", "true");
    114                     }
    115                 }
     26virtualIdentityExtension.ns(function () {
     27  with(virtualIdentityExtension.LIB) {
     28
     29    let Log = vI.setupLogging("virtualIdentity.main");
     30    Components.utils.import("resource://v_identity/vI_account.js", virtualIdentityExtension);
     31    Components.utils.import("resource://v_identity/vI_prefs.js", virtualIdentityExtension);
     32    Components.utils.import("resource://v_identity/vI_replyToSelf.js", virtualIdentityExtension);
     33    Components.utils.import("resource://v_identity/vI_accountUtils.js", virtualIdentityExtension);
     34    Components.utils.import("resource://v_identity/plugins/signatureSwitch.js", virtualIdentityExtension);
     35
     36    var main = {
     37      headerParser: Components.classes["@mozilla.org/messenger/headerparser;1"]
     38        .getService(Components.interfaces.nsIMsgHeaderParser),
     39
     40      unicodeConverter: Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
     41        .createInstance(Components.interfaces.nsIScriptableUnicodeConverter),
     42
     43      accountManager: Components.classes["@mozilla.org/messenger/account-manager;1"]
     44        .getService(Components.interfaces.nsIMsgAccountManager),
     45
     46
     47      gMsgCompose: null, // to store the global gMsgCompose after MsgComposeDialog is closed
     48
     49      // Those variables keep pointers to original functions which might get replaced later
     50      original_functions: {
     51        GenericSendMessage: null,
     52        FillIdentityList: null
     53      },
     54
     55      // some pointers to the layout-elements of the extension
     56      elements: {
     57        init_base: function () {
     58          main.elements.Area_MsgIdentityHbox = document.getElementById("virtualIdentityExtension_msgIdentityHbox");
     59          main.elements.Obj_MsgIdentity = document.getElementById("msgIdentity");
     60        },
     61        init_rest: function () {
     62          main.elements.Obj_MsgIdentityPopup = document.getElementById("msgIdentityPopup");
     63          main.elements.Obj_vILogo = document.getElementById("virtualIdentityExtension_Logo");
     64        },
     65        strings: null
     66      },
     67
     68      ComposeStateListener: {
     69        NotifyComposeBodyReady: function () {
     70          Log.debug("NotifyComposeBodyReady");
     71          main.initSystemStage2();
     72        },
     73        NotifyComposeFieldsReady: function () {
     74          Log.debug("NotifyComposeFieldsReady");
     75        },
     76        ComposeProcessDone: function (aResult) {
     77          Log.debug("StateListener reports ComposeProcessDone");
     78          vI.vIaccount_removeUsedVIAccount();
     79          main.Cleanup(); // not really required, parallel handled by main.close
     80          vI.storage.clean();
     81        },
     82        SaveInFolderDone: function (folderURI) {
     83          Log.debug("SaveInFolderDone");
     84          vI.vIaccount_removeUsedVIAccount();
     85          main.Cleanup();
     86          vI.storage.clean();
     87        }
     88      },
     89
     90      replacement_functions: {
     91        FillIdentityList: function (menulist) {
     92          Log.debug("mod. FillIdentityList");
     93          var accounts = virtualIdentityExtension.getAccountsArray();
     94          for (let acc = 0; acc < accounts.length; acc++) {
     95            let server = accounts[acc].incomingServer;
     96            if (!server)
     97              continue;
     98
     99            // check for VirtualIdentity Account
     100            try {
     101              vI.prefroot.getBoolPref("mail.account." + accounts[acc].key + ".vIdentity");
     102              continue;
     103            } catch (e) {};
     104            let account = accounts[acc];
     105            let identities = virtualIdentityExtension.getIdentitiesArray(account);
     106
     107            if (identities.length == 0)
     108              continue;
     109
     110            for (let i = 0; i < identities.length; i++) {
     111              let identity = identities[i];
     112              let item = menulist.appendItem(identity.identityName, identity.key,
     113                account.incomingServer.prettyName);
     114              item.setAttribute("accountkey", account.key);
     115              if (i == 0) {
     116                // Mark the first identity as default.
     117                item.setAttribute("default", "true");
     118              }
    116119            }
    117         },
    118        
    119         GenericSendMessageInProgress : false,
    120         GenericSendMessage: function (msgType) {
    121             if (main.replacement_functions.GenericSendMessageInProgress) return;
    122             main.replacement_functions.GenericSendMessageInProgress = true;
    123            
    124             // if addressCol2 is focused while sending check storage for the entered address before continuing
    125             vI.storage.awOnBlur(vI.storage.focusedElement, window);
    126 
    127             Log.debug("VIdentity_GenericSendMessage");
    128            
    129             Log.debug("VIdentity_GenericSendMessage top=" + top);
    130            
    131             if (msgType == Components.interfaces.nsIMsgCompDeliverMode.Now)
    132               vI.addReplyToSelf(window);
    133 
    134             var vid = document.getElementById("virtualIdentityExtension_msgIdentityClone").vid
    135             var virtualIdentityData = document.getElementById("virtualIdentityExtension_msgIdentityClone").identityData;
    136            
    137             let returnValue = vI.vIaccount_prepareSendMsg(vid, msgType, virtualIdentityData,
    138                             main.accountManager.getIdentity(main.elements.Obj_MsgIdentity.value),
    139                             main._getRecipients(), window );
    140             if (returnValue.update == "abort") {
    141                 main.replacement_functions.GenericSendMessageInProgress = false;
    142                 Log.debug("sending: --------------  aborted  ---------------------------------")
    143                 return;
    144             }
    145             else if (returnValue.update == "takeover") {
    146                     var msgIdentityCloneElem = document.getElementById("virtualIdentityExtension_msgIdentityClone");
    147                     msgIdentityCloneElem.selectedMenuItem = msgIdentityCloneElem.addIdentityToCloneMenu(returnValue.storedIdentity);
    148                     main.replacement_functions.GenericSendMessageInProgress = false;
    149                     Log.debug("sending: --------------  aborted  ---------------------------------")
    150                     return;
    151             }
    152            
    153             if (vid) main.addVirtualIdentityToMsgIdentityMenu();
    154            
    155             // final check if eyerything is nice before we handover to the real sending...
    156             if (vI.vIaccount_finalCheck(virtualIdentityData, getCurrentIdentity())) {
    157                 main.replacement_functions.GenericSendMessageInProgress = false;
    158                 main.original_functions.GenericSendMessage(msgType);
    159             }
    160             else    main.Cleanup();
    161             main.replacement_functions.GenericSendMessageInProgress = false;
    162             //          Log.debug("original_functions.GenericSendMessage done");
    163         },
    164        
    165         replace_FillIdentityList : function() {
    166             //~ Log.debug("replace FillIdentityList");
    167             main.original_functions.FillIdentityList = FillIdentityList;
    168             FillIdentityList = main.replacement_functions.FillIdentityList;
    169         }
    170     },
    171 
    172     remove: function() {
    173         window.removeEventListener('compose-window-reopen', main.reopen, true);
    174         window.removeEventListener('compose-window-close', main.close, true);
    175         Log.debug("end. remove Account if there.")
    176         main.Cleanup();
    177         vI.storage.clean();
    178     },
    179 
    180     _getRecipients : function() {
    181         var recipients = [];
    182         for (var row = 1; row <= top.MAX_RECIPIENTS; row ++) {
    183             var recipientType = awGetPopupElement(row).selectedItem.getAttribute("value");
    184             if (recipientType == "addr_reply" || recipientType == "addr_followup" ||
    185                 main._recipientIsDoBcc(row) || awGetInputElement(row).value.match(/^\s*$/) ) continue;
    186             recipients.push( { recipient: awGetInputElement(row).value, recipientType : recipientType } );
    187         }
    188         return recipients;
    189     },
    190    
    191     _recipientIsDoBcc : function(row) {
    192         var recipientType = awGetPopupElement(row).selectedItem.getAttribute("value");
    193         if (recipientType != "addr_bcc" || !getCurrentIdentity().doBcc) return false
    194 
    195         var doBccArray = gMsgCompose.compFields.splitRecipients(getCurrentIdentity().doBccList, false, {});
    196 
    197         for (var index = 0; index < doBccArray.count; index++ ) {
    198             if (doBccArray.StringAt(index) == awGetInputElement(row).value) {
    199                 Log.debug("_recipientIsDoBcc: ignoring doBcc field '" +
    200                     doBccArray.StringAt(index));
    201                 return true;
    202             }
    203         }       
    204         return false
    205     },
    206 
    207     // initialization //
    208     init: function() {
    209         window.removeEventListener('load', main.init, false);
    210         window.removeEventListener('compose-window-init', main.init, true);
    211         if (main.elements.Area_MsgIdentityHbox) return; // init done before, (?reopen)
    212         Log.debug("init.")
    213         main.unicodeConverter.charset="UTF-8";
    214         if (!main.adapt_genericSendMessage()) { Log.error("init failed."); return; }
    215        
    216         main.adapt_interface();
    217         gMsgCompose.RegisterStateListener(main.ComposeStateListener);
    218         document.getElementById("virtualIdentityExtension_tooltipPopupset")
    219             .addTooltip(document.getElementById("virtualIdentityExtension_msgIdentityClone"), false);
    220         window.addEventListener('compose-window-reopen', main.reopen, true);
    221         window.addEventListener('compose-window-close', main.close, true);
    222        
    223         // append observer to virtualIdentityExtension_fccSwitch, because it does'n work with real identities (hidden by css)
    224         document.getElementById("virtualIdentityExtension_fccSwitch").appendChild(document.getElementById("virtualIdentityExtension_msgIdentityClone_observer").cloneNode(false));
     120          }
     121        },
     122
     123        GenericSendMessageInProgress: false,
     124        GenericSendMessage: function (msgType) {
     125          if (main.replacement_functions.GenericSendMessageInProgress) return;
     126          main.replacement_functions.GenericSendMessageInProgress = true;
     127
     128          // if addressCol2 is focused while sending check storage for the entered address before continuing
     129          vI.storage.awOnBlur(vI.storage.focusedElement, window);
     130
     131          Log.debug("VIdentity_GenericSendMessage");
     132
     133          Log.debug("VIdentity_GenericSendMessage top=" + top);
     134
     135          if (msgType == Components.interfaces.nsIMsgCompDeliverMode.Now)
     136            vI.addReplyToSelf(window);
     137
     138          var vid = document.getElementById("virtualIdentityExtension_msgIdentityClone").vid
     139          var virtualIdentityData = document.getElementById("virtualIdentityExtension_msgIdentityClone").identityData;
     140
     141          let returnValue = vI.vIaccount_prepareSendMsg(vid, msgType, virtualIdentityData,
     142            main.accountManager.getIdentity(main.elements.Obj_MsgIdentity.value),
     143            main._getRecipients(), window);
     144          if (returnValue.update == "abort") {
     145            main.replacement_functions.GenericSendMessageInProgress = false;
     146            Log.debug("sending: --------------  aborted  ---------------------------------")
     147            return;
     148          } else if (returnValue.update == "takeover") {
     149            var msgIdentityCloneElem = document.getElementById("virtualIdentityExtension_msgIdentityClone");
     150            msgIdentityCloneElem.selectedMenuItem = msgIdentityCloneElem.addIdentityToCloneMenu(returnValue.storedIdentity);
     151            main.replacement_functions.GenericSendMessageInProgress = false;
     152            Log.debug("sending: --------------  aborted  ---------------------------------")
     153            return;
     154          }
     155
     156          if (vid) main.addVirtualIdentityToMsgIdentityMenu();
     157
     158          // final check if eyerything is nice before we handover to the real sending...
     159          if (vI.vIaccount_finalCheck(virtualIdentityData, getCurrentIdentity())) {
     160            main.replacement_functions.GenericSendMessageInProgress = false;
     161            main.original_functions.GenericSendMessage(msgType);
     162          } else main.Cleanup();
     163          main.replacement_functions.GenericSendMessageInProgress = false;
     164          //            Log.debug("original_functions.GenericSendMessage done");
     165        },
     166
     167        replace_FillIdentityList: function () {
     168          //~ Log.debug("replace FillIdentityList");
     169          main.original_functions.FillIdentityList = FillIdentityList;
     170          FillIdentityList = main.replacement_functions.FillIdentityList;
     171        }
     172      },
     173
     174      remove: function () {
     175        window.removeEventListener('compose-window-reopen', main.reopen, true);
     176        window.removeEventListener('compose-window-close', main.close, true);
     177        Log.debug("end. remove Account if there.")
     178        main.Cleanup();
     179        vI.storage.clean();
     180      },
     181
     182      _getRecipients: function () {
     183        var recipients = [];
     184        for (var row = 1; row <= top.MAX_RECIPIENTS; row++) {
     185          var recipientType = awGetPopupElement(row).selectedItem.getAttribute("value");
     186          if (recipientType == "addr_reply" || recipientType == "addr_followup" ||
     187            main._recipientIsDoBcc(row) || awGetInputElement(row).value.match(/^\s*$/)) continue;
     188          recipients.push({
     189            recipient: awGetInputElement(row).value,
     190            recipientType: recipientType
     191          });
     192        }
     193        return recipients;
     194      },
     195
     196      _recipientIsDoBcc: function (row) {
     197        var recipientType = awGetPopupElement(row).selectedItem.getAttribute("value");
     198        if (recipientType != "addr_bcc" || !getCurrentIdentity().doBcc) return false
     199
     200        var doBccArray = gMsgCompose.compFields.splitRecipients(getCurrentIdentity().doBccList, false, {});
     201
     202        for (var index = 0; index < doBccArray.count; index++) {
     203          if (doBccArray.StringAt(index) == awGetInputElement(row).value) {
     204            Log.debug("_recipientIsDoBcc: ignoring doBcc field '" +
     205              doBccArray.StringAt(index));
     206            return true;
     207          }
     208        }
     209        return false
     210      },
     211
     212      // initialization //
     213      init: function () {
     214        window.removeEventListener('load', main.init, false);
     215        window.removeEventListener('compose-window-init', main.init, true);
     216        if (main.elements.Area_MsgIdentityHbox) return; // init done before, (?reopen)
     217        Log.debug("init.")
     218        main.unicodeConverter.charset = "UTF-8";
     219        if (!main.adapt_genericSendMessage()) {
     220          Log.error("init failed.");
     221          return;
     222        }
     223
     224        main.adapt_interface();
     225        gMsgCompose.RegisterStateListener(main.ComposeStateListener);
     226        document.getElementById("virtualIdentityExtension_tooltipPopupset")
     227          .addTooltip(document.getElementById("virtualIdentityExtension_msgIdentityClone"), false);
     228        window.addEventListener('compose-window-reopen', main.reopen, true);
     229        window.addEventListener('compose-window-close', main.close, true);
     230
     231        // append observer to virtualIdentityExtension_fccSwitch, because it does'n work with real identities (hidden by css)
     232        document.getElementById("virtualIdentityExtension_fccSwitch").appendChild(document.getElementById("virtualIdentityExtension_msgIdentityClone_observer").cloneNode(false));
    225233
    226234        main.AccountManagerObserver.register();
    227        
    228         main.initSystemStage1();
    229         Log.debug("init done.")
    230     },
    231    
    232     initSystemStage1 : function() {
    233         Log.debug("initSystemStage1.")
    234         main.gMsgCompose = gMsgCompose;
    235         document.getElementById("virtualIdentityExtension_msgIdentityClone").init();
    236         vI.statusmenu.init();
    237         Log.debug("initSystemStage1 done.")
    238     },
    239    
    240     initSystemStage2 : function() {
    241         Log.debug("initSystemStage2.")
     235
     236        main.initSystemStage1();
     237        Log.debug("init done.")
     238      },
     239
     240      initSystemStage1: function () {
     241        Log.debug("initSystemStage1.")
     242        main.gMsgCompose = gMsgCompose;
     243        document.getElementById("virtualIdentityExtension_msgIdentityClone").init();
     244        vI.statusmenu.init();
     245        Log.debug("initSystemStage1 done.")
     246      },
     247
     248      initSystemStage2: function () {
     249        Log.debug("initSystemStage2.")
    242250        vI.initReplyTo(window);
    243         vI.storage.init();
    244         vI.smartIdentity.init(window);
    245         Log.debug("initSystemStage2 done.")
    246     },
    247    
    248     close : function() {
    249         main.Cleanup();
    250         vI.storage.clean();
    251     },
    252    
    253     adapt_interface : function() {
    254         if (main.elements.Obj_MsgIdentityPopup) return; // only rearrange the interface once
    255        
    256         // initialize the pointers to extension elements
    257         main.elements.init_base()
    258        
    259         // rearrange the positions of some elements
    260         var parent_hbox = main.elements.Obj_MsgIdentity.parentNode;
    261         var storage_box = document.getElementById("addresses-box");
    262         var virtualIdentityExtension_autoReplyToSelfLabel = document.getElementById("virtualIdentityExtension_autoReplyToSelfLabelBox");
    263        
    264         storage_box.removeChild(virtualIdentityExtension_autoReplyToSelfLabel);
    265         parent_hbox.appendChild(virtualIdentityExtension_autoReplyToSelfLabel);
    266         storage_box.removeChild(main.elements.Area_MsgIdentityHbox);
    267         parent_hbox.appendChild(main.elements.Area_MsgIdentityHbox);
    268 
    269         main.elements.Obj_MsgIdentity.setAttribute("hidden", "true");
    270         main.elements.Obj_MsgIdentity.previousSibling.setAttribute("control", "virtualIdentityExtension_msgIdentityClone");
    271        
    272         var access_label = parent_hbox.getElementsByAttribute( "control", "msgIdentity" )[0];
    273         if (access_label) access_label.setAttribute("control", "virtualIdentityExtension_msgIdentityClone");
    274        
    275         // initialize the pointers to extension elements (initialize those earlier might brake the interface)
    276         main.elements.init_rest(); 
    277     },
    278    
    279     adapt_genericSendMessage : function() {
    280         if (main.original_functions.GenericSendMessage) return true; // only initialize this once
    281         Log.debug("adapt GenericSendMessage");
    282         main.original_functions.GenericSendMessage = GenericSendMessage;
    283         GenericSendMessage = main.replacement_functions.GenericSendMessage;
    284         return true;
    285     },
    286    
    287     reopen: function() {
    288         vI.clearDebugOutput();
    289         Log.debug("composeDialog reopened. (msgType " + gMsgCompose.type + ")")
    290        
    291         // clean all elements
    292         document.getElementById("virtualIdentityExtension_msgIdentityClone").clean();
    293         Log.debug("everything cleaned.")
    294        
     251        vI.storage.init();
     252        vI.smartIdentity.init(window);
     253        Log.debug("initSystemStage2 done.")
     254      },
     255
     256      close: function () {
     257        main.Cleanup();
     258        vI.storage.clean();
     259      },
     260
     261      adapt_interface: function () {
     262        if (main.elements.Obj_MsgIdentityPopup) return; // only rearrange the interface once
     263
     264        // initialize the pointers to extension elements
     265        main.elements.init_base()
     266
     267        // rearrange the positions of some elements
     268        var parent_hbox = main.elements.Obj_MsgIdentity.parentNode;
     269        var storage_box = document.getElementById("addresses-box");
     270        var virtualIdentityExtension_autoReplyToSelfLabel = document.getElementById("virtualIdentityExtension_autoReplyToSelfLabelBox");
     271
     272        storage_box.removeChild(virtualIdentityExtension_autoReplyToSelfLabel);
     273        parent_hbox.appendChild(virtualIdentityExtension_autoReplyToSelfLabel);
     274        storage_box.removeChild(main.elements.Area_MsgIdentityHbox);
     275        parent_hbox.appendChild(main.elements.Area_MsgIdentityHbox);
     276
     277        main.elements.Obj_MsgIdentity.setAttribute("hidden", "true");
     278        main.elements.Obj_MsgIdentity.previousSibling.setAttribute("control", "virtualIdentityExtension_msgIdentityClone");
     279
     280        var access_label = parent_hbox.getElementsByAttribute("control", "msgIdentity")[0];
     281        if (access_label) access_label.setAttribute("control", "virtualIdentityExtension_msgIdentityClone");
     282
     283        // initialize the pointers to extension elements (initialize those earlier might brake the interface)
     284        main.elements.init_rest();
     285      },
     286
     287      adapt_genericSendMessage: function () {
     288        if (main.original_functions.GenericSendMessage) return true; // only initialize this once
     289        Log.debug("adapt GenericSendMessage");
     290        main.original_functions.GenericSendMessage = GenericSendMessage;
     291        GenericSendMessage = main.replacement_functions.GenericSendMessage;
     292        return true;
     293      },
     294
     295      reopen: function () {
     296        vI.clearDebugOutput();
     297        Log.debug("composeDialog reopened. (msgType " + gMsgCompose.type + ")")
     298
     299        // clean all elements
     300        document.getElementById("virtualIdentityExtension_msgIdentityClone").clean();
     301        Log.debug("everything cleaned.")
     302
    295303        // register StateListener
    296304        gMsgCompose.RegisterStateListener(main.ComposeStateListener);
    297        
    298         // now (re)init the elements
    299         main.initSystemStage1();
    300        
     305
     306        // now (re)init the elements
     307        main.initSystemStage1();
     308
    301309        vI.vIprefs.dropLocalChanges();
    302310
     
    306314        var msgComposeType = Components.interfaces.nsIMsgCompType;
    307315        switch (gMsgCompose.type) {
    308             case msgComposeType.New:
    309             case msgComposeType.NewsPost:
    310             case msgComposeType.MailToUrl:
    311             case msgComposeType.Draft:
    312             case msgComposeType.Template:
    313             case msgComposeType.ForwardAsAttachment:
    314             case msgComposeType.ForwardInline:
    315                 main.initSystemStage2();
    316 //             case msgComposeType.Reply:
    317 //             case msgComposeType.ReplyAll:
    318 //             case msgComposeType.ReplyToGroup:
    319 //             case msgComposeType.ReplyToSender:
    320 //             case msgComposeType.ReplyToSenderAndGroup:
    321 //             case msgComposeType.ReplyWithTemplate:
    322 //             case msgComposeType.ReplyToList:
    323 //                 main.initSystemStage2() triggered trough NotifyComposeBodyReady;
    324         }
    325         Log.debug("reopen done.")
    326     },
    327    
    328     tempStorage: { BaseIdentity : null, NewIdentity : null },
    329 
    330     __setSelectedIdentity : function(menuItem) {
    331         main.elements.Obj_MsgIdentity.selectedItem = menuItem;
    332         main.elements.Obj_MsgIdentity.setAttribute("label", menuItem.getAttribute("label"));
    333         main.elements.Obj_MsgIdentity.setAttribute("accountname", menuItem.getAttribute("accountname"));
    334         main.elements.Obj_MsgIdentity.setAttribute("value", menuItem.getAttribute("value"));
    335     },
    336 
    337     // sets the values of the dropdown-menu to the ones of the newly created account
    338     addVirtualIdentityToMsgIdentityMenu : function()
    339     {
    340         main.tempStorage.BaseIdentity = main.elements.Obj_MsgIdentity.selectedItem;
    341         main.tempStorage.NewIdentity = document.createElement("menuitem");
    342         main.tempStorage.NewIdentity.className = "identity-popup-item";
    343        
    344         // set the account name in the choosen menu item
    345         main.tempStorage.NewIdentity.setAttribute("label", vI.get_vIaccount().defaultIdentity.identityName);
    346         main.tempStorage.NewIdentity.setAttribute("accountname", " - " +  vI.get_vIaccount().incomingServer.prettyName);
    347         main.tempStorage.NewIdentity.setAttribute("accountkey", vI.get_vIaccount().key);
    348         main.tempStorage.NewIdentity.setAttribute("value", vI.get_vIaccount().defaultIdentity.key);
    349        
    350         main.elements.Obj_MsgIdentityPopup.appendChild(main.tempStorage.NewIdentity);
    351         main.__setSelectedIdentity(main.tempStorage.NewIdentity);
    352     },
    353    
    354     removeVirtualIdentityFromMsgIdentityMenu : function()
    355     {
    356         if (!main.tempStorage.BaseIdentity) return; // don't try to remove Item twice
    357         try {   // might not exist anymore (window closed), so just try to remove it
    358             document.getElementById("msgIdentity").firstChild.removeChild(main.tempStorage.NewIdentity);
    359             main.__setSelectedIdentity(main.tempStorage.BaseIdentity);
    360         } catch (e) { };
    361         main.tempStorage.NewIdentity = null;
    362         main.tempStorage.BaseIdentity = null;
    363     },
    364 
    365     prepareAccount : function() {
    366         main.Cleanup(); // just to be sure that nothing is left (maybe last time sending was irregularily stopped)
    367         vI.vIaccount_createAccount(document.getElementById("virtualIdentityExtension_msgIdentityClone").identityData,
    368                                  main.accountManager.getIdentity(main.elements.Obj_MsgIdentity.value));
    369         main.addVirtualIdentityToMsgIdentityMenu();
    370     },
    371 
    372     Cleanup : function() {
    373         main.removeVirtualIdentityFromMsgIdentityMenu();
    374 //      vI.vIaccount_removeUsedVIAccount();
    375     },
    376    
    377     //  code adapted from http://xulsolutions.blogspot.com/2006/07/creating-uninstall-script-for.html
    378     AccountManagerObserver : {
    379         _uninstall : false,
    380         observe : function(subject, topic, data) {
    381             if (topic == "am-smtpChanges") {
    382                 Log.debug("smtp changes observed");
    383                 var virtualIdentityExtension_msgIdentityClone = document.getElementById("virtualIdentityExtension_msgIdentityClone");
    384                 document.getAnonymousElementByAttribute(virtualIdentityExtension_msgIdentityClone, "class", "smtpServerListHbox").refresh();
    385             }
    386             if (topic == "am-acceptChanges") {
    387                 Log.debug("account changes observed");
    388                 document.getElementById("virtualIdentityExtension_msgIdentityClone").clean();
    389                 document.getElementById("virtualIdentityExtension_msgIdentityClone").init();
    390             }
    391         },
    392         register : function() {
    393             var obsService = Components.classes["@mozilla.org/observer-service;1"].
    394                 getService(Components.interfaces.nsIObserverService)
    395             obsService.addObserver(this, "am-smtpChanges", false);
    396             obsService.addObserver(this, "am-acceptChanges", false);
    397         },
    398         unregister : function() {
    399             var obsService = Components.classes["@mozilla.org/observer-service;1"].
    400                 getService(Components.interfaces.nsIObserverService)
    401             obsService.removeObserver(this, "am-smtpChanges");
    402             obsService.removeObserver(this, "am-acceptChanges");
    403         }
     316        case msgComposeType.New:
     317        case msgComposeType.NewsPost:
     318        case msgComposeType.MailToUrl:
     319        case msgComposeType.Draft:
     320        case msgComposeType.Template:
     321        case msgComposeType.ForwardAsAttachment:
     322        case msgComposeType.ForwardInline:
     323          main.initSystemStage2();
     324          //             case msgComposeType.Reply:
     325          //             case msgComposeType.ReplyAll:
     326          //             case msgComposeType.ReplyToGroup:
     327          //             case msgComposeType.ReplyToSender:
     328          //             case msgComposeType.ReplyToSenderAndGroup:
     329          //             case msgComposeType.ReplyWithTemplate:
     330          //             case msgComposeType.ReplyToList:
     331          //                 main.initSystemStage2() triggered trough NotifyComposeBodyReady;
     332        }
     333        Log.debug("reopen done.")
     334      },
     335
     336      tempStorage: {
     337        BaseIdentity: null,
     338        NewIdentity: null
     339      },
     340
     341      __setSelectedIdentity: function (menuItem) {
     342        main.elements.Obj_MsgIdentity.selectedItem = menuItem;
     343        main.elements.Obj_MsgIdentity.setAttribute("label", menuItem.getAttribute("label"));
     344        main.elements.Obj_MsgIdentity.setAttribute("accountname", menuItem.getAttribute("accountname"));
     345        main.elements.Obj_MsgIdentity.setAttribute("value", menuItem.getAttribute("value"));
     346      },
     347
     348      // sets the values of the dropdown-menu to the ones of the newly created account
     349      addVirtualIdentityToMsgIdentityMenu: function () {
     350        main.tempStorage.BaseIdentity = main.elements.Obj_MsgIdentity.selectedItem;
     351        main.tempStorage.NewIdentity = document.createElement("menuitem");
     352        main.tempStorage.NewIdentity.className = "identity-popup-item";
     353
     354        // set the account name in the choosen menu item
     355        main.tempStorage.NewIdentity.setAttribute("label", vI.get_vIaccount().defaultIdentity.identityName);
     356        main.tempStorage.NewIdentity.setAttribute("accountname", " - " + vI.get_vIaccount().incomingServer.prettyName);
     357        main.tempStorage.NewIdentity.setAttribute("accountkey", vI.get_vIaccount().key);
     358        main.tempStorage.NewIdentity.setAttribute("value", vI.get_vIaccount().defaultIdentity.key);
     359
     360        main.elements.Obj_MsgIdentityPopup.appendChild(main.tempStorage.NewIdentity);
     361        main.__setSelectedIdentity(main.tempStorage.NewIdentity);
     362      },
     363
     364      removeVirtualIdentityFromMsgIdentityMenu: function () {
     365        if (!main.tempStorage.BaseIdentity) return; // don't try to remove Item twice
     366        try { // might not exist anymore (window closed), so just try to remove it
     367          document.getElementById("msgIdentity").firstChild.removeChild(main.tempStorage.NewIdentity);
     368          main.__setSelectedIdentity(main.tempStorage.BaseIdentity);
     369        } catch (e) {};
     370        main.tempStorage.NewIdentity = null;
     371        main.tempStorage.BaseIdentity = null;
     372      },
     373
     374      prepareAccount: function () {
     375        main.Cleanup(); // just to be sure that nothing is left (maybe last time sending was irregularily stopped)
     376        vI.vIaccount_createAccount(document.getElementById("virtualIdentityExtension_msgIdentityClone").identityData,
     377          main.accountManager.getIdentity(main.elements.Obj_MsgIdentity.value));
     378        main.addVirtualIdentityToMsgIdentityMenu();
     379      },
     380
     381      Cleanup: function () {
     382        main.removeVirtualIdentityFromMsgIdentityMenu();
     383        //      vI.vIaccount_removeUsedVIAccount();
     384      },
     385
     386      //  code adapted from http://xulsolutions.blogspot.com/2006/07/creating-uninstall-script-for.html
     387      AccountManagerObserver: {
     388        _uninstall: false,
     389        observe: function (subject, topic, data) {
     390          if (topic == "am-smtpChanges") {
     391            Log.debug("smtp changes observed");
     392            var virtualIdentityExtension_msgIdentityClone = document.getElementById("virtualIdentityExtension_msgIdentityClone");
     393            document.getAnonymousElementByAttribute(virtualIdentityExtension_msgIdentityClone, "class", "smtpServerListHbox").refresh();
     394          }
     395          if (topic == "am-acceptChanges") {
     396            Log.debug("account changes observed");
     397            document.getElementById("virtualIdentityExtension_msgIdentityClone").clean();
     398            document.getElementById("virtualIdentityExtension_msgIdentityClone").init();
     399          }
     400        },
     401        register: function () {
     402          var obsService = Components.classes["@mozilla.org/observer-service;1"].
     403          getService(Components.interfaces.nsIObserverService)
     404          obsService.addObserver(this, "am-smtpChanges", false);
     405          obsService.addObserver(this, "am-acceptChanges", false);
     406        },
     407        unregister: function () {
     408          var obsService = Components.classes["@mozilla.org/observer-service;1"].
     409          getService(Components.interfaces.nsIObserverService)
     410          obsService.removeObserver(this, "am-smtpChanges");
     411          obsService.removeObserver(this, "am-acceptChanges");
     412        }
     413      }
    404414    }
    405 }
    406 
    407 
    408 main.replacement_functions.replace_FillIdentityList();
    409 window.addEventListener('compose-window-init', main.init, true);
    410 
    411 window.addEventListener("unload", function(e) { main.AccountManagerObserver.unregister(); try {vI.statusmenu.removeObserver();} catch (ex) { } }, false);
    412 vI.main = main;
    413 }});
     415
     416
     417    main.replacement_functions.replace_FillIdentityList();
     418    window.addEventListener('compose-window-init', main.init, true);
     419
     420    window.addEventListener("unload", function (e) {
     421      main.AccountManagerObserver.unregister();
     422      try {
     423        vI.statusmenu.removeObserver();
     424      } catch (ex) {}
     425    }, false);
     426    vI.main = main;
     427  }
     428});
Note: See TracChangeset for help on using the changeset viewer.