Changeset 45202e


Ignore:
Timestamp:
Oct 1, 2007, 3:34:47 PM (14 years ago)
Author:
rene <rene@…>
Branches:
master
Children:
b1aaaf
Parents:
f8ffee
Message:

cahnges to add options for addressbook feature. other than german language files still missing.

Files:
13 edited

Legend:

Unmodified
Added
Removed
  • chrome/content/v_identity/vI_addressBook.js

    rf8ffee r45202e  
    2929
    3030vI_addressBook = {
    31     getCardForAddress: function(full_email) {
    32         var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
     31    CardFields : Array("custom1", "custom2", "custom3", "custom4", "notes"),
     32    QueryFields : Array("Custom1", "Custom2", "Custom3", "Custom4", "Notes"),
     33   
     34    elements : {
     35        Obj_aBookSave : null,
     36    },
     37
     38    init: function() {
     39        vI_addressBook.elements.Obj_aBookSave = document.getElementById("aBook_save");
     40        vI_addressBook.elements.Obj_aBookSave.checked = vI.preferences.getBoolPref("aBook_storedefault");
     41    },
     42
     43    removeVIdentityFromABook: function(remove) {
     44        // given the function paramter as false it might be used to count the fields which have a VirtualIdentity stored
     45        var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
     46            .getService(Components.interfaces.nsIPromptService);
     47        var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]
     48            .getService(Components.interfaces.nsIRDFService);
     49       
     50        counter = 0;
    3351       
    3452        // enumerate all of the address books on this system
    3553        var parentDir = rdfService.GetResource("moz-abdirectory://").QueryInterface(Components.interfaces.nsIAbDirectory);
    3654        var enumerator = parentDir.childNodes;
     55           
     56        //~ vI_notificationBar.dump("## vI_addressBook: Search Virtual Identities in addressbooks.\n")
     57       
     58        if (remove) {
     59            var number = vI_addressBook.removeVIdentityFromABook(false)
     60            var strings = document.getElementById("vIdentBundle");
     61            var warning = strings.getString("vident.clearAddressBook.status.prefix") + " " + number + " " +
     62                    strings.getString("vident.clearAddressBook.status.postfix") + " " +
     63                    strings.getString("vident.clearAddressBook.warning")
     64            if (!promptService.confirm(window,"Warning",warning))
     65                return;
     66        }
     67       
     68        while (enumerator && enumerator.hasMoreElements()) {
     69            var addrbook = enumerator.getNext();  // an addressbook directory
     70            addrbook.QueryInterface(Components.interfaces.nsIAbDirectory);
     71            for each (var prop in vI_addressBook.QueryFields) {
     72                var searchUri = addrbook.directoryProperties.URI + "?(or(" + prop + ",c,vIdentity:))"; // search for the address in this book
     73                var directory = rdfService.GetResource(searchUri).QueryInterface(Components.interfaces.nsIAbDirectory);
     74                // directory will now be a subset of the addressbook containing only those cards that match the searchstring 'address'
     75                var ChildCards = directory.childCards;
     76                var keepGoing = 1;
     77                try { ChildCards.first(); }
     78                catch (ex) { keepGoing = 0; }
     79               
     80                while (keepGoing == 1) {
     81                    var Card = ChildCards.currentItem();
     82                    Card = Card.QueryInterface(Components.interfaces.nsIAbCard);
     83                    counter += 1;
     84                    if (remove) {
     85                        Card[prop.toLowerCase()] = "";
     86                        Card.editCardToDatabase("");
     87                    }
     88                   
     89                    try {
     90                        ChildCards.next();
     91                    } catch (ex) {
     92                        keepGoing = 0;
     93                    }
     94                }
     95            }
     96        }
     97        return counter;
     98    },
     99
     100    getCardForAddress: function(email) {
     101        var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
     102       
     103        // enumerate all of the address books on this system
     104        var parentDir = rdfService.GetResource("moz-abdirectory://").QueryInterface(Components.interfaces.nsIAbDirectory);
     105        var enumerator = parentDir.childNodes;
    37106       
    38107        var splitted = { number : 0, emails : {}, fullNames : {}, combinedNames : {} };
    39         vI.headerParser.parseHeadersWithArray(full_email, splitted.emails,
     108        vI.headerParser.parseHeadersWithArray(email, splitted.emails,
    40109            splitted.fullNames, splitted.combinedNames);
    41110        var recipient_email = splitted.emails.value[0]
    42111        if (!recipient_email) return null;
    43112   
    44         vI_notificationBar.dump("## v_identity: Search " + recipient_email + " in addressbooks.\n")
     113        vI_notificationBar.dump("## vI_addressBook: Search " + recipient_email + " in addressbooks.\n")
    45114       
    46115        while (enumerator && enumerator.hasMoreElements()) {
     
    59128            }
    60129            try {
    61                 var CurrentCard = CurrentItem.QueryInterface(Components.interfaces.nsIAbCard);
    62                 vI_notificationBar.dump("## v_identity: card found.\n")
     130                var Card = CurrentItem.QueryInterface(Components.interfaces.nsIAbCard);
     131                vI_notificationBar.dump("## vI_addressBook: card found.\n")
    63132                // current card is now the addressbook card of a contact that has 'address'
    64                 if (CurrentCard.primaryEmail.toLowerCase() == recipient_email.toLowerCase()) return CurrentCard;
     133                if (Card.primaryEmail.toLowerCase() == recipient_email.toLowerCase()) return Card;
    65134            }  catch (e)  {
    66135                // we would be here if the directory contained no items
     
    68137           
    69138        }
    70         vI_notificationBar.dump("## v_identity: " + recipient_email + " not found.\n")
     139        vI_notificationBar.dump("## vI_addressBook: " + recipient_email + " not found.\n")
    71140        return null;
    72141    },
    73142               
    74     readVirtualIdentity: function(element) {
    75         var CurrentCard = vI_addressBook.getCardForAddress(element.value)
    76         if (!CurrentCard) return;
    77         var CardFields=new Array("custom1", "custom2", "custom3", "custom4", "notes")
    78         for each (var prop in CardFields) {
    79             if (CurrentCard[prop].indexOf("vIdentity: ") == 0) {
    80                 var newFullEmail=CurrentCard[prop].replace(/vIdentity: /,"");
     143    readVIdentityFromCard : function(Card) {
     144        vI_notificationBar.dump("## vI_addressBook: readVIdentityFromCard.\n")
     145        for each (var prop in vI_addressBook.CardFields) {
     146            if (Card[prop].indexOf("vIdentity: ") == 0) {
     147                var newFullEmail=Card[prop].replace(/vIdentity: /,"");
    81148                var infoIndex = newFullEmail.indexOf(" (id")
    82                 vI_notificationBar.dump("## v_identity: found vIdentity in AddressBook '" + newFullEmail + "'\n");
     149                var info = null;
    83150                if ( infoIndex != -1) {
    84151                    info = newFullEmail.substr(infoIndex+2).replace(/\)/,"").split(/,/)
    85                     if (info[0]) vI_msgIdentityClone.setMenuToIdentity(info[0])
    86                     if (info[1]) vI_smtpSelector.setMenuToKey(info[1])
    87152                    newFullEmail = newFullEmail.substr(0, infoIndex);
    88153                }
    89                 if (vI_msgIdentityClone.setIdentity(newFullEmail))
    90                     vI_notificationBar.setNote(vI.elements.strings.getString("vident.smartIdentity.vIUsage") + ".",
    91                         "smart_reply_notification");
    92                 break
    93             }
    94         }
    95     },
    96    
    97     storeVirtualIdentity: function() {
     154               
     155                // split FullEmail into parts
     156                var splitted = { number : 0, emails : {}, fullNames : {}, combinedNames : {} };
     157                vI.headerParser.parseHeadersWithArray(newFullEmail, splitted.emails,
     158                    splitted.fullNames, splitted.combinedNames);
     159
     160                // format of addresses is choosen to be compatible with vI_smartIdentity
     161                var addresses = { number : 1,
     162                        emails : Array(splitted.emails.value[0]),
     163                        fullNames : Array(splitted.fullNames.value[0]),
     164                        combinedNames : Array(splitted.combinedNames.value[0]),
     165                        id_keys : {}, smtp_keys : {},
     166                        fullABEntry : Array(Card[prop].replace(/vIdentity: /,"")) };
     167                if ( info[0] ) addresses.id_keys[0] = info[0];
     168                if ( info[1] ) addresses.smtp_keys[0] = info[1];
     169                vI_notificationBar.dump("## vI_addressBook: found '" + addresses.fullABEntry[0] + "'.\n")
     170                return addresses
     171            }
     172        }
     173        vI_notificationBar.dump("## vI_addressBook: no VIdentity information found.\n")
     174        return null;
     175    },
     176   
     177    equalsCurrentIdentity : function(addresses) {
     178        var old_address = vI.helper.getAddress();       
     179        var id_key = vI_msgIdentityClone.elements.Obj_MsgIdentity_clone.getAttribute("oldvalue");
     180        var smtp_key = vI_smtpSelector.elements.Obj_SMTPServerList.selectedItem.getAttribute('key');
     181        vI_notificationBar.dump("## vI_addressBook: '" + old_address.email + "'\n")
     182        vI_notificationBar.dump("## vI_addressBook: '" + old_address.name + "'\n")
     183        vI_notificationBar.dump("## vI_addressBook: '" + id_key + "'\n")
     184        vI_notificationBar.dump("## vI_addressBook: '" + smtp_key + "'\n")
     185        vI_notificationBar.dump("## vI_addressBook: '" + addresses.emails[0] + "'\n")
     186        vI_notificationBar.dump("## vI_addressBook: '" + addresses.fullNames[0] + "'\n")
     187        vI_notificationBar.dump("## vI_addressBook: '" + addresses.id_keys[0] + "'\n")
     188        vI_notificationBar.dump("## vI_addressBook: '" + addresses.smtp_keys[0] + "'\n")
     189       
     190        return (    (!addresses.id_keys[0] || id_key == addresses.id_keys[0]) &&
     191                (!addresses.smtp_keys[0] || smtp_key == addresses.smtp_keys[0]) &&
     192                (old_address.email == addresses.emails[0]) &&
     193                (old_address.name == addresses.fullNames[0])    )
     194    },
     195   
     196    getCurrentVIdentityString : function() {
     197        var old_address = vI.helper.getAddress();       
     198        var id_key = vI_msgIdentityClone.elements.Obj_MsgIdentity_clone.getAttribute("oldvalue");
     199        var smtp_key = vI_smtpSelector.elements.Obj_SMTPServerList.selectedItem.getAttribute('key');
     200        return old_address.combinedName + " (" + id_key + "," + smtp_key + ")"
     201    },
     202   
     203    updateVIdentityFromABook: function(email) {
     204        if (!vI.preferences.getBoolPref("aBook_use")) return;
     205        var Card = vI_addressBook.getCardForAddress(email); if (!Card) return;
     206        var addresses = vI_addressBook.readVIdentityFromCard(Card)
     207       
     208        if (addresses) {               
     209            vI_notificationBar.dump("## vI_addressBook: compare with current Identity\n");
     210            // only update fields if new Identity is different than old one.
     211            if (!vI_addressBook.equalsCurrentIdentity(addresses)) {
     212               
     213                var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
     214                        .getService(Components.interfaces.nsIPromptService);
     215                var warning = vI.elements.strings.getString("vident.updateVirtualIdentity.warning1") +
     216                            email +
     217                            vI.elements.strings.getString("vident.updateVirtualIdentity.warning2") +
     218                            addresses.fullABEntry[0] +
     219                            vI.elements.strings.getString("vident.updateVirtualIdentity.warning3");
     220                if (    vI_msgIdentityClone.elements.Obj_MsgIdentity_clone.getAttribute("value") != "vid" ||
     221                    !vI.preferences.getBoolPref("aBook_warn_vI_replace") ||
     222                    promptService.confirm(window,"Warning",warning)) {                     
     223                    if (addresses.id_keys[0]) vI_msgIdentityClone.setMenuToIdentity(addresses.id_keys[0])
     224                    if (addresses.smtp_keys[0]) vI_smtpSelector.setMenuToKey(addresses.smtp_keys[0])
     225                    if (vI_msgIdentityClone.setIdentity(addresses.combinedNames[0]))
     226                        vI_notificationBar.setNote(vI.elements.strings.getString("vident.smartIdentity.vIUsage") + ".",
     227                            "smart_reply_notification");
     228                }
     229            }
     230        }
     231    },
     232   
     233    writeVIdentityToABook : function(Card) {
     234        for each (var prop in vI_addressBook.CardFields) {
     235            vI_notificationBar.dump("## vI_addressBook: checking " + prop + ".\n")
     236            if (Card[prop] == "" || Card[prop].indexOf("vIdentity: ") == 0) {
     237                Card[prop] = "vIdentity: " + vI_addressBook.getCurrentVIdentityString();
     238                Card.editCardToDatabase("");
     239                vI_notificationBar.dump("## vI_addressBook: added vIdentity to AddressBook '" + vI_addressBook.getCurrentVIdentityString() + "' to field '" + prop + "'.\n")
     240                return;
     241            }
     242        }
     243        vI_notificationBar.dump("## vI_addressBook: no free field in AddressBook.\n")
     244    },
     245   
     246    updateABookFromVIdentity : function(email) {
     247        var Card = vI_addressBook.getCardForAddress(email)
     248        if (!Card) return;
     249       
     250        var addresses = vI_addressBook.readVIdentityFromCard(Card);
     251        var old_address = vI.helper.getAddress();
     252       
     253        if (addresses) {
     254            if (!vI_addressBook.equalsCurrentIdentity(addresses)) {
     255                vI_notificationBar.dump("## vI_addressBook: Identities differ.\n")
     256                var warning =   vI.elements.strings.getString("vident.updateAddressBook.warning1") +
     257                        email +
     258                        vI.elements.strings.getString("vident.updateAddressBook.warning2") +
     259                        addresses.fullABEntry[0] +
     260                        vI.elements.strings.getString("vident.updateAddressBook.warning3") +
     261                        vI_addressBook.getCurrentVIdentityString() +
     262                        vI.elements.strings.getString("vident.updateAddressBook.warning4");
     263                vI_notificationBar.dump("## vI_addressBook: " + warning + ".\n")
     264                var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
     265                    .getService(Components.interfaces.nsIPromptService);
     266                if (!vI.preferences.getBoolPref("aBook_warn_update") ||
     267                        promptService.confirm(window,"Warning",warning))
     268                    vI_addressBook.writeVIdentityToABook(Card);
     269            }
     270        }
     271        else vI_addressBook.writeVIdentityToABook(Card);
     272    },
     273   
     274    storeVIdentityToAllRecipients : function() {
     275        if (!vI.preferences.getBoolPref("aBook_use")) return;
     276        if (vI_addressBook.elements.Obj_aBookSave.getAttribute("hidden") == "false" ) {
     277            vI_notificationBar.dump("## vI_addressBook: switch shown.\n")
     278            if (!vI_addressBook.elements.Obj_aBookSave.checked) {
     279                vI_notificationBar.dump("## vI_addressBook: save button not checked.\n")
     280                return;
     281            }
     282        }
     283        else {
     284            vI_notificationBar.dump("## vI_addressBook: switch hidden.\n")
     285            if (!vI.preferences.getBoolPref("aBook_storedefault")) {
     286                vI_notificationBar.dump("## vI_addressBook: not be safed by default.\n")
     287                return;
     288            }
     289        }
     290       
    98291        for (var row = 1; row <= top.MAX_RECIPIENTS; row ++) {
    99             var CurrentCard = vI_addressBook.getCardForAddress(awGetInputElement(row).value)
    100             if (!CurrentCard) continue;
    101             // add current Virtual Identity to a custom-field in addressbook
    102             var CardFields=new Array("custom1", "custom2", "custom3", "custom4", "notes")
    103             for each (var prop in CardFields) {
    104                 if (CurrentCard[prop] == "" || CurrentCard[prop].indexOf("vIdentity: ") == 0) {
    105                     var vIdentityString = vI.elements.Obj_MsgIdentity.getAttribute("label") + " (" +
    106                     vI_msgIdentityClone.elements.Obj_MsgIdentity_clone.getAttribute("oldvalue") + "," +
    107                     vI_smtpSelector.elements.Obj_SMTPServerList.selectedItem.getAttribute('key') + ")"
    108                     vI_notificationBar.dump("## v_identity: add vIdentity to AddressBook '" + vIdentityString + "' to field '" + prop + "'.\n")
    109                     CurrentCard[prop] = "vIdentity: " + vIdentityString;
    110                     CurrentCard.editCardToDatabase("");
    111                     break
    112                 }
    113             }
    114         }
     292            vI_addressBook.updateABookFromVIdentity(awGetInputElement(row).value)
     293        }
     294    },
     295   
     296    getVIdentityFromAllRecipients : function(all_addresses) {
     297        // var all_addresses = { number : 0, emails : {}, fullNames : {},
     298        //          combinedNames : {}, id_keys : {}, smtp_keys : {} };
     299        for (var row = 1; row <= top.MAX_RECIPIENTS; row ++) {
     300            var Card = vI_addressBook.getCardForAddress(awGetInputElement(row).value);
     301            if (!Card) continue;
     302            var addresses = vI_addressBook.readVIdentityFromCard(Card);
     303            if (addresses) vI_smartIdentity.addWithoutDuplicates(all_addresses,
     304                addresses.emails[0],
     305                addresses.fullNames[0],
     306                addresses.combinedNames[0],
     307                addresses.id_keys[0],
     308                addresses.smtp_keys[0])
     309        }
     310        return all_addresses;
    115311    }
     312
    116313}
  • chrome/content/v_identity/vI_msgIdentityClone.js

    rf8ffee r45202e  
    9494        }
    9595        vI_msgIdentityClone.elements.Obj_MsgIdentity_clone.doCommand();
     96    },
     97   
     98    getIdentityName : function (key) {
     99        return gAccountManager.getIdentity(key).accountname;
    96100    },
    97101   
     
    182186                }
    183187                vI.elements.Obj_vILogo.setAttribute("hidden","false");
     188                vI_addressBook.elements.Obj_aBookSave.setAttribute("hidden",
     189                    !vI.preferences.getBoolPref("aBook_show_switch"));
    184190            }
    185191            // code to hide the signature
     
    196202                vI.Cleanup();
    197203                vI.elements.Obj_vILogo.setAttribute("hidden","true");
     204                vI_addressBook.elements.Obj_aBookSave.setAttribute("hidden","true");
    198205            }
    199206            // code to show the signature
  • chrome/content/v_identity/vI_prefDialog.js

    rf8ffee r45202e  
    6464                "VIdent_identity.aBook_show_switch",
    6565                "VIdent_identity.aBook_warn_update",
    66                 "VIdent_identity.aBook_ask",
    67                 "VIdent_identity.aBook_ask_always",
    68                 "VIdent_identity.aBook_autocreate",
     66                "VIdent_identity.aBook_use_for_smart_reply",
    6967                "VIdent_identity.aBook_prefer_smart_reply",
    7068                "VIdent_identity.aBook_ignore_smart_reply",
     
    128126                "VIdent_identity.smart_reply_autocreate",
    129127                "VIdent_identity.smart_reply_headers_reset",
     128                "VIdent_identity.aBook_use_for_smart_reply",
     129                "VIdent_identity.aBook_prefer_smart_reply",
     130                "VIdent_identity.aBook_ignore_smart_reply",
     131                "aBookTab2",
    130132                "smartReplyTab", "smartReplyTab1", "smartReplyTab2", "smartReplyTab3"];
    131133            for( var i = 0; i < elementIDs.length; i++ ) {
     
    145147                "VIdent_identity.aBook_show_switch",
    146148                "VIdent_identity.aBook_warn_update",
    147                 "VIdent_identity.aBook_ask",
    148                 "VIdent_identity.aBook_ask_always",
    149                 "VIdent_identity.aBook_autocreate",
     149                "VIdent_identity.aBook_use_for_smart_reply",
    150150                "VIdent_identity.aBook_prefer_smart_reply",
    151151                "VIdent_identity.aBook_ignore_smart_reply",
     
    162162            }
    163163            vI_prefDialog.base.smartReplyResultConstraint();
     164            vI_prefDialog.base.aBookCheckCounter();
    164165        },
    165166       
     
    176177        },
    177178       
    178         aBookResultConstraint : function() {
     179        aBookSmartReplyConstraint : function() {
    179180            if (!document.getElementById("VIdent_identity.aBook_use").checked) return;
    180             var ask = document.getElementById("VIdent_identity.aBook_ask")
    181             var ask_always = document.getElementById("VIdent_identity.aBook_ask_always")
    182             var autocreate = document.getElementById("VIdent_identity.aBook_autocreate")
    183             var autocreate_desc = document.getElementById("VIdent_identity.aBook_autocreate.desc")
    184             ask_always.setAttribute("disabled", (autocreate.checked || !ask.checked))
    185             autocreate.setAttribute("disabled", (ask.checked && ask_always.checked))
    186             autocreate_desc.setAttribute("disabled", (ask.checked && ask_always.checked))
    187             autocreate_desc.setAttribute("hidden", !ask.checked)
     181            var use_for_smart_reply = document.getElementById("VIdent_identity.aBook_use_for_smart_reply")
     182            var prefer_smart_reply = document.getElementById("VIdent_identity.aBook_prefer_smart_reply")
     183            var ignore_smart_reply = document.getElementById("VIdent_identity.aBook_ignore_smart_reply")
     184            prefer_smart_reply.setAttribute("disabled", !use_for_smart_reply.checked)
     185            ignore_smart_reply.setAttribute("disabled", !use_for_smart_reply.checked)
    188186        },
    189187
     
    214212            document.getElementById("VIdent_identity.HideSignature.warning").setAttribute("hidden", "true");
    215213            document.getElementById("VIdent_identity.hide_signature").setAttribute("disabled", "false");
     214        },
     215       
     216        aBookCheckCounter : function() {
     217            var aBookStatus = document.getElementById("VIdent_identity.aBook_status");
     218            var strings = document.getElementById("vIdentBundle");
     219            var number = vI_addressBook.removeVIdentityFromABook(false);
     220            var statusString = "";
     221            if (number > 0)
     222                statusString = strings.getString("vident.clearAddressBook.status.prefix") + " " + number + " " +
     223                    strings.getString("vident.clearAddressBook.status.postfix")
     224            else    {
     225                statusString = strings.getString("vident.clearAddressBook.status.none")
     226                document.getElementById("VIdent_identity.aBook_remove_entries").setAttribute("disabled", "true")
     227            }
     228            aBookStatus.setAttribute("value", statusString);
    216229        }
    217230    },
     
    254267        vI_prefDialog.base.smartReplyConstraint(document.getElementById("VIdent_identity.smart_reply"));
    255268        vI_prefDialog.base.smartReplyHideSignature();
     269        vI_prefDialog.base.aBookCheckCounter();
    256270        dump("## vI_prefDialog: init_prefs done\n");
    257271    },
  • chrome/content/v_identity/vI_prefDialog.xul

    rf8ffee r45202e  
    4949<script type="application/x-javascript"
    5050            src="chrome://v_identity/content/vI_prefDialog.js" />
     51<script type="application/x-javascript"
     52            src="chrome://v_identity/content/vI_addressBook.js" />
     53
     54  <stringbundleset id="stringbundleset">
     55    <stringbundle id="vIdentBundle" src="chrome://v_identity/locale/v_identity.properties" />
     56  </stringbundleset>
    5157
    5258 <stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
     
    233239            <tabpanel orient="vertical">
    234240            <groupbox>
    235             <caption label="&vident.prefs.smartReplyTab.caption;"/>
     241            <caption label="&vident.prefs.smartReplyTab3.caption;"/>
    236242            <vbox align="left">
    237243                <description width="500px">&vident.prefs.smartReplyTab.Tab3.desc;</description>
     
    271277            <tabpanel orient="vertical">
    272278            <groupbox>
    273             <caption label="&vident.prefs.aBookCap.caption;"/>
     279            <caption label="&vident.prefs.aBookCap1.caption;"/>
    274280            <vbox align="left">
    275281                <checkbox id="VIdent_identity.aBook_storedefault" label="&vident.prefs.aBook.storedefault.label;"
    276282                    prefstring="aBook_storedefault"/>
     283                <checkbox id="VIdent_identity.aBook_warn_update" label="&vident.prefs.aBook.warn_update.label;"
     284                    prefstring="aBook_warn_update"/>
     285            </vbox>
     286            </groupbox>
     287            <groupbox>
     288            <caption label="&vident.prefs.aBookCap2.caption;"/>
     289            <vbox align="left">
    277290                <checkbox id="VIdent_identity.aBook_show_switch" label="&vident.prefs.aBook.show_switch.label;"
    278291                    prefstring="aBook_show_switch"/>
    279                 <checkbox id="VIdent_identity.aBook_warn_update" label="&vident.prefs.aBook.warn_update.label;"
    280                     prefstring="aBook_warn_update"/>
    281             </vbox>
    282             </groupbox>
    283             </tabpanel>
    284             <tabpanel orient="vertical">
    285             <groupbox>
    286             <caption label="&vident.prefs.aBookCap.caption;"/>
    287             <vbox align="left">
    288                 <checkbox id="VIdent_identity.aBook_ask" label="&vident.prefs.aBook.ask.label;"
    289                     prefstring="aBook_ask"
    290                     oncommand="vI_prefDialog.base.aBookResultConstraint();"/>
    291                 <hbox><spacer width="20px"/><checkbox id="VIdent_identity.aBook_ask_always" label="&vident.prefs.aBook.ask_always.label;"
    292                     prefstring="aBook_ask_always"
    293                     oncommand="vI_prefDialog.base.aBookResultConstraint();"/>
    294                 </hbox>
    295                 <hbox>
    296                 <vbox><spacer flex="1"/>
    297                 <checkbox id="VIdent_identity.aBook_autocreate" label="&vident.prefs.aBook.autocreate.label;"
    298                     prefstring="aBook_autocreate"
    299                     oncommand="vI_prefDialog.base.aBookResultConstraint();"/>
    300                 <spacer flex="1"/></vbox>
    301                 <vbox><spacer flex="1"/>
    302                 <label value="&vident.prefs.aBook.autocreate.desc;" hidden="true"
    303                     id="VIdent_identity.aBook_autocreate.desc" />
    304                 <spacer flex="1"/></vbox>
    305                 </hbox>
    306                 <spacer height="10px"/>
    307                 <checkbox id="VIdent_identity.aBook_prefer_smart_reply" label="&vident.prefs.aBook.prefer_smart_reply.label;"
    308                     prefstring="aBook_prefer_smart_reply"/>
    309                 <checkbox id="VIdent_identity.aBook_ignore_smart_reply" label="&vident.prefs.aBook.ignore_smart_reply.label;"
    310                     prefstring="aBook_ignore_smart_reply"/>
    311             </vbox>
    312             </groupbox>
    313             </tabpanel>
    314             <tabpanel orient="vertical">
    315             <groupbox>
    316             <caption label="&vident.prefs.aBookCap.caption;"/>
    317             <vbox align="left">
    318292                <checkbox id="VIdent_identity.aBook_warn_vI_replace" label="&vident.prefs.aBook.warn_vI_replace.label;"
    319293                    prefstring="aBook_warn_vI_replace"/>
    320                 <spacer height="10px"/>
     294            </vbox>
     295            </groupbox>
     296            </tabpanel>
     297            <tabpanel orient="vertical">
     298            <groupbox>
     299            <caption label="&vident.prefs.aBookCap3.caption;"/>
     300            <vbox align="left">
     301                <description width="500px">&vident.prefs.aBook.reply.desc;</description>
     302                <checkbox id="VIdent_identity.aBook_use_for_smart_reply" label="&vident.prefs.aBook.use_for_smart_reply.label;"
     303                    prefstring="aBook_use_for_smart_reply"
     304                    oncommand="vI_prefDialog.base.aBookSmartReplyConstraint();" />
     305                <hbox><spacer width="20px"/><checkbox id="VIdent_identity.aBook_prefer_smart_reply" label="&vident.prefs.aBook.prefer_smart_reply.label;"
     306                    prefstring="aBook_prefer_smart_reply"/>
     307                </hbox>
     308                <hbox><spacer width="20px"/><checkbox id="VIdent_identity.aBook_ignore_smart_reply" label="&vident.prefs.aBook.ignore_smart_reply.label;"
     309                    prefstring="aBook_ignore_smart_reply"/>
     310                </hbox>
     311            </vbox>
     312            </groupbox>
     313            </tabpanel>
     314            <tabpanel orient="vertical">
     315            <groupbox>
     316            <caption label="&vident.prefs.aBookCap4.caption;"/>
     317            <vbox align="left">
    321318                <vbox><description width="500px">&vident.prefs.aBook.remove_entries.desc;</description>
    322                 <spacer flex="1"/>
     319                <spacer height="10px" />
     320                <label id="VIdent_identity.aBook_status" />
    323321                <hbox><spacer flex="1"/>
    324                 <button id="VIdent_identity.aBook_remove_entries" label="&vident.prefs.aBook.remove_entries.remove;" oncommand="vI_prefDialog.base.smartReplyHeaderReset();"/>
     322                <button id="VIdent_identity.aBook_remove_entries" label="&vident.prefs.aBook.remove_entries.remove;"
     323                    oncommand="vI_addressBook.removeVIdentityFromABook(true);vI_prefDialog.base.aBookCheckCounter();"/>
    325324                <spacer flex="1"/></hbox>
    326325                </vbox>
  • chrome/content/v_identity/vI_smartIdentity.js

    rf8ffee r45202e  
    3636        vI_notificationBar.dump("## vI_smartIdentity: msgComposeType = " + type + "\n");
    3737       
    38         if (vI.preferences.getBoolPref("smart_timestamp") &&
    39             ((type == msgComposeType.New) || (type == msgComposeType.NewsPost) || (type == msgComposeType.MailToUrl)))
    40                     vI_smartIdentity.SmartTimestamp(hdr);
     38        //~ if (vI.preferences.getBoolPref("smart_timestamp") &&
     39            //~ ((type == msgComposeType.New) || (type == msgComposeType.NewsPost) || (type == msgComposeType.MailToUrl)))
     40                    //~ vI_smartIdentity.SmartTimestamp(hdr);
    4141                   
    4242        // if there is no ID of the original Message  (Why?) leave the function
     
    4444        if (!uri) {
    4545            vI_notificationBar.dump("## vI_smartIdentity: cant get URI of former Message\n");
    46             return;
     46            //~ return;
    4747        }
    4848        try { var hdr = vI_smartIdentity.messenger.messageServiceFromURI(uri).messageURIToMsgHdr(uri); }
     
    5050            vI_notificationBar.dump("## vI_smartIdentity: can't get Message Header.\n");
    5151            vI_notificationBar.dump("## vI_smartIdentity: (maybe you're opening a message stored as a file)\n");
    52             return;
     52            hdr = null;
     53            //~ return;
    5354        };
    5455       
     
    7071                    vI_smartIdentity.SmartDraft(hdr);
    7172                break;
    72             case *:
     73            case msgComposeType.New:
     74            case msgComposeType.NewsPost:
     75            case msgComposeType.MailToUrl:
     76                if (vI.preferences.getBoolPref("aBook_use"))
     77                    vI_smartIdentity.queryABook();
    7378                if (vI.preferences.getBoolPref("smart_timestamp"))
    74                     vI_smartIdentity.SmartTimestamp(hdr);
     79                    vI_smartIdentity.SmartTimestamp();
    7580                break;
    7681
    7782            }
     83    },
     84   
     85    // this function creates a list of possible sender addresses from Addressbook and uses them (according to SmartReply behaivior)
     86    queryABook : function() {
     87        var all_addresses = { number : 0, emails : {}, fullNames : {}, combinedNames : {}, id_keys : {}, smtp_keys : {} };
     88        vI_addressBook.getVIdentityFromAllRecipients(all_addresses);
     89        vI_notificationBar.dump("## vI_smartIdentity: checked for Addressbook-Identities and found " + all_addresses.number + " address(es)\n")
     90        if (all_addresses.number > 0) vI_smartIdentity.smartIdentitySelection(all_addresses);
    7891    },
    7992   
     
    8194    SmartTimestamp : function() {
    8295        vI_notificationBar.dump("## vI_smartIdentity: SmartTimestamp()\n");
     96        if (vI_msgIdentityClone.elements.Obj_MsgIdentity_clone.getAttribute("value") == "vid") {
     97            vI_notificationBar.dump("## vI_smartIdentity: Virtual Identity in usage, aborting\n");
     98            return;
     99        }
    83100
    84101        current_email = getCurrentIdentity().email;
     
    98115        vI_notificationBar.dump("## vI_smartIdentity: SmartDraft()\n");
    99116       
     117        if (!hdr) {
     118            vI_notificationBar.dump("## vI_smartIdentity: SmartDraft Problem. No Header found, shouldn't happen\n");
     119            return;
     120        }
     121           
    100122        var all_addresses = { number : 1, emails : {}, fullNames : {}, combinedNames : {} };
    101123        vI.headerParser.parseHeadersWithArray(hdr.author, all_addresses.emails,
     
    176198   
    177199    filterAddresses : function(all_addresses) {
    178         var return_addresses = { number : 0, emails : { }, fullNames : { }, combinedNames : { } };
     200        var return_addresses = { number : 0, emails : { }, fullNames : { }, combinedNames : { },
     201                    id_keys : { }, smtp_keys : { } };
    179202       
    180203        var filter_list = vI.preferences.getCharPref("smart_reply_filter").split(/\n/)
     
    216239                        all_addresses.emails[j],
    217240                        all_addresses.fullNames[j],
    218                         all_addresses.combinedNames[j])
     241                        all_addresses.combinedNames[j], null, null)
    219242            }
    220243        }
     
    222245    },
    223246   
    224     addWithoutDuplicates : function(all_addresses, email, fullName, combinedName) {
     247    mergeWithoutDuplicates : function(all_addresses, add_addresses) {
     248        for (index = 0; index < add_addresses.number; index++)
     249            vI_smartIdentity.addWithoutDuplicates(all_addresses,
     250                add_addresses.emails[index],
     251                add_addresses.fullNames[index],
     252                add_addresses.combinedNames[index],
     253                add_addresses.id_keys[index],
     254                add_addresses.smtp_keys[index])
     255        return all_addresses
     256    },
     257   
     258    addWithoutDuplicates : function(all_addresses, email, fullName, combinedName, id_key, smtp_key) {
    225259        for (index = 0; index < all_addresses.number; index++) {
    226             if (all_addresses.emails[index] == email) {
     260            if (all_addresses.emails[index] == email &&
     261                (!all_addresses.id_keys[index] || !id_key || all_addresses.id_keys[index] == id_key) &&
     262                (!all_addresses.smtp_keys[index] || !smtp_key || all_addresses.smtp_keys[index] == smtp_key) ) {
    227263                // found, so check if we can use the Name of the new field
    228264                if (all_addresses.fullNames[index] == "" && fullName != "") {
     
    232268                        + "' to stored email '" + email +"'\n")
    233269                }
     270                // check if id_key or smtp_key can be used
     271                if (id_key) all_addresses.id_keys[index] = id_key;
     272                else all_addresses.id_keys[index] = null;
     273                if (smtp_key) all_addresses.smtp_keys[index] = smtp_key;
     274                else all_addresses.smtp_keys[index] = smtp_key;
    234275                return all_addresses;
    235276            }
     
    239280        all_addresses.fullNames[index] = fullName;
    240281        all_addresses.combinedNames[index] = combinedName;
     282        if (id_key) all_addresses.id_keys[index] = id_key;
     283        else all_addresses.id_keys[index] = null;
     284        if (smtp_key) all_addresses.smtp_keys[index] = smtp_key;
     285        else all_addresses.smtp_keys[index] = smtp_key;
    241286        all_addresses.number = index + 1;
    242287        return all_addresses;
     
    287332                else all_addresses.combinedNames[all_addresses.number] =
    288333                    all_addresses.emails[all_addresses.number]
     334                   
     335                // mark id and smtp as empty
     336                all_addresses.id_keys[all_addresses.number] = null;
     337                all_addresses.smtp_keys[all_addresses.number] = null;
    289338               
    290339                vI_notificationBar.dump("## vI_smartIdentity:   found '" +
     
    303352        }
    304353       
    305         var all_addresses = { number : 0, emails : {}, fullNames : {}, combinedNames : {} };
     354        var all_addresses = { number : 0, emails : {}, fullNames : {}, combinedNames : {}, id_keys : {}, smtp_keys : {} };
     355        var aBook_addresses = { number : 0, emails : {}, fullNames : {}, combinedNames : {}, id_keys : {}, smtp_keys : {} };
    306356       
    307357        /* first step: collect addresses */
    308         vI_smartIdentity.collectAddresses(all_addresses, hdr);
    309        
    310         vI_notificationBar.dump("## vI_smartIdentity: " + all_addresses.number + " address(es) after parsing, before filtering\n")
    311        
    312         /* second step: filter (and sort) addresses */
     358       
     359        // check if addressbook-search should be used before SmartReply
     360        if (vI.preferences.getBoolPref("aBook_use_for_smart_reply")) {
     361            vI_addressBook.getVIdentityFromAllRecipients(aBook_addresses);
     362            vI_notificationBar.dump("## vI_smartIdentity: checked for Addressbook-Identities and found " + aBook_addresses.number + " address(es)\n")
     363        }
     364       
     365        vI_notificationBar.dump("## vI_smartIdentity: ----------------------------------------------------------\n")
     366       
     367        if (aBook_addresses.number == 0 || !vI.preferences.getBoolPref("aBook_ignore_smart_reply")) {
     368       
     369            vI_smartIdentity.collectAddresses(all_addresses, hdr);
     370           
     371            vI_notificationBar.dump("## vI_smartIdentity: " + all_addresses.number + " address(es) after parsing, before filtering\n")
     372           
     373            /* second step: filter (and sort) addresses */
     374           
     375            all_addresses = vI_smartIdentity.filterAddresses(all_addresses);
     376           
     377            vI_notificationBar.dump("## vI_smartIdentity: filtering done, " + all_addresses.number + " address(es) left\n")
     378           
     379            var smart_reply_defaultFullName = vI.preferences.getCharPref("smart_reply_defaultFullName")
     380            if (smart_reply_defaultFullName != "") {
     381                for (index = 0; index < all_addresses.number; index++) {
     382                    if (all_addresses.fullNames[index] == "") {
     383                        all_addresses.fullNames[index] = smart_reply_defaultFullName
     384                        all_addresses.combinedNames[index] =
     385                            smart_reply_defaultFullName + " <" + all_addresses.emails[index] + ">"
     386                        vI_notificationBar.dump("## vI_smartIdentity: added default FullName '" +
     387                            smart_reply_defaultFullName + "' to '" + all_addresses.emails[index] + "'\n")
     388                    }
     389                }
     390            }   
     391        }
     392       
     393        vI_notificationBar.dump("## vI_smartIdentity: ----------------------------------------------------------\n")
     394       
     395        // merge SmartReply-Identities and Addressbook-Identites
     396        if (vI.preferences.getBoolPref("aBook_prefer_smart_reply"))
     397            all_addresses = vI_smartIdentity.mergeWithoutDuplicates(all_addresses, aBook_addresses)
     398        else
     399            all_addresses = vI_smartIdentity.mergeWithoutDuplicates(aBook_addresses, all_addresses)
     400       
     401        vI_notificationBar.dump("## vI_smartIdentity: merged SmartReply & Addressbook, " + all_addresses.number + " address(es) left\n")
     402       
     403        if (all_addresses.number == 0) return;
    313404       
    314405        if (vI_smartIdentity.matchSelectedIdentity(all_addresses)) return;
     
    322413            return;
    323414        }
    324        
    325         all_addresses = vI_smartIdentity.filterAddresses(all_addresses);
    326        
    327         vI_notificationBar.dump("## vI_smartIdentity: filtering done, " + all_addresses.number + " address(es) left\n")
    328         if (all_addresses.number == 0) return;
    329        
    330         var smart_reply_defaultFullName = vI.preferences.getCharPref("smart_reply_defaultFullName")
    331         if (smart_reply_defaultFullName != "") {
    332             for (index = 0; index < all_addresses.number; index++) {
    333                 if (all_addresses.fullNames[index] == "") {
    334                     all_addresses.fullNames[index] = smart_reply_defaultFullName
    335                     all_addresses.combinedNames[index] =
    336                         smart_reply_defaultFullName + " <" + all_addresses.emails[index] + ">"
    337                     vI_notificationBar.dump("## vI_smartIdentity: added default FullName '" +
    338                         smart_reply_defaultFullName + "' to '" + all_addresses.emails[index] + "'\n")
    339                 }
    340             }
    341         }   
    342        
     415
    343416        /* third step: select address */
    344        
     417        vI_smartIdentity.smartIdentitySelection(all_addresses);
     418    },
     419   
     420    smartIdentitySelection : function(all_addresses) {
    345421        vI_smartIdentity.addSmartIdentitiesToCloneMenu(all_addresses);
    346422       
     
    358434            vI_notificationBar.addNote(label + ".", "smart_reply_notification");
    359435            vI_smartIdentity.changeIdentityToSmartIdentity(all_addresses, 0);
    360         }
     436        }   
    361437    },
    362438   
    363439    changeIdentityToSmartIdentity : function(all_addresses, selectedValue) {
     440        if (all_addresses.id_keys[selectedValue]) vI_msgIdentityClone.setMenuToIdentity(all_addresses.id_keys[selectedValue])
     441        if (all_addresses.smtp_keys[selectedValue]) vI_smtpSelector.setMenuToKey(all_addresses.smtp_keys[selectedValue])
    364442        vI_msgIdentityClone.setIdentity(all_addresses.combinedNames[selectedValue]);
    365443        vI_smartIdentity.removeSmartIdentityFromRecipients(all_addresses, selectedValue);
  • chrome/content/v_identity/vI_smartReplyDialog.js

    rf8ffee r45202e  
    2626    Obj_radioGroup : null,
    2727    all_addresses : null,
     28    AccountManager : Components.classes["@mozilla.org/messenger/account-manager;1"]
     29                .getService(Components.interfaces.nsIMsgAccountManager),
     30    smtpService : Components.classes["@mozilla.org/messengercompose/smtp;1"]
     31                .getService(Components.interfaces.nsISmtpService),
    2832   
     33    getIdentityName : function (key) {
     34        return vI_smartReply_dialog.AccountManager.getIdentity(key).identityName
     35    },
     36   
     37    getSMTPName : function (key) {
     38        var server = vI_smartReply_dialog.smtpService.getServerByKey(key)
     39        return (server.description?server.description:server.hostname)
     40    },
     41
    2942    init : function() {
    3043        vI_smartReply_dialog.Obj_radioGroup = document.getElementById("replySelector.radiogroup");
    31         // var all_addresses = { number : 0, emails : {}, fullNames : {}, combinedNames : {} };
     44        // var all_addresses = { number : 0, emails : {}, fullNames : {}, combinedNames : {},
     45        //          id_keys : {}, smtp_keys : {} };
    3246        vI_smartReply_dialog.all_addresses = window.arguments[0];
    33         for (index = 0; index < vI_smartReply_dialog.all_addresses.number; index++)
    34             vI_smartReply_dialog.add_row(vI_smartReply_dialog.all_addresses.combinedNames[index]);
     47        for (index = 0; index < vI_smartReply_dialog.all_addresses.number; index++) {
     48            var menuentry = vI_smartReply_dialog.all_addresses.combinedNames[index]
     49            var id = null; var smtp = null;
     50            if (vI_smartReply_dialog.all_addresses.id_keys[index])
     51                id = vI_smartReply_dialog.getIdentityName(vI_smartReply_dialog.all_addresses.id_keys[index])
     52            if (vI_smartReply_dialog.all_addresses.smtp_keys[index])
     53                smtp = vI_smartReply_dialog.getSMTPName(vI_smartReply_dialog.all_addresses.smtp_keys[index])
     54            menuentry += ((id||smtp)?"   (":"") + (id?id:"") + ((id&&smtp)?",":"") + (smtp?"SMTP:"+smtp:"") + ((id||smtp)?")":"")
     55            vI_smartReply_dialog.add_row(menuentry);
     56        }
    3557    },
    3658
  • chrome/content/v_identity/vI_smartReplyDialog.xul

    rf8ffee r45202e  
    3333<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    3434    buttons="cancel"
    35         title="Virtual Identity Smart Reply"
     35        title="Virtual Identity - Smart Identity"
    3636    zlevel="6">
    3737
  • chrome/content/v_identity/vI_smtpSelector.js

    rf8ffee r45202e  
    128128
    129129        return listitem;
     130    },
     131   
     132    getSMTPName : function (key) {
     133        var server = vI_smtpSelector.smtpService.getServerByKey(key)
     134        return (server.description?server.description:server.hostname)
    130135    }
    131136}
  • chrome/content/v_identity/v_identity.js

    rf8ffee r45202e  
    6161       
    6262        getAddress : function() {
     63            vI_msgIdentityClone.initMsgIdentityTextbox_clone();
    6364            var address = vI_msgIdentityClone.elements.Obj_MsgIdentityTextbox_clone.value;
    6465            var splitted = { number : 0, emails : {}, fullNames : {}, combinedNames : {} };
     
    123124        },
    124125       
    125         awReturnHit: function (element) {
    126             vI_notificationBar.dump("## v_identity: awReturnHit\n");
    127             vI.original_functions.awReturnHit(element);
    128             vI_addressBook.readVirtualIdentity(element);
    129         },
    130        
    131         awTabFromRecipient: function (element, event) {
    132             vI_notificationBar.dump("## v_identity: awTabFromRecipient\n");
    133             vI.original_functions.awTabFromRecipient(element, event);
    134             vI_addressBook.readVirtualIdentity(element);
    135         },
    136        
     126        awOnBlur : function (element) {
     127            vI_notificationBar.dump("## v_identity: awOnBlur\n");
     128            vI_addressBook.updateVIdentityFromABook(element.value);
     129        },
     130
    137131        GenericSendMessage: function (msgType) {
    138132            var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
     
    184178                    vI_notificationBar.dump("## v_identity: SendMessage cancelled\n");
    185179                }
    186                 else if (msgType == nsIMsgCompDeliverMode.Now) vI_addressBook.storeVirtualIdentity();
     180                else if (msgType == nsIMsgCompDeliverMode.Now) vI_addressBook.storeVIdentityToAllRecipients();
    187181            }
    188182        },
     
    219213        vI.elements.init_rest();
    220214       
     215        vI_addressBook.init();
    221216        vI_smtpSelector.init();
    222217        vI_msgIdentityClone.init();
     
    234229                vI.msgType = msgType; if (vI.warning(msgType)) vI.original_functions.GenericSendMessage(msgType); }
    235230       
    236         // adapt awReturnHit to change Indentity if stored in AddressBook
    237         vI_notificationBar.dump("## v_identity: adapt awReturnHit\n");
    238         vI.original_functions.awReturnHit = awReturnHit;
    239         awReturnHit = function (element) {
    240                 vI.replacement_functions.awReturnHit(element); }
    241        
    242         // adapt awTabFromRecipient to change Indentity if stored in AddressBook
    243         vI_notificationBar.dump("## v_identity: adapt awTabFromRecipient\n");
    244         vI.original_functions.awTabFromRecipient = awTabFromRecipient;
    245         awTabFromRecipient = function (element, event) {
    246                 vI.replacement_functions.awTabFromRecipient(element, event); }
    247                
     231        // better approach would be to use te onchange event, but this one is not fired in any change case
     232        // see https://bugzilla.mozilla.org/show_bug.cgi?id=355367
     233        awGetInputElement(1).setAttribute("onblur",
     234            "window.setTimeout(vI.replacement_functions.awOnBlur, 250, this);")
     235       
    248236        gMsgCompose.RegisterStateListener(vI.ComposeStateListener);
    249237        window.removeEventListener("load", vI.init, false);
  • chrome/content/v_identity/v_identity.xul

    rf8ffee r45202e  
    7474    </menulist>
    7575    </hbox>
     76    <checkbox id="aBook_save" label="&vident.composeDialog.aBookSave.label;"
     77        tooltiptext="&vident.composeDialog.aBookSave.tooltiptext;" hidden="true" />
    7678</hbox>
    7779   
  • chrome/locale/de-DE/v_identity/v_identity.dtd

    rf8ffee r45202e  
    3636<!ENTITY vident.prefs.smartReplyTab.Tab3.label "3. Adressen ÃŒbernehmen">
    3737<!ENTITY vident.prefs.smartReplyTab.caption "Virtual Identity Smart Reply">
     38<!ENTITY vident.prefs.smartReplyTab3.caption "Virtual Identity Smart Reply / Adressbuch">
    3839<!ENTITY vident.prefs.smartReplyTab.Tab1.desc "In einem ersten Schritt muss &apos;Smart Reply&apos; eine Liste der möglichen Sendeadressen ihrer Antwort erstellen. DafÌr werden Ìblicherweise die EmpfÀngerfelder &apos;To&apos; und &apos;Cc&apos; der Email ausgewertet. Hier können diese und weitere Kopfzeilen angegeben werden. (ergÀnzende Optionen: Auswahl der Kopfzeile Nummer n aus mehreren Kopfzeilen mit gleicher Bezeichnung durch &apos;:n&apos;. Email-Adressen Ìbernehmen, Namen ignorieren durch &apos;:@&apos;.)">
    3940<!ENTITY vident.prefs.smartReply.headers.desc "zusÀtzliche Kopfzeilen  -  je eine pro Zeile bspw. &apos;x-original-to&apos; oder &apos;x-original-to:@&apos; oder &apos;x-original-to:2:@&apos;">
     
    4344<!ENTITY vident.prefs.smartReply.ignoreFullname.label "ignoriere Namensangaben beim Vergleich der Email-Adressen mit vorhandenen IdentitÀten">
    4445<!ENTITY vident.prefs.smartReply.defaultFullname.label "falls kein Name zu einer Email-Adresse gefunden wurde, benutze folgenden Namen:">
    45 <!ENTITY vident.prefs.smartReplyTab.Tab3.desc "Die gefilterten Adressen werden abschliessend dem Sender-Auswahlmenu hinzugefÃŒgt. Hier kann entschieden werden, ob und wie die gefundenen IdentitÀten als Sender ÃŒbernommen werden.">
     46<!ENTITY vident.prefs.smartReplyTab.Tab3.desc "Die gefilterten Adressen werden abschliessend dem Sender-Auswahlmenu hinzugefÃŒgt. Hier kann entschieden werden, ob und wie die gefundenen IdentitÀten als Sender ÃŒbernommen werden (Bei aktivierter Suche nach IdentitÀten im Adressbuch werden die hier angegebene Optionen gleichfalls genutzt).">
    4647<!ENTITY vident.prefs.smartReply.ask.label "öffne ein Dialogfenster zur Auswahl der IdentitÀt">
    4748<!ENTITY vident.prefs.smartReply.ask_always.label "auch nachfragen, wenn nur eine Adresse zur Auswahl steht">
     
    5051<!ENTITY vident.prefs.aBookTab.label "Verwendung Adressbuch">
    5152<!ENTITY vident.prefs.aBookTab.header "Speicherung Virtueller IdentitÀten im Adressbuch">
    52 <!ENTITY vident.prefs.aBookCap.caption "Virtual Identity Adressbuch-Konfiguration">
     53<!ENTITY vident.prefs.aBookCap1.caption "Virtual Identity Adressbuch-Konfiguration">
     54<!ENTITY vident.prefs.aBookCap2.caption "Konfiguration Email-Dialog">
     55<!ENTITY vident.prefs.aBookCap3.caption "Konfiguration Reply-IdentitÀten">
     56<!ENTITY vident.prefs.aBookCap4.caption "Bereinigung des Adressbuchs">
    5357<!ENTITY vident.prefs.aBookTab.Tab1.label "1. Allgemeine Konfiguration">
    54 <!ENTITY vident.prefs.aBookTab.Tab2.label "2. Übernahme der Adressen">
     58<!ENTITY vident.prefs.aBookTab.Tab2.label "2. Reply-IdentitÀten">
    5559<!ENTITY vident.prefs.aBookTab.Tab3.label "3. Erweitert">
    5660<!ENTITY vident.prefs.aBook.storedefault.label "speichere Virtuelle IdentitÀten beim Senden von Emails">
     61<!ENTITY vident.prefs.aBook.warn_update.label "frage nach, bevor Virtuelle IdentitÀten im Adressbuch ÃŒberschrieben werden">
    5762<!ENTITY vident.prefs.aBook.show_switch.label "zeige Schalter zum Aktivieren/Deaktivieren der Speicherung">
    58 <!ENTITY vident.prefs.aBook.warn_update.label "frage nach, bevor Virtuelle IdentitÀten im Adressbuch ÃŒberschrieben werden">
     63<!ENTITY vident.prefs.aBook.warn_vI_replace.label "frage nach, wenn im Sender-Feld eingetragene Virtuelle IdentitÀt ersetzt werden soll.">
    5964<!ENTITY vident.prefs.aBookCap2.caption "Auswahl der SendeindentitÀt">
    60 <!ENTITY vident.prefs.aBook.ask.label "öffne ein Dialogfenster zur Auswahl der IdentitÀt">
    61 <!ENTITY vident.prefs.aBook.ask_always.label "auch nachfragen, wenn nur eine Adresse zur Auswahl steht">
    62 <!ENTITY vident.prefs.aBook.autocreate.label "ÃŒbernehme die erste IdentitÀt automatisch">
    63 <!ENTITY vident.prefs.aBook.autocreate.desc "(wenn nur eine Adresse zur Auswahl steht)">
     65<!ENTITY vident.prefs.aBook.reply.desc "Wird auf emails geantwortet und ist die Nutzung des Adressbuchs gemeinsam mit 'Smart Reply' aktiviert, kann hier konfiguriert werden, ob und wie die gefundenen IdentitÀten genutzt werden. Die Übernahme der IdentitÀten als Sender erfolgt dabei genauso, wie unter 'Smart Reply' konfiguriert.">
     66<!ENTITY vident.prefs.aBook.use_for_smart_reply.label "benutze Adressbuch-IdentitÀten gemeinsam mit 'Smart Reply'">
    6467<!ENTITY vident.prefs.aBook.prefer_smart_reply.label "bevorzuge Smart Reply-IdentitÀten">
    6568<!ENTITY vident.prefs.aBook.ignore_smart_reply.label "ignoriere Smart Reply-IdentitÀten wenn IdentitÀten im Adressbuch gefunden werden">
    6669<!ENTITY vident.prefs.aBookCap3.caption "erweiterte Optionen">
    67 <!ENTITY vident.prefs.aBook.warn_vI_replace.label "frage nach, wenn im Sender-Feld eingetragene Virtuelle IdentitÀt ersetzt werden soll.">
    68 <!ENTITY vident.prefs.aBook.remove_entries.desc "Virtual Identity speichert Informationen im Adressbuch. Hier können diese ergÀnzenden Informationen aus den Adressbuch gelöscht werden. Dies kann lange dauern.">
     70<!ENTITY vident.prefs.aBook.remove_entries.desc "Hier können sie die Informationen ÃŒber Virtuelle IdentitÀten aus ihren AddressbÃŒchern entfernen.">
    6971<!ENTITY vident.prefs.aBook.remove_entries.remove "entferne Informationen">
    7072<!ENTITY vident.prefs.notificationTab.header "Statusinformationen">
     
    7678<!ENTITY vident.prefs.notifyTime.postfix.label "Sekunden">
    7779<!ENTITY vident.prefs.notificationTab.Debug.caption "Fehlersuche">
    78 <!ENTITY vident.prefs.notifyDebug.desc "Zur Fehlersuche und zum besseren VerstÀndnis der Funktionsweise von Virtual Identity, besonders auch der Filter von SmartReply, können weitere Informationen in einem eigenen Bereich angezeigt werden. Diese Debug-Informationen stehen nur in englischer Sprache zur VerfÃŒgung. Die Ausgabe verlangsamt die Arbeit des Email-Programms und sollte darum nicht dauerhaft aktiviert bleiben.">
     80<!ENTITY vident.prefs.notifyDebug.desc "Zur Fehlersuche und zum besseren VerstÀndnis der Funktionsweise von Virtual Identity, besonders auch der Filter von 'Smart Reply', können weitere Informationen in einem eigenen Bereich angezeigt werden. Diese Debug-Informationen stehen nur in englischer Sprache zur VerfÃŒgung. Die Ausgabe verlangsamt die Arbeit des Email-Programms und sollte darum nicht dauerhaft aktiviert bleiben.">
    7981<!ENTITY vident.prefs.notifyDebug.label "zeige Bereich mit Informationen zur Fehlersuche">
    8082<!ENTITY vident.accPane.prettyName.prefix "virtuelle Id">
    81 <!ENTITY vident.replySelector.dialogheader.title "Virtual Identity Smart Reply">
     83<!ENTITY vident.composeDialog.aBookSave.label "speichern">
     84<!ENTITY vident.composeDialog.aBookSave.tooltiptext "speichere Virtuelle IdentitÀt beim Senden im Adressbuch">
     85<!ENTITY vident.replySelector.dialogheader.title "Virtual Identity - Smart Identity">
    8286<!ENTITY vident.replySelector.caption.label "WÀhlen Sie eine Virtuelle IdentitÀt">
    8387<!ENTITY fccMailFolder.accesskey "P">
  • chrome/locale/de-DE/v_identity/v_identity.properties

    rf8ffee r45202e  
    22vident.sendLater.prefix= Soll ich die virtuelle IdentitÀt mit der Standard-IdentitÀt (
    33vident.sendLater.postfix= ) ersetzen ?
     4vident.updateAddressBook.warning1=Im Adressbuch ist fÃŒr '
     5vident.updateAddressBook.warning2=' die Virtuelle IdentitÀt '
     6vident.updateAddressBook.warning3=' gespeichert. Soll diese durch '
     7vident.updateAddressBook.warning4=' ersetzt werden?
     8vident.clearAddressBook.status.prefix=Zur Zeit sind
     9vident.clearAddressBook.status.postfix= Virtuelle IdentitÀten in ihren AdressbÃŒchern gespeichert.
     10vident.clearAddressBook.status.none=Zur Zeit sind keine Angaben zu Virtuellen IdentitÀten in ihren AdressbÃŒchern.
     11vident.clearAddressBook.warning= Wollen sie diese Informationen wirklich entfernen?
     12vident.updateVirtualIdentity.warning1=FÃŒr die Adresse '
     13vident.updateVirtualIdentity.warning2=' ist im Adressbuch die Virtuelle IdentitÀt '
     14vident.updateVirtualIdentity.warning3=' hinterlegt. Soll ich die aktuell als Sender genutzte Virtuelle IdentitÀt mit dieser ersetzen?
    415vident.smartIdentity.vIUsage= benutze eine Virtuelle IdentitÀt als Sender
    516vident.smartIdentity.ignoreRegExp= ignoriere ungÌltigen regulÀren Ausdruck.
  • defaults/preferences/preferences.js

    rf8ffee r45202e  
    2929pref("extensions.virtualIdentity.aBook_show_switch", true);
    3030pref("extensions.virtualIdentity.aBook_warn_update", false);
    31 pref("extensions.virtualIdentity.aBook_ask", false);
    32 pref("extensions.virtualIdentity.aBook_ask_always", false);
    33 pref("extensions.virtualIdentity.aBook_autocreate", true);
     31pref("extensions.virtualIdentity.aBook_use_for_smart_reply", true);
    3432pref("extensions.virtualIdentity.aBook_prefer_smart_reply", false);
    3533pref("extensions.virtualIdentity.aBook_ignore_smart_reply", false);
Note: See TracChangeset for help on using the changeset viewer.