[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [digikam] core/libs: factoring IOJobsManager
From: Maik Qualmann <null () kde ! org>
Date: 2018-03-31 19:19:57
Message-ID: E1f2M2f-0002cb-Pv () code ! kde ! org
[Download RAW message or body]
Git commit e4c6c970f3f4ff725f95ccafc1ee9159d2914dc6 by Maik Qualmann.
Committed on 31/03/2018 at 19:19.
Pushed by mqualmann into branch 'master'.
factoring IOJobsManager
M +24 -75 core/libs/database/utils/dio.cpp
M +1 -1 core/libs/database/utils/dio.h
M +24 -43 core/libs/iojobs/iojobsmanager.cpp
M +2 -23 core/libs/iojobs/iojobsmanager.h
https://commits.kde.org/digikam/e4c6c970f3f4ff725f95ccafc1ee9159d2914dc6
diff --git a/core/libs/database/utils/dio.cpp b/core/libs/database/utils/dio.cpp
index 1afbf5f66d..83cad856f8 100644
--- a/core/libs/database/utils/dio.cpp
+++ b/core/libs/database/utils/dio.cpp
@@ -334,86 +334,41 @@ void DIO::createJob(IOJobData* const data)
IOJobsThread* jobThread = 0;
const int operation = data->operation();
- if (operation == IOJobData::CopyAlbum ||
- operation == IOJobData::CopyImage ||
- operation == IOJobData::CopyFiles)
+ item = getProgressItem(operation);
+
+ if (!item || item->totalCompleted())
{
- item = getProgressItem(operation);
+ QPair<QString, QString> itemStrings = getItemStrings(operation);
- if (!item || item->totalCompleted())
+ if (!itemStrings.first.isEmpty())
{
- item = ProgressManager::instance()->createProgressItem(getItemString(operation),
- i18n("Copy"), \
QString(), true, false); + item = \
ProgressManager::instance()->createProgressItem(itemStrings.first, + \
itemStrings.second, + \
QString(), true, false); }
-
- item->setTotalItems(item->totalItems() + data->sourceUrls().count());
- jobThread = IOJobsManager::instance()->startCopy(data);
}
- else if (operation == IOJobData::MoveAlbum ||
- operation == IOJobData::MoveImage ||
- operation == IOJobData::MoveFiles)
- {
- item = getProgressItem(operation);
- if (!item || item->totalCompleted())
- {
- item = ProgressManager::instance()->createProgressItem(getItemString(operation),
- i18n("Move"), \
QString(), true, false);
- }
+ jobThread = IOJobsManager::instance()->startIOJob(data);
- item->setTotalItems(item->totalItems() + data->sourceUrls().count());
- jobThread = IOJobsManager::instance()->startMove(data);
- }
- else if (operation == IOJobData::Rename)
- {
- jobThread = IOJobsManager::instance()->startRenameFile(data);
+ connect(jobThread, SIGNAL(signalOneProccessed(int)),
+ this, SLOT(slotOneProccessed(int)));
+ connect(jobThread, SIGNAL(finished()),
+ this, SLOT(slotResult()));
+
+ if (operation == IOJobData::Rename)
+ {
connect(jobThread, SIGNAL(signalRenamed(QUrl)),
this, SIGNAL(signalRenameSucceeded(QUrl)));
connect(jobThread, SIGNAL(signalRenameFailed(QUrl)),
this, SIGNAL(signalRenameFailed(QUrl)));
}
- else if (operation == IOJobData::Delete || operation == IOJobData::DFiles)
- {
- item = getProgressItem(operation);
- if (!item || item->totalCompleted())
- {
- item = ProgressManager::instance()->createProgressItem(getItemString(operation),
- i18n("Delete"), \
QString(), true, false);
- }
-
- item->setTotalItems(item->totalItems() + data->sourceUrls().count());
- jobThread = IOJobsManager::instance()->startDelete(data);
- }
- else if (operation == IOJobData::Trash)
+ if (item)
{
- item = getProgressItem(operation);
-
- if (!item || item->totalCompleted())
- {
- item = ProgressManager::instance()->createProgressItem(getItemString(operation),
- i18n("Trash"), \
QString(), true, false);
- }
-
item->setTotalItems(item->totalItems() + data->sourceUrls().count());
- jobThread = IOJobsManager::instance()->startDelete(data);
- }
- else
- {
- qCDebug(DIGIKAM_DATABASE_LOG) << "Unknown IOJob operation:" << operation;
- return;
- }
-
- connect(jobThread, SIGNAL(signalOneProccessed(int)),
- this, SLOT(slotOneProccessed(int)));
-
- connect(jobThread, SIGNAL(finished()),
- this, SLOT(slotResult()));
- if (item)
- {
connect(item, SIGNAL(progressItemCanceled(ProgressItem*)),
jobThread, SLOT(slotCancel()));
@@ -478,7 +433,7 @@ void DIO::slotResult()
ProgressItem* DIO::getProgressItem(int operation) const
{
ProgressItem* item = 0;
- QString itemString = getItemString(operation);
+ QString itemString = getItemStrings(operation).first;
if (!itemString.isEmpty())
{
@@ -488,34 +443,28 @@ ProgressItem* DIO::getProgressItem(int operation) const
return item;
}
-QString DIO::getItemString(int operation) const
+QPair<QString, QString> DIO::getItemStrings(int operation) const
{
- QString itemString;
-
switch (operation)
{
case IOJobData::CopyAlbum:
case IOJobData::CopyImage:
case IOJobData::CopyFiles:
- itemString = QLatin1String("DIOCopy");
- break;
+ return qMakePair(QLatin1String("DIOCopy"), i18n("Copy"));
case IOJobData::MoveAlbum:
case IOJobData::MoveImage:
case IOJobData::MoveFiles:
- itemString = QLatin1String("DIOMove");
- break;
+ return qMakePair(QLatin1String("DIOMove"), i18n("Move"));
case IOJobData::Trash:
- itemString = QLatin1String("DIOTrash");
- break;
+ return qMakePair(QLatin1String("DIOTrash"), i18n("Trash"));
case IOJobData::Delete:
case IOJobData::DFiles:
- itemString = QLatin1String("DIODelete");
- break;
+ return qMakePair(QLatin1String("DIODelete"), i18n("Delete"));
default:
break;
}
- return itemString;
+ return qMakePair(QString(), QString());
}
void DIO::slotOneProccessed(int operation)
diff --git a/core/libs/database/utils/dio.h b/core/libs/database/utils/dio.h
index f22685603d..72faf45465 100644
--- a/core/libs/database/utils/dio.h
+++ b/core/libs/database/utils/dio.h
@@ -103,7 +103,7 @@ private:
void createJob(IOJobData* const data);
ProgressItem* getProgressItem(int operation) const;
- QString getItemString(int operation) const;
+ QPair<QString, QString> getItemStrings(int operation) const;
private Q_SLOTS:
diff --git a/core/libs/iojobs/iojobsmanager.cpp b/core/libs/iojobs/iojobsmanager.cpp
index fa1f06fbd4..c9c73c926c 100644
--- a/core/libs/iojobs/iojobsmanager.cpp
+++ b/core/libs/iojobs/iojobsmanager.cpp
@@ -51,52 +51,33 @@ IOJobsManager* IOJobsManager::instance()
return& creator->object;
}
-IOJobsThread* IOJobsManager::startCopy(IOJobData* const data)
+IOJobsThread* IOJobsManager::startIOJob(IOJobData* const data)
{
IOJobsThread* const thread = new IOJobsThread(this);
- thread->copy(data);
- connect(thread, SIGNAL(finished()),
- thread, SLOT(deleteLater()),
- Qt::QueuedConnection);
-
- thread->start();
-
- return thread;
-}
-
-IOJobsThread* IOJobsManager::startMove(IOJobData* const data)
-{
- IOJobsThread* const thread = new IOJobsThread(this);
- thread->move(data);
-
- connect(thread, SIGNAL(finished()),
- thread, SLOT(deleteLater()),
- Qt::QueuedConnection);
-
- thread->start();
-
- return thread;
-}
-
-IOJobsThread* IOJobsManager::startDelete(IOJobData* const data)
-{
- IOJobsThread* const thread = new IOJobsThread(this);
- thread->deleteFiles(data);
-
- connect(thread, SIGNAL(finished()),
- thread, SLOT(deleteLater()),
- Qt::QueuedConnection);
-
- thread->start();
-
- return thread;
-}
-
-IOJobsThread* IOJobsManager::startRenameFile(IOJobData* const data)
-{
- IOJobsThread* const thread = new IOJobsThread(this);
- thread->renameFile(data);
+ switch (data->operation())
+ {
+ case IOJobData::CopyAlbum:
+ case IOJobData::CopyImage:
+ case IOJobData::CopyFiles:
+ thread->copy(data);
+ break;
+ case IOJobData::MoveAlbum:
+ case IOJobData::MoveImage:
+ case IOJobData::MoveFiles:
+ thread->move(data);
+ break;
+ case IOJobData::Trash:
+ case IOJobData::Delete:
+ case IOJobData::DFiles:
+ thread->deleteFiles(data);
+ break;
+ case IOJobData::Rename:
+ thread->renameFile(data);
+ break;
+ default:
+ break;
+ }
connect(thread, SIGNAL(finished()),
thread, SLOT(deleteLater()),
diff --git a/core/libs/iojobs/iojobsmanager.h b/core/libs/iojobs/iojobsmanager.h
index ac4d2c2112..0d09c83b76 100644
--- a/core/libs/iojobs/iojobsmanager.h
+++ b/core/libs/iojobs/iojobsmanager.h
@@ -53,32 +53,11 @@ public:
static IOJobsManager* instance();
/**
- * @brief startCopy: Starts a thread to copy items to destination
+ * @brief startIOJob: Starts a thread to copy, move, delete or rename items
* @param data: IOJobData container with source and destination url
* @return IOJobsThread pointer for signal/slot connection
*/
- IOJobsThread* startCopy(IOJobData* const data);
-
- /**
- * @brief startMove: Starts a thread to move items to destination
- * @param data: IOJobData container with source and destination url
- * @return IOJobsThread pointer for signal/slot connection
- */
- IOJobsThread* startMove(IOJobData* const data);
-
- /**
- * @brief startDelete: Starts a thread to delete items
- * @param data: IOJobData container with source and destination url
- * @return IOJobsThread pointer for signal/slot connection
- */
- IOJobsThread* startDelete(IOJobData* const data);
-
- /**
- * @brief startRenameFile: Starts a thread to rename a single file
- * @param data: IOJobData container with source and destination url
- * @return IOJobsThread pointer for signal/slot connection
- */
- IOJobsThread* startRenameFile(IOJobData* const data);
+ IOJobsThread* startIOJob(IOJobData* const data);
/**
* @brief Starts a thread for listing items inside trash for specific collection
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic