diff --git a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp index 0e47cf9aa..2844a6127 100644 --- a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp +++ b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp @@ -43,11 +43,7 @@ DatabaseCommand_UpdateSearchIndex::DatabaseCommand_UpdateSearchIndex() { tLog() << Q_FUNC_INFO << "Updating index."; -#ifndef ENABLE_HEADLESS - JobStatusView* jobStatusView = JobStatusView::instance(); - if ( jobStatusView != NULL ) - jobStatusView->model()->addJob( m_statusJob.data() ); -#endif + JobStatusView::addJob( m_statusJob ); } @@ -55,10 +51,10 @@ DatabaseCommand_UpdateSearchIndex::~DatabaseCommand_UpdateSearchIndex() { tDebug() << Q_FUNC_INFO; -#ifndef ENABLE_HEADLESS if ( ! m_statusJob.isNull() ) + { m_statusJob.data()->done(); -#endif + } } diff --git a/src/libtomahawk/jobview/JobStatusView.cpp b/src/libtomahawk/jobview/JobStatusView.cpp index 3efe690ed..d4aeea281 100644 --- a/src/libtomahawk/jobview/JobStatusView.cpp +++ b/src/libtomahawk/jobview/JobStatusView.cpp @@ -42,11 +42,41 @@ using namespace Tomahawk; JobStatusView* JobStatusView::s_instance = 0; +QList< QPointer< JobStatusItem > > s_jobItems; + +void +JobStatusView::addJob( JobStatusItem* item ) +{ + if ( s_instance == 0 || s_instance->model() == 0 ) + { + s_jobItems.append( QPointer( item ) ); + } + else + { + s_instance->model()->addJob( item ); + } +} + + +void +JobStatusView::addJob( const QPointer& item ) +{ + if ( s_instance == 0 || s_instance->model() == 0 ) + { + s_jobItems.append( item ); + } + else + { + s_instance->model()->addJob( item.data() ); + } +} + JobStatusView::JobStatusView( AnimatedSplitter* parent ) : AnimatedWidget( parent ) , m_parent( parent ) , m_cachedHeight( -1 ) + , m_model( 0 ) { s_instance = this; @@ -89,6 +119,15 @@ JobStatusView::setModel( JobStatusSortModel* m ) connect( m_view->model(), SIGNAL( customDelegateJobInserted( int, JobStatusItem* ) ), this, SLOT( customDelegateJobInserted( int, JobStatusItem* ) ) ); connect( m_view->model(), SIGNAL( customDelegateJobRemoved( int ) ), this, SLOT( customDelegateJobRemoved( int ) ) ); connect( m_view->model(), SIGNAL( refreshDelegates() ), this, SLOT( refreshDelegates() ) ); + + foreach ( const QPointer item, s_jobItems ) + { + if ( !item.isNull() ) + { + m_model->addJob( item.data() ); + } + } + s_jobItems.clear(); } diff --git a/src/libtomahawk/jobview/JobStatusView.h b/src/libtomahawk/jobview/JobStatusView.h index 653b3dbf1..b12b6bc14 100644 --- a/src/libtomahawk/jobview/JobStatusView.h +++ b/src/libtomahawk/jobview/JobStatusView.h @@ -40,6 +40,9 @@ public: return s_instance; } + static void addJob( JobStatusItem* item ); + static void addJob( const QPointer& item ); + explicit JobStatusView( AnimatedSplitter* parent ); virtual ~JobStatusView() {