From kde-commits Sun Feb 01 22:50:28 2004 From: Carsten Burghardt Date: Sun, 01 Feb 2004 22:50:28 +0000 To: kde-commits Subject: KDE_3_2_BRANCH: kdepim/kmail Message-Id: <20040201225028.CB218991A () office ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=107567583522271 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(myChild)->origSize(); + myChild = myChild->nextSibling(); + } + if ( totalSize > static_cast(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(listView())->correctSize(this); }