diff options
Diffstat (limited to 'indexerwidget.cpp')
-rw-r--r-- | indexerwidget.cpp | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/indexerwidget.cpp b/indexerwidget.cpp index a3b0cd8..ae1bd68 100644 --- a/indexerwidget.cpp +++ b/indexerwidget.cpp @@ -11,6 +11,8 @@ #include <QLabel> #include <QGroupBox> #include <QProgressBar> +#include <QSettings> +#include <QDirIterator> #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<QByteArray> 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<QByteArray> 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(){ |