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

source: content/prefDialog/vI_prefDialog.js @ 509348

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

code formatting (no code changes)

  • Property mode set to 100644
File size: 20.7 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 () {
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) {
64        dump("selectFile\n");
65        var filePicker = Components.classes["@mozilla.org/filepicker;1"]
66          .createInstance(Components.interfaces.nsIFilePicker);
67        var file = Components.classes["@mozilla.org/file/local;1"]
68          .createInstance(Components.interfaces.nsIFile);
69        var defaultPath = Components.classes["@mozilla.org/file/directory_service;1"]
70          .getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path;
71
72        try {
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);
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
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");
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;
354        }
355      },
356
357      init: function () {
358        prefDialog.unicodeConverter.charset = "UTF-8";
359        prefDialog.base.init();
360        vI.onInitCopiesAndFolders()
361
362        // check for enigmail extension
363        AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function (addon) {
364          if (addon && !addon.userDisabled && !addon.appDisable) {
365            document.getElementById("openPGPencryption").removeAttribute("hidden");
366            document.getElementById("VIdent_identity.hide_openPGP_messageSignature").removeAttribute("hidden");
367          }
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) {
387        var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
388        var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
389        Log.debug("load url " + aURL);
390        uri.spec = aURL;
391        protocolSvc.loadUrl(uri);
392      }
393    }
394    vI.prefDialog = prefDialog;
395  }
396});
Note: See TracBrowser for help on using the repository browser.