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

source: content/prefDialog/vI_prefDialog.js @ 4e6c57

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

removed enigmail storage options, this is done by enigmail now

  • Property mode set to 100644
File size: 19.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_characterEncoding",
156          "VIdent_identity.storageExtras_messageFormat",
157          "VIdent_identity.storageExtras_sMime_messageEncryption",
158          "VIdent_identity.storageExtras_sMime_messageSignature",
159          "VIdent_identity.idSelection_storage_prefer_smart_reply",
160          "VIdent_identity.idSelection_storage_ignore_smart_reply",
161          "VIdent_identity.idSelection_ask",
162          "VIdent_identity.idSelection_ask_always",
163          "VIdent_identity.idSelection_autocreate",
164          "VIdent_identity.idSelection_preferExisting",
165          "VIdent_identity.idSelection_ignoreIDs",
166          "VIdent_identity.autoReplyToSelf"
167        ],
168
169        init: function () {
170          // initialize the default window values...
171          for (var i = 0; i < prefDialog.base._elementIDs.length; i++) {
172            var elementID = prefDialog.base._elementIDs[i];
173            var element = document.getElementById(elementID);
174            if (!element) break;
175            var eltType = element.localName;
176            //              try {
177            if (eltType == "radiogroup")
178              element.selectedItem = element.childNodes[
179                prefDialog.preferences.getIntPref(element.getAttribute("prefstring"))];
180            else if (eltType == "checkbox")
181              element.checked =
182              prefDialog.preferences.getBoolPref(element.getAttribute("prefstring"));
183            else if (eltType == "textbox")
184              if (element.getAttribute("preftype") == "int")
185                element.setAttribute("value",
186                  prefDialog.preferences.getIntPref(element.getAttribute("prefstring")));
187              else {
188                element.setAttribute("value",
189                  prefDialog.unicodeConverter.ConvertToUnicode(prefDialog.preferences.getCharPref(element.getAttribute("prefstring"))));
190              } else if (eltType == "listbox")
191              element.value =
192              prefDialog.preferences.getCharPref(element.getAttribute("prefstring"));
193            //              } catch (ex) {}
194            //             dump("setting textbox value: " + element.getAttribute("prefstring") + " " + element.getAttribute("value") + "\n");
195          }
196        let versionLabel = document.getElementById("logoButton1");
197        versionLabel.setAttribute("label", versionLabel.getAttribute("label") + vI.extensionVersion);
198        versionLabel = document.getElementById("logoButton2");
199        versionLabel.setAttribute("label", versionLabel.getAttribute("label") + vI.extensionVersion);
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_dont_update_multiple", "disabled", element.checked);
307          mAttr("VIdent_identity.storage_colorIndication", "disabled", element.checked);
308          mAttr("VIdent_identity.storage_warn_update", "disabled", element.checked);
309          mAttr("VIdent_identity.storage_warn_vI_replace", "disabled", element.checked);
310          mAttr("VIdent_identity.storage_notification", "disabled", element.checked);
311          mAttr("VIdent_identity.storage_getOneOnly", "disabled", element.checked);
312          mAttr("VIdent_identity.storageExtras_returnReciept", "disabled", element.checked);
313          mAttr("VIdent_identity.storageExtras_characterEncoding", "disabled", element.checked);
314          mAttr("VIdent_identity.storageExtras_messageFormat", "disabled", element.checked);
315          mAttr("VIdent_identity.storageExtras_sMime_messageEncryption", "disabled", element.checked);
316          mAttr("VIdent_identity.storageExtras_sMime_messageSignature", "disabled", element.checked);
317          mAttr("storageOut", "featureDisabled", element.checked);
318          mAttr("storageUp", "featureDisabled", element.checked);
319          mAttr("storageUpDown", "featureDisabled", element.checked);
320          prefDialog.base.constraints();
321        },
322
323        menuButtonConstraints: function (elem) {
324          var mAttr = prefDialog.base.modifyAttribute;
325          var valueParam = (document.getElementById("viewGroup").getAttribute("hidden") == "true"); // true -> removeAttribute
326          var dialogElem = document.getElementById("vI_prefDialog");
327          mAttr("logoButton2", "hidden", valueParam);
328          mAttr("toggleIcon", "open", valueParam);
329          document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").removeAttribute("flex");
330        },
331
332        flipMenuButtons: function (elem) {
333          var mAttr = prefDialog.base.modifyAttribute;
334          var valueParam = (elem.getAttribute("open") == "true");
335          var dialogElem = document.getElementById("vI_prefDialog");
336          var oldContentElemHeight = document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight;
337          mAttr("viewGroup", "hidden", !valueParam);
338          mAttr("logoButton2", "hidden", valueParam);
339          mAttr(elem.id, "open", valueParam);
340          window.resizeBy(0, document.getAnonymousElementByAttribute(dialogElem, "class", "box-inherit dialog-content-box").clientHeight - oldContentElemHeight);
341        },
342
343        initTreeValues: function () {
344          var prefTrees = document.getElementById("prefTabbox").getElementsByAttribute("class", "vIprefTree");
345          for (var i = 0; i < prefTrees.length; i++) prefTrees[i].currentIndex = 0;
346        }
347      },
348
349      init: function () {
350        prefDialog.unicodeConverter.charset = "UTF-8";
351        prefDialog.base.init();
352
353        prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply"));
354        prefDialog.base.smartReplyHideSignature();
355        prefDialog.base.storageConstraint(document.getElementById("VIdent_identity.storage"));
356        prefDialog.base.autoTimestampConstraint(document.getElementById("VIdent_identity.autoTimestamp"));
357        prefDialog.base.constraints();
358        prefDialog.base.menuButtonConstraints();
359        prefDialog.base.initTreeValues();
360
361      },
362
363      savePrefs: function () {
364        // Copy all changes to Elements
365        prefDialog.base.savePrefs();
366      },
367
368      openURL: function (aURL) {
369        var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
370        var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
371        Log.debug("load url " + aURL);
372        uri.spec = aURL;
373        protocolSvc.loadURI(uri);
374      }
375    }
376    vI.prefDialog = prefDialog;
377  }
378});
Note: See TracBrowser for help on using the repository browser.