Bug #119344 --> add ability to deep count new mail messages

r=bhuvan
sr=sspitzer
This commit is contained in:
mscott%netscape.com 2002-01-25 05:19:37 +00:00
parent 8c9ffc4606
commit 0c12948c4a
4 changed files with 33 additions and 7 deletions

View File

@ -334,8 +334,12 @@ const nsMsgBiffState nsMsgBiffState_Unknown = 2; // We dunno whether there is ne
/**
* the number of new messages since this folder was last visited
*/
attribute long numNewMessages;
* @param deep if true, descends into all subfolders and gets a grand total
*/
long getNumNewMessages (in boolean deep);
void setNumNewMessages(in long numNewMessages);
/**
* verbose description of the new messages in this folder

View File

@ -320,7 +320,7 @@ nsresult nsMsgNotificationManager::AddNewMailNotification(nsIMsgFolder *folder)
}
PRInt32 newMessages;
rv = folder->GetNumNewMessages(&newMessages);
rv = folder->GetNumNewMessages(PR_FALSE, &newMessages);
if(NS_SUCCEEDED(rv))
{
char *str = PR_smprintf("%d new %s", newMessages, (newMessages == 1) ? "message" : "messages");

View File

@ -2027,7 +2027,6 @@ NS_IMETHODIMP nsMsgFolder::SetBiffState(PRUint32 aBiffState)
return folder->SetBiffState(aBiffState);
}
server->SetBiffState(aBiffState);
nsCOMPtr<nsISupports> supports;
if(NS_SUCCEEDED(QueryInterface(NS_GET_IID(nsISupports), getter_AddRefs(supports))))
@ -2037,12 +2036,35 @@ NS_IMETHODIMP nsMsgFolder::SetBiffState(PRUint32 aBiffState)
return NS_OK;
}
NS_IMETHODIMP nsMsgFolder::GetNumNewMessages(PRInt32 *aNumNewMessages)
NS_IMETHODIMP nsMsgFolder::GetNumNewMessages(PRBool deep, PRInt32 *aNumNewMessages)
{
if(!aNumNewMessages)
return NS_ERROR_NULL_POINTER;
*aNumNewMessages = mNumNewBiffMessages;
PRInt32 numNewMessages = mNumNewBiffMessages;
if (deep)
{
nsCOMPtr<nsIMsgFolder> folder;
PRUint32 count;
nsresult rv = NS_OK;
rv = mSubFolders->Count(&count);
if (NS_SUCCEEDED(rv))
{
for (PRUint32 i = 0; i < count; i++)
{
nsCOMPtr<nsISupports> supports = getter_AddRefs(mSubFolders->ElementAt(i));
folder = do_QueryInterface(supports, &rv);
if(NS_SUCCEEDED(rv))
{
PRInt32 num;
folder->GetNumNewMessages(deep, &num);
if (num >= 0) // it's legal for counts to be negative if we don't know
numNewMessages += num;
}
}
}
}
*aNumNewMessages = numNewMessages;
return NS_OK;
}

View File

@ -170,7 +170,7 @@ public:
// NS_IMETHOD SetCharset(const PRUnichar * aCharset);
NS_IMETHOD GetBiffState(PRUint32 *aBiffState);
NS_IMETHOD SetBiffState(PRUint32 aBiffState);
NS_IMETHOD GetNumNewMessages(PRInt32 *aNumNewMessages);
NS_IMETHOD GetNumNewMessages(PRBool deep, PRInt32 *aNumNewMessages);
NS_IMETHOD SetNumNewMessages(PRInt32 aNumNewMessages);
NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription);
NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder);