summaryrefslogtreecommitdiffstats
path: root/src/library/dlganalysis.cpp
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2018-04-18 16:39:07 +0200
committerUwe Klotz <uklotz@mixxx.org>2018-10-30 23:26:56 +0100
commitc236956884e3c7b9a47536f98eb7eb5a126a26e4 (patch)
tree85ea9323501bb2f5176c35679e2307e50eeed49c /src/library/dlganalysis.cpp
parentdb7fe92a9a5c63e0d9b6f0fe6f1ad379f2b0b46a (diff)
Fix and enable multi-threaded analysis
Diffstat (limited to 'src/library/dlganalysis.cpp')
-rw-r--r--src/library/dlganalysis.cpp71
1 files changed, 30 insertions, 41 deletions
diff --git a/src/library/dlganalysis.cpp b/src/library/dlganalysis.cpp
index 8279c0c286..7f85e59c84 100644
--- a/src/library/dlganalysis.cpp
+++ b/src/library/dlganalysis.cpp
@@ -3,27 +3,25 @@
#include "widget/wwidget.h"
#include "widget/wskincolor.h"
#include "widget/wanalysislibrarytableview.h"
+#include "analyzer/analyzerprogress.h"
#include "library/dao/trackschema.h"
#include "library/trackcollection.h"
#include "library/dlganalysis.h"
#include "library/library.h"
#include "util/assert.h"
-DlgAnalysis::DlgAnalysis(QWidget* pParent,
+DlgAnalysis::DlgAnalysis(QWidget* parent,
UserSettingsPointer pConfig,
- Library* pLibrary,
- TrackCollection* pTrackCollection)
- : QWidget(pParent),
+ Library* pLibrary)
+ : QWidget(parent),
m_pConfig(pConfig),
- m_pTrackCollection(pTrackCollection),
- m_bAnalysisActive(false),
- m_tracksInQueue(0),
- m_currentTrack(0) {
+ m_pTrackCollection(&pLibrary->trackCollection()),
+ m_bAnalysisActive(false) {
setupUi(this);
m_songsButtonGroup.addButton(radioButtonRecentlyAdded);
m_songsButtonGroup.addButton(radioButtonAllSongs);
- m_pAnalysisLibraryTableView = new WAnalysisLibraryTableView(this, pConfig, pTrackCollection);
+ m_pAnalysisLibraryTableView = new WAnalysisLibraryTableView(this, pConfig, m_pTrackCollection);
connect(m_pAnalysisLibraryTableView, SIGNAL(loadTrack(TrackPointer)),
this, SIGNAL(loadTrack(TrackPointer)));
connect(m_pAnalysisLibraryTableView, SIGNAL(loadTrackToPlayer(TrackPointer, QString)),
@@ -40,7 +38,7 @@ DlgAnalysis::DlgAnalysis(QWidget* pParent,
box->insertWidget(1, m_pAnalysisLibraryTableView);
}
- m_pAnalysisLibraryTableModel = new AnalysisLibraryTableModel(this, pTrackCollection);
+ m_pAnalysisLibraryTableModel = new AnalysisLibraryTableModel(this, m_pTrackCollection);
m_pAnalysisLibraryTableView->loadTrackModel(m_pAnalysisLibraryTableModel);
connect(radioButtonRecentlyAdded, SIGNAL(clicked()),
@@ -52,8 +50,6 @@ DlgAnalysis::DlgAnalysis(QWidget* pParent,
// started up. Accounts for 0.2% of skin creation time. Get rid of this!
radioButtonRecentlyAdded->click();
- labelProgress->setText("");
- pushButtonAnalyze->setEnabled(false);
connect(pushButtonAnalyze, SIGNAL(clicked()),
this, SLOT(analyze()));
@@ -71,9 +67,8 @@ DlgAnalysis::DlgAnalysis(QWidget* pParent,
m_pAnalysisLibraryTableView, SLOT(setTrackTableRowHeight(int)));
connect(pLibrary, SIGNAL(setSelectedClick(bool)),
m_pAnalysisLibraryTableView, SLOT(setSelectedClick(bool)));
-}
-DlgAnalysis::~DlgAnalysis() {
+ slotAnalysisActive(m_bAnalysisActive);
}
void DlgAnalysis::onShow() {
@@ -143,13 +138,12 @@ void DlgAnalysis::analyze() {
trackIds.append(trackId);
}
}
- m_currentTrack = 1;
emit(analyzeTracks(trackIds));
}
}
-void DlgAnalysis::analysisActive(bool bActive) {
- qDebug() << this << "analysisActive" << bActive;
+void DlgAnalysis::slotAnalysisActive(bool bActive) {
+ //qDebug() << this << "slotAnalysisActive" << bActive;
m_bAnalysisActive = bActive;
if (bActive) {
pushButtonAnalyze->setEnabled(true);
@@ -162,33 +156,28 @@ void DlgAnalysis::analysisActive(bool bActive) {
}
}
-// slot
-void DlgAnalysis::trackAnalysisFinished(int size) {
- qDebug() << "Analysis finished" << size << "tracks left";
- if (size > 0) {
- m_currentTrack = m_tracksInQueue - size + 1;
- }
-}
-
-// slot
-void DlgAnalysis::trackAnalysisProgress(int progress) {
- if (m_bAnalysisActive) {
- QString text = tr("Analyzing %1/%2 %3%").arg(
- QString::number(m_currentTrack),
- QString::number(m_tracksInQueue),
- QString::number(progress));
- labelProgress->setText(text);
+void DlgAnalysis::onTrackAnalysisSchedulerProgress(
+ AnalyzerProgress analyzerProgress, int finishedCount, int totalCount) {
+ //qDebug() << this << "onTrackAnalysisSchedulerProgress" << analyzerProgress << finishedCount << totalCount;
+ if (labelProgress->isEnabled()) {
+ QString progressText;
+ if (analyzerProgress >= kAnalyzerProgressNone) {
+ QString progressPercent = QString::number(
+ analyzerProgressPercent(analyzerProgress));
+ progressText = tr("Analyzing %1% %2/%3").arg(
+ progressPercent,
+ QString::number(finishedCount),
+ QString::number(totalCount));
+ } else {
+ // Omit to display any percentage
+ progressText = tr("Analyzing %1/%2").arg(
+ QString::number(finishedCount),
+ QString::number(totalCount));
+ }
+ labelProgress->setText(progressText);
}
}
-int DlgAnalysis::getNumTracks() {
- return m_tracksInQueue;
-}
-
-void DlgAnalysis::trackAnalysisStarted(int size) {
- m_tracksInQueue = size;
-}
-
void DlgAnalysis::showRecentSongs() {
m_pAnalysisLibraryTableModel->showRecentSongs();
}