17204; r=naving sr=sspitzer patch by bienvenu to make offline stores keep track of expunged bytes.

This commit is contained in:
naving%netscape.com 2001-07-09 22:09:35 +00:00
parent aaf419adb2
commit 2e71bfd271
6 changed files with 39 additions and 5 deletions

View File

@ -39,6 +39,7 @@ public:
NS_IMETHOD EndBatch();
NS_IMETHOD SetSummaryValid(PRBool valid = PR_TRUE);
NS_IMETHOD DeleteMessages(nsMsgKeyArray* nsMsgKeys, nsIDBChangeListener *instigator);
virtual nsresult AdjustExpungedBytesOnDelete(nsIMsgDBHdr *msgHdr);
protected:
// IMAP does not set local file flags, override does nothing

View File

@ -177,6 +177,7 @@ protected:
virtual nsresult RemoveHeaderFromDB(nsMsgHdr *msgHdr);
virtual nsresult RemoveHeaderFromThread(nsMsgHdr *msgHdr);
virtual nsresult AdjustExpungedBytesOnDelete(nsIMsgDBHdr *msgHdr);
static nsVoidArray/*<nsMsgDatabase>*/* GetDBCache();

View File

@ -67,6 +67,8 @@ public:
virtual PRBool SetHdrReadFlag(nsIMsgDBHdr *msgHdr, PRBool bRead);
virtual nsNewsDatabase *GetNewsDB() ;
virtual nsresult AdjustExpungedBytesOnDelete(nsIMsgDBHdr *msgHdr);
virtual PRBool PurgeNeeded(MSG_PurgeInfo *hdrPurgeInfo, MSG_PurgeInfo *artPurgeInfo);
PRBool IsCategory();

View File

@ -181,3 +181,17 @@ NS_IMETHODIMP nsImapMailDatabase::DeleteMessages(nsMsgKeyArray* nsMsgKeys, nsIDB
return nsMsgDatabase::DeleteMessages(nsMsgKeys, instigator);
}
nsresult nsImapMailDatabase::AdjustExpungedBytesOnDelete(nsIMsgDBHdr *msgHdr)
{
PRUint32 msgFlags;
msgHdr->GetFlags(&msgFlags);
if (msgFlags & MSG_FLAG_OFFLINE && m_dbFolderInfo)
{
PRUint32 size = 0;
(void)msgHdr->GetOfflineMessageSize(&size);
return m_dbFolderInfo->ChangeExpungedBytes (size);
}
return NS_OK;
}

View File

@ -1390,6 +1390,13 @@ NS_IMETHODIMP nsMsgDatabase::DeleteMessages(nsMsgKeyArray* nsMsgKeys, nsIDBChang
return err;
}
nsresult nsMsgDatabase::AdjustExpungedBytesOnDelete(nsIMsgDBHdr *msgHdr)
{
PRUint32 size = 0;
(void)msgHdr->GetMessageSize(&size);
return m_dbFolderInfo->ChangeExpungedBytes (size);
}
NS_IMETHODIMP nsMsgDatabase::DeleteHeader(nsIMsgDBHdr *msg, nsIDBChangeListener *instigator, PRBool commit, PRBool notify)
{
@ -1411,11 +1418,7 @@ NS_IMETHODIMP nsMsgDatabase::DeleteHeader(nsIMsgDBHdr *msg, nsIDBChangeListener
IsRead(key, &isRead);
if (!isRead)
m_dbFolderInfo->ChangeNumNewMessages(-1);
PRUint32 size;
(void)msg->GetMessageSize(&size);
m_dbFolderInfo->ChangeExpungedBytes (size);
AdjustExpungedBytesOnDelete(msg);
}
PRUint32 flags;

View File

@ -447,6 +447,19 @@ NS_IMETHODIMP nsNewsDatabase::MarkAllRead(nsMsgKeyArray *thoseMarked)
return err;
}
nsresult nsNewsDatabase::AdjustExpungedBytesOnDelete(nsIMsgDBHdr *msgHdr)
{
PRUint32 msgFlags;
msgHdr->GetFlags(&msgFlags);
if (msgFlags & MSG_FLAG_OFFLINE && m_dbFolderInfo)
{
PRUint32 size = 0;
(void)msgHdr->GetOfflineMessageSize(&size);
return m_dbFolderInfo->ChangeExpungedBytes (size);
}
return NS_OK;
}
NS_IMETHODIMP
nsNewsDatabase::GetDefaultViewFlags(nsMsgViewFlagsTypeValue *aDefaultViewFlags)
{