зеркало из https://github.com/mozilla/gecko-dev.git
Bug 69480 Abbress Book re-factoring landing
This commit is contained in:
Родитель
d1632c06a1
Коммит
b22ca1c6d8
|
@ -608,8 +608,7 @@ NS_IMETHODIMP nsAbSync::PerformAbSync(nsIDOMWindowInternal *aDOMWindow, PRInt32
|
|||
// syncing with...
|
||||
//
|
||||
NS_WITH_SERVICE(nsIPref, prefs, kPrefCID, &rv);
|
||||
if (NS_FAILED(rv) || !prefs)
|
||||
return NS_ERROR_FAILURE;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
prefs->CopyCharPref("mail.absync.address_book", &mAbSyncAddressBook);
|
||||
prefs->GetIntPref ("mail.absync.last_change", &mLastChangeNum);
|
||||
|
@ -651,8 +650,7 @@ NS_IMETHODIMP nsAbSync::PerformAbSync(nsIDOMWindowInternal *aDOMWindow, PRInt32
|
|||
if (!mPostEngine)
|
||||
{
|
||||
rv = nsComponentManager::CreateInstance(kCAbSyncPostEngineCID, NULL, NS_GET_IID(nsIAbSyncPostEngine), getter_AddRefs(mPostEngine));
|
||||
if ( NS_FAILED(rv) || (!mPostEngine) )
|
||||
return NS_ERROR_FAILURE;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mPostEngine->AddPostListener((nsIAbSyncPostListener *)this);
|
||||
}
|
||||
|
@ -750,7 +748,11 @@ nsAbSync::GenerateProtocolForCard(nsIAbCard *aCard, PRBool aAddId, nsString &pro
|
|||
if (aAddId)
|
||||
{
|
||||
PRUint32 aKey;
|
||||
if (NS_FAILED(aCard->GetKey(&aKey)))
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsCOMPtr<nsIAbMDBCard> dbcard(do_QueryInterface(aCard, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (NS_FAILED(dbcard->GetKey(&aKey)))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
#ifdef DEBUG_rhp
|
||||
|
@ -1024,7 +1026,10 @@ nsAbSync::ThisCardHasChanged(nsIAbCard *aCard, syncMappingRecord *newSyncRecord,
|
|||
{
|
||||
newSyncRecord->flags |= SYNC_ADD;
|
||||
|
||||
if (NS_FAILED(aCard->GetKey(&aKey)))
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIAbMDBCard> dbcard(do_QueryInterface(aCard, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (NS_FAILED(dbcard->GetKey(&aKey)))
|
||||
return PR_FALSE;
|
||||
|
||||
// Ugh...this should never happen...BUT??
|
||||
|
@ -1136,9 +1141,9 @@ nsAbSync::AnalyzeAllRecords(nsIAddrDatabase *aDatabase, nsIAbDirectory *director
|
|||
nsCOMPtr<nsIFile> lockFile;
|
||||
|
||||
rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, getter_AddRefs(historyFile));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = historyFile->Append("absync.dat");
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// TODO: Convert the rest of the code to use
|
||||
// nsIFile and avoid this conversion hack.
|
||||
|
@ -1252,7 +1257,11 @@ nsAbSync::AnalyzeAllRecords(nsIAddrDatabase *aDatabase, nsIAbDirectory *director
|
|||
// be the ID from the local database for this card entry
|
||||
//
|
||||
PRUint32 aKey;
|
||||
if (NS_FAILED(card->GetKey(&aKey)))
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIAbMDBCard> dbcard(do_QueryInterface(card, &rv));
|
||||
if (NS_FAILED(rv) || !dbcard)
|
||||
continue;
|
||||
if (NS_FAILED(dbcard->GetKey(&aKey)))
|
||||
continue;
|
||||
|
||||
// Ugh...this should never happen...BUT??
|
||||
|
@ -1382,7 +1391,11 @@ nsAbSync::AnalyzeAllRecords(nsIAddrDatabase *aDatabase, nsIAbDirectory *director
|
|||
// be the ID from the local database for this card entry
|
||||
//
|
||||
PRUint32 aKey;
|
||||
if (NS_FAILED(card->GetKey(&aKey)))
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIAbMDBCard> dbcard(do_QueryInterface(card, &rv));
|
||||
if (NS_FAILED(rv) || !dbcard)
|
||||
continue;
|
||||
if (NS_FAILED(dbcard->GetKey(&aKey)))
|
||||
continue;
|
||||
|
||||
// Ugh...this should never happen...BUT??
|
||||
|
@ -1533,7 +1546,8 @@ nsAbSync::AnalyzeTheLocalAddressBook()
|
|||
|
||||
// this should not be hardcoded to abook.mab
|
||||
// this works for any address book...not sure why
|
||||
rv = rdfService->GetResource("abdirectory://abook.mab", getter_AddRefs(resource));
|
||||
// absync on go againt abook.mab - candice
|
||||
rv = rdfService->GetResource("abmdbdirectory://abook.mab", getter_AddRefs(resource));
|
||||
if (NS_FAILED(rv))
|
||||
goto EarlyExit;
|
||||
|
||||
|
@ -1791,7 +1805,8 @@ nsAbSync::DeleteCardByServerID(PRInt32 aServerID)
|
|||
|
||||
// this should not be hardcoded to abook.mab
|
||||
// this works for any address book...not sure why
|
||||
rv = rdfService->GetResource("abdirectory://abook.mab", getter_AddRefs(resource));
|
||||
// absync on go againt abook.mab - candice
|
||||
rv = rdfService->GetResource("abmdbdirectory://abook.mab", getter_AddRefs(resource));
|
||||
if (NS_FAILED(rv))
|
||||
goto EarlyExit;
|
||||
|
||||
|
@ -1820,7 +1835,11 @@ nsAbSync::DeleteCardByServerID(PRInt32 aServerID)
|
|||
nsCOMPtr<nsIAbCard> card;
|
||||
card = do_QueryInterface(obj, &rv);
|
||||
|
||||
if (NS_FAILED(card->GetKey(&aKey)))
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIAbMDBCard> dbcard(do_QueryInterface(card, &rv));
|
||||
if (NS_FAILED(rv) || !dbcard)
|
||||
continue;
|
||||
if (NS_FAILED(dbcard->GetKey(&aKey)))
|
||||
continue;
|
||||
|
||||
if ((PRInt32) aKey == clientID)
|
||||
|
@ -2392,7 +2411,11 @@ nsAbSync::FindCardByClientID(PRInt32 aClientID,
|
|||
nsCOMPtr<nsIAbCard> card;
|
||||
card = do_QueryInterface(obj, &rv);
|
||||
|
||||
if (NS_FAILED(card->GetKey(&aKey)))
|
||||
nsresult rv=NS_OK;
|
||||
nsCOMPtr<nsIAbMDBCard> dbcard(do_QueryInterface(card, &rv));
|
||||
if (NS_FAILED(rv) || !dbcard)
|
||||
continue;
|
||||
if (NS_FAILED(dbcard->GetKey(&aKey)))
|
||||
continue;
|
||||
|
||||
// Found IT!
|
||||
|
@ -2543,7 +2566,8 @@ nsAbSync::AddNewUsers()
|
|||
|
||||
// this should not be hardcoded to abook.mab
|
||||
// this works for any address book...not sure why
|
||||
rv = rdfService->GetResource("abdirectory://abook.mab", getter_AddRefs(resource));
|
||||
// absync on go againt abook.mab - candice
|
||||
rv = rdfService->GetResource("abmdbdirectory://abook.mab", getter_AddRefs(resource));
|
||||
if (NS_FAILED(rv))
|
||||
goto EarlyExit;
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "nsCOMPtr.h"
|
||||
#include "nsIAddrDatabase.h"
|
||||
#include "nsIAbDirectory.h"
|
||||
#include "nsIAbMDBCard.h"
|
||||
#include "nsAbSyncCRCModel.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsIStringBundle.h"
|
||||
|
|
|
@ -42,54 +42,72 @@
|
|||
{ 0x9e, 0x7, 0x0, 0xa0, 0xc9, 0x2b, 0x5f, 0xd } \
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// nsAbDirectoryDataSource
|
||||
//
|
||||
#define NS_ABDIRECTORYDATASOURCE_CONTRACTID \
|
||||
NS_RDF_DATASOURCE_CONTRACTID_PREFIX "addressdirectory"
|
||||
|
||||
#define NS_ABDIRECTORYDATASOURCE_CID \
|
||||
#define NS_ABDIRECTORYDATASOURCE_CID \
|
||||
{ /* 0A79186D-F754-11d2-A2DA-001083003D0C */ \
|
||||
0xa79186d, 0xf754, 0x11d2, \
|
||||
0xa79186d, 0xf754, 0x11d2, \
|
||||
{0xa2, 0xda, 0x0, 0x10, 0x83, 0x0, 0x3d, 0xc} \
|
||||
}
|
||||
|
||||
//
|
||||
// nsAbDirectory
|
||||
//
|
||||
#define NS_ABDIRECTORY_CONTRACTID \
|
||||
NS_RDF_RESOURCE_FACTORY_CONTRACTID_PREFIX "abdirectory"
|
||||
|
||||
#define NS_ABDIRECTORY_CID \
|
||||
{ /* {6C21831D-FCC2-11d2-A2E2-001083003D0C}*/ \
|
||||
0x6c21831d, 0xfcc2, 0x11d2, \
|
||||
{0xa2, 0xe2, 0x0, 0x10, 0x83, 0x0, 0x3d, 0xc} \
|
||||
}
|
||||
|
||||
//
|
||||
// nsAbCardDataSource
|
||||
//
|
||||
#define NS_ABCARDDATASOURCE_CONTRACTID \
|
||||
NS_RDF_DATASOURCE_CONTRACTID_PREFIX "addresscard"
|
||||
|
||||
#define NS_ABCARDDATASOURCE_CID \
|
||||
#define NS_ABCARDDATASOURCE_CID \
|
||||
{ /* 1920E486-0709-11d3-A2EC-001083003D0C */ \
|
||||
0x1920e486, 0x709, 0x11d3, \
|
||||
0x1920e486, 0x709, 0x11d3, \
|
||||
{0xa2, 0xec, 0x0, 0x10, 0x83, 0x0, 0x3d, 0xc} \
|
||||
}
|
||||
|
||||
//
|
||||
// nsAbCard
|
||||
//
|
||||
#define NS_ABCARD_CONTRACTID \
|
||||
NS_RDF_RESOURCE_FACTORY_CONTRACTID_PREFIX "abcard"
|
||||
|
||||
#define NS_ABCARD_CID \
|
||||
{ /* {1920E487-0709-11d3-A2EC-001083003D0C}*/ \
|
||||
0x1920e487, 0x709, 0x11d3, \
|
||||
{0xa2, 0xec, 0x0, 0x10, 0x83, 0x0, 0x3d, 0xc} \
|
||||
//
|
||||
// nsAbBSDirectory
|
||||
//
|
||||
#define NS_ABDIRECTORY_CONTRACTID \
|
||||
NS_RDF_RESOURCE_FACTORY_CONTRACTID_PREFIX "abdirectory"
|
||||
|
||||
#define NS_ABDIRECTORY_CID \
|
||||
{ /* {012D3C24-1DD2-11B2-BA79-B4AD359FC461}*/ \
|
||||
0x012D3C24, 0x1DD2, 0x11B2, \
|
||||
{0xBA, 0x79, 0xB4, 0xAD, 0x35, 0x9F, 0xC4, 0x61} \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// nsAbMDBDirectory
|
||||
//
|
||||
#define NS_ABMDBDIRECTORY_CONTRACTID \
|
||||
NS_RDF_RESOURCE_FACTORY_CONTRACTID_PREFIX "abmdbdirectory"
|
||||
|
||||
#define NS_ABMDBDIRECTORY_CID \
|
||||
{ /* {e618f894-1dd1-11b2-889c-9aaefaa90dde}*/ \
|
||||
0xe618f894, 0x1dd1, 0x11b2, \
|
||||
{0x88, 0x9c, 0x9a, 0xae, 0xfa, 0xa9, 0x0d, 0xde} \
|
||||
}
|
||||
|
||||
//
|
||||
// nsAbMDBCard
|
||||
//
|
||||
#define NS_ABMDBCARD_CONTRACTID \
|
||||
NS_RDF_RESOURCE_FACTORY_CONTRACTID_PREFIX "abmdbcard"
|
||||
|
||||
#define NS_ABMDBCARD_CID \
|
||||
{ /* {f578a5d2-1dd1-11b2-8841-f45cc5e765f8} */ \
|
||||
0xf578a5d2, 0x1dd1, 0x11b2, \
|
||||
{0x88, 0x41, 0xf4, 0x5c, 0xc5, 0xe7, 0x65, 0xf8} \
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// nsAddressBookDB
|
||||
//
|
||||
|
|
|
@ -38,8 +38,12 @@
|
|||
|
||||
#include "nsDirectoryDataSource.h"
|
||||
#include "nsCardDataSource.h"
|
||||
#include "nsAbDirectory.h"
|
||||
#include "nsAbCard.h"
|
||||
|
||||
#include "nsAbBSDirectory.h"
|
||||
|
||||
#include "nsAbMDBDirectory.h"
|
||||
#include "nsAbMDBCard.h"
|
||||
|
||||
#include "nsAddrDatabase.h"
|
||||
#include "nsAddressBook.h"
|
||||
#include "nsAddrBookSession.h"
|
||||
|
@ -50,13 +54,19 @@
|
|||
#include "nsAddbookUrl.h"
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAddressBook)
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsAbDirectoryDataSource,Init)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbDirectory)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsAbCardDataSource,Init)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbCard)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbCardProperty)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAddrDatabase)
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbDirProperty)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbCardProperty)
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbBSDirectory)
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbMDBDirectory)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbMDBCard)
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAddrDatabase)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAddrBookSession)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbAutoCompleteSession)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAbAddressCollecter)
|
||||
|
@ -70,36 +80,54 @@ static nsModuleComponentInfo components[] =
|
|||
NS_ADDRESSBOOK_CID,
|
||||
NS_ADDRESSBOOK_CONTRACTID,
|
||||
nsAddressBookConstructor },
|
||||
|
||||
{ "Address Book Startup Handler",
|
||||
NS_ADDRESSBOOK_CID,
|
||||
NS_ADDRESSBOOKSTARTUPHANDLER_CONTRACTID,
|
||||
nsAddressBookConstructor,
|
||||
nsAddressBook::RegisterProc,
|
||||
nsAddressBook::UnregisterProc },
|
||||
|
||||
{ "Address Book Directory Datasource",
|
||||
NS_ABDIRECTORYDATASOURCE_CID,
|
||||
NS_ABDIRECTORYDATASOURCE_CONTRACTID,
|
||||
nsAbDirectoryDataSourceConstructor },
|
||||
{ "Address Book Directory",
|
||||
NS_ABDIRECTORY_CID,
|
||||
NS_ABDIRECTORY_CONTRACTID,
|
||||
nsAbDirectoryConstructor },
|
||||
|
||||
{ "Address Book Card Datasource",
|
||||
NS_ABCARDDATASOURCE_CID,
|
||||
NS_ABCARDDATASOURCE_CONTRACTID,
|
||||
nsAbCardDataSourceConstructor },
|
||||
{ "Address Book Card",
|
||||
NS_ABCARD_CID,
|
||||
NS_ABCARD_CONTRACTID,
|
||||
nsAbCardConstructor },
|
||||
|
||||
|
||||
|
||||
{ "Address Boot Strap Directory",
|
||||
NS_ABDIRECTORY_CID,
|
||||
NS_ABDIRECTORY_CONTRACTID,
|
||||
nsAbBSDirectoryConstructor },
|
||||
|
||||
|
||||
|
||||
{ "Address MDB Book Directory",
|
||||
NS_ABMDBDIRECTORY_CID,
|
||||
NS_ABMDBDIRECTORY_CONTRACTID,
|
||||
nsAbMDBDirectoryConstructor },
|
||||
|
||||
{ "Address MDB Book Card",
|
||||
NS_ABMDBCARD_CID,
|
||||
NS_ABMDBCARD_CONTRACTID,
|
||||
nsAbMDBCardConstructor },
|
||||
|
||||
|
||||
{ "Address Database",
|
||||
NS_ADDRDATABASE_CID,
|
||||
NS_ADDRDATABASE_CONTRACTID,
|
||||
nsAddrDatabaseConstructor },
|
||||
|
||||
{ "Address Book Card Property",
|
||||
NS_ABCARDPROPERTY_CID,
|
||||
NS_ABCARDPROPERTY_CONTRACTID,
|
||||
nsAbCardPropertyConstructor },
|
||||
|
||||
{ "Address Book Directory Property",
|
||||
NS_ABDIRPROPERTY_CID,
|
||||
NS_ABDIRPROPERTY_CONTRACTID,
|
||||
|
|
|
@ -32,6 +32,8 @@ XPIDLSRCS = \
|
|||
nsIAbListener.idl \
|
||||
nsIAbDirectory.idl \
|
||||
nsIAbCard.idl \
|
||||
nsIAbMDBDirectory.idl \
|
||||
nsIAbMDBCard.idl \
|
||||
nsIAddrDBAnnouncer.idl \
|
||||
nsIAddrDBListener.idl \
|
||||
nsIAddrDatabase.idl \
|
||||
|
|
|
@ -26,7 +26,9 @@ XPIDLSRCS = \
|
|||
.\nsIAbListener.idl \
|
||||
.\nsIAbBase.idl \
|
||||
.\nsIAbDirectory.idl \
|
||||
.\nsIAbMDBDirectory.idl \
|
||||
.\nsIAbCard.idl \
|
||||
.\nsIAbMDBCard.idl \
|
||||
.\nsIAddrDBAnnouncer.idl \
|
||||
.\nsIAddrDBListener.idl \
|
||||
.\nsIAddrDatabase.idl \
|
||||
|
|
|
@ -40,6 +40,7 @@ interface nsIAbPreferMailFormat {
|
|||
[scriptable, uuid(FA5C977F-04C8-11d3-A2EB-001083003D0C)]
|
||||
interface nsIAbCard : nsISupports {
|
||||
|
||||
// Card properties
|
||||
attribute wstring firstName;
|
||||
attribute wstring lastName;
|
||||
attribute wstring displayName;
|
||||
|
@ -78,37 +79,52 @@ interface nsIAbCard : nsISupports {
|
|||
attribute wstring notes;
|
||||
attribute unsigned long lastModifiedDate;
|
||||
attribute wstring name;
|
||||
readonly attribute string printCardUrl;
|
||||
readonly attribute unsigned long key;
|
||||
|
||||
attribute unsigned long preferMailFormat;
|
||||
attribute boolean isMailList;
|
||||
|
||||
attribute unsigned long dbTableID;
|
||||
attribute unsigned long dbRowID;
|
||||
// If isMailList==true then this string
|
||||
// will contain the URI of the associated
|
||||
// mail list
|
||||
attribute string mailListURI;
|
||||
|
||||
wstring getCardValue(in string attrname);
|
||||
void setCardValue(in string attrname, in wstring value);
|
||||
void setAbDatabase(in nsIAddrDatabase database);
|
||||
|
||||
[noscript] readonly attribute nsVoidArray anonymousStrAttrubutesList;
|
||||
[noscript] readonly attribute nsVoidArray anonymousStrValuesList;
|
||||
[noscript] readonly attribute nsVoidArray anonymousIntAttrubutesList;
|
||||
[noscript] readonly attribute nsVoidArray anonymousIntValuesList;
|
||||
[noscript] readonly attribute nsVoidArray anonymousBoolAttrubutesList;
|
||||
[noscript] readonly attribute nsVoidArray anonymousBoolValuesList;
|
||||
// Copies the card attributes from srcCard
|
||||
void copy(in nsIAbCard srcCard);
|
||||
|
||||
readonly attribute string printCardUrl;
|
||||
|
||||
void setAnonymousStringAttribute(in string attrname, in string value);
|
||||
void setAnonymousIntAttribute(in string attrname, in unsigned long value);
|
||||
void setAnonymousBoolAttribute(in string attrname, in boolean value);
|
||||
void addAnonymousAttributesToDB();
|
||||
void editAnonymousAttributesInDB();
|
||||
// Adds a new card to the directory defined by 'uri'
|
||||
// Rename to addCardToDirectory
|
||||
//
|
||||
// Returns an intstance of a card which
|
||||
// is an RDF resource component
|
||||
nsIAbCard addCardToDatabase(in string uri);
|
||||
|
||||
readonly attribute string cardURI;
|
||||
void addCardToDatabase(in string uri);
|
||||
void editCardToDatabase(in string uri);
|
||||
void copyCard(in nsIAbCard srcCard);
|
||||
// Behaviour wise this is very similar to the
|
||||
// addCardToDatabase method, except that it
|
||||
// assumes the uri refers to a directory that
|
||||
// is not a mail list
|
||||
// This method is rendundent, droping a card
|
||||
// onto a list should be allowed.
|
||||
// Rename to dropCardToDirectory
|
||||
//
|
||||
// Returns an intstance of a card which
|
||||
// is an RDF resource component
|
||||
nsIAbCard dropCardToDatabase(in string uri);
|
||||
|
||||
// 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
|
||||
//
|
||||
void editCardToDatabase(in string uri);
|
||||
|
||||
// Not sure what this does. Used by the
|
||||
// card data source for values of collation
|
||||
// properties, somthing to do with locales
|
||||
// and sorting. Gets called when selecting
|
||||
// table headers like Name and Email.
|
||||
wstring getCollationKey(in wstring str);
|
||||
void setRecordKey(in unsigned long key);
|
||||
void dropCardToDatabase(in string uri);
|
||||
};
|
||||
|
|
|
@ -32,42 +32,97 @@
|
|||
#include "nsDirPrefs.h"
|
||||
%}
|
||||
|
||||
[scriptable, uuid(1920E485-0709-11d3-A2EC-001083003D0C)]
|
||||
[scriptable, uuid(AA920C90-1DD1-11B2-96D3-AA81268ADAFC)]
|
||||
interface nsIAbDirectory : nsISupports {
|
||||
|
||||
// The name of the directory
|
||||
attribute wstring dirName;
|
||||
attribute unsigned long lastModifiedDate;
|
||||
[noscript] attribute DIR_Server server;
|
||||
|
||||
readonly attribute string dirFilePath;
|
||||
// Defines wether this directory is a mail
|
||||
// list or not
|
||||
attribute PRBool isMailList;
|
||||
|
||||
|
||||
// Get the children directories
|
||||
readonly attribute nsIEnumerator childNodes;
|
||||
readonly attribute nsIEnumerator childCards;
|
||||
nsIAbCard addChildCards(in string uriName);
|
||||
nsIAbDirectory addDirectory(in string uriName);
|
||||
void deleteDirectory(in nsIAbDirectory dierctory);
|
||||
void deleteCards(in nsISupportsArray cards);
|
||||
boolean hasCard(in nsIAbCard cards);
|
||||
boolean hasDirectory(in nsIAbDirectory dir);
|
||||
void createNewDirectory(in wstring dirName, in string fileName, in boolean migrating);
|
||||
void createNewMailingList(in string uri, in nsIAbDirectory list);
|
||||
string getDirUri();
|
||||
void addMailListToDirectory(in nsIAbDirectory mailList);
|
||||
void copyMailList(in nsIAbDirectory srcList);
|
||||
|
||||
// Get the cards associated with the directory
|
||||
// This will return the cards associated with
|
||||
// the mailing lists too
|
||||
readonly attribute nsIEnumerator childCards;
|
||||
|
||||
|
||||
// Deletes either a mailing list or a top
|
||||
// level directory, which also updates the
|
||||
// preferences
|
||||
void deleteDirectory(in nsIAbDirectory dierctory);
|
||||
|
||||
// Delete the
|
||||
void deleteCards(in nsISupportsArray cards);
|
||||
|
||||
|
||||
// Check if directory contains card
|
||||
boolean hasCard(in nsIAbCard cards);
|
||||
|
||||
// Check if directory contains directory
|
||||
boolean hasDirectory(in nsIAbDirectory dir);
|
||||
|
||||
// Creates a new card in the directory
|
||||
// with the properties defined by card
|
||||
nsIAbCard addCard(in nsIAbCard card);
|
||||
nsIAbCard dropCard(in nsIAbCard card);
|
||||
|
||||
|
||||
// Mail list specific
|
||||
//
|
||||
|
||||
// This attribute servers two purposes
|
||||
// depending if the directory is a mail list.
|
||||
// If not mail list directories are stored here
|
||||
// If so mail list card entries are stored here
|
||||
attribute nsISupportsArray addressLists;
|
||||
|
||||
// Specific to a directory which stores mail lists
|
||||
//
|
||||
|
||||
// Creates a new mailing list in the directory
|
||||
// with the properties defined by list
|
||||
void addMailList (in nsIAbDirectory list);
|
||||
|
||||
// Specific to a directory which is a mail list
|
||||
//
|
||||
|
||||
// listName is not needed, dirName could be used
|
||||
// instead
|
||||
attribute wstring listName;
|
||||
attribute wstring listNickName;
|
||||
attribute wstring description;
|
||||
attribute unsigned long dbRowID;
|
||||
attribute PRBool isMailList;
|
||||
attribute nsISupportsArray addressLists;
|
||||
|
||||
void addAddressToList(in nsIAbCard card);
|
||||
// Adds a new mail list into the directory
|
||||
// defined by the uri
|
||||
void addMailListToDatabase(in string uri);
|
||||
void editMailListToDatabase(in string uri);
|
||||
void removeEmailAddressAt(in unsigned long aIndex);
|
||||
|
||||
[noscript] void clearDatabase();
|
||||
[noscript] void notifyDirItemAdded(in nsISupports item);
|
||||
[noscript] void removeElementsFromAddressList();
|
||||
|
||||
// Edits an existing mail in the directory
|
||||
// defined by the uri
|
||||
void editMailListToDatabase(in string uri);
|
||||
|
||||
// Copies mail list properties from the srcList
|
||||
void copyMailList(in nsIAbDirectory srcList);
|
||||
|
||||
/*
|
||||
Only creates a top level address book
|
||||
which is stored in the preferences
|
||||
|
||||
Need to change to factory based approach
|
||||
to create new address books
|
||||
|
||||
This method should become redundant or
|
||||
be only associated with card folders
|
||||
*/
|
||||
void createNewDirectory(in unsigned long prefCount,[array, size_is(prefCount)] in string prefName, [array, size_is(prefCount)] in wstring prefValue);
|
||||
|
||||
/* create a directory by passing the display name and address book uri */
|
||||
void CreateDirectoryByURI(in wstring displayName, in string uri, in boolean migrating);
|
||||
|
||||
};
|
||||
|
|
|
@ -38,16 +38,16 @@ interface nsIFileSpec;
|
|||
[scriptable, uuid(D60B84F1-2A8C-11d3-9E07-00A0C92B5F0D)]
|
||||
interface nsIAddressBook : nsISupports {
|
||||
|
||||
void deleteCards(in nsIDOMXULElement tree, in nsIDOMXULElement srcDir, in nsIDOMNodeList node);
|
||||
void newAddressBook(in nsIRDFCompositeDataSource db, in nsIDOMXULElement srcDir, in wstring name);
|
||||
void deleteAddressBooks(in nsIRDFCompositeDataSource db, in nsISupportsArray parentDir, in nsIDOMNodeList node);
|
||||
void printCard();
|
||||
void printAddressbook();
|
||||
void setDocShellWindow(in nsIDOMWindowInternal win);
|
||||
void deleteCards(in nsIDOMXULElement tree, in nsIDOMXULElement srcDir, in nsIDOMNodeList node);
|
||||
void newAddressBook(in nsIRDFCompositeDataSource db, in nsIDOMXULElement srcDir, in unsigned long prefCount,[array, size_is(prefCount)] in string prefName, [array, size_is(prefCount)] in wstring prefValue);
|
||||
void deleteAddressBooks(in nsIRDFCompositeDataSource db, in nsISupportsArray parentDir, in nsIDOMNodeList node);
|
||||
void printCard();
|
||||
void printAddressbook();
|
||||
void setDocShellWindow(in nsIDOMWindowInternal win);
|
||||
void importAddressBook();
|
||||
void convertLDIFtoMAB(in nsIFileSpec fileSpec, in boolean migrating);
|
||||
void convertNA2toLDIF(in nsIFileSpec srcFileSpec, in nsIFileSpec dstFileSpec);
|
||||
void getAbDatabaseFromURI(in string URI, out nsIAddrDatabase db);
|
||||
void convertLDIFtoMAB(in nsIFileSpec fileSpec, in boolean migrating);
|
||||
void convertNA2toLDIF(in nsIFileSpec srcFileSpec, in nsIFileSpec dstFileSpec);
|
||||
void getAbDatabaseFromURI(in string URI, out nsIAddrDatabase db);
|
||||
boolean mailListNameExistsInDB(in wstring name, in string URI);
|
||||
boolean mailListNameExists(in wstring name);
|
||||
};
|
||||
|
|
|
@ -43,7 +43,7 @@ function OnLoadNewCard()
|
|||
if ("selectedAB" in window.arguments[0])
|
||||
editCard.selectedAB = window.arguments[0].selectedAB;
|
||||
else
|
||||
editCard.selectedAB = "abdirectory://abook.mab";
|
||||
editCard.selectedAB = "abmdbdirectory://abook.mab";
|
||||
|
||||
// we may have been given properties to pre-initialize the window with....
|
||||
// we'll fill these in here...
|
||||
|
@ -108,6 +108,8 @@ function OnLoadEditCard()
|
|||
editCard.okCallback = window.arguments[0].okCallback;
|
||||
if ( window.arguments[0].abURI )
|
||||
editCard.abURI = window.arguments[0].abURI;
|
||||
if ( window.arguments[0].abCardURI )
|
||||
editCard.abCardURI = window.arguments[0].abCardURI;
|
||||
}
|
||||
|
||||
// set global state variables
|
||||
|
|
|
@ -164,13 +164,12 @@ function AbEditCard()
|
|||
var card = rdf.GetResource(uri);
|
||||
card = card.QueryInterface(Components.interfaces.nsIAbCard);
|
||||
if (card.isMailList) {
|
||||
var dirUri = dirTree.selectedItems[0].getAttribute("id");
|
||||
var listUri = dirUri + "/MailList" + card.dbRowID;
|
||||
listUri = card.mailListURI;
|
||||
goEditListDialog(resultsTree.getAttribute("ref"), listUri);
|
||||
}
|
||||
else {
|
||||
var updateFunc = ("gUpdateCardView" in top) ? top.gUpdateCardView : null;
|
||||
goEditCardDialog(resultsTree.getAttribute("ref"), card, updateFunc);
|
||||
goEditCardDialog(resultsTree.getAttribute("ref"), card, updateFunc, uri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -95,7 +95,16 @@ function GetListValue(mailList, doAdd)
|
|||
if (fieldValue == "")
|
||||
{
|
||||
if (doAdd == false && cardproperty)
|
||||
mailList.removeEmailAddressAt(pos);
|
||||
try
|
||||
{
|
||||
mailList.addressLists.DeleteElementAt(pos);
|
||||
}
|
||||
catch(ex)
|
||||
{
|
||||
// Ignore attempting to remove an item
|
||||
// at a position greater than the number
|
||||
// of elements in the addressLists attribute
|
||||
}
|
||||
}
|
||||
else if (cardproperty)
|
||||
{
|
||||
|
@ -122,7 +131,7 @@ function GetListValue(mailList, doAdd)
|
|||
if (doAdd == false && i < oldTotal)
|
||||
{
|
||||
for (var j = i; j < oldTotal; j++)
|
||||
mailList.addressLists.RemoveElementAt(j);
|
||||
mailList.addressLists.DeleteElementAt(j);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -169,7 +178,7 @@ function OnLoadMailList()
|
|||
if ( window.arguments[0].selectedAB )
|
||||
selectedAB = window.arguments[0].selectedAB;
|
||||
else
|
||||
selectedAB = "abdirectory://abook.mab";
|
||||
selectedAB = "abmdbdirectory://abook.mab";
|
||||
}
|
||||
|
||||
// set popup with address book names
|
||||
|
@ -240,7 +249,6 @@ function OnLoadEditList()
|
|||
if (editList.addressLists)
|
||||
{
|
||||
var total = editList.addressLists.Count();
|
||||
dump("*** editList.Count = "+total+"\n");
|
||||
if (total)
|
||||
{
|
||||
var treeChildren = document.getElementById('addressList');
|
||||
|
@ -303,7 +311,6 @@ function SetInputValue(inputValue, parentNode, templateNode)
|
|||
function awNotAnEmptyArea(event)
|
||||
{
|
||||
//This is temporary until i figure out how to ensure to always having an empty space after the last row
|
||||
dump("awNotAnEmptyArea\n");
|
||||
|
||||
var lastInput = awGetInputElement(top.MAX_RECIPIENTS);
|
||||
if ( lastInput && lastInput.value )
|
||||
|
@ -314,10 +321,9 @@ function awNotAnEmptyArea(event)
|
|||
|
||||
function awClickEmptySpace(targ, setFocus)
|
||||
{
|
||||
if ("localName" in targ && targ.localName != 'treechildren')
|
||||
if (targ.localName != 'treechildren')
|
||||
return;
|
||||
|
||||
dump("awClickEmptySpace\n");
|
||||
var lastInput = awGetInputElement(top.MAX_RECIPIENTS);
|
||||
|
||||
if ( lastInput && lastInput.value )
|
||||
|
@ -329,7 +335,6 @@ function awClickEmptySpace(targ, setFocus)
|
|||
|
||||
function awReturnHit(inputElement)
|
||||
{
|
||||
dump("***** awReturnHit\n");
|
||||
var row = awGetRowByInputElement(inputElement);
|
||||
|
||||
if ( inputElement.value )
|
||||
|
@ -344,7 +349,6 @@ function awReturnHit(inputElement)
|
|||
|
||||
function awInputChanged(inputElement)
|
||||
{
|
||||
dump("awInputChanged\n");
|
||||
// AutoCompleteAddress(inputElement);
|
||||
|
||||
//Do we need to add a new row?
|
||||
|
|
|
@ -5,7 +5,7 @@ var gAddressBookBundle;
|
|||
|
||||
function OnLoadAddressBook()
|
||||
{
|
||||
gAddressBookBundle = document.getElementById("bundle_addressBook");
|
||||
gAddressBookBundle = document.getElementById("bundle_addressBook");
|
||||
verifyAccounts(); // this will do migration, if we need to.
|
||||
|
||||
top.addressbook = Components.classes["@mozilla.org/addressbook;1"].createInstance();
|
||||
|
@ -161,7 +161,11 @@ function AbNewAddressBook()
|
|||
|
||||
function AbCreateNewAddressBook(name)
|
||||
{
|
||||
top.addressbook.newAddressBook(dirTree.database, resultsTree, name);
|
||||
var prefsAttr = new Array;
|
||||
var prefsValue = new Array;
|
||||
prefsAttr[0] = "description";
|
||||
prefsValue[0] = name;
|
||||
top.addressbook.newAddressBook(dirTree.database, resultsTree, 1, prefsAttr, prefsValue);
|
||||
}
|
||||
|
||||
function AbPrintCard()
|
||||
|
@ -267,8 +271,8 @@ function AbDeleteDirectory()
|
|||
// check to see if personal or collected address books is selected for deletion.
|
||||
// if yes, prompt the user an appropriate message saying these cannot be deleted
|
||||
// if no, mark the selected items for deletion
|
||||
if ((selArray[i].getAttribute("id") != "abdirectory://history.mab") &&
|
||||
(selArray[i].getAttribute("id") != "abdirectory://abook.mab"))
|
||||
if ((selArray[i].getAttribute("id") != "abmdbdirectory://history.mab") &&
|
||||
(selArray[i].getAttribute("id") != "abmdbdirectory://abook.mab"))
|
||||
{
|
||||
var parent = selArray[i].parentNode.parentNode;
|
||||
if (parent)
|
||||
|
@ -317,4 +321,3 @@ function clickResultsTree(event)
|
|||
|
||||
if ( event.detail == 2 ) top.AbEditCard();
|
||||
}
|
||||
|
||||
|
|
|
@ -34,11 +34,9 @@ CPPSRCS = \
|
|||
nsAddressBook.cpp \
|
||||
nsAddrBookSession.cpp \
|
||||
nsAbRDFDataSource.cpp \
|
||||
nsAbRDFResource.cpp \
|
||||
nsAbMDBRDFResource.cpp \
|
||||
nsCardDataSource.cpp \
|
||||
nsDirectoryDataSource.cpp \
|
||||
nsAbCard.cpp \
|
||||
nsAbDirectory.cpp \
|
||||
nsAbCardProperty.cpp \
|
||||
nsDirPrefs.cpp \
|
||||
nsAddrDatabase.cpp \
|
||||
|
@ -46,6 +44,11 @@ CPPSRCS = \
|
|||
nsAbAutoCompleteSession.cpp \
|
||||
nsAbAddressCollecter.cpp \
|
||||
nsAddbookProtocolHandler.cpp \
|
||||
nsAbMDBDirProperty.cpp \
|
||||
nsAbMDBDirectory.cpp \
|
||||
nsAbMDBCardProperty.cpp \
|
||||
nsAbMDBCard.cpp \
|
||||
nsAbBSDirectory.cpp \
|
||||
nsAddbookUrl.cpp \
|
||||
$(NULL)
|
||||
|
||||
|
@ -53,11 +56,9 @@ EXPORTS = \
|
|||
nsAddressBook.h \
|
||||
nsAddrBookSession.h \
|
||||
nsAbRDFDataSource.h \
|
||||
nsAbRDFResource.h \
|
||||
nsAbMDBRDFResource.h \
|
||||
nsCardDataSource.h \
|
||||
nsDirectoryDataSource.h \
|
||||
nsAbCard.h \
|
||||
nsAbDirectory.h \
|
||||
nsAbCardProperty.h \
|
||||
nsDirPrefs.h \
|
||||
nsAddrDatabase.h \
|
||||
|
@ -66,6 +67,11 @@ EXPORTS = \
|
|||
nsAbAddressCollecter.h \
|
||||
nsAddbookProtocolHandler.h \
|
||||
nsAddbookUrl.h \
|
||||
nsAbMDBDirProperty.h \
|
||||
nsAbMDBDirectory.h \
|
||||
nsAbMDBCardProperty.h \
|
||||
nsAbMDBCard.h \
|
||||
nsAbBSDirectory.h \
|
||||
$(NULL)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
|
|
|
@ -31,11 +31,9 @@ EXPORTS= \
|
|||
nsAddressBook.h \
|
||||
nsAddrBookSession.h \
|
||||
nsAbRDFDataSource.h \
|
||||
nsAbRDFResource.h \
|
||||
nsAbMDBRDFResource.h \
|
||||
nsCardDataSource.h \
|
||||
nsDirectoryDataSource.h \
|
||||
nsAbCard.h \
|
||||
nsAbDirectory.h \
|
||||
nsAbCardProperty.h \
|
||||
nsDirPrefs.h \
|
||||
nsAddrDatabase.h \
|
||||
|
@ -43,6 +41,11 @@ EXPORTS= \
|
|||
nsAbAutoCompleteSession.h \
|
||||
nsAbAddressCollecter.h \
|
||||
nsAddbookProtocolHandler.h \
|
||||
nsAbMDBDirProperty.h \
|
||||
nsAbMDBDirectory.h \
|
||||
nsAbMDBCardProperty.h \
|
||||
nsAbMDBCard.h \
|
||||
nsAbBSDirectory.h \
|
||||
nsAddbookUrl.h \
|
||||
$(NULL)
|
||||
|
||||
|
@ -55,11 +58,9 @@ CPP_OBJS= \
|
|||
.\$(OBJDIR)\nsAddressBook.obj \
|
||||
.\$(OBJDIR)\nsAddrBookSession.obj \
|
||||
.\$(OBJDIR)\nsAbRDFDataSource.obj \
|
||||
.\$(OBJDIR)\nsAbRDFResource.obj \
|
||||
.\$(OBJDIR)\nsAbMDBRDFResource.obj \
|
||||
.\$(OBJDIR)\nsCardDataSource.obj \
|
||||
.\$(OBJDIR)\nsDirectoryDataSource.obj \
|
||||
.\$(OBJDIR)\nsAbCard.obj \
|
||||
.\$(OBJDIR)\nsAbDirectory.obj \
|
||||
.\$(OBJDIR)\nsAbCardProperty.obj \
|
||||
.\$(OBJDIR)\nsDirPrefs.obj \
|
||||
.\$(OBJDIR)\nsAddrDatabase.obj \
|
||||
|
@ -67,6 +68,11 @@ CPP_OBJS= \
|
|||
.\$(OBJDIR)\nsAbAutoCompleteSession.obj \
|
||||
.\$(OBJDIR)\nsAbAddressCollecter.obj \
|
||||
.\$(OBJDIR)\nsAddbookProtocolHandler.obj \
|
||||
.\$(OBJDIR)\nsAbMDBDirProperty.obj \
|
||||
.\$(OBJDIR)\nsAbMDBDirectory.obj \
|
||||
.\$(OBJDIR)\nsAbMDBCardProperty.obj \
|
||||
.\$(OBJDIR)\nsAbMDBCard.obj \
|
||||
.\$(OBJDIR)\nsAbBSDirectory.obj \
|
||||
.\$(OBJDIR)\nsAddbookUrl.obj \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -70,8 +70,7 @@ NS_IMETHODIMP nsAbSyncDriver::KickIt()
|
|||
{
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIAbSync, sync, kAbSync, &rv);
|
||||
if (NS_FAILED(rv) || !sync)
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Add ourselves to the party!
|
||||
sync->AddSyncListener((nsIAbSyncListener *)this);
|
||||
|
|
|
@ -96,8 +96,7 @@ NS_IMETHODIMP nsAbAddressCollecter::CollectAddress(const char *address)
|
|||
return NS_OK;
|
||||
|
||||
NS_WITH_SERVICE(nsIPref, pPref, kPrefCID, &rv);
|
||||
if (NS_FAILED(rv) || !pPref)
|
||||
return NS_ERROR_FAILURE;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if(sizeLimitEnabled == -1){
|
||||
rv = pPref->GetBoolPref(PREF_COLLECT_EMAIL_ADDRESS_ENABLE_SIZE_LIMIT, &sizeLimitEnabled);
|
||||
|
@ -146,6 +145,7 @@ NS_IMETHODIMP nsAbAddressCollecter::CollectAddress(const char *address)
|
|||
if (NS_SUCCEEDED(rv) && !exclude)
|
||||
{
|
||||
nsCOMPtr <nsIAbCard> existingCard;
|
||||
nsCOMPtr <nsIAbCard> cardInstance;
|
||||
|
||||
rv = m_historyAB->GetCardForEmailAddress(m_historyDirectory, curAddress, getter_AddRefs(existingCard));
|
||||
|
||||
|
@ -171,7 +171,7 @@ NS_IMETHODIMP nsAbAddressCollecter::CollectAddress(const char *address)
|
|||
}
|
||||
nsAutoString email; email.AssignWithConversion(curAddress);
|
||||
senderCard->SetPrimaryEmail((PRUnichar*)email.GetUnicode());
|
||||
senderCard->AddCardToDatabase(kCollectedAddressbookUri);
|
||||
senderCard->AddCardToDatabase(kCollectedAddressbookUri, getter_AddRefs (cardInstance));
|
||||
}
|
||||
}
|
||||
else //address is already in the CAB
|
||||
|
@ -182,7 +182,7 @@ NS_IMETHODIMP nsAbAddressCollecter::CollectAddress(const char *address)
|
|||
m_historyAB->DeleteCard( existingCard, PR_TRUE );
|
||||
SetNamesForCard(existingCard, curName);
|
||||
//append it to the bottom.
|
||||
existingCard->AddCardToDatabase(kCollectedAddressbookUri);
|
||||
existingCard->AddCardToDatabase(kCollectedAddressbookUri, getter_AddRefs (cardInstance));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -236,13 +236,11 @@ nsresult nsAbAddressCollecter::OpenHistoryAB(nsIAddrDatabase **aDatabase)
|
|||
delete dbPath;
|
||||
}
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr <nsIRDFResource> resource;
|
||||
rv = rdfService->GetResource(kCollectedAddressbookUri, getter_AddRefs(resource));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// query interface
|
||||
m_historyDirectory = do_QueryInterface(resource, &rv);
|
||||
|
|
|
@ -386,46 +386,46 @@ nsresult nsAbAutoCompleteSession::SearchDirectory(nsString& fileName, nsAbAutoCo
|
|||
{
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr <nsIRDFResource> resource;
|
||||
char * strFileName = fileName.ToNewCString();
|
||||
rv = rdfService->GetResource(strFileName, getter_AddRefs(resource));
|
||||
Recycle(strFileName);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// query interface
|
||||
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(resource, &rv));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!fileName.EqualsWithConversion(kDirectoryDataSourceRoot))
|
||||
if (!fileName.EqualsWithConversion("abdirectory://"))
|
||||
rv = SearchCards(directory, searchStr, results);
|
||||
|
||||
if (!searchSubDirectory)
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIEnumerator> subDirectories;
|
||||
if (NS_SUCCEEDED(directory->GetChildNodes(getter_AddRefs(subDirectories))) && subDirectories)
|
||||
{
|
||||
nsCOMPtr<nsISupports> item;
|
||||
if (NS_SUCCEEDED(subDirectories->First()))
|
||||
{
|
||||
do
|
||||
{
|
||||
if (NS_SUCCEEDED(directory->GetChildNodes(getter_AddRefs(subDirectories))) && subDirectories)
|
||||
{
|
||||
nsCOMPtr<nsISupports> item;
|
||||
if (NS_SUCCEEDED(subDirectories->First()))
|
||||
{
|
||||
do
|
||||
{
|
||||
if (NS_SUCCEEDED(subDirectories->CurrentItem(getter_AddRefs(item))))
|
||||
{
|
||||
directory = do_QueryInterface(item, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
DIR_Server *server = nsnull;
|
||||
if (NS_SUCCEEDED(directory->GetServer(&server)) && server)
|
||||
{
|
||||
nsAutoString subFileName(fileName);
|
||||
if (subFileName.Last() != '/')
|
||||
subFileName.AppendWithConversion("/");
|
||||
subFileName.AppendWithConversion(server->fileName);
|
||||
rv = SearchDirectory(subFileName, searchStr, results, PR_TRUE);
|
||||
}
|
||||
nsCOMPtr<nsIRDFResource> subResource(do_QueryInterface(item, &rv));
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsXPIDLCString URI;
|
||||
subResource->GetValue(getter_Copies(URI));
|
||||
nsAutoString subURI;
|
||||
subURI.AssignWithConversion(URI);
|
||||
rv = SearchDirectory(subURI, searchStr, results, PR_TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (NS_SUCCEEDED(subDirectories->Next()));
|
||||
|
@ -443,8 +443,7 @@ nsresult nsAbAutoCompleteSession::SearchPreviousResults(nsAbAutoCompleteSearchSt
|
|||
nsresult rv;
|
||||
|
||||
rv = previousSearchResult->GetSearchString(getter_Copies(prevSearchString));
|
||||
if (NS_FAILED(rv))
|
||||
return NS_ERROR_FAILURE;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!(const PRUnichar*)prevSearchString || ((const PRUnichar*)prevSearchString)[0] == 0)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -465,30 +464,30 @@ nsresult nsAbAutoCompleteSession::SearchPreviousResults(nsAbAutoCompleteSearchSt
|
|||
if (NS_FAILED(rv) || nbrOfItems <= 0)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsISupports> item;
|
||||
nsCOMPtr<nsIAutoCompleteItem> resultItem;
|
||||
nsCOMPtr<nsISupports> item;
|
||||
nsCOMPtr<nsIAutoCompleteItem> resultItem;
|
||||
nsAbAutoCompleteParam *param;
|
||||
|
||||
for (i = 0, pos = 0; i < nbrOfItems; i ++, pos ++)
|
||||
{
|
||||
rv = array->QueryElementAt(pos, NS_GET_IID(nsIAutoCompleteItem),
|
||||
getter_AddRefs(resultItem));
|
||||
if (NS_FAILED(rv))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
for (i = 0, pos = 0; i < nbrOfItems; i ++, pos ++)
|
||||
{
|
||||
rv = array->QueryElementAt(pos, NS_GET_IID(nsIAutoCompleteItem),
|
||||
getter_AddRefs(resultItem));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = resultItem->GetParam(getter_AddRefs(item));
|
||||
if (NS_FAILED(rv) || !item)
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!item)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
param = (nsAbAutoCompleteParam *)(void *)item;
|
||||
|
||||
MatchType matchType;
|
||||
if (CheckEntry(searchStr, param->mNickName, param->mDisplayName, param->mFirstName, param->mLastName, param->mEmailAddress, &matchType))
|
||||
AddToResult(param->mNickName, param->mDisplayName, param->mFirstName, param->mLastName, param->mEmailAddress,
|
||||
param->mNotes, param->mIsMailList, matchType, results);
|
||||
MatchType matchType;
|
||||
if (CheckEntry(searchStr, param->mNickName, param->mDisplayName, param->mFirstName, param->mLastName, param->mEmailAddress, &matchType))
|
||||
AddToResult(param->mNickName, param->mDisplayName, param->mFirstName, param->mLastName, param->mEmailAddress,
|
||||
param->mNotes, param->mIsMailList, matchType, results);
|
||||
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return NS_ERROR_ABORT;
|
||||
|
@ -504,8 +503,7 @@ NS_IMETHODIMP nsAbAutoCompleteSession::OnStartLookup(const PRUnichar *uSearchStr
|
|||
PRBool enableAutocomplete = PR_TRUE;
|
||||
|
||||
NS_WITH_SERVICE(nsIPref, pPref, kPrefCID, &rv);
|
||||
if (NS_FAILED(rv) || !pPref)
|
||||
return NS_ERROR_FAILURE;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
pPref->GetBoolPref("mail.enable_autocomplete", &enableAutocomplete);
|
||||
|
||||
|
@ -531,7 +529,7 @@ NS_IMETHODIMP nsAbAutoCompleteSession::OnStartLookup(const PRUnichar *uSearchStr
|
|||
if (NS_SUCCEEDED(rv))
|
||||
if (NS_FAILED(SearchPreviousResults(&searchStrings, previousSearchResult, results)))
|
||||
{
|
||||
nsAutoString root; root.AssignWithConversion(kDirectoryDataSourceRoot);
|
||||
nsAutoString root; root.AssignWithConversion("abdirectory://");
|
||||
rv = SearchDirectory(root, &searchStrings, results, PR_TRUE);
|
||||
}
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ NS_IMETHODIMP nsAbBSDirectory::GetChildNodes(nsIEnumerator* *result)
|
|||
|
||||
if (server->dirType == PABDirectory)
|
||||
{
|
||||
nsString name; name.AssignWithConversion(server->fileName);
|
||||
nsAutoString name; name.AssignWithConversion(server->fileName);
|
||||
PRInt32 pos = name.Find("na2");
|
||||
if (pos >= 0) /* check: this is a 4.x file, remove when conversion is done */
|
||||
continue;
|
||||
|
@ -180,7 +180,7 @@ NS_IMETHODIMP nsAbBSDirectory::GetChildNodes(nsIEnumerator* *result)
|
|||
nsFileSpec* dbPath;
|
||||
abSession->GetUserProfileDirectory(&dbPath);
|
||||
|
||||
nsString file; file.AssignWithConversion(server->fileName);
|
||||
nsAutoString file; file.AssignWithConversion(server->fileName);
|
||||
(*dbPath) += file;
|
||||
|
||||
NS_WITH_SERVICE(nsIAddrDatabase, addrDBFactory, kAddressBookDBCID, &rv);
|
||||
|
@ -217,13 +217,13 @@ NS_IMETHODIMP nsAbBSDirectory::CreateNewDirectory(PRUint32 prefCount, const char
|
|||
switch (tolower(prefName[jk][0]))
|
||||
{
|
||||
case 'd':
|
||||
if (!PL_strcasecmp(prefName[jk], "description"))
|
||||
if (!nsCRT::strcasecmp(prefName[jk], "description"))
|
||||
{
|
||||
unicharDescription = (PRUnichar *)prefValue[jk];
|
||||
}
|
||||
break;
|
||||
case 'f':
|
||||
if (!PL_strcasecmp(prefName[jk], "fileName"))
|
||||
if (!nsCRT::strcasecmp(prefName[jk], "fileName"))
|
||||
{
|
||||
nsString descString(prefValue[jk]);
|
||||
PRInt32 unicharLength = descString.Length();
|
||||
|
@ -231,12 +231,12 @@ NS_IMETHODIMP nsAbBSDirectory::CreateNewDirectory(PRUint32 prefCount, const char
|
|||
}
|
||||
break;
|
||||
case 'm':
|
||||
if (!PL_strcasecmp(prefName[jk], "migrating"))
|
||||
if (!nsCRT::strcasecmp(prefName[jk], "migrating"))
|
||||
{
|
||||
nsString descString(prefValue[jk]);
|
||||
PRInt32 unicharLength = descString.Length();
|
||||
INTL_ConvertFromUnicode(prefValue[jk], unicharLength, &charMigrate);
|
||||
if (!PL_strcasecmp(charMigrate, "true"))
|
||||
if (!nsCRT::strcasecmp(charMigrate, "true"))
|
||||
{
|
||||
migrating = PR_TRUE;
|
||||
}
|
||||
|
@ -251,12 +251,7 @@ NS_IMETHODIMP nsAbBSDirectory::CreateNewDirectory(PRUint32 prefCount, const char
|
|||
}
|
||||
else
|
||||
{
|
||||
char *uri = nsnull;
|
||||
if (PL_strstr(charFileName, ".mab"))
|
||||
uri = PR_smprintf("%s%s", kDirectoryDataSourceRoot, charFileName);
|
||||
rv = CreateDirectoryByURI(unicharDescription, uri, migrating);
|
||||
if (uri)
|
||||
PR_smprintf_free(uri);
|
||||
rv = CreateDirectoryPAB(unicharDescription, charFileName, migrating);
|
||||
}
|
||||
|
||||
if (charFileName)
|
||||
|
@ -267,6 +262,37 @@ NS_IMETHODIMP nsAbBSDirectory::CreateNewDirectory(PRUint32 prefCount, const char
|
|||
return rv;
|
||||
}
|
||||
|
||||
nsresult nsAbBSDirectory::CreateDirectoryPAB(const PRUnichar *displayName, const char *fileName, PRBool migrating)
|
||||
{
|
||||
if (!displayName )
|
||||
{
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
DIR_Server * server = nsnull;
|
||||
DirectoryType dirType = PABDirectory;
|
||||
|
||||
DIR_AddNewAddressBook(displayName, fileName, migrating, dirType, &server);
|
||||
|
||||
char *uri = PR_smprintf("%s%s",kDirectoryDataSourceRoot, server->fileName);
|
||||
|
||||
nsCOMPtr<nsIAbDirectory> newDir;
|
||||
nsresult rv = AddDirectory(uri, getter_AddRefs(newDir));
|
||||
|
||||
if (uri)
|
||||
PR_smprintf_free(uri);
|
||||
if (NS_SUCCEEDED(rv) && newDir)
|
||||
{
|
||||
newDir->SetDirName((PRUnichar *)displayName);
|
||||
nsVoidKey key((void *)newDir);
|
||||
mServers.Put (&key, (void *)server);
|
||||
NotifyItemAdded(newDir);
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbBSDirectory::CreateDirectoryByURI(const PRUnichar *displayName, const char *uri, PRBool migrating)
|
||||
{
|
||||
if (!displayName || !uri)
|
||||
|
@ -330,7 +356,7 @@ NS_IMETHODIMP nsAbBSDirectory::DeleteDirectory(nsIAbDirectory *directory)
|
|||
{
|
||||
nsCOMPtr<nsIAbDirectory> listDir(do_QueryInterface(pSupport, &rv));
|
||||
nsCOMPtr<nsIAbMDBDirectory> dblistDir(do_QueryInterface(pSupport, &rv));
|
||||
if (listDir)
|
||||
if (listDir && dblistDir)
|
||||
{
|
||||
directory->DeleteDirectory(listDir);
|
||||
dblistDir->RemoveElementsFromAddressList();
|
||||
|
|
|
@ -52,6 +52,7 @@ protected:
|
|||
|
||||
nsresult NotifyItemAdded(nsISupports *item);
|
||||
nsresult NotifyItemDeleted(nsISupports *item);
|
||||
nsresult CreateDirectoryPAB(const PRUnichar *displayName, const char *fileName, PRBool migrating);
|
||||
|
||||
protected:
|
||||
PRBool mInitialized;
|
||||
|
|
|
@ -180,9 +180,7 @@ nsresult nsAbCard::AddSubNode(nsAutoString name, nsIAbCard **childCard)
|
|||
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCAutoString uri;
|
||||
uri.Append(mURI);
|
||||
|
@ -196,11 +194,9 @@ nsresult nsAbCard::AddSubNode(nsAutoString name, nsIAbCard **childCard)
|
|||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(uri.get(), getter_AddRefs(res));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsCOMPtr<nsIAbCard> card(do_QueryInterface(res, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*childCard = card;
|
||||
NS_IF_ADDREF(*childCard);
|
||||
|
|
|
@ -33,21 +33,11 @@
|
|||
#include "rdf.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
#include "nsAddrDatabase.h"
|
||||
#include "nsIAddrBookSession.h"
|
||||
#include "nsIPref.h"
|
||||
#include "nsIAddressBook.h"
|
||||
#include "nsIAbDirectory.h"
|
||||
|
||||
static NS_DEFINE_CID(kAddressBookDBCID, NS_ADDRDATABASE_CID);
|
||||
static NS_DEFINE_CID(kAddrBookSessionCID, NS_ADDRBOOKSESSION_CID);
|
||||
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
|
||||
static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
|
||||
static NS_DEFINE_CID(kAddrBookCID, NS_ADDRESSBOOK_CID);
|
||||
|
||||
|
||||
/* The definition is nsAddressBook.cpp */
|
||||
extern const char *kDirectoryDataSourceRoot;
|
||||
extern const char *kCardDataSourceRoot;
|
||||
|
||||
/* The definition is nsAddrDatabase.cpp */
|
||||
extern const char *kMainPersonalAddressBook;
|
||||
|
@ -96,56 +86,16 @@ nsAbCardProperty::nsAbCardProperty(void)
|
|||
NS_INIT_REFCNT();
|
||||
|
||||
m_LastModDate = 0;
|
||||
m_Key = 0;
|
||||
|
||||
m_PreferMailFormat = nsIAbPreferMailFormat::unknown;
|
||||
|
||||
m_bIsMailList = PR_FALSE;
|
||||
m_MailListURI = 0;
|
||||
|
||||
m_dbTableID = 0;
|
||||
m_dbRowID = 0;
|
||||
|
||||
m_pAnonymousStrAttributes = nsnull;
|
||||
m_pAnonymousStrValues = nsnull;
|
||||
m_pAnonymousIntAttributes = nsnull;
|
||||
m_pAnonymousIntValues = nsnull;
|
||||
m_pAnonymousBoolAttributes = nsnull;
|
||||
m_pAnonymousBoolValues = nsnull;
|
||||
}
|
||||
|
||||
nsAbCardProperty::~nsAbCardProperty(void)
|
||||
{
|
||||
if (m_pAnonymousStrAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousStrAttributes);
|
||||
if (m_pAnonymousIntAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousIntAttributes);
|
||||
if (m_pAnonymousBoolAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousBoolAttributes);
|
||||
|
||||
if (m_pAnonymousStrValues)
|
||||
RemoveAnonymousList(m_pAnonymousStrValues);
|
||||
if (m_pAnonymousIntValues)
|
||||
RemoveAnonymousList(m_pAnonymousIntValues);
|
||||
if (m_pAnonymousBoolValues)
|
||||
RemoveAnonymousList(m_pAnonymousBoolValues);
|
||||
|
||||
if (mCardDatabase)
|
||||
mCardDatabase = null_nsCOMPtr();
|
||||
}
|
||||
|
||||
nsresult nsAbCardProperty::RemoveAnonymousList(nsVoidArray* pArray)
|
||||
{
|
||||
if (pArray)
|
||||
{
|
||||
PRUint32 count = pArray->Count();
|
||||
for (int i = count - 1; i >= 0; i--)
|
||||
{
|
||||
void* pPtr = pArray->ElementAt(i);
|
||||
PR_FREEIF(pPtr);
|
||||
pArray->RemoveElementAt(i);
|
||||
}
|
||||
delete pArray;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF(nsAbCardProperty)
|
||||
|
@ -191,7 +141,7 @@ nsresult nsAbCardProperty::SetAttributeName(const PRUnichar *aName, nsString& ar
|
|||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetPreferMailFormat(PRUint32 *aFormat)
|
||||
{
|
||||
*aFormat = m_PreferMailFormat;
|
||||
*aFormat = m_PreferMailFormat;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -213,28 +163,31 @@ NS_IMETHODIMP nsAbCardProperty::SetIsMailList(PRBool aIsMailList)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetDbTableID(PRUint32 *aDbTableID)
|
||||
NS_IMETHODIMP nsAbCardProperty::GetMailListURI(char **aMailListURI)
|
||||
{
|
||||
*aDbTableID = m_dbTableID;
|
||||
return NS_OK;
|
||||
if (aMailListURI)
|
||||
{
|
||||
if (m_MailListURI)
|
||||
*aMailListURI = nsCRT::strdup(m_MailListURI);
|
||||
else
|
||||
*aMailListURI = nsCRT::strdup("");
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetDbTableID(PRUint32 aDbTableID)
|
||||
NS_IMETHODIMP nsAbCardProperty::SetMailListURI(const char *aMailListURI)
|
||||
{
|
||||
m_dbTableID = aDbTableID;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetDbRowID(PRUint32 *aDbRowID)
|
||||
{
|
||||
*aDbRowID = m_dbRowID;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetDbRowID(PRUint32 aDbRowID)
|
||||
{
|
||||
m_dbRowID = aDbRowID;
|
||||
return NS_OK;
|
||||
if (aMailListURI)
|
||||
{
|
||||
nsCRT::free (m_MailListURI);
|
||||
m_MailListURI = nsCRT::strdup(aMailListURI);
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetCardValue(const char *attrname, PRUnichar **value)
|
||||
|
@ -311,10 +264,11 @@ NS_IMETHODIMP nsAbCardProperty::GetCardValue(const char *attrname, PRUnichar **v
|
|||
GetCustom4(value);
|
||||
else if (!PL_strcmp(attrname, kNotesColumn))
|
||||
GetNotes(value);
|
||||
else if (!PL_strcmp(attrname, kPreferMailFormatColumn))
|
||||
{ // PreferMailFormat is interger, not a string
|
||||
return NS_OK;
|
||||
}
|
||||
else if (!PL_strcmp(attrname, kPreferMailFormatColumn))
|
||||
{ // PreferMailFormat is interger, not a string
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* else handle pass down attribute */
|
||||
|
||||
return NS_OK;
|
||||
|
@ -397,486 +351,17 @@ NS_IMETHODIMP nsAbCardProperty::SetCardValue(const char *attrname, const PRUnich
|
|||
rv = SetDepartment((PRUnichar *)value);
|
||||
else if (!PL_strcmp(attrname, kCompanyColumn))
|
||||
rv = SetCompany((PRUnichar *)value);
|
||||
else if (!PL_strcmp(attrname, kPreferMailFormatColumn))
|
||||
{ // PreferMailFormat is interger, not a string
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
nsAutoString cardValue(value);
|
||||
char* valueStr = cardValue.ToNewUTF8String();
|
||||
rv = SetAnonymousStringAttribute(attrname, valueStr);
|
||||
nsMemory::Free(valueStr);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAbDatabase(nsIAddrDatabase* database)
|
||||
{
|
||||
mCardDatabase = database;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousStrAttrubutesList(nsVoidArray **attrlist)
|
||||
{
|
||||
if (attrlist && m_pAnonymousStrAttributes)
|
||||
{
|
||||
*attrlist = m_pAnonymousStrAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousStrValuesList(nsVoidArray **valuelist)
|
||||
{
|
||||
if (valuelist && m_pAnonymousStrValues)
|
||||
{
|
||||
*valuelist = m_pAnonymousStrValues;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousIntAttrubutesList(nsVoidArray **attrlist)
|
||||
{
|
||||
if (attrlist && m_pAnonymousIntAttributes)
|
||||
{
|
||||
*attrlist = m_pAnonymousIntAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousIntValuesList(nsVoidArray **valuelist)
|
||||
{
|
||||
if (valuelist && m_pAnonymousIntValues)
|
||||
{
|
||||
*valuelist = m_pAnonymousIntValues;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousBoolAttrubutesList(nsVoidArray **attrlist)
|
||||
{
|
||||
if (attrlist && m_pAnonymousBoolAttributes)
|
||||
{
|
||||
*attrlist = m_pAnonymousBoolAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousBoolValuesList(nsVoidArray **valuelist)
|
||||
{
|
||||
if (valuelist && m_pAnonymousBoolValues)
|
||||
{
|
||||
*valuelist = m_pAnonymousBoolValues;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
nsresult nsAbCardProperty::SetAnonymousAttribute
|
||||
(nsVoidArray** pAttrAray, nsVoidArray** pValueArray, void *attrname, void *value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsVoidArray* pAttributes = *pAttrAray;
|
||||
nsVoidArray* pValues = *pValueArray;
|
||||
|
||||
if (!pAttributes && !pValues)
|
||||
{
|
||||
pAttributes = new nsVoidArray();
|
||||
pValues = new nsVoidArray();
|
||||
*pAttrAray = pAttributes;
|
||||
*pValueArray = pValues;
|
||||
}
|
||||
if (pAttributes && pValues)
|
||||
{
|
||||
if (attrname && value)
|
||||
{
|
||||
pAttributes->AppendElement(attrname);
|
||||
pValues->AppendElement(value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousStringAttribute
|
||||
(const char *attrname, const char *value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
char* pValue = PL_strdup(value);
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousStrAttributes,
|
||||
&m_pAnonymousStrValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousIntAttribute
|
||||
(const char *attrname, PRUint32 value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
PRUint32* pValue = (PRUint32 *)PR_Calloc(1, sizeof(PRUint32));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousIntAttributes,
|
||||
&m_pAnonymousIntValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousBoolAttribute
|
||||
(const char *attrname, PRBool value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
PRBool* pValue = (PRBool *)PR_Calloc(1, sizeof(PRBool));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousBoolAttributes,
|
||||
&m_pAnonymousBoolValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::AddAnonymousAttributesToDB()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
if (mCardDatabase)
|
||||
mCardDatabase = null_nsCOMPtr();
|
||||
rv = GetCardDatabase(kPersonalAddressbookUri);
|
||||
if (NS_SUCCEEDED(rv) && mCardDatabase)
|
||||
rv = mCardDatabase->AddAnonymousAttributesFromCard(this);
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::EditAnonymousAttributesInDB()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
if (mCardDatabase)
|
||||
mCardDatabase = null_nsCOMPtr();
|
||||
rv = GetCardDatabase(kPersonalAddressbookUri);
|
||||
if (NS_SUCCEEDED(rv) && mCardDatabase)
|
||||
rv = mCardDatabase->EditAnonymousAttributesFromCard(this);
|
||||
return rv;
|
||||
}
|
||||
|
||||
/* caller need to PR_smprintf_free *uri */
|
||||
NS_IMETHODIMP nsAbCardProperty::GetCardURI(char **uri)
|
||||
{
|
||||
char* cardURI = nsnull;
|
||||
nsFileSpec *filePath = nsnull;
|
||||
if (mCardDatabase)
|
||||
{
|
||||
mCardDatabase->GetDbPath(&filePath);
|
||||
if (filePath)
|
||||
{
|
||||
char* file = nsnull;
|
||||
file = filePath->GetLeafName();
|
||||
if (file && m_dbRowID)
|
||||
{
|
||||
if (m_bIsMailList)
|
||||
cardURI = PR_smprintf("%s%s/ListCard%ld", kCardDataSourceRoot, file, m_dbRowID);
|
||||
else
|
||||
cardURI = PR_smprintf("%s%s/Card%ld", kCardDataSourceRoot, file, m_dbRowID);
|
||||
}
|
||||
if (file)
|
||||
nsCRT::free(file);
|
||||
delete filePath;
|
||||
}
|
||||
}
|
||||
if (cardURI)
|
||||
{
|
||||
*uri = cardURI;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
nsresult nsAbCardProperty::GetCardDatabase(const char *uri)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsFileSpec* dbPath;
|
||||
abSession->GetUserProfileDirectory(&dbPath);
|
||||
|
||||
const char* file = nsnull;
|
||||
file = &(uri[PL_strlen(kDirectoryDataSourceRoot)]);
|
||||
(*dbPath) += file;
|
||||
|
||||
if (dbPath->Exists())
|
||||
{
|
||||
NS_WITH_SERVICE(nsIAddrDatabase, addrDBFactory, kAddressBookDBCID, &rv);
|
||||
|
||||
if (NS_SUCCEEDED(rv) && addrDBFactory)
|
||||
rv = addrDBFactory->Open(dbPath, PR_TRUE, getter_AddRefs(mCardDatabase), PR_TRUE);
|
||||
}
|
||||
else
|
||||
rv = NS_ERROR_FAILURE;
|
||||
delete dbPath;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::AddCardToDatabase(const char *uri)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRBool bInMailList = PR_FALSE;
|
||||
|
||||
if (!mCardDatabase && uri)
|
||||
rv = GetCardDatabase(uri);
|
||||
if (NS_FAILED(rv)) //maillist
|
||||
{
|
||||
NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(mCardDatabase));
|
||||
bInMailList = PR_TRUE;
|
||||
}
|
||||
|
||||
if (mCardDatabase)
|
||||
{
|
||||
if (bInMailList)
|
||||
{
|
||||
char* listString = PL_strrstr(uri, "MailList");
|
||||
if (listString)
|
||||
{
|
||||
listString += PL_strlen("MailList");
|
||||
PRInt32 listID = atoi(listString);
|
||||
mCardDatabase->CreateNewListCardAndAddToDB(listID, this, PR_TRUE);
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
else
|
||||
mCardDatabase->CreateNewCardAndAddToDB(this, PR_TRUE);
|
||||
mCardDatabase->Commit(kLargeCommit);
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::DropCardToDatabase(const char *uri)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIAddrDatabase> dropDatabase;
|
||||
|
||||
NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(dropDatabase));
|
||||
|
||||
if (dropDatabase)
|
||||
{
|
||||
dropDatabase->CreateNewCardAndAddToDB(this, PR_FALSE);
|
||||
dropDatabase->Commit(kLargeCommit);
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::EditCardToDatabase(const char *uri)
|
||||
{
|
||||
if (!mCardDatabase && uri)
|
||||
GetCardDatabase(uri);
|
||||
|
||||
if (mCardDatabase)
|
||||
{
|
||||
mCardDatabase->EditCard(this, PR_TRUE);
|
||||
mCardDatabase->Commit(kLargeCommit);
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::CopyCard(nsIAbCard* srcCard)
|
||||
{
|
||||
PRUnichar *str = nsnull;
|
||||
srcCard->GetFirstName(&str);
|
||||
SetFirstName(str);
|
||||
PR_FREEIF(str);
|
||||
|
||||
srcCard->GetLastName(&str);
|
||||
SetLastName(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetDisplayName(&str);
|
||||
SetDisplayName(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetNickName(&str);
|
||||
SetNickName(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetPrimaryEmail(&str);
|
||||
SetPrimaryEmail(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetSecondEmail(&str);
|
||||
SetSecondEmail(str);
|
||||
PR_FREEIF(str);
|
||||
|
||||
PRUint32 format = nsIAbPreferMailFormat::unknown;
|
||||
srcCard->GetPreferMailFormat(&format);
|
||||
SetPreferMailFormat(format);
|
||||
|
||||
srcCard->GetWorkPhone(&str);
|
||||
SetWorkPhone(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomePhone(&str);
|
||||
SetHomePhone(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetFaxNumber(&str);
|
||||
SetFaxNumber(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetPagerNumber(&str);
|
||||
SetPagerNumber(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCellularNumber(&str);
|
||||
SetCellularNumber(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeAddress(&str);
|
||||
SetHomeAddress(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeAddress2(&str);
|
||||
SetHomeAddress2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeCity(&str);
|
||||
SetHomeCity(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeState(&str);
|
||||
SetHomeState(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeZipCode(&str);
|
||||
SetHomeZipCode(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeCountry(&str);
|
||||
SetHomeCountry(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkAddress(&str);
|
||||
SetWorkAddress(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkAddress2(&str);
|
||||
SetWorkAddress2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkCity(&str);
|
||||
SetWorkCity(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkState(&str);
|
||||
SetWorkState(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkZipCode(&str);
|
||||
SetWorkZipCode(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkCountry(&str);
|
||||
SetWorkCountry(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetJobTitle(&str);
|
||||
SetJobTitle(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetDepartment(&str);
|
||||
SetDepartment(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCompany(&str);
|
||||
SetCompany(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWebPage1(&str);
|
||||
SetWebPage1(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWebPage2(&str);
|
||||
SetWebPage2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetBirthYear(&str);
|
||||
SetBirthYear(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetBirthMonth(&str);
|
||||
SetBirthMonth(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetBirthDay(&str);
|
||||
SetBirthDay(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom1(&str);
|
||||
SetCustom1(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom2(&str);
|
||||
SetCustom2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom3(&str);
|
||||
SetCustom3(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom4(&str);
|
||||
SetCustom4(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetNotes(&str);
|
||||
SetNotes(str);
|
||||
PR_FREEIF(str);
|
||||
|
||||
PRUint32 tableID, rowID;
|
||||
srcCard->GetDbTableID(&tableID);
|
||||
SetDbTableID(tableID);
|
||||
srcCard->GetDbRowID(&rowID);
|
||||
SetDbRowID(rowID);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetCollationKey(const PRUnichar *str, PRUnichar **key)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsAutoString resultStr;
|
||||
|
||||
if (mCardDatabase)
|
||||
{
|
||||
rv = mCardDatabase->CreateCollationKey(str, resultStr);
|
||||
*key = resultStr.ToNewUnicode();
|
||||
}
|
||||
else
|
||||
else if (!PL_strcmp(attrname, kPreferMailFormatColumn))
|
||||
{ // PreferMailFormat is interger, not a string
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
rv = NS_ERROR_FAILURE;
|
||||
|
||||
return rv;
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::GetFirstName(PRUnichar * *aFirstName)
|
||||
{ return GetAttributeName(aFirstName, m_FirstName); }
|
||||
|
@ -1025,14 +510,6 @@ NS_IMETHODIMP
|
|||
nsAbCardProperty::GetLastModifiedDate(PRUint32 *aLastModifiedDate)
|
||||
{ *aLastModifiedDate = m_LastModDate; return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::GetKey(PRUint32 *aKey)
|
||||
{ *aKey = m_Key; return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::SetRecordKey(PRUint32 key)
|
||||
{ m_Key = key; return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::SetFirstName(const PRUnichar * aFirstName)
|
||||
{ return SetAttributeName(aFirstName, m_FirstName); }
|
||||
|
@ -1181,6 +658,13 @@ NS_IMETHODIMP
|
|||
nsAbCardProperty::SetLastModifiedDate(PRUint32 aLastModifiedDate)
|
||||
{ return m_LastModDate = aLastModifiedDate; }
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::SetName(const PRUnichar * aName)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::GetName(PRUnichar * *aName)
|
||||
{
|
||||
|
@ -1188,8 +672,7 @@ nsAbCardProperty::GetName(PRUnichar * *aName)
|
|||
// get name depend on "mail.addr_book.lastnamefirst"
|
||||
// 0= displayname, 1= lastname first, 2=firstname first
|
||||
NS_WITH_SERVICE(nsIPref, pPref, kPrefCID, &rv);
|
||||
if (NS_FAILED(rv) || !pPref)
|
||||
return NS_ERROR_FAILURE;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
PRInt32 lastNameFirst = 0;
|
||||
rv = pPref->GetIntPref("mail.addr_book.lastnamefirst", &lastNameFirst);
|
||||
|
@ -1202,18 +685,16 @@ nsAbCardProperty::GetName(PRUnichar * *aName)
|
|||
nsString name;
|
||||
nsString firstName;
|
||||
nsString lastName;
|
||||
PRUnichar *str = nsnull;
|
||||
GetFirstName(&str);
|
||||
nsXPIDLString str;
|
||||
GetFirstName(getter_Copies(str));
|
||||
if (str)
|
||||
{
|
||||
firstName = str;
|
||||
PR_FREEIF(str);
|
||||
}
|
||||
GetLastName(&str);
|
||||
GetLastName(getter_Copies(str));
|
||||
if (str)
|
||||
{
|
||||
lastName = str;
|
||||
PR_FREEIF(str);
|
||||
}
|
||||
|
||||
if (lastName.Length() == 0)
|
||||
|
@ -1250,51 +731,147 @@ nsAbCardProperty::GetName(PRUnichar * *aName)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::SetName(const PRUnichar * aName)
|
||||
NS_IMETHODIMP nsAbCardProperty::Copy(nsIAbCard* srcCard)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
nsXPIDLString str;
|
||||
srcCard->GetFirstName(getter_Copies(str));
|
||||
SetFirstName(str);
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbCardProperty::GetPrintCardUrl(char * *aPrintCardUrl)
|
||||
{
|
||||
static const char *kAbPrintUrlFormat = "addbook:printone?email=%s&folder=%s";
|
||||
srcCard->GetLastName(getter_Copies(str));
|
||||
SetLastName(str);
|
||||
srcCard->GetDisplayName(getter_Copies(str));
|
||||
SetDisplayName(str);
|
||||
srcCard->GetNickName(getter_Copies(str));
|
||||
SetNickName(str);
|
||||
srcCard->GetPrimaryEmail(getter_Copies(str));
|
||||
SetPrimaryEmail(str);
|
||||
srcCard->GetSecondEmail(getter_Copies(str));
|
||||
SetSecondEmail(str);
|
||||
|
||||
if (!aPrintCardUrl)
|
||||
return NS_OK;
|
||||
PRUint32 format = nsIAbPreferMailFormat::unknown;
|
||||
srcCard->GetPreferMailFormat(&format);
|
||||
SetPreferMailFormat(format);
|
||||
|
||||
PRUnichar *email = nsnull;
|
||||
GetPrimaryEmail(&email);
|
||||
nsString emailStr(email);
|
||||
|
||||
if (emailStr.Length() == 0)
|
||||
{
|
||||
*aPrintCardUrl = PR_smprintf("");
|
||||
return NS_OK;
|
||||
}
|
||||
PRUnichar *dirName = nsnull;
|
||||
if (mCardDatabase)
|
||||
mCardDatabase->GetDirectoryName(&dirName);
|
||||
nsString dirNameStr(dirName);
|
||||
if (dirNameStr.Length() == 0)
|
||||
{
|
||||
*aPrintCardUrl = PR_smprintf("");
|
||||
return NS_OK;
|
||||
}
|
||||
dirNameStr.ReplaceSubstring(NS_ConvertASCIItoUCS2(" "), NS_ConvertASCIItoUCS2("%20"));
|
||||
|
||||
char *emailCharStr = emailStr.ToNewUTF8String();
|
||||
char *dirCharStr = dirNameStr.ToNewUTF8String();
|
||||
|
||||
*aPrintCardUrl = PR_smprintf(kAbPrintUrlFormat, emailCharStr, dirCharStr);
|
||||
|
||||
nsMemory::Free(emailCharStr);
|
||||
nsMemory::Free(dirCharStr);
|
||||
|
||||
PR_FREEIF(dirName);
|
||||
PR_FREEIF(email);
|
||||
srcCard->GetWorkPhone(getter_Copies(str));
|
||||
SetWorkPhone(str);
|
||||
srcCard->GetHomePhone(getter_Copies(str));
|
||||
SetHomePhone(str);
|
||||
srcCard->GetFaxNumber(getter_Copies(str));
|
||||
SetFaxNumber(str);
|
||||
srcCard->GetPagerNumber(getter_Copies(str));
|
||||
SetPagerNumber(str);
|
||||
srcCard->GetCellularNumber(getter_Copies(str));
|
||||
SetCellularNumber(str);
|
||||
srcCard->GetHomeAddress(getter_Copies(str));
|
||||
SetHomeAddress(str);
|
||||
srcCard->GetHomeAddress2(getter_Copies(str));
|
||||
SetHomeAddress2(str);
|
||||
srcCard->GetHomeCity(getter_Copies(str));
|
||||
SetHomeCity(str);
|
||||
srcCard->GetHomeState(getter_Copies(str));
|
||||
SetHomeState(str);
|
||||
srcCard->GetHomeZipCode(getter_Copies(str));
|
||||
SetHomeZipCode(str);
|
||||
srcCard->GetHomeCountry(getter_Copies(str));
|
||||
SetHomeCountry(str);
|
||||
srcCard->GetWorkAddress(getter_Copies(str));
|
||||
SetWorkAddress(str);
|
||||
srcCard->GetWorkAddress2(getter_Copies(str));
|
||||
SetWorkAddress2(str);
|
||||
srcCard->GetWorkCity(getter_Copies(str));
|
||||
SetWorkCity(str);
|
||||
srcCard->GetWorkState(getter_Copies(str));
|
||||
SetWorkState(str);
|
||||
srcCard->GetWorkZipCode(getter_Copies(str));
|
||||
SetWorkZipCode(str);
|
||||
srcCard->GetWorkCountry(getter_Copies(str));
|
||||
SetWorkCountry(str);
|
||||
srcCard->GetJobTitle(getter_Copies(str));
|
||||
SetJobTitle(str);
|
||||
srcCard->GetDepartment(getter_Copies(str));
|
||||
SetDepartment(str);
|
||||
srcCard->GetCompany(getter_Copies(str));
|
||||
SetCompany(str);
|
||||
srcCard->GetWebPage1(getter_Copies(str));
|
||||
SetWebPage1(str);
|
||||
srcCard->GetWebPage2(getter_Copies(str));
|
||||
SetWebPage2(str);
|
||||
srcCard->GetBirthYear(getter_Copies(str));
|
||||
SetBirthYear(str);
|
||||
srcCard->GetBirthMonth(getter_Copies(str));
|
||||
SetBirthMonth(str);
|
||||
srcCard->GetBirthDay(getter_Copies(str));
|
||||
SetBirthDay(str);
|
||||
srcCard->GetCustom1(getter_Copies(str));
|
||||
SetCustom1(str);
|
||||
srcCard->GetCustom2(getter_Copies(str));
|
||||
SetCustom2(str);
|
||||
srcCard->GetCustom3(getter_Copies(str));
|
||||
SetCustom3(str);
|
||||
srcCard->GetCustom4(getter_Copies(str));
|
||||
SetCustom4(str);
|
||||
srcCard->GetNotes(getter_Copies(str));
|
||||
SetNotes(str);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::AddCardToDatabase(const char *uri, nsIAbCard **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(uri, getter_AddRefs(res));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(res, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAbCard> cardInstance;
|
||||
rv = directory->AddCard (this, getter_AddRefs (cardInstance));
|
||||
|
||||
*_retval = cardInstance;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::DropCardToDatabase(const char *uri, nsIAbCard **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(uri, getter_AddRefs(res));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(res, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAbCard> cardInstance;
|
||||
rv = directory->DropCard (this, getter_AddRefs (cardInstance));
|
||||
|
||||
*_retval = cardInstance;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
// nsIAbCard NOT IMPLEMENTED methods
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::EditCardToDatabase(const char *uri)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetPrintCardUrl(char * *aPrintCardUrl)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetCollationKey(const PRUnichar *str, PRUnichar **key)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
|
|
@ -44,21 +44,15 @@ class nsAbCardProperty: public nsIAbCard
|
|||
public:
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIABCARD
|
||||
NS_DECL_NSIABCARD
|
||||
|
||||
nsAbCardProperty(void);
|
||||
virtual ~nsAbCardProperty(void);
|
||||
|
||||
// nsIAbCard methods:
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
nsresult GetCardDatabase(const char *uri);
|
||||
nsresult GetAttributeName(PRUnichar **aName, nsString& value);
|
||||
nsresult SetAttributeName(const PRUnichar *aName, nsString& arrtibute);
|
||||
nsresult RemoveAnonymousList(nsVoidArray* pArray);
|
||||
nsresult SetAnonymousAttribute(nsVoidArray** pAttrAray,
|
||||
nsVoidArray** pValueArray, void *attrname, void *value);
|
||||
|
||||
nsString m_FirstName;
|
||||
nsString m_LastName;
|
||||
|
@ -97,23 +91,11 @@ protected:
|
|||
nsString m_Custom4;
|
||||
nsString m_Note;
|
||||
PRUint32 m_LastModDate;
|
||||
PRUint32 m_Key;
|
||||
PRUint32 m_Key;
|
||||
PRUint32 m_PreferMailFormat;
|
||||
|
||||
PRBool m_bIsMailList;
|
||||
|
||||
PRUint32 m_dbTableID;
|
||||
PRUint32 m_dbRowID;
|
||||
|
||||
nsCOMPtr<nsIAddrDatabase> mCardDatabase;
|
||||
|
||||
nsVoidArray* m_pAnonymousStrAttributes;
|
||||
nsVoidArray* m_pAnonymousStrValues;
|
||||
nsVoidArray* m_pAnonymousIntAttributes;
|
||||
nsVoidArray* m_pAnonymousIntValues;
|
||||
nsVoidArray* m_pAnonymousBoolAttributes;
|
||||
nsVoidArray* m_pAnonymousBoolValues;
|
||||
|
||||
char* m_MailListURI;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -29,30 +29,19 @@
|
|||
#include "nsXPIDLString.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsAbBaseCID.h"
|
||||
#include "nsAbCard.h"
|
||||
#include "nsAddrDatabase.h"
|
||||
#include "nsIAbListener.h"
|
||||
#include "nsIAddrBookSession.h"
|
||||
#include "nsIAddressBook.h"
|
||||
#include "nsIAbCard.h"
|
||||
|
||||
#include "rdf.h"
|
||||
|
||||
#include "mdb.h"
|
||||
#include "prlog.h"
|
||||
#include "prprf.h"
|
||||
#include "prmem.h"
|
||||
|
||||
/* The definition is nsAddressBook.cpp */
|
||||
extern const char *kDirectoryDataSourceRoot;
|
||||
|
||||
|
||||
static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
|
||||
|
||||
static NS_DEFINE_CID(kAbCardCID, NS_ABCARD_CID);
|
||||
static NS_DEFINE_CID(kAddrBookSessionCID, NS_ADDRBOOKSESSION_CID);
|
||||
static NS_DEFINE_CID(kAddrBookCID, NS_ADDRESSBOOK_CID);
|
||||
|
||||
nsAbDirProperty::nsAbDirProperty(void)
|
||||
: m_LastModifiedDate(0),
|
||||
m_DbPath(nsnull), m_Server(nsnull)
|
||||
: m_LastModifiedDate(0)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
|
||||
|
@ -61,7 +50,6 @@ nsAbDirProperty::nsAbDirProperty(void)
|
|||
|
||||
nsAbDirProperty::~nsAbDirProperty(void)
|
||||
{
|
||||
PR_FREEIF(m_DbPath);
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF(nsAbDirProperty)
|
||||
|
@ -83,28 +71,6 @@ NS_IMETHODIMP nsAbDirProperty::QueryInterface(REFNSIID aIID, void** aResult)
|
|||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::GetDirFilePath(char **dbPath)
|
||||
{
|
||||
if (m_Server && m_Server->fileName)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsFileSpec* dbFile = nsnull;
|
||||
|
||||
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
|
||||
if(NS_SUCCEEDED(rv))
|
||||
abSession->GetUserProfileDirectory(&dbFile);
|
||||
|
||||
(*dbFile) += m_Server->fileName;
|
||||
char* file = PL_strdup(dbFile->GetCString());
|
||||
*dbPath = file;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::GetDirName(PRUnichar **aDirName)
|
||||
{
|
||||
if (aDirName)
|
||||
|
@ -146,83 +112,6 @@ NS_IMETHODIMP nsAbDirProperty::SetLastModifiedDate(PRUint32 aLastModifiedDate)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::GetServer(DIR_Server * *aServer)
|
||||
{
|
||||
if (aServer)
|
||||
{
|
||||
*aServer = m_Server;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::SetServer(DIR_Server * aServer)
|
||||
{
|
||||
m_Server = aServer;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::GetChildNodes(nsIEnumerator **childList)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::GetChildCards(nsIEnumerator **childCards)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::AddChildCards(const char *uriName, nsIAbCard **childCard)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::AddDirectory(const char *uriName, nsIAbDirectory **childDir)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::DeleteDirectory(nsIAbDirectory *dierctory)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::DeleteCards(nsISupportsArray *cards)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::HasCard(nsIAbCard *cards, PRBool *hasCard)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::HasDirectory(nsIAbDirectory *dir, PRBool *hasDir)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::CreateNewDirectory(const PRUnichar *dirName, const char *fileName, PRBool migrating)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::CreateNewMailingList(const char* uri, nsIAbDirectory *list)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::GetDirUri(char **uri)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::ClearDatabase()
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::NotifyDirItemAdded(nsISupports *item)
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::RemoveElementsFromAddressList()
|
||||
{ return NS_OK; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::RemoveEmailAddressAt(PRUint32 aIndex)
|
||||
{ return NS_OK; }
|
||||
|
||||
nsresult nsAbDirProperty::GetAttributeName(PRUnichar **aName, nsString& value)
|
||||
{
|
||||
if (aName)
|
||||
|
@ -263,18 +152,6 @@ NS_IMETHODIMP nsAbDirProperty::GetDescription(PRUnichar * *aDescription)
|
|||
NS_IMETHODIMP nsAbDirProperty::SetDescription(const PRUnichar * aDescription)
|
||||
{ return SetAttributeName(aDescription, m_Description); }
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::GetDbRowID(PRUint32 *aDbRowID)
|
||||
{
|
||||
*aDbRowID = m_dbRowID;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::SetDbRowID(PRUint32 aDbRowID)
|
||||
{
|
||||
m_dbRowID = aDbRowID;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::GetIsMailList(PRBool *aIsMailList)
|
||||
{
|
||||
*aIsMailList = m_bIsMailList;
|
||||
|
@ -290,7 +167,9 @@ NS_IMETHODIMP nsAbDirProperty::SetIsMailList(PRBool aIsMailList)
|
|||
NS_IMETHODIMP nsAbDirProperty::GetAddressLists(nsISupportsArray * *aAddressLists)
|
||||
{
|
||||
if (!m_AddressList)
|
||||
{
|
||||
NS_NewISupportsArray(getter_AddRefs(m_AddressList));
|
||||
}
|
||||
|
||||
*aAddressLists = m_AddressList;
|
||||
NS_ADDREF(*aAddressLists);
|
||||
|
@ -303,119 +182,33 @@ NS_IMETHODIMP nsAbDirProperty::SetAddressLists(nsISupportsArray * aAddressLists)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* add mailing list to the parent directory */
|
||||
NS_IMETHODIMP nsAbDirProperty::AddMailListToDirectory(nsIAbDirectory *mailList)
|
||||
{
|
||||
if (!m_AddressList)
|
||||
NS_NewISupportsArray(getter_AddRefs(m_AddressList));
|
||||
PRUint32 i, count;
|
||||
m_AddressList->Count(&count);
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
nsresult err;
|
||||
nsCOMPtr<nsISupports> pSupport = getter_AddRefs(m_AddressList->ElementAt(i));
|
||||
nsCOMPtr<nsIAbDirectory> pList(do_QueryInterface(pSupport, &err));
|
||||
if (mailList == pList.get())
|
||||
return NS_OK;
|
||||
}
|
||||
m_AddressList->AppendElement(mailList);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* add addresses to the mailing list */
|
||||
NS_IMETHODIMP nsAbDirProperty::AddAddressToList(nsIAbCard *card)
|
||||
{
|
||||
if (!m_AddressList)
|
||||
NS_NewISupportsArray(getter_AddRefs(m_AddressList));
|
||||
PRUint32 i, count;
|
||||
m_AddressList->Count(&count);
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
nsresult err;
|
||||
nsCOMPtr<nsISupports> pSupport = getter_AddRefs(m_AddressList->ElementAt(i));
|
||||
nsCOMPtr<nsIAbCard> pCard(do_QueryInterface(pSupport, &err));
|
||||
if (card == pCard.get())
|
||||
return NS_OK;
|
||||
}
|
||||
m_AddressList->AppendElement(card);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::AddMailListToDatabase(const char *uri)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAddrDatabase> listDatabase;
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(uri, getter_AddRefs(res));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(listDatabase));
|
||||
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(res, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (listDatabase)
|
||||
{
|
||||
listDatabase->CreateMailListAndAddToDB(this, PR_TRUE);
|
||||
listDatabase->Commit(kLargeCommit);
|
||||
listDatabase = null_nsCOMPtr();
|
||||
rv = directory->AddMailList(this);
|
||||
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
nsCOMPtr<nsIRDFResource> parentResource;
|
||||
rv = rdfService->GetResource(uri, getter_AddRefs(parentResource));
|
||||
nsCOMPtr<nsIAbDirectory> parentDir = do_QueryInterface(parentResource);
|
||||
if (!parentDir)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
char *listUri = PR_smprintf("%s/MailList%ld", uri, m_dbRowID);
|
||||
if (listUri)
|
||||
{
|
||||
parentDir->CreateNewMailingList(listUri, this);
|
||||
PR_smprintf_free(listUri);
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::EditMailListToDatabase(const char *uri)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsCOMPtr<nsIAddrDatabase> listDatabase;
|
||||
|
||||
NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(listDatabase));
|
||||
|
||||
if (listDatabase)
|
||||
{
|
||||
listDatabase->EditMailList(this, PR_TRUE);
|
||||
listDatabase->Commit(kLargeCommit);
|
||||
listDatabase = null_nsCOMPtr();
|
||||
|
||||
return NS_OK;
|
||||
|
||||
}
|
||||
else
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::CopyMailList(nsIAbDirectory* srcList)
|
||||
{
|
||||
PRUnichar *str = nsnull;
|
||||
srcList->GetListName(&str);
|
||||
nsXPIDLString str;
|
||||
srcList->GetListName(getter_Copies(str));
|
||||
SetListName(str);
|
||||
PR_FREEIF(str);
|
||||
srcList->GetListNickName(&str);
|
||||
srcList->GetListNickName(getter_Copies(str));
|
||||
SetListNickName(str);
|
||||
PR_FREEIF(str);
|
||||
srcList->GetDescription(&str);
|
||||
srcList->GetDescription(getter_Copies(str));
|
||||
SetDescription(str);
|
||||
PR_FREEIF(str);
|
||||
|
||||
SetIsMailList(PR_TRUE);
|
||||
|
||||
|
@ -424,9 +217,57 @@ NS_IMETHODIMP nsAbDirProperty::CopyMailList(nsIAbDirectory* srcList)
|
|||
NS_IF_ADDREF(pAddressLists);
|
||||
SetAddressLists(pAddressLists);
|
||||
|
||||
PRUint32 rowID;
|
||||
srcList->GetDbRowID(&rowID);
|
||||
SetDbRowID(rowID);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// nsIAbDirectory NOT IMPLEMENTED methods
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::GetChildNodes(nsIEnumerator **childList)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::GetChildCards(nsIEnumerator **childCards)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::DeleteDirectory(nsIAbDirectory *dierctory)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::DeleteCards(nsISupportsArray *cards)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::HasCard(nsIAbCard *cards, PRBool *hasCard)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::HasDirectory(nsIAbDirectory *dir, PRBool *hasDir)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbDirProperty::CreateNewDirectory(PRUint32 prefCount, const char **prefName, const PRUnichar **prefValue)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::CreateDirectoryByURI(const PRUnichar *dirName, const char *uri, PRBool migrating)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::AddMailList(nsIAbDirectory *list)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::EditMailListToDatabase(const char *uri)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::AddCard(nsIAbCard *childCard, nsIAbCard **_retval)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
NS_IMETHODIMP nsAbDirProperty::DropCard(nsIAbCard *childCard, nsIAbCard **_retval)
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#define nsAbDirProperty_h__
|
||||
|
||||
#include "nsIAbDirectory.h" /* include the interface we are going to support */
|
||||
#include "nsAbRDFResource.h"
|
||||
#include "nsIAbCard.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
@ -58,13 +57,10 @@ protected:
|
|||
|
||||
nsString m_DirName;
|
||||
PRUint32 m_LastModifiedDate;
|
||||
nsFileSpec* m_DbPath;
|
||||
DIR_Server* m_Server;
|
||||
|
||||
nsString m_ListName;
|
||||
nsString m_ListNickName;
|
||||
nsString m_Description;
|
||||
PRUint32 m_dbRowID;
|
||||
PRBool m_bIsMailList;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> m_AddressList;
|
||||
|
|
|
@ -99,13 +99,12 @@ NS_IMETHODIMP nsAbDirectory::OnCardEntryChange
|
|||
if (abCode == AB_NotifyInserted && card)
|
||||
{
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
char* cardURI = nsnull;
|
||||
rv = card->GetCardURI(&cardURI);
|
||||
if (NS_FAILED(rv) || !cardURI)
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!cardURI)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
|
@ -122,8 +121,7 @@ NS_IMETHODIMP nsAbDirectory::OnCardEntryChange
|
|||
{
|
||||
personCard->SetAbDatabase(mDatabase);
|
||||
nsCOMPtr<nsIAddrDBListener> listener(do_QueryInterface(personCard, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mDatabase->AddListener(listener);
|
||||
}
|
||||
nsCOMPtr<nsISupports> cardSupports(do_QueryInterface(personCard));
|
||||
|
@ -215,7 +213,7 @@ NS_IMETHODIMP nsAbDirectory::GetChildNodes(nsIEnumerator* *result)
|
|||
nsFileSpec* dbPath;
|
||||
abSession->GetUserProfileDirectory(&dbPath);
|
||||
|
||||
nsString file; file.AssignWithConversion(server->fileName);
|
||||
nsAutoString file; file.AssignWithConversion(server->fileName);
|
||||
(*dbPath) += file;
|
||||
|
||||
NS_WITH_SERVICE(nsIAddrDatabase, addrDBFactory, kAddressBookDBCID, &rv);
|
||||
|
@ -242,18 +240,14 @@ NS_IMETHODIMP nsAbDirectory::AddDirectory(const char *uriName, nsIAbDirectory **
|
|||
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(uriName, getter_AddRefs(res));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(res, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mSubDirectories->AppendElement(directory);
|
||||
*childDir = directory;
|
||||
|
@ -269,18 +263,14 @@ nsresult nsAbDirectory::AddMailList(const char *uriName)
|
|||
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(uriName, getter_AddRefs(res));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(res, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mSubDirectories->AppendElement(directory);
|
||||
|
||||
|
@ -291,7 +281,7 @@ NS_IMETHODIMP nsAbDirectory::GetChildCards(nsIEnumerator* *result)
|
|||
{
|
||||
if (mURI && mIsMailingList == -1)
|
||||
{
|
||||
nsString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
nsAutoString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
PRInt32 pos = file.Find("/");
|
||||
if (pos != -1)
|
||||
mIsMailingList = 1;
|
||||
|
@ -317,7 +307,7 @@ NS_IMETHODIMP nsAbDirectory::CreateNewDirectory(const PRUnichar *dirName, const
|
|||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
DIR_Server * server = nsnull;
|
||||
nsresult rv = DIR_AddNewAddressBook(dirName, fileName, migrating, &server);
|
||||
nsresult rv = DIR_AddNewAddressBook(dirName, fileName, PABDirectory, &server);
|
||||
|
||||
nsCOMPtr<nsIAbDirectory> newDir;
|
||||
char *uri = PR_smprintf("%s%s", kDirectoryDataSourceRoot, server->fileName);
|
||||
|
@ -360,8 +350,7 @@ NS_IMETHODIMP nsAbDirectory::CreateNewMailingList(const char* uri, nsIAbDirector
|
|||
if (listDatabase)
|
||||
{
|
||||
nsCOMPtr<nsIAddrDBListener> listener(do_QueryInterface(newList, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
listDatabase->AddListener(listener);
|
||||
}
|
||||
newList->CopyMailList(list);
|
||||
|
@ -380,23 +369,20 @@ NS_IMETHODIMP nsAbDirectory::AddChildCards(const char *uriName, nsIAbCard **chil
|
|||
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(uriName, getter_AddRefs(res));
|
||||
if (NS_FAILED(rv))
|
||||
{
|
||||
return rv;
|
||||
}
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAbCard> personCard(do_QueryInterface(res, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
{
|
||||
rv = nsComponentManager::CreateInstance(kAbCardCID, nsnull, NS_GET_IID(nsIAbCard), getter_AddRefs(personCard));
|
||||
if (NS_FAILED(rv) || !personCard)
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!personCard)
|
||||
{
|
||||
return rv;
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -477,7 +463,7 @@ NS_IMETHODIMP nsAbDirectory::DeleteCards(nsISupportsArray *cards)
|
|||
PRUint32 cardCount;
|
||||
PRUint32 i;
|
||||
rv = cards->Count(&cardCount);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
for (i = 0; i < cardCount; i++)
|
||||
{
|
||||
nsCOMPtr<nsISupports> cardSupports;
|
||||
|
@ -526,8 +512,7 @@ NS_IMETHODIMP nsAbDirectory::DeleteCards(nsISupportsArray *cards)
|
|||
{
|
||||
rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsCOMPtr<nsIRDFResource> listResource;
|
||||
rv = rdfService->GetResource(listUri, getter_AddRefs(listResource));
|
||||
nsCOMPtr<nsIAbDirectory> listDir = do_QueryInterface(listResource);
|
||||
|
@ -610,7 +595,7 @@ nsresult nsAbDirectory::DeleteDirectoryCards(nsIAbDirectory* directory, DIR_Serv
|
|||
{
|
||||
PRUint32 cardCount;
|
||||
rv = cardArray->Count(&cardCount);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
for(PRUint32 i = 0; i < cardCount; i++)
|
||||
{
|
||||
nsCOMPtr<nsISupports> cardSupports = getter_AddRefs(cardArray->ElementAt(i));
|
||||
|
@ -674,7 +659,7 @@ NS_IMETHODIMP nsAbDirectory::DeleteDirectory(nsIAbDirectory *directory)
|
|||
|
||||
nsXPIDLCString uri;
|
||||
rv = directory->GetDirUri(getter_Copies(uri));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIAddrDatabase> database;
|
||||
NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv);
|
||||
|
@ -727,7 +712,7 @@ NS_IMETHODIMP nsAbDirectory::HasDirectory(nsIAbDirectory *dir, PRBool *hasDir)
|
|||
{
|
||||
nsXPIDLCString uri;
|
||||
rv = dir->GetDirUri(getter_Copies(uri));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsCOMPtr<nsIAddrDatabase> database;
|
||||
NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
|
|
|
@ -209,8 +209,8 @@ NS_IMETHODIMP nsAbMDBCardProperty::SetAnonymousStringAttribute
|
|||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
char* pValue = PL_strdup(value);
|
||||
char* pAttribute = nsCRT::strdup(attrname);
|
||||
char* pValue = nsCRT::strdup(value);
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousStrAttributes,
|
||||
|
@ -218,8 +218,8 @@ NS_IMETHODIMP nsAbMDBCardProperty::SetAnonymousStringAttribute
|
|||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
nsCRT::free(pAttribute);
|
||||
nsCRT::free(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
|
@ -230,7 +230,7 @@ NS_IMETHODIMP nsAbMDBCardProperty::SetAnonymousIntAttribute
|
|||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
char* pAttribute = nsCRT::strdup(attrname);
|
||||
PRUint32* pValue = (PRUint32 *)PR_Calloc(1, sizeof(PRUint32));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
|
@ -240,7 +240,7 @@ NS_IMETHODIMP nsAbMDBCardProperty::SetAnonymousIntAttribute
|
|||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
nsCRT::free(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ NS_IMETHODIMP nsAbMDBCardProperty::SetAnonymousBoolAttribute
|
|||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
char* pAttribute = nsCRT::strdup(attrname);
|
||||
PRBool* pValue = (PRBool *)PR_Calloc(1, sizeof(PRBool));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
|
@ -261,8 +261,8 @@ NS_IMETHODIMP nsAbMDBCardProperty::SetAnonymousBoolAttribute
|
|||
&m_pAnonymousBoolValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
{
|
||||
nsCRT::free(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
@ -304,126 +304,89 @@ NS_IMETHODIMP nsAbMDBCardProperty::GetCardURI(char **uri)
|
|||
|
||||
NS_IMETHODIMP nsAbMDBCardProperty::CopyCard(nsIAbMDBCard* srcCardDB)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
nsCOMPtr<nsIAbCard> srcCard(do_QueryInterface(srcCardDB, &err));
|
||||
if (NS_FAILED(err))
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIAbCard> srcCard(do_QueryInterface(srcCardDB, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
PRUnichar *str = nsnull;
|
||||
srcCard->GetFirstName(&str);
|
||||
nsXPIDLString str;
|
||||
srcCard->GetFirstName(getter_Copies(str));
|
||||
SetFirstName(str);
|
||||
PR_FREEIF(str);
|
||||
|
||||
srcCard->GetLastName(&str);
|
||||
srcCard->GetLastName(getter_Copies(str));
|
||||
SetLastName(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetDisplayName(&str);
|
||||
srcCard->GetDisplayName(getter_Copies(str));
|
||||
SetDisplayName(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetNickName(&str);
|
||||
srcCard->GetNickName(getter_Copies(str));
|
||||
SetNickName(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetPrimaryEmail(&str);
|
||||
srcCard->GetPrimaryEmail(getter_Copies(str));
|
||||
SetPrimaryEmail(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetSecondEmail(&str);
|
||||
srcCard->GetSecondEmail(getter_Copies(str));
|
||||
SetSecondEmail(str);
|
||||
PR_FREEIF(str);
|
||||
|
||||
PRUint32 format = nsIAbPreferMailFormat::unknown;
|
||||
srcCard->GetPreferMailFormat(&format);
|
||||
SetPreferMailFormat(format);
|
||||
PRUint32 format = nsIAbPreferMailFormat::unknown;
|
||||
srcCard->GetPreferMailFormat(&format);
|
||||
SetPreferMailFormat(format);
|
||||
|
||||
srcCard->GetWorkPhone(&str);
|
||||
srcCard->GetWorkPhone(getter_Copies(str));
|
||||
SetWorkPhone(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomePhone(&str);
|
||||
srcCard->GetHomePhone(getter_Copies(str));
|
||||
SetHomePhone(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetFaxNumber(&str);
|
||||
srcCard->GetFaxNumber(getter_Copies(str));
|
||||
SetFaxNumber(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetPagerNumber(&str);
|
||||
srcCard->GetPagerNumber(getter_Copies(str));
|
||||
SetPagerNumber(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCellularNumber(&str);
|
||||
srcCard->GetCellularNumber(getter_Copies(str));
|
||||
SetCellularNumber(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeAddress(&str);
|
||||
srcCard->GetHomeAddress(getter_Copies(str));
|
||||
SetHomeAddress(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeAddress2(&str);
|
||||
srcCard->GetHomeAddress2(getter_Copies(str));
|
||||
SetHomeAddress2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeCity(&str);
|
||||
srcCard->GetHomeCity(getter_Copies(str));
|
||||
SetHomeCity(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeState(&str);
|
||||
srcCard->GetHomeState(getter_Copies(str));
|
||||
SetHomeState(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeZipCode(&str);
|
||||
srcCard->GetHomeZipCode(getter_Copies(str));
|
||||
SetHomeZipCode(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetHomeCountry(&str);
|
||||
srcCard->GetHomeCountry(getter_Copies(str));
|
||||
SetHomeCountry(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkAddress(&str);
|
||||
srcCard->GetWorkAddress(getter_Copies(str));
|
||||
SetWorkAddress(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkAddress2(&str);
|
||||
srcCard->GetWorkAddress2(getter_Copies(str));
|
||||
SetWorkAddress2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkCity(&str);
|
||||
srcCard->GetWorkCity(getter_Copies(str));
|
||||
SetWorkCity(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkState(&str);
|
||||
srcCard->GetWorkState(getter_Copies(str));
|
||||
SetWorkState(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkZipCode(&str);
|
||||
srcCard->GetWorkZipCode(getter_Copies(str));
|
||||
SetWorkZipCode(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWorkCountry(&str);
|
||||
srcCard->GetWorkCountry(getter_Copies(str));
|
||||
SetWorkCountry(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetJobTitle(&str);
|
||||
srcCard->GetJobTitle(getter_Copies(str));
|
||||
SetJobTitle(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetDepartment(&str);
|
||||
srcCard->GetDepartment(getter_Copies(str));
|
||||
SetDepartment(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCompany(&str);
|
||||
srcCard->GetCompany(getter_Copies(str));
|
||||
SetCompany(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWebPage1(&str);
|
||||
srcCard->GetWebPage1(getter_Copies(str));
|
||||
SetWebPage1(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetWebPage2(&str);
|
||||
srcCard->GetWebPage2(getter_Copies(str));
|
||||
SetWebPage2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetBirthYear(&str);
|
||||
srcCard->GetBirthYear(getter_Copies(str));
|
||||
SetBirthYear(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetBirthMonth(&str);
|
||||
srcCard->GetBirthMonth(getter_Copies(str));
|
||||
SetBirthMonth(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetBirthDay(&str);
|
||||
srcCard->GetBirthDay(getter_Copies(str));
|
||||
SetBirthDay(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom1(&str);
|
||||
srcCard->GetCustom1(getter_Copies(str));
|
||||
SetCustom1(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom2(&str);
|
||||
srcCard->GetCustom2(getter_Copies(str));
|
||||
SetCustom2(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom3(&str);
|
||||
srcCard->GetCustom3(getter_Copies(str));
|
||||
SetCustom3(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetCustom4(&str);
|
||||
srcCard->GetCustom4(getter_Copies(str));
|
||||
SetCustom4(str);
|
||||
PR_FREEIF(str);
|
||||
srcCard->GetNotes(&str);
|
||||
srcCard->GetNotes(getter_Copies(str));
|
||||
SetNotes(str);
|
||||
PR_FREEIF(str);
|
||||
|
||||
PRUint32 tableID, rowID;
|
||||
srcCardDB->GetDbTableID(&tableID);
|
||||
|
@ -473,19 +436,19 @@ static const char *kAbPrintUrlFormat = "addbook:printone?email=%s&folder=%s";
|
|||
if (!aPrintCardUrl)
|
||||
return NS_OK;
|
||||
|
||||
PRUnichar *email = nsnull;
|
||||
GetPrimaryEmail(&email);
|
||||
nsString emailStr(email);
|
||||
nsXPIDLString email;
|
||||
GetPrimaryEmail(getter_Copies(email));
|
||||
nsAutoString emailStr(email);
|
||||
|
||||
if (emailStr.Length() == 0)
|
||||
{
|
||||
*aPrintCardUrl = PR_smprintf("");
|
||||
return NS_OK;
|
||||
}
|
||||
PRUnichar *dirName = nsnull;
|
||||
nsXPIDLString dirName;
|
||||
if (mCardDatabase)
|
||||
mCardDatabase->GetDirectoryName(&dirName);
|
||||
nsString dirNameStr(dirName);
|
||||
mCardDatabase->GetDirectoryName(getter_Copies(dirName));
|
||||
nsAutoString dirNameStr(dirName);
|
||||
if (dirNameStr.Length() == 0)
|
||||
{
|
||||
*aPrintCardUrl = PR_smprintf("");
|
||||
|
@ -501,9 +464,6 @@ static const char *kAbPrintUrlFormat = "addbook:printone?email=%s&folder=%s";
|
|||
nsMemory::Free(emailCharStr);
|
||||
nsMemory::Free(dirCharStr);
|
||||
|
||||
PR_FREEIF(dirName);
|
||||
PR_FREEIF(email);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -343,7 +343,7 @@ NS_IMETHODIMP nsAbMDBDirectory::GetChildCards(nsIEnumerator* *result)
|
|||
{
|
||||
if (mURI && mIsMailingList == -1)
|
||||
{
|
||||
nsString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
nsAutoString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
PRInt32 pos = file.Find("/");
|
||||
if (pos != -1)
|
||||
mIsMailingList = 1;
|
||||
|
@ -648,7 +648,7 @@ NS_IMETHODIMP nsAbMDBDirectory::AddMailList(nsIAbDirectory *list)
|
|||
if (NS_SUCCEEDED(rv) && newList)
|
||||
{
|
||||
nsCOMPtr<nsIAddrDBListener> listener(do_QueryInterface(newList, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, NS_ERROR_NULL_POINTER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mDatabase->AddListener(listener);
|
||||
|
||||
dbnewList->CopyDBMailList (dblist);
|
||||
|
@ -715,7 +715,7 @@ NS_IMETHODIMP nsAbMDBDirectory::DropCard(nsIAbCard* card, nsIAbCard **_retval)
|
|||
|
||||
if (mURI && mIsMailingList == -1)
|
||||
{
|
||||
nsString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
nsAutoString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
PRInt32 pos = file.Find("/");
|
||||
if (pos != -1)
|
||||
mIsMailingList = 1;
|
||||
|
@ -792,20 +792,18 @@ NS_IMETHODIMP nsAbMDBDirectory::OnCardEntryChange
|
|||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
char* cardURI = nsnull;
|
||||
nsCOMPtr<nsIAbMDBCard> dbcard(do_QueryInterface(card, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!dbcard)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
rv = dbcard->GetCardURI(&cardURI);
|
||||
nsXPIDLCString cardURI;
|
||||
rv = dbcard->GetCardURI(getter_Copies(cardURI));
|
||||
if (!cardURI)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsIRDFResource> res;
|
||||
rv = rdf->GetResource(cardURI, getter_AddRefs(res));
|
||||
if(cardURI)
|
||||
PR_smprintf_free(cardURI);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsCOMPtr<nsIAbMDBCard> dbpersonCard = do_QueryInterface(res);
|
||||
|
@ -816,7 +814,7 @@ NS_IMETHODIMP nsAbMDBDirectory::OnCardEntryChange
|
|||
{
|
||||
dbpersonCard->SetAbDatabase(mDatabase);
|
||||
nsCOMPtr<nsIAddrDBListener> listener(do_QueryInterface(dbpersonCard, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, NS_ERROR_NULL_POINTER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mDatabase->AddListener(listener);
|
||||
}
|
||||
nsCOMPtr<nsISupports> cardSupports(do_QueryInterface(dbpersonCard));
|
||||
|
|
|
@ -95,7 +95,7 @@ nsresult nsAbMDBRDFResource::GetAbDatabase()
|
|||
if(NS_SUCCEEDED(rv))
|
||||
abSession->GetUserProfileDirectory(&dbPath);
|
||||
|
||||
nsString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
nsAutoString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
PRInt32 pos = file.Find("/");
|
||||
if (pos != -1)
|
||||
file.Truncate(pos);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
#include "nsAbRDFDataSource.h"
|
||||
#include "nsAbBaseCID.h"
|
||||
#include "nsAbDirectory.h"
|
||||
#include "nsIAbDirectory.h"
|
||||
#include "nsIAddrBookSession.h"
|
||||
#include "nsIAbCard.h"
|
||||
|
||||
|
@ -60,9 +60,9 @@ static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
|
|||
nsresult nsAbRDFDataSource::createNode(nsString& str, nsIRDFNode **node)
|
||||
{
|
||||
*node = nsnull;
|
||||
nsresult rv;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
if (NS_FAILED(rv)) return rv; // always check this before proceeding
|
||||
nsresult rv;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv); // always check this before proceeding
|
||||
nsCOMPtr<nsIRDFLiteral> value;
|
||||
rv = rdf->GetLiteral(str.GetUnicode(), getter_AddRefs(value));
|
||||
if (NS_SUCCEEDED(rv))
|
||||
|
@ -177,7 +177,7 @@ nsresult nsAbRDFDataSource::Init()
|
|||
nsresult rv = nsServiceManager::GetService(kRDFServiceCID,
|
||||
NS_GET_IID(nsIRDFService),
|
||||
(nsISupports**) &mRDFService);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mRDFService->RegisterDataSource(this, PR_FALSE);
|
||||
|
||||
|
@ -273,7 +273,7 @@ NS_IMETHODIMP nsAbRDFDataSource::AddObserver(nsIRDFObserver* n)
|
|||
if (! mObservers) {
|
||||
nsresult rv;
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(mObservers));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
mObservers->AppendElement(n);
|
||||
return NS_OK;
|
||||
|
|
|
@ -95,7 +95,7 @@ nsresult nsAbRDFResource::GetAbDatabase()
|
|||
if(NS_SUCCEEDED(rv))
|
||||
abSession->GetUserProfileDirectory(&dbPath);
|
||||
|
||||
nsString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
nsAutoString file; file.AssignWithConversion(&(mURI[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
PRInt32 pos = file.Find("/");
|
||||
if (pos != -1)
|
||||
file.Truncate(pos);
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "nsNetUtil.h"
|
||||
#include "nsIStringStream.h"
|
||||
#include "nsIAddrBookSession.h"
|
||||
#include "nsIAbMDBCard.h"
|
||||
#include "nsIAbDirectory.h"
|
||||
#include "nsIRDFResource.h"
|
||||
#include "nsIRDFService.h"
|
||||
|
@ -103,7 +104,7 @@ nsAddbookProtocolHandler::~nsAddbookProtocolHandler()
|
|||
mReportColumns = nsnull;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsAddbookProtocolHandler, nsIProtocolHandler)
|
||||
NS_IMPL_ISUPPORTS1(nsAddbookProtocolHandler, nsIProtocolHandler);
|
||||
|
||||
NS_METHOD
|
||||
nsAddbookProtocolHandler::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
|
||||
|
@ -121,7 +122,7 @@ NS_IMETHODIMP nsAddbookProtocolHandler::GetScheme(char * *aScheme)
|
|||
{
|
||||
nsresult rv = NS_OK;
|
||||
if (aScheme)
|
||||
*aScheme = PL_strdup("addbook");
|
||||
*aScheme = nsCRT::strdup("addbook");
|
||||
else
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
return rv;
|
||||
|
@ -168,15 +169,12 @@ nsAddbookProtocolHandler::GenerateHTMLOutputChannel( char *aHtmlOutput,
|
|||
return NS_ERROR_FAILURE;
|
||||
|
||||
rv = NS_NewStringInputStream(getter_AddRefs(s), NS_ConvertASCIItoUCS2(aHtmlOutput));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
inStr = do_QueryInterface(s, &rv);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = NS_NewInputStreamChannel(&channel, aURI, inStr, "text/html", aHtmlOutputSize);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*_retval = channel;
|
||||
return rv;
|
||||
|
@ -303,9 +301,12 @@ nsAddbookProtocolHandler::FindPossibleAbName(nsIAbCard *aCard,
|
|||
nsVoidArray *attrlist = nsnull;
|
||||
nsVoidArray *valuelist = nsnull;
|
||||
|
||||
if (NS_SUCCEEDED(aCard->GetAnonymousStrAttrubutesList(&attrlist)) && attrlist)
|
||||
nsCOMPtr<nsIAbMDBCard> dbaCard(do_QueryInterface(aCard, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (NS_SUCCEEDED(dbaCard->GetAnonymousStrAttrubutesList(&attrlist)) && attrlist)
|
||||
{
|
||||
if (NS_SUCCEEDED(aCard->GetAnonymousStrValuesList(&valuelist)) && valuelist)
|
||||
if (NS_SUCCEEDED(dbaCard->GetAnonymousStrValuesList(&valuelist)) && valuelist)
|
||||
{
|
||||
char *attr = nsnull;
|
||||
|
||||
|
@ -402,8 +403,7 @@ nsAddbookProtocolHandler::GeneratePrintOutput(nsIAddbookUrl *addbookUrl,
|
|||
|
||||
// Now, open the database...for now, make it the default
|
||||
rv = OpenAB(abFileName, &aDatabase);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// RICHIE - this works for any address book...not sure why
|
||||
rv = rdfService->GetResource(kPersonalAddressbookUri, getter_AddRefs(resource));
|
||||
|
@ -452,7 +452,8 @@ nsAddbookProtocolHandler::BuildSingleHTML(nsIAddrDatabase *aDatabase, nsIAbDirec
|
|||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsresult rv = aDatabase->GetCardForEmailAddress(directory, charEmail, getter_AddRefs(workCard));
|
||||
if (NS_FAILED(rv) || (!workCard))
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!workCard)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
// Ok, build a little HTML for output...
|
||||
|
@ -487,7 +488,8 @@ nsAddbookProtocolHandler::BuildAllHTML(nsIAddrDatabase *aDatabase, nsIAbDirector
|
|||
|
||||
nsIEnumerator *cardEnum = nsnull;
|
||||
rv = aDatabase->EnumerateCards(directory, &cardEnum);
|
||||
if (NS_FAILED(rv) || (!cardEnum))
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!cardEnum)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
InitPrintColumns();
|
||||
|
|
|
@ -122,9 +122,9 @@ NS_IMETHODIMP nsAddrBookSession::GetUserProfileDirectory(nsFileSpec * *userDir)
|
|||
nsXPIDLCString pathBuf;
|
||||
|
||||
rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, getter_AddRefs(profileDir));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = profileDir->GetPath(getter_Copies(pathBuf));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*userDir = new nsFileSpec(pathBuf);
|
||||
NS_ENSURE_TRUE(*userDir, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -342,7 +342,7 @@ protected:
|
|||
nsresult CheckAndUpdateRecordKey();
|
||||
nsresult UpdateLowercaseEmailListName();
|
||||
nsresult ConvertAndAddLowercaseColumn(nsIMdbRow * row, mdb_token fromCol, mdb_token toCol);
|
||||
nsresult AddUnicodeToColumn(nsIMdbRow * row, mdb_token colToken, PRUnichar* pUnicodeStr);
|
||||
nsresult AddUnicodeToColumn(nsIMdbRow * row, mdb_token colToken, const PRUnichar* pUnicodeStr);
|
||||
nsresult GetRowForCharColumn(const char *lowerUTF8String, mdb_column findColumn,
|
||||
PRBool bIsCard, nsIMdbRow **findRow);
|
||||
nsresult GetRowForCharColumn(const PRUnichar *unicodeStr, mdb_column findColumn,
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include "nsAbBaseCID.h"
|
||||
#include "nsDirPrefs.h"
|
||||
#include "nsIAddrBookSession.h"
|
||||
#include "nsAbRDFResource.h"
|
||||
// #include "nsAbRDFResource.h"
|
||||
#include "nsIAddrDatabase.h"
|
||||
|
||||
#include "plstr.h"
|
||||
|
@ -59,14 +59,15 @@ static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
|
|||
static NS_DEFINE_CID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID);
|
||||
static NS_DEFINE_CID(kAddressBookDBCID, NS_ADDRDATABASE_CID);
|
||||
static NS_DEFINE_CID(kAddrBookSessionCID, NS_ADDRBOOKSESSION_CID);
|
||||
static NS_DEFINE_CID(kAbDirectoryCID, NS_ABDIRECTORY_CID);
|
||||
// static NS_DEFINE_CID(kAbDirectoryCID, NS_ABDIRECTORY_CID);
|
||||
static NS_DEFINE_CID(kAbCardPropertyCID, NS_ABCARDPROPERTY_CID);
|
||||
static NS_DEFINE_CID(kAB4xUpgraderServiceCID, NS_AB4xUPGRADER_CID);
|
||||
|
||||
const char *kDirectoryDataSourceRoot = kDirectoryRoot;
|
||||
const char *kCardDataSourceRoot = kCardRoot;
|
||||
|
||||
|
||||
//use this for creating new address book or directory
|
||||
static const char *kBSDDirectoryRoot = "abdirectory://";
|
||||
|
||||
static nsresult ConvertDOMListToResourceArray(nsIDOMNodeList *nodeList, nsISupportsArray **resourceArray)
|
||||
{
|
||||
|
@ -142,23 +143,16 @@ NS_IMETHODIMP nsAddressBook::DeleteCards
|
|||
nsCOMPtr<nsIRDFResource> resource;
|
||||
|
||||
rv = srcDirectory->GetResource(getter_AddRefs(resource));
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = tree->GetDatabase(getter_AddRefs(database));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = ConvertDOMListToResourceArray(nodeList, getter_AddRefs(resourceArray));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(dirArray));
|
||||
if(NS_FAILED(rv))
|
||||
{
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
dirArray->AppendElement(resource);
|
||||
|
||||
|
@ -168,42 +162,27 @@ NS_IMETHODIMP nsAddressBook::DeleteCards
|
|||
}
|
||||
|
||||
NS_IMETHODIMP nsAddressBook::NewAddressBook
|
||||
(nsIRDFCompositeDataSource* db, nsIDOMXULElement *srcDirectory, const PRUnichar *name)
|
||||
(nsIRDFCompositeDataSource* db, nsIDOMXULElement *srcDirectory, PRUint32 prefCount, const char **prefName, const PRUnichar **prefValue)
|
||||
{
|
||||
if(!db || !srcDirectory || !name)
|
||||
if(!db || !srcDirectory || !*prefName || !*prefValue)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> nameArray, dirArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(dirArray));
|
||||
if(NS_FAILED(rv))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIRDFResource> parentResource;
|
||||
char *parentUri = PR_smprintf("%s", kDirectoryDataSourceRoot);
|
||||
char *parentUri = PR_smprintf("%s", kBSDDirectoryRoot);
|
||||
rv = rdfService->GetResource(parentUri, getter_AddRefs(parentResource));
|
||||
nsCOMPtr<nsIAbDirectory> parentDir = do_QueryInterface(parentResource);
|
||||
if (!parentDir)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
if (parentUri)
|
||||
PR_smprintf_free(parentUri);
|
||||
dirArray->AppendElement(parentResource);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(nameArray));
|
||||
if(NS_FAILED(rv))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
nsString nameStr(name);
|
||||
nsCOMPtr<nsIRDFLiteral> nameLiteral;
|
||||
nsCOMPtr<nsIAbDirectory> parentDir = do_QueryInterface(parentResource, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = parentDir->CreateNewDirectory (prefCount, prefName, prefValue);
|
||||
|
||||
rdfService->GetLiteral(nameStr.GetUnicode(), getter_AddRefs(nameLiteral));
|
||||
nameArray->AppendElement(nameLiteral);
|
||||
|
||||
DoCommand(db, NC_RDF_NEWDIRECTORY, dirArray, nameArray);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -215,13 +194,11 @@ NS_IMETHODIMP nsAddressBook::DeleteAddressBooks
|
|||
|
||||
nsresult rv = NS_OK;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsISupportsArray> resourceArray;
|
||||
rv = ConvertDOMListToResourceArray(nodeList, getter_AddRefs(resourceArray));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
DoCommand(db, NC_RDF_DELETE, parentDir, resourceArray);
|
||||
return rv;
|
||||
|
@ -233,9 +210,8 @@ nsresult nsAddressBook::DoCommand(nsIRDFCompositeDataSource* db, char *command,
|
|||
|
||||
nsresult rv;
|
||||
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIRDFResource> commandResource;
|
||||
rv = rdfService->GetResource(command, getter_AddRefs(commandResource));
|
||||
|
@ -329,7 +305,7 @@ NS_IMETHODIMP nsAddressBook::GetAbDatabaseFromURI(const char *uri, nsIAddrDataba
|
|||
if(NS_SUCCEEDED(rv))
|
||||
abSession->GetUserProfileDirectory(&dbPath);
|
||||
|
||||
nsString file; file.AssignWithConversion(&(uri[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
nsAutoString file; file.AssignWithConversion(&(uri[PL_strlen(kDirectoryDataSourceRoot)]));
|
||||
PRInt32 pos = file.Find("/");
|
||||
if (pos != -1)
|
||||
file.Truncate(pos);
|
||||
|
@ -362,7 +338,7 @@ nsresult nsAddressBook::GetAbDatabaseFromFile(char* pDbFile, nsIAddrDatabase **d
|
|||
if(NS_SUCCEEDED(rv))
|
||||
abSession->GetUserProfileDirectory(&dbPath);
|
||||
|
||||
nsString file; file.AssignWithConversion(pDbFile);
|
||||
nsAutoString file; file.AssignWithConversion(pDbFile);
|
||||
(*dbPath) += file;
|
||||
|
||||
NS_WITH_SERVICE(nsIAddrDatabase, addrDBFactory, kAddressBookDBCID, &rv);
|
||||
|
@ -407,7 +383,7 @@ NS_IMETHODIMP nsAddressBook::MailListNameExists(const PRUnichar *name, PRBool *e
|
|||
DIR_Server *server = (DIR_Server *)pDirectories->ElementAt(i);
|
||||
if (server->dirType == PABDirectory)
|
||||
{
|
||||
nsString dbfile; dbfile.AssignWithConversion(server->fileName);
|
||||
nsAutoString dbfile; dbfile.AssignWithConversion(server->fileName);
|
||||
PRInt32 pos = dbfile.Find("na2");
|
||||
if (pos >= 0) /* check: this is a 4.x file, remove when conversion is done */
|
||||
continue;
|
||||
|
@ -517,6 +493,8 @@ nsresult AddressBookParser::ParseFile()
|
|||
mDbUri = PR_smprintf("%s%s.mab", kDirectoryDataSourceRoot, leafName);
|
||||
}
|
||||
|
||||
// to do: we should use only one "return rv;" at the very end, instead of this
|
||||
// multi return structure
|
||||
nsresult rv = NS_OK;
|
||||
nsFileSpec* dbPath = nsnull;
|
||||
char* fileName = PR_smprintf("%s.mab", leafName);
|
||||
|
@ -533,15 +511,12 @@ nsresult AddressBookParser::ParseFile()
|
|||
if (NS_SUCCEEDED(rv) && addrDBFactory)
|
||||
rv = addrDBFactory->Open(dbPath, PR_TRUE, getter_AddRefs(mDatabase), PR_TRUE);
|
||||
}
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (NS_FAILED(rv))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsCOMPtr<nsIRDFResource> parentResource;
|
||||
char *parentUri = PR_smprintf("%s", kDirectoryDataSourceRoot);
|
||||
char *parentUri = PR_smprintf("%s", kBSDDirectoryRoot);
|
||||
rv = rdfService->GetResource(parentUri, getter_AddRefs(parentResource));
|
||||
nsCOMPtr<nsIAbDirectory> parentDir = do_QueryInterface(parentResource);
|
||||
if (!parentDir)
|
||||
|
@ -557,14 +532,14 @@ nsresult AddressBookParser::ParseFile()
|
|||
return nsnull;
|
||||
PRUnichar *dirName = nsnull;
|
||||
rv = pPref->GetLocalizedUnicharPref("ldap_2.servers.pab.description", &dirName);
|
||||
parentDir->CreateNewDirectory(dirName, fileName, mMigrating);
|
||||
parentDir->CreateDirectoryByURI(dirName, mDbUri, mMigrating);
|
||||
nsMemory::Free(dirName);
|
||||
}
|
||||
else
|
||||
parentDir->CreateNewDirectory(fileString.GetUnicode(), fileName, mMigrating);
|
||||
|
||||
parentDir->CreateDirectoryByURI(fileString.GetUnicode(), mDbUri, mMigrating);
|
||||
|
||||
// Initialize the parser for a run...
|
||||
mLine.Truncate();
|
||||
mLine.Truncate();
|
||||
|
||||
if (mFileType == TABFile)
|
||||
rv = ParseTabFile();
|
||||
|
@ -573,14 +548,12 @@ nsresult AddressBookParser::ParseFile()
|
|||
else
|
||||
rv = NS_ERROR_FAILURE;
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (leafName)
|
||||
nsCRT::free(leafName);
|
||||
if (fileName)
|
||||
PR_smprintf_free(fileName);
|
||||
return NS_OK;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult AddressBookParser::ParseTabFile()
|
||||
|
@ -1410,7 +1383,7 @@ NS_IMETHODIMP nsAddressBook::ConvertNA2toLDIF(nsIFileSpec *srcFileSpec, nsIFileS
|
|||
if (!srcFileSpec || !dstFileSpec) return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr <nsIAbUpgrader> abUpgrader = do_GetService(NS_AB4xUPGRADER_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!abUpgrader) return NS_ERROR_FAILURE;
|
||||
|
||||
rv = abUpgrader->StartUpgrade4xAddrBook(srcFileSpec, dstFileSpec);
|
||||
|
@ -1432,12 +1405,12 @@ NS_IMETHODIMP nsAddressBook::ConvertLDIFtoMAB(nsIFileSpec *fileSpec, PRBool migr
|
|||
if (!fileSpec) return NS_ERROR_FAILURE;
|
||||
|
||||
rv = fileSpec->OpenStreamForReading();
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
AddressBookParser abParser(fileSpec, migrating);
|
||||
|
||||
rv = abParser.ParseFile();
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = fileSpec->CloseStream();
|
||||
return rv;
|
||||
|
@ -1448,7 +1421,7 @@ NS_IMETHODIMP nsAddressBook::ImportAddressBook()
|
|||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIFilePicker> filePicker = do_CreateInstance("@mozilla.org/filepicker;1", &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
filePicker->Init(nsnull, nsnull, nsIFilePicker::modeOpen);
|
||||
|
||||
|
@ -1460,12 +1433,12 @@ NS_IMETHODIMP nsAddressBook::ImportAddressBook()
|
|||
|
||||
nsCOMPtr<nsILocalFile> localFile;
|
||||
rv = filePicker->GetFile(getter_AddRefs(localFile));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsXPIDLCString path;
|
||||
localFile->GetPath(getter_Copies(path));
|
||||
nsCOMPtr<nsIFileSpec> fileSpec = do_CreateInstance("@mozilla.org/filespec;1", &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
fileSpec->SetNativePath(path);
|
||||
|
||||
// todo, check that we have a file, not a directory, and that is readable
|
||||
|
@ -1473,7 +1446,7 @@ NS_IMETHODIMP nsAddressBook::ImportAddressBook()
|
|||
|
||||
nsXPIDLCString leafName;
|
||||
rv = fileSpec->GetLeafName(getter_Copies(leafName));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// todo: detect na2 files a better way
|
||||
PRBool isNA2File = PR_FALSE;
|
||||
|
@ -1493,15 +1466,15 @@ NS_IMETHODIMP nsAddressBook::ImportAddressBook()
|
|||
nsCOMPtr <nsIFileSpec> tmpLDIFFile;
|
||||
nsSpecialSystemDirectory file(nsSpecialSystemDirectory::OS_TemporaryDirectory);
|
||||
rv = NS_NewFileSpecWithSpec(file, getter_AddRefs(tmpLDIFFile));
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv) && tmpLDIFFile,"failed to get the tmp dir");
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv) && tmpLDIFFile,"failed to get the tmp dir");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!tmpLDIFFile) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCAutoString tmpFileName;
|
||||
tmpFileName = (const char *)leafName;
|
||||
tmpFileName += ".ldif";
|
||||
rv = tmpLDIFFile->AppendRelativeUnixPath((const char *)tmpFileName);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// todo:
|
||||
// check to see that that file doesn't exist.
|
||||
|
@ -1513,21 +1486,21 @@ NS_IMETHODIMP nsAddressBook::ImportAddressBook()
|
|||
// have no idea what the charset was (it's in the 4.x prefs file)
|
||||
// so we just guess that it is the system charset.
|
||||
rv = abUpgrader->SetCurrentCharset("");
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = ConvertNA2toLDIF(fileSpec, tmpLDIFFile);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = ConvertLDIFtoMAB(tmpLDIFFile, PR_FALSE /* migrating */);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = ConvertLDIFtoMAB(tmpLDIFFile, PR_FALSE /* migrating */);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = tmpLDIFFile->Delete(PR_TRUE);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
else {
|
||||
// this will convert ldif and tab files
|
||||
rv = ConvertLDIFtoMAB(fileSpec, PR_FALSE /* migrating */);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = ConvertLDIFtoMAB(fileSpec, PR_FALSE /* migrating */);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -203,7 +203,7 @@ nsresult nsAbCardDataSource::Init()
|
|||
nsresult rv = nsServiceManager::GetService(kRDFServiceCID,
|
||||
NS_GET_IID(nsIRDFService),
|
||||
(nsISupports**) &mRDFService); // XXX probably need shutdown listener here
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
|
@ -416,8 +416,7 @@ nsAbCardDataSource::getCardArcLabelsOut(nsIAbCard *card,
|
|||
{
|
||||
nsresult rv;
|
||||
rv = NS_NewISupportsArray(arcs);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
(*arcs)->AppendElement(kNC_DisplayName);
|
||||
(*arcs)->AppendElement(kNC_Name);
|
||||
|
@ -445,7 +444,7 @@ nsAbCardDataSource::GetAllCommands(nsIRDFResource* source,
|
|||
nsCOMPtr<nsIAbCard> card(do_QueryInterface(source, &rv));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(cmds));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
cmds->AppendElement(kNC_Delete);
|
||||
cmds->AppendElement(kNC_NewCard);
|
||||
}
|
||||
|
@ -653,8 +652,7 @@ nsresult nsAbCardDataSource::createCardNode(nsIAbCard* card,
|
|||
nsCRT::free(tempStr);
|
||||
}
|
||||
}
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (name)
|
||||
{
|
||||
nsString nameString(name);
|
||||
|
|
|
@ -451,10 +451,10 @@ nsresult DIR_ContainsServer(DIR_Server* pServer, PRBool *hasDir)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult DIR_AddNewAddressBook(const PRUnichar *dirName, const char *fileName, PRBool migrating, DIR_Server** pServer)
|
||||
nsresult DIR_AddNewAddressBook(const PRUnichar *dirName, const char *fileName, PRBool migrating, DirectoryType dirType, DIR_Server** pServer)
|
||||
{
|
||||
DIR_Server * server = (DIR_Server *) PR_Malloc(sizeof(DIR_Server));
|
||||
DIR_InitServerWithType (server, PABDirectory);
|
||||
DIR_InitServerWithType (server, dirType);
|
||||
if (!dir_ServerList)
|
||||
DIR_GetDirServers();
|
||||
if (dir_ServerList)
|
||||
|
|
|
@ -37,12 +37,12 @@ PRInt32 INTL_ConvertFromUnicode(const PRUnichar* uniBuffer,
|
|||
#define PREF_LDAP_VERSION_NAME "ldap_2.version"
|
||||
#define PREF_LDAP_SERVER_TREE_NAME "ldap_2.servers"
|
||||
|
||||
#define kCardRoot "abcard://"
|
||||
#define kDirectoryRoot "abdirectory://"
|
||||
#define kCardRoot "abmdbcard://"
|
||||
#define kDirectoryRoot "abmdbdirectory://"
|
||||
#define kPersonalAddressbook "abook.mab"
|
||||
#define kPersonalAddressbookUri "abdirectory://abook.mab"
|
||||
#define kPersonalAddressbookUri "abmdbdirectory://abook.mab"
|
||||
#define kCollectedAddressbook "history.mab"
|
||||
#define kCollectedAddressbookUri "abdirectory://history.mab"
|
||||
#define kCollectedAddressbookUri "abmdbdirectory://history.mab"
|
||||
|
||||
/* DIR_Server.dirType */
|
||||
typedef enum
|
||||
|
@ -248,7 +248,7 @@ nsVoidArray* DIR_GetDirectories();
|
|||
nsresult DIR_GetDirServers();
|
||||
nsresult DIR_ShutDown(void); /* FEs should call this when the app is shutting down. It frees all DIR_Servers regardless of ref count values! */
|
||||
|
||||
nsresult DIR_AddNewAddressBook(const PRUnichar *dirName, const char *fileName, PRBool migrating, DIR_Server** pServer);
|
||||
nsresult DIR_AddNewAddressBook(const PRUnichar *dirName, const char *fileName, PRBool migrating, DirectoryType dirType, DIR_Server** pServer);
|
||||
nsresult DIR_ContainsServer(DIR_Server* pServer, PRBool *hasDir);
|
||||
|
||||
nsresult DIR_DecrementServerRefCount (DIR_Server *);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
#include "nsDirectoryDataSource.h"
|
||||
#include "nsAbBaseCID.h"
|
||||
#include "nsAbDirectory.h"
|
||||
#include "nsIAbDirectory.h"
|
||||
#include "nsIAddrBookSession.h"
|
||||
#include "nsIAbCard.h"
|
||||
|
||||
|
@ -51,7 +51,7 @@ typedef struct _nsAbRDFNotification {
|
|||
static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
|
||||
|
||||
static NS_DEFINE_CID(kAbDirectoryDataSourceCID, NS_ABDIRECTORYDATASOURCE_CID);
|
||||
static NS_DEFINE_CID(kAbDirectoryCID, NS_ABDIRECTORY_CID);
|
||||
// static NS_DEFINE_CID(kAbDirectoryCID, NS_ABDIRECTORY_CID);
|
||||
static NS_DEFINE_CID(kAddrBookSessionCID, NS_ADDRBOOKSESSION_CID);
|
||||
|
||||
nsIRDFResource* nsAbDirectoryDataSource::kNC_Child = nsnull;
|
||||
|
@ -123,7 +123,7 @@ nsAbDirectoryDataSource::Init()
|
|||
nsresult rv = nsServiceManager::GetService(kRDFServiceCID,
|
||||
NS_GET_IID(nsIRDFService),
|
||||
(nsISupports**) &mRDFService);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
|
@ -146,8 +146,6 @@ nsAbDirectoryDataSource::Init()
|
|||
|
||||
CreateLiterals(mRDFService);
|
||||
|
||||
DIR_GetDirServers();
|
||||
|
||||
mInitialized = PR_TRUE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -217,7 +215,7 @@ NS_IMETHODIMP nsAbDirectoryDataSource::GetTargets(nsIRDFResource* source,
|
|||
nsCOMPtr<nsIEnumerator> subDirectories;
|
||||
|
||||
rv = directory->GetChildNodes(getter_AddRefs(subDirectories));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsAdapterEnumerator* cursor =
|
||||
new nsAdapterEnumerator(subDirectories);
|
||||
if (cursor == nsnull)
|
||||
|
@ -339,8 +337,7 @@ nsAbDirectoryDataSource::getDirectoryArcLabelsOut(nsIAbDirectory *directory,
|
|||
{
|
||||
nsresult rv;
|
||||
rv = NS_NewISupportsArray(arcs);
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
(*arcs)->AppendElement(kNC_DirName);
|
||||
(*arcs)->AppendElement(kNC_Child);
|
||||
|
@ -360,7 +357,7 @@ nsAbDirectoryDataSource::GetAllCommands(nsIRDFResource* source,
|
|||
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(source, &rv));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(cmds));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
cmds->AppendElement(kNC_Delete);
|
||||
cmds->AppendElement(kNC_DeleteCards);
|
||||
cmds->AppendElement(kNC_NewDirectory);
|
||||
|
@ -405,7 +402,7 @@ nsAbDirectoryDataSource::DoCommand(nsISupportsArray/*<nsIRDFResource>*/* aSource
|
|||
{
|
||||
PRUint32 i, cnt;
|
||||
nsresult rv = aSources->Count(&cnt);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if ((aCommand == kNC_Delete))
|
||||
rv = DoDeleteFromDirectory(aSources, aArguments);
|
||||
|
@ -541,7 +538,7 @@ nsresult nsAbDirectoryDataSource::createDirectoryNameNode(nsIAbDirectory *direct
|
|||
rv = directory->GetListName(&name);
|
||||
else
|
||||
rv = directory->GetDirName(&name);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsString nameString(name);
|
||||
createNode(nameString, target);
|
||||
nsCRT::free(name);
|
||||
|
@ -551,10 +548,12 @@ nsresult nsAbDirectoryDataSource::createDirectoryNameNode(nsIAbDirectory *direct
|
|||
nsresult nsAbDirectoryDataSource::createDirectoryUriNode(nsIAbDirectory *directory,
|
||||
nsIRDFNode **target)
|
||||
{
|
||||
nsCOMPtr<nsIRDFResource> source(do_QueryInterface(directory));
|
||||
|
||||
nsXPIDLCString uri;
|
||||
nsresult rv = directory->GetDirUri(getter_Copies(uri));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsString nameString; nameString.AssignWithConversion(uri);
|
||||
nsresult rv = source->GetValue(getter_Copies(uri));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsAutoString nameString; nameString.AssignWithConversion(uri);
|
||||
createNode(nameString, target);
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -577,7 +576,9 @@ nsAbDirectoryDataSource::createDirectoryChildNode(nsIAbDirectory *directory,
|
|||
PRBool bIsMailList = PR_FALSE;
|
||||
directory->GetIsMailList(&bIsMailList);
|
||||
if (bIsMailList)
|
||||
{
|
||||
return NS_RDF_NO_VALUE;
|
||||
}
|
||||
|
||||
PRUint32 i;
|
||||
for (i = 0; i < total; i++)
|
||||
|
@ -602,7 +603,7 @@ nsAbDirectoryDataSource::createDirectoryIsMailListNode(nsIAbDirectory* directory
|
|||
nsresult rv;
|
||||
PRBool bIsMailList = PR_FALSE;
|
||||
rv = directory->GetIsMailList(&bIsMailList);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*target = nsnull;
|
||||
|
||||
|
@ -629,7 +630,7 @@ nsresult nsAbDirectoryDataSource::DoDeleteFromDirectory(nsISupportsArray *parent
|
|||
{
|
||||
PRUint32 item, itemCount;
|
||||
nsresult rv = parentDirs->Count(&itemCount);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsISupportsArray> dirArray;
|
||||
NS_NewISupportsArray(getter_AddRefs(dirArray));
|
||||
|
@ -656,7 +657,7 @@ nsresult nsAbDirectoryDataSource::DoDeleteCardsFromDirectory(nsIAbDirectory *dir
|
|||
nsresult rv = NS_OK;
|
||||
PRUint32 itemCount;
|
||||
rv = arguments->Count(&itemCount);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsISupportsArray> cardArray;
|
||||
NS_NewISupportsArray(getter_AddRefs(cardArray));
|
||||
|
@ -675,7 +676,7 @@ nsresult nsAbDirectoryDataSource::DoDeleteCardsFromDirectory(nsIAbDirectory *dir
|
|||
}
|
||||
PRUint32 cnt;
|
||||
rv = cardArray->Count(&cnt);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (cnt > 0)
|
||||
rv = directory->DeleteCards(cardArray);
|
||||
return rv;
|
||||
|
@ -691,8 +692,33 @@ nsresult nsAbDirectoryDataSource::DoNewDirectory(nsIAbDirectory *directory, nsIS
|
|||
PRUnichar *name;
|
||||
literal->GetValue(&name);
|
||||
|
||||
rv = directory->CreateNewDirectory(name, nsnull, PR_FALSE /* migrating */);
|
||||
nsMemory::Free(name);
|
||||
PRUint32 prefCount = 1;
|
||||
char **prefNames = (char **) nsMemory::Alloc(prefCount * (sizeof (char *)));
|
||||
PRUnichar ** prefValues = (PRUnichar **) nsMemory::Alloc(prefCount * (sizeof(PRUnichar *)));
|
||||
|
||||
if (prefNames && prefValues)
|
||||
{
|
||||
|
||||
prefNames[0] = PR_smprintf("description");
|
||||
prefValues[0] = name;
|
||||
|
||||
rv = directory->CreateNewDirectory((unsigned int) prefCount, (const char**)prefNames, (const PRUnichar**)prefValues);
|
||||
|
||||
if (prefNames[0])
|
||||
PR_smprintf_free(prefNames[0]);
|
||||
if (prefValues[0])
|
||||
nsMemory::Free(prefValues[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
if (prefNames)
|
||||
nsMemory::Free(prefNames);
|
||||
if (prefValues)
|
||||
nsMemory::Free(prefValues);
|
||||
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
@ -734,8 +760,7 @@ nsresult nsAbDirectoryDataSource::DoDirectoryHasAssertion(nsIAbDirectory *direct
|
|||
else if ((kNC_IsMailList == property))
|
||||
{
|
||||
nsCOMPtr<nsIRDFResource> dirResource(do_QueryInterface(directory, &rv));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = GetTargetHasAssertion(this, dirResource, property, tv, target, hasAssertion);
|
||||
}
|
||||
else
|
||||
|
|
Загрузка…
Ссылка в новой задаче