BuildStep: Make runRecipe() pure virtual

Task-number: QTCREATORBUG-29168
Change-Id: I8a73325b095b86e5cc625348f615705ed3da3dd5
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2023-07-15 09:42:31 +02:00
parent 545dbc5743
commit 76ac2c044e
2 changed files with 23 additions and 40 deletions

View File

@@ -139,13 +139,33 @@ bool BuildStep::init()
void BuildStep::run() void BuildStep::run()
{ {
m_cancelFlag = false; m_cancelFlag = false;
doRun(); QTC_ASSERT(!m_taskTree, return);
m_taskTree.reset(new TaskTree({runRecipe()}));
connect(m_taskTree.get(), &TaskTree::progressValueChanged, this, [this](int value) {
emit progress(qRound(double(value) * 100 / std::max(m_taskTree->progressMaximum(), 1)), {});
});
connect(m_taskTree.get(), &TaskTree::done, this, [this] {
emit finished(true);
m_taskTree.release()->deleteLater();
});
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, [this] {
emit finished(false);
m_taskTree.release()->deleteLater();
});
m_taskTree->start();
} }
void BuildStep::cancel() void BuildStep::cancel()
{ {
m_cancelFlag = true; m_cancelFlag = true;
doCancel(); if (!m_taskTree)
return;
m_taskTree.reset();
if (!m_cancelMessage.isEmpty())
emit addOutput(m_cancelMessage, OutputFormat::ErrorMessage);
emit finished(false);
} }
QWidget *BuildStep::doCreateConfigWidget() QWidget *BuildStep::doCreateConfigWidget()
@@ -311,41 +331,6 @@ void BuildStep::setCancelMessage(const QString &message)
m_cancelMessage = message; m_cancelMessage = message;
} }
Tasking::GroupItem BuildStep::runRecipe()
{
return Group {};
}
void BuildStep::doRun()
{
QTC_ASSERT(!m_taskTree, return);
m_taskTree.reset(new TaskTree({runRecipe()}));
connect(m_taskTree.get(), &TaskTree::progressValueChanged, this, [this](int value) {
emit progress(qRound(double(value) * 100 / std::max(m_taskTree->progressMaximum(), 1)), {});
});
connect(m_taskTree.get(), &TaskTree::done, this, [this] {
emit finished(true);
m_taskTree.release()->deleteLater();
});
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, [this] {
emit finished(false);
m_taskTree.release()->deleteLater();
});
m_taskTree->start();
}
void BuildStep::doCancel()
{
if (!m_taskTree)
return;
m_taskTree.reset();
if (!m_cancelMessage.isEmpty())
emit addOutput(m_cancelMessage, OutputFormat::ErrorMessage);
emit finished(false);
}
void BuildStep::addMacroExpander() void BuildStep::addMacroExpander()
{ {
m_addMacroExpander = true; m_addMacroExpander = true;

View File

@@ -133,9 +133,7 @@ protected:
private: private:
using ProjectConfiguration::parent; using ProjectConfiguration::parent;
virtual Tasking::GroupItem runRecipe(); // TODO: Make pure virtual when all subclasses implement it. virtual Tasking::GroupItem runRecipe() = 0;
virtual void doRun();
virtual void doCancel();
BuildStepList * const m_stepList; BuildStepList * const m_stepList;
std::atomic_bool m_cancelFlag; std::atomic_bool m_cancelFlag;