summaryrefslogtreecommitdiffstats
path: root/indexerwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indexerwidget.cpp')
-rw-r--r--indexerwidget.cpp45
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(){