Add folder listener routines.

This commit is contained in:
putterman%netscape.com 1999-05-14 00:43:19 +00:00
parent 511b805dfa
commit 358cdf3322
2 changed files with 89 additions and 0 deletions

View File

@ -48,11 +48,19 @@ nsMsgMailSession::nsMsgMailSession():
if (NS_SUCCEEDED(rv))
m_accountManager->LoadAccounts();
mListeners = new nsVoidArray();
}
nsMsgMailSession::~nsMsgMailSession()
{
NS_IF_RELEASE(m_accountManager);
if (mListeners)
{
delete mListeners;
}
}
@ -93,3 +101,73 @@ nsresult nsMsgMailSession::GetAccountManager(nsIMsgAccountManager* *aAM)
NS_IF_ADDREF(*aAM);
return NS_OK;
}
NS_IMETHODIMP nsMsgMailSession::AddFolderListener(nsIFolderListener * listener)
{
mListeners->AppendElement(listener);
return NS_OK;
}
NS_IMETHODIMP nsMsgMailSession::RemoveFolderListener(nsIFolderListener * listener)
{
mListeners->RemoveElement(listener);
return NS_OK;
}
NS_IMETHODIMP nsMsgMailSession::NotifyFolderItemPropertyChanged(nsISupports *item, char *property, char* oldValue, char* newValue)
{
PRInt32 i;
for(i = 0; i < mListeners->Count(); i++)
{
//Folderlistener's aren't refcounted.
nsIFolderListener* listener =(nsIFolderListener*)mListeners->ElementAt(i);
listener->OnItemPropertyChanged(item, property, oldValue, newValue);
}
return NS_OK;
}
NS_IMETHODIMP nsMsgMailSession::NotifyFolderItemPropertyFlagChanged(nsISupports *item, char *property,
PRUint32 oldValue, PRUint32 newValue)
{
PRInt32 i;
for(i = 0; i < mListeners->Count(); i++)
{
//Folderlistener's aren't refcounted.
nsIFolderListener* listener =(nsIFolderListener*)mListeners->ElementAt(i);
listener->OnItemPropertyFlagChanged(item, property, oldValue, newValue);
}
return NS_OK;
}
NS_IMETHODIMP nsMsgMailSession::NotifyFolderItemAdded(nsIFolder *folder, nsISupports *item)
{
PRInt32 i;
for(i = 0; i < mListeners->Count(); i++)
{
//Folderlistener's aren't refcounted.
nsIFolderListener *listener = (nsIFolderListener*)mListeners->ElementAt(i);
listener->OnItemAdded(folder, item);
}
return NS_OK;
}
NS_IMETHODIMP nsMsgMailSession::NotifyFolderItemDeleted(nsIFolder *folder, nsISupports *item)
{
PRInt32 i;
for(i = 0; i < mListeners->Count(); i++)
{
//Folderlistener's aren't refcounted.
nsIFolderListener *listener = (nsIFolderListener*)mListeners->ElementAt(i);
listener->OnItemRemoved(folder, item);
}
return NS_OK;
}

View File

@ -45,9 +45,20 @@ public:
NS_IMETHOD GetCurrentIdentity(nsIMsgIdentity ** aIdentity);
NS_IMETHOD GetCurrentServer(nsIMsgIncomingServer **aServer);
NS_IMETHOD GetAccountManager(nsIMsgAccountManager* *aAM);
NS_IMETHOD AddFolderListener(nsIFolderListener *listener);
NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener);
NS_IMETHOD NotifyFolderItemPropertyChanged(nsISupports *item, char *property, char* oldValue, char* newValue);
NS_IMETHOD NotifyFolderItemPropertyFlagChanged(nsISupports *item, char *property, PRUint32 oldValue,
PRUint32 newValue);
NS_IMETHOD NotifyFolderItemAdded(nsIFolder *folder, nsISupports *item);
NS_IMETHOD NotifyFolderItemDeleted(nsIFolder *folder, nsISupports *item);
protected:
nsIMsgAccountManager *m_accountManager;
nsVoidArray *mListeners;
};
#endif /* nsMsgMailSession_h__ */