source: content/bindings/v_identity.xml @ fe0698

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

cleaned debugging from newline - thats standard

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