From: Francois Cartegnie Date: Sat, 22 Jun 2013 13:20:52 +0000 (+0200) Subject: Qt: ExtensionsModel: use data abstraction in delegate X-Git-Tag: 2.1.0-git~37 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=8d19eace8daccfce7d79d8f3a0cf9275fc1d88e3;p=vlc Qt: ExtensionsModel: use data abstraction in delegate --- diff --git a/modules/gui/qt4/dialogs/plugins.cpp b/modules/gui/qt4/dialogs/plugins.cpp index 20a6763b46..701341f0ac 100644 --- a/modules/gui/qt4/dialogs/plugins.cpp +++ b/modules/gui/qt4/dialogs/plugins.cpp @@ -387,6 +387,12 @@ QVariant ExtensionListModel::data( const QModelIndex& index, int role ) const switch( role ) { + case Qt::DisplayRole: + return ((ExtensionCopy *)index.internalPointer())->title; + case Qt::DecorationRole: + return *((ExtensionCopy *)index.internalPointer())->icon; + case DescriptionRole: + return ((ExtensionCopy *)index.internalPointer())->shortdesc; default: return QVariant(); } @@ -419,9 +425,6 @@ void ExtensionItemDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const { - ExtensionCopy *ext = ( ExtensionCopy* ) index.internalPointer(); - assert( ext != NULL ); - int width = option.rect.width(); // Pixmap: buffer where to draw @@ -453,10 +456,11 @@ void ExtensionItemDelegate::paint( QPainter *painter, QFontMetrics metrics = option.fontMetrics; // Icon - if( ext->icon != NULL ) + QPixmap icon = index.data( Qt::DecorationRole ).value(); + if( !icon.isNull() ) { pixpaint->drawPixmap( 7, 7, 2*metrics.height(), 2*metrics.height(), - *ext->icon ); + icon ); } // Title: bold @@ -466,7 +470,7 @@ void ExtensionItemDelegate::paint( QPainter *painter, pixpaint->drawText( QRect( 17 + 2 * metrics.height(), 7, width - 40 - 2 * metrics.height(), metrics.height() ), - Qt::AlignLeft, ext->title ); + Qt::AlignLeft, index.data( Qt::DisplayRole ).toString() ); // Short description: normal font.setBold( false ); @@ -474,7 +478,7 @@ void ExtensionItemDelegate::paint( QPainter *painter, pixpaint->drawText( QRect( 17 + 2 * metrics.height(), 7 + metrics.height(), width - 40, metrics.height() ), - Qt::AlignLeft, ext->shortdesc ); + Qt::AlignLeft, index.data( ExtensionListModel::DescriptionRole ).toString() ); // Flush paint operations delete pixpaint; diff --git a/modules/gui/qt4/dialogs/plugins.hpp b/modules/gui/qt4/dialogs/plugins.hpp index 1bba5e1170..d1737b1d75 100644 --- a/modules/gui/qt4/dialogs/plugins.hpp +++ b/modules/gui/qt4/dialogs/plugins.hpp @@ -135,6 +135,7 @@ public: ExtensionListModel( QListView *view, intf_thread_t *p_intf ); virtual ~ExtensionListModel(); + static const Qt::ItemDataRole DescriptionRole = Qt::UserRole; virtual QVariant data( const QModelIndex& index, int role ) const; virtual QModelIndex index( int row, int column = 0, const QModelIndex& = QModelIndex() ) const;