source: chrome/content/v_identity/v_identity.xml @ 4bb767

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

recognize changes of SMTP and Accounts

  • Property mode set to 100644
File size: 27.4 KB
Line 
1<?xml version="1.0"?>
2<!-- ***** BEGIN LICENSE BLOCK *****
3   - This program is free software; you can redistribute it and/or modify
4   - it under the terms of the GNU General Public License as published by
5   - the Free Software Foundation; either version 2 of the License, or
6   - (at your option) any later version.
7
8   - This program is distributed in the hope that it will be useful,
9   - but WITHOUT ANY WARRANTY; without even the implied warranty of
10   - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   - GNU General Public License for more details.
12
13   - You should have received a copy of the GNU General Public License
14   - along with this program; if not, write to the Free Software
15   - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
16
17   - The Original Code is the Virtual Identity Extension.
18
19   - The Initial Developer of the Original Code is Rene Ejury.
20   - Portions created by the Initial Developer are Copyright (C) 2007
21   - the Initial Developer. All Rights Reserved.
22
23   - Contributor(s):
24   - ***** END LICENSE BLOCK ***** -->
25
26<!DOCTYPE overlay [
27<!ENTITY % vIdentDTD SYSTEM "chrome://v_identity/locale/v_identity.dtd">
28%vIdentDTD;
29]>
30
31
32<bindings id="mailComposeBindings"
33          xmlns="http://www.mozilla.org/xbl"
34          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
35          xmlns:xbl="http://www.mozilla.org/xbl">
36   
37    <binding id="tooltipPopupset">
38    <implementation>
39    <method name="addTooltip">
40    <parameter name="elem" />
41    <parameter name="permanent" />
42            <body><![CDATA[
43        var randID = elem.tooltipElem.getAttribute("tooltip");
44        this.removeTooltip(randID);
45        if (!randID) {
46            randID = "tooltip_" + parseInt((new Date()).getTime());
47            elem.tooltipElem.setAttribute("tooltip", randID);
48        }
49        var toolTip = document.createElement("tooltip");
50        toolTip.setAttribute("class", "identityDataTooltip");
51        toolTip.setAttribute("id", randID);
52        toolTip.elem = elem;
53        toolTip.permanent = permanent;
54        this.appendChild(toolTip);
55        ]]></body>
56    </method>
57    <method name="removeTooltip">
58    <parameter name="randID" />
59            <body><![CDATA[
60        if (randID) this.removeChild(document.getElementById(randID))
61        ]]></body>
62    </method>
63    </implementation>
64    </binding>
65   
66    <binding id="vI_identityDataTooltip" extends="chrome://global/content/bindings/popup.xml#tooltip">
67    <content onpopuphidden="popuphidden();" onpopupshowing="this.popupshowing();this.resize()" onpopupshown="this.resize()" >
68            <xul:browser style="overflow:hidden" anonid="tooltipBrowser" class="vI_htmlTextBox" cssSource="vI_TooltipBrowser.css" flex="1" disablehistory="true" onoverflow="document.getBindingParent(this).resize()"/>
69            <children />
70    </content>
71    <implementation>
72    <method name="popupshowing">
73            <body><![CDATA[
74        if (!this._identityInfo) {
75            this._identityInfo =
76                "<table><tr>" +
77                    "<td class='image'><img src='chrome://v_identity/skin/vi-info.png' /></td>" +
78                    "<td class='identityTable'>" +
79                        "<div class='name'>" + this.elem.identityData.combinedNameHtml + "</div>" +
80                        "<table><tbody>" + this.elem.identityData.getMatrix() + "</tbody></table>" +
81                    "</td>" +
82                "</tr></table>"
83//          vI_notificationBar.dump("** v_identity.xml added tooltip with id='" +  this.elem.identityData.id.key + "'\n")
84            this._tooltipBrowser.outputString = this._identityInfo;
85        }
86        ]]></body>
87    </method>
88    <method name ="popuphidden">
89            <body><![CDATA[
90        if (!this.permanent) this._identityInfo = null;
91        ]]></body>
92    </method>   
93    <method name="resize">
94        <body><![CDATA[
95        if (!this._identityInfo) return;
96        var width = document.getElementById("msgIdentity_clone").boxObject.width * 0.7;
97        var height = this._tooltipBrowser.contentDocument.lastChild.scrollHeight + 5;
98        this.sizeTo(width, height);
99        width = document.getElementById("msgIdentity_clone").boxObject.width * 0.75;
100        this.sizeTo(width, height);
101        ]]></body>
102    </method>
103    <field name="permanent" />
104    <field name="elem" />
105<!--    <field name="identityData">this.elem.identityData</field> -->
106    <field name="_identityInfo">false</field>
107<!--    <field name="_initialized">false</field> -->
108    <field name="_tooltipBrowser">document.getAnonymousElementByAttribute(this, "anonid", "tooltipBrowser")</field>
109    </implementation>
110    </binding> 
111   
112    <binding id="fromPopupItem_clone" extends="chrome://global/content/bindings/menu.xml#menuitem">
113    <content excludes="template,observes,menupopup">
114        <xul:image class="menupopup_clone-icon" xbl:inherits="src"/>
115        <xul:label class="menupopup_clone-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/>
116        <xul:label value="&vident.accPane.prettyName.prefix;" class="menupopup_clone-vid virtIdLabel" vid="false" xbl:inherits="vid" crop="right"/>
117            <xul:label class="menupopup_clone-description" xbl:inherits="value=description" crop="right"/>
118        <xul:label class="menupopup_clone-smtp" xbl:inherits="value=smtp,style=smtpStyle" crop="right"/>
119    </content>
120    <implementation>
121    <constructor>
122        <![CDATA[
123        this._identityDataStorage = this.identityData;
124       
125        this.label = this._identityDataStorage.combinedName;
126        this.value = this._identityDataStorage.id.key;
127        // vI_notificationBar.dump("** v_identity.xml fromPopupItem_clone constructor id='" + this.value + "'.\n")
128
129        this.description = this._identityDataStorage.sideDescription;
130        this.smtp = this._identityDataStorage.smtp.value;
131        // vI_notificationBar.dump("** v_identity.xml fromPopupItem_clone constructor smtp='" + this.smtp + "'.\n")
132        this.smtpStyle = "width:" + document.getElementById("smtp_server_list").clientWidth + "px;";
133        this._identityDataStorage.smtp.value;
134       
135        document.getElementById("vI_tooltipPopupset").addTooltip(this, true);
136        ]]>
137    </constructor>
138    <method name="clean">
139            <body><![CDATA[
140        document.getElementById("vI_tooltipPopupset")
141            .removeTooltip(this.tooltipElem.getAttribute("tooltip"));
142        ]]></body>
143    </method>
144    <destructor>
145        <![CDATA[
146        this.clean();
147        ]]>
148    </destructor>
149    <property name="_identityData" onget="return this._identityDataStorage;" />
150    <field name="tooltipElem">this</field>
151    <property name="vid" onget="return this.getAttribute('vid');" onset="this.setAttribute('vid', val); return val;" />
152    <property name="label" onget="return this.getAttribute('label');" onset="this.setAttribute('label', val); return val;" />
153    <property name="value" onget="return this.getAttribute('value');" onset="this.setAttribute('value', val); return val;" />
154    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
155    <property name="smtp" onget="return this.getAttribute('smtp');" onset="this.setAttribute('smtp', val); return val;" />
156    <property name="smtpStyle" onget="return this.getAttribute('smtpStyle');" onset="this.setAttribute('smtpStyle', val); return val;" />
157    </implementation>
158    </binding>
159
160    <binding id="smtpServerList">
161    <resources>
162            <stylesheet src="chrome://global/skin/menu.css"/>
163    </resources>
164    <content sizetopopup="pref">
165        <xul:hbox id="smtpServerHbox" class="smtpServerHbox">
166            <xul:menulist class="smtpServerMenuList" anonid="smtpServerMenuList" allowevents="true" id="smtp_server_list">
167                <xul:menupopup anonid="smtp_server_list_popup" />
168            </xul:menulist>
169            <xul:checkbox  id="saveSMTPSwitch" class="vI_plain" allowevents="true" oncommand="event.stopPropagation();vI_statusmenu.changeSMTPStatus(this);" >
170                <xul:observes element="vI_statusMenu_storage_saveSMTP" attribute="checked" />
171                <xul:observes element="vI_statusMenu_storage_saveSMTP" attribute="disabled" />
172            </xul:checkbox>
173            <xul:observes element="vI_statusMenu_storage_saveSMTP" attribute="checked" />
174            <xul:observes element="vI_statusMenu_storage_saveSMTP" attribute="disabled" />
175        </xul:hbox>
176    </content>
177    <implementation>
178    <method name="addNoneServer">
179        <body><![CDATA[
180        var listitem = document.createElement("menuitem");
181        listitem.setAttribute("class", "menuitem-non-iconic");
182        listitem.setAttribute("type", "non-iconic-noaccel");
183        listitem.setAttribute("label", " ");
184        listitem.setAttribute("key", NO_SMTP_TAG);
185        this._smtpPopup.insertBefore(listitem, this._smtpPopup.firstChild);
186        this._smtpMenu.selectedItem = listitem;
187        ]]></body>
188    </method>
189    <method name="_addDefaultServer">
190            <body><![CDATA[
191        var listitem = document.createElement("menuitem");
192        listitem.setAttribute("class", "menuitem-non-iconic");
193        listitem.setAttribute("type", "non-iconic-noaccel");
194        listitem.setAttribute("label", document.getElementById("bundle_messenger").getString("defaultServerTag"));
195        this._smtpPopup.appendChild(listitem);
196        this._smtpMenu.selectedItem = listitem;
197        ]]></body>
198    </method>
199    <method name="_addServer">
200        <parameter name="server" />
201            <body><![CDATA[
202        if (server instanceof Components.interfaces.nsISmtpServer && !server.redirectorType) {
203            var listitem = document.createElement("menuitem");
204            listitem.setAttribute("class", "menuitem-non-iconic");
205            listitem.setAttribute("type", "non-iconic-noaccel");
206            listitem.setAttribute("label", (server.description?server.description:server.hostname));
207            listitem.setAttribute("key", server.key);
208            this._smtpPopup.appendChild(listitem);
209        }
210        ]]></body>
211    </method>
212    <method name="refresh">
213        <body><![CDATA[
214            this.unload();
215            this.load();
216        ]]></body>
217    </method>
218    <method name="load">
219        <body><![CDATA[
220            this._addDefaultServer();
221            this._smtpPopup.appendChild(document.createElement("menuseparator"));
222
223            var servers = Components.classes["@mozilla.org/messengercompose/smtp;1"]
224                .getService(Components.interfaces.nsISmtpService).smtpServers;
225           
226            if (typeof(servers.Count) == "undefined")       // TB 3.x
227                while (servers && servers.hasMoreElements())
228                    this._addServer(servers.getNext());
229            else                            // TB 2.x
230                for (var i=0 ; i<servers.Count(); i++)
231                    this._addServer(servers.QueryElementAt(i, Components.interfaces.nsISmtpServer));
232        ]]></body>
233    </method>
234    <method name="unload">
235        <body><![CDATA[
236            var MenuItems = this._smtpPopup.childNodes
237            while (MenuItems.length > 0) { this._smtpPopup.removeChild(MenuItems[0]) }
238            this._smtpMenu.selectedItem = null;
239        ]]></body>
240    </method>
241    <constructor>
242        <![CDATA[
243            this.load();
244        ]]>
245    </constructor>
246    <property name="smtp" onget="return this._smtpMenu.selectedItem.getAttribute('key');" >
247        <setter><![CDATA[
248        if (val == NO_SMTP_TAG) return; // dont overwrite if not set
249        vI_notificationBar.dump("** v_identity.xml smtp set to '" + val + "'\n")
250        var MenuItems = this._smtpPopup.childNodes
251        for (var index = 0; index < MenuItems.length; index++) {
252            if (MenuItems[index].localName == "menuseparator") continue;
253            if (MenuItems[index].getAttribute("key") == val) {
254                this._smtpMenu.selectedItem = MenuItems[index];
255                break;
256            }
257        }
258        ]]></setter>
259    </property>
260    <field name="_smtpPopup">document.getAnonymousElementByAttribute(this, "anonid", "smtp_server_list_popup")</field>
261    <field name="_smtpMenu">document.getAnonymousElementByAttribute(this, "anonid", "smtpServerMenuList")</field>
262    <field name="_smtpService"></field>
263
264    </implementation>
265    </binding>
266   
267   
268   
269   
270    <binding id="fromMenuList_clone" display="xul:menu" extends="chrome://global/content/bindings/menulist.xml#menulist-description">
271    <resources>
272            <stylesheet src="chrome://global/skin/menu.css"/>
273        <stylesheet src="chrome://global/skin/autocomplete.css"/>
274    </resources>
275    <content sizetopopup="pref">
276        <xul:hbox class="contentHBox" anonid="contentHBox" flex="1"  >
277            <xul:hbox id="identityHbox" class="identityHbox" flex="1">
278                <xul:vbox><xul:spacer flex="1" />
279                    <xul:image class="menulist_clone-icon" id="msgIdentity_clone_image" xbl:inherits="src"/>
280                <xul:spacer flex="1" /></xul:vbox>
281                <xul:vbox flex="1" id="msgIdentity_clone_fromVbox"><xul:spacer flex="1" />
282<!--                    textbox is internally an html:input field which inherits the onblur event.
283                    Thats why we have to search the textbox before calling blurEvent() -->
284                    <xul:textbox anonid="textBox" type="search" id="msgIdentity_clonetextBoxElem" class="plain menulist_clone-textbox" allowevents="true" xbl:inherits="value=label,crop,accesskey,nomatch=vid" oncommand="event.stopPropagation(); document.getBindingParent(this).inputEvent();"
285                    onblur="event.stopPropagation(); var elem = this; while (elem.localName != 'textbox') elem = elem.parentNode; document.getBindingParent(elem).blurEvent();"
286                    crop="right" highlightnonmatches="true"/>
287                <xul:spacer flex="1" /></xul:vbox>
288                <xul:vbox id="saveSwitch"><xul:spacer flex="1" />
289                    <xul:checkbox class="vI_plain" allowevents="true" oncommand="event.stopPropagation();vI_statusmenu.changeSaveStatus(this);" >
290                        <xul:observes element="vI_statusMenu_storage_save" attribute="checked" />
291                    </xul:checkbox>
292                <xul:spacer flex="1" /></xul:vbox>
293                <xul:vbox><xul:spacer flex="1" />
294                    <xul:label value="&vident.accPane.prettyName.prefix;" class="menu_clone-vid virtIdLabel" xbl:inherits="vid" crop="right"/>
295                <xul:spacer flex="1" /></xul:vbox>
296                <xul:observes element="vI_statusMenu_storage_save" attribute="checked" />
297            </xul:hbox>
298            <xul:hbox id="baseIDHbox" class="baseIDHbox" >
299                <xul:vbox><xul:spacer flex="1" />
300                    <xul:hbox>
301                        <xul:label id="msgIdentity_base_id_label" class="menu_clone-description" xbl:inherits="value,hidden=base_id_key_hidden" crop="right" hidden="true"/>
302                        <xul:label id="msgIdentity_clone_label" class="menu_clone-description" xbl:inherits="value=description" crop="right"/>
303                    </xul:hbox>
304                <xul:spacer flex="1" /></xul:vbox>
305                <xul:vbox id="saveBaseIDSwitch"><xul:spacer flex="1" />
306                    <xul:checkbox class="vI_plain" allowevents="true" oncommand="event.stopPropagation();vI_statusmenu.changeBaseIDStatus(this);" >
307                        <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="checked" />
308                        <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="disabled" />
309                    </xul:checkbox>
310                <xul:spacer flex="1" /></xul:vbox>
311                <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="checked" />
312                <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="disabled" />
313            </xul:hbox>
314            <xul:hbox oncommand="event.stopPropagation();document.getBindingParent(this).smtp = this.smtp" xbl:inherits="showSmtp" anonid="smtpServerListHbox" class="smtpServerListHbox" />
315        </xul:hbox>
316        <children />
317    </content>
318        <implementation>
319    <constructor>
320        <![CDATA[       
321        var inputTextbox = document.getAnonymousElementByAttribute(this, "class", "plain menulist_clone-textbox");
322       
323        // check if 'search' textboxes are not implemented change to 'timed'
324        if (!inputTextbox.timeout) inputTextbox.setAttribute("type", "timed");
325        inputTextbox.setAttribute("timeout", "300")
326       
327        // to ealy to access vI_tooltipPopupset, this might break the interface
328        // it will be done in v_identity.js init
329        // document.getElementById("vI_tooltipPopupset").addTooltip(this, false);
330       
331        this._prefroot.addObserver("extensions.virtualIdentity.show_smtp", this._observer, false);
332        this._observer.observe();
333        ]]>
334    </constructor>
335    <destructor>
336        <![CDATA[
337        document.getElementById("vI_tooltipPopupset")
338            .removeTooltip(this.tooltipElem.getAttribute("tooltip"));
339        this._prefroot.removeObserver("extensions.virtualIdentity.show_smtp", this._observer);
340        ]]>
341    </destructor>
342
343    <!--
344    double the Identity-Select Dropdown-Menu to be more flexible with modifying it
345    the original Identity Dropdown Menu is hidden and stores the base Identity, on which one
346    the Virtual Identity is build upon
347    -->
348    <method name="command">
349        <body><![CDATA[
350        vI_notificationBar.dump("\n** v_identity.xml msgIdentityCloneElem.doCommand() \n")
351        // copy selected Menu-Value from clone to orig.
352        vI_notificationBar.dump("** v_identity.xmlcopy selected Menu-Value from clone to orig. Searching for id=" + this.selectedMenuItem.identityData.id.key + " \n")
353       
354        if ( this.selectedMenuItem.identityData.id.key != null ) {
355            var MenuItems = this._msgIdentityPopupElem.childNodes
356            for (var index = 0; index < MenuItems.length; index++) {
357                if ( MenuItems[index].getAttribute("value") == this.selectedMenuItem.identityData.id.key ) {
358                    this._msgIdentityElem.selectedItem = MenuItems[index];
359                    this._msgIdentityElem.value = MenuItems[index].getAttribute("value");
360                    break;
361                }
362            }
363            this._msgIdentityPopupElem.doCommand();
364        }
365        this.identityData = this.selectedMenuItem.identityData.getDuplicate();
366       
367        // if current SMTP is empty, take the one from current Identity
368        if (this.identityData.smtp.hasNoDefinedSMTP()) {
369            this.identityData.smtp.key = gAccountManager.getIdentity(this.value).smtpServerKey;
370            document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this.identityData.smtp.keyNice;
371            this.checkForVirtualIdentity();
372        }
373    ]]></body>
374    </method>   
375    <method name="init">
376        <body><![CDATA[
377        var MenuItems = this._msgIdentityPopupElem.childNodes
378        for (var index = 0; index < MenuItems.length; index++) {
379            var identity = gAccountManager.getIdentity(MenuItems[index].getAttribute("value"));
380           
381            var description;
382            var server = gAccountManager.GetServersForIdentity(identity).QueryElementAt(0, Components.interfaces.nsIMsgIncomingServer);
383            // if (server.type == "nntp")
384                description = server.prettyName
385            // else description = identity.description?"- "+identity.description:identity.accountname
386           
387            var newIdentity = new vI_identityData(identity.email, identity.fullName, identity.key,
388                        identity.smtpServerKey, null, description, true)
389            newIdentity.extras.readIdentityValues(identity);
390               
391            var menuItem = this.addIdentityToCloneMenu(newIdentity)
392
393            if (this._msgIdentity_selectedItem == MenuItems[index]) {
394                this.selectedItem = menuItem;
395                this.identityData = newIdentity.getDuplicate();
396            }
397        }
398        this._popupMenu_separator = true;
399        ]]></body>
400    </method>
401    <method name="clean">
402        <body><![CDATA[
403        var MenuItems = this._popupElem.childNodes;
404        while (MenuItems.length > 0) {
405            try {MenuItems[0].clean();} catch (e) { };
406            this._popupElem.removeChild(MenuItems[0])
407        }
408        this.selectedItem = null;
409        this.identityData = null;
410       
411        this._menu_separator = null;
412        ]]></body>
413    </method>   
414    <method name="addIdentityToCloneMenu">
415        <parameter name="localIdentityData" />
416        <body><![CDATA[
417        var existingItem = this._isExistingCloneMenuItem(localIdentityData);
418        if (!existingItem) {
419            var MenuItem = document.createElement("menuitem");
420                MenuItem.identityData = localIdentityData;
421            MenuItem.setAttribute("class", "identity_clone-popup-item");
422            MenuItem.setAttribute("type", "vIdentity"); // to prevent overriding with menuitem:not([type])
423            MenuItem.value = localIdentityData.id.key; // might be accessed before item is constructed
424
425            // set vid explicitely
426            if (this._popupMenu_separator) MenuItem.setAttribute("vid", "true");
427            else    MenuItem.setAttribute("vid", "false");
428                       
429            this._popupElem.appendChild(MenuItem);
430            return MenuItem;
431        }
432        else return existingItem;
433        ]]></body>
434    </method>
435    <method name="addIdentitiesToCloneMenu">
436        <parameter name="identityCollection" />
437        <body><![CDATA[
438        for (var index = 0; index < identityCollection.number; index++)
439            identityCollection.menuItems[index] =
440                this.addIdentityToCloneMenu(identityCollection.identityDataCollection[index])
441        ]]></body>
442    </method>
443    <method name="_getMenuItemForIdentity">
444        <parameter name="identitykey" />
445        <body><![CDATA[
446        var MenuItems = this._popupElem.childNodes;
447        for (var index = 0; index < MenuItems.length; index++) {
448            if (MenuItems[index].value == identitykey)
449                return MenuItems[index]
450        }
451        return null;
452        ]]></body>
453    </method>
454    <property name="_popupMenu_separator" >
455        <getter><![CDATA[
456            if (this._menu_separator) this._menu_separator.removeAttribute("hidden");
457            return this._menu_separator;
458        ]]></getter>
459        <setter><![CDATA[
460            if (!val) return;
461            // add hidden separator as indicator that now only virtual identities are added
462            this._menu_separator = document.createElement("menuseparator");
463            this._menu_separator.setAttribute("id", "vid_separator");
464            this._menu_separator.setAttribute("hidden", "true");
465            this._popupElem.appendChild(this._menu_separator)
466        ]]></setter>   
467    </property>
468    <property name="selectedMenuItem" >
469        <getter><![CDATA[
470            return this.selectedItem;
471        ]]></getter>
472        <setter><![CDATA[
473            if (typeof(val) == "object") this.selectedItem = val
474            else if (val == "default")
475                this.selectedItem = this._getMenuItemForIdentity(gAccountManager.defaultAccount.defaultIdentity.key)
476            else this.selectedItem = this._getMenuItemForIdentity(val)
477            this.doCommand();
478        ]]></setter>   
479    </property>
480    <method name="_isExistingCloneMenuItem">
481        <parameter name="localIdentityData" />
482        <body><![CDATA[
483        var MenuItems = this._popupElem.childNodes
484        for (var j = 0; j < MenuItems.length; j++) {
485            if (MenuItems[j].localName == "menuseparator") continue;
486            if (MenuItems[j].identityData.equals(localIdentityData)) return MenuItems[j];
487        }
488        return null;
489        ]]></body>
490    </method>
491    <field name="_msgIdentityElem">document.getElementById("msgIdentity")</field>
492    <field name="_msgIdentityPopupElem">document.getElementById("msgIdentityPopup")</field>
493    <property name="_msgIdentity_selectedItem" >
494        <getter><![CDATA[
495            if (!this._msgIdentityElem.selectedItem) {
496                vI_notificationBar.dump("** v_identity.xml: msgIdentityElem.selectedItem not set, using first Menuitem\n");
497                this._msgIdentityElem.selectedItem = this._msgIdentityPopupElem.firstChild
498                vI_notificationBar.dump("** v_identity.xml: msgIdentityElem.doCommand()\n");
499                this._msgIdentityElem.doCommand();
500            }
501            return this._msgIdentityElem.selectedItem;
502        ]]></getter>
503    </property> 
504    <method name="blurEvent">
505            <body><![CDATA[
506        vI_notificationBar.dump("\n** v_identity.xml blurEvent")
507        this.inputEvent(); // timeout might prevent inputEvent to fire before blurEvent
508       
509        this.label = this.identityData.combinedName; // add "<" and ">" to email if required
510        this.setAttribute("label", this.label);
511        ]]></body>
512    </method>
513    <method name="inputEvent">
514            <body><![CDATA[     
515        vI_notificationBar.dump("\n** v_identity.xml inputEvent\n")
516       
517        this.identityData.combinedName = this.label;
518       
519        var existingIdentity = this.checkForVirtualIdentity();
520        if (existingIdentity && this.selectedMenuItem.value != existingIdentity) this.selectedMenuItem = existingIdentity;
521        ]]></body>
522    </method>
523    <method name="checkForVirtualIdentity">
524        <body><![CDATA[
525        vI_notificationBar.dump("** v_identity.xml checkForVirtualIdentity: " + this.identityData.id.key + " '" + this.identityData.id.value + "'\n")
526        var existingIdentity = this.identityData.isExistingIdentity(false);
527       
528        this.vid = (!existingIdentity);
529       
530        vI_msgIdentityCloneTools.signatureSwitch(existingIdentity);
531       
532        return existingIdentity;
533        ]]></body>
534    </method>
535    <property name="smtp" onget="return this.identityData.smtp.key;" > // used to detect changes from SMTP-Menu
536        <setter><![CDATA[
537        this.identityData.smtp.key = val;
538       
539        document.getElementById("vI_tooltipPopupset").addTooltip(this);
540
541        var existingIdentity = this.checkForVirtualIdentity();
542        if (existingIdentity) this.selectedMenuItem = existingIdentity;
543        ]]></setter>
544    </property>
545    <property name="identityData">
546        <getter><![CDATA[
547        this._identityDataStorage.extras.readValues(); // update with current data
548        return this._identityDataStorage;
549        ]]></getter>
550        <setter><![CDATA[
551        vI_notificationBar.dump("** v_identity.xml identityData setter\n")
552        if (!val) this._identityDataStorage = null
553        else {
554            var oldIdentityData = this._identityDataStorage;
555            this._identityDataStorage = val;
556            if (oldIdentityData) { // indicates that it's not first time after clean
557                vI_notificationBar.dump("** v_identity.xml previousID: fullName='" + oldIdentityData.fullName + "' email='" + oldIdentityData.email + "' smtp='" + oldIdentityData.smtp.key + "' id='" + oldIdentityData.id.key + "' existingID='" + oldIdentityData.existingID + "'\n");
558                vI_notificationBar.dump("** v_identity.xml newID: fullName='" + this._identityDataStorage.fullName + "' email='" + this._identityDataStorage.email + "' smtp='" + this._identityDataStorage.smtp.key + "' id='" + this._identityDataStorage.id.key + "' existingID='" + this._identityDataStorage.existingID + "'\n");
559                if (!this._identityDataStorage.existingID && !this._identityDataStorage.combinedName)
560                    this._identityDataStorage.fullName = oldIdentityData.fullName;
561                if (!this._identityDataStorage.existingID && !this._identityDataStorage.email)
562                    this._identityDataStorage.email = oldIdentityData.email;
563                if (!this._identityDataStorage.smtp.key) this._identityDataStorage.smtp.key = oldIdentityData.smtp.key;
564                if (!this._identityDataStorage.id.key) this._identityDataStorage.id.key = oldIdentityData.id.key;
565                this._identityDataStorage.extras.setValues();
566                if (this._identityDataStorage.existingID) this.vid = false;
567                else this.checkForVirtualIdentity();
568            }
569            else    this.vid = false;       // first time after clean it's always a real identity
570           
571            this.label = this._identityDataStorage.combinedName;
572            this.value = this._identityDataStorage.id.key;
573            this.description = this._identityDataStorage.sideDescription;
574            document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this._identityDataStorage.smtp.keyNice;
575            vI_notificationBar.dump("** v_identity.xml resultingID: fullName='" + this._identityDataStorage.fullName + "' email='" + this._identityDataStorage.email + "' smtp='" + this._identityDataStorage.smtp.key + "' id='" + this._identityDataStorage.id.key + "' existingID='" + this._identityDataStorage.existingID + "'\n");           
576        }
577        vI_notificationBar.dump("** v_identity.xml identityData setter done.'\n")
578        ]]></setter>
579    </property>
580    <field name="_popupElem">document.getElementById("msgIdentityPopup_clone")</field>
581    <field name="tooltipElem">document.getAnonymousElementByAttribute(this, "anonid", "contentHBox")</field>
582    <field name="textBoxElem">document.getAnonymousElementByAttribute(this, "anonid", "textBox");</field>
583    <field name="_prefroot">Components.classes["@mozilla.org/preferences-service;1"]
584        .getService(Components.interfaces.nsIPrefService)
585        .getBranch(null).QueryInterface(Components.interfaces.nsIPrefBranch2)</field>
586    <field name="_observer"><![CDATA[({
587        _self: this,
588            observe: function(aSubject, aTopic, aPrefName) {
589            if (this._self._prefroot)
590                this._self.showSmtp =
591                this._self._prefroot.getBoolPref("extensions.virtualIdentity.show_smtp");
592                var MenuItems = this._self._popupElem.childNodes;
593                for (var j = 0; j < MenuItems.length; j++) {
594                    if (MenuItems[j].localName == "menuseparator") continue;
595                    MenuItems[j].smtpStyle = "width:" + document.getElementById("smtp_server_list").clientWidth + "px;";
596                }
597        }
598        })]]></field>
599    <property name="email" onset="this.identityData.email = val; this.label = this.identityData.combinedName; this.inputEvent()" />
600    <property name="vid" onget="return (this.getAttribute('vid') == 'true');" onset="this.setAttribute('vid',val?'true':'false'); return val;" />
601    <property name="label" onget="return this.textBoxElem.value;" onset="this.textBoxElem.value = val; return val;" />
602    <property name="value" onget="return this.getAttribute('value');" onset="this.setAttribute('value', val); return val;" />
603    <property name="extras" onget="return this.identityData.extras;" />
604    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
605    <property name="showSmtp" onget="return (this.getAttribute('showSmtp') == 'true');" onset="this.setAttribute('showSmtp',val?'true':'false'); return val;" />
606    </implementation>
607    </binding>
608</bindings>
Note: See TracBrowser for help on using the repository browser.