source: chrome/content/v_identity/v_identity.xml @ 24afa6

multiEditng_0.6ng_0.8ng_0.9
Last change on this file since 24afa6 was 24afa6, checked in by rene <rene@…>, 10 years ago

only use values if they are set (don't set null as name, email or id, smtp)

  • Property mode set to 100644
File size: 26.3 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    <constructor>
213        <![CDATA[       
214        this._addDefaultServer();
215        this._smtpPopup.appendChild(document.createElement("menuseparator"));
216
217        var servers = Components.classes["@mozilla.org/messengercompose/smtp;1"]
218            .getService(Components.interfaces.nsISmtpService).smtpServers;
219       
220        if (typeof(servers.Count) == "undefined")       // TB 3.x
221            while (servers && servers.hasMoreElements())
222                this._addServer(servers.getNext());
223        else                            // TB 2.x
224            for (var i=0 ; i<servers.Count(); i++)
225                this._addServer(servers.QueryElementAt(i, Components.interfaces.nsISmtpServer));
226       
227        ]]>
228    </constructor>
229    <property name="smtp" onget="return this._smtpMenu.selectedItem.getAttribute('key');" >
230        <setter><![CDATA[
231        if (val == NO_SMTP_TAG) return; // dont overwrite if not set
232        vI_notificationBar.dump("** v_identity.xml smtp set to '" + val + "'\n")
233        var MenuItems = this._smtpPopup.childNodes
234        for (var index = 0; index < MenuItems.length; index++) {
235            if (MenuItems[index].localName == "menuseparator") continue;
236            if (MenuItems[index].getAttribute("key") == val) {
237                this._smtpMenu.selectedItem = MenuItems[index];
238                break;
239            }
240        }
241        ]]></setter>
242    </property>
243    <field name="_smtpPopup">document.getAnonymousElementByAttribute(this, "anonid", "smtp_server_list_popup")</field>
244    <field name="_smtpMenu">document.getAnonymousElementByAttribute(this, "anonid", "smtpServerMenuList")</field>
245    <field name="_smtpService"></field>
246
247    </implementation>
248    </binding>
249   
250   
251   
252   
253    <binding id="fromMenuList_clone" display="xul:menu" extends="chrome://global/content/bindings/menulist.xml#menulist-description">
254    <resources>
255            <stylesheet src="chrome://global/skin/menu.css"/>
256        <stylesheet src="chrome://global/skin/autocomplete.css"/>
257    </resources>
258    <content sizetopopup="pref">
259        <xul:hbox class="contentHBox" anonid="contentHBox" flex="1"  >
260            <xul:hbox id="identityHbox" class="identityHbox" flex="1">
261                <xul:vbox><xul:spacer flex="1" />
262                    <xul:image class="menulist_clone-icon" id="msgIdentity_clone_image" xbl:inherits="src"/>
263                <xul:spacer flex="1" /></xul:vbox>
264                <xul:vbox flex="1" id="msgIdentity_clone_fromVbox"><xul:spacer flex="1" />
265<!--                    textbox is internally an html:input field which inherits the onblur event.
266                    Thats why we have to search the textbox before calling blurEvent() -->
267                    <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();"
268                    onblur="event.stopPropagation(); var elem = this; while (elem.localName != 'textbox') elem = elem.parentNode; document.getBindingParent(elem).blurEvent();"
269                    crop="right" highlightnonmatches="true"/>
270                <xul:spacer flex="1" /></xul:vbox>
271                <xul:vbox id="saveSwitch"><xul:spacer flex="1" />
272                    <xul:checkbox class="vI_plain" allowevents="true" oncommand="event.stopPropagation();vI_statusmenu.changeSaveStatus(this);" >
273                        <xul:observes element="vI_statusMenu_storage_save" attribute="checked" />
274                    </xul:checkbox>
275                <xul:spacer flex="1" /></xul:vbox>
276                <xul:vbox><xul:spacer flex="1" />
277                    <xul:label value="&vident.accPane.prettyName.prefix;" class="menu_clone-vid virtIdLabel" xbl:inherits="vid" crop="right"/>
278                <xul:spacer flex="1" /></xul:vbox>
279                <xul:observes element="vI_statusMenu_storage_save" attribute="checked" />
280            </xul:hbox>
281            <xul:hbox id="baseIDHbox" class="baseIDHbox" >
282                <xul:vbox><xul:spacer flex="1" />
283                    <xul:hbox>
284                        <xul:label id="msgIdentity_base_id_label" class="menu_clone-description" xbl:inherits="value,hidden=base_id_key_hidden" crop="right" hidden="true"/>
285                        <xul:label id="msgIdentity_clone_label" class="menu_clone-description" xbl:inherits="value=description" crop="right"/>
286                    </xul:hbox>
287                <xul:spacer flex="1" /></xul:vbox>
288                <xul:vbox id="saveBaseIDSwitch"><xul:spacer flex="1" />
289                    <xul:checkbox class="vI_plain" allowevents="true" oncommand="event.stopPropagation();vI_statusmenu.changeBaseIDStatus(this);" >
290                        <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="checked" />
291                        <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="disabled" />
292                    </xul:checkbox>
293                <xul:spacer flex="1" /></xul:vbox>
294                <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="checked" />
295                <xul:observes element="vI_statusMenu_storage_saveBaseID" attribute="disabled" />
296            </xul:hbox>
297            <xul:hbox oncommand="event.stopPropagation();document.getBindingParent(this).smtp = this.smtp" anonid="smtpServerListHbox" class="smtpServerListHbox" />
298        </xul:hbox>
299        <children />
300    </content>
301        <implementation>
302    <constructor>
303        <![CDATA[       
304        var inputTextbox = document.getAnonymousElementByAttribute(this, "class", "plain menulist_clone-textbox");
305       
306        // check if 'search' textboxes are not implemented change to 'timed'
307        if (!inputTextbox.timeout) inputTextbox.setAttribute("type", "timed");
308        inputTextbox.setAttribute("timeout", "300")
309       
310        // to ealy to access vI_tooltipPopupset, this might break the interface
311        // it will be done in v_identity.js init
312        // document.getElementById("vI_tooltipPopupset").addTooltip(this, false);
313       
314        this._prefroot.addObserver("extensions.virtualIdentity.show_smtp", this._observer, false);
315        this._observer.observe();
316        ]]>
317    </constructor>
318    <destructor>
319        <![CDATA[
320        document.getElementById("vI_tooltipPopupset")
321            .removeTooltip(this.tooltipElem.getAttribute("tooltip"));
322        this._prefroot.removeObserver("extensions.virtualIdentity.show_smtp", this._observer);
323        ]]>
324    </destructor>
325
326    <!--
327    double the Identity-Select Dropdown-Menu to be more flexible with modifying it
328    the original Identity Dropdown Menu is hidden and stores the base Identity, on which one
329    the Virtual Identity is build upon
330    -->
331    <method name="command">
332        <body><![CDATA[
333        vI_notificationBar.dump("\n** v_identity.xml msgIdentityCloneElem.doCommand() \n")
334        // copy selected Menu-Value from clone to orig.
335        vI_notificationBar.dump("** v_identity.xmlcopy selected Menu-Value from clone to orig. Searching for id=" + this.selectedMenuItem.identityData.id.key + " \n")
336       
337        if ( this.selectedMenuItem.identityData.id.key != null ) {
338            var MenuItems = this._msgIdentityPopupElem.childNodes
339            for (var index = 0; index < MenuItems.length; index++) {
340                if ( MenuItems[index].getAttribute("value") == this.selectedMenuItem.identityData.id.key ) {
341                    this._msgIdentityElem.selectedItem = MenuItems[index];
342                    this._msgIdentityElem.value = MenuItems[index].getAttribute("value");
343                    break;
344                }
345            }
346            this._msgIdentityPopupElem.doCommand();
347        }
348        this.identityData = this.selectedMenuItem.identityData.getDuplicate();
349       
350        // if current SMTP is empty, take the one from current Identity
351        if (this.identityData.smtp.hasNoDefinedSMTP()) {
352            this.identityData.smtp.key = gAccountManager.getIdentity(this.value).smtpServerKey;
353            document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this.identityData.smtp.keyNice;
354            this.checkForVirtualIdentity();
355        }
356    ]]></body>
357    </method>   
358    <method name="init">
359        <body><![CDATA[
360        var MenuItems = this._msgIdentityPopupElem.childNodes
361        for (var index = 0; index < MenuItems.length; index++) {
362            var identity = gAccountManager.getIdentity(MenuItems[index].getAttribute("value"));
363           
364            var description;
365            var server = gAccountManager.GetServersForIdentity(identity).QueryElementAt(0, Components.interfaces.nsIMsgIncomingServer);
366            // if (server.type == "nntp")
367                description = server.prettyName
368            // else description = identity.description?"- "+identity.description:identity.accountname
369           
370            var newIdentity = new identityData(identity.email, identity.fullName, identity.key,
371                        identity.smtpServerKey, null, description)
372            newIdentity.extras.readIdentityValues(identity);
373
374            var menuItem = this.addIdentityToCloneMenu(newIdentity)
375
376            if (this._msgIdentity_selectedItem == MenuItems[index]) {
377                this.selectedItem = menuItem;
378                this.identityData = newIdentity.getDuplicate();
379            }
380        }
381        this._popupMenu_separator = true;
382        ]]></body>
383    </method>
384    <method name="clean">
385        <body><![CDATA[
386        var MenuItems = this._popupElem.childNodes;
387        while (MenuItems.length > 0) {
388            try {MenuItems[0].clean();} catch (e) { };
389            this._popupElem.removeChild(MenuItems[0])
390        }
391        this.selectedItem = null;
392        this.identityData = null;
393       
394        this._menu_separator = null;
395        ]]></body>
396    </method>   
397    <method name="addIdentityToCloneMenu">
398        <parameter name="localIdentityData" />
399        <body><![CDATA[
400        var existingItem = this._isExistingCloneMenuItem(localIdentityData);
401        if (!existingItem) {
402            var MenuItem = document.createElement("menuitem");
403                MenuItem.identityData = localIdentityData;
404            MenuItem.setAttribute("class", "identity_clone-popup-item");
405            MenuItem.setAttribute("type", "vIdentity"); // to prevent overriding with menuitem:not([type])
406            MenuItem.value = localIdentityData.id.key; // might be accessed before item is constructed
407
408            // set vid explicitely
409            if (this._popupMenu_separator) MenuItem.setAttribute("vid", "true");
410            else    MenuItem.setAttribute("vid", "false");
411                       
412            this._popupElem.appendChild(MenuItem);
413            return MenuItem;
414        }
415        else return existingItem;
416        ]]></body>
417    </method>
418    <method name="addIdentitiesToCloneMenu">
419        <parameter name="identityCollection" />
420        <body><![CDATA[
421        for (var index = 0; index < identityCollection.number; index++)
422            identityCollection.menuItems[index] =
423                this.addIdentityToCloneMenu(identityCollection.identityDataCollection[index])
424        ]]></body>
425    </method>
426    <method name="_getMenuItemForIdentity">
427        <parameter name="identitykey" />
428        <body><![CDATA[
429        var MenuItems = this._popupElem.childNodes;
430        for (var index = 0; index < MenuItems.length; index++) {
431            if (MenuItems[index].value == identitykey)
432                return MenuItems[index]
433        }
434        return null;
435        ]]></body>
436    </method>
437    <property name="_popupMenu_separator" >
438        <getter><![CDATA[
439            if (this._menu_separator) this._menu_separator.removeAttribute("hidden");
440            return this._menu_separator;
441        ]]></getter>
442        <setter><![CDATA[
443            if (!val) return;
444            // add hidden separator as indicator that now only virtual identities are added
445            this._menu_separator = document.createElement("menuseparator");
446            this._menu_separator.setAttribute("id", "vid_separator");
447            this._menu_separator.setAttribute("hidden", "true");
448            this._popupElem.appendChild(this._menu_separator)
449        ]]></setter>   
450    </property>
451    <property name="selectedMenuItem" >
452        <getter><![CDATA[
453            return this.selectedItem;
454        ]]></getter>
455        <setter><![CDATA[
456            if (typeof(val) == "object") this.selectedItem = val
457            else if (val == "default")
458                this.selectedItem = this._getMenuItemForIdentity(gAccountManager.defaultAccount.defaultIdentity.key)
459            else this.selectedItem = this._getMenuItemForIdentity(val)
460            this.doCommand();
461        ]]></setter>   
462    </property>
463    <method name="_isExistingCloneMenuItem">
464        <parameter name="localIdentityData" />
465        <body><![CDATA[
466        var MenuItems = this._popupElem.childNodes
467        for (var j = 0; j < MenuItems.length; j++) {
468            if (MenuItems[j].localName == "menuseparator") continue;
469            if (MenuItems[j].identityData.equals(localIdentityData)) return MenuItems[j];
470        }
471        return null;
472        ]]></body>
473    </method>
474    <field name="_msgIdentityElem">document.getElementById("msgIdentity")</field>
475    <field name="_msgIdentityPopupElem">document.getElementById("msgIdentityPopup")</field>
476    <property name="_msgIdentity_selectedItem" >
477        <getter><![CDATA[
478            if (!this._msgIdentityElem.selectedItem) {
479                vI_notificationBar.dump("** v_identity.xml: msgIdentityElem.selectedItem not set, using first Menuitem\n");
480                this._msgIdentityElem.selectedItem = this._msgIdentityPopupElem.firstChild
481                vI_notificationBar.dump("** v_identity.xml: msgIdentityElem.doCommand()\n");
482                this._msgIdentityElem.doCommand();
483            }
484            return this._msgIdentityElem.selectedItem;
485        ]]></getter>
486    </property> 
487    <method name="blurEvent">
488            <body><![CDATA[
489        vI_notificationBar.dump("\n** v_identity.xml blurEvent")
490        this.inputEvent(); // timeout might prevent inputEvent to fire before blurEvent
491       
492        this.label = this.identityData.combinedName; // add "<" and ">" to email if required
493        this.setAttribute("label", this.label);
494        ]]></body>
495    </method>
496    <method name="inputEvent">
497            <body><![CDATA[     
498        vI_notificationBar.dump("\n** v_identity.xml inputEvent\n")
499       
500        this.identityData.combinedName = this.label;
501       
502        var existingIdentity = this.checkForVirtualIdentity();
503        if (existingIdentity) this.selectedMenuItem = existingIdentity;
504        ]]></body>
505    </method>
506    <method name="checkForVirtualIdentity">
507        <body><![CDATA[
508        vI_notificationBar.dump("** v_identity.xml checkForVirtualIdentity: " + this.identityData.id.key + " '" + this.identityData.id.value + "'\n")
509        var existingIdentity = this.identityData.isExistingIdentity(false);
510       
511        this.vid = (!existingIdentity);
512       
513        vI_msgIdentityCloneTools.signatureSwitch(existingIdentity);
514       
515        return existingIdentity;
516        ]]></body>
517    </method>
518    <property name="smtp" onget="return this.identityData.smtp.key;" > // used to detect changes from SMTP-Menu
519        <setter><![CDATA[
520        this.identityData.smtp.key = val;
521       
522        document.getElementById("vI_tooltipPopupset").addTooltip(this);
523
524        var existingIdentity = this.checkForVirtualIdentity();
525        if (existingIdentity) this.selectedMenuItem = existingIdentity;
526        ]]></setter>
527    </property>
528    <property name="identityData">
529        <getter><![CDATA[
530        this._identityDataStorage.extras.readValues(); // update with current data
531        return this._identityDataStorage;
532        ]]></getter>
533        <setter><![CDATA[
534        vI_notificationBar.dump("** v_identity.xml identityData setter\n")
535        if (!val) this._identityDataStorage = null
536        else {
537            var oldIdentityData = this._identityDataStorage;
538            this._identityDataStorage = val;
539            if (oldIdentityData) { // indicates that it's not first time after clean
540                vI_notificationBar.dump("** v_identity.xml previousID: fullName='" + oldIdentityData.fullName + "' email='" + oldIdentityData.email + "' smtp='" + oldIdentityData.smtp.key + "' id='" + oldIdentityData.id.key + "'\n");
541                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 + "'\n");
542                if (!this._identityDataStorage.combinedName) this._identityDataStorage.fullName = oldIdentityData.fullName;
543                if (!this._identityDataStorage.email) this._identityDataStorage.email = oldIdentityData.email;
544                if (!this._identityDataStorage.smtp.key) this._identityDataStorage.smtp.key = oldIdentityData.smtp.key;
545                if (!this._identityDataStorage.id.key) this._identityDataStorage.id.key = oldIdentityData.id.key;
546                this._identityDataStorage.extras.setValues();
547                this.checkForVirtualIdentity();
548            }
549            else    this.vid = false;       // first time after clean it's always a real identity
550           
551            this.label = this._identityDataStorage.combinedName;
552            this.value = this._identityDataStorage.id.key;
553            this.description = this._identityDataStorage.sideDescription;
554            document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this._identityDataStorage.smtp.keyNice;
555            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 + "'\n");         
556        }
557        vI_notificationBar.dump("** v_identity.xml identityData setter done.'\n")
558        ]]></setter>
559    </property>
560    <field name="_popupElem">document.getElementById("msgIdentityPopup_clone")</field>
561    <field name="tooltipElem">document.getAnonymousElementByAttribute(this, "anonid", "contentHBox")</field>
562    <field name="textBoxElem">document.getAnonymousElementByAttribute(this, "anonid", "textBox");</field>
563    <field name="_prefroot">Components.classes["@mozilla.org/preferences-service;1"]
564        .getService(Components.interfaces.nsIPrefService)
565        .getBranch(null).QueryInterface(Components.interfaces.nsIPrefBranch2)</field>
566    <field name="_observer"><![CDATA[({
567        _self: this,
568            observe: function(aSubject, aTopic, aPrefName) {
569            if (this._self._prefroot)
570                this._self.showSmtp =
571                this._self._prefroot.getBoolPref("extensions.virtualIdentity.show_smtp");
572                var MenuItems = this._self._popupElem.childNodes;
573                for (var j = 0; j < MenuItems.length; j++) {
574                    if (MenuItems[j].localName == "menuseparator") continue;
575                    MenuItems[j].smtpStyle = "width:" + document.getElementById("smtp_server_list").clientWidth + "px;";
576                }
577        }
578        })]]></field>
579    <property name="email" onset="this.identityData.email = val; this.label = this.identityData.combinedName; this.inputEvent()" />
580    <property name="vid" onget="return (this.getAttribute('vid') == 'true');" onset="this.setAttribute('vid',val?'true':'false'); return val;" />
581    <property name="label" onget="return this.textBoxElem.value;" onset="this.textBoxElem.value = val; return val;" />
582    <property name="value" onget="return this.getAttribute('value');" onset="this.setAttribute('value', val); return val;" />
583    <property name="extras" onget="return this.identityData.extras;" />
584    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
585    <property name="showSmtp" onget="return (this.getAttribute('showSmtp') == 'true');" onset="this.setAttribute('showSmtp',val?'true':'false'); return val;" />
586    </implementation>
587    </binding>
588</bindings>
Note: See TracBrowser for help on using the repository browser.