]> git.sesse.net Git - vlc/commitdiff
Qt, playlist: Move getMeta helper functions to PLModel
authorJean-Baptiste Kempf <jb@videolan.org>
Fri, 29 Oct 2010 01:21:11 +0000 (03:21 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Sat, 30 Oct 2010 07:51:02 +0000 (09:51 +0200)
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/playlist_model.hpp
modules/gui/qt4/components/playlist/views.cpp
modules/gui/qt4/components/playlist/views.hpp

index 7437491f5af409635358fe6a1360548683bd633e..35ee685b74eefd6e6551d3b39fc2f18d3f0cc3ab 100644 (file)
@@ -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 ****/
index 84d1591f97beb6deac77dde7f8d355479c489ae8..2147f227022964b4d7c85eaa6f5c3347430f9996 100644 (file)
@@ -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 );
index a53f849730cdcc1f2c652b927444904ca58ccaa5..bb1715018f3ca02d85733baa8c286fd7250320cd 100644 (file)
@@ -31,7 +31,6 @@
 #include <QRect>
 #include <QStyleOptionViewItem>
 #include <QFontMetrics>
-#include <QPixmapCache>
 #include <QDrag>
 #include <QDragMoveEvent>
 
 #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 );
index fe0d2f2855d64bd51268e3b5f3d363b6e6998eac..f648e18e11f781743dd884da2e0c39609cf025d2 100644 (file)
@@ -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