[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