From b4142684276e4fc67f13c9b3eacf398a1eb6b6b6 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 28 Oct 2022 14:53:17 +0200 Subject: DiffEditor: Use AsyncTask Change-Id: Id5b21b10c7a8805b560eb4fb36fd955b7af34afa Reviewed-by: hjk --- src/plugins/diffeditor/unifieddiffeditorwidget.cpp | 33 +++++++++------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'src/plugins/diffeditor/unifieddiffeditorwidget.cpp') diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index 663e53166f..3f902f2518 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -21,9 +21,8 @@ #include #include -#include +#include #include -#include #include using namespace Core; @@ -54,13 +53,7 @@ UnifiedDiffEditorWidget::UnifiedDiffEditorWidget(QWidget *parent) Core::ICore::addContextObject(context); } -UnifiedDiffEditorWidget::~UnifiedDiffEditorWidget() -{ - if (m_watcher) { - m_watcher->cancel(); - DiffEditorPlugin::futureSynchronizer()->addFuture(m_watcher->future()); - } -} +UnifiedDiffEditorWidget::~UnifiedDiffEditorWidget() = default; void UnifiedDiffEditorWidget::setDocument(DiffEditorDocument *document) { @@ -203,10 +196,8 @@ void UnifiedDiffEditorWidget::clear(const QString &message) { m_data = {}; setSelections({}); - if (m_watcher) { - m_watcher->cancel(); - DiffEditorPlugin::futureSynchronizer()->addFuture(m_watcher->future()); - m_watcher.reset(); + if (m_asyncTask) { + m_asyncTask.reset(); m_controller.setBusyShowing(false); } @@ -462,13 +453,14 @@ void UnifiedDiffEditorWidget::showDiff() return; } - m_watcher.reset(new QFutureWatcher()); + m_asyncTask.reset(new AsyncTask()); + m_asyncTask->setFutureSynchronizer(DiffEditorPlugin::futureSynchronizer()); m_controller.setBusyShowing(true); - connect(m_watcher.get(), &QFutureWatcherBase::finished, this, [this] { - if (m_watcher->isCanceled()) { + connect(m_asyncTask.get(), &AsyncTaskBase::done, this, [this] { + if (m_asyncTask->isCanceled()) { setPlainText(tr("Retrieving data failed.")); } else { - const ShowResult result = m_watcher->result(); + const ShowResult result = m_asyncTask->result(); m_data = result.diffData; TextDocumentPtr doc(result.textDocument); { @@ -482,7 +474,7 @@ void UnifiedDiffEditorWidget::showDiff() setSelections(result.selections); setCurrentDiffFileIndex(m_controller.currentDiffFileIndex()); } - m_watcher.release()->deleteLater(); + m_asyncTask.release()->deleteLater(); m_controller.setBusyShowing(false); }); @@ -535,8 +527,9 @@ void UnifiedDiffEditorWidget::showDiff() futureInterface.reportResult(result); }; - m_watcher->setFuture(runAsync(getDocument)); - ProgressManager::addTask(m_watcher->future(), tr("Rendering diff"), "DiffEditor"); + m_asyncTask->setAsyncCallData(getDocument); + m_asyncTask->start(); + ProgressManager::addTask(m_asyncTask->future(), tr("Rendering diff"), "DiffEditor"); } void UnifiedDiffEditorWidget::jumpToOriginalFile(const QTextCursor &cursor) -- cgit v1.2.1