From 3d5813899bee42abdb93e8107a1cbee7bce0952b Mon Sep 17 00:00:00 2001 From: Thomas McGuire Date: Sat, 12 Jan 2008 13:42:11 +0000 Subject: [PATCH] Compute the size of the folders > 2GB correctly. Patch by Jean-Christophe Dubois , thanks! This is a backport of rev. 751307 from trunk! svn path=/branches/kdepim/enterprise/kdepim/; revision=760353 --- folderstorage.cpp | 4 ++-- folderstorage.h | 6 +++--- foldertreebase.cpp | 2 +- kmfoldermaildir.cpp | 2 +- kmfoldermaildir.h | 2 +- kmfoldermbox.cpp | 4 ++-- kmfoldermbox.h | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/folderstorage.cpp b/folderstorage.cpp index ad87cd7b2..499282ec7 100644 --- a/folderstorage.cpp +++ b/folderstorage.cpp @@ -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; diff --git a/folderstorage.h b/folderstorage.h index 480d37ea2..35b3265fc 100644 --- a/folderstorage.h +++ b/folderstorage.h @@ -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; diff --git a/foldertreebase.cpp b/foldertreebase.cpp index 87242bbb8..6fc6c27d2 100644 --- a/foldertreebase.cpp +++ b/foldertreebase.cpp @@ -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; diff --git a/kmfoldermaildir.cpp b/kmfoldermaildir.cpp index 131e32f08..08ca19aeb 100644 --- a/kmfoldermaildir.cpp +++ b/kmfoldermaildir.cpp @@ -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; diff --git a/kmfoldermaildir.h b/kmfoldermaildir.h index d3ac3df4c..3eef71be5 100644 --- a/kmfoldermaildir.h +++ b/kmfoldermaildir.h @@ -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, diff --git a/kmfoldermbox.cpp b/kmfoldermbox.cpp index 1bd11fc06..5cdd6bc69 100644 --- a/kmfoldermbox.cpp +++ b/kmfoldermbox.cpp @@ -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()); } //----------------------------------------------------------------------------- diff --git a/kmfoldermbox.h b/kmfoldermbox.h index f1ffb3082..bcbe5980c 100644 --- a/kmfoldermbox.h +++ b/kmfoldermbox.h @@ -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,