diff options
author | hjk <hjk@qt.io> | 2020-02-06 11:52:59 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-02-06 11:21:59 +0000 |
commit | b22768e980ef3e5275d98d1ed46d900aaadde904 (patch) | |
tree | d6f521d06cce333b2a211d2bb6863d1e08f21b3d /src/plugins/git | |
parent | 0737291d541e98c4a5ed0d4a058cc64a4227a141 (diff) | |
download | qt-creator-b22768e980ef3e5275d98d1ed46d900aaadde904.tar.gz |
Diff/Vcs: Use a function object for reloading
Helps with slimming down the user code side.
Change-Id: I4b0aac76c0d1516eb05bff9c18594e64f8b41a7a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/git')
-rw-r--r-- | src/plugins/git/gitclient.cpp | 155 |
1 files changed, 56 insertions, 99 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 22234556d9..d4a4a57edb 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -383,127 +383,88 @@ QStringList GitDiffEditorController::addHeadWhenCommandInProgress() const class RepositoryDiffController : public GitDiffEditorController { - Q_OBJECT public: explicit RepositoryDiffController(IDocument *document) : GitDiffEditorController(document) - { } - - void reload() override; + { + setReloader([this] { + QStringList args = {"diff"}; + args.append(addHeadWhenCommandInProgress()); + runCommand({addConfigurationArguments(args)}); + }); + } }; -void RepositoryDiffController::reload() -{ - QStringList args = {"diff"}; - args.append(addHeadWhenCommandInProgress()); - runCommand(QList<QStringList>() << addConfigurationArguments(args)); -} - class FileDiffController : public GitDiffEditorController { - Q_OBJECT public: FileDiffController(IDocument *document, const QString &fileName) : - GitDiffEditorController(document), - m_fileName(fileName) - { } - - void reload() override; - -private: - const QString m_fileName; + GitDiffEditorController(document) + { + setReloader([this, fileName] { + QStringList args = {"diff"}; + args.append(addHeadWhenCommandInProgress()); + args << "--" << fileName; + runCommand({addConfigurationArguments(args)}); + }); + } }; -void FileDiffController::reload() -{ - QStringList args = {"diff"}; - args.append(addHeadWhenCommandInProgress()); - args << "--" << m_fileName; - - runCommand(QList<QStringList>() << addConfigurationArguments(args)); -} - class FileListDiffController : public GitDiffEditorController { - Q_OBJECT public: FileListDiffController(IDocument *document, const QStringList &stagedFiles, const QStringList &unstagedFiles) : - GitDiffEditorController(document), - m_stagedFiles(stagedFiles), - m_unstagedFiles(unstagedFiles) - { } - - void reload() override; - -private: - const QStringList m_stagedFiles; - const QStringList m_unstagedFiles; -}; + GitDiffEditorController(document) + { + setReloader([this, stagedFiles, unstagedFiles] { + QList<QStringList> argLists; + if (!stagedFiles.isEmpty()) { + QStringList stagedArgs = {"diff", "--cached", "--"}; + stagedArgs << stagedFiles; + argLists << addConfigurationArguments(stagedArgs); + } -void FileListDiffController::reload() -{ - QList<QStringList> argLists; - if (!m_stagedFiles.isEmpty()) { - QStringList stagedArgs = {"diff", "--cached", "--"}; - stagedArgs << m_stagedFiles; - argLists << addConfigurationArguments(stagedArgs); - } + if (!unstagedFiles.isEmpty()) { + QStringList unstagedArgs = {"diff"}; + unstagedArgs << addHeadWhenCommandInProgress() << "--" << unstagedFiles; + argLists << addConfigurationArguments(unstagedArgs); + } - if (!m_unstagedFiles.isEmpty()) { - QStringList unstagedArgs = {"diff"}; - unstagedArgs << addHeadWhenCommandInProgress() << "--" << m_unstagedFiles; - argLists << addConfigurationArguments(unstagedArgs); + if (!argLists.isEmpty()) + runCommand(argLists); + }); } - - if (!argLists.isEmpty()) - runCommand(argLists); -} +}; class ProjectDiffController : public GitDiffEditorController { - Q_OBJECT public: ProjectDiffController(IDocument *document, const QStringList &projectPaths) : - GitDiffEditorController(document), - m_projectPaths(projectPaths) - { } - - void reload() override; - -private: - const QStringList m_projectPaths; + GitDiffEditorController(document) + { + setReloader([this, projectPaths] { + QStringList args = {"diff"}; + args << addHeadWhenCommandInProgress() << "--" << projectPaths; + runCommand({addConfigurationArguments(args)}); + }); + } }; -void ProjectDiffController::reload() -{ - QStringList args = {"diff"}; - args << addHeadWhenCommandInProgress() << "--" << m_projectPaths; - runCommand(QList<QStringList>() << addConfigurationArguments(args)); -} - class BranchDiffController : public GitDiffEditorController { - Q_OBJECT public: BranchDiffController(IDocument *document, const QString &branch) : - GitDiffEditorController(document), - m_branch(branch) - { } - - void reload() override; - -private: - const QString m_branch; + GitDiffEditorController(document) + { + setReloader([this, branch] { + QStringList args = {"diff"}; + args << addHeadWhenCommandInProgress() << branch; + runCommand({addConfigurationArguments(args)}); + }); + } }; -void BranchDiffController::reload() -{ - QStringList args = {"diff"}; - args << addHeadWhenCommandInProgress() << m_branch; - runCommand(QList<QStringList>() << addConfigurationArguments(args)); -} - class ShowController : public GitDiffEditorController { Q_OBJECT @@ -514,9 +475,14 @@ public: m_state(Idle) { setDisplayName("Git Show"); + setReloader([this] { + m_state = GettingDescription; + const QStringList args = {"show", "-s", noColorOption, showFormatC, m_id}; + runCommand({args}, GitPluginPrivate::client()->encoding(workingDirectory(), "i18n.commitEncoding")); + setStartupFile(VcsBase::source(this->document())); + }); } - void reload() override; void processCommandOutput(const QString &output) override; private: @@ -525,15 +491,6 @@ private: State m_state; }; -void ShowController::reload() -{ - // stage 1 - m_state = GettingDescription; - const QStringList args = {"show", "-s", noColorOption, showFormatC, m_id}; - runCommand(QList<QStringList>() << args, GitPluginPrivate::client()->encoding(workingDirectory(), "i18n.commitEncoding")); - setStartupFile(VcsBase::source(document())); -} - void ShowController::processCommandOutput(const QString &output) { QTC_ASSERT(m_state != Idle, return); |