aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp')
-rw-r--r--src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp42
1 files changed, 17 insertions, 25 deletions
diff --git a/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp b/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp
index c0d31775af9..696e96b2916 100644
--- a/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp
+++ b/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp
@@ -2,28 +2,21 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "vcsbasediffeditorcontroller.h"
-#include "vcsplugin.h"
-#include <utils/asynctask.h>
+#include <extensionsystem/pluginmanager.h>
+
+#include <utils/async.h>
#include <utils/environment.h>
#include <utils/futuresynchronizer.h>
+#include <utils/process.h>
#include <utils/qtcassert.h>
-#include <utils/qtcprocess.h>
using namespace DiffEditor;
+using namespace Tasking;
using namespace Utils;
namespace VcsBase {
-static void readPatch(QFutureInterface<QList<FileData>> &futureInterface, const QString &patch)
-{
- bool ok;
- const QList<FileData> &fileDataList = DiffUtils::readPatch(patch, &ok, &futureInterface);
- futureInterface.reportResult(fileDataList);
-}
-
-/////////////////////
-
class VcsBaseDiffEditorControllerPrivate
{
public:
@@ -32,7 +25,7 @@ public:
VcsBaseDiffEditorController *q;
Environment m_processEnvironment;
FilePath m_vcsBinary;
- const Tasking::TreeStorage<QString> m_inputStorage;
+ const TreeStorage<QString> m_inputStorage;
};
/////////////////////
@@ -47,33 +40,32 @@ VcsBaseDiffEditorController::~VcsBaseDiffEditorController()
delete d;
}
-Tasking::TreeStorage<QString> VcsBaseDiffEditorController::inputStorage() const
+TreeStorage<QString> VcsBaseDiffEditorController::inputStorage() const
{
return d->m_inputStorage;
}
-Tasking::TaskItem VcsBaseDiffEditorController::postProcessTask()
+TaskItem VcsBaseDiffEditorController::postProcessTask()
{
- using namespace Tasking;
-
- const auto setupDiffProcessor = [this](AsyncTask<QList<FileData>> &async) {
+ const auto setupDiffProcessor = [this](Async<QList<FileData>> &async) {
const QString *storage = inputStorage().activeStorage();
QTC_ASSERT(storage, qWarning("Using postProcessTask() requires putting inputStorage() "
"into task tree's root group."));
const QString inputData = storage ? *storage : QString();
- async.setAsyncCallData(readPatch, inputData);
- async.setFutureSynchronizer(Internal::VcsPlugin::futureSynchronizer());
+ async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
+ async.setConcurrentCallData(&DiffUtils::readPatchWithPromise, inputData);
};
- const auto onDiffProcessorDone = [this](const AsyncTask<QList<FileData>> &async) {
- setDiffFiles(async.result());
+ const auto onDiffProcessorDone = [this](const Async<QList<FileData>> &async) {
+ setDiffFiles(async.isResultAvailable() ? async.result() : QList<FileData>());
+ // TODO: We should set the right starting line here
};
- const auto onDiffProcessorError = [this](const AsyncTask<QList<FileData>> &) {
+ const auto onDiffProcessorError = [this](const Async<QList<FileData>> &) {
setDiffFiles({});
};
- return Async<QList<FileData>>(setupDiffProcessor, onDiffProcessorDone, onDiffProcessorError);
+ return AsyncTask<QList<FileData>>(setupDiffProcessor, onDiffProcessorDone, onDiffProcessorError);
}
-void VcsBaseDiffEditorController::setupCommand(QtcProcess &process, const QStringList &args) const
+void VcsBaseDiffEditorController::setupCommand(Process &process, const QStringList &args) const
{
process.setEnvironment(d->m_processEnvironment);
process.setWorkingDirectory(workingDirectory());