diff options
author | hjk <hjk@qt.io> | 2020-02-04 08:11:50 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-02-06 07:03:14 +0000 |
commit | c17767c78ebc6b3d3b66e4d78d46b0eef4ac003f (patch) | |
tree | e883ff52fca3055b65fe8598d46562541b8b702e /src/plugins/mercurial | |
parent | 8f88b89d81d355229acf183300ab5a959f01772e (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.cpp | 51 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialclient.h | 8 |
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); }; |