aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/mercurial
diff options
context:
space:
mode:
authorHugues Delorme <delorme.hugues@fougsys.fr>2015-01-20 17:42:16 +0100
committerHugues Delorme <delorme.hugues@fougsys.fr>2015-01-22 14:28:35 +0100
commit4b5d2ccef781170d48bea7c12678a4439d4b727d (patch)
tree1e0b217016c33b84c3387260954f114d7432a8f9 /src/plugins/mercurial
parent3956fab1dde88ba8ebd13aeed8dff80b272b52bb (diff)
Vcs: in VcsBaseClient use functors to create log/diff parameter widgets
Also API of VcsBaseEditorParameterWidget was changed to take benefit of C++11 lambdas. Slot executeCommand() is no longer virtual and only fires signal commandExecutionRequested(). The Vcs client just has to bind a lambda to this signal instead of some boiler-plate code like keeping track of the arguments of diff/log with "struct XxxDiffParameters", etc. Change-Id: I347c97d84a8324e9c661df4e6d9a6075980b020f Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Diffstat (limited to 'src/plugins/mercurial')
-rw-r--r--src/plugins/mercurial/mercurialclient.cpp60
-rw-r--r--src/plugins/mercurial/mercurialclient.h3
2 files changed, 16 insertions, 47 deletions
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index 2347d5f50c..961be4401b 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -53,9 +53,25 @@ using namespace VcsBase;
namespace Mercurial {
namespace Internal {
+// Parameter widget controlling whitespace diff mode, associated with a parameter
+class MercurialDiffParameterWidget : public VcsBaseEditorParameterWidget
+{
+ Q_OBJECT
+public:
+ MercurialDiffParameterWidget(MercurialSettings *settings, QWidget *parent = 0) :
+ VcsBaseEditorParameterWidget(parent)
+ {
+ mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
+ settings->boolPointer(MercurialSettings::diffIgnoreWhiteSpaceKey));
+ mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
+ settings->boolPointer(MercurialSettings::diffIgnoreBlankLinesKey));
+ }
+};
+
MercurialClient::MercurialClient(MercurialSettings *settings) :
VcsBaseClient(settings)
{
+ setDiffParameterWidgetCreator([=] { return new MercurialDiffParameterWidget(settings); });
}
MercurialSettings *MercurialClient::settings() const
@@ -414,50 +430,6 @@ void MercurialClient::parsePullOutput(const QString &output)
emit needMerge();
}
-// Collect all parameters required for a diff to be able to associate them
-// with a diff editor and re-run the diff with parameters.
-struct MercurialDiffParameters
-{
- QString workingDir;
- QStringList files;
- QStringList extraOptions;
-};
-
-// Parameter widget controlling whitespace diff mode, associated with a parameter
-class MercurialDiffParameterWidget : public VcsBaseEditorParameterWidget
-{
- Q_OBJECT
-public:
- MercurialDiffParameterWidget(MercurialClient *client,
- const MercurialDiffParameters &p, QWidget *parent = 0) :
- VcsBaseEditorParameterWidget(parent), m_client(client), m_params(p)
- {
- mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
- client->settings()->boolPointer(MercurialSettings::diffIgnoreWhiteSpaceKey));
- mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
- client->settings()->boolPointer(MercurialSettings::diffIgnoreBlankLinesKey));
- }
-
- void executeCommand()
- {
- m_client->diff(m_params.workingDir, m_params.files, m_params.extraOptions);
- }
-
-private:
- MercurialClient *m_client;
- const MercurialDiffParameters m_params;
-};
-
-VcsBaseEditorParameterWidget *MercurialClient::createDiffEditor(
- const QString &workingDir, const QStringList &files, const QStringList &extraOptions)
-{
- MercurialDiffParameters parameters;
- parameters.workingDir = workingDir;
- parameters.files = files;
- parameters.extraOptions = extraOptions;
- return new MercurialDiffParameterWidget(this, parameters);
-}
-
} // namespace Internal
} // namespace Mercurial
diff --git a/src/plugins/mercurial/mercurialclient.h b/src/plugins/mercurial/mercurialclient.h
index 6fffe2f0b4..d01e7aebe3 100644
--- a/src/plugins/mercurial/mercurialclient.h
+++ b/src/plugins/mercurial/mercurialclient.h
@@ -86,9 +86,6 @@ public:
protected:
Core::Id vcsEditorKind(VcsCommandTag cmd) const;
QStringList revisionSpec(const QString &revision) const;
- VcsBase::VcsBaseEditorParameterWidget *createDiffEditor(const QString &workingDir,
- const QStringList &files,
- const QStringList &extraOptions);
StatusItem parseStatusLine(const QString &line) const;
signals: