diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-03-21 16:37:31 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-03-21 16:37:31 +0000 |
| commit | e3c29708824bd56ca1ec7ac86b5e3fddc42c3492 (patch) | |
| tree | 059defed258d53419193630ce5e03a1ef89107bc /src/plugins/General/library/library.cpp | |
| parent | d6d546addf41c2aefaa57b33a9fbf6d13f132421 (diff) | |
| download | qmmp-e3c29708824bd56ca1ec7ac86b5e3fddc42c3492.tar.gz qmmp-e3c29708824bd56ca1ec7ac86b5e3fddc42c3492.tar.bz2 qmmp-e3c29708824bd56ca1ec7ac86b5e3fddc42c3492.zip | |
library: using QThread
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9771 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/library/library.cpp')
| -rw-r--r-- | src/plugins/General/library/library.cpp | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/plugins/General/library/library.cpp b/src/plugins/General/library/library.cpp index 9c9582e9f..a833e4b32 100644 --- a/src/plugins/General/library/library.cpp +++ b/src/plugins/General/library/library.cpp @@ -30,7 +30,6 @@ #include <QJsonDocument> #include <QJsonObject> #include <QHash> -#include <QtConcurrent> #include <QtDebug> #include <algorithm> #include <qmmp/qmmp.h> @@ -43,7 +42,7 @@ #define CONNECTION_NAME "qmmp_library" Library::Library(QPointer<LibraryWidget> *libraryWidget, QObject *parent) : - QObject(parent), + QThread(parent), m_libraryWidget(libraryWidget) { { @@ -73,7 +72,7 @@ Library::Library(QPointer<LibraryWidget> *libraryWidget, QObject *parent) : UiHelper::instance()->addAction(refreshAction, UiHelper::TOOLS_MENU); connect(refreshAction, SIGNAL(triggered()), SLOT(startDirectoryScanning())); - connect(&m_watcher, &QFutureWatcher<bool>::finished, [=] { + connect(this, &QThread::finished, [=] { if(!m_libraryWidget->isNull()) { m_libraryWidget->data()->setBusyMode(false); @@ -98,10 +97,10 @@ Library::Library(QPointer<LibraryWidget> *libraryWidget, QObject *parent) : Library::~Library() { - if(m_future.isRunning()) + if(isRunning()) { m_stopped = true; - m_future.waitForFinished(); + wait(); } if(QSqlDatabase::contains(CONNECTION_NAME)) @@ -111,11 +110,6 @@ Library::~Library() } } -bool Library::isRunning() const -{ - return m_future.isRunning(); -} - QAction *Library::showAction() const { return m_showAction; @@ -129,22 +123,26 @@ void Library::showLibraryWindow() if(m_libraryWidget->data()->isWindow()) m_libraryWidget->data()->show(); - if(m_future.isRunning()) + if(isRunning()) m_libraryWidget->data()->setBusyMode(true); } void Library::startDirectoryScanning() { - if(m_future.isRunning()) + if(isRunning()) return; m_filters = MetaDataManager::instance()->nameFilters(); - m_future = QtConcurrent::run(this, &Library::scanDirectories, m_dirs); - m_watcher.setFuture(m_future); + start(QThread::IdlePriority); if(!m_libraryWidget->isNull()) m_libraryWidget->data()->setBusyMode(true); } +void Library::run() +{ + scanDirectories(m_dirs); +} + bool Library::createTables() { QSqlDatabase db = QSqlDatabase::database(CONNECTION_NAME); @@ -248,6 +246,7 @@ bool Library::scanDirectories(const QStringList &paths) { m_stopped = false; + while(!m_stopped) { QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", CONNECTION_NAME); db.setDatabaseName(Qmmp::configDir() + "/" + "library.sqlite"); @@ -263,8 +262,7 @@ bool Library::scanDirectories(const QStringList &paths) if(m_stopped) { db.close(); - QSqlDatabase::removeDatabase(CONNECTION_NAME); - return false; + break; } } @@ -274,7 +272,7 @@ bool Library::scanDirectories(const QStringList &paths) QSqlDatabase::removeDatabase(CONNECTION_NAME); qDebug("Library: directory scan finished"); - return true; + return !m_stopped; } void Library::addDirectory(const QString &s) |
