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

source: content/prefDialog/vI_prefDialog.js @ 184c6c

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

rearranged tree structure / added build-script

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