forked from qt-creator/qt-creator
TaskTree: Add task tree adapter for task tree
Now it's possible to nest TaskTrees. A nested TaskTree is seen as one, singular task inside parent tree. Change-Id: Iad95de39c7b79580e0b589c222594de91d5b51a1 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -535,4 +535,15 @@ int TaskTree::progressValue() const
|
||||
return d->m_progressValue;
|
||||
}
|
||||
|
||||
TaskTreeAdapter::TaskTreeAdapter()
|
||||
{
|
||||
connect(task(), &TaskTree::done, this, [this] { emit done(true); });
|
||||
connect(task(), &TaskTree::errorOccurred, this, [this] { emit done(false); });
|
||||
}
|
||||
|
||||
void TaskTreeAdapter::start()
|
||||
{
|
||||
task()->start();
|
||||
}
|
||||
|
||||
} // namespace Utils
|
||||
|
@@ -255,6 +255,13 @@ private:
|
||||
TaskTreePrivate *d;
|
||||
};
|
||||
|
||||
class QTCREATOR_UTILS_EXPORT TaskTreeAdapter : public Tasking::TaskAdapter<TaskTree>
|
||||
{
|
||||
public:
|
||||
TaskTreeAdapter();
|
||||
void start() final;
|
||||
};
|
||||
|
||||
} // namespace Utils
|
||||
|
||||
#define QTC_DECLARE_CUSTOM_TASK(CustomTaskName, TaskAdapterClass)\
|
||||
@@ -266,3 +273,4 @@ template <typename ...Args>\
|
||||
using CustomTaskName = CustomTask<TaskAdapterClass<Args...>>;\
|
||||
} // namespace Utils::Tasking
|
||||
|
||||
QTC_DECLARE_CUSTOM_TASK(Tree, Utils::TaskTreeAdapter);
|
||||
|
@@ -246,6 +246,20 @@ void tst_TaskTree::processTree_data()
|
||||
},
|
||||
OnGroupDone(rootDone)
|
||||
};
|
||||
auto setupSubTree = [=](TaskTree &taskTree) {
|
||||
const Group nestedRoot {
|
||||
Process(std::bind(setupProcess, _1, 2), readResult),
|
||||
Process(std::bind(setupProcess, _1, 3), readResult),
|
||||
Process(std::bind(setupProcess, _1, 4), readResult),
|
||||
};
|
||||
taskTree.setupRoot(nestedRoot);
|
||||
};
|
||||
const Group sequentialSubTreeRoot {
|
||||
Process(std::bind(setupProcess, _1, 1), readResult),
|
||||
Tree(setupSubTree),
|
||||
Process(std::bind(setupProcess, _1, 5), readResult),
|
||||
OnGroupDone(rootDone)
|
||||
};
|
||||
const Log sequentialLog{{1, Handler::Setup},
|
||||
{1, Handler::Done},
|
||||
{2, Handler::Setup},
|
||||
@@ -260,6 +274,8 @@ void tst_TaskTree::processTree_data()
|
||||
QTest::newRow("Sequential") << sequentialRoot << sequentialLog << true << true << 5;
|
||||
QTest::newRow("SequentialEncapsulated") << sequentialEncapsulatedRoot << sequentialLog
|
||||
<< true << true << 5;
|
||||
QTest::newRow("SequentialSubTree") << sequentialSubTreeRoot << sequentialLog
|
||||
<< true << true << 3; // We don't inspect subtrees
|
||||
|
||||
const Group sequentialNestedRoot {
|
||||
Group {
|
||||
@@ -439,6 +455,7 @@ void tst_TaskTree::processTree_data()
|
||||
{-1, Handler::GroupDone}};
|
||||
QTest::newRow("DynamicSetupSelected") << dynamicSetupSelRoot << dynamicSetupSelLog
|
||||
<< true << true << 4;
|
||||
|
||||
}
|
||||
|
||||
void tst_TaskTree::processTree()
|
||||
|
Reference in New Issue
Block a user