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

source: content/prefDialog/vI_prefDialog.js

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

fixed openUrl

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