[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/gwenview
From: Aurélien Gâteau <agateau () kde ! org>
Date: 2010-05-01 21:33:05
Message-ID: 20100501213305.C304EAC8AB () svn ! kde ! org
[Download RAW message or body]
SVN commit 1121600 by gateau:
Let's use KJob, no need to recreate it
M +1 -1 lib/CMakeLists.txt
D lib/document/abstractdocumenttask.cpp
D lib/document/abstractdocumenttask.h
M +9 -8 lib/document/document.cpp
M +4 -3 lib/document/document.h
A lib/document/documentjob.cpp \
lib/document/abstractdocumenttask.cpp#1121599 [License: GPL (v2+)] A \
lib/document/documentjob.h lib/document/abstractdocumenttask.h#1121599 [License: \
GPL (v2+)] M +12 -10 lib/transformimageoperation.cpp
M +8 -8 tests/documenttest.cpp
--- trunk/KDE/kdegraphics/gwenview/lib/CMakeLists.txt #1121599:1121600
@@ -31,7 +31,7 @@
crop/cropimageoperation.cpp
crop/croptool.cpp
document/abstractdocumentimpl.cpp
- document/abstractdocumenttask.cpp
+ document/documentjob.cpp
document/animateddocumentloadedimpl.cpp
document/document.cpp
document/documentfactory.cpp
--- trunk/KDE/kdegraphics/gwenview/lib/document/document.cpp #1121599:1121600
@@ -31,7 +31,7 @@
#include <kurl.h>
// Local
-#include "abstractdocumenttask.h"
+#include "documentjob.h"
#include "emptydocumentimpl.h"
#include "imagemetainfomodel.h"
#include "loadingdocumentimpl.h"
@@ -42,7 +42,7 @@
AbstractDocumentImpl* mImpl;
KUrl mUrl;
bool mKeepRawData;
- QQueue<AbstractDocumentTask*> mTaskQueue;
+ QQueue<DocumentJob*> mTaskQueue;
/**
* @defgroup imagedata should be reset in reload()
@@ -421,18 +421,19 @@
return d->mImpl->stopAnimation();
}
-void Document::enqueueTask(AbstractDocumentTask* task) {
+void Document::enqueueTask(DocumentJob* task) {
d->mTaskQueue.enqueue(task);
task->setDocument(Ptr(this));
- connect(task, SIGNAL(done(AbstractDocumentTask*)),
- SLOT(slotTaskDone(AbstractDocumentTask*)));
+ connect(task, SIGNAL(result(KJob*)),
+ SLOT(slotResult(KJob*)));
if (d->mTaskQueue.size() == 1) {
- QMetaObject::invokeMethod(task, "run", Qt::QueuedConnection);
+ task->start();
busyChanged(true);
}
}
-void Document::slotTaskDone(AbstractDocumentTask* task) {
+void Document::slotResult(KJob* job) {
+ DocumentJob* task = static_cast<DocumentJob*>(job);
Q_ASSERT(!d->mTaskQueue.isEmpty());
Q_ASSERT(d->mTaskQueue.head() == task);
d->mTaskQueue.dequeue();
@@ -440,7 +441,7 @@
busyChanged(false);
allTasksDone();
} else {
- QMetaObject::invokeMethod(d->mTaskQueue.head(), "run", Qt::QueuedConnection);
+ d->mTaskQueue.head()->start();
}
task->deleteLater();
}
--- trunk/KDE/kdegraphics/gwenview/lib/document/document.h #1121599:1121600
@@ -41,13 +41,14 @@
class QSize;
class QUndoStack;
+class KJob;
class KUrl;
namespace Gwenview {
class AbstractDocumentEditor;
class AbstractDocumentImpl;
-class AbstractDocumentTask;
+class DocumentJob;
class DocumentFactory;
struct DocumentPrivate;
class ImageMetaInfoModel;
@@ -180,7 +181,7 @@
*/
void stopAnimation();
- void enqueueTask(AbstractDocumentTask*);
+ void enqueueTask(DocumentJob*);
/**
* Returns true if there are queued tasks for this document.
@@ -206,7 +207,7 @@
void emitLoaded();
void emitLoadingFailed();
void slotUndoIndexChanged();
- void slotTaskDone(AbstractDocumentTask*);
+ void slotResult(KJob*);
private:
friend class DocumentFactory;
--- trunk/KDE/kdegraphics/gwenview/lib/transformimageoperation.cpp #1121599:1121600
@@ -32,7 +32,7 @@
// Local
#include "document/abstractdocumenteditor.h"
-#include "document/abstractdocumenttask.h"
+#include "document/documentjob.h"
namespace Gwenview {
@@ -42,26 +42,28 @@
};
-class TransformTask : public AbstractDocumentTask {
+class TransformJob : public DocumentJob {
public:
- TransformTask(Orientation orientation)
+ TransformJob(Orientation orientation)
: mOrientation(orientation)
{}
- void doRun() {
+ void threadedStart() {
if (document()->editor()) {
document()->editor()->applyTransformation(mOrientation);
+ setError(0);
} else {
- kWarning() << "!document->editor()";
+ setError(1);
+ setErrorText("!document->editor()");
}
}
protected:
- virtual void run() {
- QFuture<void> future = QtConcurrent::run(this, &TransformTask::doRun);
+ virtual void doStart() {
+ QFuture<void> future = QtConcurrent::run(this, &TransformJob::threadedStart);
QFutureWatcher<void>* watcher = new QFutureWatcher<void>(this);
watcher->setFuture(future);
- connect(watcher, SIGNAL(finished()), SLOT(emitDone()));
+ connect(watcher, SIGNAL(finished()), SLOT(emitResult()));
}
private:
@@ -100,7 +102,7 @@
void TransformImageOperation::redo() {
- document()->enqueueTask(new TransformTask(d->mOrientation));
+ document()->enqueueTask(new TransformJob(d->mOrientation));
}
@@ -117,7 +119,7 @@
orientation = d->mOrientation;
break;
}
- document()->enqueueTask(new TransformTask(orientation));
+ document()->enqueueTask(new TransformJob(orientation));
}
--- trunk/KDE/kdegraphics/gwenview/tests/documenttest.cpp #1121599:1121600
@@ -30,7 +30,7 @@
// Local
#include "../lib/abstractimageoperation.h"
#include "../lib/document/abstractdocumenteditor.h"
-#include "../lib/document/abstractdocumenttask.h"
+#include "../lib/document/documentjob.h"
#include "../lib/document/documentfactory.h"
#include "../lib/imagemetainfomodel.h"
#include "../lib/imageutils.h"
@@ -587,17 +587,17 @@
QCOMPARE(savedSpy.count(), 1);
}
-class TestTask : public AbstractDocumentTask {
+class TestJob : public DocumentJob {
public:
- TestTask(QString* str, char ch)
+ TestJob(QString* str, char ch)
: mStr(str)
, mCh(ch)
{}
protected:
- virtual void run() {
+ virtual void doStart() {
*mStr += mCh;
- done(this);
+ emitResult();
}
private:
@@ -611,9 +611,9 @@
QSignalSpy spy(doc.data(), SIGNAL(busyChanged(bool)));
QString str;
- doc->enqueueTask(new TestTask(&str, 'a'));
- doc->enqueueTask(new TestTask(&str, 'b'));
- doc->enqueueTask(new TestTask(&str, 'c'));
+ doc->enqueueTask(new TestJob(&str, 'a'));
+ doc->enqueueTask(new TestJob(&str, 'b'));
+ doc->enqueueTask(new TestJob(&str, 'c'));
QVERIFY(doc->isBusy());
QEventLoop loop;
connect(doc.data(), SIGNAL(allTasksDone()),
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic