diff --git a/mozilla/mailnews/addrbook/public/nsIAddrDatabase.idl b/mozilla/mailnews/addrbook/public/nsIAddrDatabase.idl index aa988c51f08..ab4be37de18 100644 --- a/mozilla/mailnews/addrbook/public/nsIAddrDatabase.idl +++ b/mozilla/mailnews/addrbook/public/nsIAddrDatabase.idl @@ -52,6 +52,8 @@ interface nsIAddrDatabase : nsIAddrDBAnnouncer { void EditCard(in nsIAbCard card, in boolean beNotify); void ContainsCard(in nsIAbCard card, out boolean hasCard); + void GetCardForEmailAddress(in string emailAddress, out nsIAbCard card); + void SetAnonymousStringAttribute(in string attrname, in string value); void GetAnonymousStringAttribute(in string attrname, out string value); void SetAnonymousIntAttribute(in string attrname, in unsigned long value); diff --git a/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp b/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp index ec162c631bb..1a21fb54cf6 100644 --- a/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp +++ b/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp @@ -2269,3 +2269,30 @@ nsresult nsAddrDatabase::CreateABCard(nsIMdbRow* cardRow, nsIAbCard **result) } +NS_IMETHODIMP nsAddrDatabase::GetCardForEmailAddress(const char *emailAddress, nsIAbCard **cardResult) +{ + nsresult rv = NS_OK; + if (!cardResult) + return NS_ERROR_NULL_POINTER; + + mdbYarn emailAddressYarn; + + emailAddressYarn.mYarn_Buf = (void *) emailAddress; + emailAddressYarn.mYarn_Fill = PL_strlen(emailAddress); + emailAddressYarn.mYarn_Form = 0; + emailAddressYarn.mYarn_Size = emailAddressYarn.mYarn_Fill; + + nsIMdbRow *cardRow; + mdbOid outRowId; + mdb_err result = GetStore()->FindRow(GetEnv(), m_CardRowScopeToken, + m_PriEmailColumnToken, &emailAddressYarn, &outRowId, + &cardRow); + if (NS_SUCCEEDED(result) && cardRow) + { + rv = CreateABCard(cardRow, cardResult); + } + else + *cardResult = nsnull; + return rv; +} + diff --git a/mozilla/mailnews/addrbook/src/nsAddrDatabase.h b/mozilla/mailnews/addrbook/src/nsAddrDatabase.h index 2515e502681..10107d4ceae 100644 --- a/mozilla/mailnews/addrbook/src/nsAddrDatabase.h +++ b/mozilla/mailnews/addrbook/src/nsAddrDatabase.h @@ -86,6 +86,9 @@ public: NS_IMETHOD DeleteCard(nsIAbCard *newCard, PRBool notify); NS_IMETHOD EditCard(nsIAbCard *card, PRBool notify); NS_IMETHOD ContainsCard(nsIAbCard *card, PRBool *hasCard); + + NS_IMETHOD GetCardForEmailAddress(const char *emailAddress, nsIAbCard **card); + NS_IMETHOD SetAnonymousStringAttribute(const char *attrname, const char *value); NS_IMETHOD GetAnonymousStringAttribute(const char *attrname, char** value); NS_IMETHOD SetAnonymousIntAttribute(const char *attrname, PRUint32 value);