[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [digikam] utilities/queuemanager/manager: fix locked database with BQM
From: Maik Qualmann <metzpinguin () gmail ! com>
Date: 2016-12-10 10:17:12
Message-ID: E1cFeiO-0005ie-Ng () code ! kde ! org
[Download RAW message or body]
Git commit f37ef2c195b61a43a40e9cbb7f119fdc8e9d38f4 by Maik Qualmann.
Committed on 10/12/2016 at 10:16.
Pushed by mqualmann into branch 'master'.
fix locked database with BQM
M +24 -3 utilities/queuemanager/manager/actionthread.cpp
M +1 -0 utilities/queuemanager/manager/actionthread.h
M +5 -19 utilities/queuemanager/manager/task.cpp
https://commits.kde.org/digikam/f37ef2c195b61a43a40e9cbb7f119fdc8e9d38f4
diff --git a/utilities/queuemanager/manager/actionthread.cpp \
b/utilities/queuemanager/manager/actionthread.cpp index 48c3fa34d2..141bb3db77 100644
--- a/utilities/queuemanager/manager/actionthread.cpp
+++ b/utilities/queuemanager/manager/actionthread.cpp
@@ -28,6 +28,7 @@
#include "digikam_debug.h"
#include "digikam_config.h"
+#include "collectionscanner.h"
#include "task.h"
namespace Digikam
@@ -82,7 +83,7 @@ void ActionThread::processQueueItems(const \
QList<AssignedBatchTools>& items) {
ActionJobCollection collection;
- for(int i = 0 ; i < items.size() ; i++)
+ for (int i = 0 ; i < items.size() ; i++)
{
Task* const t = new Task();
t->setSettings(d->settings);
@@ -92,10 +93,12 @@ void ActionThread::processQueueItems(const \
QList<AssignedBatchTools>& items) this, \
SIGNAL(signalStarting(Digikam::ActionData)));
connect(t, SIGNAL(signalFinished(Digikam::ActionData)),
- this, SIGNAL(signalFinished(Digikam::ActionData)));
+ this, SLOT(slotUpdateImageInfo(Digikam::ActionData)),
+ Qt::BlockingQueuedConnection);
connect(this, SIGNAL(signalCancelTask()),
- t, SLOT(slotCancel()), Qt::QueuedConnection);
+ t, SLOT(slotCancel()),
+ Qt::QueuedConnection);
collection.insert(t, 0);
}
@@ -111,6 +114,24 @@ void ActionThread::cancel()
ActionThreadBase::cancel();
}
+void ActionThread::slotUpdateImageInfo(const Digikam::ActionData& ad)
+{
+ if (ad.status == ActionData::BatchDone)
+ {
+ CollectionScanner scanner;
+ ImageInfo source = ImageInfo::fromUrl(ad.fileUrl);
+ qlonglong id = scanner.scanFile(ad.destUrl.toLocalFile(), \
CollectionScanner::NormalScan); + ImageInfo info(id);
+ QDateTime dateTime = info.dateTime();
+ // Copy the digiKam attributes from original file to the new file
+ CollectionScanner::copyFileProperties(source, info);
+ // Restore date time from new file
+ info.setDateTime(dateTime);
+ }
+
+ emit signalFinished(ad);
+}
+
void ActionThread::slotThreadFinished()
{
if (isEmpty())
diff --git a/utilities/queuemanager/manager/actionthread.h \
b/utilities/queuemanager/manager/actionthread.h index 8cb848b453..3375c2e2c1 100644
--- a/utilities/queuemanager/manager/actionthread.h
+++ b/utilities/queuemanager/manager/actionthread.h
@@ -72,6 +72,7 @@ Q_SIGNALS:
private Q_SLOTS:
+ void slotUpdateImageInfo(const Digikam::ActionData& ad);
void slotThreadFinished();
private:
diff --git a/utilities/queuemanager/manager/task.cpp \
b/utilities/queuemanager/manager/task.cpp index a94b4f9d4e..4c6b710fbc 100644
--- a/utilities/queuemanager/manager/task.cpp
+++ b/utilities/queuemanager/manager/task.cpp
@@ -46,10 +46,8 @@ extern "C"
#include "dimg.h"
#include "dmetadata.h"
#include "imageinfo.h"
-#include "fileactionmngr.h"
#include "batchtool.h"
#include "batchtoolsmanager.h"
-#include "collectionscanner.h"
#include "fileoperation.h"
namespace Digikam
@@ -245,27 +243,15 @@ void Task::run()
}
}
- if (!FileOperation::localFileRename(d->tools.m_itemUrl.toLocalFile(),
- outUrl.toLocalFile(),
- dest.toLocalFile()))
+ if (FileOperation::localFileRename(d->tools.m_itemUrl.toLocalFile(),
+ outUrl.toLocalFile(),
+ dest.toLocalFile()))
{
- emitActionData(ActionData::BatchFailed, i18n("Failed to create \
file..."), dest); + emitActionData(ActionData::BatchDone, i18n("Item \
processed successfully %1", renameMess), dest); }
else
{
- // -- Now copy the digiKam attributes from original file to the new file \
------------
-
- CollectionScanner scanner;
- qlonglong id = scanner.scanFile(dest.toLocalFile(), \
CollectionScanner::NormalScan);
-
- ImageInfo destInfo(id);
- CollectionScanner::copyFileProperties(source, destInfo);
-
- // -- Read again new file that the database is up to date \
---------------------------
-
- scanner.scanFile(destInfo, CollectionScanner::Rescan);
-
- emitActionData(ActionData::BatchDone, i18n("Item processed successfully \
%1", renameMess), dest); + emitActionData(ActionData::BatchFailed, \
i18n("Failed to create file..."), dest); }
}
else
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic