diff --git a/mozilla/mailnews/addrbook/public/nsIAbDirectory.idl b/mozilla/mailnews/addrbook/public/nsIAbDirectory.idl index 68e8c448ded..5f94d4e3a36 100644 --- a/mozilla/mailnews/addrbook/public/nsIAbDirectory.idl +++ b/mozilla/mailnews/addrbook/public/nsIAbDirectory.idl @@ -44,7 +44,7 @@ interface nsIAbDirectory : nsISupports { readonly attribute nsIEnumerator childCards; nsIAbCard addChildCards(in string uriName); nsIAbDirectory addDirectory(in string uriName); - void deleteDirectories(in nsISupportsArray dierctories); + void deleteDirectory(in nsIAbDirectory dierctory); void deleteCards(in nsISupportsArray cards); boolean hasCard(in nsIAbCard cards); boolean hasDirectory(in nsIAbDirectory dir); diff --git a/mozilla/mailnews/addrbook/public/nsIAddressBook.idl b/mozilla/mailnews/addrbook/public/nsIAddressBook.idl index 52be4f30124..0c8a75f85aa 100644 --- a/mozilla/mailnews/addrbook/public/nsIAddressBook.idl +++ b/mozilla/mailnews/addrbook/public/nsIAddressBook.idl @@ -24,6 +24,7 @@ #include "xulstubs.idl" #include "nsIRDFCompositeDataSource.idl" #include "nsIAddrDatabase.idl" +#include "nsISupportsArray.idl" %{C++ @@ -39,7 +40,7 @@ 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 nsIDOMXULElement srcDir, in nsIDOMNodeList node); + void deleteAddressBooks(in nsIRDFCompositeDataSource db, in nsISupportsArray parentDir, in nsIDOMNodeList node); void printCard(); void printAddressbook(); void setWebShellWindow(in nsIDOMWindow win); diff --git a/mozilla/mailnews/addrbook/src/nsAbDirProperty.cpp b/mozilla/mailnews/addrbook/src/nsAbDirProperty.cpp index 04188e07ba3..8da262d7390 100644 --- a/mozilla/mailnews/addrbook/src/nsAbDirProperty.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbDirProperty.cpp @@ -62,6 +62,15 @@ nsAbDirProperty::nsAbDirProperty(void) nsAbDirProperty::~nsAbDirProperty(void) { PR_FREEIF(m_DbPath); + if (m_AddressList) + { + PRUint32 count; + nsresult rv = m_AddressList->Count(&count); + NS_ASSERTION(NS_SUCCEEDED(rv), "Count failed"); + PRInt32 i; + for (i = count - 1; i >= 0; i--) + m_AddressList->RemoveElementAt(i); + } } NS_IMPL_ADDREF(nsAbDirProperty) @@ -180,7 +189,7 @@ nsAbDirProperty::AddDirectory(const char *uriName, nsIAbDirectory **childDir) { return NS_OK; } NS_IMETHODIMP -nsAbDirProperty::DeleteDirectories(nsISupportsArray *dierctories) +nsAbDirProperty::DeleteDirectory(nsIAbDirectory *dierctory) { return NS_OK; } NS_IMETHODIMP @@ -302,6 +311,7 @@ NS_IMETHODIMP nsAbDirProperty::AddAddressToList(nsIAbCard *card) if (!m_AddressList) NS_NewISupportsArray(getter_AddRefs(m_AddressList)); m_AddressList->AppendElement(card); + NS_IF_ADDREF(card); return NS_OK; } @@ -325,13 +335,10 @@ NS_IMETHODIMP nsAbDirProperty::AddMailListToDatabase(const char *uri) if(NS_FAILED(rv)) return rv; nsCOMPtr parentResource; - char *parentUri = PR_smprintf("%s", kDirectoryDataSourceRoot); - rv = rdfService->GetResource(parentUri, getter_AddRefs(parentResource)); + rv = rdfService->GetResource(uri, getter_AddRefs(parentResource)); nsCOMPtr parentDir = do_QueryInterface(parentResource); if (!parentDir) return NS_ERROR_NULL_POINTER; - if (parentUri) - PR_smprintf_free(parentUri); char *listUri = PR_smprintf("%s/MailList%ld", uri, m_dbRowID); if (listUri) diff --git a/mozilla/mailnews/addrbook/src/nsAbDirectory.cpp b/mozilla/mailnews/addrbook/src/nsAbDirectory.cpp index d3e8c5ed82b..2a7a7e2143a 100644 --- a/mozilla/mailnews/addrbook/src/nsAbDirectory.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbDirectory.cpp @@ -153,7 +153,7 @@ NS_IMETHODIMP nsAbDirectory::OnListEntryChange nsCOMPtr res; rv = rdf->GetResource(listURI, getter_AddRefs(res)); if(listURI) - PR_smprintf_free(listURI); + nsAllocator::Free(listURI); if (NS_SUCCEEDED(rv)) { nsCOMPtr listDir = do_QueryInterface(res); @@ -341,6 +341,11 @@ NS_IMETHODIMP nsAbDirectory::CreateNewDirectory(const PRUnichar *dirName, const char *uri = PR_smprintf("%s%s", kDirectoryDataSourceRoot, server->fileName); if (uri) { + nsCOMPtr database; + NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv); + if (NS_SUCCEEDED(rv)) + rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(database)); + rv = AddDirectory(uri, getter_AddRefs(newDir)); PR_smprintf_free(uri); if (NS_SUCCEEDED(rv) && newDir) @@ -440,6 +445,29 @@ NS_IMETHODIMP nsAbDirectory::DeleteCards(nsISupportsArray *cards) else { mDatabase->DeleteCard(card, PR_TRUE); + PRBool bIsMailList = PR_FALSE; + card->GetIsMailList(&bIsMailList); + if (bIsMailList) + { + //to do, get mailing list dir side uri and notify rdf to remove it + PRUint32 rowID; + card->GetDbRowID(&rowID); + char *listUri = PR_smprintf("%s/MailList%ld", mURI, rowID); + if (listUri) + { + nsresult rv = NS_OK; + NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv); + if(NS_FAILED(rv)) + return rv; + nsCOMPtr listResource; + rv = rdfService->GetResource(listUri, getter_AddRefs(listResource)); + nsCOMPtr listDir = do_QueryInterface(listResource); + if (listDir) + NotifyItemDeleted(listDir); + PR_smprintf_free(listUri); + return NS_OK; + } + } } } } @@ -450,6 +478,11 @@ NS_IMETHODIMP nsAbDirectory::DeleteCards(nsISupportsArray *cards) nsresult nsAbDirectory::DeleteDirectoryCards(nsIAbDirectory* directory, DIR_Server *server) { + if (!server->fileName) // file name does not exist + return NS_OK; + if (PL_strlen(server->fileName) == 0) // file name does not exist + return NS_OK; + nsresult rv = NS_OK; nsFileSpec* dbPath = nsnull; nsCOMPtr database; @@ -518,55 +551,45 @@ nsresult nsAbDirectory::DeleteDirectoryCards(nsIAbDirectory* directory, DIR_Serv return rv; } -NS_IMETHODIMP nsAbDirectory::DeleteDirectories(nsISupportsArray *dierctories) +NS_IMETHODIMP nsAbDirectory::DeleteDirectory(nsIAbDirectory *directory) { nsresult rv = NS_ERROR_FAILURE; - PRUint32 i, dirCount; - rv = dierctories->Count(&dirCount); - if (NS_FAILED(rv)) return rv; - for (i = 0; i < dirCount; i++) + if (directory) { - nsCOMPtr dirSupports; - nsCOMPtr directory; - dirSupports = getter_AddRefs(dierctories->ElementAt(i)); - directory = do_QueryInterface(dirSupports, &rv); - if (NS_SUCCEEDED(rv) && directory) - { - DIR_Server *server = nsnull; - rv = directory->GetServer(&server); - if (server) - { //it's an address book - DeleteDirectoryCards(directory, server); + DIR_Server *server = nsnull; + rv = directory->GetServer(&server); + if (server) + { //it's an address book + DeleteDirectoryCards(directory, server); - DIR_DeleteServerFromList(server); + DIR_DeleteServerFromList(server); - rv = mSubDirectories->RemoveElement(directory); - NotifyItemDeleted(directory); - } - else - { //it's a mailing list - nsresult rv = NS_OK; + rv = mSubDirectories->RemoveElement(directory); + NotifyItemDeleted(directory); + } + else + { //it's a mailing list + nsresult rv = NS_OK; - char *uri; - rv = directory->GetDirUri(&uri); - if (NS_FAILED(rv)) return rv; + char *uri; + rv = directory->GetDirUri(&uri); + if (NS_FAILED(rv)) return rv; + + nsCOMPtr database; + NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv); + if (NS_SUCCEEDED(rv)) + { + rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(database)); + nsAllocator::Free(uri); - nsCOMPtr database; - NS_WITH_SERVICE(nsIAddressBook, addresBook, kAddrBookCID, &rv); if (NS_SUCCEEDED(rv)) - { - rv = addresBook->GetAbDatabaseFromURI(uri, getter_AddRefs(database)); - nsAllocator::Free(uri); + rv = database->DeleteMailList(directory, PR_TRUE); - if (NS_SUCCEEDED(rv)) - rv = database->DeleteMailList(directory, PR_TRUE); + if (NS_SUCCEEDED(rv)) + database->Commit(kLargeCommit); - if (NS_SUCCEEDED(rv)) - database->Commit(kLargeCommit); - - NotifyItemDeleted(directory); - } + NotifyItemDeleted(directory); } } } diff --git a/mozilla/mailnews/addrbook/src/nsAbDirectory.h b/mozilla/mailnews/addrbook/src/nsAbDirectory.h index 8fca6b2e536..363683c4662 100644 --- a/mozilla/mailnews/addrbook/src/nsAbDirectory.h +++ b/mozilla/mailnews/addrbook/src/nsAbDirectory.h @@ -53,7 +53,7 @@ public: NS_IMETHOD GetChildCards(nsIEnumerator* *result); NS_IMETHOD AddChildCards(const char *uriName, nsIAbCard **childCard); NS_IMETHOD AddDirectory(const char *uriName, nsIAbDirectory **childDir); - NS_IMETHOD DeleteDirectories(nsISupportsArray *directories); + NS_IMETHOD DeleteDirectory(nsIAbDirectory *directory); NS_IMETHOD DeleteCards(nsISupportsArray *cards); NS_IMETHOD HasCard(nsIAbCard *cards, PRBool *hasCard); NS_IMETHOD HasDirectory(nsIAbDirectory *dir, PRBool *hasDir); diff --git a/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp b/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp index 0a17324ac3a..4320b654ef3 100644 --- a/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp +++ b/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp @@ -1642,6 +1642,11 @@ nsresult nsAddrDatabase::AddListCardColumnsToRow(nsIAbCard *pCard, nsIMdbRow *pL AddPrimaryEmail(pCardRow, pUTF8Email); err = m_mdbPabTable->AddRow(GetEnv(), pCardRow); } + + //notify RDF a new card row + nsCOMPtr newCard; + CreateABCard(pCardRow, getter_AddRefs(newCard)); + NotifyCardEntryChange(AB_NotifyInserted, newCard, NULL); } PR_FREEIF(pUTF8Email); @@ -1797,6 +1802,11 @@ NS_IMETHODIMP nsAddrDatabase::CreateMailListAndAddToDB(nsIAbDirectory *newList, AddListAttributeColumnsToRow(newList, listRow); AddRecordKeyColumnToRow(listRow); err = m_mdbPabTable->AddRow(GetEnv(), listRow); + + nsCOMPtr listCard; + CreateABListCard(listRow, getter_AddRefs(listCard)); + NotifyCardEntryChange(AB_NotifyInserted, listCard, NULL); + listRow->CutStrongRef(GetEnv()); } if (NS_FAILED(err)) return err; @@ -3200,6 +3210,27 @@ nsresult nsAddrDatabase::GetListFromDB(nsIAbDirectory *newList, nsIMdbRow* listR PR_Free(unicodeStr); } + PRUint32 totalAddress = GetListAddressTotal(listRow); + PRUint32 pos; + for (pos = 1; pos <= totalAddress; pos++) + { + mdb_token listAddressColumnToken; + mdb_id rowID; + + char columnStr[16]; + sprintf(columnStr, kMailListAddressFormat, pos); + GetStore()->StringToToken(GetEnv(), columnStr, &listAddressColumnToken); + + nsIMdbRow* cardRow; + err = GetIntColumn(listRow, listAddressColumnToken, (PRUint32*)&rowID, 0); + err = GetCardRowByRowID(rowID, &cardRow); + + nsCOMPtr card; + err = CreateABCard(cardRow, getter_AddRefs(card)); + newList->AddAddressToList(card); +// NS_IF_ADDREF(card); + } + return err; } diff --git a/mozilla/mailnews/addrbook/src/nsAddressBook.cpp b/mozilla/mailnews/addrbook/src/nsAddressBook.cpp index c33be37c9db..ef9a107cf66 100644 --- a/mozilla/mailnews/addrbook/src/nsAddressBook.cpp +++ b/mozilla/mailnews/addrbook/src/nsAddressBook.cpp @@ -161,7 +161,7 @@ NS_IMETHODIMP nsAddressBook::DeleteCards dirArray->AppendElement(resource); - rv = DoCommand(database, NC_RDF_DELETE, dirArray, resourceArray); + rv = DoCommand(database, NC_RDF_DELETECARD, dirArray, resourceArray); return rv; } @@ -202,14 +202,14 @@ NS_IMETHODIMP nsAddressBook::NewAddressBook rdfService->GetLiteral(nameStr.GetUnicode(), getter_AddRefs(nameLiteral)); nameArray->AppendElement(nameLiteral); - DoCommand(db, "http://home.netscape.com/NC-rdf#NewDirectory", dirArray, nameArray); + DoCommand(db, NC_RDF_NEWDIRECTORY, dirArray, nameArray); return rv; } NS_IMETHODIMP nsAddressBook::DeleteAddressBooks -(nsIRDFCompositeDataSource* db, nsIDOMXULElement *srcDirectory, nsIDOMNodeList *nodeList) +(nsIRDFCompositeDataSource* db, nsISupportsArray *parentDir, nsIDOMNodeList *nodeList) { - if(!db || !srcDirectory || !nodeList) + if(!db || !parentDir || !nodeList) return NS_ERROR_NULL_POINTER; nsresult rv = NS_OK; @@ -217,31 +217,12 @@ NS_IMETHODIMP nsAddressBook::DeleteAddressBooks if(NS_FAILED(rv)) return rv; - nsCOMPtr dirArray; - - rv = NS_NewISupportsArray(getter_AddRefs(dirArray)); - if(NS_FAILED(rv)) - return NS_ERROR_OUT_OF_MEMORY; - - nsCOMPtr parentResource; - char *parentUri = PR_smprintf("%s", kDirectoryDataSourceRoot); - rv = rdfService->GetResource(parentUri, getter_AddRefs(parentResource)); - nsCOMPtr parentDir = do_QueryInterface(parentResource); - if (!parentDir) - return NS_ERROR_NULL_POINTER; - if (parentUri) - PR_smprintf_free(parentUri); - - dirArray->AppendElement(parentResource); - - nsCOMPtr resourceArray; - rv = ConvertDOMListToResourceArray(nodeList, getter_AddRefs(resourceArray)); if(NS_FAILED(rv)) return rv; - DoCommand(db, NC_RDF_DELETE, dirArray, resourceArray); + DoCommand(db, NC_RDF_DELETE, parentDir, resourceArray); return rv; } diff --git a/mozilla/mailnews/addrbook/src/nsAddressBook.h b/mozilla/mailnews/addrbook/src/nsAddressBook.h index 8a3aa6756f8..b82d734b155 100644 --- a/mozilla/mailnews/addrbook/src/nsAddressBook.h +++ b/mozilla/mailnews/addrbook/src/nsAddressBook.h @@ -36,6 +36,7 @@ #define NC_RDF_NEWABCARD "http://home.netscape.com/NC-rdf#NewCard" #define NC_RDF_DELETE "http://home.netscape.com/NC-rdf#Delete" +#define NC_RDF_DELETECARD "http://home.netscape.com/NC-rdf#DeleteCards" #define NC_RDF_NEWDIRECTORY "http://home.netscape.com/NC-rdf#NewDirectory" class nsAddressBook : public nsIAddressBook, public nsICmdLineHandler diff --git a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp index 4c593549505..5f278a4237f 100644 --- a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp +++ b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp @@ -61,6 +61,7 @@ nsIRDFResource* nsAbDirectoryDataSource::kNC_DirUri = nsnull; // commands nsIRDFResource* nsAbDirectoryDataSource::kNC_Delete = nsnull; +nsIRDFResource* nsAbDirectoryDataSource::kNC_DeleteCards = nsnull; nsIRDFResource* nsAbDirectoryDataSource::kNC_NewDirectory = nsnull; #define NC_RDF_CHILD "http://home.netscape.com/NC-rdf#child" @@ -70,6 +71,7 @@ nsIRDFResource* nsAbDirectoryDataSource::kNC_NewDirectory = nsnull; //Directory Commands #define NC_RDF_DELETE "http://home.netscape.com/NC-rdf#Delete" +#define NC_RDF_DELETECARDS "http://home.netscape.com/NC-rdf#DeleteCards" #define NC_RDF_NEWDIRECTORY "http://home.netscape.com/NC-rdf#NewDirectory" //////////////////////////////////////////////////////////////////////// @@ -102,6 +104,7 @@ nsAbDirectoryDataSource::~nsAbDirectoryDataSource (void) NS_RELEASE2(kNC_DirUri, refcnt); NS_RELEASE2(kNC_Delete, refcnt); + NS_RELEASE2(kNC_DeleteCards, refcnt); NS_RELEASE2(kNC_NewDirectory, refcnt); /* free all directories */ @@ -133,6 +136,7 @@ nsAbDirectoryDataSource::Init() mRDFService->GetResource(NC_RDF_DIRURI, &kNC_DirUri); mRDFService->GetResource(NC_RDF_DELETE, &kNC_Delete); + mRDFService->GetResource(NC_RDF_DELETECARDS, &kNC_DeleteCards); mRDFService->GetResource(NC_RDF_NEWDIRECTORY, &kNC_NewDirectory); } @@ -341,6 +345,7 @@ nsAbDirectoryDataSource::GetAllCommands(nsIRDFResource* source, rv = NS_NewISupportsArray(getter_AddRefs(cmds)); if (NS_FAILED(rv)) return rv; cmds->AppendElement(kNC_Delete); + cmds->AppendElement(kNC_DeleteCards); cmds->AppendElement(kNC_NewDirectory); } @@ -365,7 +370,7 @@ nsAbDirectoryDataSource::IsCommandEnabled(nsISupportsArray/**/* directory = do_QueryInterface(source, &rv); if (NS_SUCCEEDED(rv)) { // we don't care about the arguments -- directory commands are always enabled - if (!((aCommand == kNC_Delete) || + if (!((aCommand == kNC_Delete) || (aCommand == kNC_DeleteCards) || (aCommand == kNC_NewDirectory))) { *aResult = PR_FALSE; return NS_OK; @@ -385,14 +390,17 @@ nsAbDirectoryDataSource::DoCommand(nsISupportsArray/**/* aSource nsresult rv = aSources->Count(&cnt); if (NS_FAILED(rv)) return rv; + if ((aCommand == kNC_Delete)) + rv = DoDeleteFromDirectory(aSources, aArguments); + for (i = 0; i < cnt; i++) { nsCOMPtr supports = getter_AddRefs(aSources->ElementAt(i)); nsCOMPtr directory = do_QueryInterface(supports, &rv); if (NS_SUCCEEDED(rv)) { - if ((aCommand == kNC_Delete)) - rv = DoDeleteFromDirectory(directory, aArguments); + if ((aCommand == kNC_DeleteCards)) + rv = DoDeleteCardsFromDirectory(directory, aArguments); else if((aCommand == kNC_NewDirectory)) rv = DoNewDirectory(directory, aArguments); } @@ -565,16 +573,41 @@ nsAbDirectoryDataSource::createDirectoryChildNode(nsIAbDirectory *directory, return NS_RDF_NO_VALUE; } -nsresult nsAbDirectoryDataSource::DoDeleteFromDirectory(nsIAbDirectory *directory, nsISupportsArray *arguments) +nsresult nsAbDirectoryDataSource::DoDeleteFromDirectory(nsISupportsArray *parentDirs, nsISupportsArray *delDirs) +{ + PRUint32 item, itemCount; + nsresult rv = parentDirs->Count(&itemCount); + if (NS_FAILED(rv)) return rv; + + nsCOMPtr dirArray; + NS_NewISupportsArray(getter_AddRefs(dirArray)); + + for (item = 0; item < itemCount; item++) + { + nsCOMPtr supports = getter_AddRefs(parentDirs->ElementAt(item)); + nsCOMPtr parent = do_QueryInterface(supports, &rv); + if (NS_SUCCEEDED(rv)) + { + nsCOMPtr supports = getter_AddRefs(delDirs->ElementAt(item)); + nsCOMPtr deletedDir(do_QueryInterface(supports)); + if(deletedDir) + { + rv = parent->DeleteDirectory(deletedDir); + } + } + } + return rv; +} + +nsresult nsAbDirectoryDataSource::DoDeleteCardsFromDirectory(nsIAbDirectory *directory, nsISupportsArray *arguments) { nsresult rv = NS_OK; PRUint32 itemCount; rv = arguments->Count(&itemCount); if (NS_FAILED(rv)) return rv; - nsCOMPtr cardArray, dirArray; + nsCOMPtr cardArray; NS_NewISupportsArray(getter_AddRefs(cardArray)); - NS_NewISupportsArray(getter_AddRefs(dirArray)); //Split up deleted items into different type arrays to be passed to the folder //for deletion. @@ -583,31 +616,19 @@ nsresult nsAbDirectoryDataSource::DoDeleteFromDirectory(nsIAbDirectory *director { nsCOMPtr supports = getter_AddRefs(arguments->ElementAt(item)); nsCOMPtr deletedCard(do_QueryInterface(supports)); - nsCOMPtr deletedDir(do_QueryInterface(supports)); if (deletedCard) { cardArray->AppendElement(supports); } - else if(deletedDir) - { - dirArray->AppendElement(supports); - } } PRUint32 cnt; rv = cardArray->Count(&cnt); if (NS_FAILED(rv)) return rv; if (cnt > 0) rv = directory->DeleteCards(cardArray); - - rv = dirArray->Count(&cnt); - if (NS_FAILED(rv)) return rv; - if (cnt > 0) - rv = directory->DeleteDirectories(dirArray); - return rv; } - nsresult nsAbDirectoryDataSource::DoNewDirectory(nsIAbDirectory *directory, nsISupportsArray *arguments) { nsresult rv = NS_OK; diff --git a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h index e9d6f3e69c2..b8fc3c1d0c0 100644 --- a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h +++ b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h @@ -102,8 +102,10 @@ protected: static nsresult getDirectoryArcLabelsOut(nsIAbDirectory *directory, nsISupportsArray **arcs); - nsresult DoDeleteFromDirectory(nsIAbDirectory *directory, - nsISupportsArray *arguments); + nsresult DoDeleteFromDirectory(nsISupportsArray *parentDirs, + nsISupportsArray *delDirs); + nsresult DoDeleteCardsFromDirectory(nsIAbDirectory *directory, + nsISupportsArray *delDirs); nsresult DoDirectoryAssert(nsIAbDirectory *directory, nsIRDFResource *property, nsIRDFNode *target); @@ -121,6 +123,7 @@ protected: // commands static nsIRDFResource* kNC_Delete; + static nsIRDFResource* kNC_DeleteCards; static nsIRDFResource* kNC_NewDirectory; };