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

source: content/prefDialog/vI_prefDialog.js @ 21bab3

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

added switch to show/hide status informations

  • Property mode set to 100644
File size: 17.1 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.autoTimestamp",
88                "VIdent_identity.autoTimeString",
89                "VIdent_identity.autoTimeFormat",
90                "VIdent_identity.notification_timeout",
91                "VIdent_identity.debug_notification",
92                "VIdent_identity.warn_nonvirtual",
93                "VIdent_identity.warn_virtual",
94                "VIdent_identity.hide_signature",
95                "VIdent_identity.hide_sMime_messageSignature",
96                "VIdent_identity.hide_openPGP_messageSignature",
97                "VIdent_identity.storage",
98                "VIdent_identity.storage_store",
99                "VIdent_identity.storage_store_base_id",
100                "VIdent_identity.storage_store_SMTP",
101                "VIdent_identity.storage_dont_update_multiple",
102                "VIdent_identity.storage_show_switch",
103                "VIdent_identity.storage_show_baseID_switch",
104                "VIdent_identity.storage_show_SMTP_switch",
105                "VIdent_identity.storage_colorIndication",
106                "VIdent_identity.storage_warn_update",
107                "VIdent_identity.storage_warn_vI_replace",
108                "VIdent_identity.storage_notification",
109                "VIdent_identity.storage_getOneOnly",
110                "VIdent_identity.storage_timeFormat",
111                "VIdent_identity.storageExtras_returnReciept",
112                "VIdent_identity.storageExtras_fcc",
113                "VIdent_identity.storageExtras_characterEncoding",
114                "VIdent_identity.storageExtras_messageFormat",
115                "VIdent_identity.storageExtras_sMime_messageEncryption",
116                "VIdent_identity.storageExtras_sMime_messageSignature",
117                "VIdent_identity.storageExtras_openPGP_messageEncryption",
118                "VIdent_identity.storageExtras_openPGP_messageSignature",
119                "VIdent_identity.storageExtras_openPGP_PGPMIME",
120                "VIdent_identity.idSelection_storage_prefer_smart_reply",
121                "VIdent_identity.idSelection_storage_ignore_smart_reply",
122                "VIdent_identity.idSelection_ask",
123                "VIdent_identity.idSelection_ask_always",
124                "VIdent_identity.idSelection_autocreate",
125                "VIdent_identity.idSelection_preferExisting",
126                "VIdent_identity.idSelection_ignoreIDs",
127                "VIdent_identity.autoReplyToSelf"],
128   
129        init : function() {
130        // initialize the default window values...
131            for( var i = 0; i < prefDialog.base._elementIDs.length; i++ ) {
132                var elementID = prefDialog.base._elementIDs[i];
133                var element = document.getElementById(elementID);
134                if (!element) break;
135                var eltType = element.localName;
136//              try {
137                    if (eltType == "radiogroup")
138                        element.selectedItem = element.childNodes[
139                            prefDialog.preferences.getIntPref(element.getAttribute("prefstring"))];
140                    else if (eltType == "checkbox")
141                        element.checked = 
142                            prefDialog.preferences.getBoolPref(element.getAttribute("prefstring"));
143                    else if (eltType == "textbox")
144                        if (element.getAttribute("preftype") == "int")
145                            element.setAttribute("value", 
146                            prefDialog.preferences.getIntPref(element.getAttribute("prefstring")) );
147                        else {
148                            element.setAttribute("value", 
149                            prefDialog.unicodeConverter.ConvertToUnicode(prefDialog.preferences.getCharPref(element.getAttribute("prefstring"))) );
150//                          alert(element.getAttribute("prefstring") + " " + element.getAttribute("value"))
151                        }
152                    else if (eltType == "listbox")
153                        element.value =
154                            prefDialog.preferences.getCharPref(element.getAttribute("prefstring"));
155//              } catch (ex) {}
156            }
157        },
158
159        savePrefs : function() {
160            for( var i = 0; i < prefDialog.base._elementIDs.length; i++ ) {
161                var elementID = prefDialog.base._elementIDs[i];
162                var element = document.getElementById(elementID);
163                if (!element) break;
164                var eltType = element.localName;
165                if (eltType == "radiogroup")
166                    prefDialog.preferences.setIntPref(
167                        element.getAttribute("prefstring"), parseInt(element.value));
168                else if (eltType == "checkbox")
169                    prefDialog.preferences.setBoolPref(
170                        element.getAttribute("prefstring"), element.checked);
171                else if (eltType == "textbox") {
172                    if (element.getAttribute("preftype") == "int")
173                        prefDialog.preferences.setIntPref(
174                            element.getAttribute("prefstring"), element.value);
175                    else prefDialog.preferences.setCharPref(
176                            element.getAttribute("prefstring"), prefDialog.unicodeConverter.ConvertFromUnicode(element.value));
177                }
178                else if (eltType == "listbox")
179                    prefDialog.preferences.setCharPref(element.getAttribute("prefstring"), element.value);
180            }
181        },
182       
183        modifyAttribute : function(elemID, attribute, value) {
184            if (value) document.getElementById(elemID).removeAttribute(attribute);
185            else document.getElementById(elemID).setAttribute(attribute, "true");
186        },
187
188        constraints : function() {
189            var storage = document.getElementById("VIdent_identity.storage").checked;
190            var smartDraft = document.getElementById("VIdent_identity.smart_draft").checked;
191            var smartReply = document.getElementById("VIdent_identity.smart_reply").checked;
192            var mAttr = prefDialog.base.modifyAttribute;
193
194            // idSelectionConstraint
195            var idSelectionConstraint = (storage || smartReply || smartDraft);
196            mAttr("VIdent_identity.idSelection_ask","disabled",idSelectionConstraint);
197            mAttr("VIdent_identity.idSelection_ask_always","disabled",idSelectionConstraint);
198            mAttr("VIdent_identity.idSelection_autocreate","disabled",idSelectionConstraint);
199            mAttr("VIdent_identity.idSelection_autocreate.desc","disabled",idSelectionConstraint);
200            mAttr("VIdent_identity.idSelection_preferExisting","disabled",idSelectionConstraint);
201            mAttr("selection","featureDisabled",idSelectionConstraint);
202            mAttr("toCompose","featureDisabled",idSelectionConstraint);
203
204            // idSelectionInputConstraint
205            var idSelectionInputConstraint = (storage && smartReply);
206            mAttr("VIdent_identity.idSelection_storage_prefer_smart_reply","disabled",idSelectionInputConstraint);
207            mAttr("VIdent_identity.idSelection_storage_ignore_smart_reply","disabled",idSelectionInputConstraint);
208            if (idSelectionInputConstraint) prefDialog.base.idSelectionResultConstraint();
209
210            // sourceEmailConstraint
211            var sourceEmailConstraint = (smartReply || smartDraft);
212            mAttr("sourceEmail","featureDisabled",sourceEmailConstraint);
213            mAttr("toSelection","featureDisabled",sourceEmailConstraint);
214
215        },
216
217        idSelectionResultConstraint : function() {
218            var ask = document.getElementById("VIdent_identity.idSelection_ask")
219            var ask_always = document.getElementById("VIdent_identity.idSelection_ask_always")
220            var autocreate = document.getElementById("VIdent_identity.idSelection_autocreate")
221            var autocreate_desc = document.getElementById("VIdent_identity.idSelection_autocreate.desc")
222            ask_always.setAttribute("disabled", (autocreate.checked || !ask.checked))
223            autocreate.setAttribute("disabled", (ask.checked && ask_always.checked))
224            autocreate_desc.setAttribute("disabled", (ask.checked && ask_always.checked))
225            autocreate_desc.setAttribute("hidden", !ask.checked)
226        },
227
228        smartReplyConstraint : function(element) {
229            var mAttr = prefDialog.base.modifyAttribute;
230            mAttr("VIdent_identity.smart_reply_for_newsgroups","disabled",element.checked);
231            mAttr("VIdent_identity.smart_reply_headers","disabled",element.checked);
232            mAttr("VIdent_identity.smart_reply_filter","disabled",element.checked);
233            mAttr("VIdent_identity.smart_reply_defaultFullName","disabled",element.checked);
234            mAttr("VIdent_identity.smart_reply_ignoreFullName","disabled",element.checked);
235            mAttr("VIdent_identity.smart_reply_headers_reset","disabled",element.checked);
236            mAttr("VIdent_identity.smart_detectByReceivedHeader","disabled",element.checked);
237            prefDialog.base.constraints();
238        },
239       
240        smartReplyHeaderReset : function() {
241            var textfield = document.getElementById("VIdent_identity.smart_reply_headers")
242            textfield.value = "envelope-to\nx-original-to\nto\ncc"
243        },
244       
245        smartReplyHideSignature : function() {
246          // check for signature_switch extension
247          AddonManager.getAddonByID("{2ab1b709-ba03-4361-abf9-c50b964ff75d}", function(addon) {
248            if (addon && !addon.userDisabled && !addon.appDisable) {
249                document.getElementById("VIdent_identity.HideSignature.warning").setAttribute("hidden", "true");
250                document.getElementById("VIdent_identity.hide_signature").setAttribute("disabled", "false");
251            }
252          }); 
253        },
254       
255        autoTimestampConstraint : function(element) {
256            var mAttr = prefDialog.base.modifyAttribute;
257            mAttr("VIdent_identity.autoTimestamp.options","hidden",element.checked);
258        },
259       
260        storageConstraint : function(element) {
261            var mAttr = prefDialog.base.modifyAttribute;
262            mAttr("VIdent_identity.storage_store","disabled",element.checked);
263            mAttr("VIdent_identity.storage_store_base_id","disabled",element.checked);
264            mAttr("VIdent_identity.storage_store_SMTP","disabled",element.checked);
265            mAttr("VIdent_identity.storage_dont_update_multiple","disabled",element.checked);
266            mAttr("VIdent_identity.storage_show_switch","disabled",element.checked);
267            mAttr("VIdent_identity.storage_show_baseID_switch","disabled",element.checked);
268            mAttr("VIdent_identity.storage_show_SMTP_switch","disabled",element.checked);
269            mAttr("VIdent_identity.storage_colorIndication","disabled",element.checked);
270            mAttr("VIdent_identity.storage_warn_update","disabled",element.checked);
271            mAttr("VIdent_identity.storage_warn_vI_replace","disabled",element.checked);
272            mAttr("VIdent_identity.storage_notification","disabled",element.checked);
273            mAttr("VIdent_identity.storage_getOneOnly","disabled",element.checked);
274            mAttr("VIdent_identity.storageExtras_returnReciept","disabled",element.checked);
275            mAttr("VIdent_identity.storageExtras_fcc","disabled",element.checked);
276            mAttr("VIdent_identity.storageExtras_characterEncoding","disabled",element.checked);
277            mAttr("VIdent_identity.storageExtras_messageFormat","disabled",element.checked);
278            mAttr("VIdent_identity.storageExtras_sMime_messageEncryption","disabled",element.checked);
279            mAttr("VIdent_identity.storageExtras_sMime_messageSignature","disabled",element.checked);
280            mAttr("VIdent_identity.storageExtras_openPGP_messageEncryption","disabled",element.checked);
281            mAttr("VIdent_identity.storageExtras_openPGP_messageSignature","disabled",element.checked);
282            mAttr("VIdent_identity.storageExtras_openPGP_PGPMIME","disabled",element.checked);
283            mAttr("storageOut","featureDisabled",element.checked);
284            mAttr("storageUp","featureDisabled",element.checked);
285            mAttr("storageUpDown","featureDisabled",element.checked);
286            prefDialog.base.constraints();
287        },
288
289        menuButtonConstraints : function(elem) {
290            var mAttr = prefDialog.base.modifyAttribute;
291            var valueParam = (document.getElementById("viewGroup").getAttribute("hidden") == "true");   // true -> removeAttribute
292            var dialogElem = document.getElementById("vI_prefDialog");
293            mAttr("logoButton2","hidden", valueParam);
294            mAttr("toggleIcon","open", valueParam);
295            document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").removeAttribute("flex");
296        },
297
298        flipMenuButtons : function(elem) {
299            var mAttr = prefDialog.base.modifyAttribute;
300            var valueParam = (elem.getAttribute("open") == "true");
301            var dialogElem = document.getElementById("vI_prefDialog");
302            var oldContentElemHeight = document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight;
303            mAttr("viewGroup","hidden", !valueParam);
304            mAttr("logoButton2","hidden", valueParam);
305            mAttr(elem.id,"open", valueParam);
306            window.resizeBy( 0, document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight - oldContentElemHeight);
307        },
308       
309        initTreeValues : function() {
310            var prefTrees = document.getElementById("prefTabbox").getElementsByAttribute("class", "vIprefTree");
311            for (var i=0 ; i<prefTrees.length; i++) prefTrees[i].currentIndex = 0;
312        }
313    },
314
315    init : function() {
316        prefDialog.unicodeConverter.charset="UTF-8";
317        prefDialog.base.init();
318        vI.onInitCopiesAndFolders()
319
320        // check for enigmail extension
321        AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function(addon) {
322          if (addon && !addon.userDisabled && !addon.appDisable) {
323            document.getElementById("openPGPencryption").removeAttribute("hidden");
324            document.getElementById("VIdent_identity.hide_openPGP_messageSignature").removeAttribute("hidden");
325          }
326        }); 
327
328        prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply"));
329        prefDialog.base.smartReplyHideSignature();
330        prefDialog.base.storageConstraint(document.getElementById("VIdent_identity.storage"));
331        prefDialog.base.autoTimestampConstraint(document.getElementById("VIdent_identity.autoTimestamp"));
332        prefDialog.base.constraints();
333        prefDialog.base.menuButtonConstraints();
334        prefDialog.base.initTreeValues();
335
336    },
337   
338    savePrefs : function() {
339        // Copy all changes to Elements
340        vI.onSaveCopiesAndFolders();
341        prefDialog.base.savePrefs();
342    },
343
344    openURL : function(aURL) {
345        var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
346        var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
347        Log.debug("load url " + aURL);
348        uri.spec = aURL;
349        protocolSvc.loadUrl(uri);
350    }
351}
352vI.prefDialog = prefDialog;
353}});
Note: See TracBrowser for help on using the repository browser.