diff options
| author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2024-01-13 17:08:43 +0100 |
|---|---|---|
| committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2024-01-17 13:14:01 +0000 |
| commit | 4c0541ce2fcb4103be7c845bf6311fb281bbe872 (patch) | |
| tree | 08e37869e850e8b584f182cf74b5f74f87861468 /src/plugins/ctfvisualizer/ctfvisualizertool.cpp | |
| parent | 0f67bbf87221d5ea4b2b5c9fb3324d76c1eb6b31 (diff) | |
CtfVisualizer: Reuse TaskTreeRunner
Change-Id: If893cdd260943a5e72b05595f15c3133e4340f8f
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Diffstat (limited to 'src/plugins/ctfvisualizer/ctfvisualizertool.cpp')
| -rw-r--r-- | src/plugins/ctfvisualizer/ctfvisualizertool.cpp | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/src/plugins/ctfvisualizer/ctfvisualizertool.cpp b/src/plugins/ctfvisualizer/ctfvisualizertool.cpp index d41b3d45029..51290be1ec3 100644 --- a/src/plugins/ctfvisualizer/ctfvisualizertool.cpp +++ b/src/plugins/ctfvisualizer/ctfvisualizertool.cpp @@ -29,6 +29,7 @@ using namespace Core; using namespace CtfVisualizer::Constants; +using namespace Tasking; using namespace Utils; namespace CtfVisualizer::Internal { @@ -77,6 +78,33 @@ CtfVisualizerTool::CtfVisualizerTool(QObject *parent) this, &CtfVisualizerTool::toggleThreadRestriction); m_perspective.addToolBarWidget(m_restrictToThreadsButton); + + connect(&m_taskTreeRunner, &TaskTreeRunner::aboutToStart, this, [](TaskTree *taskTree) { + auto progress = new TaskProgress(taskTree); + progress->setDisplayName(Tr::tr("Loading CTF File")); + }); + connect(&m_taskTreeRunner, &TaskTreeRunner::done, this, [this](DoneWith result) { + if (result == DoneWith::Success) { + m_traceManager->updateStatistics(); + if (m_traceManager->isEmpty()) { + QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"), + Tr::tr("The file does not contain any trace data.")); + } else if (!m_traceManager->errorString().isEmpty()) { + QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"), + m_traceManager->errorString()); + } else { + m_traceManager->finalize(); + m_perspective.select(); + const auto end = m_traceManager->traceEnd() + m_traceManager->traceDuration() / 20; + zoomControl()->setTrace(m_traceManager->traceBegin(), end); + zoomControl()->setRange(m_traceManager->traceBegin(), end); + } + setAvailableThreads(m_traceManager->getSortedThreads()); + } else { + QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"), + Tr::tr("Cannot read the CTF file.")); + } + }); } CtfVisualizerTool::~CtfVisualizerTool() = default; @@ -208,9 +236,7 @@ static void load(QPromise<json> &promise, const QString &fileName) void CtfVisualizerTool::loadJson(const QString &fileName) { - using namespace Tasking; - - if (m_loader || fileName.isEmpty()) + if (m_taskTreeRunner.isRunning() || fileName.isEmpty()) return; const auto onSetup = [this, fileName](Async<json> &async) { @@ -220,36 +246,7 @@ void CtfVisualizerTool::loadJson(const QString &fileName) m_traceManager->addEvent(asyncPtr->resultAt(index)); }); }; - const auto onDone = [this](DoneWith result) { - if (result == DoneWith::Success) { - m_traceManager->updateStatistics(); - if (m_traceManager->isEmpty()) { - QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"), - Tr::tr("The file does not contain any trace data.")); - } else if (!m_traceManager->errorString().isEmpty()) { - QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"), - m_traceManager->errorString()); - } else { - m_traceManager->finalize(); - m_perspective.select(); - const auto end = m_traceManager->traceEnd() + m_traceManager->traceDuration() / 20; - zoomControl()->setTrace(m_traceManager->traceBegin(), end); - zoomControl()->setRange(m_traceManager->traceBegin(), end); - } - setAvailableThreads(m_traceManager->getSortedThreads()); - } else { - QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"), - Tr::tr("Cannot read the CTF file.")); - } - m_loader.release()->deleteLater(); - }; - - const Group recipe { AsyncTask<json>(onSetup) }; - m_loader.reset(new TaskTree(recipe)); - connect(m_loader.get(), &TaskTree::done, this, onDone); - auto progress = new TaskProgress(m_loader.get()); - progress->setDisplayName(Tr::tr("Loading CTF File")); - m_loader->start(); + m_taskTreeRunner.start({AsyncTask<json>(onSetup)}); } void setupCtfVisualizerTool(QObject *guard) |
