diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 1afa607c3..2ae749eb9 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -29,6 +29,7 @@ set( libGuiSources jobview/JobStatusItem.cpp jobview/AclJobItem.cpp jobview/PipelineStatusItem.cpp + jobview/ScannerStatusItem.cpp jobview/TransferStatusItem.cpp jobview/LatchedStatusItem.cpp jobview/ErrorStatusMessage.cpp diff --git a/src/libtomahawk/jobview/ScannerStatusItem.cpp b/src/libtomahawk/jobview/ScannerStatusItem.cpp new file mode 100644 index 000000000..50794c5a1 --- /dev/null +++ b/src/libtomahawk/jobview/ScannerStatusItem.cpp @@ -0,0 +1,92 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2014, Christian Muehlhaeuser + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#include "ScannerStatusItem.h" + +#include "utils/TomahawkUtilsGui.h" + +#include "JobStatusModel.h" +#include "JobStatusView.h" +#include "filemetadata/ScanManager.h" +#include "Source.h" +#include "Track.h" +#include "utils/Logger.h" + + +ScannerStatusItem::ScannerStatusItem() + : JobStatusItem() + , m_scannedFiles( 0 ) +{ + connect( ScanManager::instance(), SIGNAL( progress( unsigned int ) ), SLOT( onProgress( unsigned int ) ) ); + connect( ScanManager::instance(), SIGNAL( finished() ), SIGNAL( finished() ) ); +} + + +ScannerStatusItem::~ScannerStatusItem() +{ +} + + +QString +ScannerStatusItem::rightColumnText() const +{ + return QString( "%1" ).arg( m_scannedFiles ); +} + + +QString +ScannerStatusItem::mainText() const +{ + return tr( "Scanning Collection" ); +} + + +QPixmap +ScannerStatusItem::icon() const +{ + return TomahawkUtils::defaultPixmap( TomahawkUtils::Search ); +} + + +void +ScannerStatusItem::onProgress( unsigned int files ) +{ + m_scannedFiles = files; + emit statusChanged(); +} + + +ScannerStatusManager::ScannerStatusManager( QObject* parent ) + : QObject( parent ) +{ + connect( ScanManager::instance(), SIGNAL( progress( unsigned int ) ), SLOT( onProgress( unsigned int ) ) ); +} + + +void +ScannerStatusManager::onProgress( unsigned int files ) +{ + Q_UNUSED( files ); + + if ( !m_curItem ) + { + // No current query item and we're resolving something, so show it + m_curItem = QPointer< ScannerStatusItem >( new ScannerStatusItem() ); + JobStatusView::instance()->model()->addJob( m_curItem.data() ); + } +} diff --git a/src/libtomahawk/jobview/ScannerStatusItem.h b/src/libtomahawk/jobview/ScannerStatusItem.h new file mode 100644 index 000000000..28e8b678c --- /dev/null +++ b/src/libtomahawk/jobview/ScannerStatusItem.h @@ -0,0 +1,65 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2014, Christian Muehlhaeuser + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#ifndef SCANNERSTATUSITEM_H +#define SCANNERSTATUSITEM_H + +#include "jobview/JobStatusItem.h" +#include "Query.h" + +#include +#include + +class ScannerStatusItem : public JobStatusItem +{ + Q_OBJECT +public: + explicit ScannerStatusItem(); + virtual ~ScannerStatusItem(); + + virtual QString rightColumnText() const; + virtual QString mainText() const; + virtual QPixmap icon() const; + + virtual QString type() const { return "scanner"; } + + virtual bool collapseItem() const { return false; } // We can't collapse, since we use this meta-item instead of one per resolve + +private slots: + void onProgress( unsigned int files ); + +private: + unsigned int m_scannedFiles; +}; + +class ScannerStatusManager : public QObject +{ + Q_OBJECT +public: + explicit ScannerStatusManager( QObject* parent = 0 ); + virtual ~ScannerStatusManager() {} + +private slots: + void onProgress( unsigned int files ); + +private: + QPointer m_curItem; +}; + + +#endif // PIPELINESTATUSITEM_H