Changeset 509348 for content/prefDialog/vI_prefDialog_FolderPicker.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/prefDialog/vI_prefDialog_FolderPicker.js
r3c9c29 r509348 1 2 1 /** 3 * some code copied and adapted from Thunderbird Sources4 * thanks to all Thunderbird Developers5 */2 * some code copied and adapted from Thunderbird Sources 3 * thanks to all Thunderbird Developers 4 */ 6 5 7 6 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- … … 44 43 45 44 Components.utils.import("resource://v_identity/vI_nameSpaceWrapper.js"); 46 virtualIdentityExtension.ns(function() { with (virtualIdentityExtension.LIB) { 47 48 var gFccRadioElemChoice, gDraftsRadioElemChoice, gTmplRadioElemChoice; 49 var gFccRadioElemChoiceLocked, gDraftsRadioElemChoiceLocked, gTmplRadioElemChoiceLocked; 50 var gDefaultPickerMode = "3"; 51 52 var gFccFolderWithDelim, gDraftsFolderWithDelim, gTemplatesFolderWithDelim; 53 54 // Picker IDs 55 var fccAccountPickerId = "msgFccAccountPicker"; 56 var fccFolderPickerId = "msgFccFolderPicker"; 57 var draftsAccountPickerId = "msgDraftsAccountPicker"; 58 var draftsFolderPickerId = "msgDraftsFolderPicker"; 59 var tmplAccountPickerId = "msgStationeryAccountPicker"; 60 var tmplFolderPickerId = "msgStationeryFolderPicker"; 61 62 var _GetMsgFolderFromUri = function(uri, checkFolderAttributes) 63 { 64 let msgfolder = null; 65 if (typeof MailUtils != 'undefined') { 66 return MailUtils.getFolderForURI(uri, checkFolderAttributes); 67 } 68 try { // Postbox 69 let resource = GetResourceFromUri(uri); 70 msgfolder = resource.QueryInterface(Components.interfaces.nsIMsgFolder); 71 if (checkFolderAttributes) { 72 if (!(msgfolder && (msgfolder.parent || msgfolder.isServer))) { 73 msgfolder = null; 45 virtualIdentityExtension.ns(function () { 46 with(virtualIdentityExtension.LIB) { 47 48 var gFccRadioElemChoice, gDraftsRadioElemChoice, gTmplRadioElemChoice; 49 var gFccRadioElemChoiceLocked, gDraftsRadioElemChoiceLocked, gTmplRadioElemChoiceLocked; 50 var gDefaultPickerMode = "3"; 51 52 var gFccFolderWithDelim, gDraftsFolderWithDelim, gTemplatesFolderWithDelim; 53 54 // Picker IDs 55 var fccAccountPickerId = "msgFccAccountPicker"; 56 var fccFolderPickerId = "msgFccFolderPicker"; 57 var draftsAccountPickerId = "msgDraftsAccountPicker"; 58 var draftsFolderPickerId = "msgDraftsFolderPicker"; 59 var tmplAccountPickerId = "msgStationeryAccountPicker"; 60 var tmplFolderPickerId = "msgStationeryFolderPicker"; 61 62 var _GetMsgFolderFromUri = function (uri, checkFolderAttributes) { 63 let msgfolder = null; 64 if (typeof MailUtils != 'undefined') { 65 return MailUtils.getFolderForURI(uri, checkFolderAttributes); 66 } 67 try { // Postbox 68 let resource = GetResourceFromUri(uri); 69 msgfolder = resource.QueryInterface(Components.interfaces.nsIMsgFolder); 70 if (checkFolderAttributes) { 71 if (!(msgfolder && (msgfolder.parent || msgfolder.isServer))) { 72 msgfolder = null; 73 } 74 74 } 75 } 76 } 77 catch (ex) { 78 //dump("failed to get the folder resource\n"); 79 } 80 return msgfolder; 81 } 82 83 var setDefaultCopiesAndFoldersPrefs = function(identity, server, accountData) 84 { 85 var am = Components.classes["@mozilla.org/messenger/account-manager;1"].getService(Components.interfaces.nsIMsgAccountManager); 86 var rootFolder = am.defaultAccount.incomingServer.rootFolder 87 88 var fccElement = document.getElementById("VIdent_identity.fccFolder") 89 var fccElementValue = fccElement.getAttribute("value"); 90 if (!fccElementValue || !GetMsgFolderFromUri(fccElementValue, false)) 91 fccElement.setAttribute("value", rootFolder.server.serverURI + gFccFolderWithDelim) 92 93 var draftElement = document.getElementById("VIdent_identity.draftFolder") 94 var draftElementValue = draftElement.getAttribute("value"); 95 if (!draftElementValue || !GetMsgFolderFromUri(draftElementValue, false)) 96 draftElement.setAttribute("value", rootFolder.server.serverURI + gDraftsFolderWithDelim) 97 98 var stationeryElement = document.getElementById("VIdent_identity.stationeryFolder") 99 var stationeryElementValue = stationeryElement.getAttribute("value"); 100 if (!stationeryElementValue || !GetMsgFolderFromUri(stationeryElementValue, false)) 101 stationeryElement.setAttribute("value", rootFolder.server.serverURI + gTemplatesFolderWithDelim) 102 } 103 104 105 var onInitCopiesAndFolders = function() 106 { 107 SetSpecialFolderNamesWithDelims(); 108 SetGlobalRadioElemChoices(); 109 110 setDefaultCopiesAndFoldersPrefs(); 111 112 SetFolderDisplay(gFccRadioElemChoice, gFccRadioElemChoiceLocked, 113 "VIdent_fcc", 114 fccAccountPickerId, 115 "VIdent_identity.fccFolder", 116 fccFolderPickerId); 117 118 SetFolderDisplay(gDraftsRadioElemChoice, gDraftsRadioElemChoiceLocked, 119 "VIdent_draft", 120 draftsAccountPickerId, 121 "VIdent_identity.draftFolder", 122 draftsFolderPickerId); 123 124 SetFolderDisplay(gTmplRadioElemChoice, gTmplRadioElemChoiceLocked, 125 "VIdent_tmpl", 126 tmplAccountPickerId, 127 "VIdent_identity.stationeryFolder", 128 tmplFolderPickerId); 129 130 setupFccItems(); 131 } 132 133 // Initialize the picker mode choices (account/folder picker) into global vars 134 var SetGlobalRadioElemChoices = function() 135 { 136 var pickerModeElement = document.getElementById("VIdent_identity.fccFolderPickerMode"); 137 gFccRadioElemChoice = pickerModeElement.getAttribute("value"); 138 gFccRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled"); 139 if (!gFccRadioElemChoice) gFccRadioElemChoice = gDefaultPickerMode; 140 141 pickerModeElement = document.getElementById("VIdent_identity.draftFolderPickerMode"); 142 gDraftsRadioElemChoice = pickerModeElement.getAttribute("value"); 143 gDraftsRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled"); 144 if (!gDraftsRadioElemChoice) gDraftsRadioElemChoice = gDefaultPickerMode; 145 146 pickerModeElement = document.getElementById("VIdent_identity.stationeryFolderPickerMode"); 147 gTmplRadioElemChoice = pickerModeElement.getAttribute("value"); 148 gTmplRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled"); 149 if (!gTmplRadioElemChoice) gTmplRadioElemChoice = gDefaultPickerMode; 150 } 151 152 /* 153 * Set Account and Folder elements based on the values read from 154 * preferences file. Default picker mode, if none specified at this stage, is 155 * set to 1 i.e., Other picker displaying the folder value read from the 156 * preferences file. 157 */ 158 var SetFolderDisplay = function(pickerMode, disableMode, 159 radioElemPrefix, 160 accountPickerId, 161 folderPickedField, 162 folderPickerId) 163 { 164 if (!pickerMode) 75 } catch (ex) { 76 //dump("failed to get the folder resource\n"); 77 } 78 return msgfolder; 79 } 80 81 var setDefaultCopiesAndFoldersPrefs = function (identity, server, accountData) { 82 var am = Components.classes["@mozilla.org/messenger/account-manager;1"].getService(Components.interfaces.nsIMsgAccountManager); 83 var rootFolder = am.defaultAccount.incomingServer.rootFolder 84 85 var fccElement = document.getElementById("VIdent_identity.fccFolder") 86 var fccElementValue = fccElement.getAttribute("value"); 87 if (!fccElementValue || !GetMsgFolderFromUri(fccElementValue, false)) 88 fccElement.setAttribute("value", rootFolder.server.serverURI + gFccFolderWithDelim) 89 90 var draftElement = document.getElementById("VIdent_identity.draftFolder") 91 var draftElementValue = draftElement.getAttribute("value"); 92 if (!draftElementValue || !GetMsgFolderFromUri(draftElementValue, false)) 93 draftElement.setAttribute("value", rootFolder.server.serverURI + gDraftsFolderWithDelim) 94 95 var stationeryElement = document.getElementById("VIdent_identity.stationeryFolder") 96 var stationeryElementValue = stationeryElement.getAttribute("value"); 97 if (!stationeryElementValue || !GetMsgFolderFromUri(stationeryElementValue, false)) 98 stationeryElement.setAttribute("value", rootFolder.server.serverURI + gTemplatesFolderWithDelim) 99 } 100 101 102 var onInitCopiesAndFolders = function () { 103 SetSpecialFolderNamesWithDelims(); 104 SetGlobalRadioElemChoices(); 105 106 setDefaultCopiesAndFoldersPrefs(); 107 108 SetFolderDisplay(gFccRadioElemChoice, gFccRadioElemChoiceLocked, 109 "VIdent_fcc", 110 fccAccountPickerId, 111 "VIdent_identity.fccFolder", 112 fccFolderPickerId); 113 114 SetFolderDisplay(gDraftsRadioElemChoice, gDraftsRadioElemChoiceLocked, 115 "VIdent_draft", 116 draftsAccountPickerId, 117 "VIdent_identity.draftFolder", 118 draftsFolderPickerId); 119 120 SetFolderDisplay(gTmplRadioElemChoice, gTmplRadioElemChoiceLocked, 121 "VIdent_tmpl", 122 tmplAccountPickerId, 123 "VIdent_identity.stationeryFolder", 124 tmplFolderPickerId); 125 126 setupFccItems(); 127 } 128 129 // Initialize the picker mode choices (account/folder picker) into global vars 130 var SetGlobalRadioElemChoices = function () { 131 var pickerModeElement = document.getElementById("VIdent_identity.fccFolderPickerMode"); 132 gFccRadioElemChoice = pickerModeElement.getAttribute("value"); 133 gFccRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled"); 134 if (!gFccRadioElemChoice) gFccRadioElemChoice = gDefaultPickerMode; 135 136 pickerModeElement = document.getElementById("VIdent_identity.draftFolderPickerMode"); 137 gDraftsRadioElemChoice = pickerModeElement.getAttribute("value"); 138 gDraftsRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled"); 139 if (!gDraftsRadioElemChoice) gDraftsRadioElemChoice = gDefaultPickerMode; 140 141 pickerModeElement = document.getElementById("VIdent_identity.stationeryFolderPickerMode"); 142 gTmplRadioElemChoice = pickerModeElement.getAttribute("value"); 143 gTmplRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled"); 144 if (!gTmplRadioElemChoice) gTmplRadioElemChoice = gDefaultPickerMode; 145 } 146 147 /* 148 * Set Account and Folder elements based on the values read from 149 * preferences file. Default picker mode, if none specified at this stage, is 150 * set to 1 i.e., Other picker displaying the folder value read from the 151 * preferences file. 152 */ 153 var SetFolderDisplay = function (pickerMode, disableMode, 154 radioElemPrefix, 155 accountPickerId, 156 folderPickedField, 157 folderPickerId) { 158 if (!pickerMode) 165 159 pickerMode = gDefaultPickerMode; 166 160 167 var selectAccountRadioId = radioElemPrefix + "_selectAccount"; 168 var selectAccountRadioElem = document.getElementById(selectAccountRadioId); 169 var selectFolderRadioId = radioElemPrefix + "_selectFolder"; 170 var selectFolderRadioElem = document.getElementById(selectFolderRadioId); 171 var accountPicker = document.getElementById(accountPickerId); 172 var folderPicker = document.getElementById(folderPickerId); 173 var rg = selectAccountRadioElem.radioGroup; 174 175 var folderPickedElement = document.getElementById(folderPickedField); 176 var uri = folderPickedElement.getAttribute("value"); 177 // Get message folder from the given uri. Second argument (false) siginifies 178 // that there is no need to check for the existence of special folders as 179 // these folders are created on demand at runtime in case of imap accounts. 180 // For POP3 accounts, special folders are created at the account creation time. 181 var msgFolder = GetMsgFolderFromUri(uri, false); 182 vI.InitFolderDisplays(msgFolder, accountPickerId, folderPickerId) 183 184 switch (pickerMode) 185 { 186 case "0" : 187 rg.selectedItem = selectAccountRadioElem; 188 SetPickerEnabling(accountPickerId, folderPickerId); 189 break; 190 191 case "1" : 192 rg.selectedItem = selectFolderRadioElem; 193 SetPickerEnabling(folderPickerId, accountPickerId); 194 break; 195 case "2" : 196 rg.selectedItem = document.getElementById(radioElemPrefix + "_Settings_Of_Default"); 197 folderPicker.setAttribute("disabled", "true"); 198 accountPicker.setAttribute("disabled", "true"); 199 break; 200 case "3" : 201 rg.selectedItem = document.getElementById(radioElemPrefix + "_Settings_Of_Account"); 202 folderPicker.setAttribute("disabled", "true"); 203 accountPicker.setAttribute("disabled", "true"); 204 break; 205 206 default : 207 alert("Error in setting initial folder display on pickers\n"); 208 break; 209 } 210 211 // Check to see if we need to lock page elements. Disable radio buttons 212 // and account/folder pickers when locked. 213 if (disableMode) { 214 selectAccountRadioElem.setAttribute("disabled","true"); 215 selectFolderRadioElem.setAttribute("disabled","true"); 216 accountPicker.setAttribute("disabled","true"); 217 folderPicker.setAttribute("disabled","true"); 218 } 219 } 220 221 // Need to append special folders when account picker is selected. 222 // Create a set of global special folder vars to be suffixed to the 223 // server URI of the selected account. 224 var SetSpecialFolderNamesWithDelims = function() 225 { 226 var folderDelim = "/"; 227 /* we use internal names known to everyone like "Sent", "Templates" and "Drafts" */ 228 229 gFccFolderWithDelim = folderDelim + "Sent"; 230 gDraftsFolderWithDelim = folderDelim + "Drafts"; 231 gTemplatesFolderWithDelim = folderDelim + "Templates"; 232 } 233 234 var onSaveCopiesAndFolders = function() 235 { 236 vI.SaveFolderSettings( gFccRadioElemChoice, 237 "doFcc", 238 gFccFolderWithDelim, 239 fccAccountPickerId, 240 fccFolderPickerId, 241 "VIdent_identity.fccFolder", 242 "VIdent_identity.fccFolderPickerMode" ); 243 244 vI.SaveFolderSettings( gDraftsRadioElemChoice, 245 "messageDrafts", 246 gDraftsFolderWithDelim, 247 draftsAccountPickerId, 248 draftsFolderPickerId, 249 "VIdent_identity.draftFolder", 250 "VIdent_identity.draftFolderPickerMode" ); 251 252 vI.SaveFolderSettings( gTmplRadioElemChoice, 253 "messageTemplates", 254 gTemplatesFolderWithDelim, 255 tmplAccountPickerId, 256 tmplFolderPickerId, 257 "VIdent_identity.stationeryFolder", 258 "VIdent_identity.stationeryFolderPickerMode" ); 259 } 260 261 // Check the Fcc Self item and setup associated picker state 262 var setupFccItems = function() 263 { 264 var broadcaster = document.getElementById("VIdent_broadcaster_doFcc"); 265 266 var checked = document.getElementById("VIdent_identity.doFcc").checked; 267 if (checked) { 161 var selectAccountRadioId = radioElemPrefix + "_selectAccount"; 162 var selectAccountRadioElem = document.getElementById(selectAccountRadioId); 163 var selectFolderRadioId = radioElemPrefix + "_selectFolder"; 164 var selectFolderRadioElem = document.getElementById(selectFolderRadioId); 165 var accountPicker = document.getElementById(accountPickerId); 166 var folderPicker = document.getElementById(folderPickerId); 167 var rg = selectAccountRadioElem.radioGroup; 168 169 var folderPickedElement = document.getElementById(folderPickedField); 170 var uri = folderPickedElement.getAttribute("value"); 171 // Get message folder from the given uri. Second argument (false) siginifies 172 // that there is no need to check for the existence of special folders as 173 // these folders are created on demand at runtime in case of imap accounts. 174 // For POP3 accounts, special folders are created at the account creation time. 175 var msgFolder = GetMsgFolderFromUri(uri, false); 176 vI.InitFolderDisplays(msgFolder, accountPickerId, folderPickerId) 177 178 switch (pickerMode) { 179 case "0": 180 rg.selectedItem = selectAccountRadioElem; 181 SetPickerEnabling(accountPickerId, folderPickerId); 182 break; 183 184 case "1": 185 rg.selectedItem = selectFolderRadioElem; 186 SetPickerEnabling(folderPickerId, accountPickerId); 187 break; 188 case "2": 189 rg.selectedItem = document.getElementById(radioElemPrefix + "_Settings_Of_Default"); 190 folderPicker.setAttribute("disabled", "true"); 191 accountPicker.setAttribute("disabled", "true"); 192 break; 193 case "3": 194 rg.selectedItem = document.getElementById(radioElemPrefix + "_Settings_Of_Account"); 195 folderPicker.setAttribute("disabled", "true"); 196 accountPicker.setAttribute("disabled", "true"); 197 break; 198 199 default: 200 alert("Error in setting initial folder display on pickers\n"); 201 break; 202 } 203 204 // Check to see if we need to lock page elements. Disable radio buttons 205 // and account/folder pickers when locked. 206 if (disableMode) { 207 selectAccountRadioElem.setAttribute("disabled", "true"); 208 selectFolderRadioElem.setAttribute("disabled", "true"); 209 accountPicker.setAttribute("disabled", "true"); 210 folderPicker.setAttribute("disabled", "true"); 211 } 212 } 213 214 // Need to append special folders when account picker is selected. 215 // Create a set of global special folder vars to be suffixed to the 216 // server URI of the selected account. 217 var SetSpecialFolderNamesWithDelims = function () { 218 var folderDelim = "/"; 219 /* we use internal names known to everyone like "Sent", "Templates" and "Drafts" */ 220 221 gFccFolderWithDelim = folderDelim + "Sent"; 222 gDraftsFolderWithDelim = folderDelim + "Drafts"; 223 gTemplatesFolderWithDelim = folderDelim + "Templates"; 224 } 225 226 var onSaveCopiesAndFolders = function () { 227 vI.SaveFolderSettings(gFccRadioElemChoice, 228 "doFcc", 229 gFccFolderWithDelim, 230 fccAccountPickerId, 231 fccFolderPickerId, 232 "VIdent_identity.fccFolder", 233 "VIdent_identity.fccFolderPickerMode"); 234 235 vI.SaveFolderSettings(gDraftsRadioElemChoice, 236 "messageDrafts", 237 gDraftsFolderWithDelim, 238 draftsAccountPickerId, 239 draftsFolderPickerId, 240 "VIdent_identity.draftFolder", 241 "VIdent_identity.draftFolderPickerMode"); 242 243 vI.SaveFolderSettings(gTmplRadioElemChoice, 244 "messageTemplates", 245 gTemplatesFolderWithDelim, 246 tmplAccountPickerId, 247 tmplFolderPickerId, 248 "VIdent_identity.stationeryFolder", 249 "VIdent_identity.stationeryFolderPickerMode"); 250 } 251 252 // Check the Fcc Self item and setup associated picker state 253 var setupFccItems = function () { 254 var broadcaster = document.getElementById("VIdent_broadcaster_doFcc"); 255 256 var checked = document.getElementById("VIdent_identity.doFcc").checked; 257 if (checked) { 268 258 broadcaster.removeAttribute("disabled"); 269 259 SetupFccPickerState(gFccRadioElemChoice, 270 fccAccountPickerId, 271 fccFolderPickerId); 272 } 273 else 260 fccAccountPickerId, 261 fccFolderPickerId); 262 } else 274 263 broadcaster.setAttribute("disabled", "true"); 275 } 276 277 // Set up picker settings for Sent Folder 278 var SetupFccPickerState = function(pickerMode, accountPickerId, folderPickerId) 279 { 280 switch (pickerMode) { 281 case "0" : 282 if (!gFccRadioElemChoiceLocked) 283 SetPickerEnabling(accountPickerId, folderPickerId); 284 SetRadioButtons("VIdent_fcc_selectAccount", "VIdent_fcc_selectFolder"); 285 break; 286 287 case "1" : 288 if (!gFccRadioElemChoiceLocked) 289 SetPickerEnabling(folderPickerId, accountPickerId); 290 SetRadioButtons("VIdent_fcc_selectFolder", "VIdent_fcc_selectAccount"); 291 break; 292 293 default : 294 document.getElementById(folderPickerId).setAttribute("disabled", "true"); 295 document.getElementById(accountPickerId).setAttribute("disabled", "true"); 296 break; 297 } 298 } 299 300 // Enable and disable pickers based on the radio element clicked 301 var SetPickerEnabling = function(enablePickerId, disablePickerId) 302 { 303 var activePicker = document.getElementById(enablePickerId); 304 activePicker.removeAttribute("disabled"); 305 306 var inactivePicker = document.getElementById(disablePickerId); 307 inactivePicker.setAttribute("disabled", "true"); 308 } 309 310 // Set radio element choices and picker states 311 var setPickersState = function(enablePickerId, disablePickerId, event) 312 { 313 SetPickerEnabling(enablePickerId, disablePickerId); 314 315 var radioElemValue = event.target.value; 316 317 switch (event.target.id) { 318 case "VIdent_fcc_Settings_Of_Account": 319 case "VIdent_fcc_Settings_Of_Default": 320 document.getElementById(enablePickerId).setAttribute("disabled", "true"); 321 case "VIdent_fcc_selectAccount": 322 case "VIdent_fcc_selectFolder" : 323 gFccRadioElemChoice = radioElemValue; 324 break; 325 case "VIdent_draft_Settings_Of_Account": 326 case "VIdent_draft_Settings_Of_Default": 327 document.getElementById(enablePickerId).setAttribute("disabled", "true"); 328 case "VIdent_draft_selectAccount": 329 case "VIdent_draft_selectFolder" : 330 gDraftsRadioElemChoice = radioElemValue; 331 break; 332 case "VIdent_tmpl_Settings_Of_Account": 333 case "VIdent_tmpl_Settings_Of_Default": 334 document.getElementById(enablePickerId).setAttribute("disabled", "true"); 335 case "VIdent_tmpl_selectFolder" : 336 case "VIdent_tmpl_selectAccount": 337 gTmplRadioElemChoice = radioElemValue; 338 break; 339 default : 340 alert("Error in setting picker state. " + event.target.id + "\n"); 341 return; 342 } 343 344 switch (event.target.id) { 345 case "VIdent_fcc_Settings_Of_Account": 346 case "VIdent_fcc_Settings_Of_Default": 347 document.getElementById("VIdent_identity.fccReplyFollowsParent").setAttribute("disabled","true"); 348 break; 349 case "VIdent_fcc_selectAccount": 350 case "VIdent_fcc_selectFolder" : 351 document.getElementById("VIdent_identity.fccReplyFollowsParent").removeAttribute("disabled") 352 break; 353 } 354 } 355 356 // This routine is to restore the correct radio element 357 // state when the fcc self checkbox broadcasts the change 358 var SetRadioButtons = function(selectPickerId, unselectPickerId) 359 { 360 var activeRadioElem = document.getElementById(selectPickerId); 361 activeRadioElem.radioGroup.selectedItem = activeRadioElem; 362 } 363 vI.onInitCopiesAndFolders = onInitCopiesAndFolders; 364 vI.onSaveCopiesAndFolders = onSaveCopiesAndFolders; 365 vI.setPickersState = setPickersState; 366 vI.gFccRadioElemChoice = gFccRadioElemChoice; 367 vI.gDraftsRadioElemChoice = gDraftsRadioElemChoice; 368 vI.gTmplRadioElemChoice = gTmplRadioElemChoice; 369 370 // patch for https://bugzilla.mozilla.org/show_bug.cgi?id=889022, see there 371 Components.utils.import("resource:///modules/MailUtils.js"); 372 if (typeof(GetMsgFolderFromUri) != "function") { 373 var GetMsgFolderFromUri = _GetMsgFolderFromUri; 374 } 375 376 }}); 264 } 265 266 // Set up picker settings for Sent Folder 267 var SetupFccPickerState = function (pickerMode, accountPickerId, folderPickerId) { 268 switch (pickerMode) { 269 case "0": 270 if (!gFccRadioElemChoiceLocked) 271 SetPickerEnabling(accountPickerId, folderPickerId); 272 SetRadioButtons("VIdent_fcc_selectAccount", "VIdent_fcc_selectFolder"); 273 break; 274 275 case "1": 276 if (!gFccRadioElemChoiceLocked) 277 SetPickerEnabling(folderPickerId, accountPickerId); 278 SetRadioButtons("VIdent_fcc_selectFolder", "VIdent_fcc_selectAccount"); 279 break; 280 281 default: 282 document.getElementById(folderPickerId).setAttribute("disabled", "true"); 283 document.getElementById(accountPickerId).setAttribute("disabled", "true"); 284 break; 285 } 286 } 287 288 // Enable and disable pickers based on the radio element clicked 289 var SetPickerEnabling = function (enablePickerId, disablePickerId) { 290 var activePicker = document.getElementById(enablePickerId); 291 activePicker.removeAttribute("disabled"); 292 293 var inactivePicker = document.getElementById(disablePickerId); 294 inactivePicker.setAttribute("disabled", "true"); 295 } 296 297 // Set radio element choices and picker states 298 var setPickersState = function (enablePickerId, disablePickerId, event) { 299 SetPickerEnabling(enablePickerId, disablePickerId); 300 301 var radioElemValue = event.target.value; 302 303 switch (event.target.id) { 304 case "VIdent_fcc_Settings_Of_Account": 305 case "VIdent_fcc_Settings_Of_Default": 306 document.getElementById(enablePickerId).setAttribute("disabled", "true"); 307 case "VIdent_fcc_selectAccount": 308 case "VIdent_fcc_selectFolder": 309 gFccRadioElemChoice = radioElemValue; 310 break; 311 case "VIdent_draft_Settings_Of_Account": 312 case "VIdent_draft_Settings_Of_Default": 313 document.getElementById(enablePickerId).setAttribute("disabled", "true"); 314 case "VIdent_draft_selectAccount": 315 case "VIdent_draft_selectFolder": 316 gDraftsRadioElemChoice = radioElemValue; 317 break; 318 case "VIdent_tmpl_Settings_Of_Account": 319 case "VIdent_tmpl_Settings_Of_Default": 320 document.getElementById(enablePickerId).setAttribute("disabled", "true"); 321 case "VIdent_tmpl_selectFolder": 322 case "VIdent_tmpl_selectAccount": 323 gTmplRadioElemChoice = radioElemValue; 324 break; 325 default: 326 alert("Error in setting picker state. " + event.target.id + "\n"); 327 return; 328 } 329 330 switch (event.target.id) { 331 case "VIdent_fcc_Settings_Of_Account": 332 case "VIdent_fcc_Settings_Of_Default": 333 document.getElementById("VIdent_identity.fccReplyFollowsParent").setAttribute("disabled", "true"); 334 break; 335 case "VIdent_fcc_selectAccount": 336 case "VIdent_fcc_selectFolder": 337 document.getElementById("VIdent_identity.fccReplyFollowsParent").removeAttribute("disabled") 338 break; 339 } 340 } 341 342 // This routine is to restore the correct radio element 343 // state when the fcc self checkbox broadcasts the change 344 var SetRadioButtons = function (selectPickerId, unselectPickerId) { 345 var activeRadioElem = document.getElementById(selectPickerId); 346 activeRadioElem.radioGroup.selectedItem = activeRadioElem; 347 } 348 vI.onInitCopiesAndFolders = onInitCopiesAndFolders; 349 vI.onSaveCopiesAndFolders = onSaveCopiesAndFolders; 350 vI.setPickersState = setPickersState; 351 vI.gFccRadioElemChoice = gFccRadioElemChoice; 352 vI.gDraftsRadioElemChoice = gDraftsRadioElemChoice; 353 vI.gTmplRadioElemChoice = gTmplRadioElemChoice; 354 355 // patch for https://bugzilla.mozilla.org/show_bug.cgi?id=889022, see there 356 Components.utils.import("resource:///modules/MailUtils.js"); 357 if (typeof (GetMsgFolderFromUri) != "function") { 358 var GetMsgFolderFromUri = _GetMsgFolderFromUri; 359 } 360 361 } 362 });
Note: See TracChangeset
for help on using the changeset viewer.