From eda3aa536dc3d412c8784dac42f5fafc4fed6127 Mon Sep 17 00:00:00 2001 From: "bienvenu%netscape.com" Date: Wed, 18 Aug 1999 04:07:55 +0000 Subject: [PATCH] add method to get card given e-mail address git-svn-id: svn://10.0.0.236/trunk@43462 18797224-902f-48f8-a5cc-f745e15eee43 --- .../addrbook/public/nsIAddrDatabase.idl | 2 ++ .../mailnews/addrbook/src/nsAddrDatabase.cpp | 27 +++++++++++++++++++ .../mailnews/addrbook/src/nsAddrDatabase.h | 3 +++ 3 files changed, 32 insertions(+) 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);