summaryrefslogtreecommitdiff
path: root/src/plugins/diffeditor/unifieddiffeditorwidget.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-10-28 14:53:17 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-11-18 16:12:46 +0000
commitb4142684276e4fc67f13c9b3eacf398a1eb6b6b6 (patch)
tree7b6ab0bdef24a28caab698786b63b80faf1980b3 /src/plugins/diffeditor/unifieddiffeditorwidget.cpp
parent30eac65e09028c2b7bf0b2f695248715b83c5fd7 (diff)
downloadqt-creator-b4142684276e4fc67f13c9b3eacf398a1eb6b6b6.tar.gz
DiffEditor: Use AsyncTask
Change-Id: Id5b21b10c7a8805b560eb4fb36fd955b7af34afa Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/diffeditor/unifieddiffeditorwidget.cpp')
-rw-r--r--src/plugins/diffeditor/unifieddiffeditorwidget.cpp33
1 files changed, 13 insertions, 20 deletions
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 <texteditor/textdocumentlayout.h>
#include <texteditor/texteditorsettings.h>
-#include <utils/futuresynchronizer.h>
+#include <utils/asynctask.h>
#include <utils/qtcassert.h>
-#include <utils/runextensions.h>
#include <utils/tooltip/tooltip.h>
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<ShowResult>());
+ m_asyncTask.reset(new AsyncTask<ShowResult>());
+ 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)