From 510b1c3f0323db7baf3a7ae8801c5f4915e45cfa Mon Sep 17 00:00:00 2001 From: "putterman%netscape.com" Date: Fri, 12 Mar 1999 07:55:26 +0000 Subject: [PATCH] Add and Remove FolderListeners. --- mailnews/base/src/nsMsgFolder.cpp | 45 ++++++++++++++++++++++++++----- mailnews/base/src/nsMsgFolder.h | 14 +++++++--- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/mailnews/base/src/nsMsgFolder.cpp b/mailnews/base/src/nsMsgFolder.cpp index a95e1ccec8d9..23c200207bcc 100644 --- a/mailnews/base/src/nsMsgFolder.cpp +++ b/mailnews/base/src/nsMsgFolder.cpp @@ -39,7 +39,8 @@ nsMsgFolder::nsMsgFolder(void) mNumUnreadMessages(-1), mNumTotalMessages(0), mCsid(0), mDepth(0), - mPrefFlags(0) + mPrefFlags(0), + mListeners(nsnull) { // NS_INIT_REFCNT(); done by superclass @@ -72,6 +73,14 @@ nsMsgFolder::~nsMsgFolder(void) NS_RELEASE(mSubFolders); } + + if (mListeners) { + for (PRInt32 i = mListeners->Count() - 1; i >= 0; --i) { + mListeners->RemoveElementAt(i); + } + NS_RELEASE(mListeners); + } + } NS_IMPL_ISUPPORTS_INHERITED(nsMsgFolder, nsRDFResource, nsIMsgFolder) @@ -125,6 +134,30 @@ nsMsgFolder::GetSubFolders(nsIEnumerator* *result) return mSubFolders->Enumerate(result); } +NS_IMETHODIMP nsMsgFolder::AddFolderListener(nsIFolderListener * listener) +{ + nsresult rv; + if (! mListeners) + { + rv = NS_NewISupportsArray(&mListeners); + if (!NS_SUCCEEDED(rv)) + return rv; + } + mListeners->AppendElement(listener); + return NS_OK; + +} + +NS_IMETHODIMP nsMsgFolder::RemoveFolderListener(nsIFolderListener * listener) +{ + if (! mListeners) + return NS_OK; + mListeners->RemoveElement(listener); + return NS_OK; + +} + + NS_IMETHODIMP nsMsgFolder::GetMessages(nsIEnumerator* *result) { @@ -405,7 +438,7 @@ NS_IMETHODIMP nsMsgFolder::SetName(char * name) return NS_OK; } -NS_IMETHODIMP nsMsgFolder::GetChildNamed(char* name, nsISupports* *result) +NS_IMETHODIMP nsMsgFolder::GetChildNamed(const char* name, nsISupports* *result) { return NS_ERROR_NOT_IMPLEMENTED; } @@ -590,10 +623,10 @@ NS_IMETHODIMP nsMsgFolder::CreateSubfolder(const char *, nsIMsgFolder**, PRUint3 } -NS_IMETHODIMP nsMsgFolder::Rename(char *name) +NS_IMETHODIMP nsMsgFolder::Rename(const char *name) { nsresult status = NS_OK; - status = SetName(name); + status = SetName((char*)name); //After doing a SetName we need to make sure that broadcasting this message causes a //new sort to happen. #ifdef HAVE_MASTER @@ -610,7 +643,7 @@ NS_IMETHODIMP nsMsgFolder::Adopt(const nsIMsgFolder *srcFolder, PRUint32* outPos } -NS_IMETHODIMP nsMsgFolder::ContainsChildNamed(char *name, PRBool* containsChild) +NS_IMETHODIMP nsMsgFolder::ContainsChildNamed(const char *name, PRBool* containsChild) { nsIMsgFolder *child; @@ -703,7 +736,7 @@ NS_IMETHODIMP nsMsgFolder::IsParentOf(nsIMsgFolder *child, PRBool deep, PRBool * } -NS_IMETHODIMP nsMsgFolder::GenerateUniqueSubfolderName(char *prefix, nsIMsgFolder *otherFolder, +NS_IMETHODIMP nsMsgFolder::GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **name) { if(!name) diff --git a/mailnews/base/src/nsMsgFolder.h b/mailnews/base/src/nsMsgFolder.h index ad421ba117e3..a0883e04e811 100644 --- a/mailnews/base/src/nsMsgFolder.h +++ b/mailnews/base/src/nsMsgFolder.h @@ -55,9 +55,12 @@ public: NS_IMETHOD GetURI(char* *name) { return nsRDFResource::GetValue((const char**)&name); } NS_IMETHOD GetName(char **name); NS_IMETHOD SetName(char *name); - NS_IMETHOD GetChildNamed(char *name, nsISupports* *result); + NS_IMETHOD GetChildNamed(const char *name, nsISupports* *result); NS_IMETHOD GetParent(nsIFolder* *parent); NS_IMETHOD GetSubFolders(nsIEnumerator* *result); + NS_IMETHOD AddFolderListener(nsIFolderListener * listener); + NS_IMETHOD RemoveFolderListener(nsIFolderListener * listener); + // nsIMsgFolder methods: NS_IMETHOD AddUnique(nsISupports* element); @@ -139,14 +142,14 @@ public: NS_IMETHOD CreateSubfolder(const char *leafNameFromuser, nsIMsgFolder** outFolder, PRUint32* outPos); - NS_IMETHOD Rename(char *name); + NS_IMETHOD Rename(const char *name); NS_IMETHOD Adopt(const nsIMsgFolder *srcFolder, PRUint32*); - NS_IMETHOD ContainsChildNamed(char *name, PRBool *containsChild); + NS_IMETHOD ContainsChildNamed(const char *name, PRBool *containsChild); NS_IMETHOD FindParentOf(nsIMsgFolder * aFolder, nsIMsgFolder ** aParent); NS_IMETHOD IsParentOf(nsIMsgFolder *, PRBool deep, PRBool *isParent); - NS_IMETHOD GenerateUniqueSubfolderName(char *prefix, nsIMsgFolder *otherFolder, + NS_IMETHOD GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **name); NS_IMETHOD GetDepth(PRUint32 *depth); @@ -273,6 +276,8 @@ public: NS_IMETHOD GetHostName(char **hostName); virtual nsresult GetDBFolderInfoAndDB(nsDBFolderInfo **folderInfo, nsMsgDatabase **db) = 0; + NS_IMETHOD DeleteMessage(nsIMessage *message) = 0; + protected: nsString mName; @@ -282,6 +287,7 @@ protected: tried to find out.) */ PRInt32 mNumTotalMessages; /* count of existing messages. */ nsISupportsArray *mSubFolders; + nsISupportsArray *mListeners; #ifdef HAVE_MASTER MSG_Master *mMaster; #endif