[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE_3_2_BRANCH: kdepim/kmail
From:       Carsten Burghardt <cb () magic-shop ! de>
Date:       2004-02-01 22:50:28
Message-ID: 20040201225028.CB218991A () office ! kde ! org
[Download RAW message or body]

CVS commit by burghard: 

Correct the sizes shown in the mtv for imap messages. Parts sum up the size of their \
children and compare this to their own.


  M +25 -5     kmmimeparttree.cpp   1.50.6.1
  M +7 -0      kmmimeparttree.h   1.15.6.1


--- kdepim/kmail/kmmimeparttree.h  #1.15:1.15.6.1
@@ -23,4 +23,6 @@ public:
   virtual ~KMMimePartTree();
 
+  void correctSize( QListViewItem * item );
+
 protected slots:
   void itemClicked( QListViewItem* );
@@ -46,4 +48,5 @@ protected:
   KMReaderWin* mReaderWin;
   KMMimePartTreeItem* mCurrentContextMenuItem;
+  int mSizeColumn;
 };
 
@@ -66,8 +69,12 @@ public:
   partNode* node() const { return mPartNode; }
 
+  KIO::filesize_t origSize() const { return mOrigSize; }
+  void setOrigSize( KIO::filesize_t size ) { mOrigSize = size; }
+
 private:
   void setIconAndTextForType( const QString & mimetype );
 
   partNode* mPartNode;
+  KIO::filesize_t mOrigSize;
 };
 

--- kdepim/kmail/kmmimeparttree.cpp  #1.50:1.50.6.1
@@ -24,5 +24,5 @@ KMMimePartTree::KMMimePartTree( KMReader
                                 const char* name )
     : KListView(  parent, name ),
-      mReaderWin( readerWin )
+      mReaderWin( readerWin ), mSizeColumn(0)
 {
     setStyleDependantFrameWidth();
@@ -30,5 +30,5 @@ KMMimePartTree::KMMimePartTree( KMReader
     addColumn( i18n("Type") );
     addColumn( i18n("Encoding") );
-    addColumn( i18n("Size") );
+    mSizeColumn = addColumn( i18n("Size") );
     setColumnAlignment( 3, Qt::AlignRight );
 
@@ -193,4 +193,21 @@ void KMMimePartTree::styleChange( QStyle
 }
 
+//-----------------------------------------------------------------------------
+void KMMimePartTree::correctSize( QListViewItem * item )
+{
+  if (!item) return;
+
+  KIO::filesize_t totalSize = 0;
+  QListViewItem * myChild = item->firstChild();
+  while ( myChild ) 
+  {
+    totalSize += static_cast<KMMimePartTreeItem*>(myChild)->origSize();
+    myChild = myChild->nextSibling();
+  }
+  if ( totalSize > static_cast<KMMimePartTreeItem*>(item)->origSize() )
+    item->setText( mSizeColumn, KIO::convertSize(totalSize) );
+  if ( item->parent() )
+    correctSize( item->parent() );
+}
 
 //=============================================================================
@@ -205,9 +222,11 @@ KMMimePartTreeItem::KMMimePartTreeItem( 
                    encoding,
                    KIO::convertSize( size ) ),
-    mPartNode( node )
+    mPartNode( node ), mOrigSize(size)
 {
   if( node )
     node->setMimePartTreeItem( this );
   setIconAndTextForType( mimetype );
+  if ( parent ) 
+    parent->correctSize(this);
 }
 
@@ -223,5 +242,5 @@ KMMimePartTreeItem::KMMimePartTreeItem( 
                    encoding,
                    KIO::convertSize( size ) ),
-    mPartNode( node )
+    mPartNode( node ), mOrigSize(size)
 {
   if( revertOrder && nextSibling() ){
@@ -234,4 +253,6 @@ KMMimePartTreeItem::KMMimePartTreeItem( 
     node->setMimePartTreeItem( this );
   setIconAndTextForType( mimetype );
+  if ( listView() ) 
+    static_cast<KMMimePartTree*>(listView())->correctSize(this);
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic