forked from qt-creator/qt-creator
TaskTree: Adapt docs to the recent changes
The registration macros got removed recently. Change-Id: I69fe5a898d6d975b66a79e64e5e9425960745772 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
@@ -105,6 +105,19 @@ private:
|
||||
implement the start() method, and emit the done() signal when the task is finished.
|
||||
Use task() to access the associated \c Task instance.
|
||||
|
||||
To use your task adapter inside the task tree, create an alias to the
|
||||
Tasking::CustomTask template passing your task adapter as a template parameter:
|
||||
\code
|
||||
// Defines actual worker
|
||||
class Worker {...};
|
||||
|
||||
// Adapts Worker's interface to work with task tree
|
||||
class WorkerTaskAdapter : public TaskAdapter<Worker> {...};
|
||||
|
||||
// Defines WorkerTask as a new task tree element
|
||||
using WorkerTask = CustomTask<WorkerTaskAdapter>;
|
||||
\endcode
|
||||
|
||||
For more information on implementing the custom task adapters, refer to \l {Task Adapters}.
|
||||
|
||||
\sa start(), done(), task()
|
||||
@@ -333,8 +346,8 @@ private:
|
||||
|
||||
The CustomTask class template is used inside TaskTree for describing custom task items.
|
||||
|
||||
Custom task names are aliased with unique names inside the \l Tasking namespace
|
||||
via the TASKING_DECLARE_TASK or TASKING_DECLARE_TEMPLATE_TASK macros.
|
||||
Custom task names are aliased with unique names using the CustomTask template
|
||||
with a given TaskAdapter subclass as a template parameter.
|
||||
For example, \c ConcurrentCallTask<T> is an alias to the CustomTask that is defined
|
||||
to work with \c ConcurrentCall<T> as an associated task class.
|
||||
The following table contains all the built-in tasks and their associated task classes:
|
||||
@@ -501,26 +514,6 @@ private:
|
||||
\sa onSetup()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\macro TASKING_DECLARE_TASK(CustomTaskName, TaskAdapterClass)
|
||||
\relates Tasking
|
||||
|
||||
Registers the new custom task type under a \a CustomTaskName name inside the
|
||||
Tasking namespace for the passed \a TaskAdapterClass adapter class.
|
||||
|
||||
For more information on implementing the custom task adapters, refer to \l {Task Adapters}.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\macro TASKING_DECLARE_TEMPLATE_TASK(CustomTaskName, TaskAdapterClass)
|
||||
\relates Tasking
|
||||
|
||||
Registers the new custom task template type under a \a CustomTaskName name inside the
|
||||
Tasking namespace for the passed \a TaskAdapterClass adapter class template.
|
||||
|
||||
For more information on implementing the custom task adapters, refer to \l {Task Adapters}.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum Tasking::WorkflowPolicy
|
||||
|
||||
@@ -2156,10 +2149,10 @@ void TaskNode::invokeEndHandler(bool success)
|
||||
asynchronous task:
|
||||
|
||||
\code
|
||||
class TimeoutTaskAdapter : public Tasking::TaskAdapter<QTimer>
|
||||
class TimerTaskAdapter : public TaskAdapter<QTimer>
|
||||
{
|
||||
public:
|
||||
TimeoutTaskAdapter() {
|
||||
TimerTaskAdapter() {
|
||||
task()->setSingleShot(true);
|
||||
task()->setInterval(1000);
|
||||
connect(task(), &QTimer::timeout, this, [this] { emit done(true); });
|
||||
@@ -2168,7 +2161,7 @@ void TaskNode::invokeEndHandler(bool success)
|
||||
void start() final { task()->start(); }
|
||||
};
|
||||
|
||||
TASKING_DECLARE_TASK(TimeoutTask, TimeoutTaskAdapter);
|
||||
using TimerTask = CustomTask<TimerTaskAdapter>;
|
||||
\endcode
|
||||
|
||||
You must derive the custom adapter from the TaskAdapter class template
|
||||
@@ -2177,28 +2170,27 @@ void TaskNode::invokeEndHandler(bool success)
|
||||
later as an argument to the task's handlers. The instance of this class
|
||||
parameter automatically becomes a member of the TaskAdapter template, and is
|
||||
accessible through the TaskAdapter::task() method. The constructor
|
||||
of TimeoutTaskAdapter initially configures the QTimer object and connects
|
||||
to the QTimer::timeout signal. When the signal is triggered, TimeoutTaskAdapter
|
||||
of TimerTaskAdapter initially configures the QTimer object and connects
|
||||
to the QTimer::timeout signal. When the signal is triggered, TimerTaskAdapter
|
||||
emits the \c done(true) signal to inform the task tree that the task finished
|
||||
successfully. If it emits \c done(false), the task finished with an error.
|
||||
The TaskAdapter::start() method starts the timer.
|
||||
|
||||
To make QTimer accessible inside TaskTree under the \e TimeoutTask name,
|
||||
register it with TASKING_DECLARE_TASK(TimeoutTask, TimeoutTaskAdapter).
|
||||
TimeoutTask becomes a new task type inside Tasking namespace, using TimeoutTaskAdapter.
|
||||
To make QTimer accessible inside TaskTree under the \e TimerTask name,
|
||||
define TimerTask to be an alias to the Tasking::CustomTask<TimerTaskAdapter>.
|
||||
TimerTask becomes a new task type, using TimerTaskAdapter.
|
||||
|
||||
The new task type is now registered, and you can use it in TaskTree:
|
||||
|
||||
\code
|
||||
const auto onTimeoutSetup = [](QTimer &task) {
|
||||
const auto onTimerSetup = [](QTimer &task) {
|
||||
task.setInterval(2000);
|
||||
};
|
||||
const auto onTimeoutDone = [](const QTimer &task) {
|
||||
qDebug() << "timeout triggered";
|
||||
const auto onTimerDone = [](const QTimer &task) {
|
||||
qDebug() << "timer triggered";
|
||||
};
|
||||
|
||||
const Group root {
|
||||
TimeoutTask(onTimeoutSetup, onTimeoutDone)
|
||||
TimerTask(onTimerSetup, onTimerDone)
|
||||
};
|
||||
\endcode
|
||||
|
||||
|
||||
Reference in New Issue
Block a user