[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.2/kdepim/kmail
From: Ingo Klöcker <kloecker () kde ! org>
Date: 2009-04-04 20:11:32
Message-ID: 1238875892.097223.13905.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 949286 by kloecker:
Backport revision 949275 to 4.2 branch
Calculate and show the correct folder size of IMAP folders.
CCBUG:154454
M +11 -12 folderstorage.cpp
M +1 -1 folderstorage.h
M +15 -0 kmfolderimap.cpp
M +3 -0 kmfolderimap.h
M +2 -2 kmfoldermaildir.cpp
M +1 -1 kmfoldermbox.cpp
--- branches/KDE/4.2/kdepim/kmail/folderstorage.cpp #949285:949286
@@ -76,7 +76,7 @@
mUnreadMsgs = -1;
mGuessedUnreadMsgs = -1;
mTotalMsgs = -1;
- mSize = -1;
+ mCachedSize = -1;
needsCompact = false;
mConvertToUtf8 = false;
mCompactable = true;
@@ -415,7 +415,7 @@
}
--mTotalMsgs;
- mSize = -1;
+ mCachedSize = -1;
QString msgIdMD5 = mb->msgIdMD5();
emit msgRemoved( idx, msgIdMD5 );
emit msgRemoved( folder() );
@@ -453,7 +453,7 @@
--mTotalMsgs;
msg->setParent(0);
setDirty( true );
- mSize = -1;
+ mCachedSize = -1;
needsCompact=true; // message is taken from here - needs to be compacted
QString msgIdMD5 = msg->msgIdMD5();
emit msgRemoved( idx, msgIdMD5 );
@@ -828,7 +828,7 @@
mUnreadMsgs = 0;
mTotalMsgs = 0;
- mSize = 0;
+ mCachedSize = 0;
emit numUnreadMsgsChanged( folder() );
if ( mAutoCreateIndex ) { // FIXME Heh? - Till
writeConfig();
@@ -877,11 +877,10 @@
qint64 FolderStorage::folderSize() const
{
- if ( mSize != -1 ) {
- return mSize;
- } else {
- return doFolderSize();
- }
+ if ( mCachedSize == -1 ) {
+ mCachedSize = doFolderSize();
+ }
+ return mCachedSize;
}
@@ -954,8 +953,8 @@
if (mTotalMsgs == -1)
mTotalMsgs = group.readEntry("TotalMsgs", -1 );
mCompactable = group.readEntry("Compactable", true );
- if ( mSize == -1 )
- mSize = group.readEntry( "FolderSize", Q_INT64_C(-1) );
+ if ( mCachedSize == -1 )
+ mCachedSize = group.readEntry( "FolderSize", Q_INT64_C(-1) );
int type = group.readEntry( "ContentsType", 0 );
if ( type < 0 || type > KMail::ContentsTypeLast ) type = 0;
@@ -974,7 +973,7 @@
group.writeEntry( "TotalMsgs", mTotalMsgs );
group.writeEntry( "Compactable", mCompactable );
group.writeEntry( "ContentsType", (int)mContentsType );
- group.writeEntry( "FolderSize", mSize );
+ group.writeEntry( "FolderSize", mCachedSize );
// Write the KMFolder parts
if( folder() ) folder()->writeConfig( group );
--- branches/KDE/4.2/kdepim/kmail/folderstorage.h #949285:949286
@@ -638,7 +638,7 @@
/** number of unread messages, -1 if not yet set */
int mUnreadMsgs, mGuessedUnreadMsgs;
int mTotalMsgs;
- qint64 mSize;
+ mutable qint64 mCachedSize;
bool mWriteConfigEnabled :1;
/** sven: true if on destruct folder needs to be compacted. */
bool needsCompact :1;
--- branches/KDE/4.2/kdepim/kmail/kmfolderimap.cpp #949285:949286
@@ -2304,6 +2304,21 @@
}
//-----------------------------------------------------------------------------
+qint64 KMFolderImap::doFolderSize() const
+{
+ if ( count() == -1 )
+ {
+ return -1;
+ }
+
+ qint64 folderSize = 0;
+ for ( int i = 0, end = count(); i < end; ++i ) {
+ folderSize += getMsgBase( i )->msgSizeServer();
+ }
+ return folderSize;
+}
+
+//-----------------------------------------------------------------------------
void
KMFolderImap::setUserRights( unsigned int userRights )
{
--- branches/KDE/4.2/kdepim/kmail/kmfolderimap.h #949285:949286
@@ -421,6 +421,9 @@
the various index files deleted. Returns 0 on success. */
virtual int expungeContents();
+ /** reimp */
+ virtual qint64 doFolderSize() const;
+
void setChildrenState( const QString &attributes );
/** Create or find the INBOX and initialize it */
--- branches/KDE/4.2/kdepim/kmail/kmfoldermaildir.cpp #949285:949286
@@ -434,7 +434,7 @@
}
}
++mTotalMsgs;
- mSize = -1;
+ mCachedSize = -1;
if ( aMsg->attachmentState() == KMMsgAttachmentUnknown &&
aMsg->readyToShow() )
@@ -1076,7 +1076,7 @@
KIO::DirectorySizeJob * dirsize = dynamic_cast<KIO::DirectorySizeJob*>( job );
if ( dirsize && !dirsize->error() )
{
- mSize = dirsize->totalSize();
+ mCachedSize = dirsize->totalSize();
//kDebug(5006) << << "DirectorySizeJob completed. Folder"
// << location() << "has size" << mSize;
emit folderSizeChanged();
--- branches/KDE/4.2/kdepim/kmail/kmfoldermbox.cpp #949285:949286
@@ -1135,7 +1135,7 @@
}
}
++mTotalMsgs;
- mSize = -1;
+ mCachedSize = -1;
if ( aMsg->attachmentState() == KMMsgAttachmentUnknown &&
aMsg->readyToShow() )
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic