aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/library/library.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-03-21 16:37:31 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-03-21 16:37:31 +0000
commite3c29708824bd56ca1ec7ac86b5e3fddc42c3492 (patch)
tree059defed258d53419193630ce5e03a1ef89107bc /src/plugins/General/library/library.cpp
parentd6d546addf41c2aefaa57b33a9fbf6d13f132421 (diff)
downloadqmmp-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.cpp32
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)