diff --git a/src/libtomahawk/jobview/JobStatusItem.cpp b/src/libtomahawk/jobview/JobStatusItem.cpp index 129e76318..c3abd2d8b 100644 --- a/src/libtomahawk/jobview/JobStatusItem.cpp +++ b/src/libtomahawk/jobview/JobStatusItem.cpp @@ -31,17 +31,37 @@ JobStatusItem::~JobStatusItem() } -bool JobStatusItem::allowMultiLine() const +bool +JobStatusItem::allowMultiLine() const { return false; } -bool JobStatusItem::collapseItem() const + +bool +JobStatusItem::collapseItem() const { return false; } -QStyledItemDelegate* JobStatusItem::customDelegate() const + +bool +JobStatusItem::hasCustomDelegate() const +{ + return false; +} + + +void +JobStatusItem::createDelegate( QObject* parent ) +{ + Q_UNUSED( parent ); + return; +} + + +QStyledItemDelegate* +JobStatusItem::customDelegate() const { return 0; } diff --git a/src/libtomahawk/jobview/JobStatusItem.h b/src/libtomahawk/jobview/JobStatusItem.h index 2f63415b7..001864c38 100644 --- a/src/libtomahawk/jobview/JobStatusItem.h +++ b/src/libtomahawk/jobview/JobStatusItem.h @@ -58,6 +58,8 @@ public: virtual bool collapseItem() const; virtual bool allowMultiLine() const; + virtual bool hasCustomDelegate() const; + virtual void createDelegate( QObject* parent ); virtual QStyledItemDelegate* customDelegate() const; signals: diff --git a/src/libtomahawk/jobview/JobStatusModel.cpp b/src/libtomahawk/jobview/JobStatusModel.cpp index 7c92a24b0..326c184fb 100644 --- a/src/libtomahawk/jobview/JobStatusModel.cpp +++ b/src/libtomahawk/jobview/JobStatusModel.cpp @@ -71,8 +71,8 @@ JobStatusModel::addJob( JobStatusItem* item ) beginInsertRows( QModelIndex(), currentEndRow, currentEndRow ); m_items.append( item ); endInsertRows(); - if ( item->customDelegate() ) - emit customDelegateJobInserted( currentEndRow, item->customDelegate() ); + if ( item->hasCustomDelegate() ) + emit customDelegateJobInserted( currentEndRow, item ); } @@ -182,7 +182,7 @@ JobStatusModel::itemFinished() endRemoveRows(); if ( item->customDelegate() ) - emit customDelegateJobRemoved( idx, item->customDelegate() ); + emit customDelegateJobRemoved( idx ); if ( item->type() == "acljob" ) m_aclJobCount--; diff --git a/src/libtomahawk/jobview/JobStatusModel.h b/src/libtomahawk/jobview/JobStatusModel.h index d3e179066..385022241 100644 --- a/src/libtomahawk/jobview/JobStatusModel.h +++ b/src/libtomahawk/jobview/JobStatusModel.h @@ -46,8 +46,8 @@ public: virtual int rowCount( const QModelIndex& parent = QModelIndex() ) const; signals: - void customDelegateJobInserted( int row, QStyledItemDelegate* delegate ); - void customDelegateJobRemoved( int row, QStyledItemDelegate* delegate ); + void customDelegateJobInserted( int row, JobStatusItem* item ); + void customDelegateJobRemoved( int row ); public slots: /// Takes ownership of job diff --git a/src/libtomahawk/jobview/JobStatusView.cpp b/src/libtomahawk/jobview/JobStatusView.cpp index bd6151b8a..822801447 100644 --- a/src/libtomahawk/jobview/JobStatusView.cpp +++ b/src/libtomahawk/jobview/JobStatusView.cpp @@ -21,6 +21,7 @@ #include "pipeline.h" #include "JobStatusModel.h" +#include "JobStatusItem.h" #include "JobStatusDelegate.h" #include "PipelineStatusItem.h" #include "TransferStatusItem.h" @@ -92,21 +93,19 @@ JobStatusView::setModel( JobStatusModel* m ) void -JobStatusView::customDelegateJobInserted( int row, QStyledItemDelegate* delegate ) +JobStatusView::customDelegateJobInserted( int row, JobStatusItem* item ) { - if ( !delegate ) + if ( !item ) return; - m_view->setItemDelegateForRow( row, delegate ); + item->createDelegate( m_view ); + m_view->setItemDelegateForRow( row, item->customDelegate() ); } void -JobStatusView::customDelegateJobRemoved( int row, QStyledItemDelegate* delegate ) +JobStatusView::customDelegateJobRemoved( int row ) { - if ( !delegate ) - return; - m_view->setItemDelegateForRow( row, m_view->itemDelegate() ); } diff --git a/src/libtomahawk/jobview/JobStatusView.h b/src/libtomahawk/jobview/JobStatusView.h index 19ccb55a7..3586dd9db 100644 --- a/src/libtomahawk/jobview/JobStatusView.h +++ b/src/libtomahawk/jobview/JobStatusView.h @@ -27,6 +27,7 @@ class QAbstractItemModel; class QListView; class JobStatusModel; +class JobStatusItem; class StreamConnection; class QStyledItemDelegate; @@ -52,8 +53,8 @@ public: private slots: void checkCount(); - void customDelegateJobInserted( int row, QStyledItemDelegate* delegate ); - void customDelegateJobRemoved( int row, QStyledItemDelegate* delegate ); + void customDelegateJobInserted( int row, JobStatusItem* item ); + void customDelegateJobRemoved( int row ); private: QListView* m_view;