Compute the size of the folders > 2GB correctly.

Patch by Jean-Christophe Dubois <jcd at tribudubois dot net>, thanks!

This is a backport of rev. 751307 from trunk!


svn path=/branches/kdepim/enterprise/kdepim/; revision=760353
wilder-work
Thomas McGuire 18 years ago
parent ed8cfa047b
commit 3d5813899b
  1. 4
      folderstorage.cpp
  2. 6
      folderstorage.h
  3. 2
      foldertreebase.cpp
  4. 2
      kmfoldermaildir.cpp
  5. 2
      kmfoldermaildir.h
  6. 4
      kmfoldermbox.cpp
  7. 2
      kmfoldermbox.h

@ -840,7 +840,7 @@ int FolderStorage::countUnread()
return (unread > 0) ? unread : 0;
}
size_t FolderStorage::folderSize() const
Q_INT64 FolderStorage::folderSize() const
{
if ( mSize != -1 ) {
return mSize;
@ -922,7 +922,7 @@ void FolderStorage::readConfig()
mTotalMsgs = config->readNumEntry("TotalMsgs", -1);
mCompactable = config->readBoolEntry("Compactable", true);
if ( mSize == -1 )
mSize = config->readNumEntry("FolderSize", -1);
mSize = config->readNum64Entry("FolderSize", -1);
int type = config->readNumEntry( "ContentsType", 0 );
if ( type < 0 || type > KMail::ContentsTypeLast ) type = 0;

@ -239,7 +239,7 @@ public:
virtual int countUnread();
/** Total size of the contents of this folder. */
size_t folderSize() const;
Q_INT64 folderSize() const;
/** Return whether the folder is close to its quota limit, which can
* be reflected in the UI. */
@ -590,7 +590,7 @@ friend class KMMsgDict;
virtual void clearIndex(bool autoDelete=true, bool syncDict = false) = 0;
virtual void truncateIndex() = 0;
virtual size_t doFolderSize() const { return 0; };
virtual Q_INT64 doFolderSize() const { return 0; };
int mOpenCount;
int mQuiet;
@ -608,7 +608,7 @@ friend class KMMsgDict;
/** number of unread messages, -1 if not yet set */
int mUnreadMsgs, mGuessedUnreadMsgs;
int mTotalMsgs;
long mSize;
Q_INT64 mSize;
bool mWriteConfigEnabled :1;
/** sven: true if on destruct folder needs to be compacted. */
bool needsCompact :1;

@ -203,7 +203,7 @@ void FolderTreeBase::slotUpdateCounts(KMFolder * folder, bool force /* = false*/
}
if ( isSizeActive() || force ) {
if ( !fti->folder()->noContent()) {
int size = folder->storage()->folderSize();
Q_INT64 size = folder->storage()->folderSize();
if ( size != fti->folderSize() ) {
fti->setFolderSize( size );
repaint = true;

@ -1097,7 +1097,7 @@ void KMFolderMaildir::msgStatusChanged(const KMMsgStatus oldStatus,
}
/*virtual*/
size_t KMFolderMaildir::doFolderSize() const
Q_INT64 KMFolderMaildir::doFolderSize() const
{
if (mCurrentlyCheckingFolderSize) return -1;
KFileItemList list;

@ -103,7 +103,7 @@ public:
virtual bool isReadOnly() const { return false; }
/** reimp */
size_t doFolderSize() const;
virtual Q_INT64 doFolderSize() const;
protected:
virtual FolderJob* doCreateJob( KMMessage *msg, FolderJob::JobType jt, KMFolder *folder,

@ -1273,10 +1273,10 @@ int KMFolderMbox::expungeContents()
//-----------------------------------------------------------------------------
/*virtual*/
size_t KMFolderMbox::doFolderSize() const
Q_INT64 KMFolderMbox::doFolderSize() const
{
QFileInfo info( location() );
return info.size();
return (Q_INT64)(info.size());
}
//-----------------------------------------------------------------------------

@ -112,7 +112,7 @@ public:
virtual IndexStatus indexStatus();
/** reimp */
size_t doFolderSize() const;
virtual Q_INT64 doFolderSize() const;
protected:
virtual FolderJob* doCreateJob( KMMessage *msg, FolderJob::JobType jt, KMFolder *folder,

Loading…
Cancel
Save