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

source: content/prefDialog/vI_prefDialog.js @ 85fa10

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

removed everything related to smtp-storage

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