From: Jean-Baptiste Kempf Date: Fri, 29 Oct 2010 01:21:11 +0000 (+0200) Subject: Qt, playlist: Move getMeta helper functions to PLModel X-Git-Tag: 1.2.0-pre1~4910 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=f80154beca3e3e233c0cc3288af4c4d2dbf8fa72;p=vlc Qt, playlist: Move getMeta helper functions to PLModel --- diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp index 7437491f5a..35ee685b74 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.cpp +++ b/modules/gui/qt4/components/playlist/playlist_model.cpp @@ -48,7 +48,7 @@ #include #include #include - +#include #define I_NEW_DIR \ I_DIR_OR_FOLDER( N_("Create Directory"), N_( "Create Folder" ) ) @@ -597,6 +597,59 @@ bool PLModel::canEdit() const ) ); } + +QString PLModel::getMeta( const QModelIndex & index, int meta ) +{ + return index.model()->index( index.row(), + PLModel::columnFromMeta( meta ), + index.parent() ) + .data().toString(); +} + +QPixmap PLModel::getArtPixmap( const QModelIndex & index, const QSize & size ) +{ + PLItem *item = static_cast( index.internalPointer() ); + assert( item ); + + QString artUrl = InputManager::decodeArtURL( item->inputItem() ); + + /* If empty, take one of the children art URL */ + if( artUrl.isEmpty() ) + { + for( int i = 0; i < item->childCount(); i++ ) + { + artUrl = InputManager::decodeArtURL( item->child( i )->inputItem() ); + if( !artUrl.isEmpty() ) + break; + } + } + + QPixmap artPix; + QString key = artUrl + QString("%1%2").arg(size.width()).arg(size.height()); + + /* Lookup in the QPixmapCache */ + if( !QPixmapCache::find( key, artPix )) + { + if( artUrl.isEmpty() || !artPix.load( artUrl ) ) + { + key = QString("noart%1%2").arg(size.width()).arg(size.height()); + if( !QPixmapCache::find( key, artPix ) ) + { + artPix = QPixmap( ":/noart" ).scaled( size, + Qt::KeepAspectRatio, + Qt::SmoothTransformation ); + QPixmapCache::insert( key, artPix ); + } + } + else + { + artPix = artPix.scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); + QPixmapCache::insert( key, artPix ); + } + } + + return artPix; +} /************************* Updates handling *****************************/ /**** Events processing ****/ diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp index 84d1591f97..2147f22702 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.hpp +++ b/modules/gui/qt4/components/playlist/playlist_model.hpp @@ -93,6 +93,9 @@ public: static int columnFromMeta( int meta_column ); static int columnToMeta( int column ); + static QString getMeta( const QModelIndex & index, int meta ); + static QPixmap getArtPixmap( const QModelIndex & index, const QSize & size ); + /* Actions */ bool popup( const QModelIndex & index, const QPoint &point, const QModelIndexList &list ); void doDelete( QModelIndexList selected ); diff --git a/modules/gui/qt4/components/playlist/views.cpp b/modules/gui/qt4/components/playlist/views.cpp index a53f849730..bb1715018f 100644 --- a/modules/gui/qt4/components/playlist/views.cpp +++ b/modules/gui/qt4/components/playlist/views.cpp @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -42,14 +41,6 @@ #define ART_RADIUS 5 #define SPACER 5 -QString AbstractPlViewItemDelegate::getMeta( const QModelIndex & index, int meta ) const -{ - return index.model()->index( index.row(), - PLModel::columnFromMeta( meta ), - index.parent() ) - .data().toString(); -} - void AbstractPlViewItemDelegate::paintBackground( QPainter *painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const { @@ -82,54 +73,10 @@ void AbstractPlViewItemDelegate::paintBackground( painter->restore(); } -QPixmap AbstractPlViewItemDelegate::getArtPixmap( const QModelIndex & index, const QSize & size ) const -{ - PLItem *item = static_cast( index.internalPointer() ); - assert( item ); - - QString artUrl = InputManager::decodeArtURL( item->inputItem() ); - - if( artUrl.isEmpty() ) - { - for( int i = 0; i < item->childCount(); i++ ) - { - artUrl = InputManager::decodeArtURL( item->child( i )->inputItem() ); - if( !artUrl.isEmpty() ) - break; - } - } - - QPixmap artPix; - - QString key = artUrl + QString("%1%2").arg(size.width()).arg(size.height()); - - if( !QPixmapCache::find( key, artPix )) - { - if( artUrl.isEmpty() || !artPix.load( artUrl ) ) - { - key = QString("noart%1%2").arg(size.width()).arg(size.height()); - if( !QPixmapCache::find( key, artPix ) ) - { - artPix = QPixmap( ":/noart" ).scaled( size, - Qt::KeepAspectRatio, - Qt::SmoothTransformation ); - QPixmapCache::insert( key, artPix ); - } - } - else - { - artPix = artPix.scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); - QPixmapCache::insert( key, artPix ); - } - } - - return artPix; -} - void PlIconViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const { - QString title = getMeta( index, COLUMN_TITLE ); - QString artist = getMeta( index, COLUMN_ARTIST ); + QString title = PLModel::getMeta( index, COLUMN_TITLE ); + QString artist = PLModel::getMeta( index, COLUMN_ARTIST ); QFont font( index.data( Qt::FontRole ).value() ); painter->setFont( font ); @@ -139,7 +86,7 @@ void PlIconViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewIt int art_width = averagewidth * ICON_SCALER; int art_height = averagewidth * ICON_SCALER; - QPixmap artPix = getArtPixmap( index, QSize( art_width, art_height) ); + QPixmap artPix = PLModel::getArtPixmap( index, QSize( art_width, art_height) ); paintBackground( painter, option, index ); @@ -234,13 +181,13 @@ void PlListViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewIt QModelIndex parent = index.parent(); QModelIndex i; - QString title = getMeta( index, COLUMN_TITLE ); - QString duration = getMeta( index, COLUMN_DURATION ); + QString title = PLModel::getMeta( index, COLUMN_TITLE ); + QString duration = PLModel::getMeta( index, COLUMN_DURATION ); if( !duration.isEmpty() ) title += QString(" [%1]").arg( duration ); - QString artist = getMeta( index, COLUMN_ARTIST ); - QString album = getMeta( index, COLUMN_ALBUM ); - QString trackNum = getMeta( index, COLUMN_TRACK_NUMBER ); + QString artist = PLModel::getMeta( index, COLUMN_ARTIST ); + QString album = PLModel::getMeta( index, COLUMN_ALBUM ); + QString trackNum = PLModel::getMeta( index, COLUMN_TRACK_NUMBER ); QString artistAlbum = artist; if( !album.isEmpty() ) { @@ -249,7 +196,7 @@ void PlListViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewIt if( !trackNum.isEmpty() ) artistAlbum += QString( " [#%1]" ).arg( trackNum ); } - QPixmap artPix = getArtPixmap( index, QSize( LISTVIEW_ART_SIZE, LISTVIEW_ART_SIZE ) ); + QPixmap artPix = PLModel::getArtPixmap( index, QSize( LISTVIEW_ART_SIZE, LISTVIEW_ART_SIZE ) ); //Draw selection rectangle and current playing item indication paintBackground( painter, option, index ); diff --git a/modules/gui/qt4/components/playlist/views.hpp b/modules/gui/qt4/components/playlist/views.hpp index fe0d2f2855..f648e18e11 100644 --- a/modules/gui/qt4/components/playlist/views.hpp +++ b/modules/gui/qt4/components/playlist/views.hpp @@ -35,9 +35,7 @@ class AbstractPlViewItemDelegate : public QStyledItemDelegate { public: AbstractPlViewItemDelegate( QWidget * parent = 0 ) : QStyledItemDelegate(parent) {} - QString getMeta( const QModelIndex & index, int meta ) const; void paintBackground( QPainter *, const QStyleOptionViewItem &, const QModelIndex & ) const; - QPixmap getArtPixmap( const QModelIndex & index, const QSize & size ) const; }; class PlIconViewItemDelegate : public AbstractPlViewItemDelegate