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

source: content/prefDialog/vI_prefDialog.js @ 18a879

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

added debug-to-file option

  • Property mode set to 100644
File size: 19.3 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    selectFile : function(elementID) {
63        dump("selectFile\n");
64        var filePicker = Components.classes["@mozilla.org/filepicker;1"]
65            .createInstance(Components.interfaces.nsIFilePicker);
66        var file = Components.classes["@mozilla.org/file/local;1"]
67            .createInstance(Components.interfaces.nsIFile);
68        var defaultPath = Components.classes["@mozilla.org/file/directory_service;1"]
69                    .getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path;
70
71        try {
72            file.initWithPath(document.getElementById(elementID).value);
73            filePicker.displayDirectory = file.parent;
74            filePicker.defaultString = file.leafName;
75        }
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) { };
89            }
90        }
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()
362
363        // check for enigmail extension
364        AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function(addon) {
365          if (addon && !addon.userDisabled && !addon.appDisable) {
366            document.getElementById("openPGPencryption").removeAttribute("hidden");
367            document.getElementById("VIdent_identity.hide_openPGP_messageSignature").removeAttribute("hidden");
368          }
369        }); 
370
371        prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply"));
372        prefDialog.base.smartReplyHideSignature();
373        prefDialog.base.storageConstraint(document.getElementById("VIdent_identity.storage"));
374        prefDialog.base.autoTimestampConstraint(document.getElementById("VIdent_identity.autoTimestamp"));
375        prefDialog.base.constraints();
376        prefDialog.base.menuButtonConstraints();
377        prefDialog.base.initTreeValues();
378
379    },
380   
381    savePrefs : function() {
382        // Copy all changes to Elements
383        vI.onSaveCopiesAndFolders();
384        prefDialog.base.savePrefs();
385    },
386
387    openURL : function(aURL) {
388        var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
389        var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
390        Log.debug("load url " + aURL);
391        uri.spec = aURL;
392        protocolSvc.loadUrl(uri);
393    }
394}
395vI.prefDialog = prefDialog;
396}});
Note: See TracBrowser for help on using the repository browser.