[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