зеркало из https://github.com/mozilla/pjs.git
Backout all changes from bug 360777 due to Win32 bustage.
This commit is contained in:
Родитель
eeaa7dc7bd
Коммит
96aa54e943
|
@ -2349,7 +2349,7 @@ function allowRemoteContentForSender()
|
||||||
{
|
{
|
||||||
// set the property for remote content
|
// set the property for remote content
|
||||||
cardForEmailAddress.allowRemoteContent = true;
|
cardForEmailAddress.allowRemoteContent = true;
|
||||||
addrbook.modifyCard(cardForEmailAddress);
|
cardForEmailAddress.editCardToDatabase("");
|
||||||
allowRemoteContent = true;
|
allowRemoteContent = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -237,7 +237,7 @@ function EditCardOKButton()
|
||||||
|
|
||||||
CheckAndSetCardValues(gEditCard.card, document, false);
|
CheckAndSetCardValues(gEditCard.card, document, false);
|
||||||
|
|
||||||
directory.modifyCard(gEditCard.card);
|
gEditCard.card.editCardToDatabase(gEditCard.abURI);
|
||||||
|
|
||||||
for (i=0; i < foundDirectoriesCount; i++) {
|
for (i=0; i < foundDirectoriesCount; i++) {
|
||||||
// Update the addressLists item for this card
|
// Update the addressLists item for this card
|
||||||
|
@ -245,7 +245,7 @@ function EditCardOKButton()
|
||||||
SetElementAt(foundDirectories[i].index, gEditCard.card);
|
SetElementAt(foundDirectories[i].index, gEditCard.card);
|
||||||
}
|
}
|
||||||
|
|
||||||
NotifySaveListeners(directory);
|
NotifySaveListeners();
|
||||||
|
|
||||||
// callback to allow caller to update
|
// callback to allow caller to update
|
||||||
if (gOkCallback)
|
if (gOkCallback)
|
||||||
|
@ -325,7 +325,7 @@ function RegisterSaveListener(func)
|
||||||
|
|
||||||
// this is used by people who extend the ab card dialog
|
// this is used by people who extend the ab card dialog
|
||||||
// like Netscape does for screenname
|
// like Netscape does for screenname
|
||||||
function NotifySaveListeners(directory)
|
function NotifySaveListeners()
|
||||||
{
|
{
|
||||||
if (!gOnSaveListeners.length)
|
if (!gOnSaveListeners.length)
|
||||||
return;
|
return;
|
||||||
|
@ -335,7 +335,7 @@ function NotifySaveListeners(directory)
|
||||||
|
|
||||||
// the save listeners might have tweaked the card
|
// the save listeners might have tweaked the card
|
||||||
// in which case we need to commit it.
|
// in which case we need to commit it.
|
||||||
directory.modifyCard(gEditCard.card);
|
gEditCard.card.editCardToDatabase(gEditCard.abURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
function InitPhoneticFields()
|
function InitPhoneticFields()
|
||||||
|
|
|
@ -44,7 +44,7 @@ interface nsIAbPreferMailFormat {
|
||||||
const unsigned long html = 2;
|
const unsigned long html = 2;
|
||||||
};
|
};
|
||||||
|
|
||||||
[scriptable, uuid(e4e2a043-4b06-43a3-b52b-146e155d9ec5)]
|
[scriptable, uuid(6B46BDD5-10DB-44f4-99C9-C7FFE0D3D954)]
|
||||||
interface nsIAbCard : nsISupports {
|
interface nsIAbCard : nsISupports {
|
||||||
// Card properties
|
// Card properties
|
||||||
attribute wstring firstName;
|
attribute wstring firstName;
|
||||||
|
@ -123,13 +123,17 @@ interface nsIAbCard : nsISupports {
|
||||||
|
|
||||||
void setCardValue(in string attrname, in wstring value);
|
void setCardValue(in string attrname, in wstring value);
|
||||||
|
|
||||||
/**
|
// Copies the card attributes from srcCard
|
||||||
* This function will copy all values from one card to another.
|
void copy(in nsIAbCard srcCard);
|
||||||
*
|
|
||||||
* @param srcCard The source card to copy values from.
|
|
||||||
*/
|
|
||||||
void copy(in nsIAbCard srcCard);
|
|
||||||
|
|
||||||
|
// Edits an existing card in the directory defined by 'uri'
|
||||||
|
// Rename to editCardInDirectory
|
||||||
|
// Component will be an RDF card, since it has already
|
||||||
|
// been created
|
||||||
|
//
|
||||||
|
// XXX FIX ME, this should not be a the card, it should be on the addressbook.
|
||||||
|
void editCardToDatabase(in string uri);
|
||||||
|
|
||||||
boolean equals(in nsIAbCard card);
|
boolean equals(in nsIAbCard card);
|
||||||
|
|
||||||
string convertToBase64EncodedXML();
|
string convertToBase64EncodedXML();
|
||||||
|
|
|
@ -72,7 +72,7 @@ interface nsIAbDirectoryProperties : nsISupports {
|
||||||
attribute long position;
|
attribute long position;
|
||||||
};
|
};
|
||||||
|
|
||||||
[scriptable, uuid(fe882bec-0fd8-41cf-913b-72db4ca11901)]
|
[scriptable, uuid(b81e0275-7b19-46e2-9f4a-086f1fc55080)]
|
||||||
interface nsIAbDirectory : nsISupports {
|
interface nsIAbDirectory : nsISupports {
|
||||||
|
|
||||||
// Types of operation
|
// Types of operation
|
||||||
|
@ -144,6 +144,9 @@ interface nsIAbDirectory : nsISupports {
|
||||||
// preferences
|
// preferences
|
||||||
void deleteDirectory(in nsIAbDirectory dierctory);
|
void deleteDirectory(in nsIAbDirectory dierctory);
|
||||||
|
|
||||||
|
// Delete the array of cards
|
||||||
|
void deleteCards(in nsISupportsArray cards);
|
||||||
|
|
||||||
// Check if directory contains card
|
// Check if directory contains card
|
||||||
// If the implementation is asynchronous the card
|
// If the implementation is asynchronous the card
|
||||||
// may not yet have arrived. If it is in the process
|
// may not yet have arrived. If it is in the process
|
||||||
|
@ -156,23 +159,14 @@ interface nsIAbDirectory : nsISupports {
|
||||||
boolean hasDirectory(in nsIAbDirectory dir);
|
boolean hasDirectory(in nsIAbDirectory dir);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a card to the database. card may be an abstract card.
|
* return value is the card that got added
|
||||||
*
|
* we need to do this, as the card we pass in might
|
||||||
* @return "Real" card (eg nsIAbMDBCard) that can be used for some
|
* be an abstract nsIAbCard, and the caller might need
|
||||||
* extra functions.
|
* the "real" card (the mdbcard or similar) to get / set
|
||||||
|
* non-standard card values
|
||||||
*/
|
*/
|
||||||
nsIAbCard addCard(in nsIAbCard card);
|
nsIAbCard addCard(in nsIAbCard card);
|
||||||
|
|
||||||
/**
|
|
||||||
* Modifies a card in the database to match that supplied.
|
|
||||||
*/
|
|
||||||
void modifyCard(in nsIAbCard modifiedCard);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes the array of cards from the database
|
|
||||||
*/
|
|
||||||
void deleteCards(in nsISupportsArray cards);
|
|
||||||
|
|
||||||
void dropCard(in nsIAbCard card, in boolean needToCopyCard);
|
void dropCard(in nsIAbCard card, in boolean needToCopyCard);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -236,14 +236,14 @@ function EditCardOKButton()
|
||||||
|
|
||||||
CheckAndSetCardValues(gEditCard.card, document, false);
|
CheckAndSetCardValues(gEditCard.card, document, false);
|
||||||
|
|
||||||
directory.modifyCard(gEditCard.card);
|
gEditCard.card.editCardToDatabase(gEditCard.abURI);
|
||||||
|
|
||||||
for (i=0; i<foundDirectoriesCount; i++) {
|
for (i=0; i<foundDirectoriesCount; i++) {
|
||||||
// Update the addressLists item for this card
|
// Update the addressLists item for this card
|
||||||
foundDirectories[i].directory.addressLists.
|
foundDirectories[i].directory.addressLists.
|
||||||
SetElementAt(foundDirectories[i].index, gEditCard.card);
|
SetElementAt(foundDirectories[i].index, gEditCard.card);
|
||||||
}
|
}
|
||||||
NotifySaveListeners(directory);
|
NotifySaveListeners();
|
||||||
|
|
||||||
// callback to allow caller to update
|
// callback to allow caller to update
|
||||||
if (gOkCallback)
|
if (gOkCallback)
|
||||||
|
@ -323,7 +323,7 @@ function RegisterSaveListener(func)
|
||||||
|
|
||||||
// this is used by people who extend the ab card dialog
|
// this is used by people who extend the ab card dialog
|
||||||
// like Netscape does for screenname
|
// like Netscape does for screenname
|
||||||
function NotifySaveListeners(directory)
|
function NotifySaveListeners()
|
||||||
{
|
{
|
||||||
if (!gOnSaveListeners.length)
|
if (!gOnSaveListeners.length)
|
||||||
return;
|
return;
|
||||||
|
@ -333,7 +333,7 @@ function NotifySaveListeners(directory)
|
||||||
|
|
||||||
// the save listeners might have tweaked the card
|
// the save listeners might have tweaked the card
|
||||||
// in which case we need to commit it.
|
// in which case we need to commit it.
|
||||||
directory.modifyCard(gEditCard.card);
|
gEditCard.card.editCardToDatabase(gEditCard.abURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
function InitPhoneticFields()
|
function InitPhoneticFields()
|
||||||
|
|
|
@ -190,8 +190,8 @@ NS_IMETHODIMP nsAbAddressCollecter::CollectAddress(const char *aAddress, PRBool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((setScreenName || setNames || setPreferMailFormat) && m_directory)
|
if (setScreenName || setNames || setPreferMailFormat)
|
||||||
m_directory->ModifyCard(existingCard);
|
existingCard->EditCardToDatabase(m_abURI.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
curName += strlen(curName) + 1;
|
curName += strlen(curName) + 1;
|
||||||
|
|
|
@ -1166,12 +1166,8 @@ NS_IMETHODIMP
|
||||||
nsAbCardProperty::SetLastModifiedDate(PRUint32 aLastModifiedDate)
|
nsAbCardProperty::SetLastModifiedDate(PRUint32 aLastModifiedDate)
|
||||||
{ return m_LastModDate = aLastModifiedDate; }
|
{ return m_LastModDate = aLastModifiedDate; }
|
||||||
|
|
||||||
// This function may be overriden by derived classes for
|
|
||||||
// nsAb*Card specific implementations.
|
|
||||||
NS_IMETHODIMP nsAbCardProperty::Copy(nsIAbCard* srcCard)
|
NS_IMETHODIMP nsAbCardProperty::Copy(nsIAbCard* srcCard)
|
||||||
{
|
{
|
||||||
NS_ENSURE_ARG_POINTER(srcCard);
|
|
||||||
|
|
||||||
nsXPIDLString str;
|
nsXPIDLString str;
|
||||||
srcCard->GetFirstName(getter_Copies(str));
|
srcCard->GetFirstName(getter_Copies(str));
|
||||||
SetFirstName(str);
|
SetFirstName(str);
|
||||||
|
@ -1292,15 +1288,12 @@ NS_IMETHODIMP nsAbCardProperty::Copy(nsIAbCard* srcCard)
|
||||||
srcCard->GetNotes(getter_Copies(str));
|
srcCard->GetNotes(getter_Copies(str));
|
||||||
SetNotes(str);
|
SetNotes(str);
|
||||||
|
|
||||||
PRBool isMailList;
|
return NS_OK;
|
||||||
srcCard->GetIsMailList(&isMailList);
|
}
|
||||||
SetIsMailList(isMailList);
|
|
||||||
|
|
||||||
nsXPIDLCString mailListURI;
|
NS_IMETHODIMP nsAbCardProperty::EditCardToDatabase(const char *uri)
|
||||||
srcCard->GetMailListURI(getter_Copies(mailListURI));
|
{
|
||||||
SetMailListURI(mailListURI);
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbCardProperty::Equals(nsIAbCard *card, PRBool *result)
|
NS_IMETHODIMP nsAbCardProperty::Equals(nsIAbCard *card, PRBool *result)
|
||||||
|
|
|
@ -260,10 +260,15 @@ NS_IMETHODIMP
|
||||||
nsAbDirProperty::ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties)
|
nsAbDirProperty::ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsAbDirProperty::DeleteDirectory(nsIAbDirectory *dierctory)
|
nsAbDirProperty::DeleteDirectory(nsIAbDirectory *dierctory)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsAbDirProperty::DeleteCards(nsISupportsArray *cards)
|
||||||
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsAbDirProperty::HasCard(nsIAbCard *cards, PRBool *hasCard)
|
nsAbDirProperty::HasCard(nsIAbCard *cards, PRBool *hasCard)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
@ -288,12 +293,6 @@ NS_IMETHODIMP nsAbDirProperty::EditMailListToDatabase(const char *uri, nsIAbCard
|
||||||
NS_IMETHODIMP nsAbDirProperty::AddCard(nsIAbCard *childCard, nsIAbCard **addedCard)
|
NS_IMETHODIMP nsAbDirProperty::AddCard(nsIAbCard *childCard, nsIAbCard **addedCard)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbDirProperty::ModifyCard(nsIAbCard *aModifiedCard)
|
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbDirProperty::DeleteCards(nsISupportsArray *cards)
|
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbDirProperty::DropCard(nsIAbCard *childCard, PRBool needToCopyCard)
|
NS_IMETHODIMP nsAbDirProperty::DropCard(nsIAbCard *childCard, PRBool needToCopyCard)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
|
|
@ -38,10 +38,6 @@
|
||||||
|
|
||||||
#include "nsAbLDAPCard.h"
|
#include "nsAbLDAPCard.h"
|
||||||
|
|
||||||
// XXX Although this has no real use at the moment, its planned to be
|
|
||||||
// used for writeable ldap directories as part of bug 86405 so we don't
|
|
||||||
// want to remove it just to add it back in later...
|
|
||||||
|
|
||||||
nsAbLDAPCard::nsAbLDAPCard()
|
nsAbLDAPCard::nsAbLDAPCard()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -50,5 +46,11 @@ nsAbLDAPCard::~nsAbLDAPCard()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsAbLDAPCard::EditCardToDatabase(const char *aURI)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS_INHERITED0(nsAbLDAPCard, nsAbCardProperty)
|
NS_IMPL_ISUPPORTS_INHERITED0(nsAbLDAPCard, nsAbCardProperty)
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,8 @@ class nsAbLDAPCard : public nsAbCardProperty
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
|
|
||||||
|
NS_IMETHOD EditCardToDatabase(const char *aURI);
|
||||||
|
|
||||||
nsAbLDAPCard();
|
nsAbLDAPCard();
|
||||||
virtual ~nsAbLDAPCard();
|
virtual ~nsAbLDAPCard();
|
||||||
};
|
};
|
||||||
|
|
|
@ -73,3 +73,5 @@ nsresult nsAbMDBCard::NotifyPropertyChanged(const char *property, const PRUnicha
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -129,6 +129,55 @@ NS_IMETHODIMP nsAbMDBCardProperty::GetStringAttribute(const char *name, PRUnicha
|
||||||
return mCardDatabase->GetCardValue(this, name, value);
|
return mCardDatabase->GetCardValue(this, name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsAbMDBCardProperty::EditCardToDatabase(const char *uri)
|
||||||
|
{
|
||||||
|
if (!mCardDatabase && uri)
|
||||||
|
GetCardDatabase(uri);
|
||||||
|
|
||||||
|
if (mCardDatabase)
|
||||||
|
{
|
||||||
|
mCardDatabase->EditCard(this, PR_TRUE);
|
||||||
|
mCardDatabase->Commit(nsAddrDBCommitType::kLargeCommit);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected class methods
|
||||||
|
|
||||||
|
nsresult nsAbMDBCardProperty::GetCardDatabase(const char *uri)
|
||||||
|
{
|
||||||
|
nsresult rv = NS_OK;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAddrBookSession> abSession =
|
||||||
|
do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv);
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsILocalFile> dbPath;
|
||||||
|
rv = abSession->GetUserProfileDirectory(getter_AddRefs(dbPath));
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
|
||||||
|
rv = dbPath->AppendNative(nsDependentCString(&(uri[kMDBDirectoryRootLen])));
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
PRBool fileExists;
|
||||||
|
rv = dbPath->Exists(&fileExists);
|
||||||
|
if (NS_SUCCEEDED(rv) && fileExists)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAddrDatabase> addrDBFactory =
|
||||||
|
do_GetService(NS_ADDRDATABASE_CONTRACTID, &rv);
|
||||||
|
|
||||||
|
if (NS_SUCCEEDED(rv) && addrDBFactory)
|
||||||
|
rv = addrDBFactory->Open(dbPath, PR_TRUE, PR_TRUE, getter_AddRefs(mCardDatabase));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
rv = NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbMDBCardProperty::Equals(nsIAbCard *card, PRBool *result)
|
NS_IMETHODIMP nsAbMDBCardProperty::Equals(nsIAbCard *card, PRBool *result)
|
||||||
{
|
{
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
|
|
|
@ -53,8 +53,11 @@ public:
|
||||||
nsAbMDBCardProperty(void);
|
nsAbMDBCardProperty(void);
|
||||||
virtual ~nsAbMDBCardProperty();
|
virtual ~nsAbMDBCardProperty();
|
||||||
|
|
||||||
|
NS_IMETHOD EditCardToDatabase(const char *uri);
|
||||||
NS_IMETHOD Equals(nsIAbCard *card, PRBool *result);
|
NS_IMETHOD Equals(nsIAbCard *card, PRBool *result);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
nsresult GetCardDatabase(const char *uri);
|
||||||
|
|
||||||
PRUint32 m_key;
|
PRUint32 m_key;
|
||||||
PRUint32 m_dbTableID;
|
PRUint32 m_dbTableID;
|
||||||
|
|
|
@ -698,22 +698,6 @@ NS_IMETHODIMP nsAbMDBDirectory::AddCard(nsIAbCard* card, nsIAbCard **addedCard)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbMDBDirectory::ModifyCard(nsIAbCard *aModifiedCard)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aModifiedCard);
|
|
||||||
|
|
||||||
nsresult rv;
|
|
||||||
if (!mDatabase)
|
|
||||||
{
|
|
||||||
rv = GetAbDatabase();
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = mDatabase->EditCard(aModifiedCard, PR_TRUE);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
return mDatabase->Commit(nsAddrDBCommitType::kLargeCommit);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbMDBDirectory::DropCard(nsIAbCard* aCard, PRBool needToCopyCard)
|
NS_IMETHODIMP nsAbMDBDirectory::DropCard(nsIAbCard* aCard, PRBool needToCopyCard)
|
||||||
{
|
{
|
||||||
NS_ENSURE_ARG_POINTER(aCard);
|
NS_ENSURE_ARG_POINTER(aCard);
|
||||||
|
|
|
@ -97,7 +97,6 @@ public:
|
||||||
NS_IMETHOD CreateDirectoryByURI(const PRUnichar *dirName, const char *uri, PRBool migrating);
|
NS_IMETHOD CreateDirectoryByURI(const PRUnichar *dirName, const char *uri, PRBool migrating);
|
||||||
NS_IMETHOD AddMailList(nsIAbDirectory *list);
|
NS_IMETHOD AddMailList(nsIAbDirectory *list);
|
||||||
NS_IMETHOD AddCard(nsIAbCard *card, nsIAbCard **addedCard);
|
NS_IMETHOD AddCard(nsIAbCard *card, nsIAbCard **addedCard);
|
||||||
NS_IMETHOD ModifyCard(nsIAbCard *aModifiedCard);
|
|
||||||
NS_IMETHOD DropCard(nsIAbCard *card, PRBool needToCopyCard);
|
NS_IMETHOD DropCard(nsIAbCard *card, PRBool needToCopyCard);
|
||||||
NS_IMETHOD EditMailListToDatabase(const char *uri, nsIAbCard *listCard);
|
NS_IMETHOD EditMailListToDatabase(const char *uri, nsIAbCard *listCard);
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,12 @@
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
#include "nsAbOutlookCard.h"
|
#include "nsAbOutlookCard.h"
|
||||||
|
#include "nsAbWinHelper.h"
|
||||||
|
#include "nsIPrefService.h"
|
||||||
|
#include "nsIPrefBranch.h"
|
||||||
|
#include "nsIAddrBookSession.h"
|
||||||
|
#include "nsAbBaseCID.h"
|
||||||
|
#include "nsServiceManagerUtils.h"
|
||||||
#include "nsCRT.h"
|
#include "nsCRT.h"
|
||||||
#include "prlog.h"
|
#include "prlog.h"
|
||||||
|
|
||||||
|
@ -86,6 +92,63 @@ static void wordToUnicode(WORD aWord, nsString& aUnicode)
|
||||||
aUnicode.AppendInt((PRInt32) aWord) ;
|
aUnicode.AppendInt((PRInt32) aWord) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
index_DisplayName = 0,
|
||||||
|
index_EmailAddress,
|
||||||
|
index_FirstName,
|
||||||
|
index_LastName,
|
||||||
|
index_NickName,
|
||||||
|
index_WorkPhoneNumber,
|
||||||
|
index_HomePhoneNumber,
|
||||||
|
index_WorkFaxNumber,
|
||||||
|
index_PagerNumber,
|
||||||
|
index_MobileNumber,
|
||||||
|
index_HomeCity,
|
||||||
|
index_HomeState,
|
||||||
|
index_HomeZip,
|
||||||
|
index_HomeCountry,
|
||||||
|
index_WorkCity,
|
||||||
|
index_WorkState,
|
||||||
|
index_WorkZip,
|
||||||
|
index_WorkCountry,
|
||||||
|
index_JobTitle,
|
||||||
|
index_Department,
|
||||||
|
index_Company,
|
||||||
|
index_WorkWebPage,
|
||||||
|
index_HomeWebPage,
|
||||||
|
index_Comments,
|
||||||
|
index_LastProp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
static const ULONG OutlookCardMAPIProps [] =
|
||||||
|
{
|
||||||
|
PR_DISPLAY_NAME_W,
|
||||||
|
PR_EMAIL_ADDRESS_W,
|
||||||
|
PR_GIVEN_NAME_W,
|
||||||
|
PR_SURNAME_W,
|
||||||
|
PR_NICKNAME_W,
|
||||||
|
PR_BUSINESS_TELEPHONE_NUMBER_W,
|
||||||
|
PR_HOME_TELEPHONE_NUMBER_W,
|
||||||
|
PR_BUSINESS_FAX_NUMBER_W,
|
||||||
|
PR_PAGER_TELEPHONE_NUMBER_W,
|
||||||
|
PR_MOBILE_TELEPHONE_NUMBER_W,
|
||||||
|
PR_HOME_ADDRESS_CITY_W,
|
||||||
|
PR_HOME_ADDRESS_STATE_OR_PROVINCE_W,
|
||||||
|
PR_HOME_ADDRESS_POSTAL_CODE_W,
|
||||||
|
PR_HOME_ADDRESS_COUNTRY_W,
|
||||||
|
PR_BUSINESS_ADDRESS_CITY_W,
|
||||||
|
PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_W,
|
||||||
|
PR_BUSINESS_ADDRESS_POSTAL_CODE_W,
|
||||||
|
PR_BUSINESS_ADDRESS_COUNTRY_W,
|
||||||
|
PR_TITLE_W,
|
||||||
|
PR_DEPARTMENT_NAME_W,
|
||||||
|
PR_COMPANY_NAME_W,
|
||||||
|
PR_BUSINESS_HOME_PAGE_W,
|
||||||
|
PR_PERSONAL_HOME_PAGE_W,
|
||||||
|
PR_COMMENT_W
|
||||||
|
} ;
|
||||||
|
|
||||||
nsresult nsAbOutlookCard::Init(const char *aUri)
|
nsresult nsAbOutlookCard::Init(const char *aUri)
|
||||||
{
|
{
|
||||||
nsresult retCode = nsRDFResource::Init(aUri) ;
|
nsresult retCode = nsRDFResource::Init(aUri) ;
|
||||||
|
@ -170,3 +233,125 @@ nsresult nsAbOutlookCard::Init(const char *aUri)
|
||||||
}
|
}
|
||||||
return retCode ;
|
return retCode ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void UnicodeToWord(const PRUnichar *aUnicode, WORD& aWord)
|
||||||
|
{
|
||||||
|
aWord = 0 ;
|
||||||
|
if (aUnicode == nsnull || *aUnicode == 0) { return ; }
|
||||||
|
PRInt32 errorCode = 0 ;
|
||||||
|
nsAutoString unichar (aUnicode) ;
|
||||||
|
|
||||||
|
aWord = NS_STATIC_CAST(WORD, unichar.ToInteger(&errorCode)) ;
|
||||||
|
if (errorCode != 0) {
|
||||||
|
PRINTF(("Error conversion string %S: %08x.\n", unichar.get(), errorCode)) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST "mail.addr_book.lastnamefirst"
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsAbOutlookCard::EditCardToDatabase(const char *aUru)
|
||||||
|
{
|
||||||
|
nsresult retCode = NS_OK ;
|
||||||
|
nsXPIDLString *properties = nsnull ;
|
||||||
|
nsAutoString utility ;
|
||||||
|
nsAbWinHelperGuard mapiAddBook (mAbWinType) ;
|
||||||
|
|
||||||
|
if (!mapiAddBook->IsOK()) { return NS_ERROR_FAILURE ; }
|
||||||
|
// First, all the standard properties in one go
|
||||||
|
properties = new nsXPIDLString [index_LastProp] ;
|
||||||
|
if (!properties) {
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY ;
|
||||||
|
}
|
||||||
|
GetFirstName(getter_Copies(properties [index_FirstName])) ;
|
||||||
|
GetLastName(getter_Copies(properties [index_LastName])) ;
|
||||||
|
// This triple search for something to put in the name
|
||||||
|
// is because in the case of a mailing list edition in
|
||||||
|
// Mozilla, the display name will not be provided, and
|
||||||
|
// MAPI doesn't allow that, so we fall back on an optional
|
||||||
|
// name, and when all fails, on the email address.
|
||||||
|
GetDisplayName(getter_Copies(properties [index_DisplayName])) ;
|
||||||
|
if (*properties [index_DisplayName].get() == 0) {
|
||||||
|
nsresult rv;
|
||||||
|
nsCOMPtr<nsIPrefBranch> prefBranch = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
|
||||||
|
NS_ENSURE_SUCCESS(rv,rv);
|
||||||
|
|
||||||
|
PRInt32 format;
|
||||||
|
rv = prefBranch->GetIntPref(PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST, &format);
|
||||||
|
NS_ENSURE_SUCCESS(rv,rv);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAddrBookSession> abSession = do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv);
|
||||||
|
NS_ENSURE_SUCCESS(rv,rv);
|
||||||
|
|
||||||
|
rv = abSession->GenerateNameFromCard(this, format, getter_Copies(properties [index_DisplayName]));
|
||||||
|
NS_ENSURE_SUCCESS(rv,rv);
|
||||||
|
|
||||||
|
if (*properties[index_DisplayName].get() == 0) {
|
||||||
|
GetPrimaryEmail(getter_Copies(properties [index_DisplayName])) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetDisplayName(properties [index_DisplayName]) ;
|
||||||
|
GetNickName(getter_Copies(properties [index_NickName])) ;
|
||||||
|
GetPrimaryEmail(getter_Copies(properties [index_EmailAddress])) ;
|
||||||
|
GetWorkPhone(getter_Copies(properties [index_WorkPhoneNumber])) ;
|
||||||
|
GetHomePhone(getter_Copies(properties [index_HomePhoneNumber])) ;
|
||||||
|
GetFaxNumber(getter_Copies(properties [index_WorkFaxNumber])) ;
|
||||||
|
GetPagerNumber(getter_Copies(properties [index_PagerNumber])) ;
|
||||||
|
GetCellularNumber(getter_Copies(properties [index_MobileNumber])) ;
|
||||||
|
GetHomeCity(getter_Copies(properties [index_HomeCity])) ;
|
||||||
|
GetHomeState(getter_Copies(properties [index_HomeState])) ;
|
||||||
|
GetHomeZipCode(getter_Copies(properties [index_HomeZip])) ;
|
||||||
|
GetHomeCountry(getter_Copies(properties [index_HomeCountry])) ;
|
||||||
|
GetWorkCity(getter_Copies(properties [index_WorkCity])) ;
|
||||||
|
GetWorkState(getter_Copies(properties [index_WorkState])) ;
|
||||||
|
GetWorkZipCode(getter_Copies(properties [index_WorkZip])) ;
|
||||||
|
GetWorkCountry(getter_Copies(properties [index_WorkCountry])) ;
|
||||||
|
GetJobTitle(getter_Copies(properties [index_JobTitle])) ;
|
||||||
|
GetDepartment(getter_Copies(properties [index_Department])) ;
|
||||||
|
GetCompany(getter_Copies(properties [index_Company])) ;
|
||||||
|
GetWebPage1(getter_Copies(properties [index_WorkWebPage])) ;
|
||||||
|
GetWebPage2(getter_Copies(properties [index_HomeWebPage])) ;
|
||||||
|
GetNotes(getter_Copies(properties [index_Comments])) ;
|
||||||
|
if (!mapiAddBook->SetPropertiesUString(*mMapiData, OutlookCardMAPIProps,
|
||||||
|
index_LastProp, properties)) {
|
||||||
|
PRINTF(("Cannot set general properties.\n")) ;
|
||||||
|
}
|
||||||
|
delete [] properties ;
|
||||||
|
nsXPIDLString unichar ;
|
||||||
|
nsXPIDLString unichar2 ;
|
||||||
|
WORD year = 0 ;
|
||||||
|
WORD month = 0 ;
|
||||||
|
WORD day = 0 ;
|
||||||
|
|
||||||
|
GetHomeAddress(getter_Copies(unichar)) ;
|
||||||
|
GetHomeAddress2(getter_Copies(unichar2)) ;
|
||||||
|
utility.Assign(unichar.get()) ;
|
||||||
|
if (!utility.IsEmpty()) { utility.AppendWithConversion(CRLF) ; }
|
||||||
|
utility.Append(unichar2.get()) ;
|
||||||
|
if (!mapiAddBook->SetPropertyUString(*mMapiData, PR_HOME_ADDRESS_STREET_W, utility.get())) {
|
||||||
|
PRINTF(("Cannot set home address.\n")) ;
|
||||||
|
}
|
||||||
|
GetWorkAddress(getter_Copies(unichar)) ;
|
||||||
|
GetWorkAddress2(getter_Copies(unichar2)) ;
|
||||||
|
utility.Assign(unichar.get()) ;
|
||||||
|
if (!utility.IsEmpty()) { utility.AppendWithConversion(CRLF) ; }
|
||||||
|
utility.Append(unichar2.get()) ;
|
||||||
|
if (!mapiAddBook->SetPropertyUString(*mMapiData, PR_BUSINESS_ADDRESS_STREET_W, utility.get())) {
|
||||||
|
PRINTF(("Cannot set work address.\n")) ;
|
||||||
|
}
|
||||||
|
GetBirthYear(getter_Copies(unichar)) ;
|
||||||
|
UnicodeToWord(unichar.get(), year) ;
|
||||||
|
GetBirthMonth(getter_Copies(unichar)) ;
|
||||||
|
UnicodeToWord(unichar.get(), month) ;
|
||||||
|
GetBirthDay(getter_Copies(unichar)) ;
|
||||||
|
UnicodeToWord(unichar.get(), day) ;
|
||||||
|
if (!mapiAddBook->SetPropertyDate(*mMapiData, PR_BIRTHDAY, year, month, day)) {
|
||||||
|
PRINTF(("Cannot set date.\n")) ;
|
||||||
|
}
|
||||||
|
return retCode ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,67 +40,9 @@
|
||||||
|
|
||||||
#include "nsRDFResource.h"
|
#include "nsRDFResource.h"
|
||||||
#include "nsAbCardProperty.h"
|
#include "nsAbCardProperty.h"
|
||||||
#include "nsAbWinHelper.h"
|
|
||||||
|
|
||||||
struct nsMapiEntry ;
|
struct nsMapiEntry ;
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
index_DisplayName = 0,
|
|
||||||
index_EmailAddress,
|
|
||||||
index_FirstName,
|
|
||||||
index_LastName,
|
|
||||||
index_NickName,
|
|
||||||
index_WorkPhoneNumber,
|
|
||||||
index_HomePhoneNumber,
|
|
||||||
index_WorkFaxNumber,
|
|
||||||
index_PagerNumber,
|
|
||||||
index_MobileNumber,
|
|
||||||
index_HomeCity,
|
|
||||||
index_HomeState,
|
|
||||||
index_HomeZip,
|
|
||||||
index_HomeCountry,
|
|
||||||
index_WorkCity,
|
|
||||||
index_WorkState,
|
|
||||||
index_WorkZip,
|
|
||||||
index_WorkCountry,
|
|
||||||
index_JobTitle,
|
|
||||||
index_Department,
|
|
||||||
index_Company,
|
|
||||||
index_WorkWebPage,
|
|
||||||
index_HomeWebPage,
|
|
||||||
index_Comments,
|
|
||||||
index_LastProp
|
|
||||||
} ;
|
|
||||||
|
|
||||||
static const ULONG OutlookCardMAPIProps [] =
|
|
||||||
{
|
|
||||||
PR_DISPLAY_NAME_W,
|
|
||||||
PR_EMAIL_ADDRESS_W,
|
|
||||||
PR_GIVEN_NAME_W,
|
|
||||||
PR_SURNAME_W,
|
|
||||||
PR_NICKNAME_W,
|
|
||||||
PR_BUSINESS_TELEPHONE_NUMBER_W,
|
|
||||||
PR_HOME_TELEPHONE_NUMBER_W,
|
|
||||||
PR_BUSINESS_FAX_NUMBER_W,
|
|
||||||
PR_PAGER_TELEPHONE_NUMBER_W,
|
|
||||||
PR_MOBILE_TELEPHONE_NUMBER_W,
|
|
||||||
PR_HOME_ADDRESS_CITY_W,
|
|
||||||
PR_HOME_ADDRESS_STATE_OR_PROVINCE_W,
|
|
||||||
PR_HOME_ADDRESS_POSTAL_CODE_W,
|
|
||||||
PR_HOME_ADDRESS_COUNTRY_W,
|
|
||||||
PR_BUSINESS_ADDRESS_CITY_W,
|
|
||||||
PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_W,
|
|
||||||
PR_BUSINESS_ADDRESS_POSTAL_CODE_W,
|
|
||||||
PR_BUSINESS_ADDRESS_COUNTRY_W,
|
|
||||||
PR_TITLE_W,
|
|
||||||
PR_DEPARTMENT_NAME_W,
|
|
||||||
PR_COMPANY_NAME_W,
|
|
||||||
PR_BUSINESS_HOME_PAGE_W,
|
|
||||||
PR_PERSONAL_HOME_PAGE_W,
|
|
||||||
PR_COMMENT_W
|
|
||||||
} ;
|
|
||||||
|
|
||||||
class nsAbOutlookCard : public nsRDFResource,
|
class nsAbOutlookCard : public nsRDFResource,
|
||||||
public nsAbCardProperty
|
public nsAbCardProperty
|
||||||
{
|
{
|
||||||
|
@ -112,6 +54,8 @@ public:
|
||||||
|
|
||||||
// nsIRDFResource method
|
// nsIRDFResource method
|
||||||
NS_IMETHOD Init(const char *aUri) ;
|
NS_IMETHOD Init(const char *aUri) ;
|
||||||
|
// nsIAbCard methods
|
||||||
|
NS_IMETHOD EditCardToDatabase(const char *aUri) ;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
nsMapiEntry *mMapiData ;
|
nsMapiEntry *mMapiData ;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
*
|
*
|
||||||
|
@ -43,7 +43,6 @@
|
||||||
|
|
||||||
#include "nsAbBaseCID.h"
|
#include "nsAbBaseCID.h"
|
||||||
#include "nsIAbCard.h"
|
#include "nsIAbCard.h"
|
||||||
#include "nsAbOutlookCard.h"
|
|
||||||
#include "nsXPIDLString.h"
|
#include "nsXPIDLString.h"
|
||||||
#include "nsAbDirectoryQuery.h"
|
#include "nsAbDirectoryQuery.h"
|
||||||
#include "nsIAbBooleanExpression.h"
|
#include "nsIAbBooleanExpression.h"
|
||||||
|
@ -58,8 +57,6 @@
|
||||||
#include "nsCRT.h"
|
#include "nsCRT.h"
|
||||||
#include "prlog.h"
|
#include "prlog.h"
|
||||||
#include "prthread.h"
|
#include "prthread.h"
|
||||||
#include "nsIPrefService.h"
|
|
||||||
#include "nsIPrefBranch.h"
|
|
||||||
|
|
||||||
#ifdef PR_LOGGING
|
#ifdef PR_LOGGING
|
||||||
static PRLogModuleInfo* gAbOutlookDirectoryLog
|
static PRLogModuleInfo* gAbOutlookDirectoryLog
|
||||||
|
@ -119,7 +116,7 @@ NS_IMETHODIMP nsAbOutlookDirectory::Init(const char *aUri)
|
||||||
|
|
||||||
mAbWinType = getAbWinType(kOutlookDirectoryScheme, mURINoQuery.get(), stub, entry) ;
|
mAbWinType = getAbWinType(kOutlookDirectoryScheme, mURINoQuery.get(), stub, entry) ;
|
||||||
if (mAbWinType == nsAbWinType_Unknown) {
|
if (mAbWinType == nsAbWinType_Unknown) {
|
||||||
PRINTF(("Huge problem URI=%s.\n", mURINoQuery))
|
PRINTF(("Huge problem URI=%s.\n", mURINoQuery)) ;
|
||||||
return NS_ERROR_INVALID_ARG ;
|
return NS_ERROR_INVALID_ARG ;
|
||||||
}
|
}
|
||||||
nsAbWinHelperGuard mapiAddBook (mAbWinType) ;
|
nsAbWinHelperGuard mapiAddBook (mAbWinType) ;
|
||||||
|
@ -130,11 +127,11 @@ NS_IMETHODIMP nsAbOutlookDirectory::Init(const char *aUri)
|
||||||
if (!mapiAddBook->IsOK()) { return NS_ERROR_FAILURE ; }
|
if (!mapiAddBook->IsOK()) { return NS_ERROR_FAILURE ; }
|
||||||
mMapiData->Assign(entry) ;
|
mMapiData->Assign(entry) ;
|
||||||
if (!mapiAddBook->GetPropertyLong(*mMapiData, PR_OBJECT_TYPE, objectType)) {
|
if (!mapiAddBook->GetPropertyLong(*mMapiData, PR_OBJECT_TYPE, objectType)) {
|
||||||
PRINTF(("Cannot get type.\n"))
|
PRINTF(("Cannot get type.\n")) ;
|
||||||
return NS_ERROR_FAILURE ;
|
return NS_ERROR_FAILURE ;
|
||||||
}
|
}
|
||||||
if (!mapiAddBook->GetPropertyUString(*mMapiData, PR_DISPLAY_NAME_W, unichars)) {
|
if (!mapiAddBook->GetPropertyUString(*mMapiData, PR_DISPLAY_NAME_W, unichars)) {
|
||||||
PRINTF(("Cannot get name.\n"))
|
PRINTF(("Cannot get name.\n")) ;
|
||||||
return NS_ERROR_FAILURE ;
|
return NS_ERROR_FAILURE ;
|
||||||
}
|
}
|
||||||
if (mAbWinType == nsAbWinType_Outlook) { prefix.AssignLiteral("OP ") ; }
|
if (mAbWinType == nsAbWinType_Outlook) { prefix.AssignLiteral("OP ") ; }
|
||||||
|
@ -337,7 +334,7 @@ NS_IMETHODIMP nsAbOutlookDirectory::DeleteCards(nsISupportsArray *aCardList)
|
||||||
|
|
||||||
cardEntry.Assign(entryString) ;
|
cardEntry.Assign(entryString) ;
|
||||||
if (!mapiAddBook->DeleteEntry(*mMapiData, cardEntry)) {
|
if (!mapiAddBook->DeleteEntry(*mMapiData, cardEntry)) {
|
||||||
PRINTF(("Cannot delete card %s.\n", entryString.get()))
|
PRINTF(("Cannot delete card %s.\n", entryString.get())) ;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nsVoidKey key (NS_STATIC_CAST(void *, element)) ;
|
nsVoidKey key (NS_STATIC_CAST(void *, element)) ;
|
||||||
|
@ -349,7 +346,7 @@ NS_IMETHODIMP nsAbOutlookDirectory::DeleteCards(nsISupportsArray *aCardList)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PRINTF(("Card doesn't belong in this directory.\n"))
|
PRINTF(("Card doesn't belong in this directory.\n")) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NS_OK ;
|
return NS_OK ;
|
||||||
|
@ -376,7 +373,7 @@ NS_IMETHODIMP nsAbOutlookDirectory::DeleteDirectory(nsIAbDirectory *aDirectory)
|
||||||
|
|
||||||
directoryEntry.Assign(entryString) ;
|
directoryEntry.Assign(entryString) ;
|
||||||
if (!mapiAddBook->DeleteEntry(*mMapiData, directoryEntry)) {
|
if (!mapiAddBook->DeleteEntry(*mMapiData, directoryEntry)) {
|
||||||
PRINTF(("Cannot delete directory %s.\n", entryString.get()))
|
PRINTF(("Cannot delete directory %s.\n", entryString.get())) ;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_AddressList->RemoveElement(aDirectory) ;
|
m_AddressList->RemoveElement(aDirectory) ;
|
||||||
|
@ -385,7 +382,7 @@ NS_IMETHODIMP nsAbOutlookDirectory::DeleteDirectory(nsIAbDirectory *aDirectory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PRINTF(("Directory doesn't belong to this folder.\n"))
|
PRINTF(("Directory doesn't belong to this folder.\n")) ;
|
||||||
}
|
}
|
||||||
return retCode ;
|
return retCode ;
|
||||||
}
|
}
|
||||||
|
@ -403,7 +400,7 @@ NS_IMETHODIMP nsAbOutlookDirectory::AddCard(nsIAbCard *aData, nsIAbCard **addedC
|
||||||
retCode = HasCard(aData, &hasCard) ;
|
retCode = HasCard(aData, &hasCard) ;
|
||||||
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
||||||
if (hasCard) {
|
if (hasCard) {
|
||||||
PRINTF(("Has card.\n"))
|
PRINTF(("Has card.\n")) ;
|
||||||
NS_IF_ADDREF(*addedCard = aData);
|
NS_IF_ADDREF(*addedCard = aData);
|
||||||
return NS_OK ;
|
return NS_OK ;
|
||||||
}
|
}
|
||||||
|
@ -737,11 +734,11 @@ static nsresult BuildRestriction(nsIAbBooleanExpression *aLevel,
|
||||||
retCode = expressions->Count(&nbExpressions) ;
|
retCode = expressions->Count(&nbExpressions) ;
|
||||||
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
||||||
if (nbExpressions == 0) {
|
if (nbExpressions == 0) {
|
||||||
PRINTF(("Error, no expressions.\n"))
|
PRINTF(("Error, no expressions.\n")) ;
|
||||||
return NS_OK ;
|
return NS_OK ;
|
||||||
}
|
}
|
||||||
if (operationType == nsIAbBooleanOperationTypes::NOT && nbExpressions != 1) {
|
if (operationType == nsIAbBooleanOperationTypes::NOT && nbExpressions != 1) {
|
||||||
PRINTF(("Error, unary operation NOT with multiple operands.\n"))
|
PRINTF(("Error, unary operation NOT with multiple operands.\n")) ;
|
||||||
return NS_OK ;
|
return NS_OK ;
|
||||||
}
|
}
|
||||||
LPSRestriction restrictionArray = new SRestriction [nbExpressions] ;
|
LPSRestriction restrictionArray = new SRestriction [nbExpressions] ;
|
||||||
|
@ -760,7 +757,7 @@ static nsresult BuildRestriction(nsIAbBooleanExpression *aLevel,
|
||||||
if (NS_SUCCEEDED(retCode)) {
|
if (NS_SUCCEEDED(retCode)) {
|
||||||
if (!skipItem) { ++ restrictionArray ; ++ realNbExpressions ; }
|
if (!skipItem) { ++ restrictionArray ; ++ realNbExpressions ; }
|
||||||
}
|
}
|
||||||
else { PRINTF(("Cannot build restriction for item %d %08x.\n", i, retCode)) }
|
else { PRINTF(("Cannot build restriction for item %d %08x.\n", i, retCode)) ; }
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nsCOMPtr<nsIAbBooleanExpression> subExpression (do_QueryInterface(element, &retCode)) ;
|
nsCOMPtr<nsIAbBooleanExpression> subExpression (do_QueryInterface(element, &retCode)) ;
|
||||||
|
@ -773,12 +770,10 @@ static nsresult BuildRestriction(nsIAbBooleanExpression *aLevel,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else { PRINTF(("Cannot get interface for item %d %08x.\n", i, retCode)) ; }
|
||||||
PRINTF(("Cannot get interface for item %d %08x.\n", i, retCode));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else { PRINTF(("Cannot get item %d %08x.\n", i, retCode)) ; }
|
||||||
PRINTF(("Cannot get item %d %08x.\n", i, retCode));
|
|
||||||
}
|
}
|
||||||
restrictionArray -= realNbExpressions ;
|
restrictionArray -= realNbExpressions ;
|
||||||
if (realNbExpressions > 1) {
|
if (realNbExpressions > 1) {
|
||||||
|
@ -792,8 +787,9 @@ static nsresult BuildRestriction(nsIAbBooleanExpression *aLevel,
|
||||||
aRestriction.res.resAnd.lpRes = restrictionArray ;
|
aRestriction.res.resAnd.lpRes = restrictionArray ;
|
||||||
aRestriction.res.resAnd.cRes = realNbExpressions ;
|
aRestriction.res.resAnd.cRes = realNbExpressions ;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
PRINTF(("Unsupported operation %d.\n", operationType));
|
PRINTF(("Unsupported operation %d.\n", operationType)) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (realNbExpressions == 1) {
|
else if (realNbExpressions == 1) {
|
||||||
if (operationType == nsIAbBooleanOperationTypes::NOT) {
|
if (operationType == nsIAbBooleanOperationTypes::NOT) {
|
||||||
|
@ -1132,7 +1128,7 @@ nsresult nsAbOutlookDirectory::GetChildCards(nsISupportsArray **aCards,
|
||||||
retCode = NS_NewISupportsArray(getter_AddRefs(cards)) ;
|
retCode = NS_NewISupportsArray(getter_AddRefs(cards)) ;
|
||||||
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
||||||
if (!mapiAddBook->GetCards(*mMapiData, restriction, cardEntries)) {
|
if (!mapiAddBook->GetCards(*mMapiData, restriction, cardEntries)) {
|
||||||
PRINTF(("Cannot get cards.\n"))
|
PRINTF(("Cannot get cards.\n")) ;
|
||||||
return NS_ERROR_FAILURE ;
|
return NS_ERROR_FAILURE ;
|
||||||
}
|
}
|
||||||
nsCAutoString entryId ;
|
nsCAutoString entryId ;
|
||||||
|
@ -1170,7 +1166,7 @@ nsresult nsAbOutlookDirectory::GetChildNodes(nsISupportsArray **aNodes)
|
||||||
retCode = NS_NewISupportsArray(getter_AddRefs(nodes)) ;
|
retCode = NS_NewISupportsArray(getter_AddRefs(nodes)) ;
|
||||||
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
||||||
if (!mapiAddBook->GetNodes(*mMapiData, nodeEntries)) {
|
if (!mapiAddBook->GetNodes(*mMapiData, nodeEntries)) {
|
||||||
PRINTF(("Cannot get nodes.\n"))
|
PRINTF(("Cannot get nodes.\n")) ;
|
||||||
return NS_ERROR_FAILURE ;
|
return NS_ERROR_FAILURE ;
|
||||||
}
|
}
|
||||||
nsCAutoString entryId ;
|
nsCAutoString entryId ;
|
||||||
|
@ -1221,7 +1217,7 @@ nsresult nsAbOutlookDirectory::CommitAddressList(void)
|
||||||
PRUint32 i = 0 ;
|
PRUint32 i = 0 ;
|
||||||
|
|
||||||
if (!m_IsMailList) {
|
if (!m_IsMailList) {
|
||||||
PRINTF(("We are not in a mailing list, no commit can be done.\n"))
|
PRINTF(("We are not in a mailing list, no commit can be done.\n")) ;
|
||||||
return NS_ERROR_UNEXPECTED ;
|
return NS_ERROR_UNEXPECTED ;
|
||||||
}
|
}
|
||||||
retCode = GetChildCards(getter_AddRefs(oldList), nsnull) ;
|
retCode = GetChildCards(getter_AddRefs(oldList), nsnull) ;
|
||||||
|
@ -1338,138 +1334,10 @@ nsresult nsAbOutlookDirectory::CreateCard(nsIAbCard *aData, nsIAbCard **aNewCard
|
||||||
if (!didCopy) {
|
if (!didCopy) {
|
||||||
retCode = newCard->Copy(aData) ;
|
retCode = newCard->Copy(aData) ;
|
||||||
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
||||||
retCode = ModifyCard(newCard) ;
|
retCode = newCard->EditCardToDatabase(mURINoQuery.get()) ;
|
||||||
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
NS_ENSURE_SUCCESS(retCode, retCode) ;
|
||||||
}
|
}
|
||||||
*aNewCard = newCard ;
|
*aNewCard = newCard ;
|
||||||
NS_ADDREF(*aNewCard) ;
|
NS_ADDREF(*aNewCard) ;
|
||||||
return retCode ;
|
return retCode ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UnicodeToWord(const PRUnichar *aUnicode, WORD& aWord)
|
|
||||||
{
|
|
||||||
aWord = 0 ;
|
|
||||||
if (aUnicode == nsnull || *aUnicode == 0) { return ; }
|
|
||||||
PRInt32 errorCode = 0 ;
|
|
||||||
nsAutoString unichar (aUnicode) ;
|
|
||||||
|
|
||||||
aWord = NS_STATIC_CAST(WORD, unichar.ToInteger(&errorCode)) ;
|
|
||||||
if (errorCode != 0) {
|
|
||||||
PRINTF(("Error conversion string %S: %08x.\n", unichar.get(), errorCode))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST "mail.addr_book.lastnamefirst"
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsAbOutlookDirectory::ModifyCard(nsIAbCard *aModifiedCard)
|
|
||||||
{
|
|
||||||
NS_ENSURE_ARG_POINTER(aModifiedCard);
|
|
||||||
|
|
||||||
nsresult retCode = NS_OK;
|
|
||||||
nsXPIDLString *properties = nsnull;
|
|
||||||
nsAutoString utility;
|
|
||||||
nsAbWinHelperGuard mapiAddBook(mAbWinType);
|
|
||||||
|
|
||||||
if (!mapiAddBook->IsOK())
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
// First, all the standard properties in one go
|
|
||||||
properties = new nsXPIDLString[index_LastProp];
|
|
||||||
if (!properties) {
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
aModifiedCard->GetFirstName(getter_Copies(properties[index_FirstName]));
|
|
||||||
aModifiedCard->GetLastName(getter_Copies(properties[index_LastName]));
|
|
||||||
// This triple search for something to put in the name
|
|
||||||
// is because in the case of a mailing list edition in
|
|
||||||
// Mozilla, the display name will not be provided, and
|
|
||||||
// MAPI doesn't allow that, so we fall back on an optional
|
|
||||||
// name, and when all fails, on the email address.
|
|
||||||
aModifiedCard->GetDisplayName(getter_Copies(properties[index_DisplayName]));
|
|
||||||
if (*properties[index_DisplayName].get() == 0) {
|
|
||||||
nsresult rv;
|
|
||||||
nsCOMPtr<nsIPrefBranch> prefBranch =
|
|
||||||
do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
|
|
||||||
NS_ENSURE_SUCCESS(rv,rv);
|
|
||||||
|
|
||||||
PRInt32 format;
|
|
||||||
rv = prefBranch->GetIntPref(PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST, &format);
|
|
||||||
NS_ENSURE_SUCCESS(rv,rv);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIAddrBookSession> abSession =
|
|
||||||
do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv);
|
|
||||||
NS_ENSURE_SUCCESS(rv,rv);
|
|
||||||
|
|
||||||
rv = abSession->GenerateNameFromCard(aModifiedCard, format, getter_Copies(properties [index_DisplayName]));
|
|
||||||
NS_ENSURE_SUCCESS(rv,rv);
|
|
||||||
|
|
||||||
if (*properties[index_DisplayName].get() == 0) {
|
|
||||||
aModifiedCard->GetPrimaryEmail(getter_Copies(properties[index_DisplayName]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
aModifiedCard->SetDisplayName(properties[index_DisplayName]);
|
|
||||||
aModifiedCard->GetNickName(getter_Copies(properties[index_NickName]));
|
|
||||||
aModifiedCard->GetPrimaryEmail(getter_Copies(properties[index_EmailAddress]));
|
|
||||||
aModifiedCard->GetWorkPhone(getter_Copies(properties[index_WorkPhoneNumber]));
|
|
||||||
aModifiedCard->GetHomePhone(getter_Copies(properties[index_HomePhoneNumber]));
|
|
||||||
aModifiedCard->GetFaxNumber(getter_Copies(properties[index_WorkFaxNumber]));
|
|
||||||
aModifiedCard->GetPagerNumber(getter_Copies(properties[index_PagerNumber]));
|
|
||||||
aModifiedCard->GetCellularNumber(getter_Copies(properties[index_MobileNumber]));
|
|
||||||
aModifiedCard->GetHomeCity(getter_Copies(properties[index_HomeCity]));
|
|
||||||
aModifiedCard->GetHomeState(getter_Copies(properties[index_HomeState]));
|
|
||||||
aModifiedCard->GetHomeZipCode(getter_Copies(properties[index_HomeZip]));
|
|
||||||
aModifiedCard->GetHomeCountry(getter_Copies(properties[index_HomeCountry]));
|
|
||||||
aModifiedCard->GetWorkCity(getter_Copies(properties[index_WorkCity]));
|
|
||||||
aModifiedCard->GetWorkState(getter_Copies(properties[index_WorkState]));
|
|
||||||
aModifiedCard->GetWorkZipCode(getter_Copies(properties[index_WorkZip]));
|
|
||||||
aModifiedCard->GetWorkCountry(getter_Copies(properties[index_WorkCountry]));
|
|
||||||
aModifiedCard->GetJobTitle(getter_Copies(properties[index_JobTitle]));
|
|
||||||
aModifiedCard->GetDepartment(getter_Copies(properties[index_Department]));
|
|
||||||
aModifiedCard->GetCompany(getter_Copies(properties[index_Company]));
|
|
||||||
aModifiedCard->GetWebPage1(getter_Copies(properties[index_WorkWebPage]));
|
|
||||||
aModifiedCard->GetWebPage2(getter_Copies(properties[index_HomeWebPage]));
|
|
||||||
aModifiedCard->GetNotes(getter_Copies(properties[index_Comments]));
|
|
||||||
if (!mapiAddBook->SetPropertiesUString(*mMapiData, OutlookCardMAPIProps,
|
|
||||||
index_LastProp, properties))
|
|
||||||
PRINTF(("Cannot set general properties.\n"))
|
|
||||||
|
|
||||||
delete [] properties;
|
|
||||||
nsXPIDLString unichar;
|
|
||||||
nsXPIDLString unichar2;
|
|
||||||
WORD year = 0;
|
|
||||||
WORD month = 0;
|
|
||||||
WORD day = 0;
|
|
||||||
|
|
||||||
aModifiedCard->GetHomeAddress(getter_Copies(unichar));
|
|
||||||
aModifiedCard->GetHomeAddress2(getter_Copies(unichar2));
|
|
||||||
|
|
||||||
utility.Assign(unichar.get());
|
|
||||||
if (!utility.IsEmpty())
|
|
||||||
utility.AppendWithConversion(CRLF);
|
|
||||||
|
|
||||||
utility.Append(unichar2.get());
|
|
||||||
if (!mapiAddBook->SetPropertyUString(*mMapiData, PR_HOME_ADDRESS_STREET_W, utility.get()))
|
|
||||||
PRINTF(("Cannot set home address.\n"))
|
|
||||||
|
|
||||||
aModifiedCard->GetWorkAddress(getter_Copies(unichar));
|
|
||||||
aModifiedCard->GetWorkAddress2(getter_Copies(unichar2));
|
|
||||||
|
|
||||||
utility.Assign(unichar.get());
|
|
||||||
if (!utility.IsEmpty())
|
|
||||||
utility.AppendWithConversion(CRLF);
|
|
||||||
|
|
||||||
utility.Append(unichar2.get());
|
|
||||||
if (!mapiAddBook->SetPropertyUString(*mMapiData, PR_BUSINESS_ADDRESS_STREET_W, utility.get()))
|
|
||||||
PRINTF(("Cannot set work address.\n"))
|
|
||||||
|
|
||||||
aModifiedCard->GetBirthYear(getter_Copies(unichar));
|
|
||||||
UnicodeToWord(unichar.get(), year);
|
|
||||||
aModifiedCard->GetBirthMonth(getter_Copies(unichar));
|
|
||||||
UnicodeToWord(unichar.get(), month);
|
|
||||||
aModifiedCard->GetBirthDay(getter_Copies(unichar));
|
|
||||||
UnicodeToWord(unichar.get(), day);
|
|
||||||
if (!mapiAddBook->SetPropertyDate(*mMapiData, PR_BIRTHDAY, year, month, day))
|
|
||||||
PRINTF(("Cannot set date.\n"))
|
|
||||||
|
|
||||||
return retCode;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
*
|
*
|
||||||
|
@ -58,64 +58,63 @@ class nsAbOutlookDirectory : public nsAbDirectoryRDFResource, // nsIRDFResource
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
|
|
||||||
nsAbOutlookDirectory(void);
|
nsAbOutlookDirectory(void) ;
|
||||||
virtual ~nsAbOutlookDirectory(void);
|
virtual ~nsAbOutlookDirectory(void) ;
|
||||||
|
|
||||||
// nsAbDirProperty methods
|
// nsAbDirProperty methods
|
||||||
NS_IMETHOD GetURI(nsACString &aURI);
|
NS_IMETHOD GetURI(nsACString &aURI);
|
||||||
NS_IMETHOD GetChildCards(nsISimpleEnumerator **aCards);
|
NS_IMETHOD GetChildCards(nsISimpleEnumerator **aCards) ;
|
||||||
NS_IMETHOD GetChildNodes(nsISimpleEnumerator **aNodes);
|
NS_IMETHOD GetChildNodes(nsISimpleEnumerator **aNodes) ;
|
||||||
NS_IMETHOD HasCard(nsIAbCard *aCard, PRBool *aHasCard);
|
NS_IMETHOD HasCard(nsIAbCard *aCard, PRBool *aHasCard) ;
|
||||||
NS_IMETHOD HasDirectory(nsIAbDirectory *aDirectory, PRBool *aHasDirectory);
|
NS_IMETHOD HasDirectory(nsIAbDirectory *aDirectory, PRBool *aHasDirectory) ;
|
||||||
NS_IMETHOD DeleteCards(nsISupportsArray *aCardList);
|
NS_IMETHOD DeleteCards(nsISupportsArray *aCardList) ;
|
||||||
NS_IMETHOD ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties);
|
NS_IMETHOD ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties);
|
||||||
NS_IMETHOD DeleteDirectory(nsIAbDirectory *aDirectory);
|
NS_IMETHOD DeleteDirectory(nsIAbDirectory *aDirectory) ;
|
||||||
NS_IMETHOD AddCard(nsIAbCard *aData, nsIAbCard **addedCard);
|
NS_IMETHOD AddCard(nsIAbCard *aData, nsIAbCard **addedCard);
|
||||||
NS_IMETHOD ModifyCard(nsIAbCard *aModifiedCard);
|
|
||||||
NS_IMETHOD DropCard(nsIAbCard *aData, PRBool needToCopyCard);
|
NS_IMETHOD DropCard(nsIAbCard *aData, PRBool needToCopyCard);
|
||||||
NS_IMETHOD AddMailList(nsIAbDirectory *aMailList);
|
NS_IMETHOD AddMailList(nsIAbDirectory *aMailList) ;
|
||||||
NS_IMETHOD EditMailListToDatabase(const char *aUri, nsIAbCard *listCard);
|
NS_IMETHOD EditMailListToDatabase(const char *aUri, nsIAbCard *listCard) ;
|
||||||
|
|
||||||
// nsAbDirectoryRDFResource method
|
// nsAbDirectoryRDFResource method
|
||||||
NS_IMETHOD Init(const char *aUri);
|
NS_IMETHOD Init(const char *aUri) ;
|
||||||
// nsIAbDirectoryQuery methods
|
// nsIAbDirectoryQuery methods
|
||||||
NS_DECL_NSIABDIRECTORYQUERY
|
NS_DECL_NSIABDIRECTORYQUERY
|
||||||
// nsIAbDirectorySearch methods
|
// nsIAbDirectorySearch methods
|
||||||
NS_DECL_NSIABDIRECTORYSEARCH
|
NS_DECL_NSIABDIRECTORYSEARCH
|
||||||
// nsAbDirSearchListenerContext methods
|
// nsAbDirSearchListenerContext methods
|
||||||
nsresult OnSearchFinished(PRInt32 aResult);
|
nsresult OnSearchFinished(PRInt32 aResult) ;
|
||||||
nsresult OnSearchFoundCard(nsIAbCard *aCard);
|
nsresult OnSearchFoundCard(nsIAbCard *aCard) ;
|
||||||
// Perform a MAPI query (function executed in a separate thread)
|
// Perform a MAPI query (function executed in a separate thread)
|
||||||
nsresult ExecuteQuery(nsIAbDirectoryQueryArguments *aArguments,
|
nsresult ExecuteQuery(nsIAbDirectoryQueryArguments *aArguments,
|
||||||
nsIAbDirectoryQueryResultListener *aListener,
|
nsIAbDirectoryQueryResultListener *aListener,
|
||||||
PRInt32 aResultLimit, PRInt32 aTimeout,
|
PRInt32 aResultLimit, PRInt32 aTimeout,
|
||||||
PRInt32 aThreadId);
|
PRInt32 aThreadId) ;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Retrieve hierarchy as cards, with an optional restriction
|
// Retrieve hierarchy as cards, with an optional restriction
|
||||||
nsresult GetChildCards(nsISupportsArray **aCards, void *aRestriction);
|
nsresult GetChildCards(nsISupportsArray **aCards, void *aRestriction) ;
|
||||||
// Retrieve hierarchy as directories
|
// Retrieve hierarchy as directories
|
||||||
nsresult GetChildNodes(nsISupportsArray **aNodes);
|
nsresult GetChildNodes(nsISupportsArray **aNodes) ;
|
||||||
// Create a new card
|
// Create a new card
|
||||||
nsresult CreateCard(nsIAbCard *aData, nsIAbCard **aNewCard);
|
nsresult CreateCard(nsIAbCard *aData, nsIAbCard **aNewCard) ;
|
||||||
// Notification for the UI
|
// Notification for the UI
|
||||||
nsresult NotifyItemDeletion(nsISupports *aItem);
|
nsresult NotifyItemDeletion(nsISupports *aItem) ;
|
||||||
nsresult NotifyItemAddition(nsISupports *aItem);
|
nsresult NotifyItemAddition(nsISupports *aItem) ;
|
||||||
// Force update of MAPI repository for mailing list
|
// Force update of MAPI repository for mailing list
|
||||||
nsresult CommitAddressList(void);
|
nsresult CommitAddressList(void) ;
|
||||||
// Read MAPI repository
|
// Read MAPI repository
|
||||||
nsresult UpdateAddressList(void);
|
nsresult UpdateAddressList(void) ;
|
||||||
|
|
||||||
nsMapiEntry *mMapiData;
|
nsMapiEntry *mMapiData ;
|
||||||
// Container for the query threads
|
// Container for the query threads
|
||||||
nsHashtable mQueryThreads;
|
nsHashtable mQueryThreads ;
|
||||||
PRInt32 mCurrentQueryId;
|
PRInt32 mCurrentQueryId ;
|
||||||
PRLock *mProtector;
|
PRLock *mProtector ;
|
||||||
// Data for the search interfaces
|
// Data for the search interfaces
|
||||||
nsSupportsHashtable mCardList;
|
nsSupportsHashtable mCardList ;
|
||||||
PRInt32 mSearchContext;
|
PRInt32 mSearchContext ;
|
||||||
// Windows AB type
|
// Windows AB type
|
||||||
PRUint32 mAbWinType;
|
PRUint32 mAbWinType ;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // nsAbOutlookDirectory_h___
|
#endif // nsAbOutlookDirectory_h___
|
||||||
|
|
Загрузка…
Ссылка в новой задаче