Changeset 509348 for content/prefDialog/vI_prefDialog.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.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 Components.utils.import("resource://gre/modules/AddonManager.jsm"); 29 let Log = vI.setupLogging("virtualIdentity.prefDialog"); 30 31 var prefDialog = { 32 toggleHelp : function() { 33 var browserElem = document.getElementById("virtualIdentityExtension_remoteBrowserBox"); 34 if (browserElem.getAttribute("hidden")) { 35 window.resizeBy( 200, 0); 36 browserElem.removeAttribute("hidden"); 37 } else { 38 window.resizeBy( -(browserElem.clientWidth+7), 0); 39 browserElem.setAttribute("hidden", "true"); 40 } 41 prefDialog.updateHelpUrl(); 42 }, 43 44 updateHelpUrl : function(tabpanel) { 45 var browserElem = document.getElementById("virtualIdentityExtension_remoteBrowserBox"); 46 if (browserElem.getAttribute("hidden")) return; // don't load any url if browser is hidden 47 var panelIndex = (tabpanel)?tabpanel:document.getElementById('prefTabbox').selectedIndex 48 var prefTree = document.getElementById('prefTabbox').selectedPanel.getElementsByAttribute("class", "vIprefTree")[0]; 49 var currentVersion = document.getElementById("virtualIdentityExtension_extVersion").getAttribute("value").split(/\./); 50 var extVersion = currentVersion[0] + "." + currentVersion[1]; 51 var url = "https://www.absorb.it/virtual-id/wiki/docs/" + extVersion + "/tab" + panelIndex + "/tree" + prefTree.currentIndex; 52 document.getElementById("virtualIdentityExtension_remoteBrowserBox").url = url; 53 }, 54 55 preferences : Components.classes["@mozilla.org/preferences-service;1"] 56 .getService(Components.interfaces.nsIPrefService) 57 .getBranch("extensions.virtualIdentity."), 58 59 unicodeConverter : Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] 60 .createInstance(Components.interfaces.nsIScriptableUnicodeConverter), 61 62 selectFile : function(elementID) { 26 virtualIdentityExtension.ns(function () { 27 with(virtualIdentityExtension.LIB) { 28 29 Components.utils.import("resource://gre/modules/AddonManager.jsm"); 30 let Log = vI.setupLogging("virtualIdentity.prefDialog"); 31 32 var prefDialog = { 33 toggleHelp: function () { 34 var browserElem = document.getElementById("virtualIdentityExtension_remoteBrowserBox"); 35 if (browserElem.getAttribute("hidden")) { 36 window.resizeBy(200, 0); 37 browserElem.removeAttribute("hidden"); 38 } else { 39 window.resizeBy(-(browserElem.clientWidth + 7), 0); 40 browserElem.setAttribute("hidden", "true"); 41 } 42 prefDialog.updateHelpUrl(); 43 }, 44 45 updateHelpUrl: function (tabpanel) { 46 var browserElem = document.getElementById("virtualIdentityExtension_remoteBrowserBox"); 47 if (browserElem.getAttribute("hidden")) return; // don't load any url if browser is hidden 48 var panelIndex = (tabpanel) ? tabpanel : document.getElementById('prefTabbox').selectedIndex 49 var prefTree = document.getElementById('prefTabbox').selectedPanel.getElementsByAttribute("class", "vIprefTree")[0]; 50 var currentVersion = document.getElementById("virtualIdentityExtension_extVersion").getAttribute("value").split(/\./); 51 var extVersion = currentVersion[0] + "." + currentVersion[1]; 52 var url = "https://www.absorb.it/virtual-id/wiki/docs/" + extVersion + "/tab" + panelIndex + "/tree" + prefTree.currentIndex; 53 document.getElementById("virtualIdentityExtension_remoteBrowserBox").url = url; 54 }, 55 56 preferences: Components.classes["@mozilla.org/preferences-service;1"] 57 .getService(Components.interfaces.nsIPrefService) 58 .getBranch("extensions.virtualIdentity."), 59 60 unicodeConverter: Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] 61 .createInstance(Components.interfaces.nsIScriptableUnicodeConverter), 62 63 selectFile: function (elementID) { 63 64 dump("selectFile\n"); 64 65 var filePicker = Components.classes["@mozilla.org/filepicker;1"] 65 66 .createInstance(Components.interfaces.nsIFilePicker); 66 67 var file = Components.classes["@mozilla.org/file/local;1"] 67 68 .createInstance(Components.interfaces.nsIFile); 68 69 var defaultPath = Components.classes["@mozilla.org/file/directory_service;1"] 69 70 .getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path; 70 71 71 72 try { 72 file.initWithPath(document.getElementById(elementID).value); 73 file.initWithPath(document.getElementById(elementID).value); 74 filePicker.displayDirectory = file.parent; 75 filePicker.defaultString = file.leafName; 76 } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) { 77 try { 78 // try linux delimiter 79 file.initWithPath(defaultPath + "/" + document.getElementById(elementID).value); 73 80 filePicker.displayDirectory = file.parent; 74 81 filePicker.defaultString = file.leafName; 82 } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) { 83 try { 84 // use windows delimiter 85 file.initWithPath(defaultPath + "\\" + document.getElementById(elementID).value); 86 filePicker.displayDirectory = file.parent; 87 filePicker.defaultString = file.leafName; 88 } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) {}; 89 } 75 90 } 76 catch(NS_ERROR_FILE_UNRECOGNIZED_PATH) { 77 try { 78 // try linux delimiter 79 file.initWithPath(defaultPath + "/" + document.getElementById(elementID).value); 80 filePicker.displayDirectory = file.parent; 81 filePicker.defaultString = file.leafName; 82 } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) { 83 try { 84 // use windows delimiter 85 file.initWithPath(defaultPath + "\\" + document.getElementById(elementID).value); 86 filePicker.displayDirectory = file.parent; 87 filePicker.defaultString = file.leafName; 88 } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) { }; 91 92 filePicker.init(window, "", Components.interfaces.nsIFilePicker.modeSave); 93 94 if (filePicker.show() != Components.interfaces.nsIFilePicker.returnCancel) { 95 if (filePicker.file.parent.path == defaultPath) 96 document.getElementById(elementID).setAttribute("value", filePicker.file.leafName); 97 else 98 document.getElementById(elementID).setAttribute("value", filePicker.file.path); 99 } 100 }, 101 102 base: { 103 _elementIDs: ["VIdent_identity.doFcc", 104 "VIdent_identity.fccFolderPickerMode", 105 "VIdent_identity.fccFolder", 106 "VIdent_identity.fccReplyFollowsParent", 107 "VIdent_identity.draftFolderPickerMode", 108 "VIdent_identity.draftFolder", 109 "VIdent_identity.stationeryFolderPickerMode", 110 "VIdent_identity.stationeryFolder", 111 "VIdent_identity.copySMIMESettings", 112 "VIdent_identity.copyAttachVCardSettings", 113 "VIdent_identity.smart_reply", 114 "VIdent_identity.smart_detectByReceivedHeader", 115 "VIdent_identity.smart_reply_for_newsgroups", 116 "VIdent_identity.show_status", 117 "VIdent_identity.show_smtp", 118 "VIdent_identity.fcc_show_switch", 119 "VIdent_identity.menu_entry", 120 "VIdent_identity.smart_reply_headers", 121 "VIdent_identity.smart_reply_filter", 122 "VIdent_identity.smart_draft", 123 "VIdent_identity.smart_reply_notification", 124 "VIdent_identity.get_header_notification", 125 "VIdent_identity.smart_reply_defaultFullName", 126 "VIdent_identity.smart_reply_ignoreFullName", 127 "VIdent_identity.smart_reply_searchBaseIdentity", 128 "VIdent_identity.autoTimestamp", 129 "VIdent_identity.autoTimeString", 130 "VIdent_identity.autoTimeFormat", 131 "VIdent_identity.notification_timeout", 132 "VIdent_identity.debug_notification", 133 "VIdent_identity.debug_to_file", 134 "VIdent_identity.debug_to_file_path", 135 "VIdent_identity.warn_nonvirtual", 136 "VIdent_identity.warn_virtual", 137 "VIdent_identity.hide_signature", 138 "VIdent_identity.hide_sMime_messageSignature", 139 "VIdent_identity.hide_openPGP_messageSignature", 140 "VIdent_identity.storage", 141 "VIdent_identity.storage_store", 142 "VIdent_identity.storage_store_base_id", 143 "VIdent_identity.storage_store_SMTP", 144 "VIdent_identity.storage_dont_update_multiple", 145 "VIdent_identity.storage_show_switch", 146 "VIdent_identity.storage_show_baseID_switch", 147 "VIdent_identity.storage_show_SMTP_switch", 148 "VIdent_identity.storage_colorIndication", 149 "VIdent_identity.storage_warn_update", 150 "VIdent_identity.storage_warn_vI_replace", 151 "VIdent_identity.storage_notification", 152 "VIdent_identity.storage_getOneOnly", 153 "VIdent_identity.storage_timeFormat", 154 "VIdent_identity.storageExtras_returnReciept", 155 "VIdent_identity.storageExtras_fcc", 156 "VIdent_identity.storageExtras_characterEncoding", 157 "VIdent_identity.storageExtras_messageFormat", 158 "VIdent_identity.storageExtras_sMime_messageEncryption", 159 "VIdent_identity.storageExtras_sMime_messageSignature", 160 "VIdent_identity.storageExtras_openPGP_messageEncryption", 161 "VIdent_identity.storageExtras_openPGP_messageSignature", 162 "VIdent_identity.storageExtras_openPGP_PGPMIME", 163 "VIdent_identity.idSelection_storage_prefer_smart_reply", 164 "VIdent_identity.idSelection_storage_ignore_smart_reply", 165 "VIdent_identity.idSelection_ask", 166 "VIdent_identity.idSelection_ask_always", 167 "VIdent_identity.idSelection_autocreate", 168 "VIdent_identity.idSelection_preferExisting", 169 "VIdent_identity.idSelection_ignoreIDs", 170 "VIdent_identity.autoReplyToSelf" 171 ], 172 173 init: function () { 174 // initialize the default window values... 175 for (var i = 0; i < prefDialog.base._elementIDs.length; i++) { 176 var elementID = prefDialog.base._elementIDs[i]; 177 var element = document.getElementById(elementID); 178 if (!element) break; 179 var eltType = element.localName; 180 // try { 181 if (eltType == "radiogroup") 182 element.selectedItem = element.childNodes[ 183 prefDialog.preferences.getIntPref(element.getAttribute("prefstring"))]; 184 else if (eltType == "checkbox") 185 element.checked = 186 prefDialog.preferences.getBoolPref(element.getAttribute("prefstring")); 187 else if (eltType == "textbox") 188 if (element.getAttribute("preftype") == "int") 189 element.setAttribute("value", 190 prefDialog.preferences.getIntPref(element.getAttribute("prefstring"))); 191 else { 192 element.setAttribute("value", 193 prefDialog.unicodeConverter.ConvertToUnicode(prefDialog.preferences.getCharPref(element.getAttribute("prefstring")))); 194 } else if (eltType == "listbox") 195 element.value = 196 prefDialog.preferences.getCharPref(element.getAttribute("prefstring")); 197 // } catch (ex) {} 198 // dump("setting textbox value: " + element.getAttribute("prefstring") + " " + element.getAttribute("value") + "\n"); 199 } 200 }, 201 202 savePrefs: function () { 203 for (var i = 0; i < prefDialog.base._elementIDs.length; i++) { 204 var elementID = prefDialog.base._elementIDs[i]; 205 var element = document.getElementById(elementID); 206 if (!element) break; 207 var eltType = element.localName; 208 if (eltType == "radiogroup") 209 prefDialog.preferences.setIntPref( 210 element.getAttribute("prefstring"), parseInt(element.value)); 211 else if (eltType == "checkbox") 212 prefDialog.preferences.setBoolPref( 213 element.getAttribute("prefstring"), element.checked); 214 else if (eltType == "textbox") { 215 if (element.getAttribute("preftype") == "int") 216 prefDialog.preferences.setIntPref( 217 element.getAttribute("prefstring"), element.value); 218 else prefDialog.preferences.setCharPref( 219 element.getAttribute("prefstring"), prefDialog.unicodeConverter.ConvertFromUnicode(element.value)); 220 } else if (eltType == "listbox") 221 prefDialog.preferences.setCharPref(element.getAttribute("prefstring"), element.value); 222 } 223 }, 224 225 modifyAttribute: function (elemID, attribute, value) { 226 if (value) document.getElementById(elemID).removeAttribute(attribute); 227 else document.getElementById(elemID).setAttribute(attribute, "true"); 228 }, 229 230 constraints: function () { 231 var storage = document.getElementById("VIdent_identity.storage").checked; 232 var smartDraft = document.getElementById("VIdent_identity.smart_draft").checked; 233 var smartReply = document.getElementById("VIdent_identity.smart_reply").checked; 234 var mAttr = prefDialog.base.modifyAttribute; 235 236 // idSelectionConstraint 237 var idSelectionConstraint = (storage || smartReply || smartDraft); 238 mAttr("VIdent_identity.idSelection_ask", "disabled", idSelectionConstraint); 239 mAttr("VIdent_identity.idSelection_ask_always", "disabled", idSelectionConstraint); 240 mAttr("VIdent_identity.idSelection_autocreate", "disabled", idSelectionConstraint); 241 mAttr("VIdent_identity.idSelection_autocreate.desc", "disabled", idSelectionConstraint); 242 mAttr("VIdent_identity.idSelection_preferExisting", "disabled", idSelectionConstraint); 243 mAttr("selection", "featureDisabled", idSelectionConstraint); 244 mAttr("toCompose", "featureDisabled", idSelectionConstraint); 245 246 // idSelectionInputConstraint 247 var idSelectionInputConstraint = (storage && smartReply); 248 mAttr("VIdent_identity.idSelection_storage_prefer_smart_reply", "disabled", idSelectionInputConstraint); 249 mAttr("VIdent_identity.idSelection_storage_ignore_smart_reply", "disabled", idSelectionInputConstraint); 250 if (idSelectionInputConstraint) prefDialog.base.idSelectionResultConstraint(); 251 252 // sourceEmailConstraint 253 var sourceEmailConstraint = (smartReply || smartDraft); 254 mAttr("sourceEmail", "featureDisabled", sourceEmailConstraint); 255 mAttr("toSelection", "featureDisabled", sourceEmailConstraint); 256 257 }, 258 259 idSelectionResultConstraint: function () { 260 var ask = document.getElementById("VIdent_identity.idSelection_ask") 261 var ask_always = document.getElementById("VIdent_identity.idSelection_ask_always") 262 var autocreate = document.getElementById("VIdent_identity.idSelection_autocreate") 263 var autocreate_desc = document.getElementById("VIdent_identity.idSelection_autocreate.desc") 264 ask_always.setAttribute("disabled", (autocreate.checked || !ask.checked)) 265 autocreate.setAttribute("disabled", (ask.checked && ask_always.checked)) 266 autocreate_desc.setAttribute("disabled", (ask.checked && ask_always.checked)) 267 autocreate_desc.setAttribute("hidden", !ask.checked) 268 }, 269 270 smartReplyConstraint: function (element) { 271 var mAttr = prefDialog.base.modifyAttribute; 272 mAttr("VIdent_identity.smart_reply_for_newsgroups", "disabled", element.checked); 273 mAttr("VIdent_identity.smart_reply_headers", "disabled", element.checked); 274 mAttr("VIdent_identity.smart_reply_filter", "disabled", element.checked); 275 mAttr("VIdent_identity.smart_reply_defaultFullName", "disabled", element.checked); 276 mAttr("VIdent_identity.smart_reply_ignoreFullName", "disabled", element.checked); 277 mAttr("VIdent_identity.smart_reply_headers_reset", "disabled", element.checked); 278 mAttr("VIdent_identity.smart_detectByReceivedHeader", "disabled", element.checked); 279 prefDialog.base.constraints(); 280 }, 281 282 smartReplyHeaderReset: function () { 283 var textfield = document.getElementById("VIdent_identity.smart_reply_headers") 284 textfield.value = "envelope-to\nx-original-to\nto\ncc" 285 }, 286 287 smartReplyHideSignature: function () { 288 // check for signature_switch extension 289 AddonManager.getAddonByID("{2ab1b709-ba03-4361-abf9-c50b964ff75d}", function (addon) { 290 if (addon && !addon.userDisabled && !addon.appDisable) { 291 document.getElementById("VIdent_identity.HideSignature.warning").setAttribute("hidden", "true"); 292 document.getElementById("VIdent_identity.hide_signature").setAttribute("disabled", "false"); 89 293 } 294 }); 295 }, 296 297 autoTimestampConstraint: function (element) { 298 var mAttr = prefDialog.base.modifyAttribute; 299 mAttr("VIdent_identity.autoTimestamp.options", "hidden", element.checked); 300 }, 301 302 storageConstraint: function (element) { 303 var mAttr = prefDialog.base.modifyAttribute; 304 mAttr("VIdent_identity.storage_store", "disabled", element.checked); 305 mAttr("VIdent_identity.storage_store_base_id", "disabled", element.checked); 306 mAttr("VIdent_identity.storage_store_SMTP", "disabled", element.checked); 307 mAttr("VIdent_identity.storage_dont_update_multiple", "disabled", element.checked); 308 mAttr("VIdent_identity.storage_show_switch", "disabled", element.checked); 309 mAttr("VIdent_identity.storage_show_baseID_switch", "disabled", element.checked); 310 mAttr("VIdent_identity.storage_show_SMTP_switch", "disabled", element.checked); 311 mAttr("VIdent_identity.storage_colorIndication", "disabled", element.checked); 312 mAttr("VIdent_identity.storage_warn_update", "disabled", element.checked); 313 mAttr("VIdent_identity.storage_warn_vI_replace", "disabled", element.checked); 314 mAttr("VIdent_identity.storage_notification", "disabled", element.checked); 315 mAttr("VIdent_identity.storage_getOneOnly", "disabled", element.checked); 316 mAttr("VIdent_identity.storageExtras_returnReciept", "disabled", element.checked); 317 mAttr("VIdent_identity.storageExtras_fcc", "disabled", element.checked); 318 mAttr("VIdent_identity.storageExtras_characterEncoding", "disabled", element.checked); 319 mAttr("VIdent_identity.storageExtras_messageFormat", "disabled", element.checked); 320 mAttr("VIdent_identity.storageExtras_sMime_messageEncryption", "disabled", element.checked); 321 mAttr("VIdent_identity.storageExtras_sMime_messageSignature", "disabled", element.checked); 322 mAttr("VIdent_identity.storageExtras_openPGP_messageEncryption", "disabled", element.checked); 323 mAttr("VIdent_identity.storageExtras_openPGP_messageSignature", "disabled", element.checked); 324 mAttr("VIdent_identity.storageExtras_openPGP_PGPMIME", "disabled", element.checked); 325 mAttr("storageOut", "featureDisabled", element.checked); 326 mAttr("storageUp", "featureDisabled", element.checked); 327 mAttr("storageUpDown", "featureDisabled", element.checked); 328 prefDialog.base.constraints(); 329 }, 330 331 menuButtonConstraints: function (elem) { 332 var mAttr = prefDialog.base.modifyAttribute; 333 var valueParam = (document.getElementById("viewGroup").getAttribute("hidden") == "true"); // true -> removeAttribute 334 var dialogElem = document.getElementById("vI_prefDialog"); 335 mAttr("logoButton2", "hidden", valueParam); 336 mAttr("toggleIcon", "open", valueParam); 337 document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").removeAttribute("flex"); 338 }, 339 340 flipMenuButtons: function (elem) { 341 var mAttr = prefDialog.base.modifyAttribute; 342 var valueParam = (elem.getAttribute("open") == "true"); 343 var dialogElem = document.getElementById("vI_prefDialog"); 344 var oldContentElemHeight = document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight; 345 mAttr("viewGroup", "hidden", !valueParam); 346 mAttr("logoButton2", "hidden", valueParam); 347 mAttr(elem.id, "open", valueParam); 348 window.resizeBy(0, document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight - oldContentElemHeight); 349 }, 350 351 initTreeValues: function () { 352 var prefTrees = document.getElementById("prefTabbox").getElementsByAttribute("class", "vIprefTree"); 353 for (var i = 0; i < prefTrees.length; i++) prefTrees[i].currentIndex = 0; 90 354 } 91 92 filePicker.init(window, "", Components.interfaces.nsIFilePicker.modeSave); 93 94 if (filePicker.show() != Components.interfaces.nsIFilePicker.returnCancel) { 95 if (filePicker.file.parent.path == defaultPath) 96 document.getElementById(elementID).setAttribute("value", filePicker.file.leafName); 97 else 98 document.getElementById(elementID).setAttribute("value", filePicker.file.path); 99 } 100 }, 101 102 base : { 103 _elementIDs : [ "VIdent_identity.doFcc", 104 "VIdent_identity.fccFolderPickerMode", 105 "VIdent_identity.fccFolder", 106 "VIdent_identity.fccReplyFollowsParent", 107 "VIdent_identity.draftFolderPickerMode", 108 "VIdent_identity.draftFolder", 109 "VIdent_identity.stationeryFolderPickerMode", 110 "VIdent_identity.stationeryFolder", 111 "VIdent_identity.copySMIMESettings", 112 "VIdent_identity.copyAttachVCardSettings", 113 "VIdent_identity.smart_reply", 114 "VIdent_identity.smart_detectByReceivedHeader", 115 "VIdent_identity.smart_reply_for_newsgroups", 116 "VIdent_identity.show_status", 117 "VIdent_identity.show_smtp", 118 "VIdent_identity.fcc_show_switch", 119 "VIdent_identity.menu_entry", 120 "VIdent_identity.smart_reply_headers", 121 "VIdent_identity.smart_reply_filter", 122 "VIdent_identity.smart_draft", 123 "VIdent_identity.smart_reply_notification", 124 "VIdent_identity.get_header_notification", 125 "VIdent_identity.smart_reply_defaultFullName", 126 "VIdent_identity.smart_reply_ignoreFullName", 127 "VIdent_identity.smart_reply_searchBaseIdentity", 128 "VIdent_identity.autoTimestamp", 129 "VIdent_identity.autoTimeString", 130 "VIdent_identity.autoTimeFormat", 131 "VIdent_identity.notification_timeout", 132 "VIdent_identity.debug_notification", 133 "VIdent_identity.debug_to_file", 134 "VIdent_identity.debug_to_file_path", 135 "VIdent_identity.warn_nonvirtual", 136 "VIdent_identity.warn_virtual", 137 "VIdent_identity.hide_signature", 138 "VIdent_identity.hide_sMime_messageSignature", 139 "VIdent_identity.hide_openPGP_messageSignature", 140 "VIdent_identity.storage", 141 "VIdent_identity.storage_store", 142 "VIdent_identity.storage_store_base_id", 143 "VIdent_identity.storage_store_SMTP", 144 "VIdent_identity.storage_dont_update_multiple", 145 "VIdent_identity.storage_show_switch", 146 "VIdent_identity.storage_show_baseID_switch", 147 "VIdent_identity.storage_show_SMTP_switch", 148 "VIdent_identity.storage_colorIndication", 149 "VIdent_identity.storage_warn_update", 150 "VIdent_identity.storage_warn_vI_replace", 151 "VIdent_identity.storage_notification", 152 "VIdent_identity.storage_getOneOnly", 153 "VIdent_identity.storage_timeFormat", 154 "VIdent_identity.storageExtras_returnReciept", 155 "VIdent_identity.storageExtras_fcc", 156 "VIdent_identity.storageExtras_characterEncoding", 157 "VIdent_identity.storageExtras_messageFormat", 158 "VIdent_identity.storageExtras_sMime_messageEncryption", 159 "VIdent_identity.storageExtras_sMime_messageSignature", 160 "VIdent_identity.storageExtras_openPGP_messageEncryption", 161 "VIdent_identity.storageExtras_openPGP_messageSignature", 162 "VIdent_identity.storageExtras_openPGP_PGPMIME", 163 "VIdent_identity.idSelection_storage_prefer_smart_reply", 164 "VIdent_identity.idSelection_storage_ignore_smart_reply", 165 "VIdent_identity.idSelection_ask", 166 "VIdent_identity.idSelection_ask_always", 167 "VIdent_identity.idSelection_autocreate", 168 "VIdent_identity.idSelection_preferExisting", 169 "VIdent_identity.idSelection_ignoreIDs", 170 "VIdent_identity.autoReplyToSelf"], 171 172 init : function() { 173 // initialize the default window values... 174 for( var i = 0; i < prefDialog.base._elementIDs.length; i++ ) { 175 var elementID = prefDialog.base._elementIDs[i]; 176 var element = document.getElementById(elementID); 177 if (!element) break; 178 var eltType = element.localName; 179 // try { 180 if (eltType == "radiogroup") 181 element.selectedItem = element.childNodes[ 182 prefDialog.preferences.getIntPref(element.getAttribute("prefstring"))]; 183 else if (eltType == "checkbox") 184 element.checked = 185 prefDialog.preferences.getBoolPref(element.getAttribute("prefstring")); 186 else if (eltType == "textbox") 187 if (element.getAttribute("preftype") == "int") 188 element.setAttribute("value", 189 prefDialog.preferences.getIntPref(element.getAttribute("prefstring")) ); 190 else { 191 element.setAttribute("value", 192 prefDialog.unicodeConverter.ConvertToUnicode(prefDialog.preferences.getCharPref(element.getAttribute("prefstring"))) ); 193 } 194 else if (eltType == "listbox") 195 element.value = 196 prefDialog.preferences.getCharPref(element.getAttribute("prefstring")); 197 // } catch (ex) {} 198 // dump("setting textbox value: " + element.getAttribute("prefstring") + " " + element.getAttribute("value") + "\n"); 199 } 200 }, 201 202 savePrefs : function() { 203 for( var i = 0; i < prefDialog.base._elementIDs.length; i++ ) { 204 var elementID = prefDialog.base._elementIDs[i]; 205 var element = document.getElementById(elementID); 206 if (!element) break; 207 var eltType = element.localName; 208 if (eltType == "radiogroup") 209 prefDialog.preferences.setIntPref( 210 element.getAttribute("prefstring"), parseInt(element.value)); 211 else if (eltType == "checkbox") 212 prefDialog.preferences.setBoolPref( 213 element.getAttribute("prefstring"), element.checked); 214 else if (eltType == "textbox") { 215 if (element.getAttribute("preftype") == "int") 216 prefDialog.preferences.setIntPref( 217 element.getAttribute("prefstring"), element.value); 218 else prefDialog.preferences.setCharPref( 219 element.getAttribute("prefstring"), prefDialog.unicodeConverter.ConvertFromUnicode(element.value)); 220 } 221 else if (eltType == "listbox") 222 prefDialog.preferences.setCharPref(element.getAttribute("prefstring"), element.value); 223 } 224 }, 225 226 modifyAttribute : function(elemID, attribute, value) { 227 if (value) document.getElementById(elemID).removeAttribute(attribute); 228 else document.getElementById(elemID).setAttribute(attribute, "true"); 229 }, 230 231 constraints : function() { 232 var storage = document.getElementById("VIdent_identity.storage").checked; 233 var smartDraft = document.getElementById("VIdent_identity.smart_draft").checked; 234 var smartReply = document.getElementById("VIdent_identity.smart_reply").checked; 235 var mAttr = prefDialog.base.modifyAttribute; 236 237 // idSelectionConstraint 238 var idSelectionConstraint = (storage || smartReply || smartDraft); 239 mAttr("VIdent_identity.idSelection_ask","disabled",idSelectionConstraint); 240 mAttr("VIdent_identity.idSelection_ask_always","disabled",idSelectionConstraint); 241 mAttr("VIdent_identity.idSelection_autocreate","disabled",idSelectionConstraint); 242 mAttr("VIdent_identity.idSelection_autocreate.desc","disabled",idSelectionConstraint); 243 mAttr("VIdent_identity.idSelection_preferExisting","disabled",idSelectionConstraint); 244 mAttr("selection","featureDisabled",idSelectionConstraint); 245 mAttr("toCompose","featureDisabled",idSelectionConstraint); 246 247 // idSelectionInputConstraint 248 var idSelectionInputConstraint = (storage && smartReply); 249 mAttr("VIdent_identity.idSelection_storage_prefer_smart_reply","disabled",idSelectionInputConstraint); 250 mAttr("VIdent_identity.idSelection_storage_ignore_smart_reply","disabled",idSelectionInputConstraint); 251 if (idSelectionInputConstraint) prefDialog.base.idSelectionResultConstraint(); 252 253 // sourceEmailConstraint 254 var sourceEmailConstraint = (smartReply || smartDraft); 255 mAttr("sourceEmail","featureDisabled",sourceEmailConstraint); 256 mAttr("toSelection","featureDisabled",sourceEmailConstraint); 257 258 }, 259 260 idSelectionResultConstraint : function() { 261 var ask = document.getElementById("VIdent_identity.idSelection_ask") 262 var ask_always = document.getElementById("VIdent_identity.idSelection_ask_always") 263 var autocreate = document.getElementById("VIdent_identity.idSelection_autocreate") 264 var autocreate_desc = document.getElementById("VIdent_identity.idSelection_autocreate.desc") 265 ask_always.setAttribute("disabled", (autocreate.checked || !ask.checked)) 266 autocreate.setAttribute("disabled", (ask.checked && ask_always.checked)) 267 autocreate_desc.setAttribute("disabled", (ask.checked && ask_always.checked)) 268 autocreate_desc.setAttribute("hidden", !ask.checked) 269 }, 270 271 smartReplyConstraint : function(element) { 272 var mAttr = prefDialog.base.modifyAttribute; 273 mAttr("VIdent_identity.smart_reply_for_newsgroups","disabled",element.checked); 274 mAttr("VIdent_identity.smart_reply_headers","disabled",element.checked); 275 mAttr("VIdent_identity.smart_reply_filter","disabled",element.checked); 276 mAttr("VIdent_identity.smart_reply_defaultFullName","disabled",element.checked); 277 mAttr("VIdent_identity.smart_reply_ignoreFullName","disabled",element.checked); 278 mAttr("VIdent_identity.smart_reply_headers_reset","disabled",element.checked); 279 mAttr("VIdent_identity.smart_detectByReceivedHeader","disabled",element.checked); 280 prefDialog.base.constraints(); 281 }, 282 283 smartReplyHeaderReset : function() { 284 var textfield = document.getElementById("VIdent_identity.smart_reply_headers") 285 textfield.value = "envelope-to\nx-original-to\nto\ncc" 286 }, 287 288 smartReplyHideSignature : function() { 289 // check for signature_switch extension 290 AddonManager.getAddonByID("{2ab1b709-ba03-4361-abf9-c50b964ff75d}", function(addon) { 291 if (addon && !addon.userDisabled && !addon.appDisable) { 292 document.getElementById("VIdent_identity.HideSignature.warning").setAttribute("hidden", "true"); 293 document.getElementById("VIdent_identity.hide_signature").setAttribute("disabled", "false"); 294 } 295 }); 296 }, 297 298 autoTimestampConstraint : function(element) { 299 var mAttr = prefDialog.base.modifyAttribute; 300 mAttr("VIdent_identity.autoTimestamp.options","hidden",element.checked); 301 }, 302 303 storageConstraint : function(element) { 304 var mAttr = prefDialog.base.modifyAttribute; 305 mAttr("VIdent_identity.storage_store","disabled",element.checked); 306 mAttr("VIdent_identity.storage_store_base_id","disabled",element.checked); 307 mAttr("VIdent_identity.storage_store_SMTP","disabled",element.checked); 308 mAttr("VIdent_identity.storage_dont_update_multiple","disabled",element.checked); 309 mAttr("VIdent_identity.storage_show_switch","disabled",element.checked); 310 mAttr("VIdent_identity.storage_show_baseID_switch","disabled",element.checked); 311 mAttr("VIdent_identity.storage_show_SMTP_switch","disabled",element.checked); 312 mAttr("VIdent_identity.storage_colorIndication","disabled",element.checked); 313 mAttr("VIdent_identity.storage_warn_update","disabled",element.checked); 314 mAttr("VIdent_identity.storage_warn_vI_replace","disabled",element.checked); 315 mAttr("VIdent_identity.storage_notification","disabled",element.checked); 316 mAttr("VIdent_identity.storage_getOneOnly","disabled",element.checked); 317 mAttr("VIdent_identity.storageExtras_returnReciept","disabled",element.checked); 318 mAttr("VIdent_identity.storageExtras_fcc","disabled",element.checked); 319 mAttr("VIdent_identity.storageExtras_characterEncoding","disabled",element.checked); 320 mAttr("VIdent_identity.storageExtras_messageFormat","disabled",element.checked); 321 mAttr("VIdent_identity.storageExtras_sMime_messageEncryption","disabled",element.checked); 322 mAttr("VIdent_identity.storageExtras_sMime_messageSignature","disabled",element.checked); 323 mAttr("VIdent_identity.storageExtras_openPGP_messageEncryption","disabled",element.checked); 324 mAttr("VIdent_identity.storageExtras_openPGP_messageSignature","disabled",element.checked); 325 mAttr("VIdent_identity.storageExtras_openPGP_PGPMIME","disabled",element.checked); 326 mAttr("storageOut","featureDisabled",element.checked); 327 mAttr("storageUp","featureDisabled",element.checked); 328 mAttr("storageUpDown","featureDisabled",element.checked); 329 prefDialog.base.constraints(); 330 }, 331 332 menuButtonConstraints : function(elem) { 333 var mAttr = prefDialog.base.modifyAttribute; 334 var valueParam = (document.getElementById("viewGroup").getAttribute("hidden") == "true"); // true -> removeAttribute 335 var dialogElem = document.getElementById("vI_prefDialog"); 336 mAttr("logoButton2","hidden", valueParam); 337 mAttr("toggleIcon","open", valueParam); 338 document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").removeAttribute("flex"); 339 }, 340 341 flipMenuButtons : function(elem) { 342 var mAttr = prefDialog.base.modifyAttribute; 343 var valueParam = (elem.getAttribute("open") == "true"); 344 var dialogElem = document.getElementById("vI_prefDialog"); 345 var oldContentElemHeight = document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight; 346 mAttr("viewGroup","hidden", !valueParam); 347 mAttr("logoButton2","hidden", valueParam); 348 mAttr(elem.id,"open", valueParam); 349 window.resizeBy( 0, document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight - oldContentElemHeight); 350 }, 351 352 initTreeValues : function() { 353 var prefTrees = document.getElementById("prefTabbox").getElementsByAttribute("class", "vIprefTree"); 354 for (var i=0 ; i<prefTrees.length; i++) prefTrees[i].currentIndex = 0; 355 } 356 }, 357 358 init : function() { 359 prefDialog.unicodeConverter.charset="UTF-8"; 360 prefDialog.base.init(); 361 vI.onInitCopiesAndFolders() 355 }, 356 357 init: function () { 358 prefDialog.unicodeConverter.charset = "UTF-8"; 359 prefDialog.base.init(); 360 vI.onInitCopiesAndFolders() 362 361 363 362 // check for enigmail extension 364 AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function (addon) {363 AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function (addon) { 365 364 if (addon && !addon.userDisabled && !addon.appDisable) { 366 365 document.getElementById("openPGPencryption").removeAttribute("hidden"); 367 366 document.getElementById("VIdent_identity.hide_openPGP_messageSignature").removeAttribute("hidden"); 368 367 } 369 }); 370 371 372 373 374 375 376 377 378 379 380 381 savePrefs : function() {382 383 384 385 386 387 openURL : function(aURL) {368 }); 369 370 prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply")); 371 prefDialog.base.smartReplyHideSignature(); 372 prefDialog.base.storageConstraint(document.getElementById("VIdent_identity.storage")); 373 prefDialog.base.autoTimestampConstraint(document.getElementById("VIdent_identity.autoTimestamp")); 374 prefDialog.base.constraints(); 375 prefDialog.base.menuButtonConstraints(); 376 prefDialog.base.initTreeValues(); 377 378 }, 379 380 savePrefs: function () { 381 // Copy all changes to Elements 382 vI.onSaveCopiesAndFolders(); 383 prefDialog.base.savePrefs(); 384 }, 385 386 openURL: function (aURL) { 388 387 var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI); 389 388 var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService); … … 391 390 uri.spec = aURL; 392 391 protocolSvc.loadUrl(uri); 392 } 393 393 } 394 } 395 vI.prefDialog = prefDialog; 396 } });394 vI.prefDialog = prefDialog; 395 } 396 });
Note: See TracChangeset
for help on using the changeset viewer.