aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/mercurial
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-02-04 08:11:50 +0100
committerhjk <hjk@qt.io>2020-02-06 07:03:14 +0000
commitc17767c78ebc6b3d3b66e4d78d46b0eef4ac003f (patch)
treee883ff52fca3055b65fe8598d46562541b8b702e /src/plugins/mercurial
parent8f88b89d81d355229acf183300ab5a959f01772e (diff)
Vcs: Use setters to set up DiffController parameters
Plan is to avoid client use down there, so extract the actually used data first and pass it down. Change-Id: I088fc9cc3086e8f6e1e0c3c9d3a35445f752e6f0 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/mercurial')
-rw-r--r--src/plugins/mercurial/mercurialclient.cpp51
-rw-r--r--src/plugins/mercurial/mercurialclient.h8
2 files changed, 27 insertions, 32 deletions
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index 67d9918729a..719064dca58 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -58,19 +58,17 @@ namespace Internal {
class MercurialDiffEditorController : public VcsBaseDiffEditorController
{
public:
- MercurialDiffEditorController(IDocument *document, VcsBaseClientImpl *client, const QString &workingDirectory);
+ MercurialDiffEditorController(IDocument *document)
+ : VcsBaseDiffEditorController(document)
+ {
+ setDisplayName("Hg Diff");
+ }
protected:
void runCommand(const QList<QStringList> &args, QTextCodec *codec = nullptr);
QStringList addConfigurationArguments(const QStringList &args) const;
};
-MercurialDiffEditorController::MercurialDiffEditorController(IDocument *document, VcsBaseClientImpl *client, const QString &workingDirectory):
- VcsBaseDiffEditorController(document, client, workingDirectory)
-{
- setDisplayName("Hg Diff");
-}
-
void MercurialDiffEditorController::runCommand(const QList<QStringList> &args, QTextCodec *codec)
{
// at this moment, don't ignore any errors
@@ -90,8 +88,8 @@ QStringList MercurialDiffEditorController::addConfigurationArguments(const QStri
class FileDiffController : public MercurialDiffEditorController
{
public:
- FileDiffController(IDocument *document, VcsBaseClient *client, const QString &dir, const QString &fileName) :
- MercurialDiffEditorController(document, client, dir),
+ FileDiffController(IDocument *document, const QString &fileName) :
+ MercurialDiffEditorController(document),
m_fileName(fileName)
{ }
@@ -108,8 +106,8 @@ private:
class FileListDiffController : public MercurialDiffEditorController
{
public:
- FileListDiffController(IDocument *document, VcsBaseClient *client, const QString &dir, const QStringList &fileNames) :
- MercurialDiffEditorController(document, client, dir),
+ FileListDiffController(IDocument *document, const QStringList &fileNames) :
+ MercurialDiffEditorController(document),
m_fileNames(fileNames)
{ }
@@ -128,8 +126,8 @@ private:
class RepositoryDiffController : public MercurialDiffEditorController
{
public:
- RepositoryDiffController(IDocument *document, VcsBaseClient *client, const QString &dir) :
- MercurialDiffEditorController(document, client, dir)
+ RepositoryDiffController(IDocument *document) :
+ MercurialDiffEditorController(document)
{ }
void reload() override
@@ -400,29 +398,23 @@ void MercurialClient::diff(const QString &workingDir, const QStringList &files,
const QString sourceFile = VcsBaseEditor::getSource(workingDir, fileName);
const QString documentId = QString(Constants::MERCURIAL_PLUGIN)
+ ".DiffRepo." + sourceFile;
- requestReload(documentId, sourceFile, title,
- [this, workingDir](IDocument *doc) {
- return new RepositoryDiffController(doc, this, workingDir);
- });
+ requestReload(documentId, sourceFile, title, workingDir,
+ [](IDocument *doc) { return new RepositoryDiffController(doc); });
} else if (files.size() == 1) {
fileName = files.at(0);
const QString title = tr("Mercurial Diff \"%1\"").arg(fileName);
const QString sourceFile = VcsBaseEditor::getSource(workingDir, fileName);
const QString documentId = QString(Constants::MERCURIAL_PLUGIN)
+ ".DiffFile." + sourceFile;
- requestReload(documentId, sourceFile, title,
- [this, workingDir, fileName](IDocument *doc) {
- return new FileDiffController(doc, this, workingDir, fileName);
- });
+ requestReload(documentId, sourceFile, title, workingDir,
+ [fileName](IDocument *doc) { return new FileDiffController(doc, fileName); });
} else {
const QString title = tr("Mercurial Diff \"%1\"").arg(workingDir);
const QString sourceFile = VcsBaseEditor::getSource(workingDir, fileName);
const QString documentId = QString(Constants::MERCURIAL_PLUGIN)
+ ".DiffFile." + workingDir;
- requestReload(documentId, sourceFile, title,
- [this, workingDir, files](IDocument *doc) {
- return new FileListDiffController(doc, this, workingDir, files);
- });
+ requestReload(documentId, sourceFile, title, workingDir,
+ [files](IDocument *doc) { return new FileListDiffController(doc, files); });
}
}
@@ -511,15 +503,20 @@ MercurialClient::StatusItem MercurialClient::parseStatusLine(const QString &line
}
void MercurialClient::requestReload(const QString &documentId, const QString &source, const QString &title,
- std::function<DiffEditor::DiffEditorController *(Core::IDocument *)> factory) const
+ const QString &workingDirectory,
+ std::function<VcsBaseDiffEditorController *(Core::IDocument *)> factory)
{
// Creating document might change the referenced source. Store a copy and use it.
const QString sourceCopy = source;
IDocument *document = DiffEditorController::findOrCreateDocument(documentId, title);
QTC_ASSERT(document, return);
- DiffEditorController *controller = factory(document);
+ VcsBaseDiffEditorController *controller = factory(document);
QTC_ASSERT(controller, return);
+ controller->setVcsBinary(settings().binaryPath());
+ controller->setVcsTimeoutS(settings().vcsTimeoutS());
+ controller->setProcessEnvironment(processEnvironment());
+ controller->setWorkingDirectory(workingDirectory);
VcsBase::setSource(document, sourceCopy);
EditorManager::activateEditorForDocument(document);
diff --git a/src/plugins/mercurial/mercurialclient.h b/src/plugins/mercurial/mercurialclient.h
index 4722a4f3b54..baa2ccfd649 100644
--- a/src/plugins/mercurial/mercurialclient.h
+++ b/src/plugins/mercurial/mercurialclient.h
@@ -29,9 +29,7 @@
#include <coreplugin/editormanager/ieditor.h>
#include <vcsbase/vcsbaseclient.h>
-namespace DiffEditor {
-class DiffEditorController;
-}
+namespace VcsBase { class VcsBaseDiffEditorController; }
namespace Mercurial {
namespace Internal {
@@ -90,8 +88,8 @@ signals:
void needMerge();
private:
- void requestReload(const QString &documentId, const QString &source, const QString &title,
- std::function<DiffEditor::DiffEditorController *(Core::IDocument *)> factory) const;
+ void requestReload(const QString &documentId, const QString &source, const QString &title, const QString &workingDirectory,
+ std::function<VcsBase::VcsBaseDiffEditorController *(Core::IDocument *)> factory);
void parsePullOutput(const QString &output);
};