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

source: content/prefDialog/vI_prefDialog.js @ 8518b6

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

don't store identity-version in *.dtd anymore

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