aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/mercurial
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-02-07 07:51:20 +0100
committerhjk <hjk@qt.io>2020-02-07 10:23:47 +0000
commitb5710099bb23061fb1a0b611ea4eb300572c0395 (patch)
treee6332934c4b56d8c7414f1ecef0bbaa42724678f /src/plugins/mercurial
parenta44bfdd7792512325e88b8480148864b12453904 (diff)
Vcs: Make some editor factories proper plugin pimpl members
Change-Id: I7f815c53bac8621b2198c57d7f1d7d4bd43eb282 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/mercurial')
-rw-r--r--src/plugins/mercurial/mercurialplugin.cpp59
1 files changed, 40 insertions, 19 deletions
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index a6efdd7e6f..c48a2c2156 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -71,6 +71,7 @@
using namespace VcsBase;
using namespace Utils;
+using namespace std::placeholders;
namespace Mercurial {
namespace Internal {
@@ -95,25 +96,28 @@ private:
MercurialClient *m_client;
};
-static const VcsBaseEditorParameters editorParameters[] = {
-{
+const VcsBaseEditorParameters logEditorParameters {
LogOutput,
Constants::FILELOG_ID,
Constants::FILELOG_DISPLAY_NAME,
- Constants::LOGAPP},
+ Constants::LOGAPP
+};
-{ AnnotateOutput,
+const VcsBaseEditorParameters annotateEditorParameters {
+ AnnotateOutput,
Constants::ANNOTATELOG_ID,
Constants::ANNOTATELOG_DISPLAY_NAME,
- Constants::ANNOTATEAPP},
+ Constants::ANNOTATEAPP
+};
-{ DiffOutput,
+const VcsBaseEditorParameters diffEditorParameters {
+ DiffOutput,
Constants::DIFFLOG_ID,
Constants::DIFFLOG_DISPLAY_NAME,
- Constants::DIFFAPP}
+ Constants::DIFFAPP
};
-static const VcsBaseSubmitEditorParameters submitEditorParameters = {
+const VcsBaseSubmitEditorParameters submitEditorParameters {
Constants::COMMITMIMETYPE,
Constants::COMMIT_ID,
Constants::COMMIT_DISPLAY_NAME,
@@ -190,6 +194,8 @@ private:
void createDirectoryActions(const Core::Context &context);
void createRepositoryActions(const Core::Context &context);
+ void describe(const QString &source, const QString &id) { m_client.view(source, id); }
+
// Variables
MercurialSettings m_settings;
MercurialClient m_client{&m_settings};
@@ -216,6 +222,30 @@ private:
QString m_submitRepository;
bool m_submitActionTriggered = false;
+
+ VcsSubmitEditorFactory submitEditorFactory {
+ submitEditorParameters,
+ [] { return new CommitEditor; },
+ this
+ };
+
+ VcsEditorFactory logEditorFactory {
+ &logEditorParameters,
+ [this] { return new MercurialEditorWidget(&m_client); },
+ std::bind(&MercurialPluginPrivate::describe, this, _1, _2)
+ };
+
+ VcsEditorFactory annotateEditorFactory {
+ &annotateEditorParameters,
+ [this] { return new MercurialEditorWidget(&m_client); },
+ std::bind(&MercurialPluginPrivate::describe, this, _1, _2)
+ };
+
+ VcsEditorFactory diffEditorFactory {
+ &diffEditorParameters,
+ [this] { return new MercurialEditorWidget(&m_client); },
+ std::bind(&MercurialPluginPrivate::describe, this, _1, _2)
+ };
};
static MercurialPluginPrivate *dd = nullptr;
@@ -249,15 +279,6 @@ MercurialPluginPrivate::MercurialPluginPrivate()
connect(&m_client, &VcsBaseClient::changed, this, &MercurialPluginPrivate::changed);
connect(&m_client, &MercurialClient::needUpdate, this, &MercurialPluginPrivate::update);
- const auto describeFunc = [this](const QString &source, const QString &id) {
- m_client.view(source, id);
- };
- const auto widgetCreator = [this] { return new MercurialEditorWidget(&m_client); };
- for (auto &editor : editorParameters)
- new VcsEditorFactory(&editor, widgetCreator, describeFunc, this);
-
- new VcsSubmitEditorFactory(submitEditorParameters, [] { return new CommitEditor; }, this, this);
-
const QString prefix = QLatin1String("hg");
m_commandLocator = new Core::CommandLocator("Mercurial", prefix, prefix, this);
@@ -881,7 +902,7 @@ void MercurialPlugin::testDiffFileResolving_data()
void MercurialPlugin::testDiffFileResolving()
{
- VcsBaseEditorWidget::testDiffFileResolving(editorParameters[2].id);
+ VcsBaseEditorWidget::testDiffFileResolving(diffEditorParameters.id);
}
void MercurialPlugin::testLogResolving()
@@ -901,7 +922,7 @@ void MercurialPlugin::testLogResolving()
"date: Sat Jan 19 04:08:16 2013 +0100\n"
"summary: test-rebase: add another test for rebase with multiple roots\n"
);
- VcsBaseEditorWidget::testLogResolving(editorParameters[0].id, data, "18473:692cbda1eb50", "18472:37100f30590f");
+ VcsBaseEditorWidget::testLogResolving(logEditorParameters.id, data, "18473:692cbda1eb50", "18472:37100f30590f");
}
#endif