[vlc-commits] commit: Qt, playlist: Move getMeta helper functions to PLModel ( Jean-Baptiste Kempf )
git at videolan.org
git at videolan.org
Sat Oct 30 09:55:26 CEST 2010
vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Fri Oct 29 03:21:11 2010 +0200| [f80154beca3e3e233c0cc3288af4c4d2dbf8fa72] | committer: Jean-Baptiste Kempf
Qt, playlist: Move getMeta helper functions to PLModel
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f80154beca3e3e233c0cc3288af4c4d2dbf8fa72
---
.../gui/qt4/components/playlist/playlist_model.cpp | 55 +++++++++++++++-
.../gui/qt4/components/playlist/playlist_model.hpp | 3 +
modules/gui/qt4/components/playlist/views.cpp | 71 +++-----------------
modules/gui/qt4/components/playlist/views.hpp | 2 -
4 files changed, 66 insertions(+), 65 deletions(-)
diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp
index 7437491..35ee685 100644
--- a/modules/gui/qt4/components/playlist/playlist_model.cpp
+++ b/modules/gui/qt4/components/playlist/playlist_model.cpp
@@ -48,7 +48,7 @@
#include <QDesktopServices>
#include <QInputDialog>
#include <QSignalMapper>
-
+#include <QPixmapCache>
#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<PLItem*>( 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 84d1591..2147f22 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 a53f849..bb17150 100644
--- a/modules/gui/qt4/components/playlist/views.cpp
+++ b/modules/gui/qt4/components/playlist/views.cpp
@@ -31,7 +31,6 @@
#include <QRect>
#include <QStyleOptionViewItem>
#include <QFontMetrics>
-#include <QPixmapCache>
#include <QDrag>
#include <QDragMoveEvent>
@@ -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<PLItem*>( 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<QFont>() );
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 fe0d2f2..f648e18 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
More information about the vlc-commits
mailing list