mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-05 22:05:40 +00:00
make dbFolderInfo an interface
This commit is contained in:
parent
c70ba64725
commit
145c809d6c
@ -30,6 +30,7 @@ EXPORTS= \
|
||||
nsNewsDatabase.h \
|
||||
nsDBFolderInfo.h \
|
||||
nsIDBChangeListener.h \
|
||||
nsIDBFolderInfo.h \
|
||||
nsIMessage.h \
|
||||
$(NULL)
|
||||
|
||||
|
@ -30,6 +30,7 @@ EXPORTS = \
|
||||
nsDBFolderInfo.h \
|
||||
nsMsgHdr.h \
|
||||
nsIDBChangeListener.h \
|
||||
nsIDBFolderInfo.h \
|
||||
nsIMessage.h \
|
||||
$(NULL)
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "xp.h"
|
||||
#include "mdb.h"
|
||||
#include "nsMsgKeyArray.h"
|
||||
#include "nsIDBFolderInfo.h"
|
||||
|
||||
class nsMsgDatabase;
|
||||
|
||||
@ -37,22 +38,48 @@ class nsMsgDatabase;
|
||||
// caching the values. If this somehow turns out to be prohibitively expensive, we can invent
|
||||
// some sort of dirty mechanism, but I think it turns out that these values will be cached by
|
||||
// the MSG_FolderInfo's anyway.
|
||||
class nsDBFolderInfo
|
||||
class nsDBFolderInfo : public nsIDBFolderInfo
|
||||
{
|
||||
public:
|
||||
friend class nsMsgDatabase;
|
||||
|
||||
nsDBFolderInfo(nsMsgDatabase *mdb);
|
||||
virtual ~nsDBFolderInfo();
|
||||
nsrefcnt AddRef(void);
|
||||
nsrefcnt Release(void);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
// interface methods.
|
||||
NS_IMETHOD GetFlags(PRInt32 *result);
|
||||
NS_IMETHOD SetFlags(PRInt32 flags);
|
||||
NS_IMETHOD OrFlags(PRInt32 flags, PRInt32 *result);
|
||||
NS_IMETHOD AndFlags(PRInt32 flags, PRInt32 *result);
|
||||
NS_IMETHOD SetHighWater(nsMsgKey highWater, PRBool force = FALSE) ;
|
||||
NS_IMETHOD GetHighWater(nsMsgKey *result) ;
|
||||
NS_IMETHOD SetExpiredMark(nsMsgKey expiredKey);
|
||||
NS_IMETHOD ChangeNumNewMessages(PRInt32 delta);
|
||||
NS_IMETHOD ChangeNumMessages(PRInt32 delta);
|
||||
NS_IMETHOD ChangeNumVisibleMessages(PRInt32 delta);
|
||||
NS_IMETHOD GetNumNewMessages(PRInt32 *result) ;
|
||||
NS_IMETHOD GetNumMessages(PRInt32 *result) ;
|
||||
NS_IMETHOD GetNumVisibleMessages(PRInt32 *result) ;
|
||||
NS_IMETHOD GetImapUidValidity(PRInt32 *result) ;
|
||||
NS_IMETHOD SetImapUidValidity(PRInt32 uidValidity) ;
|
||||
|
||||
NS_IMETHOD SetVersion(PRUint16 version) ;
|
||||
|
||||
NS_IMETHOD GetLastMessageLoaded(nsMsgKey *result);
|
||||
NS_IMETHOD SetLastMessageLoaded(nsMsgKey lastLoaded);
|
||||
|
||||
NS_IMETHOD SetFolderSize(PRUint32 size);
|
||||
NS_IMETHOD SetFolderDate(time_t date);
|
||||
|
||||
NS_IMETHOD GetProperty(const char *propertyName, nsString &resultProperty);
|
||||
NS_IMETHOD SetProperty(const char *propertyName, nsString &propertyStr);
|
||||
NS_IMETHOD SetUint32Property(const char *propertyName, PRUint32 propertyValue);
|
||||
NS_IMETHOD GetUint32Property(const char *propertyName, PRUint32 &propertyValue);
|
||||
|
||||
// create the appropriate table and row in a new db.
|
||||
nsresult AddToNewMDB();
|
||||
// accessor methods.
|
||||
void SetHighWater(nsMsgKey highWater, PRBool force = FALSE) ;
|
||||
nsMsgKey GetHighWater() ;
|
||||
void SetExpiredMark(nsMsgKey expiredKey);
|
||||
int GetDiskVersion();
|
||||
|
||||
PRBool AddLaterKey(nsMsgKey key, time_t *until);
|
||||
@ -68,16 +95,6 @@ public:
|
||||
// we would like to just store the property name we're sorted by
|
||||
void SetSortInfo(nsMsgSortType, nsMsgSortOrder);
|
||||
void GetSortInfo(nsMsgSortType *, nsMsgSortOrder *);
|
||||
PRInt32 ChangeNumNewMessages(PRInt32 delta);
|
||||
PRInt32 ChangeNumMessages(PRInt32 delta);
|
||||
PRInt32 ChangeNumVisibleMessages(PRInt32 delta);
|
||||
PRInt32 GetNumNewMessages() ;
|
||||
PRInt32 GetNumMessages() ;
|
||||
PRInt32 GetNumVisibleMessages() ;
|
||||
PRInt32 GetFlags();
|
||||
void SetFlags(PRInt32 flags);
|
||||
void OrFlags(PRInt32 flags);
|
||||
void AndFlags(PRInt32 flags);
|
||||
PRBool TestFlag(PRInt32 flags);
|
||||
PRInt16 GetCSID() ;
|
||||
void SetCSID(PRInt16 csid) ;
|
||||
@ -88,29 +105,15 @@ public:
|
||||
PRInt32 GetImapUnreadPendingMessages() ;
|
||||
void ChangeImapUnreadPendingMessages(PRInt32 delta) ;
|
||||
|
||||
PRInt32 GetImapUidValidity() ;
|
||||
void SetImapUidValidity(PRInt32 uidValidity) ;
|
||||
|
||||
void SetVersion(PRUint16 version) {m_version = version;}
|
||||
|
||||
nsMsgKey GetLastMessageLoaded();
|
||||
void SetLastMessageLoaded(nsMsgKey lastLoaded);
|
||||
|
||||
void SetFolderSize(PRUint32 size);
|
||||
void SetFolderDate(time_t date);
|
||||
|
||||
virtual void SetKnownArtsSet(nsString &newsArtSet);
|
||||
virtual void GetKnownArtsSet(nsString &newsArtSet);
|
||||
|
||||
// get and set arbitrary property, aka row cell value.
|
||||
nsresult GetProperty(const char *propertyName, nsString &resultProperty);
|
||||
nsresult SetProperty(const char *propertyName, nsString &propertyStr);
|
||||
nsresult SetUint32Property(const char *propertyName, PRUint32 propertyValue);
|
||||
nsresult SetPropertyWithToken(mdb_token aProperty, nsString &propertyStr);
|
||||
nsresult SetUint32PropertyWithToken(mdb_token aProperty, PRUint32 propertyValue);
|
||||
nsresult SetInt32PropertyWithToken(mdb_token aProperty, PRInt32 propertyValue);
|
||||
nsresult GetPropertyWithToken(mdb_token aProperty, nsString &resultProperty);
|
||||
nsresult GetUint32Property(const char *propertyName, PRUint32 &propertyValue);
|
||||
nsresult GetUint32PropertyWithToken(mdb_token aProperty, PRUint32 &propertyValue);
|
||||
nsresult GetInt32PropertyWithToken(mdb_token aProperty, PRInt32 &propertyValue);
|
||||
|
||||
@ -137,7 +140,6 @@ public:
|
||||
nsMsgKeyArray m_lateredKeys; // list of latered messages
|
||||
|
||||
protected:
|
||||
nsrefcnt mRefCnt;
|
||||
|
||||
// initialize from appropriate table and row in existing db.
|
||||
nsresult InitFromExistingDB();
|
||||
|
68
mailnews/db/msgdb/public/nsIDBFolderInfo.h
Normal file
68
mailnews/db/msgdb/public/nsIDBFolderInfo.h
Normal file
@ -0,0 +1,68 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsIDBFolderInfo_h__
|
||||
#define nsIDBFolderInfo_h__
|
||||
|
||||
#include "MailNewsTypes.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#define NS_IDBFOLDERINFO_IID \
|
||||
{ /* 5cb11c00-cb8b-11d2-8d67-00805f8a6617 */ \
|
||||
0x5cb11c00, \
|
||||
0xcb8b, \
|
||||
0x11d2, \
|
||||
{0x8d, 0x67, 0x00, 0x80, 0x5f, 0x8a, 0x66, 0x17} \
|
||||
}
|
||||
|
||||
class nsIDBFolderInfo : public nsISupports {
|
||||
public:
|
||||
static const nsIID& IID() { static nsIID iid = NS_IDBFOLDERINFO_IID; return iid; }
|
||||
|
||||
NS_IMETHOD GetFlags(PRInt32 *result) ;
|
||||
NS_IMETHOD SetFlags(PRInt32 flags) = 0;
|
||||
NS_IMETHOD OrFlags(PRInt32 flags, PRInt32 *result) = 0;
|
||||
NS_IMETHOD AndFlags(PRInt32 flags, PRInt32 *result) = 0;
|
||||
NS_IMETHOD SetHighWater(nsMsgKey highWater, PRBool force = FALSE) = 0;
|
||||
NS_IMETHOD GetHighWater(nsMsgKey *result) = 0;
|
||||
NS_IMETHOD SetExpiredMark(nsMsgKey expiredKey) = 0;
|
||||
NS_IMETHOD ChangeNumNewMessages(PRInt32 delta) = 0;
|
||||
NS_IMETHOD ChangeNumMessages(PRInt32 delta) = 0;
|
||||
NS_IMETHOD ChangeNumVisibleMessages(PRInt32 delta) = 0;
|
||||
NS_IMETHOD GetNumNewMessages(PRInt32 *result) = 0;
|
||||
NS_IMETHOD GetNumMessages(PRInt32 *result) = 0;
|
||||
NS_IMETHOD GetNumVisibleMessages(PRInt32 *result) = 0;
|
||||
NS_IMETHOD GetImapUidValidity(PRInt32 *result) = 0;
|
||||
NS_IMETHOD SetImapUidValidity(PRInt32 uidValidity) = 0;
|
||||
|
||||
NS_IMETHOD SetVersion(PRUint16 version) = 0;
|
||||
|
||||
NS_IMETHOD GetLastMessageLoaded(nsMsgKey *result) = 0;
|
||||
NS_IMETHOD SetLastMessageLoaded(nsMsgKey lastLoaded) = 0;
|
||||
|
||||
NS_IMETHOD SetFolderSize(PRUint32 size) = 0;
|
||||
NS_IMETHOD SetFolderDate(time_t date) = 0;
|
||||
|
||||
NS_IMETHOD GetProperty(const char *propertyName, nsString &resultProperty) = 0;
|
||||
NS_IMETHOD SetProperty(const char *propertyName, nsString &propertyStr) = 0;
|
||||
NS_IMETHOD SetUint32Property(const char *propertyName, PRUint32 propertyValue) = 0;
|
||||
NS_IMETHOD GetUint32Property(const char *propertyName, PRUint32 &propertyValue) = 0;
|
||||
};
|
||||
|
||||
#endif // nsIDBFolderInfo_h__
|
||||
|
@ -42,6 +42,31 @@ static const char * kMailboxNameColumnName = "mailboxName";
|
||||
static const char * kKnownArtsSetColumnName = "knownArts";
|
||||
static const char * kExpiredMarkColumnName = "expiredMark";
|
||||
|
||||
// we need this because of an egcs 1.0 (and possibly gcc) compiler bug
|
||||
// that doesn't allow you to call ::nsISupports::IID() inside of a class
|
||||
// that multiply inherits from nsISupports
|
||||
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
|
||||
|
||||
NS_IMPL_ADDREF(nsDBFolderInfo)
|
||||
NS_IMPL_RELEASE(nsDBFolderInfo)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDBFolderInfo::QueryInterface(REFNSIID iid, void** result)
|
||||
{
|
||||
if (! result)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
*result = nsnull;
|
||||
if(iid.Equals(nsIDBFolderInfo::IID()) ||
|
||||
iid.Equals(kISupportsIID)) {
|
||||
*result = NS_STATIC_CAST(nsIDBFolderInfo*, this);
|
||||
AddRef();
|
||||
return NS_OK;
|
||||
}
|
||||
return NS_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
||||
nsDBFolderInfo::nsDBFolderInfo(nsMsgDatabase *mdb)
|
||||
: m_folderDate(0) // now
|
||||
{
|
||||
@ -96,23 +121,6 @@ nsDBFolderInfo::~nsDBFolderInfo()
|
||||
}
|
||||
}
|
||||
|
||||
// ref counting methods - if we inherit from nsISupports, we won't need these,
|
||||
// and we can take advantage of the nsISupports ref-counting tracing methods
|
||||
nsrefcnt nsDBFolderInfo::AddRef(void)
|
||||
{
|
||||
return ++mRefCnt;
|
||||
}
|
||||
|
||||
nsrefcnt nsDBFolderInfo::Release(void)
|
||||
{
|
||||
NS_PRECONDITION(0 != mRefCnt, "dup release");
|
||||
if (--mRefCnt == 0)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return mRefCnt;
|
||||
}
|
||||
|
||||
// this routine sets up a new db to know about the dbFolderInfo stuff...
|
||||
nsresult nsDBFolderInfo::AddToNewMDB()
|
||||
@ -218,36 +226,43 @@ nsresult nsDBFolderInfo::LoadMemberVariables()
|
||||
return ret;
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetHighWater(nsMsgKey highWater, PRBool force /* = FALSE */)
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetVersion(PRUint16 version)
|
||||
{
|
||||
m_version = version;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetHighWater(nsMsgKey highWater, PRBool force /* = FALSE */)
|
||||
{
|
||||
if (force || m_highWaterMessageKey < highWater)
|
||||
{
|
||||
m_highWaterMessageKey = highWater;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetFolderSize(PRUint32 size)
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetFolderSize(PRUint32 size)
|
||||
{
|
||||
m_folderSize = size;
|
||||
SetUint32PropertyWithToken(m_folderSizeColumnToken, m_folderSize);
|
||||
return SetUint32PropertyWithToken(m_folderSizeColumnToken, m_folderSize);
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetFolderDate(time_t folderDate)
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetFolderDate(time_t folderDate)
|
||||
{
|
||||
m_folderDate = folderDate;
|
||||
SetUint32PropertyWithToken(m_folderDateColumnToken, m_folderSize);
|
||||
return SetUint32PropertyWithToken(m_folderDateColumnToken, m_folderSize);
|
||||
}
|
||||
|
||||
|
||||
nsMsgKey nsDBFolderInfo::GetHighWater()
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetHighWater(nsMsgKey *result)
|
||||
{
|
||||
return m_highWaterMessageKey;
|
||||
*result = m_highWaterMessageKey;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetExpiredMark(nsMsgKey expiredKey)
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetExpiredMark(nsMsgKey expiredKey)
|
||||
{
|
||||
m_expiredMark = expiredKey;
|
||||
SetUint32PropertyWithToken(m_expiredMarkColumnToken, expiredKey);
|
||||
return SetUint32PropertyWithToken(m_expiredMarkColumnToken, expiredKey);
|
||||
}
|
||||
|
||||
int nsDBFolderInfo::GetDiskVersion()
|
||||
@ -301,7 +316,7 @@ void nsDBFolderInfo::GetSortInfo(nsMsgSortType *type, nsMsgSortOrder *orde)
|
||||
{
|
||||
}
|
||||
|
||||
PRInt32 nsDBFolderInfo::ChangeNumNewMessages(PRInt32 delta)
|
||||
NS_IMETHODIMP nsDBFolderInfo::ChangeNumNewMessages(PRInt32 delta)
|
||||
{
|
||||
m_numNewMessages += delta;
|
||||
if (m_numNewMessages < 0)
|
||||
@ -311,11 +326,10 @@ PRInt32 nsDBFolderInfo::ChangeNumNewMessages(PRInt32 delta)
|
||||
#endif
|
||||
m_numNewMessages = 0;
|
||||
}
|
||||
SetUint32PropertyWithToken(m_numNewMessagesColumnToken, m_numNewMessages);
|
||||
return m_numNewMessages;
|
||||
return SetUint32PropertyWithToken(m_numNewMessagesColumnToken, m_numNewMessages);
|
||||
}
|
||||
|
||||
PRInt32 nsDBFolderInfo::ChangeNumMessages(PRInt32 delta)
|
||||
NS_IMETHODIMP nsDBFolderInfo::ChangeNumMessages(PRInt32 delta)
|
||||
{
|
||||
m_numMessages += delta;
|
||||
if (m_numMessages < 0)
|
||||
@ -325,11 +339,10 @@ PRInt32 nsDBFolderInfo::ChangeNumMessages(PRInt32 delta)
|
||||
#endif
|
||||
m_numMessages = 0;
|
||||
}
|
||||
SetUint32PropertyWithToken(m_numMessagesColumnToken, m_numMessages);
|
||||
return m_numMessages;
|
||||
return SetUint32PropertyWithToken(m_numMessagesColumnToken, m_numMessages);
|
||||
}
|
||||
|
||||
PRInt32 nsDBFolderInfo::ChangeNumVisibleMessages(PRInt32 delta)
|
||||
NS_IMETHODIMP nsDBFolderInfo::ChangeNumVisibleMessages(PRInt32 delta)
|
||||
{
|
||||
m_numVisibleMessages += delta;
|
||||
if (m_numVisibleMessages < 0)
|
||||
@ -339,49 +352,81 @@ PRInt32 nsDBFolderInfo::ChangeNumVisibleMessages(PRInt32 delta)
|
||||
#endif
|
||||
m_numVisibleMessages = 0;
|
||||
}
|
||||
SetUint32PropertyWithToken(m_numVisibleMessagesColumnToken, m_numVisibleMessages);
|
||||
return m_numVisibleMessages;
|
||||
return SetUint32PropertyWithToken(m_numVisibleMessagesColumnToken, m_numVisibleMessages);
|
||||
}
|
||||
|
||||
PRInt32 nsDBFolderInfo::GetNumNewMessages()
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetNumNewMessages(PRInt32 *result)
|
||||
{
|
||||
return m_numNewMessages;
|
||||
*result = m_numNewMessages;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
PRInt32 nsDBFolderInfo::GetNumMessages()
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetNumMessages(PRInt32 *result)
|
||||
{
|
||||
return m_numMessages;
|
||||
}
|
||||
|
||||
PRInt32 nsDBFolderInfo::GetNumVisibleMessages()
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetNumVisibleMessages(PRInt32 *result)
|
||||
{
|
||||
return m_numVisibleMessages;
|
||||
}
|
||||
|
||||
PRInt32 nsDBFolderInfo::GetFlags()
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetFlags(PRInt32 *result)
|
||||
{
|
||||
return m_flags;
|
||||
*result = m_flags;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetFlags(PRInt32 flags)
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetFlags(PRInt32 flags)
|
||||
{
|
||||
nsresult ret = NS_OK;
|
||||
|
||||
if (m_flags != flags)
|
||||
{
|
||||
m_flags = flags;
|
||||
SetInt32PropertyWithToken(m_flagsColumnToken, m_flags);
|
||||
ret = SetInt32PropertyWithToken(m_flagsColumnToken, m_flags);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::OrFlags(PRInt32 flags)
|
||||
NS_IMETHODIMP nsDBFolderInfo::OrFlags(PRInt32 flags, PRInt32 *result)
|
||||
{
|
||||
m_flags |= flags;
|
||||
SetInt32PropertyWithToken(m_flagsColumnToken, m_flags);
|
||||
*result = m_flags;
|
||||
return SetInt32PropertyWithToken(m_flagsColumnToken, m_flags);
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::AndFlags(PRInt32 flags)
|
||||
NS_IMETHODIMP nsDBFolderInfo::AndFlags(PRInt32 flags, PRInt32 *result)
|
||||
{
|
||||
m_flags &= flags;
|
||||
SetInt32PropertyWithToken(m_flagsColumnToken, m_flags);
|
||||
*result = m_flags;
|
||||
return SetInt32PropertyWithToken(m_flagsColumnToken, m_flags);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetImapUidValidity(PRInt32 *result)
|
||||
{
|
||||
*result = m_ImapUidValidity;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetImapUidValidity(PRInt32 uidValidity)
|
||||
{
|
||||
m_ImapUidValidity = uidValidity;
|
||||
return SetUint32PropertyWithToken(m_imapUidValidityColumnToken, m_ImapUidValidity);
|
||||
}
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetLastMessageLoaded(nsMsgKey *lastLoaded)
|
||||
{
|
||||
*lastLoaded = m_lastMessageLoaded;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetLastMessageLoaded(nsMsgKey lastLoaded)
|
||||
{
|
||||
m_lastMessageLoaded = lastLoaded;
|
||||
return SetUint32PropertyWithToken(m_lastMessageLoadedColumnToken, m_lastMessageLoaded);
|
||||
}
|
||||
|
||||
PRBool nsDBFolderInfo::TestFlag(PRInt32 flags)
|
||||
@ -432,28 +477,6 @@ void nsDBFolderInfo::ChangeImapUnreadPendingMessages(PRInt32 delta)
|
||||
}
|
||||
|
||||
|
||||
PRInt32 nsDBFolderInfo::GetImapUidValidity()
|
||||
{
|
||||
return m_ImapUidValidity;
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetImapUidValidity(PRInt32 uidValidity)
|
||||
{
|
||||
m_ImapUidValidity = uidValidity;
|
||||
SetUint32PropertyWithToken(m_imapUidValidityColumnToken, m_ImapUidValidity);
|
||||
}
|
||||
|
||||
nsMsgKey nsDBFolderInfo::GetLastMessageLoaded()
|
||||
{
|
||||
return m_lastMessageLoaded;
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetLastMessageLoaded(nsMsgKey lastLoaded)
|
||||
{
|
||||
m_lastMessageLoaded = lastLoaded;
|
||||
SetUint32PropertyWithToken(m_lastMessageLoadedColumnToken, m_lastMessageLoaded);
|
||||
}
|
||||
|
||||
void nsDBFolderInfo::SetKnownArtsSet(nsString &newsArtSet)
|
||||
{
|
||||
SetProperty(kKnownArtsSetColumnName, newsArtSet);
|
||||
@ -466,7 +489,7 @@ void nsDBFolderInfo::GetKnownArtsSet(nsString &newsArtSet)
|
||||
|
||||
// get arbitrary property, aka row cell value.
|
||||
|
||||
nsresult nsDBFolderInfo::GetProperty(const char *propertyName, nsString &resultProperty)
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetProperty(const char *propertyName, nsString &resultProperty)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
mdb_token property_token;
|
||||
@ -478,14 +501,14 @@ nsresult nsDBFolderInfo::GetProperty(const char *propertyName, nsString &resultP
|
||||
return err;
|
||||
}
|
||||
|
||||
nsresult nsDBFolderInfo::SetUint32Property(const char *propertyName, PRUint32 propertyValue)
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetUint32Property(const char *propertyName, PRUint32 propertyValue)
|
||||
{
|
||||
nsString propertyStr;
|
||||
propertyStr.Append(propertyValue, 10);
|
||||
return SetProperty(propertyName, propertyStr);
|
||||
}
|
||||
|
||||
nsresult nsDBFolderInfo::SetProperty(const char *propertyName, nsString &propertyStr)
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetProperty(const char *propertyName, nsString &propertyStr)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
mdb_token property_token;
|
||||
@ -536,7 +559,7 @@ nsresult nsDBFolderInfo::GetInt32PropertyWithToken(mdb_token aProperty, PRInt32
|
||||
return m_mdb->RowCellColumnToUInt32(m_mdbRow, aProperty, (PRUint32 &) propertyValue);
|
||||
}
|
||||
|
||||
nsresult nsDBFolderInfo::GetUint32Property(const char *propertyName, PRUint32 &propertyValue)
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetUint32Property(const char *propertyName, PRUint32 &propertyValue)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
mdb_token property_token;
|
||||
|
@ -92,8 +92,12 @@ nsMailDatabase::~nsMailDatabase()
|
||||
// can pull out the transfer info for the new db.
|
||||
if (!newFile && !statResult && !upgrading)
|
||||
{
|
||||
PRInt32 numNewMessages;
|
||||
|
||||
folderInfo->GetNumNewMessages(&numNewMessages);
|
||||
|
||||
if (folderInfo->m_folderSize != st.st_size ||
|
||||
folderInfo->m_folderDate != st.st_mtime || folderInfo->GetNumNewMessages() < 0)
|
||||
folderInfo->m_folderDate != st.st_mtime || numNewMessages < 0)
|
||||
err = NS_MSG_ERROR_FOLDER_SUMMARY_OUT_OF_DATE;
|
||||
}
|
||||
// compare current version of db versus filed out version info.
|
||||
|
@ -956,7 +956,11 @@ nsresult nsMsgDatabase::MarkAllRead(nsMsgKeyArray *thoseMarked)
|
||||
if (numChanged > 0) // commit every once in a while
|
||||
Commit(kSmallCommit);
|
||||
// force num new to 0.
|
||||
m_dbFolderInfo->ChangeNumNewMessages(-m_dbFolderInfo->GetNumNewMessages());
|
||||
PRInt32 numNewMessages;
|
||||
|
||||
dbErr = m_dbFolderInfo->GetNumNewMessages(&numNewMessages);
|
||||
if (dbErr == NS_OK)
|
||||
m_dbFolderInfo->ChangeNumNewMessages(-numNewMessages);
|
||||
return dbErr;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user