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

source: content/prefDialog/vI_prefDialog.js @ 00c79a

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

remove signatureswitch features finally, signatureswitch extension does not work with TB60

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