Changeset 509348 for content/v_identity.js
- Timestamp:
- Nov 3, 2014, 12:35:40 PM (8 years ago)
- Branches:
- ng_0.9
- Children:
- 7204cb
- Parents:
- 3c9c29
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
content/v_identity.js
r3c9c29 r509348 24 24 25 25 Components.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 } 26 virtualIdentityExtension.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 } 116 119 } 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)); 225 233 226 234 main.AccountManagerObserver.register(); 227 228 229 230 231 232 initSystemStage1 : function() {233 234 235 236 237 238 239 240 initSystemStage2 : function() {241 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.") 242 250 vI.initReplyTo(window); 243 244 245 246 247 248 close : function() {249 250 251 252 253 adapt_interface : function() {254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 var access_label = parent_hbox.getElementsByAttribute( "control", "msgIdentity")[0];273 274 275 276 main.elements.init_rest(); 277 278 279 adapt_genericSendMessage : function() {280 281 282 283 284 285 286 287 reopen: function() {288 289 290 291 292 293 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 295 303 // register StateListener 296 304 gMsgCompose.RegisterStateListener(main.ComposeStateListener); 297 298 299 300 305 306 // now (re)init the elements 307 main.initSystemStage1(); 308 301 309 vI.vIprefs.dropLocalChanges(); 302 310 … … 306 314 var msgComposeType = Components.interfaces.nsIMsgCompType; 307 315 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 } 404 414 } 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.