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

source: content/prefDialog/vI_prefDialog.js @ 1fb53b

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

removed fcc settings, only available via identity now

  • Property mode set to 100644
File size: 20.1 KB
Line 
1/* ***** BEGIN LICENSE BLOCK *****
2    This program is free software; you can redistribute it and/or modify
3    it under the terms of the GNU General Public License as published by
4    the Free Software Foundation; either version 2 of the License, or
5    (at your option) any later version.
6
7    This program is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10    GNU General Public License for more details.
11
12    You should have received a copy of the GNU General Public License
13    along with this program; if not, write to the Free Software
14    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
15
16    The Original Code is the Virtual Identity Extension.
17
18    The Initial Developer of the Original Code is Rene Ejury.
19    Portions created by the Initial Developer are Copyright (C) 2007
20    the Initial Developer. All Rights Reserved.
21
22    Contributor(s): Thunderbird Developers
23 * ***** END LICENSE BLOCK ***** */
24
25Components.utils.import("resource://v_identity/vI_nameSpaceWrapper.js");
26virtualIdentityExtension.ns(function () {
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: [
119          "VIdent_identity.smart_reply",
120          "VIdent_identity.smart_detectByReceivedHeader",
121          "VIdent_identity.smart_reply_for_newsgroups",
122          "VIdent_identity.show_status",
123          "VIdent_identity.menu_entry",
124          "VIdent_identity.smart_reply_headers",
125          "VIdent_identity.smart_reply_filter",
126          "VIdent_identity.smart_draft",
127          "VIdent_identity.smart_reply_notification",
128          "VIdent_identity.get_header_notification",
129          "VIdent_identity.smart_reply_defaultFullName",
130          "VIdent_identity.smart_reply_ignoreFullName",
131          "VIdent_identity.smart_reply_searchBaseIdentity",
132          "VIdent_identity.autoTimestamp",
133          "VIdent_identity.autoTimeString",
134          "VIdent_identity.autoTimeFormat",
135          "VIdent_identity.notification_timeout",
136          "VIdent_identity.debug_notification",
137          "VIdent_identity.debug_to_file",
138          "VIdent_identity.debug_to_file_path",
139          "VIdent_identity.warn_nonvirtual",
140          "VIdent_identity.warn_virtual",
141          "VIdent_identity.hide_signature",
142          "VIdent_identity.hide_sMime_messageSignature",
143          "VIdent_identity.hide_openPGP_messageSignature",
144          "VIdent_identity.storage",
145          "VIdent_identity.storage_store",
146          "VIdent_identity.storage_store_base_id",
147          "VIdent_identity.storage_dont_update_multiple",
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_characterEncoding",
156          "VIdent_identity.storageExtras_messageFormat",
157          "VIdent_identity.storageExtras_sMime_messageEncryption",
158          "VIdent_identity.storageExtras_sMime_messageSignature",
159          "VIdent_identity.storageExtras_openPGP_messageEncryption",
160          "VIdent_identity.storageExtras_openPGP_messageSignature",
161          "VIdent_identity.storageExtras_openPGP_PGPMIME",
162          "VIdent_identity.idSelection_storage_prefer_smart_reply",
163          "VIdent_identity.idSelection_storage_ignore_smart_reply",
164          "VIdent_identity.idSelection_ask",
165          "VIdent_identity.idSelection_ask_always",
166          "VIdent_identity.idSelection_autocreate",
167          "VIdent_identity.idSelection_preferExisting",
168          "VIdent_identity.idSelection_ignoreIDs",
169          "VIdent_identity.autoReplyToSelf"
170        ],
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              } else if (eltType == "listbox")
194              element.value =
195              prefDialog.preferences.getCharPref(element.getAttribute("prefstring"));
196            //              } catch (ex) {}
197            //             dump("setting textbox value: " + element.getAttribute("prefstring") + " " + element.getAttribute("value") + "\n");
198          }
199        let versionLabel = document.getElementById("logoButton1");
200        versionLabel.setAttribute("label", versionLabel.getAttribute("label") + vI.extensionVersion);
201        versionLabel = document.getElementById("logoButton2");
202        versionLabel.setAttribute("label", versionLabel.getAttribute("label") + vI.extensionVersion);
203        },
204
205        savePrefs: function () {
206          for (var i = 0; i < prefDialog.base._elementIDs.length; i++) {
207            var elementID = prefDialog.base._elementIDs[i];
208            var element = document.getElementById(elementID);
209            if (!element) break;
210            var eltType = element.localName;
211            if (eltType == "radiogroup")
212              prefDialog.preferences.setIntPref(
213                element.getAttribute("prefstring"), parseInt(element.value));
214            else if (eltType == "checkbox")
215              prefDialog.preferences.setBoolPref(
216                element.getAttribute("prefstring"), element.checked);
217            else if (eltType == "textbox") {
218              if (element.getAttribute("preftype") == "int")
219                prefDialog.preferences.setIntPref(
220                  element.getAttribute("prefstring"), element.value);
221              else prefDialog.preferences.setCharPref(
222                element.getAttribute("prefstring"), prefDialog.unicodeConverter.ConvertFromUnicode(element.value));
223            } else if (eltType == "listbox")
224              prefDialog.preferences.setCharPref(element.getAttribute("prefstring"), element.value);
225          }
226        },
227
228        modifyAttribute: function (elemID, attribute, value) {
229          if (value) document.getElementById(elemID).removeAttribute(attribute);
230          else document.getElementById(elemID).setAttribute(attribute, "true");
231        },
232
233        constraints: function () {
234          var storage = document.getElementById("VIdent_identity.storage").checked;
235          var smartDraft = document.getElementById("VIdent_identity.smart_draft").checked;
236          var smartReply = document.getElementById("VIdent_identity.smart_reply").checked;
237          var mAttr = prefDialog.base.modifyAttribute;
238
239          // idSelectionConstraint
240          var idSelectionConstraint = (storage || smartReply || smartDraft);
241          mAttr("VIdent_identity.idSelection_ask", "disabled", idSelectionConstraint);
242          mAttr("VIdent_identity.idSelection_ask_always", "disabled", idSelectionConstraint);
243          mAttr("VIdent_identity.idSelection_autocreate", "disabled", idSelectionConstraint);
244          mAttr("VIdent_identity.idSelection_autocreate.desc", "disabled", idSelectionConstraint);
245          mAttr("VIdent_identity.idSelection_preferExisting", "disabled", idSelectionConstraint);
246          mAttr("selection", "featureDisabled", idSelectionConstraint);
247          mAttr("toCompose", "featureDisabled", idSelectionConstraint);
248
249          // idSelectionInputConstraint
250          var idSelectionInputConstraint = (storage && smartReply);
251          mAttr("VIdent_identity.idSelection_storage_prefer_smart_reply", "disabled", idSelectionInputConstraint);
252          mAttr("VIdent_identity.idSelection_storage_ignore_smart_reply", "disabled", idSelectionInputConstraint);
253          if (idSelectionInputConstraint) prefDialog.base.idSelectionResultConstraint();
254
255          // sourceEmailConstraint
256          var sourceEmailConstraint = (smartReply || smartDraft);
257          mAttr("sourceEmail", "featureDisabled", sourceEmailConstraint);
258          mAttr("toSelection", "featureDisabled", sourceEmailConstraint);
259
260        },
261
262        idSelectionResultConstraint: function () {
263          var ask = document.getElementById("VIdent_identity.idSelection_ask")
264          var ask_always = document.getElementById("VIdent_identity.idSelection_ask_always")
265          var autocreate = document.getElementById("VIdent_identity.idSelection_autocreate")
266          var autocreate_desc = document.getElementById("VIdent_identity.idSelection_autocreate.desc")
267          ask_always.setAttribute("disabled", (autocreate.checked || !ask.checked))
268          autocreate.setAttribute("disabled", (ask.checked && ask_always.checked))
269          autocreate_desc.setAttribute("disabled", (ask.checked && ask_always.checked))
270          autocreate_desc.setAttribute("hidden", !ask.checked)
271        },
272
273        smartReplyConstraint: function (element) {
274          var mAttr = prefDialog.base.modifyAttribute;
275          mAttr("VIdent_identity.smart_reply_for_newsgroups", "disabled", element.checked);
276          mAttr("VIdent_identity.smart_reply_headers", "disabled", element.checked);
277          mAttr("VIdent_identity.smart_reply_filter", "disabled", element.checked);
278          mAttr("VIdent_identity.smart_reply_defaultFullName", "disabled", element.checked);
279          mAttr("VIdent_identity.smart_reply_ignoreFullName", "disabled", element.checked);
280          mAttr("VIdent_identity.smart_reply_headers_reset", "disabled", element.checked);
281          mAttr("VIdent_identity.smart_detectByReceivedHeader", "disabled", element.checked);
282          prefDialog.base.constraints();
283        },
284
285        smartReplyHeaderReset: function () {
286          var textfield = document.getElementById("VIdent_identity.smart_reply_headers")
287          textfield.value = "envelope-to\nx-original-to\nto\ncc"
288        },
289
290        smartReplyHideSignature: function () {
291          // check for signature_switch extension
292          AddonManager.getAddonByID("{2ab1b709-ba03-4361-abf9-c50b964ff75d}", function (addon) {
293            if (addon && !addon.userDisabled && !addon.appDisable) {
294              document.getElementById("VIdent_identity.HideSignature.warning").setAttribute("hidden", "true");
295              document.getElementById("VIdent_identity.hide_signature").setAttribute("disabled", "false");
296            }
297          });
298        },
299
300        autoTimestampConstraint: function (element) {
301          var mAttr = prefDialog.base.modifyAttribute;
302          mAttr("VIdent_identity.autoTimestamp.options", "hidden", element.checked);
303        },
304
305        storageConstraint: function (element) {
306          var mAttr = prefDialog.base.modifyAttribute;
307          mAttr("VIdent_identity.storage_store", "disabled", element.checked);
308          mAttr("VIdent_identity.storage_store_base_id", "disabled", element.checked);
309          mAttr("VIdent_identity.storage_dont_update_multiple", "disabled", element.checked);
310          mAttr("VIdent_identity.storage_colorIndication", "disabled", element.checked);
311          mAttr("VIdent_identity.storage_warn_update", "disabled", element.checked);
312          mAttr("VIdent_identity.storage_warn_vI_replace", "disabled", element.checked);
313          mAttr("VIdent_identity.storage_notification", "disabled", element.checked);
314          mAttr("VIdent_identity.storage_getOneOnly", "disabled", element.checked);
315          mAttr("VIdent_identity.storageExtras_returnReciept", "disabled", element.checked);
316          mAttr("VIdent_identity.storageExtras_characterEncoding", "disabled", element.checked);
317          mAttr("VIdent_identity.storageExtras_messageFormat", "disabled", element.checked);
318          mAttr("VIdent_identity.storageExtras_sMime_messageEncryption", "disabled", element.checked);
319          mAttr("VIdent_identity.storageExtras_sMime_messageSignature", "disabled", element.checked);
320          mAttr("VIdent_identity.storageExtras_openPGP_messageEncryption", "disabled", element.checked);
321          mAttr("VIdent_identity.storageExtras_openPGP_messageSignature", "disabled", element.checked);
322          mAttr("VIdent_identity.storageExtras_openPGP_PGPMIME", "disabled", element.checked);
323          mAttr("storageOut", "featureDisabled", element.checked);
324          mAttr("storageUp", "featureDisabled", element.checked);
325          mAttr("storageUpDown", "featureDisabled", element.checked);
326          prefDialog.base.constraints();
327        },
328
329        menuButtonConstraints: function (elem) {
330          var mAttr = prefDialog.base.modifyAttribute;
331          var valueParam = (document.getElementById("viewGroup").getAttribute("hidden") == "true"); // true -> removeAttribute
332          var dialogElem = document.getElementById("vI_prefDialog");
333          mAttr("logoButton2", "hidden", valueParam);
334          mAttr("toggleIcon", "open", valueParam);
335          document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").removeAttribute("flex");
336        },
337
338        flipMenuButtons: function (elem) {
339          var mAttr = prefDialog.base.modifyAttribute;
340          var valueParam = (elem.getAttribute("open") == "true");
341          var dialogElem = document.getElementById("vI_prefDialog");
342          var oldContentElemHeight = document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight;
343          mAttr("viewGroup", "hidden", !valueParam);
344          mAttr("logoButton2", "hidden", valueParam);
345          mAttr(elem.id, "open", valueParam);
346          window.resizeBy(0, document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight - oldContentElemHeight);
347        },
348
349        initTreeValues: function () {
350          var prefTrees = document.getElementById("prefTabbox").getElementsByAttribute("class", "vIprefTree");
351          for (var i = 0; i < prefTrees.length; i++) prefTrees[i].currentIndex = 0;
352        }
353      },
354
355      init: function () {
356        prefDialog.unicodeConverter.charset = "UTF-8";
357        prefDialog.base.init();
358
359        // check for enigmail extension
360        AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function (addon) {
361          if (addon && !addon.userDisabled && !addon.appDisable) {
362            document.getElementById("openPGPencryption").removeAttribute("hidden");
363            document.getElementById("VIdent_identity.hide_openPGP_messageSignature").removeAttribute("hidden");
364          }
365        });
366
367        prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply"));
368        prefDialog.base.smartReplyHideSignature();
369        prefDialog.base.storageConstraint(document.getElementById("VIdent_identity.storage"));
370        prefDialog.base.autoTimestampConstraint(document.getElementById("VIdent_identity.autoTimestamp"));
371        prefDialog.base.constraints();
372        prefDialog.base.menuButtonConstraints();
373        prefDialog.base.initTreeValues();
374
375      },
376
377      savePrefs: function () {
378        // Copy all changes to Elements
379        prefDialog.base.savePrefs();
380      },
381
382      openURL: function (aURL) {
383        var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
384        var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
385        Log.debug("load url " + aURL);
386        uri.spec = aURL;
387        protocolSvc.loadURI(uri);
388      }
389    }
390    vI.prefDialog = prefDialog;
391  }
392});
Note: See TracBrowser for help on using the repository browser.