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

source: content/prefDialog/vI_prefDialog.js @ 8b09cf

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

removed unused preferences

  • Property mode set to 100644
File size: 20.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: [
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_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        let versionLabel = document.getElementById("logoButton1");
201        versionLabel.setAttribute("label", versionLabel.getAttribute("label") + vI.extensionVersion);
202        versionLabel = document.getElementById("logoButton2");
203        versionLabel.setAttribute("label", versionLabel.getAttribute("label") + vI.extensionVersion);
204        },
205
206        savePrefs: function () {
207          for (var i = 0; i < prefDialog.base._elementIDs.length; i++) {
208            var elementID = prefDialog.base._elementIDs[i];
209            var element = document.getElementById(elementID);
210            if (!element) break;
211            var eltType = element.localName;
212            if (eltType == "radiogroup")
213              prefDialog.preferences.setIntPref(
214                element.getAttribute("prefstring"), parseInt(element.value));
215            else if (eltType == "checkbox")
216              prefDialog.preferences.setBoolPref(
217                element.getAttribute("prefstring"), element.checked);
218            else if (eltType == "textbox") {
219              if (element.getAttribute("preftype") == "int")
220                prefDialog.preferences.setIntPref(
221                  element.getAttribute("prefstring"), element.value);
222              else prefDialog.preferences.setCharPref(
223                element.getAttribute("prefstring"), prefDialog.unicodeConverter.ConvertFromUnicode(element.value));
224            } else if (eltType == "listbox")
225              prefDialog.preferences.setCharPref(element.getAttribute("prefstring"), element.value);
226          }
227        },
228
229        modifyAttribute: function (elemID, attribute, value) {
230          if (value) document.getElementById(elemID).removeAttribute(attribute);
231          else document.getElementById(elemID).setAttribute(attribute, "true");
232        },
233
234        constraints: function () {
235          var storage = document.getElementById("VIdent_identity.storage").checked;
236          var smartDraft = document.getElementById("VIdent_identity.smart_draft").checked;
237          var smartReply = document.getElementById("VIdent_identity.smart_reply").checked;
238          var mAttr = prefDialog.base.modifyAttribute;
239
240          // idSelectionConstraint
241          var idSelectionConstraint = (storage || smartReply || smartDraft);
242          mAttr("VIdent_identity.idSelection_ask", "disabled", idSelectionConstraint);
243          mAttr("VIdent_identity.idSelection_ask_always", "disabled", idSelectionConstraint);
244          mAttr("VIdent_identity.idSelection_autocreate", "disabled", idSelectionConstraint);
245          mAttr("VIdent_identity.idSelection_autocreate.desc", "disabled", idSelectionConstraint);
246          mAttr("VIdent_identity.idSelection_preferExisting", "disabled", idSelectionConstraint);
247          mAttr("selection", "featureDisabled", idSelectionConstraint);
248          mAttr("toCompose", "featureDisabled", idSelectionConstraint);
249
250          // idSelectionInputConstraint
251          var idSelectionInputConstraint = (storage && smartReply);
252          mAttr("VIdent_identity.idSelection_storage_prefer_smart_reply", "disabled", idSelectionInputConstraint);
253          mAttr("VIdent_identity.idSelection_storage_ignore_smart_reply", "disabled", idSelectionInputConstraint);
254          if (idSelectionInputConstraint) prefDialog.base.idSelectionResultConstraint();
255
256          // sourceEmailConstraint
257          var sourceEmailConstraint = (smartReply || smartDraft);
258          mAttr("sourceEmail", "featureDisabled", sourceEmailConstraint);
259          mAttr("toSelection", "featureDisabled", sourceEmailConstraint);
260
261        },
262
263        idSelectionResultConstraint: function () {
264          var ask = document.getElementById("VIdent_identity.idSelection_ask")
265          var ask_always = document.getElementById("VIdent_identity.idSelection_ask_always")
266          var autocreate = document.getElementById("VIdent_identity.idSelection_autocreate")
267          var autocreate_desc = document.getElementById("VIdent_identity.idSelection_autocreate.desc")
268          ask_always.setAttribute("disabled", (autocreate.checked || !ask.checked))
269          autocreate.setAttribute("disabled", (ask.checked && ask_always.checked))
270          autocreate_desc.setAttribute("disabled", (ask.checked && ask_always.checked))
271          autocreate_desc.setAttribute("hidden", !ask.checked)
272        },
273
274        smartReplyConstraint: function (element) {
275          var mAttr = prefDialog.base.modifyAttribute;
276          mAttr("VIdent_identity.smart_reply_for_newsgroups", "disabled", element.checked);
277          mAttr("VIdent_identity.smart_reply_headers", "disabled", element.checked);
278          mAttr("VIdent_identity.smart_reply_filter", "disabled", element.checked);
279          mAttr("VIdent_identity.smart_reply_defaultFullName", "disabled", element.checked);
280          mAttr("VIdent_identity.smart_reply_ignoreFullName", "disabled", element.checked);
281          mAttr("VIdent_identity.smart_reply_headers_reset", "disabled", element.checked);
282          mAttr("VIdent_identity.smart_detectByReceivedHeader", "disabled", element.checked);
283          prefDialog.base.constraints();
284        },
285
286        smartReplyHeaderReset: function () {
287          var textfield = document.getElementById("VIdent_identity.smart_reply_headers")
288          textfield.value = "envelope-to\nx-original-to\nto\ncc"
289        },
290
291        smartReplyHideSignature: function () {
292          // check for signature_switch extension
293          AddonManager.getAddonByID("{2ab1b709-ba03-4361-abf9-c50b964ff75d}", function (addon) {
294            if (addon && !addon.userDisabled && !addon.appDisable) {
295              document.getElementById("VIdent_identity.HideSignature.warning").setAttribute("hidden", "true");
296              document.getElementById("VIdent_identity.hide_signature").setAttribute("disabled", "false");
297            }
298          });
299        },
300
301        autoTimestampConstraint: function (element) {
302          var mAttr = prefDialog.base.modifyAttribute;
303          mAttr("VIdent_identity.autoTimestamp.options", "hidden", element.checked);
304        },
305
306        storageConstraint: function (element) {
307          var mAttr = prefDialog.base.modifyAttribute;
308          mAttr("VIdent_identity.storage_store", "disabled", element.checked);
309          mAttr("VIdent_identity.storage_store_base_id", "disabled", element.checked);
310          mAttr("VIdent_identity.storage_dont_update_multiple", "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
361        // check for enigmail extension
362        AddonManager.getAddonByID("{847b3a00-7ab1-11d4-8f02-006008948af5}", function (addon) {
363          if (addon && !addon.userDisabled && !addon.appDisable) {
364            document.getElementById("openPGPencryption").removeAttribute("hidden");
365            document.getElementById("VIdent_identity.hide_openPGP_messageSignature").removeAttribute("hidden");
366          }
367        });
368
369        prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply"));
370        prefDialog.base.smartReplyHideSignature();
371        prefDialog.base.storageConstraint(document.getElementById("VIdent_identity.storage"));
372        prefDialog.base.autoTimestampConstraint(document.getElementById("VIdent_identity.autoTimestamp"));
373        prefDialog.base.constraints();
374        prefDialog.base.menuButtonConstraints();
375        prefDialog.base.initTreeValues();
376
377      },
378
379      savePrefs: function () {
380        // Copy all changes to Elements
381        prefDialog.base.savePrefs();
382      },
383
384      openURL: function (aURL) {
385        var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
386        var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
387        Log.debug("load url " + aURL);
388        uri.spec = aURL;
389        protocolSvc.loadURI(uri);
390      }
391    }
392    vI.prefDialog = prefDialog;
393  }
394});
Note: See TracBrowser for help on using the repository browser.