From 1a3cae012e8ceeda845c36a42d56a6e5c15c6e87 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 25 Jul 2011 03:55:02 +0200 Subject: [PATCH] * Add a QPixmap-cache to the TreeView delegate. --- src/libtomahawk/playlist/treeitemdelegate.cpp | 12 +++++++++++- src/libtomahawk/playlist/treeitemdelegate.h | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/treeitemdelegate.cpp b/src/libtomahawk/playlist/treeitemdelegate.cpp index 5bd0eefcb..acbd3710a 100644 --- a/src/libtomahawk/playlist/treeitemdelegate.cpp +++ b/src/libtomahawk/playlist/treeitemdelegate.cpp @@ -133,8 +133,18 @@ TreeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, QRect r = option.rect.adjusted( 4, 4, -option.rect.width() + option.rect.height() - 4, -4 ); // painter->drawPixmap( r, QPixmap( RESPATH "images/cover-shadow.png" ) ); + QPixmap scover; QPixmap cover = item->cover.isNull() ? m_defaultCover : item->cover; - painter->drawPixmap( r, cover.scaled( r.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) ); + if ( m_cache.contains( cover.cacheKey() ) ) + { + scover = m_cache.value( cover.cacheKey() ); + } + else + { + scover = cover.scaled( r.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ); + m_cache.insert( cover.cacheKey(), scover ); + } + painter->drawPixmap( r, scover ); QTextOption to; to.setAlignment( Qt::AlignVCenter ); diff --git a/src/libtomahawk/playlist/treeitemdelegate.h b/src/libtomahawk/playlist/treeitemdelegate.h index d90d20a74..b636558ac 100644 --- a/src/libtomahawk/playlist/treeitemdelegate.h +++ b/src/libtomahawk/playlist/treeitemdelegate.h @@ -43,6 +43,8 @@ private: ArtistView* m_view; TreeProxyModel* m_model; + mutable QHash< qint64, QPixmap > m_cache; + QPixmap m_nowPlayingIcon; QPixmap m_defaultCover; };