[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