source: content/bindings/v_identity.xml @ 35a6b3

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

fixed show/hide of smtp-selector

  • Property mode set to 100644
File size: 29.6 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="vI_tooltipPopupset">
38    <implementation>
39    <method name="addTooltip">
40    <parameter name="elem" />
41    <parameter name="permanent" />
42            <body><![CDATA[
43            if (elem) {
44                var randID = elem.tooltipElem.getAttribute("tooltip");
45                this.removeTooltip(randID);
46                if (!randID) {
47                    randID = "virtualIdentityExtension_tooltip_" + parseInt((new Date()).getTime());
48                    elem.tooltipElem.setAttribute("tooltip", randID);
49                }
50                var toolTip = document.createElement("tooltip");
51                toolTip.setAttribute("class", "identityDataTooltip");
52                toolTip.setAttribute("id", randID);
53                toolTip.elem = elem;
54                toolTip.permanent = permanent;
55                this.appendChild(toolTip);
56                }
57        ]]></body>
58    </method>
59    <method name="removeTooltip">
60    <parameter name="randID" />
61        <body><![CDATA[
62        if (randID) {
63            var randIDelem = document.getElementById(randID);
64            if (randIDelem) this.removeChild(randIDelem);
65        }
66        ]]></body>
67    </method>
68    </implementation>
69    </binding>
70   
71    <binding id="vI_identityDataTooltip" extends="chrome://global/content/bindings/popup.xml#tooltip">
72    <content onpopuphidden="popuphidden();" onpopupshowing="this.popupshowing();this.resize()" onpopupshown="this.resize()" >
73            <xul:browser style="overflow:hidden" anonid="tooltipBrowser" type="chrome" class="vI_htmlTextBox" cssSource="vI_TooltipBrowser.css" flex="1" disablehistory="true" onoverflow="document.getBindingParent(this).resize()"/>
74            <children />
75    </content>
76    <implementation>
77    <method name="popupshowing">
78            <body><![CDATA[
79            virtualIdentityExtension.MyLog.debug("v_identity.xml vI_tooltipPopupset popupshowing.")
80        if (!this._identityInfo) {
81            this._identityInfo =
82                "<table><tr>" +
83                    "<td class='image'><img src='chrome://v_identity/skin/vi-info.png' /></td>" +
84                    "<td class='identityTable'>" +
85                        "<div class='name'>" + this.elem.identityData.combinedNameHtml + "</div>" +
86                        "<table><tbody>" + this.elem.identityData.getMatrix() + "</tbody></table>" +
87                    "</td>" +
88                "</tr></table>"
89            virtualIdentityExtension.MyLog.debug("v_identity.xml added tooltip with id='" +  this.elem.identityData.id.key + "'")
90            this._tooltipBrowser.outputString = this._identityInfo;
91        }
92        virtualIdentityExtension.MyLog.debug("v_identity.xml vI_tooltipPopupset popupshowing done.")
93        ]]></body>
94    </method>
95    <method name ="popuphidden">
96            <body><![CDATA[
97        if (!this.permanent) this._identityInfo = null;
98        ]]></body>
99    </method>   
100    <method name="resize">
101        <body><![CDATA[
102        if (!this._identityInfo) return;
103        var width = document.getElementById("virtualIdentityExtension_msgIdentityClone").boxObject.width * 0.7;
104        var height = this._tooltipBrowser.contentDocument.lastChild.scrollHeight + 5;
105        this.sizeTo(width, height);
106        width = document.getElementById("virtualIdentityExtension_msgIdentityClone").boxObject.width * 0.75;
107        this.sizeTo(width, height);
108        ]]></body>
109    </method>
110    <field name="permanent" />
111    <field name="elem" />
112<!--    <field name="identityData">this.elem.identityData</field> -->
113    <field name="_identityInfo">false</field>
114<!--    <field name="_initialized">false</field> -->
115    <field name="_tooltipBrowser">document.getAnonymousElementByAttribute(this, "anonid", "tooltipBrowser")</field>
116    </implementation>
117    </binding> 
118   
119    <binding id="fromPopupItem_clone" extends="chrome://global/content/bindings/menu.xml#menuitem">
120    <content excludes="template,observes,menupopup">
121        <xul:image class="menupopup_clone-icon" xbl:inherits="src"/>
122        <xul:label class="menupopup_clone-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/>
123        <xul:label value="&vident.accPane.prettyName.prefix;" class="menupopup_clone-vid virtIdLabel" vid="false" xbl:inherits="vid" crop="right"/>
124            <xul:label class="menupopup_clone-description" xbl:inherits="value=description" crop="right"/>
125        <xul:label class="menupopup_clone-smtp" xbl:inherits="value=smtp,style=smtpStyle" crop="right"/>
126    </content>
127    <implementation>
128    <constructor>
129        <![CDATA[
130        this._identityDataStorage = this.identityData;
131       
132        this.label = this._identityDataStorage.combinedName;
133        this.value = this._identityDataStorage.id.key;
134        // virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_clone constructor id='" + this.value + "'")
135
136        this.description = this._identityDataStorage.sideDescription?this._identityDataStorage.sideDescription:"";
137        this.smtp = this._identityDataStorage.smtp.value;
138        // virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_clone constructor smtp='" + this.smtp + "'")
139        this.smtpStyle = "width:" + document.getElementById("virtualIdentityExtension_SmtpServerList").clientWidth + "px;";
140        this._identityDataStorage.smtp.value;
141       
142        document.getElementById("virtualIdentityExtension_tooltipPopupset").addTooltip(this, true);
143        ]]>
144    </constructor>
145    <method name="clean">
146            <body><![CDATA[
147        document.getElementById("virtualIdentityExtension_tooltipPopupset")
148            .removeTooltip(this.tooltipElem.getAttribute("tooltip"));
149        ]]></body>
150    </method>
151    <destructor>
152        <![CDATA[
153        this.clean();
154        ]]>
155    </destructor>
156    <property name="_identityData" onget="return this._identityDataStorage;" />
157    <field name="tooltipElem">this</field>
158    <property name="vid" onget="return this.getAttribute('vid');" onset="this.setAttribute('vid', val); return val;" />
159    <property name="label" onget="return this.getAttribute('label');" onset="this.setAttribute('label', val); return val;" />
160    <property name="value" onget="return this.getAttribute('value');" onset="this.setAttribute('value', val); return val;" />
161    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
162    <property name="smtp" onget="return this.getAttribute('smtp');" onset="this.setAttribute('smtp', val); return val;" />
163    <property name="smtpStyle" onget="return this.getAttribute('smtpStyle');" onset="this.setAttribute('smtpStyle', val); return val;" />
164    </implementation>
165    </binding>
166
167    <binding id="smtpServerList">
168    <resources>
169            <stylesheet src="chrome://global/skin/menu.css"/>
170    </resources>
171    <content sizetopopup="pref">
172        <xul:hbox id="smtpServerHbox" class="smtpServerHbox">
173            <xul:menulist class="smtpServerMenuList" anonid="smtpServerMenuList" allowevents="true" id="virtualIdentityExtension_SmtpServerList">
174                <xul:menupopup anonid="virtualIdentityExtension_SmtpServerList_popup" />
175            </xul:menulist>
176            <xul:checkbox  id="virtualIdentityExtension_SaveSmtpSwitch" class="vI_plain" allowevents="true" oncommand="event.stopPropagation();virtualIdentityExtension.vIprefs.set('storage_store_SMTP', this.checked);" >
177                <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveSMTP" attribute="checked" />
178                <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveSMTP" attribute="disabled" />
179            </xul:checkbox>
180            <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveSMTP" attribute="checked" />
181            <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveSMTP" attribute="disabled" />
182        </xul:hbox>
183    </content>
184    <implementation>
185    <method name="addNoneServer">
186        <body><![CDATA[
187        var listitem = document.createElement("menuitem");
188        listitem.setAttribute("class", "menuitem-non-iconic");
189        listitem.setAttribute("type", "non-iconic-noaccel");
190        listitem.setAttribute("label", " ");
191        listitem.setAttribute("key", virtualIdentityExtension.NO_SMTP_TAG);
192        this._smtpPopup.insertBefore(listitem, this._smtpPopup.firstChild);
193        this._smtpMenu.selectedItem = listitem;
194        ]]></body>
195    </method>
196    <method name="_addDefaultServer">
197            <body><![CDATA[
198        var listitem = document.createElement("menuitem");
199        listitem.setAttribute("class", "menuitem-non-iconic");
200        listitem.setAttribute("type", "non-iconic-noaccel");
201        listitem.setAttribute("label",
202          Components.classes["@mozilla.org/intl/stringbundle;1"]
203            .getService(Components.interfaces.nsIStringBundleService)
204            .createBundle("chrome://messenger/locale/messenger.properties")
205            .GetStringFromName("defaultServerTag"));
206        this._smtpPopup.appendChild(listitem);
207        this._smtpMenu.selectedItem = listitem;
208        ]]></body>
209    </method>
210    <method name="_addServer">
211        <parameter name="server" />
212            <body><![CDATA[
213        if (server instanceof Components.interfaces.nsISmtpServer && !server.redirectorType) {
214            var listitem = document.createElement("menuitem");
215            listitem.setAttribute("class", "menuitem-non-iconic");
216            listitem.setAttribute("type", "non-iconic-noaccel");
217            listitem.setAttribute("label", (server.description?server.description:server.hostname));
218            listitem.setAttribute("key", server.key);
219            this._smtpPopup.appendChild(listitem);
220        }
221        ]]></body>
222    </method>
223    <method name="refresh">
224        <body><![CDATA[
225            this.unload();
226            this.load();
227        ]]></body>
228    </method>
229    <method name="load">
230        <body><![CDATA[
231            this._addDefaultServer();
232            this._smtpPopup.appendChild(document.createElement("menuseparator"));
233           
234            var servers, smtpService = Components.classes["@mozilla.org/messengercompose/smtp;1"]
235                .getService(Components.interfaces.nsISmtpService);
236            // check for new https://hg.mozilla.org/comm-central/rev/fab9e5145cd4 smtpService
237            if (typeof(smtpService.servers) == "object") servers = smtpService.servers;
238            else servers = smtpService.smtpServers;
239           
240            while (servers && servers.hasMoreElements())
241                this._addServer(servers.getNext());
242        ]]></body>
243    </method>
244    <method name="unload">
245        <body><![CDATA[
246            var MenuItems = this._smtpPopup.childNodes
247            while (MenuItems.length > 0) { this._smtpPopup.removeChild(MenuItems[0]) }
248            this._smtpMenu.selectedItem = null;
249        ]]></body>
250    </method>
251    <constructor>
252        <![CDATA[
253            this.load();
254        ]]>
255    </constructor>
256    <property name="smtp" onget="return this._smtpMenu.selectedItem.getAttribute('key');" >
257        <setter><![CDATA[
258        if (val == virtualIdentityExtension.NO_SMTP_TAG) return; // dont overwrite if not set
259        virtualIdentityExtension.MyLog.debug("v_identity.xml smtp set to '" + val + "'")
260        var MenuItems = this._smtpPopup.childNodes
261        for (var index = 0; index < MenuItems.length; index++) {
262            if (MenuItems[index].localName == "menuseparator") continue;
263            if (MenuItems[index].getAttribute("key") == val) {
264                this._smtpMenu.selectedItem = MenuItems[index];
265                break;
266            }
267        }
268        ]]></setter>
269    </property>
270    <field name="_smtpPopup">document.getAnonymousElementByAttribute(this, "anonid", "virtualIdentityExtension_SmtpServerList_popup")</field>
271    <field name="_smtpMenu">document.getAnonymousElementByAttribute(this, "anonid", "smtpServerMenuList")</field>
272    <field name="_smtpService"></field>
273
274    </implementation>
275    </binding>
276   
277   
278   
279   
280    <binding id="fromMenuList_clone" display="xul:menu" extends="chrome://global/content/bindings/menulist.xml#menulist-description">
281    <resources>
282            <stylesheet src="chrome://global/skin/menu.css"/>
283        <stylesheet src="chrome://global/skin/autocomplete.css"/>
284    </resources>
285    <content sizetopopup="pref">
286        <xul:hbox class="contentHBox" anonid="contentHBox" flex="1"  >
287            <xul:hbox id="identityHbox" class="identityHbox" flex="1">
288                <xul:vbox><xul:spacer flex="1" />
289                    <xul:image class="menulist_clone-icon" id="virtualIdentityExtension_msgIdentityClone_image" xbl:inherits="src"/>
290                <xul:spacer flex="1" /></xul:vbox>
291                <xul:vbox flex="1" id="virtualIdentityExtension_msgIdentityClone_fromVbox"><xul:spacer flex="1" />
292<!--                    textbox is internally an html:input field which inherits the onblur event.
293                    Thats why we have to search the textbox before calling blurEvent() -->
294                    <xul:textbox anonid="textBox" type="search" id="virtualIdentityExtension_msgIdentityClonetextBoxElem" class="plain menulist_clone-textbox" allowevents="true" xbl:inherits="value=label,crop,accesskey,nomatch=vid" oncommand="event.stopPropagation(); document.getBindingParent(this).inputEvent();"
295                    onblur="event.stopPropagation(); var elem = this; while (elem.localName != 'textbox') elem = elem.parentNode; document.getBindingParent(elem).blurEvent();"
296                    crop="right" highlightnonmatches="true"/>
297                <xul:spacer flex="1" /></xul:vbox>
298                <xul:vbox id="virtualIdentityExtension_saveSwitch"><xul:spacer flex="1" />
299                    <xul:checkbox class="vI_plain" allowevents="true" oncommand="event.stopPropagation();virtualIdentityExtension.vIprefs.set('storage_store', this.checked);" >
300                        <xul:observes element="virtualIdentityExtension_statusMenu_storage_save" attribute="checked" />
301                    </xul:checkbox>
302                <xul:spacer flex="1" /></xul:vbox>
303                <xul:vbox><xul:spacer flex="1" />
304                    <xul:label value="&vident.accPane.prettyName.prefix;" class="menu_clone-vid virtIdLabel" xbl:inherits="vid" crop="right"/>
305                <xul:spacer flex="1" /></xul:vbox>
306                <xul:observes element="virtualIdentityExtension_statusMenu_storage_save" attribute="checked" />
307            </xul:hbox>
308            <xul:hbox id="baseIDHbox" class="baseIDHbox" >
309                <xul:vbox><xul:spacer flex="1" />
310                    <xul:hbox>
311                        <xul:label id="msgIdentity_base_id_label" class="menu_clone-description" xbl:inherits="value,hidden=base_id_key_hidden" crop="right" hidden="true"/>
312                        <xul:label id="virtualIdentityExtension_msgIdentityClone_label" class="menu_clone-description" xbl:inherits="value=description" crop="right"/>
313                    </xul:hbox>
314                <xul:spacer flex="1" /></xul:vbox>
315                <xul:vbox id="virtualIdentityExtension_saveBaseIDSwitch"><xul:spacer flex="1" />
316                    <xul:checkbox class="vI_plain" allowevents="true" oncommand="event.stopPropagation();virtualIdentityExtension.vIprefs.set('storage_store_base_id', this.checked);" >
317                        <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="checked" />
318                        <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="disabled" />
319                    </xul:checkbox>
320                <xul:spacer flex="1" /></xul:vbox>
321                <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="checked" />
322                <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="disabled" />
323            </xul:hbox>
324            <xul:hbox oncommand="event.stopPropagation();document.getBindingParent(this).smtp = this.smtp" xbl:inherits="showSmtp" anonid="smtpServerListHbox" class="smtpServerListHbox" />
325        </xul:hbox>
326        <children />
327    </content>
328        <implementation>
329    <constructor>
330        <![CDATA[       
331        var inputTextbox = document.getAnonymousElementByAttribute(this, "class", "plain menulist_clone-textbox");
332       
333        // check if 'search' textboxes are not implemented change to 'timed'
334        if (!inputTextbox.timeout) inputTextbox.setAttribute("type", "timed");
335        inputTextbox.setAttribute("timeout", "300")
336       
337        // too early to access virtualIdentityExtension_tooltipPopupset, this might break the interface
338        // it will be done in v_identity.js init
339        // document.getElementById("virtualIdentityExtension_tooltipPopupset").addTooltip(this, false);
340       
341        virtualIdentityExtension.vIprefs.addObserver("show_smtp", this.observe, this);
342        this.observe(this);
343        ]]>
344    </constructor>
345    <destructor>
346        <![CDATA[
347        var tooltipPopupset = document.getElementById("virtualIdentityExtension_tooltipPopupset")
348        if (tooltipPopupset) tooltipPopupset.removeTooltip(this.tooltipElem.getAttribute("tooltip"));
349        virtualIdentityExtension.vIprefs.removeObserver("show_smtp", this.observe);
350        ]]>
351    </destructor>
352
353    <!--
354    double the Identity-Select Dropdown-Menu to be more flexible with modifying it
355    the original Identity Dropdown Menu is hidden and stores the base Identity, on which one
356    the Virtual Identity is build upon
357    -->
358    <method name="command">
359        <body><![CDATA[
360        virtualIdentityExtension.MyLog.debug("v_identity.xml msgIdentityCloneElem.doCommand()")
361        // copy selected Menu-Value from clone to orig.
362        virtualIdentityExtension.MyLog.debug("v_identity.xml copy selected Menu-Value from clone to orig. Searching for id=" + this.selectedMenuItem.identityData.id.key)
363        if ( this.selectedMenuItem.identityData.id.key != null ) {
364            var MenuItems = this._msgIdentityPopupElem.childNodes
365            for (var index = 0; index < MenuItems.length; index++) {
366                if ( MenuItems[index].getAttribute("value") == this.selectedMenuItem.identityData.id.key ) {
367                    this._msgIdentityElem.selectedItem = MenuItems[index];
368                    this._msgIdentityElem.value = MenuItems[index].getAttribute("value");
369                    break;
370                }
371            }
372            this._msgIdentityPopupElem.doCommand();
373        }
374        this.identityData = this.selectedMenuItem.identityData.getDuplicate();
375        virtualIdentityExtension.MyLog.debug("v_identity.xml msgIdentityCloneElem.doCommand() this.value=" + this.value);
376        // if current SMTP is empty, take the one from current Identity
377        if (this.identityData.smtp.hasNoDefinedSMTP()) {
378            this.identityData.smtp.key = this._AccountManager.getIdentity(this.value).smtpServerKey;
379            document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this.identityData.smtp.keyNice;
380            this.checkForVirtualIdentity();
381        }
382    ]]></body>
383    </method>   
384    <method name="init">
385        <body><![CDATA[
386        var MenuItems = this._msgIdentityPopupElem.childNodes
387        for (var index = 0; index < MenuItems.length; index++) {
388            var identity = this._AccountManager.getIdentity(MenuItems[index].getAttribute("value"));
389            var description;
390            if (typeof(this._AccountManager.getServersForIdentity) == 'function') { // new style
391                var server = this._AccountManager.getServersForIdentity(identity).queryElementAt(0, Components.interfaces.nsIMsgIncomingServer);
392            } else {
393                var server = this._AccountManager.GetServersForIdentity(identity).QueryElementAt(0, Components.interfaces.nsIMsgIncomingServer);
394            }
395            // if (server.type == "nntp")
396                description = server.prettyName
397            // else description = identity.description?"- "+identity.description:identity.accountname
398           
399            var newIdentity = new virtualIdentityExtension.identityData(identity.email, identity.fullName, identity.key,
400                        identity.smtpServerKey, null, description, true)
401            newIdentity.extras.readIdentityValues(identity);
402               
403            var menuItem = this.addIdentityToCloneMenu(newIdentity)
404
405            if (this._msgIdentity_selectedItem == MenuItems[index]) {
406                this.selectedItem = menuItem;
407                this.identityData = newIdentity.getDuplicate();
408            }
409        }
410        this._popupMenu_separator = true;
411        ]]></body>
412    </method>
413    <method name="clean">
414        <body><![CDATA[
415        var MenuItems = this._popupElem.childNodes;
416        while (MenuItems.length > 0) {
417            try {MenuItems[0].clean();} catch (e) { };
418            this._popupElem.removeChild(MenuItems[0])
419        }
420        this.selectedItem = null;
421        this.identityData = null;
422       
423        this._menu_separator = null;
424        ]]></body>
425    </method>   
426    <method name="addIdentityToCloneMenu">
427        <parameter name="localIdentityData" />
428        <body><![CDATA[
429        var existingItem = this._isExistingCloneMenuItem(localIdentityData);
430        if (!existingItem) {
431            var MenuItem = document.createElement("menuitem");
432                MenuItem.identityData = localIdentityData;
433            MenuItem.setAttribute("class", "identity_clone-popup-item");
434            MenuItem.setAttribute("type", "vIdentity"); // to prevent overriding with menuitem:not([type])
435            MenuItem.value = localIdentityData.id.key; // might be accessed before item is constructed
436
437            // set vid explicitely
438            if (this._popupMenu_separator) MenuItem.setAttribute("vid", "true");
439            else    MenuItem.setAttribute("vid", "false");
440                       
441            this._popupElem.appendChild(MenuItem);
442            return MenuItem;
443        }
444        else return existingItem;
445        ]]></body>
446    </method>
447    <method name="addIdentitiesToCloneMenu">
448        <parameter name="identityCollection" />
449        <body><![CDATA[
450        for (var index = 0; index < identityCollection.number; index++)
451            identityCollection.menuItems[index] =
452                this.addIdentityToCloneMenu(identityCollection.identityDataCollection[index])
453        ]]></body>
454    </method>
455    <method name="_getMenuItemForIdentity">
456        <parameter name="identitykey" />
457        <body><![CDATA[
458        var MenuItems = this._popupElem.childNodes;
459        for (var index = 0; index < MenuItems.length; index++) {
460            if (MenuItems[index].value == identitykey)
461                return MenuItems[index]
462        }
463        return null;
464        ]]></body>
465    </method>
466    <property name="_popupMenu_separator" >
467        <getter><![CDATA[
468            if (this._menu_separator) {
469              this._menu_separator.removeAttribute("hidden");
470              return this._menu_separator;
471            }
472            else return null;
473        ]]></getter>
474        <setter><![CDATA[
475            if (!val) return;
476            // add hidden separator as indicator that now only virtual identities are added
477            this._menu_separator = document.createElement("menuseparator");
478            this._menu_separator.setAttribute("hidden", "true");
479            this._popupElem.appendChild(this._menu_separator)
480        ]]></setter>   
481    </property>
482    <property name="selectedMenuItem" >
483        <getter><![CDATA[
484            return this.selectedItem;
485        ]]></getter>
486        <setter><![CDATA[
487            if (typeof(val) == "object") this.selectedItem = val
488            else if (val == "default")
489                this.selectedItem = this._getMenuItemForIdentity(this._AccountManager.defaultAccount.defaultIdentity.key)
490            else this.selectedItem = this._getMenuItemForIdentity(val)
491            this.doCommand();
492        ]]></setter>   
493    </property>
494    <method name="_isExistingCloneMenuItem">
495        <parameter name="localIdentityData" />
496        <body><![CDATA[
497        var MenuItems = this._popupElem.childNodes
498        for (var j = 0; j < MenuItems.length; j++) {
499            if (MenuItems[j].localName == "menuseparator") continue;
500            if (MenuItems[j].identityData.equals(localIdentityData)) return MenuItems[j];
501        }
502        return null;
503        ]]></body>
504    </method>
505    <field name="_msgIdentityElem">document.getElementById("msgIdentity")</field>
506    <field name="_msgIdentityPopupElem">document.getElementById("msgIdentityPopup")</field>
507    <property name="_msgIdentity_selectedItem" >
508        <getter><![CDATA[
509            if (!this._msgIdentityElem.selectedItem) {
510                virtualIdentityExtension.MyLog.debug("v_identity.xml: msgIdentityElem.selectedItem not set, using first Menuitem");
511                this._msgIdentityElem.selectedItem = this._msgIdentityPopupElem.firstChild
512                virtualIdentityExtension.MyLog.debug("v_identity.xml: msgIdentityElem.doCommand()");
513                this._msgIdentityElem.doCommand();
514            }
515            return this._msgIdentityElem.selectedItem;
516        ]]></getter>
517    </property>
518    <property name="_AccountManager" >
519        <getter><![CDATA[
520            return Components.classes["@mozilla.org/messenger/account-manager;1"]
521              .getService(Components.interfaces.nsIMsgAccountManager);
522        ]]></getter>
523    </property>
524    <method name="blurEvent">
525            <body><![CDATA[
526        virtualIdentityExtension.MyLog.debug("v_identity.xml blurEvent")
527        this.inputEvent(); // timeout might prevent inputEvent to fire before blurEvent
528       
529        this.label = this.identityData.combinedName; // add "<" and ">" to email if required
530        this.setAttribute("label", this.label);
531        ]]></body>
532    </method>
533    <method name="inputEvent">
534            <body><![CDATA[     
535        virtualIdentityExtension.MyLog.debug("v_identity.xml inputEvent")
536       
537        this.identityData.combinedName = this.label;
538       
539        var existingIdentity = this.checkForVirtualIdentity();
540        if (existingIdentity && this.selectedMenuItem.value != existingIdentity) this.selectedMenuItem = existingIdentity;
541        ]]></body>
542    </method>
543    <method name="checkForVirtualIdentity">
544        <body><![CDATA[
545        virtualIdentityExtension.MyLog.debug("v_identity.xml checkForVirtualIdentity: " + this.identityData.id.key + " '" + this.identityData.id.value + "'")
546        var existingIdentity = this.identityData.isExistingIdentity(false);
547       
548        this.vid = (!existingIdentity);
549       
550        virtualIdentityExtension.signatureSwitch(existingIdentity);
551       
552        return existingIdentity;
553        ]]></body>
554    </method>
555    <property name="smtp" onget="return this.identityData.smtp.key;" > // used to detect changes from SMTP-Menu
556        <setter><![CDATA[
557        this.identityData.smtp.key = val;
558       
559        document.getElementById("virtualIdentityExtension_tooltipPopupset").addTooltip(this);
560
561        var existingIdentity = this.checkForVirtualIdentity();
562        if (existingIdentity) this.selectedMenuItem = existingIdentity;
563        ]]></setter>
564    </property>
565    <property name="identityData">
566        <getter><![CDATA[
567        this._identityDataStorage.extras.getValuesFromEnvironment(); // update with current data
568        return this._identityDataStorage;
569        ]]></getter>
570        <setter><![CDATA[
571        virtualIdentityExtension.MyLog.debug("v_identity.xml identityData setter")
572        if (!val) this._identityDataStorage = null
573        else {
574            var oldIdentityData = this._identityDataStorage;
575            this._identityDataStorage = val;
576            if (oldIdentityData) { // indicates that it's not first time after clean
577                virtualIdentityExtension.MyLog.debug("v_identity.xml previousID: fullName='" + oldIdentityData.fullName + "' email='" + oldIdentityData.email + "' smtp='" + oldIdentityData.smtp.key + "' id='" + oldIdentityData.id.key + "' existingID='" + oldIdentityData.existingID + "'");
578                virtualIdentityExtension.MyLog.debug("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 + "'");
579                if (!this._identityDataStorage.existingID && !this._identityDataStorage.combinedName)
580                    this._identityDataStorage.fullName = oldIdentityData.fullName;
581                if (!this._identityDataStorage.existingID && !this._identityDataStorage.email)
582                    this._identityDataStorage.email = oldIdentityData.email;
583                if (!this._identityDataStorage.smtp.key) this._identityDataStorage.smtp.key = oldIdentityData.smtp.key;
584                if (!this._identityDataStorage.id.key) {
585                    this._identityDataStorage.id.key = oldIdentityData.id.key;
586                    this._identityDataStorage.sideDescription = oldIdentityData.sideDescription;
587                }
588                this._identityDataStorage.extras.setValuesToEnvironment();
589                if (this._identityDataStorage.existingID) this.vid = false;
590                else this.checkForVirtualIdentity();
591            }
592            else    this.vid = false;       // first time after clean it's always a real identity
593           
594            this.label = this._identityDataStorage.combinedName;
595            this.value = this._identityDataStorage.id.key;
596            this.description = this._identityDataStorage.sideDescription;
597            document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this._identityDataStorage.smtp.keyNice;
598            virtualIdentityExtension.MyLog.debug("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 + "'");
599        }
600        virtualIdentityExtension.MyLog.debug("v_identity.xml identityData setter done.")
601        ]]></setter>
602    </property>
603    <field name="_popupElem">document.getElementById("virtualIdentityExtension_msgIdentityPopupClone")</field>
604    <field name="tooltipElem">document.getAnonymousElementByAttribute(this, "anonid", "contentHBox")</field>
605    <field name="textBoxElem">document.getAnonymousElementByAttribute(this, "anonid", "textBox");</field>
606    <method name="observe">
607      <parameter name="self" />
608      <parameter name="aSubject" />
609      <parameter name="aTopic" />
610      <parameter name="aPrefName" />
611      <body><![CDATA[
612        self.showSmtp =
613          virtualIdentityExtension.vIprefs.get("show_smtp");
614        var MenuItems = self._popupElem.childNodes;
615        for (var j = 0; j < MenuItems.length; j++) {
616            if (MenuItems[j].localName == "menuseparator") continue;
617            MenuItems[j].smtpStyle = "width:" + document.getElementById("virtualIdentityExtension_SmtpServerList").clientWidth + "px;";
618        }
619        ]]></body>
620    </method>
621    <property name="email" onset="this.identityData.email = val; this.label = this.identityData.combinedName; this.inputEvent()" />
622    <property name="vid" onget="return (this.getAttribute('vid') == 'true');" onset="this.setAttribute('vid',val?'true':'false'); return val;" />
623    <property name="label" onget="return this.textBoxElem.value;" onset="this.textBoxElem.value = val; return val;" />
624    <property name="value" onget="return this.getAttribute('value');" onset="this.setAttribute('value', val); return val;" />
625    <property name="extras" onget="return this.identityData.extras;" />
626    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
627    <property name="showSmtp" onget="return (this.getAttribute('showSmtp') == 'true');" onset="this.setAttribute('showSmtp',val?'true':'false'); return val;" />
628    </implementation>
629    </binding>
630</bindings>
Note: See TracBrowser for help on using the repository browser.