+ painter->setFont( font );
+ fm = painter->fontMetrics();
+
+ textRect.moveTop( textRect.bottom() + 1 );
+
+ painter->drawText( textRect,
+ fm.elidedText( artist, Qt::ElideRight, textRect.width() ),
+ QTextOption( Qt::AlignCenter ) );
+
+ painter->restore();
+}
+
+QSize PlIconViewItemDelegate::sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const
+{
+ QFont f;
+ f.setPointSize( 7 );
+ f.setBold( true );
+ QFontMetrics fm( f );
+ int textHeight = fm.height();
+ QSize sz ( ART_SIZE_W + 2 * SPACER,
+ ART_SIZE_H + 3 * SPACER + 2 * textHeight + 1 );
+ return sz;
+}
+
+
+#define LISTVIEW_ART_SIZE 45
+
+void PlListViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
+{
+ QModelIndex parent = index.parent();
+ QModelIndex i;
+
+ QString title = getMeta( index, COLUMN_TITLE );
+ QString duration = 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 artistAlbum = artist
+ + ( artist.isEmpty() ? QString() : QString( ": " ) )
+ + album
+ + ( album.isEmpty() || trackNum.isEmpty() ?
+ QString() : QString( " [#%1]" ).arg( trackNum ) );
+
+ QPixmap artPix = getArtPixmap( index, QSize( LISTVIEW_ART_SIZE, LISTVIEW_ART_SIZE ) );
+
+ //Draw selection rectangle
+ QApplication::style()->drawPrimitive( QStyle::PE_PanelItemViewItem, &option, painter );
+
+ //Paint background if item is playing
+ if( index.data( PLModel::IsCurrentRole ).toBool() )
+ paintPlayingItemBg( painter, option );
+
+ QRect artRect( artPix.rect() );
+ artRect.moveCenter( QPoint( artRect.center().x() + 3,
+ option.rect.center().y() ) );
+ //Draw album art
+ painter->drawPixmap( artRect, artPix );
+
+ //Start drawing text
+ painter->save();
+
+ if( option.state & QStyle::State_Selected )
+ painter->setPen( option.palette.color( QPalette::HighlightedText ) );
+
+ QTextOption textOpt( Qt::AlignVCenter | Qt::AlignLeft );
+ textOpt.setWrapMode( QTextOption::NoWrap );
+
+ QFont f( index.data( Qt::FontRole ).value<QFont>() );