Ignore:
Timestamp:
Aug 25, 2018, 12:05:39 PM (15 months ago)
Author:
rene <rene@…>
Branches:
ng_0.9
Children:
bc6c6b
Parents:
acf7ad
Message:

rewrite of the interface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • content/bindings/v_identity.xml

    racf7ad rd0fa65  
    101101        <body><![CDATA[
    102102        if (!this._identityInfo) return;
    103         var width = document.getElementById("virtualIdentityExtension_msgIdentityClone").boxObject.width * 0.7;
     103        var width = document.getElementById("msgIdentity").boxObject.width * 0.7;
    104104        var height = this._tooltipBrowser.contentDocument.lastChild.scrollHeight + 5;
    105105        this.sizeTo(width, height);
    106         width = document.getElementById("virtualIdentityExtension_msgIdentityClone").boxObject.width * 0.75;
     106        width = document.getElementById("msgIdentity").boxObject.width * 0.75;
    107107        this.sizeTo(width, height);
    108108        ]]></body>
     
    276276   
    277277   
    278    
    279    
    280     <binding id="fromMenuList_clone" display="xul:menu" extends="chrome://messenger/content/mailWidgets.xml#menulist-description">
     278    <binding id="fromMenuList_new" extends="chrome://global/content/bindings/menulist.xml#menulist-editable">
    281279    <resources>
    282280            <stylesheet src="chrome://global/skin/menu.css"/>
     
    284282    </resources>
    285283    <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 />
     284              <xul:moz-input-box id="identityHbox" anonid="inputBox" class="menulist-editable-box moz-input-box" xbl:inherits="context,disabled,readonly,focused" flex="1">
     285                <xul:vbox flex="1">
     286                  <!-- use type=search to activate trigger for inputevent -->
     287                <xul:textbox class="plain menulist-editable-input" anonid="input" type="search" allowevents="true"
     288                            oncommand="event.stopPropagation(); document.getBindingParent(this).inputEvent();"
     289                            onblur="event.stopPropagation(); var elem = this; while (elem.localName != 'textbox') elem = elem.parentNode; document.getBindingParent(elem).blurEvent();"
     290                            xbl:inherits="nomatch=vid,value=label,value,disabled,tabindex,readonly,placeholder"
     291                            crop="right" highlightnonmatches="true"/>
     292                </xul:vbox>
     293                <xul:vbox><xul:spacer flex="1" />
     294                        <xul:label value="&vident.accPane.prettyName.prefix; - " class="menu_clone-vid virtIdLabel" xbl:inherits="vid" crop="right"/>
     295                <xul:spacer flex="1" /></xul:vbox>
     296                <xul:observes element="virtualIdentityExtension_statusMenu_storage_save" attribute="checked" />
     297                <xul:hbox id="baseIDHbox" class="baseIDHbox" >
     298                        <xul:vbox><xul:spacer flex="1" />
     299                                <xul:hbox>
     300                                  <!--<xul:label id="msgIdentity_base_id_label" class="menu_clone-description" xbl:inherits="hidden=base_id_key_hidden" crop="right" hidden="true"/>-->
     301                                        <xul:label id="virtualIdentityExtension_msgIdentityClone_label" class="menu_clone-description" xbl:inherits="value=description" crop="right"/>
     302                                </xul:hbox>
     303                        <xul:spacer flex="1" /></xul:vbox>
     304                        <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="checked" />
     305                        <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="disabled" />
     306                </xul:hbox>
     307              </xul:moz-input-box>
     308              <!--<xul:hbox oncommand="event.stopPropagation();document.getBindingParent(this).smtp = this.smtp" xbl:inherits="showSmtp" anonid="smtpServerListHbox" class="smtpServerListHbox" />-->
     309              <xul:dropmarker class="menulist-dropmarker" type="menu" xbl:inherits="open,disabled,parentfocused=focused"/>
     310              <xul:popupset id="virtualIdentityExtension_tooltipPopupset" />
     311              <children includes="menupopup"/>
    327312    </content>
    328313        <implementation>
     314         
    329315    <constructor>
    330316        <![CDATA[       
    331         var inputTextbox = document.getAnonymousElementByAttribute(this, "class", "plain menulist_clone-textbox");
     317        var inputTextbox = document.getAnonymousElementByAttribute(this, "class", "plain menulist-editable-input");
    332318       
    333319        // check if 'search' textboxes are not implemented change to 'timed'
     
    340326       
    341327        virtualIdentityExtension.vIprefs.addObserver("show_smtp", this.observe, this);
    342         this.observe(this);
     328                this.observe(this);
    343329        ]]>
    344330    </constructor>
     
    349335        virtualIdentityExtension.vIprefs.removeObserver("show_smtp", this.observe);
    350336        ]]>
    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 (typeof getCurrentIdentityKey == 'function') {
    364       // TB version after changeset 17696 35d9101cb3b1 (menuitem.value == email address)
    365           var id_attribute = "identitykey"
    366     } else {
    367           // TB version before changeset 17696 35d9101cb3b1 (menuitem.value == id)
    368           var id_attribute = "value"
    369     }
    370 
    371         if ( this.selectedMenuItem.identityData.id.key != null ) {
    372             var MenuItems = this._msgIdentityPopupElem.childNodes
    373             for (var index = 0; index < MenuItems.length; index++) {
    374                 if ( MenuItems[index].getAttribute(id_attribute) == this.selectedMenuItem.identityData.id.key ) {
    375                     this._msgIdentityElem.selectedItem = MenuItems[index];
    376                     this._msgIdentityElem.value = MenuItems[index].getAttribute("value");
    377           this._msgIdentityElem.identitykey = MenuItems[index].getAttribute("identitykey");
    378           this._msgIdentityPopupElem.doCommand();
    379                     break;
    380                 }
    381             }
    382         }
    383         this.identityData = this.selectedMenuItem.identityData.getDuplicate();
    384         virtualIdentityExtension.MyLog.debug("v_identity.xml msgIdentityCloneElem.doCommand() this.value=" + this.value);
    385         // if current SMTP is empty, take the one from current Identity
    386         if (this.identityData.smtp.hasNoDefinedSMTP()) {
    387             if (typeof getCurrentIdentityKey == 'function') {
    388               // TB version after changeset 17696 35d9101cb3b1 (menuitem.value == email address)
    389         if (!this.identitykey)
    390           this.identitykey = this.identityData.id.key
    391         if (this.identitykey) {
    392           virtualIdentityExtension.MyLog.debug("v_identity.xml msgIdentityCloneElem.doCommand() " + this.identitykey)
    393           this.identityData.smtp.key = this._AccountManager.getIdentity(this.identitykey).smtpServerKey;
    394           document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this.identityData.smtp.keyNice;
    395         }
    396             } else {
    397               // TB version before changeset 17696 35d9101cb3b1 (menuitem.value == id)
    398                 this.identityData.smtp.key = this._AccountManager.getIdentity(this.value).smtpServerKey;
    399                 document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this.identityData.smtp.keyNice;
    400             }
    401         }
    402     this.checkForVirtualIdentity();
    403     ]]></body>
    404     </method>   
    405     <method name="init">
    406     <body><![CDATA[
    407     virtualIdentityExtension.MyLog.debug("v_identity.xml msgIdentityCloneElem.init()")
    408         var MenuItems = this._msgIdentityPopupElem.childNodes
    409         for (var index = 0; index < MenuItems.length; index++) {
    410                         // TB version after changeset 17696 35d9101cb3b1 (menuitem.value == email address)
    411                         var identity = this._AccountManager.getIdentity(MenuItems[index].getAttribute("identitykey"));
    412                         if (!identity) continue;
    413 
    414             var description;
    415                        
    416                         virtualIdentityExtension.MyLog.debug("getServersForIdentity" + identity);
    417                        
    418                         var server = this._AccountManager.getServersForIdentity(identity).queryElementAt(0, Components.interfaces.nsIMsgIncomingServer);
    419 
    420                         // if (server.type == "nntp")
    421                 description = server.prettyName
    422             // else description = identity.description?"- "+identity.description:identity.accountname
    423            
    424       var newIdentity = new virtualIdentityExtension.identityData(window, identity.email, identity.fullName, identity.key,
    425                         identity.smtpServerKey, null, description, true)
    426             newIdentity.extras.readIdentityValues(identity);
    427                
    428             var menuItem = this.addIdentityToCloneMenu(newIdentity)
    429 
    430             if (this._msgIdentity_selectedItem == MenuItems[index]) {
    431                 this.selectedItem = menuItem;
    432                 this.identityData = newIdentity.getDuplicate();
    433         this._msgIdentityElem.identitykey = MenuItems[index].getAttribute("identitykey");
    434             }
    435         }
    436         this._popupMenu_separator = true;
    437     virtualIdentityExtension.MyLog.debug("v_identity.xml msgIdentityCloneElem.init() done.")
    438         ]]></body>
    439     </method>
    440     <method name="clean">
    441         <body><![CDATA[
    442         var MenuItems = this._popupElem.childNodes;
    443         while (MenuItems.length > 0) {
    444             try {MenuItems[0].clean();} catch (e) { };
    445             this._popupElem.removeChild(MenuItems[0])
    446         }
    447         this.selectedItem = null;
    448         this.identityData = null;
    449        
    450         this._menu_separator = null;
    451         ]]></body>
    452     </method>   
     337          </destructor>
     338
    453339    <method name="addIdentityToCloneMenu">
    454340        <parameter name="localIdentityData" />
    455341        <body><![CDATA[
    456         var existingItem = this._isExistingCloneMenuItem(localIdentityData);
     342//      var existingItem = this._isExistingCloneMenuItem(localIdentityData);
     343                var existingItem = localIdentityData.isExistingIdentity();
    457344        if (!existingItem) {
    458345            var MenuItem = document.createElement("menuitem");
    459                 MenuItem.identityData = localIdentityData;
    460             MenuItem.setAttribute("class", "identity_clone-popup-item");
    461             MenuItem.setAttribute("type", "vIdentity"); // to prevent overriding with menuitem:not([type])
    462             if (typeof getCurrentIdentityKey == 'function') {
    463               // TB version after changeset 17696 35d9101cb3b1 (menuitem.value == email address)
    464                 MenuItem.identitykey = localIdentityData.id.key; // might be accessed before item is constructed
    465             } else {
    466               // TB version before changeset 17696 35d9101cb3b1 (menuitem.value == id)
    467                 MenuItem.value = localIdentityData.id.key; // might be accessed before item is constructed
    468             }
    469 
    470             // set vid explicitely
    471             if (this._popupMenu_separator) MenuItem.setAttribute("vid", "true");
    472             else    MenuItem.setAttribute("vid", "false");
    473                        
    474346            this._popupElem.appendChild(MenuItem);
    475             return MenuItem;
     347            MenuItem.identityData = localIdentityData;
     348                        return MenuItem;
    476349        }
    477350        else return existingItem;
     
    489362        <parameter name="identitykey" />
    490363        <body><![CDATA[
     364                virtualIdentityExtension.MyLog.debug("v_identity.xml _getMenuItemForIdentity " + identitykey)
    491365        var MenuItems = this._popupElem.childNodes;
    492366        for (var index = 0; index < MenuItems.length; index++) {
    493             if (typeof getCurrentIdentityKey == 'function') {
    494               // TB version after changeset 17696 35d9101cb3b1 (menuitem.value == email address)
    495                 if (MenuItems[index].identitykey == identitykey)
    496                     return MenuItems[index]
    497             } else {
    498               // TB version before changeset 17696 35d9101cb3b1 (menuitem.value == id)
    499                 if (MenuItems[index].value == identitykey)
    500                     return MenuItems[index]
    501             }
     367                  if (MenuItems[index].getAttribute("identitykey") == identitykey)
     368                          return MenuItems[index]
    502369        }
    503370        return null;
    504371        ]]></body>
    505372    </method>
    506     <property name="_popupMenu_separator" >
    507         <getter><![CDATA[
    508             if (this._menu_separator) {
    509               this._menu_separator.removeAttribute("hidden");
    510               return this._menu_separator;
    511             }
    512             else return null;
    513         ]]></getter>
    514         <setter><![CDATA[
    515             if (!val) return;
    516             // add hidden separator as indicator that now only virtual identities are added
    517             this._menu_separator = document.createElement("menuseparator");
    518             this._menu_separator.setAttribute("hidden", "true");
    519             this._popupElem.appendChild(this._menu_separator)
    520         ]]></setter>   
    521     </property>
    522373    <property name="selectedMenuItem" >
    523374        <getter><![CDATA[
     
    525376        ]]></getter>
    526377        <setter><![CDATA[
     378                        virtualIdentityExtension.MyLog.debug("v_identity.xml selectedMenuItem setter. " + val)
     379                       
    527380            if (typeof(val) == "object") this.selectedItem = val
    528381            else if (val == "default")
    529382                this.selectedItem = this._getMenuItemForIdentity(this._AccountManager.defaultAccount.defaultIdentity.key)
    530383            else this.selectedItem = this._getMenuItemForIdentity(val)
    531             this.doCommand();
     384
     385                        this._identityDataStorage.takeOverAvailableData(this.selectedItem.identityData);
     386                       
     387                        LoadIdentity();
    532388        ]]></setter>   
    533389    </property>
     
    537393        var MenuItems = this._popupElem.childNodes
    538394        for (var j = 0; j < MenuItems.length; j++) {
    539             if (MenuItems[j].localName == "menuseparator") continue;
     395            if (!MenuItems[j].identityKey) continue;
    540396            if (MenuItems[j].identityData.equals(localIdentityData)) return MenuItems[j];
    541397        }
     
    543399        ]]></body>
    544400    </method>
    545     <field name="_msgIdentityElem">document.getElementById("msgIdentity")</field>
    546401    <field name="_msgIdentityPopupElem">document.getElementById("msgIdentityPopup")</field>
    547     <property name="_msgIdentity_selectedItem" >
    548         <getter><![CDATA[
    549             if (!this._msgIdentityElem.selectedItem) {
    550                 virtualIdentityExtension.MyLog.debug("v_identity.xml: msgIdentityElem.selectedItem not set, using first Menuitem");
    551                 this._msgIdentityElem.selectedItem = this._msgIdentityPopupElem.firstChild
    552                 virtualIdentityExtension.MyLog.debug("v_identity.xml: msgIdentityElem.doCommand()");
    553                 this._msgIdentityElem.doCommand();
    554             }
    555             return this._msgIdentityElem.selectedItem;
    556         ]]></getter>
    557     </property>
    558402    <property name="_AccountManager" >
    559403        <getter><![CDATA[
     
    578422       
    579423        var existingIdentity = this.checkForVirtualIdentity();
    580     if (typeof getCurrentIdentityKey == 'function') {
    581       // TB version after changeset 17696 35d9101cb3b1 (menuitem.value == email address)
    582       if (existingIdentity && this.selectedMenuItem.identitykey != existingIdentity) this.selectedMenuItem = existingIdentity;          } else {
    583       // TB version before changeset 17696 35d9101cb3b1 (menuitem.value == id)
    584       if (existingIdentity && this.selectedMenuItem.value != existingIdentity) this.selectedMenuItem = existingIdentity;
    585     }
    586 
     424                if (existingIdentity && this.selectedMenuItem.identitykey != existingIdentity)
     425                    this.selectedMenuItem = existingIdentity;           
    587426        ]]></body>
    588427    </method>
     
    599438        ]]></body>
    600439    </method>
    601     <property name="smtp" onget="return this.identityData.smtp.key;" > // used to detect changes from SMTP-Menu
     440        <property name="smtp" onget="return this.identityData.smtp.key;" > // used to detect changes from SMTP-Menu
    602441        <setter><![CDATA[
    603442        this.identityData.smtp.key = val;
     
    608447        if (existingIdentity) this.selectedMenuItem = existingIdentity;
    609448        ]]></setter>
    610     </property>
     449        </property>
    611450    <property name="identityData">
    612451        <getter><![CDATA[
    613     virtualIdentityExtension.MyLog.debug("v_identity.xml identityData getter")
    614     if (this._identityDataStorage) {
    615       this._identityDataStorage.extras.getValuesFromEnvironment(); // update with current data
    616     }
    617     else {
    618       virtualIdentityExtension.MyLog.debug("v_identity.xml identityData getter - _identityDataStorage not set")
    619     }
    620     return this._identityDataStorage;
     452                  virtualIdentityExtension.MyLog.debug("v_identity.xml identityData getter")
     453                  if (this._identityDataStorage) {
     454                    this._identityDataStorage.extras.getValuesFromEnvironment(); // update with current data
     455                  }
     456                  else {
     457                    virtualIdentityExtension.MyLog.debug("v_identity.xml identityData getter - _identityDataStorage not set")
     458                  }
     459                  return this._identityDataStorage;
    621460        ]]></getter>
    622461        <setter><![CDATA[
    623462        virtualIdentityExtension.MyLog.debug("v_identity.xml identityData setter")
    624         if (!val) this._identityDataStorage = null
    625         else {
    626             var oldIdentityData = this._identityDataStorage;
     463        if (val) {
    627464            this._identityDataStorage = val;
    628             if (oldIdentityData) { // indicates that it's not first time after clean
    629                 virtualIdentityExtension.MyLog.debug("v_identity.xml previousID: fullName='" + oldIdentityData.fullName + "' email='" + oldIdentityData.email + "' smtp='" + oldIdentityData.smtp.key + "' id='" + oldIdentityData.id.key + "' existingID='" + oldIdentityData.existingID + "'");
    630                 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 + "'");
    631                 if (!this._identityDataStorage.existingID && !this._identityDataStorage.combinedName)
    632                     this._identityDataStorage.fullName = oldIdentityData.fullName;
    633                 if (!this._identityDataStorage.existingID && !this._identityDataStorage.email)
    634                     this._identityDataStorage.email = oldIdentityData.email;
    635                 if (!this._identityDataStorage.smtp.key) this._identityDataStorage.smtp.key = oldIdentityData.smtp.key;
    636                 if (!this._identityDataStorage.id.key) {
    637                     this._identityDataStorage.id.key = oldIdentityData.id.key;
    638                     this._identityDataStorage.sideDescription = oldIdentityData.sideDescription;
    639                 }
    640                 this._identityDataStorage.extras.setValuesToEnvironment();
    641                 if (this._identityDataStorage.existingID) this.vid = false;
    642                 else this.checkForVirtualIdentity();
    643             }
    644             else    this.vid = false;       // first time after clean it's always a real identity
    645            
    646             this.label = this._identityDataStorage.combinedName;
    647             this.value = this._identityDataStorage.id.key;
    648             this.description = this._identityDataStorage.sideDescription;
    649             document.getAnonymousElementByAttribute(this, "anonid", "smtpServerListHbox").smtp = this._identityDataStorage.smtp.keyNice;
    650             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 + "'");
    651465        }
    652466        virtualIdentityExtension.MyLog.debug("v_identity.xml identityData setter done.")
    653467        ]]></setter>
    654468    </property>
    655     <field name="_popupElem">document.getElementById("virtualIdentityExtension_msgIdentityPopupClone")</field>
    656     <field name="tooltipElem">document.getAnonymousElementByAttribute(this, "anonid", "contentHBox")</field>
    657     <field name="textBoxElem">document.getAnonymousElementByAttribute(this, "anonid", "textBox");</field>
    658     <method name="observe">
    659       <parameter name="self" />
    660       <parameter name="aSubject" />
    661       <parameter name="aTopic" />
    662       <parameter name="aPrefName" />
    663       <body><![CDATA[
    664         self.showSmtp =
    665           virtualIdentityExtension.vIprefs.get("show_smtp");
    666         var MenuItems = self._popupElem.childNodes;
    667         for (var j = 0; j < MenuItems.length; j++) {
    668             if (MenuItems[j].localName == "menuseparator") continue;
    669             MenuItems[j].smtpStyle = "width:" + document.getElementById("virtualIdentityExtension_SmtpServerList").clientWidth + "px;";
    670         }
    671         ]]></body>
    672     </method>
     469    <field name="_popupElem">document.getElementById("msgIdentityPopup")</field>
     470    <field name="tooltipElem">document.getAnonymousElementByAttribute(this, "anonid", "inputBox")</field>
     471    <field name="textBoxElem">document.getAnonymousElementByAttribute(this, "anonid", "input");</field>
     472        <method name="observe">
     473          <parameter name="self" />
     474          <parameter name="aSubject" />
     475          <parameter name="aTopic" />
     476          <parameter name="aPrefName" />
     477          <body><![CDATA[
     478            self.showSmtp =
     479              virtualIdentityExtension.vIprefs.get("show_smtp");
     480            var MenuItems = self._popupElem.childNodes;
     481            for (var j = 0; j < MenuItems.length; j++) {
     482                if (MenuItems[j].localName == "menuseparator") continue;
     483                MenuItems[j].smtpStyle = "width:" + document.getElementById("virtualIdentityExtension_SmtpServerList").clientWidth + "px;";
     484            }
     485            ]]></body>
     486        </method>
    673487    <property name="email" onset="this.identityData.email = val; this.label = this.identityData.combinedName; this.inputEvent()" />
    674     <property name="vid" onget="return (this.getAttribute('vid') == 'true');" onset="this.setAttribute('vid',val?'true':'false'); return val;" />
    675     <property name="label" onget="return this.textBoxElem.value;" onset="this.textBoxElem.value = val; return val;" />
    676     <property name="value" onget="return this.getAttribute('value');" onset="this.setAttribute('value', val); return val;" />
    677     <property name="identitykey" onget="return this.getAttribute('identitykey');" onset="this.setAttribute('identitykey', val); return val;" />
     488    <property name="vid" onget="return (this.getAttribute('vid') == 'true');" onset="this.setAttribute('vid',val); return val;" />
     489        <property name="value" onget="return this.textBoxElem.value;" onset="this.textBoxElem.value = val; return val;" />
    678490    <property name="extras" onget="return this.identityData.extras;" />
    679491    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
    680     <property name="showSmtp" onget="return (this.getAttribute('showSmtp') == 'true');" onset="this.setAttribute('showSmtp',val?'true':'false'); return val;" />
     492        <!--<property name="showSmtp" onget="return (this.getAttribute('showSmtp') == 'true');" onset="this.setAttribute('showSmtp',val?'true':'false'); return val;" />-->
     493    </implementation>
     494    </binding>
     495
     496       
     497        <binding id="fromPopupItem_new" extends="chrome://global/content/bindings/menu.xml#menuitem">
     498    <content excludes="template,observes,menupopup">
     499        <xul:image class="menupopup_clone-icon" xbl:inherits="src"/>
     500        <xul:label class="menupopup_clone-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/>
     501        <xul:label value="&vident.accPane.prettyName.prefix;" class="menupopup_clone-vid virtIdLabel" vid="false" xbl:inherits="vid" crop="right"/>
     502            <xul:label class="menupopup_clone-description" xbl:inherits="value=description" crop="right"/>
     503                <!--<xul:label class="menupopup_clone-smtp" xbl:inherits="value=smtp,style=smtpStyle" crop="right"/>-->
     504    </content>
     505    <implementation>
     506    <constructor>
     507        <![CDATA[
     508                document.getElementById("virtualIdentityExtension_tooltipPopupset").addTooltip(this, true);
     509                this.vid = "false"; // by default the item is no virtual identity
     510        ]]>
     511    </constructor>
     512        <destructor>
     513        <![CDATA[
     514        document.getElementById("virtualIdentityExtension_tooltipPopupset")
     515            .removeTooltip(this.tooltipElem.getAttribute("tooltip"));
     516        ]]>
     517        </destructor>
     518        <method name="createIdentityData">
     519        <body><![CDATA[
     520            var identity = this._AccountManager.getIdentity(this.getAttribute("identitykey"));
     521            if (identity) {
     522              this.identityData = new virtualIdentityExtension.identityData(window, identity.email,
     523                                    identity.fullName, identity.key,
     524                                    identity.smtpServerKey, null, null, true);
     525              this._identityData.extras.readIdentityValues(identity);
     526              }
     527            ]]></body>
     528        </method>
     529        <method name="_setAttributeIfNotEmpty">
     530            <parameter name="attribute" />
     531            <parameter name="value" />
     532            <body><![CDATA[
     533                if (!this.getAttribute(attribute))
     534                  this.setAttribute(attribute, value);
     535            ]]></body>
     536        </method>
     537        <property name="identityData">
     538          <setter><![CDATA[
     539            // if menuitem get's initialized with identityData,
     540            // attributes (label, value, description, identitykey, accountkey) have to be set accordingly
     541           
     542           
     543            virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_new set identityData");
     544            this._identityData = val;
     545             
     546           
     547            this._setAttributeIfNotEmpty("identitykey", this._identityData.id.key);
     548            this._setAttributeIfNotEmpty("accountkey", this._identityData.id.accountkey);
     549
     550            this._setAttributeIfNotEmpty("label", this._identityData.combinedName);
     551            this._setAttributeIfNotEmpty("value", this._identityData.combinedName);
     552            this._setAttributeIfNotEmpty("smtp", this._identityData.smtp.value);
     553            this._setAttributeIfNotEmpty("description", "");
     554           
     555           
     556            this.setAttribute("vid", this._identityData.isExistingIdentity()?"false":"true");
     557
     558            virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_new set identityData done.");
     559              ]]></setter>
     560            <getter><![CDATA[
     561              if (!this._identityData)
     562                this.createIdentityData();
     563
     564              return this._identityData;
     565            ]]></getter>
     566        </property>
     567       
     568        <property name="_AccountManager" >
     569          <getter><![CDATA[
     570            return Components.classes["@mozilla.org/messenger/account-manager;1"]
     571              .getService(Components.interfaces.nsIMsgAccountManager);
     572          ]]></getter>
     573        </property>
     574
     575    <field name="tooltipElem">this</field>
     576    <property name="vid" onget="return this.getAttribute('vid');" onset="this.setAttribute('vid', val); return val;" />
    681577    </implementation>
    682578    </binding>
Note: See TracChangeset for help on using the changeset viewer.