From 16fc23f00d5bd8536acef56e21d01057bcf88709 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 30 Nov 2017 14:57:13 +0100 Subject: Implemented scan dir Filled the scan dir option with life. Now it actually does something, and much quicker than beet ls! --- indexerwidget.cpp | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) (limited to 'indexerwidget.cpp') diff --git a/indexerwidget.cpp b/indexerwidget.cpp index a3b0cd8..ae1bd68 100644 --- a/indexerwidget.cpp +++ b/indexerwidget.cpp @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include "taglib/tag.h" #include "taglib/audioproperties.h" @@ -99,20 +101,39 @@ BeetReader::BeetReader() : mCanceled(false){ void BeetReader::run(){ clearAll(); - QProcess lister; - lister.start("beet", QStringList() << "ls" << "-p"); - qApp->setOverrideCursor(QCursor(Qt::WaitCursor)); - emit errorMsg(tr("Waiting for beet ls -p")); - lister.waitForStarted(); - lister.waitForFinished(); - qApp->restoreOverrideCursor(); - emit errorMsg(tr("Done Waiting - Starting some serious work!")); - QByteArray lOut = lister.readAllStandardOutput(); - QList files = lOut.split('\n'); + QSettings s; + bool useBeet = s.value("usebeet", true).toBool(); + QStringList files; + if(useBeet){ + QProcess lister; + lister.start("beet", QStringList() << "ls" << "-p"); + qApp->setOverrideCursor(QCursor(Qt::WaitCursor)); + emit errorMsg(tr("Waiting for beet ls -p")); + lister.waitForStarted(); + lister.waitForFinished(); + qApp->restoreOverrideCursor(); + emit errorMsg(tr("Done Waiting - Starting some serious work!")); + QByteArray lOut = lister.readAllStandardOutput(); + QList filesBA = lOut.split('\n'); + foreach(QByteArray ba, filesBA){ + files << QString(ba); + } + }else{ + QString dir = s.value("scandir").toString(); + QDirIterator dIt(dir, QDirIterator::Subdirectories); + while(dIt.hasNext()){ + QString f = dIt.next(); + if(QFileInfo(f).isFile()){ + files << f; + } + } + emit errorMsg(tr("Gathered %1 files in %2").arg(QString::number(files.count())).arg(dir)); + } int total = files.size(); emit totalCount(total); int ctr = 1; - foreach(QByteArray s, files){ + emit errorMsg(tr("Indexing...")); + foreach(QString s, files){ //fetch data from file TagLib::FileRef file(QString(s).toUtf8()); if(file.isNull()){ @@ -154,7 +175,7 @@ void BeetReader::run(){ ++ctr; } emit progress(total); - emit errorMsg(tr("Serious work done!")); + emit errorMsg(tr("Indexing done!")); } void BeetReader::cancel(){ -- cgit v1.2.3-70-g09d2