MercurialDiffEditorController: Reuse task tree

Change-Id: I45cfb00963bcaf5ded2e0d492126138583f10cda
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Jarek Kobus
2022-12-15 13:47:00 +01:00
parent 817c13c9e1
commit b5ebc80370

View File

@@ -13,6 +13,7 @@
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <vcsbase/vcsbasediffeditorcontroller.h>
#include <vcsbase/vcsbaseeditor.h>
@@ -38,22 +39,36 @@ namespace Mercurial::Internal {
class MercurialDiffEditorController : public VcsBaseDiffEditorController
{
public:
MercurialDiffEditorController(IDocument *document, const QStringList &args)
: VcsBaseDiffEditorController(document)
{
setDisplayName("Hg Diff");
setReloader([this, args] { runCommand({addConfigurationArguments(args)}); });
}
MercurialDiffEditorController(IDocument *document, const QStringList &args);
private:
void runCommand(const QList<QStringList> &args, QTextCodec *codec = nullptr);
QStringList addConfigurationArguments(const QStringList &args) const;
};
void MercurialDiffEditorController::runCommand(const QList<QStringList> &args, QTextCodec *codec)
MercurialDiffEditorController::MercurialDiffEditorController(IDocument *document,
const QStringList &args)
: VcsBaseDiffEditorController(document)
{
// at this moment, don't ignore any errors
VcsBaseDiffEditorController::runCommand(args, RunFlags::None, codec);
setDisplayName("Hg Diff");
using namespace Tasking;
const TreeStorage<QString> diffInputStorage = inputStorage();
const auto setupDiff = [=](QtcProcess &process) {
setupCommand(process, {addConfigurationArguments(args)});
VcsOutputWindow::appendCommand(process.workingDirectory(), process.commandLine());
};
const auto onDiffDone = [diffInputStorage](const QtcProcess &process) {
*diffInputStorage.activeStorage() = process.cleanedStdOut();
};
const Group root {
Storage(diffInputStorage),
Process(setupDiff, onDiffDone),
postProcessTask()
};
setReloadRecipe(root);
}
QStringList MercurialDiffEditorController::addConfigurationArguments(const QStringList &args) const