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

source: content/prefDialog/vI_prefDialog.js @ c55313

ng_0.9
Last change on this file since c55313 was c55313, checked in by rene <rene@…>, 8 years ago

added option to search matching BaseIdentity? based on domain name

  • Property mode set to 100644
File size: 17.2 KB
Line 
1/* ***** BEGIN LICENSE BLOCK *****
2    This program is free software; you can redistribute it and/or modify
3    it under the terms of the GNU General Public License as published by
4    the Free Software Foundation; either version 2 of the License, or
5    (at your option) any later version.
6
7    This program is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10    GNU General Public License for more details.
11
12    You should have received a copy of the GNU General Public License
13    along with this program; if not, write to the Free Software
14    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
15
16    The Original Code is the Virtual Identity Extension.
17
18    The Initial Developer of the Original Code is Rene Ejury.
19    Portions created by the Initial Developer are Copyright (C) 2007
20    the Initial Developer. All Rights Reserved.
21
22    Contributor(s): Thunderbird Developers
23 * ***** END LICENSE BLOCK ***** */
24
25Components.utils.import("resource://v_identity/vI_nameSpaceWrapper.js");
26virtualIdentityExtension.ns(function() { with (virtualIdentityExtension.LIB) {
27
28Components.utils.import("resource://gre/modules/AddonManager.jsm");
29let Log = vI.setupLogging("virtualIdentity.prefDialog");
30
31var 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    base : {
63        _elementIDs : [ "VIdent_identity.doFcc",
64                "VIdent_identity.fccFolderPickerMode",
65                "VIdent_identity.fccFolder",
66                "VIdent_identity.fccReplyFollowsParent",
67                "VIdent_identity.draftFolderPickerMode",
68                "VIdent_identity.draftFolder",
69                "VIdent_identity.stationeryFolderPickerMode",
70                "VIdent_identity.stationeryFolder",
71                "VIdent_identity.copySMIMESettings",
72                "VIdent_identity.copyAttachVCardSettings",
73                "VIdent_identity.smart_reply",
74                "VIdent_identity.smart_detectByReceivedHeader",
75                "VIdent_identity.smart_reply_for_newsgroups",
76                "VIdent_identity.show_status",
77                "VIdent_identity.show_smtp",
78                "VIdent_identity.fcc_show_switch",
79                "VIdent_identity.menu_entry",
80                "VIdent_identity.smart_reply_headers",
81                "VIdent_identity.smart_reply_filter",
82                "VIdent_identity.smart_draft",
83                "VIdent_identity.smart_reply_notification",
84                "VIdent_identity.get_header_notification",
85                "VIdent_identity.smart_reply_defaultFullName",
86                "VIdent_identity.smart_reply_ignoreFullName",
87                "VIdent_identity.smart_reply_searchBaseIdentity",
88                "VIdent_identity.autoTimestamp",
89                "VIdent_identity.autoTimeString",
90                "VIdent_identity.autoTimeFormat",
91                "VIdent_identity.notification_timeout",
92                "VIdent_identity.debug_notification",
93                "VIdent_identity.warn_nonvirtual",
94                "VIdent_identity.warn_virtual",
95                "VIdent_identity.hide_signature",
96                "VIdent_identity.hide_sMime_messageSignature",
97                "VIdent_identity.hide_openPGP_messageSignature",
98                "VIdent_identity.storage",
99                "VIdent_identity.storage_store",
100                "VIdent_identity.storage_store_base_id",
101                "VIdent_identity.storage_store_SMTP",
102                "VIdent_identity.storage_dont_update_multiple",
103                "VIdent_identity.storage_show_switch",
104                "VIdent_identity.storage_show_baseID_switch",
105                "VIdent_identity.storage_show_SMTP_switch",
106                "VIdent_identity.storage_colorIndication",
107                "VIdent_identity.storage_warn_update",
108                "VIdent_identity.storage_warn_vI_replace",
109                "VIdent_identity.storage_notification",
110                "VIdent_identity.storage_getOneOnly",
111                "VIdent_identity.storage_timeFormat",
112                "VIdent_identity.storageExtras_returnReciept",
113                "VIdent_identity.storageExtras_fcc",
114                "VIdent_identity.storageExtras_characterEncoding",
115                "VIdent_identity.storageExtras_messageFormat",
116                "VIdent_identity.storageExtras_sMime_messageEncryption",
117                "VIdent_identity.storageExtras_sMime_messageSignature",
118                "VIdent_identity.storageExtras_openPGP_messageEncryption",
119                "VIdent_identity.storageExtras_openPGP_messageSignature",
120                "VIdent_identity.storageExtras_openPGP_PGPMIME",
121                "VIdent_identity.idSelection_storage_prefer_smart_reply",
122                "VIdent_identity.idSelection_storage_ignore_smart_reply",
123                "VIdent_identity.idSelection_ask",
124                "VIdent_identity.idSelection_ask_always",
125                "VIdent_identity.idSelection_autocreate",
126                "VIdent_identity.idSelection_preferExisting",
127                "VIdent_identity.idSelection_ignoreIDs",
128                "VIdent_identity.autoReplyToSelf"],
129   
130        init : function() {
131        // initialize the default window values...
132            for( var i = 0; i < prefDialog.base._elementIDs.length; i++ ) {
133                var elementID = prefDialog.base._elementIDs[i];
134                var element = document.getElementById(elementID);
135                if (!element) break;
136                var eltType = element.localName;
137//              try {
138                    if (eltType == "radiogroup")
139                        element.selectedItem = element.childNodes[
140                            prefDialog.preferences.getIntPref(element.getAttribute("prefstring"))];
141                    else if (eltType == "checkbox")
142                        element.checked = 
143                            prefDialog.preferences.getBoolPref(element.getAttribute("prefstring"));
144                    else if (eltType == "textbox")
145                        if (element.getAttribute("preftype") == "int")
146                            element.setAttribute("value", 
147                            prefDialog.preferences.getIntPref(element.getAttribute("prefstring")) );
148                        else {
149                            element.setAttribute("value", 
150                            prefDialog.unicodeConverter.ConvertToUnicode(prefDialog.preferences.getCharPref(element.getAttribute("prefstring"))) );
151//                          alert(element.getAttribute("prefstring") + " " + element.getAttribute("value"))
152                        }
153                    else if (eltType == "listbox")
154                        element.value =
155                            prefDialog.preferences.getCharPref(element.getAttribute("prefstring"));
156//              } catch (ex) {}
157            }
158        },
159
160        savePrefs : function() {
161            for( var i = 0; i < prefDialog.base._elementIDs.length; i++ ) {
162                var elementID = prefDialog.base._elementIDs[i];
163                var element = document.getElementById(elementID);
164                if (!element) break;
165                var eltType = element.localName;
166                if (eltType == "radiogroup")
167                    prefDialog.preferences.setIntPref(
168                        element.getAttribute("prefstring"), parseInt(element.value));
169                else if (eltType == "checkbox")
170                    prefDialog.preferences.setBoolPref(
171                        element.getAttribute("prefstring"), element.checked);
172                else if (eltType == "textbox") {
173                    if (element.getAttribute("preftype") == "int")
174                        prefDialog.preferences.setIntPref(
175                            element.getAttribute("prefstring"), element.value);
176                    else prefDialog.preferences.setCharPref(
177                            element.getAttribute("prefstring"), prefDialog.unicodeConverter.ConvertFromUnicode(element.value));
178                }
179                else if (eltType == "listbox")
180                    prefDialog.preferences.setCharPref(element.getAttribute("prefstring"), element.value);
181            }
182        },
183       
184        modifyAttribute : function(elemID, attribute, value) {
185            if (value) document.getElementById(elemID).removeAttribute(attribute);
186            else document.getElementById(elemID).setAttribute(attribute, "true");
187        },
188
189        constraints : function() {
190            var storage = document.getElementById("VIdent_identity.storage").checked;
191            var smartDraft = document.getElementById("VIdent_identity.smart_draft").checked;
192            var smartReply = document.getElementById("VIdent_identity.smart_reply").checked;
193            var mAttr = prefDialog.base.modifyAttribute;
194
195            // idSelectionConstraint
196            var idSelectionConstraint = (storage || smartReply || smartDraft);
197            mAttr("VIdent_identity.idSelection_ask","disabled",idSelectionConstraint);
198            mAttr("VIdent_identity.idSelection_ask_always","disabled",idSelectionConstraint);
199            mAttr("VIdent_identity.idSelection_autocreate","disabled",idSelectionConstraint);
200            mAttr("VIdent_identity.idSelection_autocreate.desc","disabled",idSelectionConstraint);
201            mAttr("VIdent_identity.idSelection_preferExisting","disabled",idSelectionConstraint);
202            mAttr("selection","featureDisabled",idSelectionConstraint);
203            mAttr("toCompose","featureDisabled",idSelectionConstraint);
204
205            // idSelectionInputConstraint
206            var idSelectionInputConstraint = (storage && smartReply);
207            mAttr("VIdent_identity.idSelection_storage_prefer_smart_reply","disabled",idSelectionInputConstraint);
208            mAttr("VIdent_identity.idSelection_storage_ignore_smart_reply","disabled",idSelectionInputConstraint);
209            if (idSelectionInputConstraint) prefDialog.base.idSelectionResultConstraint();
210
211            // sourceEmailConstraint
212            var sourceEmailConstraint = (smartReply || smartDraft);
213            mAttr("sourceEmail","featureDisabled",sourceEmailConstraint);
214            mAttr("toSelection","featureDisabled",sourceEmailConstraint);
215
216        },
217
218        idSelectionResultConstraint : function() {
219            var ask = document.getElementById("VIdent_identity.idSelection_ask")
220            var ask_always = document.getElementById("VIdent_identity.idSelection_ask_always")
221            var autocreate = document.getElementById("VIdent_identity.idSelection_autocreate")
222            var autocreate_desc = document.getElementById("VIdent_identity.idSelection_autocreate.desc")
223            ask_always.setAttribute("disabled", (autocreate.checked || !ask.checked))
224            autocreate.setAttribute("disabled", (ask.checked && ask_always.checked))
225            autocreate_desc.setAttribute("disabled", (ask.checked && ask_always.checked))
226            autocreate_desc.setAttribute("hidden", !ask.checked)
227        },
228
229        smartReplyConstraint : function(element) {
230            var mAttr = prefDialog.base.modifyAttribute;
231            mAttr("VIdent_identity.smart_reply_for_newsgroups","disabled",element.checked);
232            mAttr("VIdent_identity.smart_reply_headers","disabled",element.checked);
233            mAttr("VIdent_identity.smart_reply_filter","disabled",element.checked);
234            mAttr("VIdent_identity.smart_reply_defaultFullName","disabled",element.checked);
235            mAttr("VIdent_identity.smart_reply_ignoreFullName","disabled",element.checked);
236            mAttr("VIdent_identity.smart_reply_headers_reset","disabled",element.checked);
237            mAttr("VIdent_identity.smart_detectByReceivedHeader","disabled",element.checked);
238            prefDialog.base.constraints();
239        },
240       
241        smartReplyHeaderReset : function() {
242            var textfield = document.getElementById("VIdent_identity.smart_reply_headers")
243            textfield.value = "envelope-to\nx-original-to\nto\ncc"
244        },
245       
246        smartReplyHideSignature : function() {
247          // check for signature_switch extension
248          AddonManager.getAddonByID("{2ab1b709-ba03-4361-abf9-c50b964ff75d}", function(addon) {
249            if (addon && !addon.userDisabled && !addon.appDisable) {
250                document.getElementById("VIdent_identity.HideSignature.warning").setAttribute("hidden", "true");
251                document.getElementById("VIdent_identity.hide_signature").setAttribute("disabled", "false");
252            }
253          }); 
254        },
255       
256        autoTimestampConstraint : function(element) {
257            var mAttr = prefDialog.base.modifyAttribute;
258            mAttr("VIdent_identity.autoTimestamp.options","hidden",element.checked);
259        },
260       
261        storageConstraint : function(element) {
262            var mAttr = prefDialog.base.modifyAttribute;
263            mAttr("VIdent_identity.storage_store","disabled",element.checked);
264            mAttr("VIdent_identity.storage_store_base_id","disabled",element.checked);
265            mAttr("VIdent_identity.storage_store_SMTP","disabled",element.checked);
266            mAttr("VIdent_identity.storage_dont_update_multiple","disabled",element.checked);
267            mAttr("VIdent_identity.storage_show_switch","disabled",element.checked);
268            mAttr("VIdent_identity.storage_show_baseID_switch","disabled",element.checked);
269            mAttr("VIdent_identity.storage_show_SMTP_switch","disabled",element.checked);
270            mAttr("VIdent_identity.storage_colorIndication","disabled",element.checked);
271            mAttr("VIdent_identity.storage_warn_update","disabled",element.checked);
272            mAttr("VIdent_identity.storage_warn_vI_replace","disabled",element.checked);
273            mAttr("VIdent_identity.storage_notification","disabled",element.checked);
274            mAttr("VIdent_identity.storage_getOneOnly","disabled",element.checked);
275            mAttr("VIdent_identity.storageExtras_returnReciept","disabled",element.checked);
276            mAttr("VIdent_identity.storageExtras_fcc","disabled",element.checked);
277            mAttr("VIdent_identity.storageExtras_characterEncoding","disabled",element.checked);
278            mAttr("VIdent_identity.storageExtras_messageFormat","disabled",element.checked);
279            mAttr("VIdent_identity.storageExtras_sMime_messageEncryption","disabled",element.checked);
280            mAttr("VIdent_identity.storageExtras_sMime_messageSignature","disabled",element.checked);
281            mAttr("VIdent_identity.storageExtras_openPGP_messageEncryption","disabled",element.checked);
282            mAttr("VIdent_identity.storageExtras_openPGP_messageSignature","disabled",element.checked);
283            mAttr("VIdent_identity.storageExtras_openPGP_PGPMIME","disabled",element.checked);
284            mAttr("storageOut","featureDisabled",element.checked);
285            mAttr("storageUp","featureDisabled",element.checked);
286            mAttr("storageUpDown","featureDisabled",element.checked);
287            prefDialog.base.constraints();
288        },
289
290        menuButtonConstraints : function(elem) {
291            var mAttr = prefDialog.base.modifyAttribute;
292            var valueParam = (document.getElementById("viewGroup").getAttribute("hidden") == "true");   // true -> removeAttribute
293            var dialogElem = document.getElementById("vI_prefDialog");
294            mAttr("logoButton2","hidden", valueParam);
295            mAttr("toggleIcon","open", valueParam);
296            document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").removeAttribute("flex");
297        },
298
299        flipMenuButtons : function(elem) {
300            var mAttr = prefDialog.base.modifyAttribute;
301            var valueParam = (elem.getAttribute("open") == "true");
302            var dialogElem = document.getElementById("vI_prefDialog");
303            var oldContentElemHeight = document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight;
304            mAttr("viewGroup","hidden", !valueParam);
305            mAttr("logoButton2","hidden", valueParam);
306            mAttr(elem.id,"open", valueParam);
307            window.resizeBy( 0, document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight - oldContentElemHeight);
308        },
309       
310        initTreeValues : function() {
311            var prefTrees = document.getElementById("prefTabbox").getElementsByAttribute("class", "vIprefTree");
312            for (var i=0 ; i<prefTrees.length; i++) prefTrees[i].currentIndex = 0;
313        }
314    },
315
316    init : function() {
317        prefDialog.unicodeConverter.charset="UTF-8";
318        prefDialog.base.init();
319        vI.onInitCopiesAndFolders()
320
321        // check for enigmail extension
322        AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function(addon) {
323          if (addon && !addon.userDisabled && !addon.appDisable) {
324            document.getElementById("openPGPencryption").removeAttribute("hidden");
325            document.getElementById("VIdent_identity.hide_openPGP_messageSignature").removeAttribute("hidden");
326          }
327        }); 
328
329        prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply"));
330        prefDialog.base.smartReplyHideSignature();
331        prefDialog.base.storageConstraint(document.getElementById("VIdent_identity.storage"));
332        prefDialog.base.autoTimestampConstraint(document.getElementById("VIdent_identity.autoTimestamp"));
333        prefDialog.base.constraints();
334        prefDialog.base.menuButtonConstraints();
335        prefDialog.base.initTreeValues();
336
337    },
338   
339    savePrefs : function() {
340        // Copy all changes to Elements
341        vI.onSaveCopiesAndFolders();
342        prefDialog.base.savePrefs();
343    },
344
345    openURL : function(aURL) {
346        var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
347        var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
348        Log.debug("load url " + aURL);
349        uri.spec = aURL;
350        protocolSvc.loadUrl(uri);
351    }
352}
353vI.prefDialog = prefDialog;
354}});
Note: See TracBrowser for help on using the repository browser.