From b43103a3f13e494d6b8aa6c9baa00a181dd66740 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 19 Oct 2014 10:21:18 +0200 Subject: [PATCH] Added IndexStatusManager, which observes indexing progress and creates a job-item accordingly. --- src/libtomahawk/jobview/IndexingJobItem.cpp | 32 +++++++++++++++++++-- src/libtomahawk/jobview/IndexingJobItem.h | 18 +++++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/jobview/IndexingJobItem.cpp b/src/libtomahawk/jobview/IndexingJobItem.cpp index 984198e53..bf25a7ba4 100644 --- a/src/libtomahawk/jobview/IndexingJobItem.cpp +++ b/src/libtomahawk/jobview/IndexingJobItem.cpp @@ -18,7 +18,11 @@ #include "IndexingJobItem.h" +#include "JobStatusModel.h" +#include "JobStatusView.h" +#include "database/Database.h" #include "utils/TomahawkUtilsGui.h" +#include "utils/Logger.h" #include @@ -29,16 +33,40 @@ IndexingJobItem::mainText() const return tr( "Indexing Music Library" ); } + QPixmap IndexingJobItem::icon() const { return TomahawkUtils::defaultPixmap( TomahawkUtils::ViewRefresh, TomahawkUtils::Original, QSize( 128, 128 ) ); - } -void IndexingJobItem::done() +void +IndexingJobItem::done() { emit finished(); } + +IndexStatusManager::IndexStatusManager( QObject* parent ) +: QObject( parent ) +{ + connect( Tomahawk::Database::instance(), SIGNAL( indexStarted() ), SLOT( started() ) ); + connect( Tomahawk::Database::instance(), SIGNAL( indexReady() ), SLOT( finished() ) ); +} + + +void +IndexStatusManager::started() +{ + m_curItem = new IndexingJobItem; + JobStatusView::instance()->model()->addJob( m_curItem.data() ); +} + + +void +IndexStatusManager::finished() +{ + if ( m_curItem ) + m_curItem->done(); +} diff --git a/src/libtomahawk/jobview/IndexingJobItem.h b/src/libtomahawk/jobview/IndexingJobItem.h index cda9e673f..112d03f7f 100644 --- a/src/libtomahawk/jobview/IndexingJobItem.h +++ b/src/libtomahawk/jobview/IndexingJobItem.h @@ -19,8 +19,9 @@ #ifndef INDEXINGJOBITEM_H #define INDEXINGJOBITEM_H -#include +#include "JobStatusItem.h" +#include class IndexingJobItem : public JobStatusItem { @@ -37,4 +38,19 @@ public: virtual QString type() const { return "indexerjob"; } }; +class IndexStatusManager : public QObject +{ + Q_OBJECT +public: + explicit IndexStatusManager( QObject* parent = 0 ); + virtual ~IndexStatusManager() {} + +private slots: + void started(); + void finished(); + +private: + QPointer m_curItem; +}; + #endif // INDEXINGJOBITEM_H