aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/bazaar/bazaarplugin.cpp120
-rw-r--r--src/plugins/bazaar/bazaarplugin.h41
-rw-r--r--src/plugins/bazaar/optionspage.cpp4
-rw-r--r--src/plugins/bazaar/uncommitdialog.cpp2
-rw-r--r--src/plugins/clearcase/activityselector.cpp2
-rw-r--r--src/plugins/clearcase/activityselector.h4
-rw-r--r--src/plugins/clearcase/clearcasecontrol.cpp2
-rw-r--r--src/plugins/clearcase/clearcasecontrol.h6
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp353
-rw-r--r--src/plugins/clearcase/clearcaseplugin.h65
-rw-r--r--src/plugins/clearcase/clearcasesync.cpp2
-rw-r--r--src/plugins/clearcase/clearcasesync.h4
-rw-r--r--src/plugins/clearcase/settingspage.cpp4
-rw-r--r--src/plugins/cvs/cvscontrol.cpp4
-rw-r--r--src/plugins/cvs/cvscontrol.h6
-rw-r--r--src/plugins/cvs/cvsplugin.cpp187
-rw-r--r--src/plugins/cvs/cvsplugin.h37
-rw-r--r--src/plugins/cvs/settingspage.cpp2
-rw-r--r--src/plugins/git/branchadddialog.cpp2
-rw-r--r--src/plugins/git/branchview.cpp38
-rw-r--r--src/plugins/git/changeselectiondialog.cpp6
-rw-r--r--src/plugins/git/gerrit/branchcombobox.cpp4
-rw-r--r--src/plugins/git/gerrit/gerritdialog.cpp2
-rw-r--r--src/plugins/git/gerrit/gerritmodel.cpp2
-rw-r--r--src/plugins/git/gerrit/gerritplugin.cpp27
-rw-r--r--src/plugins/git/gerrit/gerritplugin.h2
-rw-r--r--src/plugins/git/gerrit/gerritpushdialog.cpp14
-rw-r--r--src/plugins/git/gerrit/gerritremotechooser.cpp2
-rw-r--r--src/plugins/git/gerrit/gerritserver.cpp4
-rw-r--r--src/plugins/git/gitclient.cpp46
-rw-r--r--src/plugins/git/giteditor.cpp28
-rw-r--r--src/plugins/git/gitgrep.cpp6
-rw-r--r--src/plugins/git/gitplugin.cpp287
-rw-r--r--src/plugins/git/gitplugin.h55
-rw-r--r--src/plugins/git/gitsubmiteditor.cpp12
-rw-r--r--src/plugins/git/logchangedialog.cpp8
-rw-r--r--src/plugins/git/mergetool.cpp6
-rw-r--r--src/plugins/git/remotedialog.cpp8
-rw-r--r--src/plugins/git/remotemodel.cpp10
-rw-r--r--src/plugins/git/settingspage.cpp2
-rw-r--r--src/plugins/git/stashdialog.cpp20
-rw-r--r--src/plugins/mercurial/mercurialclient.cpp2
-rw-r--r--src/plugins/mercurial/mercurialeditor.cpp4
-rw-r--r--src/plugins/mercurial/mercurialplugin.cpp135
-rw-r--r--src/plugins/mercurial/mercurialplugin.h42
-rw-r--r--src/plugins/mercurial/optionspage.cpp4
-rw-r--r--src/plugins/mercurial/srcdestdialog.cpp3
-rw-r--r--src/plugins/perforce/perforceeditor.cpp2
-rw-r--r--src/plugins/perforce/perforceplugin.cpp219
-rw-r--r--src/plugins/perforce/perforceplugin.h36
-rw-r--r--src/plugins/perforce/perforcesubmiteditor.h2
-rw-r--r--src/plugins/perforce/perforceversioncontrol.cpp2
-rw-r--r--src/plugins/perforce/perforceversioncontrol.h6
-rw-r--r--src/plugins/perforce/settingspage.cpp4
-rw-r--r--src/plugins/subversion/settingspage.cpp2
-rw-r--r--src/plugins/subversion/subversionclient.cpp2
-rw-r--r--src/plugins/subversion/subversioncontrol.cpp6
-rw-r--r--src/plugins/subversion/subversioncontrol.h6
-rw-r--r--src/plugins/subversion/subversionplugin.cpp167
-rw-r--r--src/plugins/subversion/subversionplugin.h35
-rw-r--r--src/plugins/vcsbase/basevcssubmiteditorfactory.cpp4
-rw-r--r--src/plugins/vcsbase/basevcssubmiteditorfactory.h4
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.cpp112
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.h23
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.cpp2
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.h4
66 files changed, 1196 insertions, 1068 deletions
diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp
index a9ca44e738..7db4b212d7 100644
--- a/src/plugins/bazaar/bazaarplugin.cpp
+++ b/src/plugins/bazaar/bazaarplugin.cpp
@@ -129,24 +129,36 @@ const VcsBaseSubmitEditorParameters submitEditorParameters = {
};
-BazaarPlugin *BazaarPlugin::m_instance = nullptr;
+static BazaarPluginPrivate *dd = nullptr;
-BazaarPlugin::BazaarPlugin()
+BazaarPluginPrivate::~BazaarPluginPrivate()
{
- m_instance = this;
+ delete m_client;
+ m_client = nullptr;
}
BazaarPlugin::~BazaarPlugin()
{
- delete m_client;
- m_client = nullptr;
- m_instance = nullptr;
+ delete dd;
+ dd = nullptr;
}
bool BazaarPlugin::initialize(const QStringList &arguments, QString *errorMessage)
{
Q_UNUSED(arguments)
Q_UNUSED(errorMessage)
+ dd = new BazaarPluginPrivate;
+ return true;
+}
+
+void BazaarPlugin::extensionsInitialized()
+{
+ dd->extensionsInitialized();
+}
+
+BazaarPluginPrivate::BazaarPluginPrivate()
+{
+ dd = this;
Context context(Constants::BAZAAR_CONTEXT);
@@ -173,21 +185,19 @@ bool BazaarPlugin::initialize(const QStringList &arguments, QString *errorMessag
m_commandLocator = new CommandLocator("Bazaar", prefix, prefix, this);
createMenu(context);
-
- return true;
}
-BazaarPlugin *BazaarPlugin::instance()
+BazaarPluginPrivate *BazaarPluginPrivate::instance()
{
- return m_instance;
+ return dd;
}
-BazaarClient *BazaarPlugin::client() const
+BazaarClient *BazaarPluginPrivate::client() const
{
return m_client;
}
-void BazaarPlugin::createMenu(const Context &context)
+void BazaarPluginPrivate::createMenu(const Context &context)
{
// Create menu item for Bazaar
m_bazaarContainer = ActionManager::createMenu("Bazaar.BazaarMenu");
@@ -207,12 +217,12 @@ void BazaarPlugin::createMenu(const Context &context)
m_menuAction = m_bazaarContainer->menu()->menuAction();
}
-void BazaarPlugin::createFileActions(const Context &context)
+void BazaarPluginPrivate::createFileActions(const Context &context)
{
m_annotateFile = new ParameterAction(tr("Annotate Current File"), tr("Annotate \"%1\""), ParameterAction::EnabledWithParameter, this);
Command *command = ActionManager::registerAction(m_annotateFile, ANNOTATE, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_annotateFile, &QAction::triggered, this, &BazaarPlugin::annotateCurrentFile);
+ connect(m_annotateFile, &QAction::triggered, this, &BazaarPluginPrivate::annotateCurrentFile);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -220,7 +230,7 @@ void BazaarPlugin::createFileActions(const Context &context)
command = ActionManager::registerAction(m_diffFile, DIFF, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Z,Meta+D") : tr("ALT+Z,Alt+D")));
- connect(m_diffFile, &QAction::triggered, this, &BazaarPlugin::diffCurrentFile);
+ connect(m_diffFile, &QAction::triggered, this, &BazaarPluginPrivate::diffCurrentFile);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -228,7 +238,7 @@ void BazaarPlugin::createFileActions(const Context &context)
command = ActionManager::registerAction(m_logFile, LOG, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Z,Meta+L") : tr("ALT+Z,Alt+L")));
- connect(m_logFile, &QAction::triggered, this, &BazaarPlugin::logCurrentFile);
+ connect(m_logFile, &QAction::triggered, this, &BazaarPluginPrivate::logCurrentFile);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -236,7 +246,7 @@ void BazaarPlugin::createFileActions(const Context &context)
command = ActionManager::registerAction(m_statusFile, STATUS, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Z,Meta+S") : tr("ALT+Z,Alt+S")));
- connect(m_statusFile, &QAction::triggered, this, &BazaarPlugin::statusCurrentFile);
+ connect(m_statusFile, &QAction::triggered, this, &BazaarPluginPrivate::statusCurrentFile);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -245,47 +255,47 @@ void BazaarPlugin::createFileActions(const Context &context)
m_addAction = new ParameterAction(tr("Add"), tr("Add \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_addAction, ADD, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_addAction, &QAction::triggered, this, &BazaarPlugin::addCurrentFile);
+ connect(m_addAction, &QAction::triggered, this, &BazaarPluginPrivate::addCurrentFile);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_deleteAction = new ParameterAction(tr("Delete..."), tr("Delete \"%1\"..."), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_deleteAction, DELETE, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_deleteAction, &QAction::triggered, this, &BazaarPlugin::promptToDeleteCurrentFile);
+ connect(m_deleteAction, &QAction::triggered, this, &BazaarPluginPrivate::promptToDeleteCurrentFile);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_revertFile = new ParameterAction(tr("Revert Current File..."), tr("Revert \"%1\"..."), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_revertFile, REVERT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_revertFile, &QAction::triggered, this, &BazaarPlugin::revertCurrentFile);
+ connect(m_revertFile, &QAction::triggered, this, &BazaarPluginPrivate::revertCurrentFile);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
}
-void BazaarPlugin::addCurrentFile()
+void BazaarPluginPrivate::addCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->synchronousAdd(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void BazaarPlugin::annotateCurrentFile()
+void BazaarPluginPrivate::annotateCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->annotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void BazaarPlugin::diffCurrentFile()
+void BazaarPluginPrivate::diffCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->diff(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()));
}
-void BazaarPlugin::logCurrentFile()
+void BazaarPluginPrivate::logCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -293,7 +303,7 @@ void BazaarPlugin::logCurrentFile()
QStringList(), true);
}
-void BazaarPlugin::revertCurrentFile()
+void BazaarPluginPrivate::revertCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -308,53 +318,53 @@ void BazaarPlugin::revertCurrentFile()
revertUi.revisionLineEdit->text());
}
-void BazaarPlugin::statusCurrentFile()
+void BazaarPluginPrivate::statusCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->status(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void BazaarPlugin::createDirectoryActions(const Context &context)
+void BazaarPluginPrivate::createDirectoryActions(const Context &context)
{
auto action = new QAction(tr("Diff"), this);
m_repositoryActionList.append(action);
Command *command = ActionManager::registerAction(action, DIFFMULTI, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::diffRepository);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::diffRepository);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Log"), this);
m_repositoryActionList.append(action);
command = ActionManager::registerAction(action, LOGMULTI, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::logRepository);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::logRepository);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Revert..."), this);
m_repositoryActionList.append(action);
command = ActionManager::registerAction(action, REVERTMULTI, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::revertAll);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::revertAll);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Status"), this);
m_repositoryActionList.append(action);
command = ActionManager::registerAction(action, STATUSMULTI, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::statusMulti);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::statusMulti);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
}
-void BazaarPlugin::diffRepository()
+void BazaarPluginPrivate::diffRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_client->diff(state.topLevel());
}
-void BazaarPlugin::logRepository()
+void BazaarPluginPrivate::logRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -363,7 +373,7 @@ void BazaarPlugin::logRepository()
m_client->log(state.topLevel(), QStringList(), extraOptions);
}
-void BazaarPlugin::revertAll()
+void BazaarPluginPrivate::revertAll()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -376,33 +386,33 @@ void BazaarPlugin::revertAll()
m_client->revertAll(state.topLevel(), revertUi.revisionLineEdit->text());
}
-void BazaarPlugin::statusMulti()
+void BazaarPluginPrivate::statusMulti()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_client->status(state.topLevel());
}
-void BazaarPlugin::createRepositoryActions(const Context &context)
+void BazaarPluginPrivate::createRepositoryActions(const Context &context)
{
auto action = new QAction(tr("Pull..."), this);
m_repositoryActionList.append(action);
Command *command = ActionManager::registerAction(action, PULL, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::pull);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::pull);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Push..."), this);
m_repositoryActionList.append(action);
command = ActionManager::registerAction(action, PUSH, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::push);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::push);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Update..."), this);
m_repositoryActionList.append(action);
command = ActionManager::registerAction(action, UPDATE, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::update);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::update);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -410,24 +420,24 @@ void BazaarPlugin::createRepositoryActions(const Context &context)
m_repositoryActionList.append(action);
command = ActionManager::registerAction(action, COMMIT, context);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Z,Meta+C") : tr("ALT+Z,Alt+C")));
- connect(action, &QAction::triggered, this, &BazaarPlugin::commit);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::commit);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Uncommit..."), this);
m_repositoryActionList.append(action);
command = ActionManager::registerAction(action, UNCOMMIT, context);
- connect(action, &QAction::triggered, this, &BazaarPlugin::uncommit);
+ connect(action, &QAction::triggered, this, &BazaarPluginPrivate::uncommit);
m_bazaarContainer->addAction(command);
m_commandLocator->appendCommand(command);
auto createRepositoryAction = new QAction(tr("Create Repository..."), this);
command = ActionManager::registerAction(createRepositoryAction, CREATE_REPOSITORY, context);
- connect(createRepositoryAction, &QAction::triggered, this, &BazaarPlugin::createRepository);
+ connect(createRepositoryAction, &QAction::triggered, this, &BazaarPluginPrivate::createRepository);
m_bazaarContainer->addAction(command);
}
-void BazaarPlugin::pull()
+void BazaarPluginPrivate::pull()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -447,7 +457,7 @@ void BazaarPlugin::pull()
m_client->synchronousPull(state.topLevel(), dialog.branchLocation(), extraOptions);
}
-void BazaarPlugin::push()
+void BazaarPluginPrivate::push()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -469,7 +479,7 @@ void BazaarPlugin::push()
m_client->synchronousPush(state.topLevel(), dialog.branchLocation(), extraOptions);
}
-void BazaarPlugin::update()
+void BazaarPluginPrivate::update()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -483,7 +493,7 @@ void BazaarPlugin::update()
m_client->update(state.topLevel(), revertUi.revisionLineEdit->text());
}
-void BazaarPlugin::commit()
+void BazaarPluginPrivate::commit()
{
if (!promptBeforeCommit())
return;
@@ -497,16 +507,16 @@ void BazaarPlugin::commit()
m_submitRepository = state.topLevel();
QObject::connect(m_client, &VcsBaseClient::parsedStatus,
- this, &BazaarPlugin::showCommitWidget);
+ this, &BazaarPluginPrivate::showCommitWidget);
// The "--short" option allows to easily parse status output
m_client->emitParsedStatus(m_submitRepository, QStringList(QLatin1String("--short")));
}
-void BazaarPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &status)
+void BazaarPluginPrivate::showCommitWidget(const QList<VcsBaseClient::StatusItem> &status)
{
//Once we receive our data release the connection so it can be reused elsewhere
QObject::disconnect(m_client, &VcsBaseClient::parsedStatus,
- this, &BazaarPlugin::showCommitWidget);
+ this, &BazaarPluginPrivate::showCommitWidget);
if (status.isEmpty()) {
VcsOutputWindow::appendError(tr("There are no changes to commit."));
@@ -537,7 +547,7 @@ void BazaarPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &stat
setSubmitEditor(commitEditor);
connect(commitEditor, &VcsBaseSubmitEditor::diffSelectedFiles,
- this, &BazaarPlugin::diffFromEditorSelected);
+ this, &BazaarPluginPrivate::diffFromEditorSelected);
commitEditor->setCheckScriptWorkingDirectory(m_submitRepository);
const QString msg = tr("Commit changes for \"%1\".").
@@ -551,7 +561,7 @@ void BazaarPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &stat
s.stringValue(BazaarSettings::userEmailKey), status);
}
-void BazaarPlugin::diffFromEditorSelected(const QStringList &files)
+void BazaarPluginPrivate::diffFromEditorSelected(const QStringList &files)
{
m_client->diff(m_submitRepository, files);
}
@@ -612,7 +622,7 @@ void BazaarPlugin::testLogResolving()
}
#endif
-void BazaarPlugin::commitFromEditor()
+void BazaarPluginPrivate::commitFromEditor()
{
// Close the submit editor
m_submitActionTriggered = true;
@@ -620,7 +630,7 @@ void BazaarPlugin::commitFromEditor()
EditorManager::closeDocument(submitEditor()->document());
}
-void BazaarPlugin::uncommit()
+void BazaarPluginPrivate::uncommit()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -630,7 +640,7 @@ void BazaarPlugin::uncommit()
m_client->synchronousUncommit(state.topLevel(), dialog.revision(), dialog.extraOptions());
}
-bool BazaarPlugin::submitEditorAboutToClose()
+bool BazaarPluginPrivate::submitEditorAboutToClose()
{
auto commitEditor = qobject_cast<CommitEditor *>(submitEditor());
QTC_ASSERT(commitEditor, return true);
@@ -682,7 +692,7 @@ bool BazaarPlugin::submitEditorAboutToClose()
return true;
}
-void BazaarPlugin::updateActions(VcsBasePlugin::ActionState as)
+void BazaarPluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as)
{
if (!enableMenuAction(as, m_menuAction)) {
m_commandLocator->setEnabled(false);
diff --git a/src/plugins/bazaar/bazaarplugin.h b/src/plugins/bazaar/bazaarplugin.h
index 51d2d921b1..cb77e886b7 100644
--- a/src/plugins/bazaar/bazaarplugin.h
+++ b/src/plugins/bazaar/bazaarplugin.h
@@ -51,29 +51,20 @@ class BazaarClient;
class BazaarControl;
class BazaarEditorWidget;
-class BazaarPlugin : public VcsBase::VcsBasePlugin
+class BazaarPluginPrivate final : public VcsBase::VcsBasePluginPrivate
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Bazaar.json")
public:
- BazaarPlugin();
- ~BazaarPlugin() override;
- bool initialize(const QStringList &arguments, QString *errorMessage) override;
+ BazaarPluginPrivate();
+ ~BazaarPluginPrivate() final;
- static BazaarPlugin *instance();
+ static BazaarPluginPrivate *instance();
BazaarClient *client() const;
protected:
- void updateActions(VcsBase::VcsBasePlugin::ActionState) override;
- bool submitEditorAboutToClose() override;
-
-#ifdef WITH_TESTS
-private slots:
- void testDiffFileResolving_data();
- void testDiffFileResolving();
- void testLogResolving();
-#endif
+ void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) final;
+ bool submitEditorAboutToClose() final;
private:
// File menu action slots
@@ -107,8 +98,6 @@ private:
void createRepositoryActions(const Core::Context &context);
// Variables
- static BazaarPlugin *m_instance;
-
BazaarSettings m_bazaarSettings;
BazaarClient *m_client = nullptr;
@@ -132,5 +121,23 @@ private:
bool m_submitActionTriggered = false;
};
+class BazaarPlugin final : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Bazaar.json")
+
+ ~BazaarPlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *errorMessage) final;
+ void extensionsInitialized() final;
+
+#ifdef WITH_TESTS
+private slots:
+ void testDiffFileResolving_data();
+ void testDiffFileResolving();
+ void testLogResolving();
+#endif
+};
+
} // namespace Internal
} // namespace Bazaar
diff --git a/src/plugins/bazaar/optionspage.cpp b/src/plugins/bazaar/optionspage.cpp
index 1f890b4f22..dbd72f9110 100644
--- a/src/plugins/bazaar/optionspage.cpp
+++ b/src/plugins/bazaar/optionspage.cpp
@@ -54,7 +54,7 @@ private:
void OptionsPageWidget::apply()
{
- VcsBaseClientSettings s = BazaarPlugin::instance()->client()->settings();
+ VcsBaseClientSettings s = BazaarPluginPrivate::instance()->client()->settings();
s.setValue(BazaarSettings::binaryPathKey, m_ui.commandChooser->rawPath());
s.setValue(BazaarSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
s.setValue(BazaarSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
@@ -68,7 +68,7 @@ void OptionsPageWidget::apply()
}
OptionsPageWidget::OptionsPageWidget(Core::IVersionControl *control)
- : m_control(control), m_client(BazaarPlugin::instance()->client())
+ : m_control(control), m_client(BazaarPluginPrivate::instance()->client())
{
m_ui.setupUi(this);
m_ui.commandChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
diff --git a/src/plugins/bazaar/uncommitdialog.cpp b/src/plugins/bazaar/uncommitdialog.cpp
index 9b18413b73..b144715ca7 100644
--- a/src/plugins/bazaar/uncommitdialog.cpp
+++ b/src/plugins/bazaar/uncommitdialog.cpp
@@ -68,7 +68,7 @@ QString UnCommitDialog::revision() const
void UnCommitDialog::dryRun()
{
- BazaarPlugin* bzrPlugin = BazaarPlugin::instance();
+ BazaarPluginPrivate *bzrPlugin = BazaarPluginPrivate::instance();
QTC_ASSERT(bzrPlugin->currentState().hasTopLevel(), return);
bzrPlugin->client()->synchronousUncommit(bzrPlugin->currentState().topLevel(),
revision(),
diff --git a/src/plugins/clearcase/activityselector.cpp b/src/plugins/clearcase/activityselector.cpp
index 8847f6416a..99d15c1c79 100644
--- a/src/plugins/clearcase/activityselector.cpp
+++ b/src/plugins/clearcase/activityselector.cpp
@@ -39,7 +39,7 @@ using namespace ClearCase;
using namespace ClearCase::Internal;
ActivitySelector::ActivitySelector(QWidget *parent) : QWidget(parent),
- m_plugin(ClearCasePlugin::instance())
+ m_plugin(ClearCasePluginPrivate::instance())
{
QTC_ASSERT(m_plugin->isUcm(), return);
diff --git a/src/plugins/clearcase/activityselector.h b/src/plugins/clearcase/activityselector.h
index 977a79d81e..2e62d1c288 100644
--- a/src/plugins/clearcase/activityselector.h
+++ b/src/plugins/clearcase/activityselector.h
@@ -35,7 +35,7 @@ QT_END_NAMESPACE
namespace ClearCase {
namespace Internal {
-class ClearCasePlugin;
+class ClearCasePluginPrivate;
class ActivitySelector : public QWidget
{
@@ -54,7 +54,7 @@ public:
private:
void userChanged();
- ClearCasePlugin *m_plugin = nullptr;
+ ClearCasePluginPrivate *m_plugin = nullptr;
bool m_changed = false;
QComboBox *m_cmbActivity = nullptr;
};
diff --git a/src/plugins/clearcase/clearcasecontrol.cpp b/src/plugins/clearcase/clearcasecontrol.cpp
index a9dd295518..a0c7053a34 100644
--- a/src/plugins/clearcase/clearcasecontrol.cpp
+++ b/src/plugins/clearcase/clearcasecontrol.cpp
@@ -36,7 +36,7 @@
using namespace ClearCase;
using namespace ClearCase::Internal;
-ClearCaseControl::ClearCaseControl(ClearCasePlugin *plugin) : m_plugin(plugin)
+ClearCaseControl::ClearCaseControl(ClearCasePluginPrivate *plugin) : m_plugin(plugin)
{ }
QString ClearCaseControl::displayName() const
diff --git a/src/plugins/clearcase/clearcasecontrol.h b/src/plugins/clearcase/clearcasecontrol.h
index 6a77fe592e..3db4772fe1 100644
--- a/src/plugins/clearcase/clearcasecontrol.h
+++ b/src/plugins/clearcase/clearcasecontrol.h
@@ -31,14 +31,14 @@
namespace ClearCase {
namespace Internal {
-class ClearCasePlugin;
+class ClearCasePluginPrivate;
// Just a proxy for ClearCasePlugin
class ClearCaseControl : public Core::IVersionControl
{
Q_OBJECT
public:
- explicit ClearCaseControl(ClearCasePlugin *plugin);
+ explicit ClearCaseControl(ClearCasePluginPrivate *plugin);
QString displayName() const final;
Core::Id id() const final;
@@ -69,7 +69,7 @@ public:
void emitConfigurationChanged();
private:
- ClearCasePlugin *const m_plugin;
+ ClearCasePluginPrivate *const m_plugin;
};
} // namespace Internal
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 4281cbade5..41d8654d95 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -152,21 +152,9 @@ static QString debugCodec(const QTextCodec *c)
}
// ------------- ClearCasePlugin
-ClearCasePlugin *ClearCasePlugin::m_clearcasePluginInstance = nullptr;
+static ClearCasePluginPrivate *dd = nullptr;
-ClearCasePlugin::ClearCasePlugin() :
- m_activityMutex(new QMutex),
- m_statusMap(new StatusMap)
-{
- qRegisterMetaType<ClearCase::Internal::FileStatus::Status>("ClearCase::Internal::FileStatus::Status");
- connect(qApp, &QApplication::applicationStateChanged,
- this, [this](Qt::ApplicationState state) {
- if (state == Qt::ApplicationActive)
- syncSlot();
- });
-}
-
-ClearCasePlugin::~ClearCasePlugin()
+ClearCasePluginPrivate::~ClearCasePluginPrivate()
{
cleanCheckInMessageFile();
// wait for sync thread to finish reading activities
@@ -175,7 +163,13 @@ ClearCasePlugin::~ClearCasePlugin()
delete m_activityMutex;
}
-void ClearCasePlugin::cleanCheckInMessageFile()
+ClearCasePlugin::~ClearCasePlugin()
+{
+ delete dd;
+ dd = nullptr;
+}
+
+void ClearCasePluginPrivate::cleanCheckInMessageFile()
{
if (!m_checkInMessageFileName.isEmpty()) {
QFile::remove(m_checkInMessageFileName);
@@ -184,13 +178,13 @@ void ClearCasePlugin::cleanCheckInMessageFile()
}
}
-bool ClearCasePlugin::isCheckInEditorOpen() const
+bool ClearCasePluginPrivate::isCheckInEditorOpen() const
{
return !m_checkInMessageFileName.isEmpty();
}
/// Files in this directories are under ClearCase control
-QStringList ClearCasePlugin::getVobList() const
+QStringList ClearCasePluginPrivate::getVobList() const
{
QStringList args(QLatin1String("lsvob"));
args << QLatin1String("-s");
@@ -202,7 +196,7 @@ QStringList ClearCasePlugin::getVobList() const
/// Get the drive letter of a path
/// Necessary since QDir(directory).rootPath() returns C:/ in all cases
-QString ClearCasePlugin::getDriveLetterOfPath(const QString &directory)
+QString ClearCasePluginPrivate::getDriveLetterOfPath(const QString &directory)
{
// cdUp until we get just the drive letter
QDir dir(directory);
@@ -212,13 +206,13 @@ QString ClearCasePlugin::getDriveLetterOfPath(const QString &directory)
return dir.path();
}
-void ClearCasePlugin::updateStatusForFile(const QString &absFile)
+void ClearCasePluginPrivate::updateStatusForFile(const QString &absFile)
{
setStatus(absFile, getFileStatus(absFile), false);
}
/// Give warning if a derived object is edited
-void ClearCasePlugin::updateEditDerivedObjectWarning(const QString &fileName,
+void ClearCasePluginPrivate::updateEditDerivedObjectWarning(const QString &fileName,
const FileStatus::Status status)
{
if (!isDynamic())
@@ -242,7 +236,7 @@ void ClearCasePlugin::updateEditDerivedObjectWarning(const QString &fileName,
}
}
-FileStatus::Status ClearCasePlugin::getFileStatus(const QString &fileName) const
+FileStatus::Status ClearCasePluginPrivate::getFileStatus(const QString &fileName) const
{
QTC_CHECK(!fileName.isEmpty());
@@ -315,7 +309,7 @@ FileStatus::Status ClearCasePlugin::getFileStatus(const QString &fileName) const
/// snapshot views.
///
/// \returns The ClearCase topLevel/VOB directory for this directory
-QString ClearCasePlugin::ccManagesDirectory(const QString &directory) const
+QString ClearCasePluginPrivate::ccManagesDirectory(const QString &directory) const
{
QStringList args(QLatin1String("pwv"));
const ClearCaseResponse response =
@@ -362,7 +356,7 @@ QString ClearCasePlugin::ccManagesDirectory(const QString &directory) const
}
/// Find the root path of a clearcase view. Precondition: This is a clearcase managed dir
-QString ClearCasePlugin::ccViewRoot(const QString &directory) const
+QString ClearCasePluginPrivate::ccViewRoot(const QString &directory) const
{
QStringList args(QLatin1String("pwv"));
args << QLatin1String("-root");
@@ -385,7 +379,7 @@ QString ClearCasePlugin::ccViewRoot(const QString &directory) const
*
* Handles both dynamic views and snapshot views.
*/
-QString ClearCasePlugin::findTopLevel(const QString &directory) const
+QString ClearCasePluginPrivate::findTopLevel(const QString &directory) const
{
// Do not check again if we've already tested that the dir is managed,
// or if it is a child of a managed dir (top level).
@@ -406,6 +400,28 @@ static const VcsBaseSubmitEditorParameters submitParameters = {
bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *errorMessage)
{
Q_UNUSED(errorMessage)
+ dd = new ClearCasePluginPrivate;
+ return true;
+}
+
+void ClearCasePlugin::extensionsInitialized()
+{
+ dd->extensionsInitialized();
+}
+
+ClearCasePluginPrivate::ClearCasePluginPrivate() :
+ m_activityMutex(new QMutex),
+ m_statusMap(new StatusMap)
+{
+ dd = this;
+
+ qRegisterMetaType<ClearCase::Internal::FileStatus::Status>("ClearCase::Internal::FileStatus::Status");
+ connect(qApp, &QApplication::applicationStateChanged,
+ this, [this](Qt::ApplicationState state) {
+ if (state == Qt::ApplicationActive)
+ syncSlot();
+ });
+
using namespace Constants;
using namespace Core::Constants;
@@ -414,16 +430,15 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
auto vcsCtrl = new ClearCaseControl(this);
initializeVcs(vcsCtrl, context);
- m_clearcasePluginInstance = this;
- connect(ICore::instance(), &ICore::coreAboutToClose, this, &ClearCasePlugin::closing);
+ connect(ICore::instance(), &ICore::coreAboutToClose, this, &ClearCasePluginPrivate::closing);
connect(ProgressManager::instance(), &ProgressManager::allTasksFinished,
- this, &ClearCasePlugin::tasksFinished);
+ this, &ClearCasePluginPrivate::tasksFinished);
m_settings.fromSettings(ICore::settings());
// update view name when changing active project
connect(SessionManager::instance(), &SessionManager::startupProjectChanged,
- this, &ClearCasePlugin::projectChanged);
+ this, &ClearCasePluginPrivate::projectChanged);
new ClearCaseSettingsPage(this);
@@ -458,7 +473,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+O") : tr("Alt+L,Alt+O")));
- connect(m_checkOutAction, &QAction::triggered, this, &ClearCasePlugin::checkOutCurrentFile);
+ connect(m_checkOutAction, &QAction::triggered, this, &ClearCasePluginPrivate::checkOutCurrentFile);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -466,7 +481,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
command = ActionManager::registerAction(m_checkInCurrentAction, CMD_ID_CHECKIN, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+I") : tr("Alt+L,Alt+I")));
- connect(m_checkInCurrentAction, &QAction::triggered, this, &ClearCasePlugin::startCheckInCurrentFile);
+ connect(m_checkInCurrentAction, &QAction::triggered, this, &ClearCasePluginPrivate::startCheckInCurrentFile);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -474,7 +489,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
command = ActionManager::registerAction(m_undoCheckOutAction, CMD_ID_UNDOCHECKOUT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+U") : tr("Alt+L,Alt+U")));
- connect(m_undoCheckOutAction, &QAction::triggered, this, &ClearCasePlugin::undoCheckOutCurrent);
+ connect(m_undoCheckOutAction, &QAction::triggered, this, &ClearCasePluginPrivate::undoCheckOutCurrent);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -482,7 +497,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
command = ActionManager::registerAction(m_undoHijackAction, CMD_ID_UNDOHIJACK, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+R") : tr("Alt+L,Alt+R")));
- connect(m_undoHijackAction, &QAction::triggered, this, &ClearCasePlugin::undoHijackCurrent);
+ connect(m_undoHijackAction, &QAction::triggered, this, &ClearCasePluginPrivate::undoHijackCurrent);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -493,7 +508,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
CMD_ID_DIFF_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+D") : tr("Alt+L,Alt+D")));
- connect(m_diffCurrentAction, &QAction::triggered, this, &ClearCasePlugin::diffCurrentFile);
+ connect(m_diffCurrentAction, &QAction::triggered, this, &ClearCasePluginPrivate::diffCurrentFile);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -503,7 +518,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+H") : tr("Alt+L,Alt+H")));
connect(m_historyCurrentAction, &QAction::triggered, this,
- &ClearCasePlugin::historyCurrentFile);
+ &ClearCasePluginPrivate::historyCurrentFile);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -513,14 +528,14 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+A") : tr("Alt+L,Alt+A")));
connect(m_annotateCurrentAction, &QAction::triggered, this,
- &ClearCasePlugin::annotateCurrentFile);
+ &ClearCasePluginPrivate::annotateCurrentFile);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_addFileAction = new ParameterAction(tr("Add File..."), tr("Add File \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_addFileAction, CMD_ID_ADD_FILE, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_addFileAction, &QAction::triggered, this, &ClearCasePlugin::addCurrentFile);
+ connect(m_addFileAction, &QAction::triggered, this, &ClearCasePluginPrivate::addCurrentFile);
clearcaseMenu->addAction(command);
clearcaseMenu->addSeparator(context);
@@ -528,14 +543,14 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
m_diffActivityAction = new QAction(tr("Diff A&ctivity..."), this);
m_diffActivityAction->setEnabled(false);
command = ActionManager::registerAction(m_diffActivityAction, CMD_ID_DIFF_ACTIVITY, context);
- connect(m_diffActivityAction, &QAction::triggered, this, &ClearCasePlugin::diffActivity);
+ connect(m_diffActivityAction, &QAction::triggered, this, &ClearCasePluginPrivate::diffActivity);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_checkInActivityAction = new ParameterAction(tr("Ch&eck In Activity"), tr("Chec&k In Activity \"%1\"..."), ParameterAction::EnabledWithParameter, this);
m_checkInActivityAction->setEnabled(false);
command = ActionManager::registerAction(m_checkInActivityAction, CMD_ID_CHECKIN_ACTIVITY, context);
- connect(m_checkInActivityAction, &QAction::triggered, this, &ClearCasePlugin::startCheckInActivity);
+ connect(m_checkInActivityAction, &QAction::triggered, this, &ClearCasePluginPrivate::startCheckInActivity);
command->setAttribute(Command::CA_UpdateText);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -544,12 +559,12 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
m_updateIndexAction = new QAction(tr("Update Index"), this);
command = ActionManager::registerAction(m_updateIndexAction, CMD_ID_UPDATEINDEX, context);
- connect(m_updateIndexAction, &QAction::triggered, this, &ClearCasePlugin::updateIndex);
+ connect(m_updateIndexAction, &QAction::triggered, this, &ClearCasePluginPrivate::updateIndex);
clearcaseMenu->addAction(command);
m_updateViewAction = new ParameterAction(tr("Update View"), tr("U&pdate View \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_updateViewAction, CMD_ID_UPDATE_VIEW, context);
- connect(m_updateViewAction, &QAction::triggered, this, &ClearCasePlugin::updateView);
+ connect(m_updateViewAction, &QAction::triggered, this, &ClearCasePluginPrivate::updateView);
command->setAttribute(Command::CA_UpdateText);
clearcaseMenu->addAction(command);
@@ -558,22 +573,20 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
m_checkInAllAction = new QAction(tr("Check In All &Files..."), this);
command = ActionManager::registerAction(m_checkInAllAction, CMD_ID_CHECKIN_ALL, context);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+F") : tr("Alt+L,Alt+F")));
- connect(m_checkInAllAction, &QAction::triggered, this, &ClearCasePlugin::startCheckInAll);
+ connect(m_checkInAllAction, &QAction::triggered, this, &ClearCasePluginPrivate::startCheckInAll);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_statusAction = new QAction(tr("View &Status"), this);
command = ActionManager::registerAction(m_statusAction, CMD_ID_STATUS, context);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+L,Meta+S") : tr("Alt+L,Alt+S")));
- connect(m_statusAction, &QAction::triggered, this, &ClearCasePlugin::viewStatus);
+ connect(m_statusAction, &QAction::triggered, this, &ClearCasePluginPrivate::viewStatus);
clearcaseMenu->addAction(command);
m_commandLocator->appendCommand(command);
-
- return true;
}
// called before closing the submit editor
-bool ClearCasePlugin::submitEditorAboutToClose()
+bool ClearCasePluginPrivate::submitEditorAboutToClose()
{
if (!isCheckInEditorOpen())
return true;
@@ -632,7 +645,7 @@ bool ClearCasePlugin::submitEditorAboutToClose()
return closeEditor;
}
-void ClearCasePlugin::diffCheckInFiles(const QStringList &files)
+void ClearCasePluginPrivate::diffCheckInFiles(const QStringList &files)
{
ccDiffWithPred(m_checkInView, files);
}
@@ -644,7 +657,7 @@ static void setWorkingDirectory(IEditor *editor, const QString &wd)
}
//! retrieve full location of predecessor of \a version
-QString ClearCasePlugin::ccGetPredecessor(const QString &version) const
+QString ClearCasePluginPrivate::ccGetPredecessor(const QString &version) const
{
QStringList args(QLatin1String("describe"));
args << QLatin1String("-fmt") << QLatin1String("%En@@%PSn") << version;
@@ -658,7 +671,7 @@ QString ClearCasePlugin::ccGetPredecessor(const QString &version) const
//! Get a list of paths to active VOBs.
//! Paths are relative to viewRoot
-QStringList ClearCasePlugin::ccGetActiveVobs() const
+QStringList ClearCasePluginPrivate::ccGetActiveVobs() const
{
QStringList res;
QStringList args(QLatin1String("lsvob"));
@@ -696,7 +709,7 @@ QStringList ClearCasePlugin::ccGetActiveVobs() const
return res;
}
-void ClearCasePlugin::checkAndReIndexUnknownFile(const QString &file)
+void ClearCasePluginPrivate::checkAndReIndexUnknownFile(const QString &file)
{
if (isDynamic()) {
// reindex unknown files
@@ -706,12 +719,12 @@ void ClearCasePlugin::checkAndReIndexUnknownFile(const QString &file)
}
// file must be absolute, and using '/' path separator
-FileStatus ClearCasePlugin::vcsStatus(const QString &file) const
+FileStatus ClearCasePluginPrivate::vcsStatus(const QString &file) const
{
return m_statusMap->value(file, FileStatus(FileStatus::Unknown));
}
-QString ClearCasePlugin::ccGetFileActivity(const QString &workingDir, const QString &file)
+QString ClearCasePluginPrivate::ccGetFileActivity(const QString &workingDir, const QString &file)
{
QStringList args(QLatin1String("lscheckout"));
args << QLatin1String("-fmt") << QLatin1String("%[activity]p");
@@ -721,14 +734,14 @@ QString ClearCasePlugin::ccGetFileActivity(const QString &workingDir, const QStr
return response.stdOut;
}
-ClearCaseSubmitEditor *ClearCasePlugin::openClearCaseSubmitEditor(const QString &fileName, bool isUcm)
+ClearCaseSubmitEditor *ClearCasePluginPrivate::openClearCaseSubmitEditor(const QString &fileName, bool isUcm)
{
IEditor *editor =
EditorManager::openEditor(fileName, Constants::CLEARCASECHECKINEDITOR_ID);
auto submitEditor = qobject_cast<ClearCaseSubmitEditor*>(editor);
QTC_ASSERT(submitEditor, return nullptr);
connect(submitEditor, &VcsBaseSubmitEditor::diffSelectedFiles,
- this, &ClearCasePlugin::diffCheckInFiles);
+ this, &ClearCasePluginPrivate::diffCheckInFiles);
submitEditor->setCheckScriptWorkingDirectory(m_checkInView);
submitEditor->setIsUcm(isUcm);
return submitEditor;
@@ -755,7 +768,7 @@ QString fileStatusToText(FileStatus fileStatus)
}
}
-void ClearCasePlugin::updateStatusActions()
+void ClearCasePluginPrivate::updateStatusActions()
{
FileStatus fileStatus = FileStatus::Unknown;
bool hasFile = currentState().hasFile();
@@ -784,7 +797,7 @@ void ClearCasePlugin::updateStatusActions()
m_diffActivityAction->setEnabled(m_viewData.isUcm);
}
-void ClearCasePlugin::updateActions(VcsBasePlugin::ActionState as)
+void ClearCasePluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as)
{
if (!enableMenuAction(as, m_menuAction)) {
m_commandLocator->setEnabled(false);
@@ -817,19 +830,19 @@ void ClearCasePlugin::updateActions(VcsBasePlugin::ActionState as)
updateStatusActions();
}
-QString ClearCasePlugin::commitDisplayName() const
+QString ClearCasePluginPrivate::commitDisplayName() const
{
return tr("Check In");
}
-void ClearCasePlugin::checkOutCurrentFile()
+void ClearCasePluginPrivate::checkOutCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
vcsOpen(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void ClearCasePlugin::addCurrentFile()
+void ClearCasePluginPrivate::addCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -837,7 +850,7 @@ void ClearCasePlugin::addCurrentFile()
}
// Set the FileStatus of file given in absolute path
-void ClearCasePlugin::setStatus(const QString &file, FileStatus::Status status, bool update)
+void ClearCasePluginPrivate::setStatus(const QString &file, FileStatus::Status status, bool update)
{
QTC_CHECK(!file.isEmpty());
m_statusMap->insert(file, FileStatus(status, QFileInfo(file).permissions()));
@@ -846,7 +859,7 @@ void ClearCasePlugin::setStatus(const QString &file, FileStatus::Status status,
QMetaObject::invokeMethod(this, "updateStatusActions");
}
-void ClearCasePlugin::undoCheckOutCurrent()
+void ClearCasePluginPrivate::undoCheckOutCurrent()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -879,7 +892,7 @@ void ClearCasePlugin::undoCheckOutCurrent()
vcsUndoCheckOut(state.topLevel(), file, keep);
}
-bool ClearCasePlugin::vcsUndoCheckOut(const QString &workingDir, const QString &fileName, bool keep)
+bool ClearCasePluginPrivate::vcsUndoCheckOut(const QString &workingDir, const QString &fileName, bool keep)
{
if (Constants::debug)
qDebug() << Q_FUNC_INFO << workingDir << fileName << keep;
@@ -911,7 +924,7 @@ bool ClearCasePlugin::vcsUndoCheckOut(const QString &workingDir, const QString &
* Runs cleartool update -overwrite \a fileName in \a workingDir
* if \a keep is true, renames hijacked files to <filename>.keep. Otherwise it is overwritten
*/
-bool ClearCasePlugin::vcsUndoHijack(const QString &workingDir, const QString &fileName, bool keep)
+bool ClearCasePluginPrivate::vcsUndoHijack(const QString &workingDir, const QString &fileName, bool keep)
{
if (Constants::debug)
qDebug() << Q_FUNC_INFO << workingDir << fileName << keep;
@@ -934,7 +947,7 @@ bool ClearCasePlugin::vcsUndoHijack(const QString &workingDir, const QString &fi
return !response.error;
}
-void ClearCasePlugin::undoHijackCurrent()
+void ClearCasePluginPrivate::undoHijackCurrent()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -966,14 +979,14 @@ void ClearCasePlugin::undoHijackCurrent()
clearCaseControl()->emitFilesChanged(QStringList(state.currentFile()));
}
-QString ClearCasePlugin::ccGetFileVersion(const QString &workingDir, const QString &file) const
+QString ClearCasePluginPrivate::ccGetFileVersion(const QString &workingDir, const QString &file) const
{
QStringList args(QLatin1String("ls"));
args << QLatin1String("-short") << file;
return runCleartoolSync(workingDir, args).trimmed();
}
-void ClearCasePlugin::ccDiffWithPred(const QString &workingDir, const QStringList &files)
+void ClearCasePluginPrivate::ccDiffWithPred(const QString &workingDir, const QStringList &files)
{
if (Constants::debug)
qDebug() << Q_FUNC_INFO << files;
@@ -1028,7 +1041,7 @@ void ClearCasePlugin::ccDiffWithPred(const QString &workingDir, const QStringLis
editor->setProperty("originalFileName", diffname);
}
-QStringList ClearCasePlugin::ccGetActivityVersions(const QString &workingDir, const QString &activity)
+QStringList ClearCasePluginPrivate::ccGetActivityVersions(const QString &workingDir, const QString &activity)
{
QStringList args(QLatin1String("lsactivity"));
args << QLatin1String("-fmt") << QLatin1String("%[versions]Cp") << activity;
@@ -1041,7 +1054,7 @@ QStringList ClearCasePlugin::ccGetActivityVersions(const QString &workingDir, co
return versions;
}
-void ClearCasePlugin::rmdir(const QString &path)
+void ClearCasePluginPrivate::rmdir(const QString &path)
{
QDir dir(path);
foreach (QFileInfo fi, dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)) {
@@ -1054,7 +1067,7 @@ void ClearCasePlugin::rmdir(const QString &path)
}
}
-void ClearCasePlugin::diffActivity()
+void ClearCasePluginPrivate::diffActivity()
{
using FileVerIt = QMap<QString, QStringPair>::Iterator;
@@ -1119,14 +1132,14 @@ void ClearCasePlugin::diffActivity()
setWorkingDirectory(editor, topLevel);
}
-void ClearCasePlugin::diffCurrentFile()
+void ClearCasePluginPrivate::diffCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
ccDiffWithPred(state.topLevel(), QStringList(state.relativeCurrentFile()));
}
-void ClearCasePlugin::startCheckInCurrentFile()
+void ClearCasePluginPrivate::startCheckInCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -1134,7 +1147,7 @@ void ClearCasePlugin::startCheckInCurrentFile()
startCheckIn(state.currentFileTopLevel(), QStringList(nativeFile));
}
-void ClearCasePlugin::startCheckInAll()
+void ClearCasePluginPrivate::startCheckInAll()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -1151,7 +1164,7 @@ void ClearCasePlugin::startCheckInAll()
startCheckIn(topLevel, files);
}
-void ClearCasePlugin::startCheckInActivity()
+void ClearCasePluginPrivate::startCheckInActivity()
{
QTC_ASSERT(isUcm(), return);
@@ -1191,7 +1204,7 @@ void ClearCasePlugin::startCheckInActivity()
/* Start check in of files of a single repository by displaying
* template and files in a submit editor. On closing, the real
* check in will start. */
-void ClearCasePlugin::startCheckIn(const QString &workingDir, const QStringList &files)
+void ClearCasePluginPrivate::startCheckIn(const QString &workingDir, const QStringList &files)
{
if (!promptBeforeCommit())
return;
@@ -1234,21 +1247,21 @@ void ClearCasePlugin::startCheckIn(const QString &workingDir, const QStringList
}
}
-void ClearCasePlugin::historyCurrentFile()
+void ClearCasePluginPrivate::historyCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
history(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()), true);
}
-void ClearCasePlugin::updateView()
+void ClearCasePluginPrivate::updateView()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
ccUpdate(state.topLevel());
}
-void ClearCasePlugin::history(const QString &workingDir,
+void ClearCasePluginPrivate::history(const QString &workingDir,
const QStringList &files,
bool enableAnnotationContextMenu)
{
@@ -1285,7 +1298,7 @@ void ClearCasePlugin::history(const QString &workingDir,
}
}
-void ClearCasePlugin::viewStatus()
+void ClearCasePluginPrivate::viewStatus()
{
if (m_viewData.name.isEmpty())
m_viewData = ccGetView(m_topLevel);
@@ -1316,7 +1329,7 @@ void ClearCasePlugin::viewStatus()
VcsOutputWindow::appendWarning(QLatin1String("No modified files found."));
}
-void ClearCasePlugin::ccUpdate(const QString &workingDir, const QStringList &relativePaths)
+void ClearCasePluginPrivate::ccUpdate(const QString &workingDir, const QStringList &relativePaths)
{
QStringList args(QLatin1String("update"));
args << QLatin1String("-noverwrite");
@@ -1328,14 +1341,14 @@ void ClearCasePlugin::ccUpdate(const QString &workingDir, const QStringList &rel
clearCaseControl()->emitRepositoryChanged(workingDir);
}
-void ClearCasePlugin::annotateCurrentFile()
+void ClearCasePluginPrivate::annotateCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
vcsAnnotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void ClearCasePlugin::vcsAnnotate(const QString &workingDir, const QString &file,
+void ClearCasePluginPrivate::vcsAnnotate(const QString &workingDir, const QString &file,
const QString &revision /* = QString() */,
int lineNumber /* = -1 */) const
{
@@ -1389,7 +1402,7 @@ void ClearCasePlugin::vcsAnnotate(const QString &workingDir, const QString &file
}
}
-void ClearCasePlugin::describe(const QString &source, const QString &changeNr)
+void ClearCasePluginPrivate::describe(const QString &source, const QString &changeNr)
{
const QFileInfo fi(source);
QString topLevel;
@@ -1424,21 +1437,21 @@ void ClearCasePlugin::describe(const QString &source, const QString &changeNr)
}
}
-void ClearCasePlugin::commitFromEditor()
+void ClearCasePluginPrivate::commitFromEditor()
{
m_submitActionTriggered = true;
QTC_ASSERT(submitEditor(), return);
EditorManager::closeDocument(submitEditor()->document());
}
-QString ClearCasePlugin::runCleartoolSync(const QString &workingDir,
+QString ClearCasePluginPrivate::runCleartoolSync(const QString &workingDir,
const QStringList &arguments) const
{
return runCleartool(workingDir, arguments, m_settings.timeOutS, SilentRun).stdOut;
}
ClearCaseResponse
-ClearCasePlugin::runCleartool(const QString &workingDir,
+ClearCasePluginPrivate::runCleartool(const QString &workingDir,
const QStringList &arguments,
int timeOutS,
unsigned flags,
@@ -1466,7 +1479,7 @@ ClearCasePlugin::runCleartool(const QString &workingDir,
return response;
}
-IEditor *ClearCasePlugin::showOutputInEditor(const QString& title, const QString &output,
+IEditor *ClearCasePluginPrivate::showOutputInEditor(const QString& title, const QString &output,
int editorType, const QString &source,
QTextCodec *codec) const
{
@@ -1481,7 +1494,7 @@ IEditor *ClearCasePlugin::showOutputInEditor(const QString& title, const QString
auto e = qobject_cast<ClearCaseEditorWidget*>(editor->widget());
if (!e)
return nullptr;
- connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &ClearCasePlugin::vcsAnnotate);
+ connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &ClearCasePluginPrivate::vcsAnnotate);
e->setForceReadOnly(true);
s.replace(QLatin1Char(' '), QLatin1Char('_'));
e->textDocument()->setFallbackSaveAsFileName(s);
@@ -1492,12 +1505,12 @@ IEditor *ClearCasePlugin::showOutputInEditor(const QString& title, const QString
return editor;
}
-const ClearCaseSettings &ClearCasePlugin::settings() const
+const ClearCaseSettings &ClearCasePluginPrivate::settings() const
{
return m_settings;
}
-void ClearCasePlugin::setSettings(const ClearCaseSettings &s)
+void ClearCasePluginPrivate::setSettings(const ClearCaseSettings &s)
{
if (s != m_settings) {
m_settings = s;
@@ -1506,13 +1519,13 @@ void ClearCasePlugin::setSettings(const ClearCaseSettings &s)
}
}
-ClearCasePlugin *ClearCasePlugin::instance()
+ClearCasePluginPrivate *ClearCasePluginPrivate::instance()
{
- QTC_ASSERT(m_clearcasePluginInstance, return m_clearcasePluginInstance);
- return m_clearcasePluginInstance;
+ QTC_ASSERT(dd, return dd);
+ return dd;
}
-bool ClearCasePlugin::vcsOpen(const QString &workingDir, const QString &fileName)
+bool ClearCasePluginPrivate::vcsOpen(const QString &workingDir, const QString &fileName)
{
QTC_ASSERT(currentState().hasTopLevel(), return false);
@@ -1624,7 +1637,7 @@ bool ClearCasePlugin::vcsOpen(const QString &workingDir, const QString &fileName
return true;
}
-bool ClearCasePlugin::vcsSetActivity(const QString &workingDir, const QString &title, const QString &activity)
+bool ClearCasePluginPrivate::vcsSetActivity(const QString &workingDir, const QString &title, const QString &activity)
{
QStringList args;
args << QLatin1String("setactivity") << activity;
@@ -1640,7 +1653,7 @@ bool ClearCasePlugin::vcsSetActivity(const QString &workingDir, const QString &t
}
// files are received using native separators
-bool ClearCasePlugin::vcsCheckIn(const QString &messageFile, const QStringList &files, const QString &activity,
+bool ClearCasePluginPrivate::vcsCheckIn(const QString &messageFile, const QStringList &files, const QString &activity,
bool isIdentical, bool isPreserve, bool replaceActivity)
{
if (Constants::debug)
@@ -1694,7 +1707,7 @@ bool ClearCasePlugin::vcsCheckIn(const QString &messageFile, const QStringList &
return anySucceeded;
}
-bool ClearCasePlugin::ccFileOp(const QString &workingDir, const QString &title, const QStringList &opArgs,
+bool ClearCasePluginPrivate::ccFileOp(const QString &workingDir, const QString &title, const QStringList &opArgs,
const QString &fileName, const QString &file2)
{
const QString file = QDir::toNativeSeparators(fileName);
@@ -1783,13 +1796,13 @@ static QString baseName(const QString &fileName)
return fileName.mid(fileName.lastIndexOf(QLatin1Char('/')) + 1);
}
-bool ClearCasePlugin::vcsAdd(const QString &workingDir, const QString &fileName)
+bool ClearCasePluginPrivate::vcsAdd(const QString &workingDir, const QString &fileName)
{
return ccFileOp(workingDir, tr("ClearCase Add File %1").arg(baseName(fileName)),
QStringList({"mkelem", "-ci"}), fileName);
}
-bool ClearCasePlugin::vcsDelete(const QString &workingDir, const QString &fileName)
+bool ClearCasePluginPrivate::vcsDelete(const QString &workingDir, const QString &fileName)
{
const QString title(tr("ClearCase Remove Element %1").arg(baseName(fileName)));
if (QMessageBox::warning(ICore::dialogParent(), title, tr("This operation is irreversible. Are you sure?"),
@@ -1800,14 +1813,14 @@ bool ClearCasePlugin::vcsDelete(const QString &workingDir, const QString &fileNa
QStringList({"rmname", "-force"}), fileName);
}
-bool ClearCasePlugin::vcsMove(const QString &workingDir, const QString &from, const QString &to)
+bool ClearCasePluginPrivate::vcsMove(const QString &workingDir, const QString &from, const QString &to)
{
return ccFileOp(workingDir, tr("ClearCase Rename File %1 -> %2")
.arg(baseName(from)).arg(baseName(to)),
QStringList("move"), from, to);
}
-bool ClearCasePlugin::vcsCheckout(const QString & /*directory*/, const QByteArray & /*url*/)
+bool ClearCasePluginPrivate::vcsCheckout(const QString & /*directory*/, const QByteArray & /*url*/)
{
return false;
}
@@ -1815,7 +1828,7 @@ bool ClearCasePlugin::vcsCheckout(const QString & /*directory*/, const QByteArra
///
/// Check if the directory is managed under ClearCase control.
///
-bool ClearCasePlugin::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const
+bool ClearCasePluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const
{
#ifdef WITH_TESTS
// If running with tests and fake ClearTool is enabled, then pretend we manage every directory
@@ -1829,12 +1842,12 @@ bool ClearCasePlugin::managesDirectory(const QString &directory, QString *topLev
return !topLevelFound.isEmpty();
}
-ClearCaseControl *ClearCasePlugin::clearCaseControl() const
+ClearCaseControl *ClearCasePluginPrivate::clearCaseControl() const
{
return static_cast<ClearCaseControl *>(versionControl());
}
-QString ClearCasePlugin::ccGetCurrentActivity() const
+QString ClearCasePluginPrivate::ccGetCurrentActivity() const
{
QStringList args(QLatin1String("lsactivity"));
args << QLatin1String("-cact");
@@ -1842,7 +1855,7 @@ QString ClearCasePlugin::ccGetCurrentActivity() const
return runCleartoolSync(currentState().topLevel(), args);
}
-QList<QStringPair> ClearCasePlugin::ccGetActivities() const
+QList<QStringPair> ClearCasePluginPrivate::ccGetActivities() const
{
QList<QStringPair> result;
// Maintain latest deliver and rebase activities only
@@ -1876,14 +1889,14 @@ QList<QStringPair> ClearCasePlugin::ccGetActivities() const
return result;
}
-void ClearCasePlugin::refreshActivities()
+void ClearCasePluginPrivate::refreshActivities()
{
QMutexLocker locker(m_activityMutex);
m_activity = ccGetCurrentActivity();
m_activities = ccGetActivities();
}
-QList<QStringPair> ClearCasePlugin::activities(int *current) const
+QList<QStringPair> ClearCasePluginPrivate::activities(int *current) const
{
QList<QStringPair> activitiesList;
QString curActivity;
@@ -1907,7 +1920,7 @@ QList<QStringPair> ClearCasePlugin::activities(int *current) const
return activitiesList;
}
-bool ClearCasePlugin::newActivity()
+bool ClearCasePluginPrivate::newActivity()
{
QString workingDir = currentState().topLevel();
QStringList args;
@@ -1929,7 +1942,7 @@ bool ClearCasePlugin::newActivity()
}
// check if the view is UCM
-bool ClearCasePlugin::ccCheckUcm(const QString &viewname, const QString &workingDir) const
+bool ClearCasePluginPrivate::ccCheckUcm(const QString &viewname, const QString &workingDir) const
{
QStringList catcsArgs(QLatin1String("catcs"));
catcsArgs << QLatin1String("-tag") << viewname;
@@ -1939,14 +1952,14 @@ bool ClearCasePlugin::ccCheckUcm(const QString &viewname, const QString &working
return QRegExp(QLatin1String("(^|\\n)ucm\\n")).indexIn(catcsData) != -1;
}
-bool ClearCasePlugin::managesFile(const QString &workingDirectory, const QString &fileName) const
+bool ClearCasePluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const
{
QString absFile = QFileInfo(QDir(workingDirectory), fileName).absoluteFilePath();
const FileStatus::Status status = getFileStatus(absFile);
return status != FileStatus::NotManaged && status != FileStatus::Derived;
}
-ViewData ClearCasePlugin::ccGetView(const QString &workingDir) const
+ViewData ClearCasePluginPrivate::ccGetView(const QString &workingDir) const
{
static QHash<QString, ViewData> viewCache;
@@ -1965,14 +1978,14 @@ ViewData ClearCasePlugin::ccGetView(const QString &workingDir) const
return res;
}
-QString ClearCasePlugin::ccGetComment(const QString &workingDir, const QString &fileName) const
+QString ClearCasePluginPrivate::ccGetComment(const QString &workingDir, const QString &fileName) const
{
QStringList args(QLatin1String("describe"));
args << QLatin1String("-fmt") << QLatin1String("%c") << fileName;
return runCleartoolSync(workingDir, args);
}
-void ClearCasePlugin::updateStreamAndView()
+void ClearCasePluginPrivate::updateStreamAndView()
{
QStringList args(QLatin1String("lsstream"));
args << QLatin1String("-fmt") << QLatin1String("%n\\t%[def_deliver_tgt]Xp");
@@ -1986,7 +1999,7 @@ void ClearCasePlugin::updateStreamAndView()
m_updateViewAction->setParameter(m_viewData.isDynamic ? QString() : m_viewData.name);
}
-void ClearCasePlugin::projectChanged(Project *project)
+void ClearCasePluginPrivate::projectChanged(Project *project)
{
if (m_viewData.name == ccGetView(m_topLevel).name) // New project on same view as old project
return;
@@ -2014,13 +2027,13 @@ void ClearCasePlugin::projectChanged(Project *project)
qDebug() << "stream: " << m_stream << "; intStream: " << m_intStream << "view: " << m_viewData.name;
}
-void ClearCasePlugin::tasksFinished(Id type)
+void ClearCasePluginPrivate::tasksFinished(Id type)
{
if (type == ClearCase::Constants::TASK_INDEX)
m_checkInAllAction->setEnabled(true);
}
-void ClearCasePlugin::updateIndex()
+void ClearCasePluginPrivate::updateIndex()
{
QTC_ASSERT(currentState().hasTopLevel(), return);
ProgressManager::cancelTasks(ClearCase::Constants::TASK_INDEX);
@@ -2037,7 +2050,7 @@ void ClearCasePlugin::updateIndex()
/*! retrieve a \a file (usually of the form path\to\filename.cpp@@\main\ver)
* from cc and save it to a temporary location which is returned
*/
-QString ClearCasePlugin::getFile(const QString &nativeFile, const QString &prefix)
+QString ClearCasePluginPrivate::getFile(const QString &nativeFile, const QString &prefix)
{
QString tempFile;
QDir tempDir = QDir::temp();
@@ -2073,7 +2086,7 @@ QString ClearCasePlugin::getFile(const QString &nativeFile, const QString &prefi
}
// runs external (GNU) diff, and returns the stdout result
-QString ClearCasePlugin::diffExternal(QString file1, QString file2, bool keep)
+QString ClearCasePluginPrivate::diffExternal(QString file1, QString file2, bool keep)
{
QTextCodec *codec = VcsBaseEditor::getCodec(file1);
@@ -2125,7 +2138,7 @@ QString ClearCasePlugin::diffExternal(QString file1, QString file2, bool keep)
}
// runs builtin diff (either graphical or diff_format)
-void ClearCasePlugin::diffGraphical(const QString &file1, const QString &file2)
+void ClearCasePluginPrivate::diffGraphical(const QString &file1, const QString &file2)
{
QStringList args;
bool pred = file2.isEmpty();
@@ -2139,7 +2152,7 @@ void ClearCasePlugin::diffGraphical(const QString &file1, const QString &file2)
QProcess::startDetached(m_settings.ccBinaryPath, args, m_topLevel);
}
-QString ClearCasePlugin::runExtDiff(const QString &workingDir, const QStringList &arguments,
+QString ClearCasePluginPrivate::runExtDiff(const QString &workingDir, const QStringList &arguments,
int timeOutS, QTextCodec *outputCodec)
{
CommandLine diff("diff");
@@ -2156,7 +2169,7 @@ QString ClearCasePlugin::runExtDiff(const QString &workingDir, const QStringList
return response.allOutput();
}
-void ClearCasePlugin::syncSlot()
+void ClearCasePluginPrivate::syncSlot()
{
VcsBasePluginState state = currentState();
if (!state.hasProject() || !state.hasTopLevel())
@@ -2167,22 +2180,23 @@ void ClearCasePlugin::syncSlot()
Utils::runAsync(sync, QStringList());
}
-void ClearCasePlugin::closing()
+void ClearCasePluginPrivate::closing()
{
// prevent syncSlot from being called on shutdown
ProgressManager::cancelTasks(ClearCase::Constants::TASK_INDEX);
disconnect(qApp, &QApplication::applicationStateChanged, nullptr, nullptr);
}
-void ClearCasePlugin::sync(QFutureInterface<void> &future, QStringList files)
+void ClearCasePluginPrivate::sync(QFutureInterface<void> &future, QStringList files)
{
- ClearCasePlugin *plugin = ClearCasePlugin::instance();
+ ClearCasePluginPrivate *plugin = ClearCasePluginPrivate::instance();
ClearCaseSync ccSync(plugin, plugin->m_statusMap);
- connect(&ccSync, &ClearCaseSync::updateStreamAndView, plugin, &ClearCasePlugin::updateStreamAndView);
+ connect(&ccSync, &ClearCaseSync::updateStreamAndView, plugin, &ClearCasePluginPrivate::updateStreamAndView);
ccSync.run(future, files);
}
#ifdef WITH_TESTS
+
void ClearCasePlugin::testDiffFileResolving_data()
{
QTest::addColumn<QByteArray>("header");
@@ -2213,15 +2227,15 @@ void ClearCasePlugin::testLogResolving()
void ClearCasePlugin::initTestCase()
{
- m_tempFile = QDir::currentPath() + QLatin1String("/cc_file.cpp");
- FileSaver srcSaver(m_tempFile);
+ dd->m_tempFile = QDir::currentPath() + QLatin1String("/cc_file.cpp");
+ FileSaver srcSaver(dd->m_tempFile);
srcSaver.write(QByteArray());
srcSaver.finalize();
}
void ClearCasePlugin::cleanupTestCase()
{
- QVERIFY(QFile::remove(m_tempFile));
+ QVERIFY(QFile::remove(dd->m_tempFile));
}
void ClearCasePlugin::testFileStatusParsing_data()
@@ -2231,70 +2245,65 @@ void ClearCasePlugin::testFileStatusParsing_data()
QTest::addColumn<int>("status");
QTest::newRow("CheckedOut")
- << m_tempFile
- << QString(m_tempFile + QLatin1String("@@/main/branch1/CHECKEDOUT from /main/branch1/0 Rule: CHECKEDOUT"))
+ << dd->m_tempFile
+ << QString(dd->m_tempFile + QLatin1String("@@/main/branch1/CHECKEDOUT from /main/branch1/0 Rule: CHECKEDOUT"))
<< static_cast<int>(FileStatus::CheckedOut);
QTest::newRow("CheckedIn")
- << m_tempFile
- << QString(m_tempFile + QLatin1String("@@/main/9 Rule: MY_LABEL_1.6.4 [-mkbranch branch1]"))
+ << dd->m_tempFile
+ << QString(dd->m_tempFile + QLatin1String("@@/main/9 Rule: MY_LABEL_1.6.4 [-mkbranch branch1]"))
<< static_cast<int>(FileStatus::CheckedIn);
QTest::newRow("Hijacked")
- << m_tempFile
- << QString(m_tempFile + QLatin1String("@@/main/9 [hijacked] Rule: MY_LABEL_1.5.33 [-mkbranch myview1]"))
+ << dd->m_tempFile
+ << QString(dd->m_tempFile + QLatin1String("@@/main/9 [hijacked] Rule: MY_LABEL_1.5.33 [-mkbranch myview1]"))
<< static_cast<int>(FileStatus::Hijacked);
QTest::newRow("Missing")
- << m_tempFile
- << QString(m_tempFile + QLatin1String("@@/main/9 [loaded but missing] Rule: MY_LABEL_1.5.33 [-mkbranch myview1]"))
+ << dd->m_tempFile
+ << QString(dd->m_tempFile + QLatin1String("@@/main/9 [loaded but missing] Rule: MY_LABEL_1.5.33 [-mkbranch myview1]"))
<< static_cast<int>(FileStatus::Missing);
}
void ClearCasePlugin::testFileStatusParsing()
{
- ClearCasePlugin *plugin = ClearCasePlugin::instance();
- plugin->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
+ dd->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
QFETCH(QString, filename);
QFETCH(QString, cleartoolLsLine);
QFETCH(int, status);
- ClearCaseSync ccSync(plugin, plugin->m_statusMap);
+ ClearCaseSync ccSync(dd, dd->m_statusMap);
ccSync.verifyParseStatus(filename, cleartoolLsLine, static_cast<FileStatus::Status>(status));
}
void ClearCasePlugin::testFileNotManaged()
{
- ClearCasePlugin *plugin = ClearCasePlugin::instance();
- plugin->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
- ClearCaseSync ccSync(plugin, plugin->m_statusMap);
+ dd->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
+ ClearCaseSync ccSync(dd, dd->m_statusMap);
ccSync.verifyFileNotManaged();
}
void ClearCasePlugin::testFileCheckedOutDynamicView()
{
- ClearCasePlugin *plugin = ClearCasePlugin::instance();
- plugin->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
+ dd->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
- ClearCaseSync ccSync(plugin, plugin->m_statusMap);
+ ClearCaseSync ccSync(dd, dd->m_statusMap);
ccSync.verifyFileCheckedOutDynamicView();
}
void ClearCasePlugin::testFileCheckedInDynamicView()
{
- ClearCasePlugin *plugin = ClearCasePlugin::instance();
- plugin->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
- ClearCaseSync ccSync(plugin, plugin->m_statusMap);
+ dd->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
+ ClearCaseSync ccSync(dd, dd->m_statusMap);
ccSync.verifyFileCheckedInDynamicView();
}
void ClearCasePlugin::testFileNotManagedDynamicView()
{
- ClearCasePlugin *plugin = ClearCasePlugin::instance();
- plugin->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
- ClearCaseSync ccSync(plugin, plugin->m_statusMap);
+ dd->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
+ ClearCaseSync ccSync(dd, dd->m_statusMap);
ccSync.verifyFileNotManagedDynamicView();
}
@@ -2308,7 +2317,7 @@ public:
TestCase(const QString &fileName) :
m_fileName(fileName)
{
- ClearCasePlugin::instance()->setFakeCleartool(true);
+ ClearCasePluginPrivate::instance()->setFakeCleartool(true);
VcsManager::clearVersionControlCache();
FileSaver srcSaver(fileName);
@@ -2337,7 +2346,7 @@ public:
if (!file.isWritable()) // Windows can't delete read only files
file.setPermissions(file.permissions() | QFile::WriteUser);
QVERIFY(file.remove());
- ClearCasePlugin::instance()->setFakeCleartool(false);
+ ClearCasePluginPrivate::instance()->setFakeCleartool(false);
}
private:
@@ -2372,7 +2381,7 @@ void ClearCasePlugin::testStatusActions()
const QString fileName = QDir::currentPath() + QLatin1String("/clearcase_file.cpp");
TestCase testCase(fileName);
- m_viewData = testCase.dummyViewData();
+ dd->m_viewData = testCase.dummyViewData();
QFETCH(int, status);
auto tempStatus = static_cast<FileStatus::Status>(status);
@@ -2380,7 +2389,7 @@ void ClearCasePlugin::testStatusActions()
// special case: file should appear as "Unknown" since there is no entry in the index
// and we don't want to explicitly set the status for this test case
if (tempStatus != FileStatus::Unknown)
- setStatus(fileName, tempStatus, true);
+ dd->setStatus(fileName, tempStatus, true);
QFETCH(bool, checkOutAction);
QFETCH(bool, undoCheckOutAction);
@@ -2390,24 +2399,24 @@ void ClearCasePlugin::testStatusActions()
QFETCH(bool, checkInActivityAction);
QFETCH(bool, diffActivityAction);
- QCOMPARE(m_checkOutAction->isEnabled(), checkOutAction);
- QCOMPARE(m_undoCheckOutAction->isEnabled(), undoCheckOutAction);
- QCOMPARE(m_undoHijackAction->isEnabled(), undoHijackAction);
- QCOMPARE(m_checkInCurrentAction->isEnabled(), checkInCurrentAction);
- QCOMPARE(m_addFileAction->isEnabled(), addFileAction);
- QCOMPARE(m_checkInActivityAction->isEnabled(), checkInActivityAction);
- QCOMPARE(m_diffActivityAction->isEnabled(), diffActivityAction);
+ QCOMPARE(dd->m_checkOutAction->isEnabled(), checkOutAction);
+ QCOMPARE(dd->m_undoCheckOutAction->isEnabled(), undoCheckOutAction);
+ QCOMPARE(dd->m_undoHijackAction->isEnabled(), undoHijackAction);
+ QCOMPARE(dd->m_checkInCurrentAction->isEnabled(), checkInCurrentAction);
+ QCOMPARE(dd->m_addFileAction->isEnabled(), addFileAction);
+ QCOMPARE(dd->m_checkInActivityAction->isEnabled(), checkInActivityAction);
+ QCOMPARE(dd->m_diffActivityAction->isEnabled(), diffActivityAction);
}
void ClearCasePlugin::testVcsStatusDynamicReadonlyNotManaged()
{
// File is not in map, and is read-only
- ClearCasePlugin::instance();
- m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
+ ClearCasePluginPrivate::instance();
+ dd->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
const QString fileName = QDir::currentPath() + QLatin1String("/readonly_notmanaged_file.cpp");
- m_viewData.isDynamic = true;
+ dd->m_viewData.isDynamic = true;
TestCase testCase(fileName);
QFile::setPermissions(fileName, QFile::ReadOwner |
@@ -2415,27 +2424,27 @@ void ClearCasePlugin::testVcsStatusDynamicReadonlyNotManaged()
QFile::ReadGroup |
QFile::ReadOther);
- m_viewData = testCase.dummyViewData();
- m_viewData.isDynamic = true;
+ dd->m_viewData = testCase.dummyViewData();
+ dd->m_viewData.isDynamic = true;
- QCOMPARE(vcsStatus(fileName).status, FileStatus::NotManaged);
+ QCOMPARE(dd->vcsStatus(fileName).status, FileStatus::NotManaged);
}
void ClearCasePlugin::testVcsStatusDynamicNotManaged()
{
- ClearCasePlugin::instance();
- m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
+ ClearCasePluginPrivate::instance();
+ dd->m_statusMap = QSharedPointer<StatusMap>(new StatusMap);
const QString fileName = QDir::currentPath() + QLatin1String("/notmanaged_file.cpp");
- m_viewData.isDynamic = true;
+ dd->m_viewData.isDynamic = true;
TestCase testCase(fileName);
- m_viewData = testCase.dummyViewData();
- m_viewData.isDynamic = true;
+ dd->m_viewData = testCase.dummyViewData();
+ dd->m_viewData.isDynamic = true;
- QCOMPARE(vcsStatus(fileName).status, FileStatus::NotManaged);
+ QCOMPARE(dd->vcsStatus(fileName).status, FileStatus::NotManaged);
}
#endif
diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h
index 3050299237..ca1980ab29 100644
--- a/src/plugins/clearcase/clearcaseplugin.h
+++ b/src/plugins/clearcase/clearcaseplugin.h
@@ -104,18 +104,14 @@ public:
QString root;
};
-class ClearCasePlugin : public VcsBase::VcsBasePlugin
+class ClearCasePluginPrivate final : public VcsBase::VcsBasePluginPrivate
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "ClearCase.json")
-
enum { SilentRun = VcsBase::VcsCommand::NoOutput | VcsBase::VcsCommand::FullySynchronously };
public:
- ClearCasePlugin();
- ~ClearCasePlugin() override;
-
- bool initialize(const QStringList &arguments, QString *error_message) override;
+ ClearCasePluginPrivate();
+ ~ClearCasePluginPrivate() final;
ClearCaseSubmitEditor *openClearCaseSubmitEditor(const QString &fileName, bool isUcm);
@@ -135,7 +131,7 @@ public:
bool managesDirectory(const QString &directory, QString *topLevel = nullptr) const;
bool vcsCheckout(const QString &directory, const QByteArray &url);
- static ClearCasePlugin *instance();
+ static ClearCasePluginPrivate *instance();
QString ccGetCurrentActivity() const;
QList<QStringPair> activities(int *current = nullptr) const;
@@ -168,30 +164,11 @@ public:
void describe(const QString &source, const QString &changeNr);
protected:
- void updateActions(VcsBase::VcsBasePlugin::ActionState) override;
+ void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override;
bool submitEditorAboutToClose() override;
QString ccGet(const QString &workingDir, const QString &file, const QString &prefix = QString());
QList<QStringPair> ccGetActivities() const;
-#ifdef WITH_TESTS
-private slots:
- void initTestCase();
- void cleanupTestCase();
- void testDiffFileResolving_data();
- void testDiffFileResolving();
- void testLogResolving();
- void testFileStatusParsing_data();
- void testFileStatusParsing();
- void testFileNotManaged();
- void testFileCheckedOutDynamicView();
- void testFileCheckedInDynamicView();
- void testFileNotManagedDynamicView();
- void testStatusActions_data();
- void testStatusActions();
- void testVcsStatusDynamicReadonlyNotManaged();
- void testVcsStatusDynamicNotManaged();
-#endif
-
private:
void syncSlot();
Q_INVOKABLE void updateStatusActions();
@@ -287,12 +264,42 @@ private:
QList<QStringPair> m_activities;
QSharedPointer<StatusMap> m_statusMap;
- static ClearCasePlugin *m_clearcasePluginInstance;
+ friend class ClearCasePlugin;
#ifdef WITH_TESTS
bool m_fakeClearTool = false;
QString m_tempFile;
#endif
};
+class ClearCasePlugin final : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "ClearCase.json")
+
+ ~ClearCasePlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *error_message) final;
+ void extensionsInitialized() final;
+
+#ifdef WITH_TESTS
+private slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void testDiffFileResolving_data();
+ void testDiffFileResolving();
+ void testLogResolving();
+ void testFileStatusParsing_data();
+ void testFileStatusParsing();
+ void testFileNotManaged();
+ void testFileCheckedOutDynamicView();
+ void testFileCheckedInDynamicView();
+ void testFileNotManagedDynamicView();
+ void testStatusActions_data();
+ void testStatusActions();
+ void testVcsStatusDynamicReadonlyNotManaged();
+ void testVcsStatusDynamicNotManaged();
+#endif
+};
+
} // namespace Internal
} // namespace ClearCase
diff --git a/src/plugins/clearcase/clearcasesync.cpp b/src/plugins/clearcase/clearcasesync.cpp
index 2b871a0133..7466e2acd9 100644
--- a/src/plugins/clearcase/clearcasesync.cpp
+++ b/src/plugins/clearcase/clearcasesync.cpp
@@ -41,7 +41,7 @@
namespace ClearCase {
namespace Internal {
-ClearCaseSync::ClearCaseSync(ClearCasePlugin *plugin, QSharedPointer<StatusMap> statusMap) :
+ClearCaseSync::ClearCaseSync(ClearCasePluginPrivate *plugin, QSharedPointer<StatusMap> statusMap) :
m_plugin(plugin),
m_statusMap(statusMap)
{ }
diff --git a/src/plugins/clearcase/clearcasesync.h b/src/plugins/clearcase/clearcasesync.h
index e5aeda9258..cff98b4cd2 100644
--- a/src/plugins/clearcase/clearcasesync.h
+++ b/src/plugins/clearcase/clearcasesync.h
@@ -34,7 +34,7 @@ class ClearCaseSync : public QObject
{
Q_OBJECT
public:
- explicit ClearCaseSync(ClearCasePlugin *plugin, QSharedPointer<StatusMap> statusMap);
+ explicit ClearCaseSync(ClearCasePluginPrivate *plugin, QSharedPointer<StatusMap> statusMap);
void run(QFutureInterface<void> &future, QStringList &files);
QStringList updateStatusHotFiles(const QString &viewRoot, int &total);
@@ -55,7 +55,7 @@ signals:
void updateStreamAndView();
private:
- ClearCasePlugin *const m_plugin;
+ ClearCasePluginPrivate *const m_plugin;
QSharedPointer<StatusMap> m_statusMap;
#ifdef WITH_TESTS
diff --git a/src/plugins/clearcase/settingspage.cpp b/src/plugins/clearcase/settingspage.cpp
index 723aa2a8e4..fd6e671270 100644
--- a/src/plugins/clearcase/settingspage.cpp
+++ b/src/plugins/clearcase/settingspage.cpp
@@ -65,7 +65,7 @@ SettingsPageWidget::SettingsPageWidget()
m_ui.commandPathChooser->setExpectedKind(PathChooser::ExistingCommand);
m_ui.commandPathChooser->setHistoryCompleter(QLatin1String("ClearCase.Command.History"));
- ClearCaseSettings s = ClearCasePlugin::instance()->settings();
+ ClearCaseSettings s = ClearCasePluginPrivate::instance()->settings();
m_ui.commandPathChooser->setPath(s.ccCommand);
m_ui.timeOutSpinBox->setValue(s.timeOutS);
@@ -117,7 +117,7 @@ void SettingsPageWidget::apply()
rc.indexOnlyVOBs = m_ui.indexOnlyVOBsEdit->text();
rc.extDiffAvailable = m_ui.externalDiffRadioButton->isEnabled();
- ClearCasePlugin::instance()->setSettings(rc);
+ ClearCasePluginPrivate::instance()->setSettings(rc);
}
ClearCaseSettingsPage::ClearCaseSettingsPage(QObject *parent)
diff --git a/src/plugins/cvs/cvscontrol.cpp b/src/plugins/cvs/cvscontrol.cpp
index 7c499a20f6..03bdb43b77 100644
--- a/src/plugins/cvs/cvscontrol.cpp
+++ b/src/plugins/cvs/cvscontrol.cpp
@@ -41,7 +41,7 @@
using namespace Cvs;
using namespace Cvs::Internal;
-CvsControl::CvsControl(CvsPlugin *plugin) :
+CvsControl::CvsControl(CvsPluginPrivate *plugin) :
m_plugin(plugin)
{ }
@@ -143,7 +143,7 @@ Core::ShellCommand *CvsControl::createInitialCheckoutCommand(const QString &url,
{
QTC_ASSERT(localName == url, return nullptr);
- const CvsSettings settings = CvsPlugin::instance()->client()->settings();
+ const CvsSettings settings = CvsPluginPrivate::instance()->client()->settings();
QStringList args;
args << QLatin1String("checkout") << url << extraArgs;
diff --git a/src/plugins/cvs/cvscontrol.h b/src/plugins/cvs/cvscontrol.h
index b988fb6adc..a0abe96c2d 100644
--- a/src/plugins/cvs/cvscontrol.h
+++ b/src/plugins/cvs/cvscontrol.h
@@ -30,7 +30,7 @@
namespace Cvs {
namespace Internal {
-class CvsPlugin;
+class CvsPluginPrivate;
// Just a proxy for CVSPlugin
class CvsControl : public Core::IVersionControl
@@ -38,7 +38,7 @@ class CvsControl : public Core::IVersionControl
Q_OBJECT
public:
- explicit CvsControl(CvsPlugin *plugin);
+ explicit CvsControl(CvsPluginPrivate *plugin);
QString displayName() const final;
Core::Id id() const final;
@@ -68,7 +68,7 @@ public:
void emitFilesChanged(const QStringList &l);
private:
- CvsPlugin *const m_plugin;
+ CvsPluginPrivate *const m_plugin;
};
} // namespace Internal
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index ef90627e4e..f9445e617e 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -82,13 +82,13 @@ namespace Internal {
static inline QString msgCannotFindTopLevel(const QString &f)
{
- return CvsPlugin::tr("Cannot find repository for \"%1\".").
+ return CvsPluginPrivate::tr("Cannot find repository for \"%1\".").
arg(QDir::toNativeSeparators(f));
}
static inline QString msgLogParsingFailed()
{
- return CvsPlugin::tr("Parsing of the log output failed.");
+ return CvsPluginPrivate::tr("Parsing of the log output failed.");
}
const char CVS_CONTEXT[] = "CVS Context";
@@ -155,21 +155,22 @@ static inline bool messageBoxQuestion(const QString &title, const QString &quest
}
// ------------- CVSPlugin
-CvsPlugin *CvsPlugin::m_cvsPluginInstance = nullptr;
-CvsPlugin::~CvsPlugin()
+static CvsPluginPrivate *dd = nullptr;
+
+CvsPluginPrivate::~CvsPluginPrivate()
{
delete m_client;
cleanCommitMessageFile();
}
-CvsClient *CvsPlugin::client() const
+CvsClient *CvsPluginPrivate::client() const
{
QTC_CHECK(m_client);
return m_client;
}
-void CvsPlugin::cleanCommitMessageFile()
+void CvsPluginPrivate::cleanCommitMessageFile()
{
if (!m_commitMessageFileName.isEmpty()) {
QFile::remove(m_commitMessageFileName);
@@ -177,7 +178,7 @@ void CvsPlugin::cleanCommitMessageFile()
m_commitRepository.clear();
}
}
-bool CvsPlugin::isCommitEditorOpen() const
+bool CvsPluginPrivate::isCommitEditorOpen() const
{
return !m_commitMessageFileName.isEmpty();
}
@@ -189,10 +190,27 @@ static const VcsBaseSubmitEditorParameters submitParameters = {
VcsBaseSubmitEditorParameters::DiffFiles
};
+CvsPlugin::~CvsPlugin()
+{
+ delete dd;
+ dd = nullptr;
+}
+
bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
{
Q_UNUSED(arguments)
Q_UNUSED(errorMessage)
+ dd = new CvsPluginPrivate;
+ return true;
+}
+
+void CvsPlugin::extensionsInitialized()
+{
+ dd->extensionsInitialized();
+}
+
+CvsPluginPrivate::CvsPluginPrivate()
+{
using namespace Core::Constants;
Context context(CVS_CONTEXT);
@@ -200,8 +218,6 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
auto vcsCtrl = new CvsControl(this);
initializeVcs(vcsCtrl, context);
- m_cvsPluginInstance = this;
-
m_client = new CvsClient;
new SettingsPage(versionControl(), this);
@@ -237,7 +253,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
CMD_ID_DIFF_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+C,Meta+D") : tr("Alt+C,Alt+D")));
- connect(m_diffCurrentAction, &QAction::triggered, this, &CvsPlugin::diffCurrentFile);
+ connect(m_diffCurrentAction, &QAction::triggered, this, &CvsPluginPrivate::diffCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -245,7 +261,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = ActionManager::registerAction(m_filelogCurrentAction,
CMD_ID_FILELOG_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_filelogCurrentAction, &QAction::triggered, this, &CvsPlugin::filelogCurrentFile);
+ connect(m_filelogCurrentAction, &QAction::triggered, this, &CvsPluginPrivate::filelogCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -253,7 +269,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = ActionManager::registerAction(m_annotateCurrentAction,
CMD_ID_ANNOTATE_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_annotateCurrentAction, &QAction::triggered, this, &CvsPlugin::annotateCurrentFile);
+ connect(m_annotateCurrentAction, &QAction::triggered, this, &CvsPluginPrivate::annotateCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -264,7 +280,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+C,Meta+A") : tr("Alt+C,Alt+A")));
- connect(m_addAction, &QAction::triggered, this, &CvsPlugin::addCurrentFile);
+ connect(m_addAction, &QAction::triggered, this, &CvsPluginPrivate::addCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -273,7 +289,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
CMD_ID_COMMIT_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+C,Meta+C") : tr("Alt+C,Alt+C")));
- connect(m_commitCurrentAction, &QAction::triggered, this, &CvsPlugin::startCommitCurrentFile);
+ connect(m_commitCurrentAction, &QAction::triggered, this, &CvsPluginPrivate::startCommitCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -281,7 +297,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = ActionManager::registerAction(m_deleteAction, CMD_ID_DELETE_FILE,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_deleteAction, &QAction::triggered, this, &CvsPlugin::promptToDeleteCurrentFile);
+ connect(m_deleteAction, &QAction::triggered, this, &CvsPluginPrivate::promptToDeleteCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -289,7 +305,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = ActionManager::registerAction(m_revertAction, CMD_ID_REVERT,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_revertAction, &QAction::triggered, this, &CvsPlugin::revertCurrentFile);
+ connect(m_revertAction, &QAction::triggered, this, &CvsPluginPrivate::revertCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -298,20 +314,20 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
m_editCurrentAction = new ParameterAction(tr("Edit"), tr("Edit \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_editCurrentAction, CMD_ID_EDIT_FILE, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_editCurrentAction, &QAction::triggered, this, &CvsPlugin::editCurrentFile);
+ connect(m_editCurrentAction, &QAction::triggered, this, &CvsPluginPrivate::editCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_uneditCurrentAction = new ParameterAction(tr("Unedit"), tr("Unedit \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_uneditCurrentAction, CMD_ID_UNEDIT_FILE, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_uneditCurrentAction, &QAction::triggered, this, &CvsPlugin::uneditCurrentFile);
+ connect(m_uneditCurrentAction, &QAction::triggered, this, &CvsPluginPrivate::uneditCurrentFile);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_uneditRepositoryAction = new QAction(tr("Unedit Repository"), this);
command = ActionManager::registerAction(m_uneditRepositoryAction, CMD_ID_UNEDIT_REPOSITORY, context);
- connect(m_uneditRepositoryAction, &QAction::triggered, this, &CvsPlugin::uneditCurrentRepository);
+ connect(m_uneditRepositoryAction, &QAction::triggered, this, &CvsPluginPrivate::uneditCurrentRepository);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -321,7 +337,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = ActionManager::registerAction(m_diffProjectAction, CMD_ID_DIFF_PROJECT,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_diffProjectAction, &QAction::triggered, this, &CvsPlugin::diffProject);
+ connect(m_diffProjectAction, &QAction::triggered, this, &CvsPluginPrivate::diffProject);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -329,28 +345,28 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = ActionManager::registerAction(m_statusProjectAction, CMD_ID_STATUS,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_statusProjectAction, &QAction::triggered, this, &CvsPlugin::projectStatus);
+ connect(m_statusProjectAction, &QAction::triggered, this, &CvsPluginPrivate::projectStatus);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_logProjectAction = new ParameterAction(tr("Log Project"), tr("Log Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_logProjectAction, CMD_ID_PROJECTLOG, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_logProjectAction, &QAction::triggered, this, &CvsPlugin::logProject);
+ connect(m_logProjectAction, &QAction::triggered, this, &CvsPluginPrivate::logProject);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_updateProjectAction = new ParameterAction(tr("Update Project"), tr("Update Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_updateProjectAction, CMD_ID_UPDATE, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_updateProjectAction, &QAction::triggered, this, &CvsPlugin::updateProject);
+ connect(m_updateProjectAction, &QAction::triggered, this, &CvsPluginPrivate::updateProject);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_commitProjectAction = new ParameterAction(tr("Commit Project"), tr("Commit Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_commitProjectAction, CMD_ID_PROJECTCOMMIT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_commitProjectAction, &QAction::triggered, this, &CvsPlugin::commitProject);
+ connect(m_commitProjectAction, &QAction::triggered, this, &CvsPluginPrivate::commitProject);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -359,7 +375,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
m_updateDirectoryAction = new ParameterAction(tr("Update Directory"), tr("Update Directory \"%1\""), Utils::ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_updateDirectoryAction, CMD_ID_UPDATE_DIRECTORY, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_updateDirectoryAction, &QAction::triggered, this, &CvsPlugin::updateDirectory);
+ connect(m_updateDirectoryAction, &QAction::triggered, this, &CvsPluginPrivate::updateDirectory);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -367,7 +383,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = ActionManager::registerAction(m_commitDirectoryAction,
CMD_ID_COMMIT_DIRECTORY, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_commitDirectoryAction, &QAction::triggered, this, &CvsPlugin::startCommitDirectory);
+ connect(m_commitDirectoryAction, &QAction::triggered, this, &CvsPluginPrivate::startCommitDirectory);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -375,45 +391,44 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
m_diffRepositoryAction = new QAction(tr("Diff Repository"), this);
command = ActionManager::registerAction(m_diffRepositoryAction, CMD_ID_REPOSITORYDIFF, context);
- connect(m_diffRepositoryAction, &QAction::triggered, this, &CvsPlugin::diffRepository);
+ connect(m_diffRepositoryAction, &QAction::triggered, this, &CvsPluginPrivate::diffRepository);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_statusRepositoryAction = new QAction(tr("Repository Status"), this);
command = ActionManager::registerAction(m_statusRepositoryAction, CMD_ID_REPOSITORYSTATUS, context);
- connect(m_statusRepositoryAction, &QAction::triggered, this, &CvsPlugin::statusRepository);
+ connect(m_statusRepositoryAction, &QAction::triggered, this, &CvsPluginPrivate::statusRepository);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_logRepositoryAction = new QAction(tr("Repository Log"), this);
command = ActionManager::registerAction(m_logRepositoryAction, CMD_ID_REPOSITORYLOG, context);
- connect(m_logRepositoryAction, &QAction::triggered, this, &CvsPlugin::logRepository);
+ connect(m_logRepositoryAction, &QAction::triggered, this, &CvsPluginPrivate::logRepository);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_updateRepositoryAction = new QAction(tr("Update Repository"), this);
command = ActionManager::registerAction(m_updateRepositoryAction, CMD_ID_REPOSITORYUPDATE, context);
- connect(m_updateRepositoryAction, &QAction::triggered, this, &CvsPlugin::updateRepository);
+ connect(m_updateRepositoryAction, &QAction::triggered, this, &CvsPluginPrivate::updateRepository);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_commitAllAction = new QAction(tr("Commit All Files"), this);
command = ActionManager::registerAction(m_commitAllAction, CMD_ID_COMMIT_ALL,
context);
- connect(m_commitAllAction, &QAction::triggered, this, &CvsPlugin::startCommitAll);
+ connect(m_commitAllAction, &QAction::triggered, this, &CvsPluginPrivate::startCommitAll);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_revertRepositoryAction = new QAction(tr("Revert Repository..."), this);
command = ActionManager::registerAction(m_revertRepositoryAction, CMD_ID_REVERT_ALL,
context);
- connect(m_revertRepositoryAction, &QAction::triggered, this, &CvsPlugin::revertAll);
+ connect(m_revertRepositoryAction, &QAction::triggered, this, &CvsPluginPrivate::revertAll);
cvsMenu->addAction(command);
m_commandLocator->appendCommand(command);
- return true;
}
-bool CvsPlugin::submitEditorAboutToClose()
+bool CvsPluginPrivate::submitEditorAboutToClose()
{
if (!isCommitEditorOpen())
return true;
@@ -458,7 +473,7 @@ bool CvsPlugin::submitEditorAboutToClose()
return closeEditor;
}
-void CvsPlugin::diffCommitFiles(const QStringList &files)
+void CvsPluginPrivate::diffCommitFiles(const QStringList &files)
{
m_client->diff(m_commitRepository, files);
}
@@ -469,18 +484,18 @@ static void setDiffBaseDirectory(IEditor *editor, const QString &db)
ve->setWorkingDirectory(db);
}
-CvsSubmitEditor *CvsPlugin::openCVSSubmitEditor(const QString &fileName)
+CvsSubmitEditor *CvsPluginPrivate::openCVSSubmitEditor(const QString &fileName)
{
IEditor *editor = EditorManager::openEditor(fileName, CVSCOMMITEDITOR_ID);
auto submitEditor = qobject_cast<CvsSubmitEditor*>(editor);
QTC_ASSERT(submitEditor, return nullptr);
connect(submitEditor, &VcsBaseSubmitEditor::diffSelectedFiles,
- this, &CvsPlugin::diffCommitFiles);
+ this, &CvsPluginPrivate::diffCommitFiles);
return submitEditor;
}
-void CvsPlugin::updateActions(VcsBasePlugin::ActionState as)
+void CvsPluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as)
{
if (!enableMenuAction(as, m_menuAction)) {
m_commandLocator->setEnabled(false);
@@ -523,14 +538,14 @@ void CvsPlugin::updateActions(VcsBasePlugin::ActionState as)
m_uneditRepositoryAction->setEnabled(hasTopLevel);
}
-void CvsPlugin::addCurrentFile()
+void CvsPluginPrivate::addCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
vcsAdd(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void CvsPlugin::revertAll()
+void CvsPluginPrivate::revertAll()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -549,7 +564,7 @@ void CvsPlugin::revertAll()
tr("Revert failed: %1").arg(revertResponse.message));
}
-void CvsPlugin::revertCurrentFile()
+void CvsPluginPrivate::revertCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -584,7 +599,7 @@ void CvsPlugin::revertCurrentFile()
cvsVersionControl()->emitFilesChanged(QStringList(state.currentFile()));
}
-void CvsPlugin::diffProject()
+void CvsPluginPrivate::diffProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
@@ -593,14 +608,14 @@ void CvsPlugin::diffProject()
relativeProject.isEmpty() ? QStringList() : QStringList(relativeProject));
}
-void CvsPlugin::diffCurrentFile()
+void CvsPluginPrivate::diffCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->diff(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()));
}
-void CvsPlugin::startCommitCurrentFile()
+void CvsPluginPrivate::startCommitCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -610,14 +625,14 @@ void CvsPlugin::startCommitCurrentFile()
startCommit(state.currentFileDirectory(), state.currentFileName());
}
-void CvsPlugin::startCommitDirectory()
+void CvsPluginPrivate::startCommitDirectory()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
startCommit(state.currentFileDirectory());
}
-void CvsPlugin::startCommitAll()
+void CvsPluginPrivate::startCommitAll()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -627,7 +642,7 @@ void CvsPlugin::startCommitAll()
/* Start commit of files of a single repository by displaying
* template and files in a submit editor. On closing, the real
* commit will start. */
-void CvsPlugin::startCommit(const QString &workingDir, const QString &file)
+void CvsPluginPrivate::startCommit(const QString &workingDir, const QString &file)
{
if (!promptBeforeCommit())
return;
@@ -682,7 +697,7 @@ void CvsPlugin::startCommit(const QString &workingDir, const QString &file)
editor->setStateList(statusOutput);
}
-bool CvsPlugin::commit(const QString &messageFile,
+bool CvsPluginPrivate::commit(const QString &messageFile,
const QStringList &fileList)
{
QStringList args = QStringList(QLatin1String("commit"));
@@ -694,28 +709,28 @@ bool CvsPlugin::commit(const QString &messageFile,
return response.result == CvsResponse::Ok ;
}
-void CvsPlugin::filelogCurrentFile()
+void CvsPluginPrivate::filelogCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
filelog(state.currentFileTopLevel(), state.relativeCurrentFile(), true);
}
-void CvsPlugin::logProject()
+void CvsPluginPrivate::logProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
filelog(state.currentProjectTopLevel(), state.relativeCurrentProject());
}
-void CvsPlugin::logRepository()
+void CvsPluginPrivate::logRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
filelog(state.topLevel());
}
-void CvsPlugin::filelog(const QString &workingDir,
+void CvsPluginPrivate::filelog(const QString &workingDir,
const QString &file,
bool enableAnnotationContextMenu)
{
@@ -747,21 +762,21 @@ void CvsPlugin::filelog(const QString &workingDir,
}
}
-void CvsPlugin::updateDirectory()
+void CvsPluginPrivate::updateDirectory()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
update(state.currentFileDirectory(), QString());
}
-void CvsPlugin::updateProject()
+void CvsPluginPrivate::updateProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
update(state.currentProjectTopLevel(), state.relativeCurrentProject());
}
-bool CvsPlugin::update(const QString &topLevel, const QString &file)
+bool CvsPluginPrivate::update(const QString &topLevel, const QString &file)
{
QStringList args(QLatin1String("update"));
args.push_back(QLatin1String("-dR"));
@@ -776,41 +791,41 @@ bool CvsPlugin::update(const QString &topLevel, const QString &file)
return ok;
}
-void CvsPlugin::editCurrentFile()
+void CvsPluginPrivate::editCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
edit(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()));
}
-void CvsPlugin::uneditCurrentFile()
+void CvsPluginPrivate::uneditCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
unedit(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()));
}
-void CvsPlugin::uneditCurrentRepository()
+void CvsPluginPrivate::uneditCurrentRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
unedit(state.topLevel(), QStringList());
}
-void CvsPlugin::annotateCurrentFile()
+void CvsPluginPrivate::annotateCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
annotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void CvsPlugin::vcsAnnotate(const QString &workingDirectory, const QString &file,
+void CvsPluginPrivate::vcsAnnotate(const QString &workingDirectory, const QString &file,
const QString &revision, int lineNumber)
{
annotate(workingDirectory, file, revision, lineNumber);
}
-bool CvsPlugin::edit(const QString &topLevel, const QStringList &files)
+bool CvsPluginPrivate::edit(const QString &topLevel, const QStringList &files)
{
QStringList args(QLatin1String("edit"));
args.append(files);
@@ -820,7 +835,7 @@ bool CvsPlugin::edit(const QString &topLevel, const QStringList &files)
return response.result == CvsResponse::Ok;
}
-bool CvsPlugin::diffCheckModified(const QString &topLevel, const QStringList &files, bool *modified)
+bool CvsPluginPrivate::diffCheckModified(const QString &topLevel, const QStringList &files, bool *modified)
{
// Quick check for modified files using diff
*modified = false;
@@ -834,7 +849,7 @@ bool CvsPlugin::diffCheckModified(const QString &topLevel, const QStringList &fi
return true;
}
-bool CvsPlugin::unedit(const QString &topLevel, const QStringList &files)
+bool CvsPluginPrivate::unedit(const QString &topLevel, const QStringList &files)
{
bool modified;
// Prompt and use force flag if modified
@@ -860,7 +875,7 @@ bool CvsPlugin::unedit(const QString &topLevel, const QStringList &files)
return response.result == CvsResponse::Ok;
}
-void CvsPlugin::annotate(const QString &workingDir, const QString &file,
+void CvsPluginPrivate::annotate(const QString &workingDir, const QString &file,
const QString &revision /* = QString() */,
int lineNumber /* = -1 */)
{
@@ -897,7 +912,7 @@ void CvsPlugin::annotate(const QString &workingDir, const QString &file,
}
}
-bool CvsPlugin::status(const QString &topLevel, const QString &file, const QString &title)
+bool CvsPluginPrivate::status(const QString &topLevel, const QString &file, const QString &title)
{
QStringList args(QLatin1String("status"));
if (!file.isEmpty())
@@ -910,35 +925,35 @@ bool CvsPlugin::status(const QString &topLevel, const QString &file, const QStri
return ok;
}
-void CvsPlugin::projectStatus()
+void CvsPluginPrivate::projectStatus()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
status(state.currentProjectTopLevel(), state.relativeCurrentProject(), tr("Project status"));
}
-void CvsPlugin::commitProject()
+void CvsPluginPrivate::commitProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
startCommit(state.currentProjectTopLevel(), state.relativeCurrentProject());
}
-void CvsPlugin::diffRepository()
+void CvsPluginPrivate::diffRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_client->diff(state.topLevel(), QStringList());
}
-void CvsPlugin::statusRepository()
+void CvsPluginPrivate::statusRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
status(state.topLevel(), QString(), tr("Repository status"));
}
-void CvsPlugin::updateRepository()
+void CvsPluginPrivate::updateRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -946,7 +961,7 @@ void CvsPlugin::updateRepository()
}
-bool CvsPlugin::describe(const QString &file, const QString &changeNr, QString *errorMessage)
+bool CvsPluginPrivate::describe(const QString &file, const QString &changeNr, QString *errorMessage)
{
QString toplevel;
@@ -958,7 +973,7 @@ bool CvsPlugin::describe(const QString &file, const QString &changeNr, QString *
return describe(toplevel, QDir(toplevel).relativeFilePath(file), changeNr, errorMessage);
}
-bool CvsPlugin::describe(const QString &toplevel, const QString &file, const
+bool CvsPluginPrivate::describe(const QString &toplevel, const QString &file, const
QString &changeNr, QString *errorMessage)
{
@@ -1020,7 +1035,7 @@ bool CvsPlugin::describe(const QString &toplevel, const QString &file, const
// Describe a set of files and revisions by
// concatenating log and diffs to previous revisions
-bool CvsPlugin::describe(const QString &repositoryPath,
+bool CvsPluginPrivate::describe(const QString &repositoryPath,
QList<CvsLogEntry> entries,
QString *errorMessage)
{
@@ -1086,7 +1101,7 @@ bool CvsPlugin::describe(const QString &repositoryPath,
return true;
}
-void CvsPlugin::commitFromEditor()
+void CvsPluginPrivate::commitFromEditor()
{
m_submitActionTriggered = true;
QTC_ASSERT(submitEditor(), return);
@@ -1095,7 +1110,7 @@ void CvsPlugin::commitFromEditor()
// Run CVS. At this point, file arguments must be relative to
// the working directory (see above).
-CvsResponse CvsPlugin::runCvs(const QString &workingDirectory,
+CvsResponse CvsPluginPrivate::runCvs(const QString &workingDirectory,
const QStringList &arguments,
int timeOutS,
unsigned flags,
@@ -1135,7 +1150,7 @@ CvsResponse CvsPlugin::runCvs(const QString &workingDirectory,
return response;
}
-IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &output,
+IEditor *CvsPluginPrivate::showOutputInEditor(const QString& title, const QString &output,
int editorType, const QString &source,
QTextCodec *codec)
{
@@ -1147,7 +1162,7 @@ IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &outp
auto e = qobject_cast<CvsEditorWidget*>(editor->widget());
if (!e)
return nullptr;
- connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &CvsPlugin::annotate);
+ connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &CvsPluginPrivate::annotate);
s.replace(QLatin1Char(' '), QLatin1Char('_'));
e->textDocument()->setFallbackSaveAsFileName(s);
e->setForceReadOnly(true);
@@ -1158,13 +1173,13 @@ IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &outp
return editor;
}
-CvsPlugin *CvsPlugin::instance()
+CvsPluginPrivate *CvsPluginPrivate::instance()
{
- QTC_ASSERT(m_cvsPluginInstance, return m_cvsPluginInstance);
- return m_cvsPluginInstance;
+ QTC_ASSERT(dd, return dd);
+ return dd;
}
-bool CvsPlugin::vcsAdd(const QString &workingDir, const QString &rawFileName)
+bool CvsPluginPrivate::vcsAdd(const QString &workingDir, const QString &rawFileName)
{
QStringList args;
args << QLatin1String("add") << rawFileName;
@@ -1174,7 +1189,7 @@ bool CvsPlugin::vcsAdd(const QString &workingDir, const QString &rawFileName)
return response.result == CvsResponse::Ok;
}
-bool CvsPlugin::vcsDelete(const QString &workingDir, const QString &rawFileName)
+bool CvsPluginPrivate::vcsDelete(const QString &workingDir, const QString &rawFileName)
{
QStringList args;
args << QLatin1String("remove") << QLatin1String("-f") << rawFileName;
@@ -1186,7 +1201,7 @@ bool CvsPlugin::vcsDelete(const QString &workingDir, const QString &rawFileName)
/* CVS has a "CVS" directory in each directory it manages. The top level
* is the first directory under the directory that does not have it. */
-bool CvsPlugin::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const
+bool CvsPluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const
{
if (topLevel)
topLevel->clear();
@@ -1215,7 +1230,7 @@ bool CvsPlugin::managesDirectory(const QString &directory, QString *topLevel /*
return manages;
}
-bool CvsPlugin::managesFile(const QString &workingDirectory, const QString &fileName) const
+bool CvsPluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const
{
QStringList args;
args << QLatin1String("status") << fileName;
@@ -1226,13 +1241,13 @@ bool CvsPlugin::managesFile(const QString &workingDirectory, const QString &file
return !response.stdOut.contains(QLatin1String("Status: Unknown"));
}
-bool CvsPlugin::checkCVSDirectory(const QDir &directory) const
+bool CvsPluginPrivate::checkCVSDirectory(const QDir &directory) const
{
const QString cvsDir = directory.absoluteFilePath(QLatin1String("CVS"));
return QFileInfo(cvsDir).isDir();
}
-CvsControl *CvsPlugin::cvsVersionControl() const
+CvsControl *CvsPluginPrivate::cvsVersionControl() const
{
return static_cast<CvsControl *>(versionControl());
}
diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h
index 9290002569..0329eecca9 100644
--- a/src/plugins/cvs/cvsplugin.h
+++ b/src/plugins/cvs/cvsplugin.h
@@ -62,18 +62,16 @@ public:
QString message;
};
-class CvsPlugin : public VcsBase::VcsBasePlugin
+class CvsPluginPrivate final : public VcsBase::VcsBasePluginPrivate
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "CVS.json")
public:
- ~CvsPlugin() override;
+ CvsPluginPrivate();
+ ~CvsPluginPrivate() final;
CvsClient *client() const;
- bool initialize(const QStringList &arguments, QString *errorMessage) override;
-
CvsSubmitEditor *openCVSSubmitEditor(const QString &fileName);
// IVersionControl
@@ -84,20 +82,13 @@ public:
// cvs 'edit' is used to implement 'open' (cvsnt).
bool edit(const QString &topLevel, const QStringList &files);
- static CvsPlugin *instance();
+ static CvsPluginPrivate *instance();
void vcsAnnotate(const QString &workingDirectory, const QString &file,
const QString &revision, int lineNumber);
-#ifdef WITH_TESTS
-private slots:
- void testDiffFileResolving_data();
- void testDiffFileResolving();
- void testLogResolving();
-#endif
-
protected:
- void updateActions(VcsBase::VcsBasePlugin::ActionState) override;
+ void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override;
bool submitEditorAboutToClose() override;
private:
@@ -190,8 +181,24 @@ private:
QAction *m_menuAction = nullptr;
bool m_submitActionTriggered = false;
+};
+
+class CvsPlugin final : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "CVS.json")
- static CvsPlugin *m_cvsPluginInstance;
+ ~CvsPlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *errorMessage) final;
+ void extensionsInitialized() final;
+
+#ifdef WITH_TESTS
+private slots:
+ void testDiffFileResolving_data();
+ void testDiffFileResolving();
+ void testLogResolving();
+#endif
};
} // namespace Cvs
diff --git a/src/plugins/cvs/settingspage.cpp b/src/plugins/cvs/settingspage.cpp
index ec89dbd9cf..d6a4325f50 100644
--- a/src/plugins/cvs/settingspage.cpp
+++ b/src/plugins/cvs/settingspage.cpp
@@ -88,7 +88,7 @@ void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s)
}
SettingsPage::SettingsPage(Core::IVersionControl *control, QObject *parent) :
- VcsClientOptionsPage(control, CvsPlugin::instance()->client(), parent)
+ VcsClientOptionsPage(control, CvsPluginPrivate::instance()->client(), parent)
{
setId(VcsBase::Constants::VCS_ID_CVS);
setDisplayName(SettingsPageWidget::tr("CVS"));
diff --git a/src/plugins/git/branchadddialog.cpp b/src/plugins/git/branchadddialog.cpp
index 8a131a363c..09e18fbe0e 100644
--- a/src/plugins/git/branchadddialog.cpp
+++ b/src/plugins/git/branchadddialog.cpp
@@ -50,7 +50,7 @@ class BranchNameValidator : public QValidator
public:
BranchNameValidator(const QStringList &localBranches, QObject *parent = nullptr) :
QValidator(parent),
- m_invalidChars(GitPlugin::invalidBranchAndRemoteNamePattern()),
+ m_invalidChars(GitPluginPrivate::invalidBranchAndRemoteNamePattern()),
m_localBranches(localBranches)
{
}
diff --git a/src/plugins/git/branchview.cpp b/src/plugins/git/branchview.cpp
index 62429182c5..efbfd15b61 100644
--- a/src/plugins/git/branchview.cpp
+++ b/src/plugins/git/branchview.cpp
@@ -82,7 +82,7 @@ BranchView::BranchView() :
m_refreshButton(new QToolButton(this)),
m_repositoryLabel(new Utils::ElidingLabel(this)),
m_branchView(new Utils::NavigationTreeView(this)),
- m_model(new BranchModel(GitPlugin::client(), this)),
+ m_model(new BranchModel(GitPluginPrivate::client(), this)),
m_filterModel(new BranchFilterModel(this))
{
m_addButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon());
@@ -122,7 +122,7 @@ BranchView::BranchView() :
this, &BranchView::setIncludeOldEntries);
m_includeTagsAction->setCheckable(true);
m_includeTagsAction->setChecked(
- GitPlugin::client()->settings().boolValue(GitSettings::showTagsKey));
+ GitPluginPrivate::client()->settings().boolValue(GitSettings::showTagsKey));
connect(m_includeTagsAction, &QAction::toggled,
this, &BranchView::setIncludeTags);
@@ -138,7 +138,7 @@ BranchView::BranchView() :
this, &BranchView::expandAndResize);
m_branchView->selectionModel()->clear();
- m_repository = GitPlugin::instance()->currentState().topLevel();
+ m_repository = GitPluginPrivate::instance()->currentState().topLevel();
refreshCurrentRepository();
}
@@ -160,7 +160,7 @@ void BranchView::refresh(const QString &repository, bool force)
m_branchView->setEnabled(false);
} else {
m_repositoryLabel->setText(QDir::toNativeSeparators(m_repository));
- m_repositoryLabel->setToolTip(GitPlugin::msgRepositoryLabel(m_repository));
+ m_repositoryLabel->setToolTip(GitPluginPrivate::msgRepositoryLabel(m_repository));
m_addButton->setToolTip(tr("Add Branch..."));
m_branchView->setEnabled(true);
}
@@ -214,17 +214,17 @@ void BranchView::slotCustomContextMenu(const QPoint &point)
const Utils::optional<QString> remote = m_model->remoteName(index);
if (remote.has_value()) {
contextMenu.addAction(tr("&Fetch"), this, [this, &remote]() {
- GitPlugin::client()->fetch(m_repository, *remote);
+ GitPluginPrivate::client()->fetch(m_repository, *remote);
});
contextMenu.addSeparator();
if (!remote->isEmpty()) {
contextMenu.addAction(tr("Remove &Stale Branches"), this, [this, &remote]() {
- GitPlugin::client()->removeStaleRemoteBranches(m_repository, *remote);
+ GitPluginPrivate::client()->removeStaleRemoteBranches(m_repository, *remote);
});
contextMenu.addSeparator();
}
- contextMenu.addAction(tr("Manage &Remotes..."), GitPlugin::instance(),
- &GitPlugin::manageRemotes);
+ contextMenu.addAction(tr("Manage &Remotes..."), GitPluginPrivate::instance(),
+ &GitPluginPrivate::manageRemotes);
}
if (hasActions) {
if (!currentSelected && (isLocal || isTag))
@@ -237,7 +237,7 @@ void BranchView::slotCustomContextMenu(const QPoint &point)
contextMenu.addAction(tr("&Diff"), this, [this] {
const QString fullName = m_model->fullName(selectedIndex(), true);
if (!fullName.isEmpty())
- GitPlugin::client()->diffBranch(m_repository, fullName);
+ GitPluginPrivate::client()->diffBranch(m_repository, fullName);
});
contextMenu.addAction(tr("&Log"), this, [this] { log(selectedIndex()); });
contextMenu.addSeparator();
@@ -287,7 +287,7 @@ void BranchView::setIncludeOldEntries(bool filter)
void BranchView::setIncludeTags(bool includeTags)
{
- GitPlugin::client()->settings().setValue(GitSettings::showTagsKey, includeTags);
+ GitPluginPrivate::client()->settings().setValue(GitSettings::showTagsKey, includeTags);
refreshCurrentRepository();
}
@@ -302,7 +302,7 @@ QModelIndex BranchView::selectedIndex()
bool BranchView::add()
{
if (m_repository.isEmpty()) {
- GitPlugin::instance()->initRepository();
+ GitPluginPrivate::instance()->initRepository();
return true;
}
@@ -363,7 +363,7 @@ bool BranchView::checkout()
' ' + nextBranch + "-AutoStash ";
BranchCheckoutDialog branchCheckoutDialog(this, currentBranch, nextBranch);
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitPluginPrivate::client();
if (client->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules)) != GitClient::StatusChanged)
branchCheckoutDialog.foundNoLocalChanges();
@@ -498,7 +498,7 @@ bool BranchView::reset(const QByteArray &resetType)
if (QMessageBox::question(this, tr("Git Reset"), tr("Reset branch \"%1\" to \"%2\"?")
.arg(currentName).arg(branchName),
QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) {
- GitPlugin::client()->reset(m_repository, QLatin1String("--" + resetType), branchName);
+ GitPluginPrivate::client()->reset(m_repository, QLatin1String("--" + resetType), branchName);
return true;
}
return false;
@@ -510,7 +510,7 @@ bool BranchView::isFastForwardMerge()
QTC_CHECK(selected != m_model->currentBranch());
const QString branch = m_model->fullName(selected, true);
- return GitPlugin::client()->isFastForwardMerge(m_repository, branch);
+ return GitPluginPrivate::client()->isFastForwardMerge(m_repository, branch);
}
bool BranchView::merge(bool allowFastForward)
@@ -521,7 +521,7 @@ bool BranchView::merge(bool allowFastForward)
QTC_CHECK(selected != m_model->currentBranch());
const QString branch = m_model->fullName(selected, true);
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitPluginPrivate::client();
if (client->beginStashScope(m_repository, "merge", AllowUnstashed))
return client->synchronousMerge(m_repository, branch, allowFastForward);
@@ -536,7 +536,7 @@ void BranchView::rebase()
QTC_CHECK(selected != m_model->currentBranch());
const QString baseBranch = m_model->fullName(selected, true);
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitPluginPrivate::client();
if (client->beginStashScope(m_repository, "rebase"))
client->rebase(m_repository, baseBranch);
}
@@ -549,14 +549,14 @@ bool BranchView::cherryPick()
QTC_CHECK(selected != m_model->currentBranch());
const QString branch = m_model->fullName(selected, true);
- return GitPlugin::client()->synchronousCherryPick(m_repository, branch);
+ return GitPluginPrivate::client()->synchronousCherryPick(m_repository, branch);
}
void BranchView::log(const QModelIndex &idx)
{
const QString branchName = m_model->fullName(idx, true);
if (!branchName.isEmpty())
- GitPlugin::client()->log(m_repository, QString(), false, {branchName});
+ GitPluginPrivate::client()->log(m_repository, QString(), false, {branchName});
}
void BranchView::push()
@@ -572,7 +572,7 @@ void BranchView::push()
const QString remoteBranch = fullTargetName.mid(pos + 1);
const QStringList pushArgs = {remoteName, localBranch + ':' + remoteBranch};
- GitPlugin::client()->push(m_repository, pushArgs);
+ GitPluginPrivate::client()->push(m_repository, pushArgs);
}
BranchViewFactory::BranchViewFactory()
diff --git a/src/plugins/git/changeselectiondialog.cpp b/src/plugins/git/changeselectiondialog.cpp
index 47a55be5c5..9f7585cd0d 100644
--- a/src/plugins/git/changeselectiondialog.cpp
+++ b/src/plugins/git/changeselectiondialog.cpp
@@ -58,12 +58,12 @@ ChangeSelectionDialog::ChangeSelectionDialog(const QString &workingDirectory, Co
QDialog(parent), m_ui(new Ui::ChangeSelectionDialog)
{
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
- m_gitExecutable = GitPlugin::client()->vcsBinary();
+ m_gitExecutable = GitPluginPrivate::client()->vcsBinary();
m_ui->setupUi(this);
m_ui->workingDirectoryChooser->setExpectedKind(PathChooser::ExistingDirectory);
m_ui->workingDirectoryChooser->setPromptDialogTitle(tr("Select Git Directory"));
m_ui->workingDirectoryChooser->setPath(workingDirectory);
- m_gitEnvironment = GitPlugin::client()->processEnvironment();
+ m_gitEnvironment = GitPluginPrivate::client()->processEnvironment();
m_ui->changeNumberEdit->setFocus();
m_ui->changeNumberEdit->selectAll();
@@ -204,7 +204,7 @@ void ChangeSelectionDialog::recalculateCompletion()
if (workingDir.isEmpty())
return;
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitPluginPrivate::client();
VcsBase::VcsCommand *command = client->asyncForEachRefCmd(
workingDir, {"--format=%(refname:short)"});
connect(this, &QObject::destroyed, command, &VcsBase::VcsCommand::abort);
diff --git a/src/plugins/git/gerrit/branchcombobox.cpp b/src/plugins/git/gerrit/branchcombobox.cpp
index 6cc866ce3f..6505066a3b 100644
--- a/src/plugins/git/gerrit/branchcombobox.cpp
+++ b/src/plugins/git/gerrit/branchcombobox.cpp
@@ -36,7 +36,7 @@ BranchComboBox::BranchComboBox(QWidget *parent) : QComboBox(parent)
void BranchComboBox::init(const QString &repository)
{
m_repository = repository;
- QString currentBranch = GitPlugin::client()->synchronousCurrentLocalBranch(repository);
+ QString currentBranch = GitPluginPrivate::client()->synchronousCurrentLocalBranch(repository);
if (currentBranch.isEmpty()) {
m_detached = true;
currentBranch = "HEAD";
@@ -44,7 +44,7 @@ void BranchComboBox::init(const QString &repository)
}
QString output;
const QString branchPrefix("refs/heads/");
- if (!GitPlugin::client()->synchronousForEachRefCmd(
+ if (!GitPluginPrivate::client()->synchronousForEachRefCmd(
m_repository, {"--format=%(refname)", branchPrefix}, &output)) {
return;
}
diff --git a/src/plugins/git/gerrit/gerritdialog.cpp b/src/plugins/git/gerrit/gerritdialog.cpp
index 402c29763a..26babec2a1 100644
--- a/src/plugins/git/gerrit/gerritdialog.cpp
+++ b/src/plugins/git/gerrit/gerritdialog.cpp
@@ -139,7 +139,7 @@ void GerritDialog::setCurrentPath(const QString &path)
if (path == m_repository)
return;
m_repository = path;
- m_ui->repositoryLabel->setText(Git::Internal::GitPlugin::msgRepositoryLabel(path));
+ m_ui->repositoryLabel->setText(Git::Internal::GitPluginPrivate::msgRepositoryLabel(path));
updateRemotes();
}
diff --git a/src/plugins/git/gerrit/gerritmodel.cpp b/src/plugins/git/gerrit/gerritmodel.cpp
index a9be6358cc..694e25dc91 100644
--- a/src/plugins/git/gerrit/gerritmodel.cpp
+++ b/src/plugins/git/gerrit/gerritmodel.cpp
@@ -295,7 +295,7 @@ QueryContext::QueryContext(const QString &query,
connect(&m_process, &QProcess::errorOccurred, this, &QueryContext::processError);
connect(&m_watcher, &QFutureWatcherBase::canceled, this, &QueryContext::terminate);
m_watcher.setFuture(m_progress.future());
- m_process.setProcessEnvironment(Git::Internal::GitPlugin::client()->processEnvironment());
+ m_process.setProcessEnvironment(Git::Internal::GitPluginPrivate::client()->processEnvironment());
m_progress.setProgressRange(0, 1);
m_timer.setInterval(timeOutMS);
diff --git a/src/plugins/git/gerrit/gerritplugin.cpp b/src/plugins/git/gerrit/gerritplugin.cpp
index f0aebf59d8..d3fe5e0d4b 100644
--- a/src/plugins/git/gerrit/gerritplugin.cpp
+++ b/src/plugins/git/gerrit/gerritplugin.cpp
@@ -149,7 +149,7 @@ FetchContext::FetchContext(const QSharedPointer<GerritChange> &change,
connect(&m_watcher, &QFutureWatcher<void>::canceled, this, &FetchContext::terminate);
m_watcher.setFuture(m_progress.future());
m_process.setWorkingDirectory(repository);
- m_process.setProcessEnvironment(GitPlugin::client()->processEnvironment());
+ m_process.setProcessEnvironment(GitPluginPrivate::client()->processEnvironment());
m_process.closeWriteChannel();
}
@@ -241,7 +241,7 @@ void FetchContext::show()
{
const QString title = QString::number(m_change->number) + '/'
+ QString::number(m_change->currentPatchSet.patchSetNumber);
- GitPlugin::client()->show(m_repository, "FETCH_HEAD", title);
+ GitPluginPrivate::client()->show(m_repository, "FETCH_HEAD", title);
}
void FetchContext::cherryPick()
@@ -249,12 +249,12 @@ void FetchContext::cherryPick()
// Point user to errors.
VcsBase::VcsOutputWindow::instance()->popup(IOutputPane::ModeSwitch
| IOutputPane::WithFocus);
- GitPlugin::client()->synchronousCherryPick(m_repository, "FETCH_HEAD");
+ GitPluginPrivate::client()->synchronousCherryPick(m_repository, "FETCH_HEAD");
}
void FetchContext::checkout()
{
- GitPlugin::client()->checkout(m_repository, "FETCH_HEAD");
+ GitPluginPrivate::client()->checkout(m_repository, "FETCH_HEAD");
}
void FetchContext::terminate()
@@ -272,7 +272,7 @@ GerritPlugin::GerritPlugin(QObject *parent)
GerritPlugin::~GerritPlugin() = default;
-bool GerritPlugin::initialize(ActionContainer *ac)
+void GerritPlugin::initialize(ActionContainer *ac)
{
m_parameters->fromSettings(ICore::settings());
@@ -296,7 +296,6 @@ bool GerritPlugin::initialize(ActionContainer *ac)
if (m_dialog)
m_dialog->scheduleUpdateRemotes();
});
- return true;
}
void GerritPlugin::updateActions(const VcsBase::VcsBasePluginState &state)
@@ -330,12 +329,12 @@ void GerritPlugin::push(const QString &topLevel)
dialog.storeTopic();
m_reviewers = dialog.reviewers();
- GitPlugin::client()->push(topLevel, {dialog.selectedRemoteName(), dialog.pushTarget()});
+ GitPluginPrivate::client()->push(topLevel, {dialog.selectedRemoteName(), dialog.pushTarget()});
}
static QString currentRepository()
{
- return GitPlugin::instance()->currentState().topLevel();
+ return GitPluginPrivate::instance()->currentState().topLevel();
}
// Open or raise the Gerrit dialog window.
@@ -377,19 +376,19 @@ void GerritPlugin::push()
Utils::FilePath GerritPlugin::gitBinDirectory()
{
- return GitPlugin::client()->gitBinDirectory();
+ return GitPluginPrivate::client()->gitBinDirectory();
}
// Find the branch of a repository.
QString GerritPlugin::branch(const QString &repository)
{
- return GitPlugin::client()->synchronousCurrentLocalBranch(repository);
+ return GitPluginPrivate::client()->synchronousCurrentLocalBranch(repository);
}
void GerritPlugin::fetch(const QSharedPointer<GerritChange> &change, int mode)
{
// Locate git.
- const Utils::FilePath git = GitPlugin::client()->vcsBinary();
+ const Utils::FilePath git = GitPluginPrivate::client()->vcsBinary();
if (git.isEmpty()) {
VcsBase::VcsOutputWindow::appendError(tr("Git is not available."));
return;
@@ -402,7 +401,7 @@ void GerritPlugin::fetch(const QSharedPointer<GerritChange> &change, int mode)
if (!repository.isEmpty()) {
// Check if remote from a working dir is the same as remote from patch
- QMap<QString, QString> remotesList = GitPlugin::client()->synchronousRemotesList(repository);
+ QMap<QString, QString> remotesList = GitPluginPrivate::client()->synchronousRemotesList(repository);
if (!remotesList.isEmpty()) {
const QStringList remotes = remotesList.values();
for (QString remote : remotes) {
@@ -415,7 +414,7 @@ void GerritPlugin::fetch(const QSharedPointer<GerritChange> &change, int mode)
}
if (!verifiedRepository) {
- const SubmoduleDataMap submodules = GitPlugin::client()->submoduleList(repository);
+ const SubmoduleDataMap submodules = GitPluginPrivate::client()->submoduleList(repository);
for (const SubmoduleData &submoduleData : submodules) {
QString remote = submoduleData.url;
if (remote.endsWith(".git"))
@@ -474,7 +473,7 @@ void GerritPlugin::fetch(const QSharedPointer<GerritChange> &change, int mode)
// Try to find a matching repository for a project by asking the VcsManager.
QString GerritPlugin::findLocalRepository(QString project, const QString &branch) const
{
- const QStringList gitRepositories = VcsManager::repositories(GitPlugin::instance()->gitVersionControl());
+ const QStringList gitRepositories = VcsManager::repositories(GitPluginPrivate::instance()->gitVersionControl());
// Determine key (file name) to look for (qt/qtbase->'qtbase').
const int slashPos = project.lastIndexOf('/');
if (slashPos != -1)
diff --git a/src/plugins/git/gerrit/gerritplugin.h b/src/plugins/git/gerrit/gerritplugin.h
index 3c6ebb5335..356d23e632 100644
--- a/src/plugins/git/gerrit/gerritplugin.h
+++ b/src/plugins/git/gerrit/gerritplugin.h
@@ -55,7 +55,7 @@ public:
explicit GerritPlugin(QObject *parent = nullptr);
~GerritPlugin() override;
- bool initialize(Core::ActionContainer *ac);
+ void initialize(Core::ActionContainer *ac);
static Utils::FilePath gitBinDirectory();
static QString branch(const QString &repository);
diff --git a/src/plugins/git/gerrit/gerritpushdialog.cpp b/src/plugins/git/gerrit/gerritpushdialog.cpp
index 9a251b5eda..305581ae40 100644
--- a/src/plugins/git/gerrit/gerritpushdialog.cpp
+++ b/src/plugins/git/gerrit/gerritpushdialog.cpp
@@ -70,7 +70,7 @@ QString GerritPushDialog::determineRemoteBranch(const QString &localBranch)
QString output;
QString error;
- if (!GitPlugin::client()->synchronousBranchCmd(
+ if (!GitPluginPrivate::client()->synchronousBranchCmd(
m_workingDir, {"-r", "--contains", earliestCommit + '^'}, &output, &error)) {
return QString();
}
@@ -79,7 +79,7 @@ QString GerritPushDialog::determineRemoteBranch(const QString &localBranch)
QString remoteTrackingBranch;
if (localBranch != "HEAD")
- remoteTrackingBranch = GitPlugin::client()->synchronousTrackingBranch(m_workingDir, localBranch);
+ remoteTrackingBranch = GitPluginPrivate::client()->synchronousTrackingBranch(m_workingDir, localBranch);
QString remoteBranch;
for (const QString &reference : refs) {
@@ -103,7 +103,7 @@ void GerritPushDialog::initRemoteBranches()
const QString head = "/HEAD";
QString remotesPrefix("refs/remotes/");
- if (!GitPlugin::client()->synchronousForEachRefCmd(
+ if (!GitPluginPrivate::client()->synchronousForEachRefCmd(
m_workingDir, {"--format=%(refname)\t%(committerdate:raw)", remotesPrefix}, &output)) {
return;
}
@@ -187,7 +187,7 @@ QString GerritPushDialog::calculateChangeRange(const QString &branch)
QString number;
QString error;
- GitPlugin::client()->synchronousRevListCmd(m_workingDir, { remote + ".." + branch, "--count" },
+ GitPluginPrivate::client()->synchronousRevListCmd(m_workingDir, { remote + ".." + branch, "--count" },
&number, &error);
number.chop(1);
@@ -304,7 +304,7 @@ QString GerritPushDialog::pushTarget() const
void GerritPushDialog::storeTopic()
{
const QString branch = m_ui->localBranchComboBox->currentText();
- GitPlugin::client()->setConfigValue(m_workingDir, QString("branch.%1.topic").arg(branch),
+ GitPluginPrivate::client()->setConfigValue(m_workingDir, QString("branch.%1.topic").arg(branch),
selectedTopic());
}
@@ -317,7 +317,7 @@ void GerritPushDialog::setRemoteBranches(bool includeOld)
const QString remoteName = selectedRemoteName();
if (!m_remoteBranches.contains(remoteName)) {
const QStringList remoteBranches =
- GitPlugin::client()->synchronousRepositoryBranches(remoteName, m_workingDir);
+ GitPluginPrivate::client()->synchronousRepositoryBranches(remoteName, m_workingDir);
for (const QString &branch : remoteBranches)
m_remoteBranches.insertMulti(remoteName, qMakePair(branch, QDate()));
if (remoteBranches.isEmpty()) {
@@ -355,7 +355,7 @@ void GerritPushDialog::updateCommits(int index)
{
const QString branch = m_ui->localBranchComboBox->itemText(index);
m_hasLocalCommits = m_ui->commitView->init(m_workingDir, branch, LogChangeWidget::Silent);
- QString topic = GitPlugin::client()->readConfigValue(
+ QString topic = GitPluginPrivate::client()->readConfigValue(
m_workingDir, QString("branch.%1.topic").arg(branch));
if (!topic.isEmpty())
m_ui->topicLineEdit->setText(topic);
diff --git a/src/plugins/git/gerrit/gerritremotechooser.cpp b/src/plugins/git/gerrit/gerritremotechooser.cpp
index 8e5e7cd882..f7c4d779a6 100644
--- a/src/plugins/git/gerrit/gerritremotechooser.cpp
+++ b/src/plugins/git/gerrit/gerritremotechooser.cpp
@@ -104,7 +104,7 @@ bool GerritRemoteChooser::updateRemotes(bool forceReload)
m_remotes.clear();
QString errorMessage; // Mute errors. We'll just fallback to the defaults
const QMap<QString, QString> remotesList =
- Git::Internal::GitPlugin::client()->synchronousRemotesList(m_repository, &errorMessage);
+ Git::Internal::GitPluginPrivate::client()->synchronousRemotesList(m_repository, &errorMessage);
for (auto mapIt = remotesList.cbegin(), end = remotesList.cend(); mapIt != end; ++mapIt) {
GerritServer server;
if (!server.fillFromRemote(mapIt.value(), *m_parameters, forceReload))
diff --git a/src/plugins/git/gerrit/gerritserver.cpp b/src/plugins/git/gerrit/gerritserver.cpp
index f642b1f9d6..c47cd281f3 100644
--- a/src/plugins/git/gerrit/gerritserver.cpp
+++ b/src/plugins/git/gerrit/gerritserver.cpp
@@ -240,7 +240,7 @@ QStringList GerritServer::curlArguments() const
int GerritServer::testConnection()
{
- static GitClient *const client = GitPlugin::client();
+ static GitClient *const client = GitPluginPrivate::client();
const QStringList arguments = curlArguments() << (url(RestUrl) + accountUrlC);
const SynchronousProcessResponse resp = client->vcsFullySynchronousExec(
QString(), {curlBinary, arguments},
@@ -332,7 +332,7 @@ bool GerritServer::resolveRoot()
void GerritServer::resolveVersion(const GerritParameters &p, bool forceReload)
{
- static GitClient *const client = GitPlugin::client();
+ static GitClient *const client = GitPluginPrivate::client();
QSettings *settings = Core::ICore::settings();
const QString fullVersionKey = "Gerrit/" + host + '/' + versionKey;
version = settings->value(fullVersionKey).toString();
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 2f511e02af..a680b46fc7 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -285,7 +285,7 @@ private:
};
GitDiffEditorController::GitDiffEditorController(IDocument *document, const QString &workingDirectory) :
- VcsBaseDiffEditorController(document, GitPlugin::client(), workingDirectory),
+ VcsBaseDiffEditorController(document, GitPluginPrivate::client(), workingDirectory),
m_watcher(this),
m_decorator(&m_watcher)
{
@@ -301,7 +301,7 @@ void GitDiffEditorController::updateBranchList()
return;
const QString workingDirectory = baseDirectory();
- VcsCommand *command = GitPlugin::client()->vcsExec(
+ VcsCommand *command = GitPluginPrivate::client()->vcsExec(
workingDirectory, {"branch", noColorOption, "-a", "--contains", revision}, nullptr,
false, 0, workingDirectory);
connect(command, &VcsCommand::stdOutText, this, [this](const QString &text) {
@@ -376,7 +376,7 @@ QStringList GitDiffEditorController::addHeadWhenCommandInProgress() const
// This is workaround for lack of support for merge commits and resolving conflicts,
// we compare the current state of working tree to the HEAD of current branch
// instead of showing unsupported combined diff format.
- GitClient::CommandInProgress commandInProgress = GitPlugin::client()->checkCommandInProgress(workingDirectory());
+ GitClient::CommandInProgress commandInProgress = GitPluginPrivate::client()->checkCommandInProgress(workingDirectory());
if (commandInProgress != GitClient::NoCommand)
return {HEAD};
return QStringList();
@@ -533,7 +533,7 @@ void ShowController::reload()
// stage 1
m_state = GettingDescription;
const QStringList args = {"show", "-s", noColorOption, showFormatC, m_id};
- runCommand(QList<QStringList>() << args, GitPlugin::client()->encoding(workingDirectory(), "i18n.commitEncoding"));
+ runCommand(QList<QStringList>() << args, GitPluginPrivate::client()->encoding(workingDirectory(), "i18n.commitEncoding"));
setStartupFile(VcsBase::source(document()));
}
@@ -541,7 +541,7 @@ void ShowController::processCommandOutput(const QString &output)
{
QTC_ASSERT(m_state != Idle, return);
if (m_state == GettingDescription) {
- setDescription(GitPlugin::client()->extendedShowDescription(workingDirectory(), output));
+ setDescription(GitPluginPrivate::client()->extendedShowDescription(workingDirectory(), output));
// stage 2
m_state = GettingDiff;
const QStringList args = {"show", "--format=format:", // omit header, already generated
@@ -680,7 +680,7 @@ private:
{
// If interactive rebase editor window is closed, plugin is terminated
// but referenced here when the command ends
- if (GitPlugin *plugin = GitPlugin::instance()) {
+ if (GitPluginPrivate *plugin = GitPluginPrivate::instance()) {
GitClient *client = plugin->client();
if (m_commit.isEmpty() && m_files.isEmpty()) {
if (client->checkCommandInProgress(m_workingDirectory) == GitClient::NoCommand)
@@ -1324,7 +1324,7 @@ void GitClient::removeStaleRemoteBranches(const QString &workingDirectory, const
VcsCommand::ShowSuccessMessage);
connect(command, &VcsCommand::success,
- this, [workingDirectory]() { GitPlugin::instance()->updateBranches(workingDirectory); });
+ this, [workingDirectory]() { GitPluginPrivate::instance()->updateBranches(workingDirectory); });
}
void GitClient::recoverDeletedFiles(const QString &workingDirectory)
@@ -2277,7 +2277,7 @@ GitClient::CommandInProgress GitClient::checkCommandInProgress(const QString &wo
void GitClient::continueCommandIfNeeded(const QString &workingDirectory, bool allowContinue)
{
- if (GitPlugin::instance()->isCommitEditorOpen())
+ if (GitPluginPrivate::instance()->isCommitEditorOpen())
return;
CommandInProgress command = checkCommandInProgress(workingDirectory);
ContinueCommandMode continueMode;
@@ -2350,7 +2350,7 @@ void GitClient::continuePreviousGitCommand(const QString &workingDirectory,
if (isRebase)
rebase(workingDirectory, QLatin1String(hasChanges ? "--continue" : "--skip"));
else
- GitPlugin::instance()->startCommit();
+ GitPluginPrivate::instance()->startCommit();
}
}
@@ -2843,7 +2843,7 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory,
if (resp.result == SynchronousProcessResponse::Finished) {
VcsOutputWindow::appendMessage(msgCommitted(amendSHA1, commitCount));
VcsOutputWindow::appendError(stdErr);
- GitPlugin::instance()->updateCurrentBranch();
+ GitPluginPrivate::instance()->updateCurrentBranch();
return true;
} else {
VcsOutputWindow::appendError(tr("Cannot commit %n files: %1\n", nullptr, commitCount).arg(stdErr));
@@ -2945,7 +2945,7 @@ void GitClient::revert(const QStringList &files, bool revertStaging)
QString errorMessage;
switch (revertI(files, &isDirectory, &errorMessage, revertStaging)) {
case RevertOk:
- GitPlugin::instance()->gitVersionControl()->emitFilesChanged(files);
+ GitPluginPrivate::instance()->gitVersionControl()->emitFilesChanged(files);
break;
case RevertCanceled:
break;
@@ -2966,7 +2966,7 @@ void GitClient::fetch(const QString &workingDirectory, const QString &remote)
VcsCommand *command = vcsExec(workingDirectory, arguments, nullptr, true,
VcsCommand::ShowSuccessMessage);
connect(command, &VcsCommand::success,
- this, [workingDirectory]() { GitPlugin::instance()->updateBranches(workingDirectory); });
+ this, [workingDirectory]() { GitPluginPrivate::instance()->updateBranches(workingDirectory); });
}
bool GitClient::executeAndHandleConflicts(const QString &workingDirectory,
@@ -3180,7 +3180,7 @@ void GitClient::push(const QString &workingDirectory, const QStringList &pushArg
QStringList({"push", "--force-with-lease"}) + pushArgs,
nullptr, true, VcsCommand::ShowSuccessMessage);
connect(rePushCommand, &VcsCommand::success,
- this, []() { GitPlugin::instance()->updateCurrentBranch(); });
+ this, []() { GitPluginPrivate::instance()->updateCurrentBranch(); });
}
break;
}
@@ -3201,13 +3201,13 @@ void GitClient::push(const QString &workingDirectory, const QStringList &pushArg
fallbackCommandParts.mid(1),
nullptr, true, VcsCommand::ShowSuccessMessage);
connect(rePushCommand, &VcsCommand::success, this, [workingDirectory]() {
- GitPlugin::instance()->updateBranches(workingDirectory);
+ GitPluginPrivate::instance()->updateBranches(workingDirectory);
});
}
break;
}
} else {
- GitPlugin::instance()->updateCurrentBranch();
+ GitPluginPrivate::instance()->updateCurrentBranch();
}
});
}
@@ -3469,7 +3469,7 @@ bool GitClient::StashInfo::init(const QString &workingDirectory, const QString &
m_pushAction = pushAction;
QString errorMessage;
QString statusOutput;
- switch (GitPlugin::client()->gitStatus(m_workingDir, StatusMode(NoUntracked | NoSubmodules),
+ switch (GitPluginPrivate::client()->gitStatus(m_workingDir, StatusMode(NoUntracked | NoSubmodules),
&statusOutput, &errorMessage)) {
case GitClient::StatusChanged:
if (m_flags & NoPrompt)
@@ -3522,14 +3522,14 @@ void GitClient::StashInfo::stashPrompt(const QString &command, const QString &st
msgBox.exec();
if (msgBox.clickedButton() == discardButton) {
- m_stashResult = GitPlugin::client()->synchronousReset(m_workingDir, QStringList(), errorMessage) ?
+ m_stashResult = GitPluginPrivate::client()->synchronousReset(m_workingDir, QStringList(), errorMessage) ?
StashUnchanged : StashFailed;
} else if (msgBox.clickedButton() == ignoreButton) { // At your own risk, so.
m_stashResult = NotStashed;
} else if (msgBox.clickedButton() == cancelButton) {
m_stashResult = StashCanceled;
} else if (msgBox.clickedButton() == stashButton) {
- const bool result = GitPlugin::client()->executeSynchronousStash(
+ const bool result = GitPluginPrivate::client()->executeSynchronousStash(
m_workingDir, creatorStashMessage(command), false, errorMessage);
m_stashResult = result ? StashUnchanged : StashFailed;
} else if (msgBox.clickedButton() == stashAndPopButton) {
@@ -3540,7 +3540,7 @@ void GitClient::StashInfo::stashPrompt(const QString &command, const QString &st
void GitClient::StashInfo::executeStash(const QString &command, QString *errorMessage)
{
m_message = creatorStashMessage(command);
- if (!GitPlugin::client()->executeSynchronousStash(m_workingDir, m_message, false, errorMessage))
+ if (!GitPluginPrivate::client()->executeSynchronousStash(m_workingDir, m_message, false, errorMessage))
m_stashResult = StashFailed;
else
m_stashResult = Stashed;
@@ -3563,14 +3563,14 @@ void GitClient::StashInfo::end()
{
if (m_stashResult == Stashed) {
QString stashName;
- if (GitPlugin::client()->stashNameFromMessage(m_workingDir, m_message, &stashName))
- GitPlugin::client()->stashPop(m_workingDir, stashName);
+ if (GitPluginPrivate::client()->stashNameFromMessage(m_workingDir, m_message, &stashName))
+ GitPluginPrivate::client()->stashPop(m_workingDir, stashName);
}
if (m_pushAction == NormalPush)
- GitPlugin::client()->push(m_workingDir);
+ GitPluginPrivate::client()->push(m_workingDir);
else if (m_pushAction == PushToGerrit)
- GitPlugin::instance()->gerritPlugin()->push(m_workingDir);
+ GitPluginPrivate::instance()->gerritPlugin()->push(m_workingDir);
m_pushAction = NoPush;
m_stashResult = NotStashed;
diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp
index 670d8986c4..53b41479e6 100644
--- a/src/plugins/git/giteditor.cpp
+++ b/src/plugins/git/giteditor.cpp
@@ -126,7 +126,7 @@ static QString sanitizeBlameOutput(const QString &b)
if (b.isEmpty())
return b;
- const bool omitDate = GitPlugin::client()->settings().boolValue(
+ const bool omitDate = GitPluginPrivate::client()->settings().boolValue(
GitSettings::omitAnnotationDateKey);
const QChar space(' ');
const int parenPos = b.indexOf(')');
@@ -192,7 +192,7 @@ void GitEditorWidget::setPlainText(const QString &text)
void GitEditorWidget::resetChange(const QByteArray &resetType)
{
- GitPlugin::client()->reset(
+ GitPluginPrivate::client()->reset(
sourceWorkingDirectory(), QLatin1String("--" + resetType), m_currentChange);
}
@@ -211,7 +211,7 @@ void GitEditorWidget::applyDiffChunk(const DiffChunk& chunk, bool revert)
if (revert)
args << "--reverse";
QString errorMessage;
- if (GitPlugin::client()->synchronousApplyPatch(baseDir, patchFile.fileName(), &errorMessage, args)) {
+ if (GitPluginPrivate::client()->synchronousApplyPatch(baseDir, patchFile.fileName(), &errorMessage, args)) {
if (errorMessage.isEmpty())
VcsOutputWindow::append(tr("Chunk successfully staged"));
else
@@ -260,14 +260,14 @@ void GitEditorWidget::aboutToOpen(const QString &fileName, const QString &realFi
const QString gitPath = fi.absolutePath();
setSource(gitPath);
textDocument()->setCodec(
- GitPlugin::client()->encoding(gitPath, "i18n.commitEncoding"));
+ GitPluginPrivate::client()->encoding(gitPath, "i18n.commitEncoding"));
}
}
QString GitEditorWidget::decorateVersion(const QString &revision) const
{
// Format verbose, SHA1 being first token
- return GitPlugin::client()->synchronousShortDescription(sourceWorkingDirectory(), revision);
+ return GitPluginPrivate::client()->synchronousShortDescription(sourceWorkingDirectory(), revision);
}
QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision) const
@@ -275,7 +275,7 @@ QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision)
QStringList revisions;
QString errorMessage;
// Get the SHA1's of the file.
- if (!GitPlugin::client()->synchronousParentRevisions(sourceWorkingDirectory(),
+ if (!GitPluginPrivate::client()->synchronousParentRevisions(sourceWorkingDirectory(),
revision, &revisions, &errorMessage)) {
VcsOutputWindow::appendSilently(errorMessage);
return QStringList();
@@ -285,7 +285,7 @@ QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision)
bool GitEditorWidget::isValidRevision(const QString &revision) const
{
- return GitPlugin::client()->isValidRevision(revision);
+ return GitPluginPrivate::client()->isValidRevision(revision);
}
void GitEditorWidget::addChangeActions(QMenu *menu, const QString &change)
@@ -295,25 +295,25 @@ void GitEditorWidget::addChangeActions(QMenu *menu, const QString &change)
return;
menu->addAction(tr("Cherr&y-Pick Change %1").arg(change), this, [this] {
- GitPlugin::client()->synchronousCherryPick(sourceWorkingDirectory(), m_currentChange);
+ GitPluginPrivate::client()->synchronousCherryPick(sourceWorkingDirectory(), m_currentChange);
});
menu->addAction(tr("Re&vert Change %1").arg(change), this, [this] {
- GitPlugin::client()->synchronousRevert(sourceWorkingDirectory(), m_currentChange);
+ GitPluginPrivate::client()->synchronousRevert(sourceWorkingDirectory(), m_currentChange);
});
menu->addAction(tr("C&heckout Change %1").arg(change), this, [this] {
- GitPlugin::client()->checkout(sourceWorkingDirectory(), m_currentChange);
+ GitPluginPrivate::client()->checkout(sourceWorkingDirectory(), m_currentChange);
});
connect(menu->addAction(tr("&Interactive Rebase from Change %1...").arg(change)),
&QAction::triggered, this, [this] {
- GitPlugin::instance()->startRebaseFromCommit(sourceWorkingDirectory(), m_currentChange);
+ GitPluginPrivate::instance()->startRebaseFromCommit(sourceWorkingDirectory(), m_currentChange);
});
menu->addAction(tr("&Log for Change %1").arg(change), this, [this] {
- GitPlugin::client()->log(sourceWorkingDirectory(), QString(), false, {m_currentChange});
+ GitPluginPrivate::client()->log(sourceWorkingDirectory(), QString(), false, {m_currentChange});
});
menu->addAction(tr("Add &Tag for Change %1...").arg(change), this, [this] {
QString output;
QString errorMessage;
- GitPlugin::client()->synchronousTagCmd(sourceWorkingDirectory(), QStringList(),
+ GitPluginPrivate::client()->synchronousTagCmd(sourceWorkingDirectory(), QStringList(),
&output, &errorMessage);
const QStringList tags = output.split('\n');
@@ -322,7 +322,7 @@ void GitEditorWidget::addChangeActions(QMenu *menu, const QString &change)
if (dialog.exec() == QDialog::Rejected)
return;
- GitPlugin::client()->synchronousTagCmd(sourceWorkingDirectory(),
+ GitPluginPrivate::client()->synchronousTagCmd(sourceWorkingDirectory(),
{dialog.branchName(), m_currentChange},
&output, &errorMessage);
VcsOutputWindow::append(output);
diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp
index 056903f855..35fd7abc64 100644
--- a/src/plugins/git/gitgrep.cpp
+++ b/src/plugins/git/gitgrep.cpp
@@ -158,7 +158,7 @@ public:
void exec()
{
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitPluginPrivate::client();
QStringList arguments = {
"-c", "color.grep.match=bold red",
"-c", "color.grep=always",
@@ -248,7 +248,7 @@ GitGrep::GitGrep(QObject *parent)
const QRegularExpression refExpression("[\\S]*");
m_treeLineEdit->setValidator(new QRegularExpressionValidator(refExpression, this));
layout->addWidget(m_treeLineEdit);
- if (GitPlugin::client()->gitVersion() >= 0x021300) {
+ if (GitPluginPrivate::client()->gitVersion() >= 0x021300) {
m_recurseSubmodules = new QCheckBox(tr("Recurse submodules"));
layout->addWidget(m_recurseSubmodules);
}
@@ -320,7 +320,7 @@ IEditor *GitGrep::openEditor(const SearchResultItem &item,
QByteArray content;
const QString topLevel = parameters.additionalParameters.toString();
const QString relativePath = QDir(topLevel).relativeFilePath(path);
- if (!GitPlugin::client()->synchronousShow(topLevel, params.ref + ":./" + relativePath,
+ if (!GitPluginPrivate::client()->synchronousShow(topLevel, params.ref + ":./" + relativePath,
&content, nullptr)) {
return nullptr;
}
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 3f08a20760..9779a5cb45 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -129,25 +129,23 @@ const VcsBaseEditorParameters editorParameters[] = {
// GitPlugin
-static GitPlugin *m_instance = nullptr;
+static GitPluginPrivate *dd = nullptr;
-GitPlugin::GitPlugin()
+GitPluginPrivate::~GitPluginPrivate()
{
- m_instance = this;
- m_fileActions.reserve(10);
- m_projectActions.reserve(10);
- m_repositoryActions.reserve(50);
+ cleanCommitMessageFile();
+ delete m_gitClient;
+ delete m_branchViewFactory;
}
+
GitPlugin::~GitPlugin()
{
- cleanCommitMessageFile();
- delete m_gitClient;
- delete m_branchViewFactory;
- m_instance = nullptr;
+ delete dd;
+ dd = nullptr;
}
-void GitPlugin::cleanCommitMessageFile()
+void GitPluginPrivate::cleanCommitMessageFile()
{
if (!m_commitMessageFileName.isEmpty()) {
QFile::remove(m_commitMessageFileName);
@@ -155,22 +153,22 @@ void GitPlugin::cleanCommitMessageFile()
}
}
-bool GitPlugin::isCommitEditorOpen() const
+bool GitPluginPrivate::isCommitEditorOpen() const
{
return !m_commitMessageFileName.isEmpty();
}
-GitPlugin *GitPlugin::instance()
+GitPluginPrivate *GitPluginPrivate::instance()
{
- return m_instance;
+ return dd;
}
-GitClient *GitPlugin::client()
+GitClient *GitPluginPrivate::client()
{
- return m_instance->m_gitClient;
+ return dd->m_gitClient;
}
-QString GitPlugin::msgRepositoryLabel(const QString &repository)
+QString GitPluginPrivate::msgRepositoryLabel(const QString &repository)
{
return repository.isEmpty() ?
tr("<No repository>") :
@@ -179,7 +177,7 @@ QString GitPlugin::msgRepositoryLabel(const QString &repository)
// Returns a regular expression pattern with characters not allowed
// in branch and remote names.
-QString GitPlugin::invalidBranchAndRemoteNamePattern()
+QString GitPluginPrivate::invalidBranchAndRemoteNamePattern()
{
return QLatin1String(
"\\s" // no whitespace
@@ -206,7 +204,7 @@ const VcsBaseSubmitEditorParameters submitParameters = {
VcsBaseSubmitEditorParameters::DiffRows
};
-Command *GitPlugin::createCommand(QAction *action, ActionContainer *ac, Id id,
+Command *GitPluginPrivate::createCommand(QAction *action, ActionContainer *ac, Id id,
const Context &context, bool addToLocator,
const std::function<void()> &callback, const QKeySequence &keys)
{
@@ -222,7 +220,7 @@ Command *GitPlugin::createCommand(QAction *action, ActionContainer *ac, Id id,
}
// Create a parameter action
-ParameterAction *GitPlugin::createParameterAction(ActionContainer *ac,
+ParameterAction *GitPluginPrivate::createParameterAction(ActionContainer *ac,
const QString &defaultText, const QString &parameterText,
Id id, const Context &context,
bool addToLocator, const std::function<void()> &callback,
@@ -235,7 +233,7 @@ ParameterAction *GitPlugin::createParameterAction(ActionContainer *ac,
}
// Create an action to act on a file.
-QAction *GitPlugin::createFileAction(ActionContainer *ac,
+QAction *GitPluginPrivate::createFileAction(ActionContainer *ac,
const QString &defaultText, const QString &parameterText,
Id id, const Context &context, bool addToLocator,
const std::function<void()> &callback,
@@ -247,9 +245,9 @@ QAction *GitPlugin::createFileAction(ActionContainer *ac,
return action;
}
-QAction *GitPlugin::createProjectAction(ActionContainer *ac, const QString &defaultText,
+QAction *GitPluginPrivate::createProjectAction(ActionContainer *ac, const QString &defaultText,
const QString &parameterText, Id id, const Context &context,
- bool addToLocator, void (GitPlugin::*func)(),
+ bool addToLocator, void (GitPluginPrivate::*func)(),
const QKeySequence &keys)
{
ParameterAction *action = createParameterAction(ac, defaultText, parameterText, id, context,
@@ -259,7 +257,7 @@ QAction *GitPlugin::createProjectAction(ActionContainer *ac, const QString &defa
}
// Create an action to act on the repository
-QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, const QString &text, Id id,
+QAction *GitPluginPrivate::createRepositoryAction(ActionContainer *ac, const QString &text, Id id,
const Context &context, bool addToLocator,
const std::function<void()> &callback,
const QKeySequence &keys)
@@ -270,17 +268,17 @@ QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, const QString &t
return action;
}
-QAction *GitPlugin::createChangeRelatedRepositoryAction(const QString &text, Id id,
+QAction *GitPluginPrivate::createChangeRelatedRepositoryAction(const QString &text, Id id,
const Context &context)
{
return createRepositoryAction(nullptr, text, id, context, true,
- std::bind(&GitPlugin::startChangeRelatedAction, this, id),
+ std::bind(&GitPluginPrivate::startChangeRelatedAction, this, id),
QKeySequence());
}
// Action to act on the repository forwarded to a git client member function
// taking the directory.
-QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, const QString &text, Id id,
+QAction *GitPluginPrivate::createRepositoryAction(ActionContainer *ac, const QString &text, Id id,
const Context &context, bool addToLocator,
GitClientMemberFunc func, const QKeySequence &keys)
{
@@ -296,6 +294,29 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
{
Q_UNUSED(errorMessage)
+ dd = new GitPluginPrivate;
+
+ auto cmdContext = new QObject(this);
+ connect(Core::ICore::instance(), &Core::ICore::coreOpened, cmdContext, [this, cmdContext, arguments] {
+ remoteCommand(arguments, QDir::currentPath(), {});
+ cmdContext->deleteLater();
+ });
+
+ return true;
+}
+
+void GitPlugin::extensionsInitialized()
+{
+ dd->extensionsInitialized() ;
+}
+
+GitPluginPrivate::GitPluginPrivate()
+{
+ dd = this;
+ m_fileActions.reserve(10);
+ m_projectActions.reserve(10);
+ m_repositoryActions.reserve(50);
+
Context context(Constants::GIT_CONTEXT);
m_gitClient = new GitClient;
@@ -306,7 +327,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
// Create the settings Page
auto settingsPage = new SettingsPage(vc, this);
connect(settingsPage, &SettingsPage::settingsChanged,
- this, &GitPlugin::updateRepositoryBrowserAction);
+ this, &GitPluginPrivate::updateRepositoryBrowserAction);
new GitGrep(this);
m_branchViewFactory = new BranchViewFactory;
@@ -340,33 +361,33 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
gitContainer->addMenu(currentFileMenu);
createFileAction(currentFileMenu, tr("Diff Current File"), tr("Diff of \"%1\""),
- "Git.Diff", context, true, std::bind(&GitPlugin::diffCurrentFile, this),
+ "Git.Diff", context, true, std::bind(&GitPluginPrivate::diffCurrentFile, this),
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+D") : tr("Alt+G,Alt+D")));
createFileAction(currentFileMenu, tr("Log Current File"), tr("Log of \"%1\""),
- "Git.Log", context, true, std::bind(&GitPlugin::logFile, this),
+ "Git.Log", context, true, std::bind(&GitPluginPrivate::logFile, this),
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+L") : tr("Alt+G,Alt+L")));
createFileAction(currentFileMenu, tr("Blame Current File"), tr("Blame for \"%1\""),
- "Git.Blame", context, true, std::bind(&GitPlugin::blameFile, this),
+ "Git.Blame", context, true, std::bind(&GitPluginPrivate::blameFile, this),
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+B") : tr("Alt+G,Alt+B")));
currentFileMenu->addSeparator(context);
createFileAction(currentFileMenu, tr("Stage File for Commit"), tr("Stage \"%1\" for Commit"),
- "Git.Stage", context, true, std::bind(&GitPlugin::stageFile, this),
+ "Git.Stage", context, true, std::bind(&GitPluginPrivate::stageFile, this),
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+A") : tr("Alt+G,Alt+A")));
createFileAction(currentFileMenu, tr("Unstage File from Commit"), tr("Unstage \"%1\" from Commit"),
- "Git.Unstage", context, true, std::bind(&GitPlugin::unstageFile, this));
+ "Git.Unstage", context, true, std::bind(&GitPluginPrivate::unstageFile, this));
createFileAction(currentFileMenu, tr("Undo Unstaged Changes"), tr("Undo Unstaged Changes for \"%1\""),
"Git.UndoUnstaged", context,
- true, std::bind(&GitPlugin::undoFileChanges, this, false));
+ true, std::bind(&GitPluginPrivate::undoFileChanges, this, false));
createFileAction(currentFileMenu, tr("Undo Uncommitted Changes"), tr("Undo Uncommitted Changes for \"%1\""),
"Git.Undo", context,
- true, std::bind(&GitPlugin::undoFileChanges, this, true),
+ true, std::bind(&GitPluginPrivate::undoFileChanges, this, true),
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+U") : tr("Alt+G,Alt+U")));
@@ -376,15 +397,15 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
gitContainer->addMenu(currentProjectMenu);
createProjectAction(currentProjectMenu, tr("Diff Current Project"), tr("Diff Project \"%1\""),
- "Git.DiffProject", context, true, &GitPlugin::diffCurrentProject,
+ "Git.DiffProject", context, true, &GitPluginPrivate::diffCurrentProject,
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+Shift+D") : tr("Alt+G,Alt+Shift+D")));
createProjectAction(currentProjectMenu, tr("Log Project"), tr("Log Project \"%1\""),
- "Git.LogProject", context, true, &GitPlugin::logProject,
+ "Git.LogProject", context, true, &GitPluginPrivate::logProject,
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+K") : tr("Alt+G,Alt+K")));
createProjectAction(currentProjectMenu, tr("Clean Project..."), tr("Clean Project \"%1\"..."),
- "Git.CleanProject", context, true, &GitPlugin::cleanProject);
+ "Git.CleanProject", context, true, &GitPluginPrivate::cleanProject);
/* "Local Repository" menu */
@@ -396,7 +417,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
context, true, &GitClient::diffRepository);
createRepositoryAction(localRepositoryMenu, tr("Log"), "Git.LogRepository",
- context, true, std::bind(&GitPlugin::logRepository, this));
+ context, true, std::bind(&GitPluginPrivate::logRepository, this));
createRepositoryAction(localRepositoryMenu, tr("Reflog"), "Git.ReflogRepository",
context, true, &GitClient::reflog);
@@ -411,88 +432,88 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
localRepositoryMenu->addSeparator(context);
createRepositoryAction(localRepositoryMenu, tr("Commit..."), "Git.Commit",
- context, true, std::bind(&GitPlugin::startCommit, this, SimpleCommit),
+ context, true, std::bind(&GitPluginPrivate::startCommit, this, SimpleCommit),
QKeySequence(useMacShortcuts ? tr("Meta+G,Meta+C") : tr("Alt+G,Alt+C")));
createRepositoryAction(localRepositoryMenu, tr("Amend Last Commit..."), "Git.AmendCommit",
- context, true, std::bind(&GitPlugin::startCommit, this, AmendCommit));
+ context, true, std::bind(&GitPluginPrivate::startCommit, this, AmendCommit));
m_fixupCommitAction
= createRepositoryAction(localRepositoryMenu,
tr("Fixup Previous Commit..."), "Git.FixupCommit", context, true,
- std::bind(&GitPlugin::startCommit, this, FixupCommit));
+ std::bind(&GitPluginPrivate::startCommit, this, FixupCommit));
// --------------
localRepositoryMenu->addSeparator(context);
createRepositoryAction(localRepositoryMenu, tr("Reset..."), "Git.Reset",
- context, true, std::bind(&GitPlugin::resetRepository, this));
+ context, true, std::bind(&GitPluginPrivate::resetRepository, this));
createRepositoryAction(localRepositoryMenu, tr("Recover Deleted Files"), "Git.RecoverDeleted",
- context, true, std::bind(&GitPlugin::recoverDeletedFiles, this));
+ context, true, std::bind(&GitPluginPrivate::recoverDeletedFiles, this));
m_interactiveRebaseAction
= createRepositoryAction(localRepositoryMenu,
tr("Interactive Rebase..."), "Git.InteractiveRebase",
- context, true, std::bind(&GitPlugin::startRebase, this));
+ context, true, std::bind(&GitPluginPrivate::startRebase, this));
m_submoduleUpdateAction
= createRepositoryAction(localRepositoryMenu,
tr("Update Submodules"), "Git.SubmoduleUpdate",
- context, true, std::bind(&GitPlugin::updateSubmodules, this));
+ context, true, std::bind(&GitPluginPrivate::updateSubmodules, this));
m_abortMergeAction
= createRepositoryAction(localRepositoryMenu,
tr("Abort Merge"), "Git.MergeAbort",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
m_abortRebaseAction
= createRepositoryAction(localRepositoryMenu,
tr("Abort Rebase"), "Git.RebaseAbort",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
m_abortCherryPickAction
= createRepositoryAction(localRepositoryMenu,
tr("Abort Cherry Pick"), "Git.CherryPickAbort",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
m_abortRevertAction
= createRepositoryAction(localRepositoryMenu,
tr("Abort Revert"), "Git.RevertAbort",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
m_continueRebaseAction
= createRepositoryAction(localRepositoryMenu,
tr("Continue Rebase"), "Git.RebaseContinue",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
m_skipRebaseAction
= createRepositoryAction(localRepositoryMenu,
tr("Skip Rebase"), "Git.RebaseSkip",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
m_continueCherryPickAction
= createRepositoryAction(localRepositoryMenu,
tr("Continue Cherry Pick"), "Git.CherryPickContinue",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
m_continueRevertAction
= createRepositoryAction(localRepositoryMenu,
tr("Continue Revert"), "Git.RevertContinue",
context, true,
- std::bind(&GitPlugin::continueOrAbortCommand, this));
+ std::bind(&GitPluginPrivate::continueOrAbortCommand, this));
// --------------
localRepositoryMenu->addSeparator(context);
createRepositoryAction(localRepositoryMenu, tr("Branches..."), "Git.BranchList",
- context, true, std::bind(&GitPlugin::branchList, this));
+ context, true, std::bind(&GitPluginPrivate::branchList, this));
// --------------
localRepositoryMenu->addSeparator(context);
@@ -507,9 +528,9 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
= createParameterAction(patchMenu,
tr("Apply from Editor"), tr("Apply \"%1\""),
"Git.ApplyCurrentFilePatch",
- context, true, std::bind(&GitPlugin::applyCurrentFilePatch, this));
+ context, true, std::bind(&GitPluginPrivate::applyCurrentFilePatch, this));
createRepositoryAction(patchMenu, tr("Apply from File..."), "Git.ApplyPatch",
- context, true, std::bind(&GitPlugin::promptApplyPatch, this));
+ context, true, std::bind(&GitPluginPrivate::promptApplyPatch, this));
// "Stash" menu
ActionContainer *stashMenu = ActionManager::createMenu("Git.StashMenu");
@@ -517,27 +538,27 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
localRepositoryMenu->addMenu(stashMenu);
createRepositoryAction(stashMenu, tr("Stashes..."), "Git.StashList",
- context, false, std::bind(&GitPlugin::stashList, this));
+ context, false, std::bind(&GitPluginPrivate::stashList, this));
stashMenu->addSeparator(context);
QAction *action = createRepositoryAction(stashMenu, tr("Stash"), "Git.Stash",
- context, true, std::bind(&GitPlugin::stash, this, false));
+ context, true, std::bind(&GitPluginPrivate::stash, this, false));
action->setToolTip(tr("Saves the current state of your work and resets the repository."));
action = createRepositoryAction(stashMenu, tr("Stash Unstaged Files"), "Git.StashUnstaged",
- context, true, std::bind(&GitPlugin::stashUnstaged, this));
+ context, true, std::bind(&GitPluginPrivate::stashUnstaged, this));
action->setToolTip(tr("Saves the current state of your unstaged files and resets the repository "
"to its staged state."));
action = createRepositoryAction(stashMenu, tr("Take Snapshot..."), "Git.StashSnapshot",
- context, true, std::bind(&GitPlugin::stashSnapshot, this));
+ context, true, std::bind(&GitPluginPrivate::stashSnapshot, this));
action->setToolTip(tr("Saves the current state of your work."));
stashMenu->addSeparator(context);
action = createRepositoryAction(stashMenu, tr("Stash Pop"), "Git.StashPop",
- context, true, std::bind(&GitPlugin::stashPop, this));
+ context, true, std::bind(&GitPluginPrivate::stashPop, this));
action->setToolTip(tr("Restores changes saved to the stash list using \"Stash\"."));
@@ -551,13 +572,13 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
gitContainer->addMenu(remoteRepositoryMenu);
createRepositoryAction(remoteRepositoryMenu, tr("Fetch"), "Git.Fetch",
- context, true, std::bind(&GitPlugin::fetch, this));
+ context, true, std::bind(&GitPluginPrivate::fetch, this));
createRepositoryAction(remoteRepositoryMenu, tr("Pull"), "Git.Pull",
- context, true, std::bind(&GitPlugin::pull, this));
+ context, true, std::bind(&GitPluginPrivate::pull, this));
createRepositoryAction(remoteRepositoryMenu, tr("Push"), "Git.Push",
- context, true, std::bind(&GitPlugin::push, this));
+ context, true, std::bind(&GitPluginPrivate::push, this));
// --------------
remoteRepositoryMenu->addSeparator(context);
@@ -580,7 +601,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
remoteRepositoryMenu->addSeparator(context);
createRepositoryAction(remoteRepositoryMenu, tr("Manage Remotes..."), "Git.RemoteList",
- context, false, std::bind(&GitPlugin::manageRemotes, this));
+ context, false, std::bind(&GitPluginPrivate::manageRemotes, this));
/* \"Remote Repository" menu */
@@ -594,9 +615,9 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
createChangeRelatedRepositoryAction(tr("Archive..."), "Git.Archive", context);
createRepositoryAction(nullptr, tr("Rebase..."), "Git.Rebase", context, true,
- std::bind(&GitPlugin::branchList, this));
+ std::bind(&GitPluginPrivate::branchList, this));
createRepositoryAction(nullptr, tr("Merge..."), "Git.Merge", context, true,
- std::bind(&GitPlugin::branchList, this));
+ std::bind(&GitPluginPrivate::branchList, this));
/* \Actions only in locator */
// --------------
@@ -610,16 +631,16 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
context, true, &GitClient::launchGitK);
createFileAction(gitToolsMenu, tr("Gitk Current File"), tr("Gitk of \"%1\""),
- "Git.GitkFile", context, true, std::bind(&GitPlugin::gitkForCurrentFile, this));
+ "Git.GitkFile", context, true, std::bind(&GitPluginPrivate::gitkForCurrentFile, this));
createFileAction(gitToolsMenu, tr("Gitk for folder of Current File"), tr("Gitk for folder of \"%1\""),
- "Git.GitkFolder", context, true, std::bind(&GitPlugin::gitkForCurrentFolder, this));
+ "Git.GitkFolder", context, true, std::bind(&GitPluginPrivate::gitkForCurrentFolder, this));
// --------------
gitToolsMenu->addSeparator(context);
createRepositoryAction(gitToolsMenu, tr("Git Gui"), "Git.GitGui",
- context, true, std::bind(&GitPlugin::gitGui, this));
+ context, true, std::bind(&GitPluginPrivate::gitGui, this));
// --------------
gitToolsMenu->addSeparator(context);
@@ -631,7 +652,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
m_mergeToolAction
= createRepositoryAction(gitToolsMenu, tr("Merge Tool"), "Git.MergeTool",
- context, true, std::bind(&GitPlugin::startMergeTool, this));
+ context, true, std::bind(&GitPluginPrivate::startMergeTool, this));
/* \"Git Tools" menu */
@@ -648,42 +669,34 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
QAction *createRepositoryAction = new QAction(tr("Create Repository..."), this);
Command *createRepositoryCommand = ActionManager::registerAction(
createRepositoryAction, "Git.CreateRepository");
- connect(createRepositoryAction, &QAction::triggered, this, &GitPlugin::createRepository);
+ connect(createRepositoryAction, &QAction::triggered, this, &GitPluginPrivate::createRepository);
gitContainer->addAction(createRepositoryCommand);
connect(VcsManager::instance(), &VcsManager::repositoryChanged,
- this, &GitPlugin::updateContinueAndAbortCommands);
+ this, &GitPluginPrivate::updateContinueAndAbortCommands);
connect(VcsManager::instance(), &VcsManager::repositoryChanged,
- this, &GitPlugin::updateBranches, Qt::QueuedConnection);
+ this, &GitPluginPrivate::updateBranches, Qt::QueuedConnection);
/* "Gerrit" */
m_gerritPlugin = new Gerrit::Internal::GerritPlugin(this);
- const bool ok = m_gerritPlugin->initialize(remoteRepositoryMenu);
+ m_gerritPlugin->initialize(remoteRepositoryMenu);
m_gerritPlugin->updateActions(currentState());
m_gerritPlugin->addToLocator(m_commandLocator);
-
- auto cmdContext = new QObject(this);
- connect(Core::ICore::instance(), &Core::ICore::coreOpened, cmdContext, [this, cmdContext, arguments] {
- remoteCommand(arguments, QDir::currentPath(), {});
- cmdContext->deleteLater();
- });
-
- return ok;
}
-GitVersionControl *GitPlugin::gitVersionControl() const
+GitVersionControl *GitPluginPrivate::gitVersionControl() const
{
return static_cast<GitVersionControl *>(versionControl());
}
-void GitPlugin::diffCurrentFile()
+void GitPluginPrivate::diffCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_gitClient->diffFile(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void GitPlugin::diffCurrentProject()
+void GitPluginPrivate::diffCurrentProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
@@ -694,14 +707,14 @@ void GitPlugin::diffCurrentProject()
m_gitClient->diffProject(state.currentProjectTopLevel(), relativeProject);
}
-void GitPlugin::logFile()
+void GitPluginPrivate::logFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_gitClient->log(state.currentFileTopLevel(), state.relativeCurrentFile(), true);
}
-void GitPlugin::blameFile()
+void GitPluginPrivate::blameFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -740,21 +753,21 @@ void GitPlugin::blameFile()
editor->setFirstLineNumber(firstLine);
}
-void GitPlugin::logProject()
+void GitPluginPrivate::logProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
m_gitClient->log(state.currentProjectTopLevel(), state.relativeCurrentProject());
}
-void GitPlugin::logRepository()
+void GitPluginPrivate::logRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_gitClient->log(state.topLevel());
}
-void GitPlugin::undoFileChanges(bool revertStaging)
+void GitPluginPrivate::undoFileChanges(bool revertStaging)
{
if (IDocument *document = EditorManager::currentDocument()) {
if (!DocumentManager::saveModifiedDocumentSilently(document))
@@ -793,7 +806,7 @@ protected:
}
};
-void GitPlugin::resetRepository()
+void GitPluginPrivate::resetRepository()
{
if (!DocumentManager::saveAllModifiedDocuments())
return;
@@ -808,7 +821,7 @@ void GitPlugin::resetRepository()
m_gitClient->reset(topLevel, dialog.resetFlag(), dialog.commit());
}
-void GitPlugin::recoverDeletedFiles()
+void GitPluginPrivate::recoverDeletedFiles()
{
if (!DocumentManager::saveAllModifiedDocuments())
return;
@@ -817,7 +830,7 @@ void GitPlugin::recoverDeletedFiles()
m_gitClient->recoverDeletedFiles(state.topLevel());
}
-void GitPlugin::startRebase()
+void GitPluginPrivate::startRebase()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -826,7 +839,7 @@ void GitPlugin::startRebase()
startRebaseFromCommit(topLevel, QString());
}
-void GitPlugin::startRebaseFromCommit(const QString &workingDirectory, QString commit)
+void GitPluginPrivate::startRebaseFromCommit(const QString &workingDirectory, QString commit)
{
if (!DocumentManager::saveAllModifiedDocuments())
return;
@@ -846,7 +859,7 @@ void GitPlugin::startRebaseFromCommit(const QString &workingDirectory, QString c
m_gitClient->interactiveRebase(workingDirectory, commit, false);
}
-void GitPlugin::startChangeRelatedAction(const Id &id)
+void GitPluginPrivate::startChangeRelatedAction(const Id &id)
{
const VcsBasePluginState state = currentState();
@@ -890,28 +903,28 @@ void GitPlugin::startChangeRelatedAction(const Id &id)
}
}
-void GitPlugin::stageFile()
+void GitPluginPrivate::stageFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_gitClient->addFile(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void GitPlugin::unstageFile()
+void GitPluginPrivate::unstageFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_gitClient->synchronousReset(state.currentFileTopLevel(), {state.relativeCurrentFile()});
}
-void GitPlugin::gitkForCurrentFile()
+void GitPluginPrivate::gitkForCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_gitClient->launchGitK(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void GitPlugin::gitkForCurrentFolder()
+void GitPluginPrivate::gitkForCurrentFolder()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -941,14 +954,14 @@ void GitPlugin::gitkForCurrentFolder()
}
}
-void GitPlugin::gitGui()
+void GitPluginPrivate::gitGui()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_gitClient->launchGitGui(state.topLevel());
}
-void GitPlugin::startCommit(CommitType commitType)
+void GitPluginPrivate::startCommit(CommitType commitType)
{
if (!promptBeforeCommit())
return;
@@ -987,7 +1000,7 @@ void GitPlugin::startCommit(CommitType commitType)
openSubmitEditor(m_commitMessageFileName, data);
}
-void GitPlugin::updateVersionWarning()
+void GitPluginPrivate::updateVersionWarning()
{
unsigned version = m_gitClient->gitVersion();
if (!version || version >= minimumRequiredVersion)
@@ -1005,7 +1018,7 @@ void GitPlugin::updateVersionWarning()
InfoBarEntry::GlobalSuppression::Enabled));
}
-IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const CommitData &cd)
+IEditor *GitPluginPrivate::openSubmitEditor(const QString &fileName, const CommitData &cd)
{
IEditor *editor = EditorManager::openEditor(fileName, Constants::GITSUBMITEDITOR_ID);
auto submitEditor = qobject_cast<GitSubmitEditor*>(editor);
@@ -1030,7 +1043,7 @@ IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const CommitData &
return editor;
}
-void GitPlugin::commitFromEditor()
+void GitPluginPrivate::commitFromEditor()
{
// Close the submit editor
m_submitActionTriggered = true;
@@ -1038,7 +1051,7 @@ void GitPlugin::commitFromEditor()
EditorManager::closeDocument(submitEditor()->document());
}
-bool GitPlugin::submitEditorAboutToClose()
+bool GitPluginPrivate::submitEditorAboutToClose()
{
if (!isCommitEditorOpen())
return true;
@@ -1096,7 +1109,7 @@ bool GitPlugin::submitEditorAboutToClose()
if (editor->panelData().pushAction == NormalPush) {
m_gitClient->push(m_submitRepository);
} else if (editor->panelData().pushAction == PushToGerrit) {
- connect(editor, &QObject::destroyed, this, &GitPlugin::delayedPushToGerrit,
+ connect(editor, &QObject::destroyed, this, &GitPluginPrivate::delayedPushToGerrit,
Qt::QueuedConnection);
}
}
@@ -1104,12 +1117,12 @@ bool GitPlugin::submitEditorAboutToClose()
return true;
}
-void GitPlugin::fetch()
+void GitPluginPrivate::fetch()
{
m_gitClient->fetch(currentState().topLevel(), QString());
}
-void GitPlugin::pull()
+void GitPluginPrivate::pull()
{
if (!DocumentManager::saveAllModifiedDocuments())
return;
@@ -1132,21 +1145,21 @@ void GitPlugin::pull()
m_gitClient->pull(topLevel, rebase);
}
-void GitPlugin::push()
+void GitPluginPrivate::push()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_gitClient->push(state.topLevel());
}
-void GitPlugin::startMergeTool()
+void GitPluginPrivate::startMergeTool()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_gitClient->merge(state.topLevel());
}
-void GitPlugin::continueOrAbortCommand()
+void GitPluginPrivate::continueOrAbortCommand()
{
if (!DocumentManager::saveAllModifiedDocuments())
return;
@@ -1174,21 +1187,21 @@ void GitPlugin::continueOrAbortCommand()
updateContinueAndAbortCommands();
}
-void GitPlugin::cleanProject()
+void GitPluginPrivate::cleanProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
cleanRepository(state.currentProjectPath());
}
-void GitPlugin::cleanRepository()
+void GitPluginPrivate::cleanRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
cleanRepository(state.topLevel());
}
-void GitPlugin::cleanRepository(const QString &directory)
+void GitPluginPrivate::cleanRepository(const QString &directory)
{
// Find files to be deleted
QString errorMessage;
@@ -1214,7 +1227,7 @@ void GitPlugin::cleanRepository(const QString &directory)
dialog.exec();
}
-void GitPlugin::updateSubmodules()
+void GitPluginPrivate::updateSubmodules()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -1227,7 +1240,7 @@ static bool ensureFileSaved(const QString &fileName)
return DocumentManager::saveModifiedDocument(DocumentModel::documentForFilePath(fileName));
}
-void GitPlugin::applyCurrentFilePatch()
+void GitPluginPrivate::applyCurrentFilePatch()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasPatchFile() && state.hasTopLevel(), return);
@@ -1237,14 +1250,14 @@ void GitPlugin::applyCurrentFilePatch()
applyPatch(state.topLevel(), patchFile);
}
-void GitPlugin::promptApplyPatch()
+void GitPluginPrivate::promptApplyPatch()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
applyPatch(state.topLevel(), QString());
}
-void GitPlugin::applyPatch(const QString &workingDirectory, QString file)
+void GitPluginPrivate::applyPatch(const QString &workingDirectory, QString file)
{
// Ensure user has been notified about pending changes
if (!m_gitClient->beginStashScope(workingDirectory, "Apply-Patch", AllowUnstashed))
@@ -1271,7 +1284,7 @@ void GitPlugin::applyPatch(const QString &workingDirectory, QString file)
m_gitClient->endStashScope(workingDirectory);
}
-void GitPlugin::stash(bool unstagedOnly)
+void GitPluginPrivate::stash(bool unstagedOnly)
{
if (!DocumentManager::saveAllModifiedDocuments())
return;
@@ -1285,12 +1298,12 @@ void GitPlugin::stash(bool unstagedOnly)
m_stashDialog->refresh(topLevel, true);
}
-void GitPlugin::stashUnstaged()
+void GitPluginPrivate::stashUnstaged()
{
stash(true);
}
-void GitPlugin::stashSnapshot()
+void GitPluginPrivate::stashSnapshot()
{
// Prompt for description, restore immediately and keep on working.
const VcsBasePluginState state = currentState();
@@ -1301,7 +1314,7 @@ void GitPlugin::stashSnapshot()
m_stashDialog->refresh(state.topLevel(), true);
}
-void GitPlugin::stashPop()
+void GitPluginPrivate::stashPop()
{
if (!DocumentManager::saveAllModifiedDocuments())
return;
@@ -1326,28 +1339,28 @@ template <class NonModalDialog>
}
}
-void GitPlugin::branchList()
+void GitPluginPrivate::branchList()
{
ModeManager::activateMode(Core::Constants::MODE_EDIT);
NavigationWidget::activateSubWidget(Constants::GIT_BRANCH_VIEW_ID, Side::Right);
}
-void GitPlugin::manageRemotes()
+void GitPluginPrivate::manageRemotes()
{
showNonModalDialog(currentState().topLevel(), m_remoteDialog);
}
-void GitPlugin::initRepository()
+void GitPluginPrivate::initRepository()
{
createRepository();
}
-void GitPlugin::stashList()
+void GitPluginPrivate::stashList()
{
showNonModalDialog(currentState().topLevel(), m_stashDialog);
}
-void GitPlugin::updateActions(VcsBasePlugin::ActionState as)
+void GitPluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as)
{
const VcsBasePluginState state = currentState();
const bool repositoryEnabled = state.hasTopLevel();
@@ -1386,7 +1399,7 @@ void GitPlugin::updateActions(VcsBasePlugin::ActionState as)
m_gerritPlugin->updateActions(state);
}
-void GitPlugin::updateContinueAndAbortCommands()
+void GitPluginPrivate::updateContinueAndAbortCommands()
{
if (currentState().hasTopLevel()) {
GitClient::CommandInProgress gitCommandInProgress =
@@ -1419,18 +1432,18 @@ void GitPlugin::updateContinueAndAbortCommands()
}
}
-void GitPlugin::delayedPushToGerrit()
+void GitPluginPrivate::delayedPushToGerrit()
{
m_gerritPlugin->push(m_submitRepository);
}
-void GitPlugin::updateBranches(const QString &repository)
+void GitPluginPrivate::updateBranches(const QString &repository)
{
if (m_branchViewFactory && m_branchViewFactory->view())
m_branchViewFactory->view()->refreshIfSame(repository);
}
-void GitPlugin::updateCurrentBranch()
+void GitPluginPrivate::updateCurrentBranch()
{
if (m_branchViewFactory && m_branchViewFactory->view())
m_branchViewFactory->view()->refreshCurrentBranch();
@@ -1439,15 +1452,15 @@ void GitPlugin::updateCurrentBranch()
QObject *GitPlugin::remoteCommand(const QStringList &options, const QString &workingDirectory,
const QStringList &)
{
- if (!m_gitClient || options.size() < 2)
+ if (!GitPluginPrivate::client() || options.size() < 2)
return nullptr;
if (options.first() == "-git-show")
- m_gitClient->show(workingDirectory, options.at(1));
+ GitPluginPrivate::client()->show(workingDirectory, options.at(1));
return nullptr;
}
-void GitPlugin::updateRepositoryBrowserAction()
+void GitPluginPrivate::updateRepositoryBrowserAction()
{
const bool repositoryEnabled = currentState().hasTopLevel();
const bool hasRepositoryBrowserCmd
@@ -1455,7 +1468,7 @@ void GitPlugin::updateRepositoryBrowserAction()
m_repositoryBrowserAction->setEnabled(repositoryEnabled && hasRepositoryBrowserCmd);
}
-Gerrit::Internal::GerritPlugin *GitPlugin::gerritPlugin() const
+Gerrit::Internal::GerritPlugin *GitPluginPrivate::gerritPlugin() const
{
return m_gerritPlugin;
}
diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h
index 1054adffe7..7ea9b34e56 100644
--- a/src/plugins/git/gitplugin.h
+++ b/src/plugins/git/gitplugin.h
@@ -67,20 +67,17 @@ class RemoteDialog;
using GitClientMemberFunc = void (GitClient::*)(const QString &);
-class GitPlugin : public VcsBase::VcsBasePlugin
+class GitPluginPrivate final : public VcsBase::VcsBasePluginPrivate
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Git.json")
public:
- GitPlugin();
- ~GitPlugin() override;
+ GitPluginPrivate();
+ ~GitPluginPrivate() final;
- static GitPlugin *instance();
+ static GitPluginPrivate *instance();
static GitClient *client();
- bool initialize(const QStringList &arguments, QString *errorMessage) override;
-
GitVersionControl *gitVersionControl() const;
Gerrit::Internal::GerritPlugin *gerritPlugin() const;
@@ -91,27 +88,14 @@ public:
void updateBranches(const QString &repository);
void updateCurrentBranch();
- QObject *remoteCommand(const QStringList &options, const QString &workingDirectory,
- const QStringList &args) override;
void manageRemotes();
void initRepository();
void startRebaseFromCommit(const QString &workingDirectory, QString commit);
protected:
- void updateActions(VcsBase::VcsBasePlugin::ActionState) override;
+ void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override;
bool submitEditorAboutToClose() override;
-#ifdef WITH_TESTS
-private slots:
- void testStatusParsing_data();
- void testStatusParsing();
- void testDiffFileResolving_data();
- void testDiffFileResolving();
- void testLogResolving();
- void testGitRemote_data();
- void testGitRemote();
-#endif
-
private:
void diffCurrentFile();
void diffCurrentProject();
@@ -169,7 +153,7 @@ private:
QAction *createProjectAction(Core::ActionContainer *ac,
const QString &defaultText, const QString &parameterText,
Core::Id id, const Core::Context &context, bool addToLocator,
- void (GitPlugin::*func)(),
+ void (GitPluginPrivate::*func)(),
const QKeySequence &keys = QKeySequence());
QAction *createRepositoryAction(Core::ActionContainer *ac, const QString &text, Core::Id id,
@@ -222,5 +206,32 @@ private:
bool m_submitActionTriggered = false;
};
+class GitPlugin final : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Git.json")
+
+public:
+ ~GitPlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *errorMessage) final;
+ void extensionsInitialized() final;
+
+ QObject *remoteCommand(const QStringList &options, const QString &workingDirectory,
+ const QStringList &args) final;
+
+#ifdef WITH_TESTS
+private slots:
+ void testStatusParsing_data();
+ void testStatusParsing();
+ void testDiffFileResolving_data();
+ void testDiffFileResolving();
+ void testLogResolving();
+ void testGitRemote_data();
+ void testGitRemote();
+#endif
+
+};
+
} // namespace Internal
} // namespace Git
diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp
index be37166844..08541b846c 100644
--- a/src/plugins/git/gitsubmiteditor.cpp
+++ b/src/plugins/git/gitsubmiteditor.cpp
@@ -88,7 +88,7 @@ CommitDataFetchResult CommitDataFetchResult::fetch(CommitType commitType, const
CommitDataFetchResult result;
result.commitData.commitType = commitType;
QString commitTemplate;
- result.success = GitPlugin::client()->getCommitData(workingDirectory, &commitTemplate,
+ result.success = GitPluginPrivate::client()->getCommitData(workingDirectory, &commitTemplate,
result.commitData, &result.errorMessage);
return result;
}
@@ -103,7 +103,7 @@ GitSubmitEditor::GitSubmitEditor(const VcsBaseSubmitEditorParameters *parameters
{
connect(this, &VcsBaseSubmitEditor::diffSelectedRows, this, &GitSubmitEditor::slotDiffSelected);
connect(submitEditorWidget(), &GitSubmitEditorWidget::show, this, &GitSubmitEditor::showCommit);
- connect(GitPlugin::instance()->versionControl(), &Core::IVersionControl::repositoryChanged,
+ connect(GitPluginPrivate::instance()->versionControl(), &Core::IVersionControl::repositoryChanged,
this, &GitSubmitEditor::forceUpdateFileModel);
connect(&m_fetchWatcher, &QFutureWatcher<CommitDataFetchResult>::finished,
this, &GitSubmitEditor::commitDataRetrieved);
@@ -202,15 +202,15 @@ void GitSubmitEditor::slotDiffSelected(const QList<int> &rows)
}
}
if (!unstagedFiles.empty() || !stagedFiles.empty())
- GitPlugin::client()->diffFiles(m_workingDirectory, unstagedFiles, stagedFiles);
+ GitPluginPrivate::client()->diffFiles(m_workingDirectory, unstagedFiles, stagedFiles);
if (!unmergedFiles.empty())
- GitPlugin::client()->merge(m_workingDirectory, unmergedFiles);
+ GitPluginPrivate::client()->merge(m_workingDirectory, unmergedFiles);
}
void GitSubmitEditor::showCommit(const QString &commit)
{
if (!m_workingDirectory.isEmpty())
- GitPlugin::client()->show(m_workingDirectory, commit);
+ GitPluginPrivate::client()->show(m_workingDirectory, commit);
}
void GitSubmitEditor::updateFileModel()
@@ -230,7 +230,7 @@ void GitSubmitEditor::updateFileModel()
Core::ProgressManager::addTask(m_fetchWatcher.future(), tr("Refreshing Commit Data"),
TASK_UPDATE_COMMIT);
- GitPlugin::client()->addFuture(m_fetchWatcher.future());
+ GitPluginPrivate::client()->addFuture(m_fetchWatcher.future());
}
void GitSubmitEditor::forceUpdateFileModel()
diff --git a/src/plugins/git/logchangedialog.cpp b/src/plugins/git/logchangedialog.cpp
index e57dda49e0..93186c01e1 100644
--- a/src/plugins/git/logchangedialog.cpp
+++ b/src/plugins/git/logchangedialog.cpp
@@ -79,7 +79,7 @@ bool LogChangeWidget::init(const QString &repository, const QString &commit, Log
return true;
if (!(flags & Silent)) {
VcsOutputWindow::appendError(
- GitPlugin::client()->msgNoCommits(flags & IncludeRemotes));
+ GitPluginPrivate::client()->msgNoCommits(flags & IncludeRemotes));
}
return false;
}
@@ -159,7 +159,7 @@ bool LogChangeWidget::populateLog(const QString &repository, const QString &comm
arguments << "--not" << "--remotes";
arguments << "--";
QString output;
- if (!GitPlugin::client()->synchronousLog(repository, arguments, &output, nullptr, VcsCommand::NoOutput))
+ if (!GitPluginPrivate::client()->synchronousLog(repository, arguments, &output, nullptr, VcsCommand::NoOutput))
return false;
const QStringList lines = output.split('\n');
for (const QString &line : lines) {
@@ -211,7 +211,7 @@ LogChangeDialog::LogChangeDialog(bool isReset, QWidget *parent) :
m_resetTypeComboBox->addItem(tr("Hard"), "--hard");
m_resetTypeComboBox->addItem(tr("Mixed"), "--mixed");
m_resetTypeComboBox->addItem(tr("Soft"), "--soft");
- m_resetTypeComboBox->setCurrentIndex(GitPlugin::client()->settings().intValue(
+ m_resetTypeComboBox->setCurrentIndex(GitPluginPrivate::client()->settings().intValue(
GitSettings::lastResetIndexKey));
popUpLayout->addWidget(m_resetTypeComboBox);
popUpLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
@@ -240,7 +240,7 @@ bool LogChangeDialog::runDialog(const QString &repository,
if (QDialog::exec() == QDialog::Accepted) {
if (m_resetTypeComboBox) {
- GitPlugin::client()->settings().setValue(GitSettings::lastResetIndexKey,
+ GitPluginPrivate::client()->settings().setValue(GitSettings::lastResetIndexKey,
m_resetTypeComboBox->currentIndex());
}
return true;
diff --git a/src/plugins/git/mergetool.cpp b/src/plugins/git/mergetool.cpp
index 9878ad900b..dae5d6939c 100644
--- a/src/plugins/git/mergetool.cpp
+++ b/src/plugins/git/mergetool.cpp
@@ -61,7 +61,7 @@ bool MergeTool::start(const QString &workingDirectory, const QStringList &files)
m_process->setWorkingDirectory(workingDirectory);
m_process->setProcessEnvironment(env);
m_process->setProcessChannelMode(QProcess::MergedChannels);
- const Utils::FilePath binary = GitPlugin::client()->vcsBinary();
+ const Utils::FilePath binary = GitPluginPrivate::client()->vcsBinary();
VcsOutputWindow::appendCommand(workingDirectory, {binary, arguments});
m_process->start(binary.toString(), arguments);
if (m_process->waitForStarted()) {
@@ -264,8 +264,8 @@ void MergeTool::done()
VcsOutputWindow::appendError(tr("Merge tool process terminated with exit code %1")
.arg(exitCode));
}
- GitPlugin::client()->continueCommandIfNeeded(workingDirectory, exitCode == 0);
- GitPlugin::instance()->gitVersionControl()->emitRepositoryChanged(workingDirectory);
+ GitPluginPrivate::client()->continueCommandIfNeeded(workingDirectory, exitCode == 0);
+ GitPluginPrivate::instance()->gitVersionControl()->emitRepositoryChanged(workingDirectory);
deleteLater();
}
diff --git a/src/plugins/git/remotedialog.cpp b/src/plugins/git/remotedialog.cpp
index 50b7a994f2..47432b05e5 100644
--- a/src/plugins/git/remotedialog.cpp
+++ b/src/plugins/git/remotedialog.cpp
@@ -49,7 +49,7 @@ class RemoteAdditionDialog : public QDialog
{
public:
RemoteAdditionDialog(const QStringList &remoteNames) :
- m_invalidRemoteNameChars(GitPlugin::invalidBranchAndRemoteNamePattern()),
+ m_invalidRemoteNameChars(GitPluginPrivate::invalidBranchAndRemoteNamePattern()),
m_remoteNames(remoteNames)
{
m_ui.setupUi(this);
@@ -157,7 +157,7 @@ void RemoteDialog::refresh(const QString &repository, bool force)
if (m_remoteModel->workingDirectory() == repository && !force)
return;
// Refresh
- m_ui->repositoryLabel->setText(GitPlugin::msgRepositoryLabel(repository));
+ m_ui->repositoryLabel->setText(GitPluginPrivate::msgRepositoryLabel(repository));
if (repository.isEmpty()) {
m_remoteModel->clear();
} else {
@@ -205,7 +205,7 @@ void RemoteDialog::pushToRemote()
const int row = indexList.at(0).row();
const QString remoteName = m_remoteModel->remoteName(row);
- GitPlugin::client()->push(m_remoteModel->workingDirectory(), {remoteName});
+ GitPluginPrivate::client()->push(m_remoteModel->workingDirectory(), {remoteName});
}
void RemoteDialog::fetchFromRemote()
@@ -216,7 +216,7 @@ void RemoteDialog::fetchFromRemote()
int row = indexList.at(0).row();
const QString remoteName = m_remoteModel->remoteName(row);
- GitPlugin::client()->fetch(m_remoteModel->workingDirectory(), remoteName);
+ GitPluginPrivate::client()->fetch(m_remoteModel->workingDirectory(), remoteName);
}
void RemoteDialog::updateButtonState()
diff --git a/src/plugins/git/remotemodel.cpp b/src/plugins/git/remotemodel.cpp
index 0a0f30c1b4..69b9eb11ae 100644
--- a/src/plugins/git/remotemodel.cpp
+++ b/src/plugins/git/remotemodel.cpp
@@ -55,7 +55,7 @@ bool RemoteModel::removeRemote(int row)
{
QString output;
QString error;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitPluginPrivate::client()->synchronousRemoteCmd(
m_workingDirectory, {"rm", remoteName(row)}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -69,7 +69,7 @@ bool RemoteModel::addRemote(const QString &name, const QString &url)
if (name.isEmpty() || url.isEmpty())
return false;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitPluginPrivate::client()->synchronousRemoteCmd(
m_workingDirectory, {"add", name, url}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -80,7 +80,7 @@ bool RemoteModel::renameRemote(const QString &oldName, const QString &newName)
{
QString output;
QString error;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitPluginPrivate::client()->synchronousRemoteCmd(
m_workingDirectory, {"rename", oldName, newName}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -91,7 +91,7 @@ bool RemoteModel::updateUrl(const QString &name, const QString &newUrl)
{
QString output;
QString error;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitPluginPrivate::client()->synchronousRemoteCmd(
m_workingDirectory, {"set-url", name, newUrl}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -186,7 +186,7 @@ bool RemoteModel::refresh(const QString &workingDirectory, QString *errorMessage
// get list of remotes.
QMap<QString,QString> remotesList
- = GitPlugin::client()->synchronousRemotesList(workingDirectory, errorMessage);
+ = GitPluginPrivate::client()->synchronousRemotesList(workingDirectory, errorMessage);
beginResetModel();
m_remotes.clear();
diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp
index 2e54beb2b9..3e2ec951c6 100644
--- a/src/plugins/git/settingspage.cpp
+++ b/src/plugins/git/settingspage.cpp
@@ -124,7 +124,7 @@ void SettingsPageWidget::updateNoteField()
// -------- SettingsPage
SettingsPage::SettingsPage(Core::IVersionControl *control, QObject *parent) :
- VcsClientOptionsPage(control, GitPlugin::client(), parent)
+ VcsClientOptionsPage(control, GitPluginPrivate::client(), parent)
{
setId(VcsBase::Constants::VCS_ID_GIT);
setDisplayName(SettingsPageWidget::tr("Git"));
diff --git a/src/plugins/git/stashdialog.cpp b/src/plugins/git/stashdialog.cpp
index e20cb6dcc8..9ecb77168d 100644
--- a/src/plugins/git/stashdialog.cpp
+++ b/src/plugins/git/stashdialog.cpp
@@ -157,12 +157,12 @@ void StashDialog::refresh(const QString &repository, bool force)
return;
// Refresh
m_repository = repository;
- ui->repositoryLabel->setText(GitPlugin::msgRepositoryLabel(repository));
+ ui->repositoryLabel->setText(GitPluginPrivate::msgRepositoryLabel(repository));
if (m_repository.isEmpty()) {
m_model->setStashes(QList<Stash>());
} else {
QList<Stash> stashes;
- GitPlugin::client()->synchronousStashList(m_repository, &stashes);
+ GitPluginPrivate::client()->synchronousStashList(m_repository, &stashes);
m_model->setStashes(stashes);
if (!stashes.isEmpty()) {
for (int c = 0; c < ColumnCount; c++)
@@ -178,7 +178,7 @@ void StashDialog::deleteAll()
if (!ask(title, tr("Do you want to delete all stashes?")))
return;
QString errorMessage;
- if (GitPlugin::client()->synchronousStashRemove(m_repository, QString(), &errorMessage))
+ if (GitPluginPrivate::client()->synchronousStashRemove(m_repository, QString(), &errorMessage))
refresh(m_repository, true);
else
warning(title, errorMessage);
@@ -195,7 +195,7 @@ void StashDialog::deleteSelection()
QStringList errors;
// Delete in reverse order as stashes rotate
for (int r = rows.size() - 1; r >= 0; r--)
- if (!GitPlugin::client()->synchronousStashRemove(m_repository, m_model->at(rows.at(r)).name, &errorMessage))
+ if (!GitPluginPrivate::client()->synchronousStashRemove(m_repository, m_model->at(rows.at(r)).name, &errorMessage))
errors.push_back(errorMessage);
refresh(m_repository, true);
if (!errors.isEmpty())
@@ -206,7 +206,7 @@ void StashDialog::showCurrent()
{
const int index = currentRow();
QTC_ASSERT(index >= 0, return);
- GitPlugin::client()->show(m_repository, QString(m_model->at(index).name));
+ GitPluginPrivate::client()->show(m_repository, QString(m_model->at(index).name));
}
// Suggest Branch name to restore 'stash@{0}' -> 'stash0-date'
@@ -267,7 +267,7 @@ bool StashDialog::promptForRestore(QString *stash,
{
const QString stashIn = *stash;
bool modifiedPromptShown = false;
- switch (GitPlugin::client()->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules), nullptr, errorMessage)) {
+ switch (GitPluginPrivate::client()->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules), nullptr, errorMessage)) {
case GitClient::StatusFailed:
return false;
case GitClient::StatusChanged: {
@@ -275,13 +275,13 @@ bool StashDialog::promptForRestore(QString *stash,
case ModifiedRepositoryCancel:
return false;
case ModifiedRepositoryStash:
- if (GitPlugin::client()->synchronousStash(m_repository, QString(), GitClient::StashPromptDescription).isEmpty())
+ if (GitPluginPrivate::client()->synchronousStash(m_repository, QString(), GitClient::StashPromptDescription).isEmpty())
return false;
*stash = nextStash(*stash); // Our stash id to be restored changed
QTC_ASSERT(!stash->isEmpty(), return false);
break;
case ModifiedRepositoryDiscard:
- if (!GitPlugin::client()->synchronousReset(m_repository))
+ if (!GitPluginPrivate::client()->synchronousReset(m_repository))
return false;
break;
}
@@ -318,7 +318,7 @@ void StashDialog::restoreCurrent()
// Make sure repository is not modified, restore. The command will
// output to window on success.
if (promptForRestore(&name, nullptr, &errorMessage)
- && GitPlugin::client()->synchronousStashRestore(m_repository, name)) {
+ && GitPluginPrivate::client()->synchronousStashRestore(m_repository, name)) {
refresh(m_repository, true); // Might have stashed away local changes.
} else if (!errorMessage.isEmpty()) {
warning(msgRestoreFailedTitle(name), errorMessage);
@@ -333,7 +333,7 @@ void StashDialog::restoreCurrentInBranch()
QString branch;
QString name = m_model->at(index).name;
if (promptForRestore(&name, &branch, &errorMessage)
- && GitPlugin::client()->synchronousStashRestore(m_repository, name, false, branch)) {
+ && GitPluginPrivate::client()->synchronousStashRestore(m_repository, name, false, branch)) {
refresh(m_repository, true); // git deletes the stash, unfortunately.
} else if (!errorMessage.isEmpty()) {
warning(msgRestoreFailedTitle(name), errorMessage);
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index 766138cf3b..92037899f6 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -66,7 +66,7 @@ protected:
};
MercurialDiffEditorController::MercurialDiffEditorController(IDocument *document, const QString &workingDirectory):
- VcsBaseDiffEditorController(document, MercurialPlugin::client(), workingDirectory)
+ VcsBaseDiffEditorController(document, MercurialPluginPrivate::client(), workingDirectory)
{
setDisplayName("Hg Diff");
}
diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp
index 4dee28ca65..290d071d00 100644
--- a/src/plugins/mercurial/mercurialeditor.cpp
+++ b/src/plugins/mercurial/mercurialeditor.cpp
@@ -94,7 +94,7 @@ QString MercurialEditorWidget::decorateVersion(const QString &revision) const
const QFileInfo fi(source());
const QString workingDirectory = fi.absolutePath();
// Format with short summary
- return MercurialPlugin::client()->shortDescriptionSync(workingDirectory, revision);
+ return MercurialPluginPrivate::client()->shortDescriptionSync(workingDirectory, revision);
}
QStringList MercurialEditorWidget::annotationPreviousVersions(const QString &revision) const
@@ -102,7 +102,7 @@ QStringList MercurialEditorWidget::annotationPreviousVersions(const QString &rev
const QFileInfo fi(source());
const QString workingDirectory = fi.absolutePath();
// Retrieve parent revisions
- return MercurialPlugin::client()->parentRevisionsSync(workingDirectory, fi.fileName(), revision);
+ return MercurialPluginPrivate::client()->parentRevisionsSync(workingDirectory, fi.fileName(), revision);
}
} // namespace Internal
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index 7899f269da..4e6296228d 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -100,25 +100,44 @@ static const VcsBaseSubmitEditorParameters submitEditorParameters = {
VcsBaseSubmitEditorParameters::DiffFiles
};
-MercurialPlugin *MercurialPlugin::m_instance = nullptr;
+static MercurialPluginPrivate *dd = nullptr;
-MercurialPlugin::MercurialPlugin()
+MercurialPluginPrivate::~MercurialPluginPrivate()
{
- m_instance = this;
+ delete m_client;
+ m_client = nullptr;
}
MercurialPlugin::~MercurialPlugin()
{
- if (m_client) {
- delete m_client;
- m_client = nullptr;
- }
+ delete dd;
+ dd = nullptr;
+}
+
+MercurialPluginPrivate *MercurialPluginPrivate::instance()
+{
+ return dd;
+}
- m_instance = nullptr;
+MercurialClient *MercurialPluginPrivate::client()
+{
+ return dd->m_client;
}
bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString * /*errorMessage */)
{
+ dd = new MercurialPluginPrivate;
+ return true;
+}
+
+void MercurialPlugin::extensionsInitialized()
+{
+ dd->extensionsInitialized();
+}
+
+MercurialPluginPrivate::MercurialPluginPrivate()
+{
+ dd = this;
Core::Context context(Constants::MERCURIAL_CONTEXT);
m_client = new MercurialClient;
@@ -128,7 +147,7 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString *
new OptionsPage(vc, this);
connect(m_client, &VcsBaseClient::changed, vc, &MercurialControl::changed);
- connect(m_client, &MercurialClient::needUpdate, this, &MercurialPlugin::update);
+ connect(m_client, &MercurialClient::needUpdate, this, &MercurialPluginPrivate::update);
const auto describeFunc = [this](const QString &source, const QString &id) {
m_client->view(source, id);
@@ -144,11 +163,9 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString *
m_commandLocator = new Core::CommandLocator("Mercurial", prefix, prefix, this);
createMenu(context);
-
- return true;
}
-void MercurialPlugin::createMenu(const Core::Context &context)
+void MercurialPluginPrivate::createMenu(const Core::Context &context)
{
// Create menu item for Mercurial
m_mercurialContainer = Core::ActionManager::createMenu("Mercurial.MercurialMenu");
@@ -168,14 +185,14 @@ void MercurialPlugin::createMenu(const Core::Context &context)
m_menuAction = m_mercurialContainer->menu()->menuAction();
}
-void MercurialPlugin::createFileActions(const Core::Context &context)
+void MercurialPluginPrivate::createFileActions(const Core::Context &context)
{
Core::Command *command;
annotateFile = new ParameterAction(tr("Annotate Current File"), tr("Annotate \"%1\""), ParameterAction::EnabledWithParameter, this);
command = Core::ActionManager::registerAction(annotateFile, Core::Id(Constants::ANNOTATE), context);
command->setAttribute(Core::Command::CA_UpdateText);
- connect(annotateFile, &QAction::triggered, this, &MercurialPlugin::annotateCurrentFile);
+ connect(annotateFile, &QAction::triggered, this, &MercurialPluginPrivate::annotateCurrentFile);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -183,7 +200,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context)
command = Core::ActionManager::registerAction(diffFile, Core::Id(Constants::DIFF), context);
command->setAttribute(Core::Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+H,Meta+D") : tr("Alt+G,Alt+D")));
- connect(diffFile, &QAction::triggered, this, &MercurialPlugin::diffCurrentFile);
+ connect(diffFile, &QAction::triggered, this, &MercurialPluginPrivate::diffCurrentFile);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -191,7 +208,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context)
command = Core::ActionManager::registerAction(logFile, Core::Id(Constants::LOG), context);
command->setAttribute(Core::Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+H,Meta+L") : tr("Alt+G,Alt+L")));
- connect(logFile, &QAction::triggered, this, &MercurialPlugin::logCurrentFile);
+ connect(logFile, &QAction::triggered, this, &MercurialPluginPrivate::logCurrentFile);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -199,7 +216,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context)
command = Core::ActionManager::registerAction(statusFile, Core::Id(Constants::STATUS), context);
command->setAttribute(Core::Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+H,Meta+S") : tr("Alt+G,Alt+S")));
- connect(statusFile, &QAction::triggered, this, &MercurialPlugin::statusCurrentFile);
+ connect(statusFile, &QAction::triggered, this, &MercurialPluginPrivate::statusCurrentFile);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -208,33 +225,33 @@ void MercurialPlugin::createFileActions(const Core::Context &context)
m_addAction = new ParameterAction(tr("Add"), tr("Add \"%1\""), ParameterAction::EnabledWithParameter, this);
command = Core::ActionManager::registerAction(m_addAction, Core::Id(Constants::ADD), context);
command->setAttribute(Core::Command::CA_UpdateText);
- connect(m_addAction, &QAction::triggered, this, &MercurialPlugin::addCurrentFile);
+ connect(m_addAction, &QAction::triggered, this, &MercurialPluginPrivate::addCurrentFile);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_deleteAction = new ParameterAction(tr("Delete..."), tr("Delete \"%1\"..."), ParameterAction::EnabledWithParameter, this);
command = Core::ActionManager::registerAction(m_deleteAction, Core::Id(Constants::DELETE), context);
command->setAttribute(Core::Command::CA_UpdateText);
- connect(m_deleteAction, &QAction::triggered, this, &MercurialPlugin::promptToDeleteCurrentFile);
+ connect(m_deleteAction, &QAction::triggered, this, &MercurialPluginPrivate::promptToDeleteCurrentFile);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
revertFile = new ParameterAction(tr("Revert Current File..."), tr("Revert \"%1\"..."), ParameterAction::EnabledWithParameter, this);
command = Core::ActionManager::registerAction(revertFile, Core::Id(Constants::REVERT), context);
command->setAttribute(Core::Command::CA_UpdateText);
- connect(revertFile, &QAction::triggered, this, &MercurialPlugin::revertCurrentFile);
+ connect(revertFile, &QAction::triggered, this, &MercurialPluginPrivate::revertCurrentFile);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
}
-void MercurialPlugin::addCurrentFile()
+void MercurialPluginPrivate::addCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->synchronousAdd(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void MercurialPlugin::annotateCurrentFile()
+void MercurialPluginPrivate::annotateCurrentFile()
{
int currentLine = -1;
if (Core::IEditor *editor = Core::EditorManager::currentEditor())
@@ -244,14 +261,14 @@ void MercurialPlugin::annotateCurrentFile()
m_client->annotate(state.currentFileTopLevel(), state.relativeCurrentFile(), QString(), currentLine);
}
-void MercurialPlugin::diffCurrentFile()
+void MercurialPluginPrivate::diffCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->diff(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()));
}
-void MercurialPlugin::logCurrentFile()
+void MercurialPluginPrivate::logCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -259,7 +276,7 @@ void MercurialPlugin::logCurrentFile()
QStringList(), true);
}
-void MercurialPlugin::revertCurrentFile()
+void MercurialPluginPrivate::revertCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -270,59 +287,59 @@ void MercurialPlugin::revertCurrentFile()
m_client->revertFile(state.currentFileTopLevel(), state.relativeCurrentFile(), reverter.revision());
}
-void MercurialPlugin::statusCurrentFile()
+void MercurialPluginPrivate::statusCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
m_client->status(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void MercurialPlugin::createDirectoryActions(const Core::Context &context)
+void MercurialPluginPrivate::createDirectoryActions(const Core::Context &context)
{
auto action = new QAction(tr("Diff"), this);
m_repositoryActionList.append(action);
Core::Command *command = Core::ActionManager::registerAction(action, Core::Id(Constants::DIFFMULTI), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::diffRepository);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::diffRepository);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Log"), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::LOGMULTI), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::logRepository);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::logRepository);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Revert..."), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::REVERTMULTI), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::revertMulti);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::revertMulti);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Status"), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::STATUSMULTI), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::statusMulti);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::statusMulti);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
}
-void MercurialPlugin::diffRepository()
+void MercurialPluginPrivate::diffRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_client->diff(state.topLevel());
}
-void MercurialPlugin::logRepository()
+void MercurialPluginPrivate::logRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_client->log(state.topLevel());
}
-void MercurialPlugin::revertMulti()
+void MercurialPluginPrivate::revertMulti()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -333,7 +350,7 @@ void MercurialPlugin::revertMulti()
m_client->revertAll(state.topLevel(), reverter.revision());
}
-void MercurialPlugin::statusMulti()
+void MercurialPluginPrivate::statusMulti()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -341,47 +358,47 @@ void MercurialPlugin::statusMulti()
m_client->status(state.topLevel());
}
-void MercurialPlugin::createRepositoryActions(const Core::Context &context)
+void MercurialPluginPrivate::createRepositoryActions(const Core::Context &context)
{
auto action = new QAction(tr("Pull..."), this);
m_repositoryActionList.append(action);
Core::Command *command = Core::ActionManager::registerAction(action, Core::Id(Constants::PULL), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::pull);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::pull);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Push..."), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::PUSH), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::push);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::push);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Update..."), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::UPDATE), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::update);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::update);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Import..."), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::IMPORT), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::import);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::import);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Incoming..."), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::INCOMING), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::incoming);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::incoming);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
action = new QAction(tr("Outgoing..."), this);
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::OUTGOING), context);
- connect(action, &QAction::triggered, this, &MercurialPlugin::outgoing);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::outgoing);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -389,17 +406,17 @@ void MercurialPlugin::createRepositoryActions(const Core::Context &context)
m_repositoryActionList.append(action);
command = Core::ActionManager::registerAction(action, Core::Id(Constants::COMMIT), context);
command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+H,Meta+C") : tr("Alt+G,Alt+C")));
- connect(action, &QAction::triggered, this, &MercurialPlugin::commit);
+ connect(action, &QAction::triggered, this, &MercurialPluginPrivate::commit);
m_mercurialContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_createRepositoryAction = new QAction(tr("Create Repository..."), this);
command = Core::ActionManager::registerAction(m_createRepositoryAction, Core::Id(Constants::CREATE_REPOSITORY), context);
- connect(m_createRepositoryAction, &QAction::triggered, this, &MercurialPlugin::createRepository);
+ connect(m_createRepositoryAction, &QAction::triggered, this, &MercurialPluginPrivate::createRepository);
m_mercurialContainer->addAction(command);
}
-void MercurialPlugin::pull()
+void MercurialPluginPrivate::pull()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -411,7 +428,7 @@ void MercurialPlugin::pull()
m_client->synchronousPull(dialog.workingDir(), dialog.getRepositoryString());
}
-void MercurialPlugin::push()
+void MercurialPluginPrivate::push()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -423,7 +440,7 @@ void MercurialPlugin::push()
m_client->synchronousPush(dialog.workingDir(), dialog.getRepositoryString());
}
-void MercurialPlugin::update()
+void MercurialPluginPrivate::update()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -435,7 +452,7 @@ void MercurialPlugin::update()
m_client->update(state.topLevel(), updateDialog.revision());
}
-void MercurialPlugin::import()
+void MercurialPluginPrivate::import()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -451,7 +468,7 @@ void MercurialPlugin::import()
m_client->import(state.topLevel(), fileNames);
}
-void MercurialPlugin::incoming()
+void MercurialPluginPrivate::incoming()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -463,14 +480,14 @@ void MercurialPlugin::incoming()
m_client->incoming(state.topLevel(), dialog.getRepositoryString());
}
-void MercurialPlugin::outgoing()
+void MercurialPluginPrivate::outgoing()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_client->outgoing(state.topLevel());
}
-void MercurialPlugin::commit()
+void MercurialPluginPrivate::commit()
{
if (!promptBeforeCommit())
return;
@@ -483,14 +500,14 @@ void MercurialPlugin::commit()
m_submitRepository = state.topLevel();
- connect(m_client, &MercurialClient::parsedStatus, this, &MercurialPlugin::showCommitWidget);
+ connect(m_client, &MercurialClient::parsedStatus, this, &MercurialPluginPrivate::showCommitWidget);
m_client->emitParsedStatus(m_submitRepository);
}
-void MercurialPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &status)
+void MercurialPluginPrivate::showCommitWidget(const QList<VcsBaseClient::StatusItem> &status)
{
//Once we receive our data release the connection so it can be reused elsewhere
- disconnect(m_client, &MercurialClient::parsedStatus, this, &MercurialPlugin::showCommitWidget);
+ disconnect(m_client, &MercurialClient::parsedStatus, this, &MercurialPluginPrivate::showCommitWidget);
if (status.isEmpty()) {
VcsOutputWindow::appendError(tr("There are no changes to commit."));
@@ -518,7 +535,7 @@ void MercurialPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &s
setSubmitEditor(commitEditor);
connect(commitEditor, &VcsBaseSubmitEditor::diffSelectedFiles,
- this, &MercurialPlugin::diffFromEditorSelected);
+ this, &MercurialPluginPrivate::diffFromEditorSelected);
commitEditor->setCheckScriptWorkingDirectory(m_submitRepository);
const QString msg = tr("Commit changes for \"%1\".").
@@ -531,12 +548,12 @@ void MercurialPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &s
m_client->settings().stringValue(MercurialSettings::userEmailKey), status);
}
-void MercurialPlugin::diffFromEditorSelected(const QStringList &files)
+void MercurialPluginPrivate::diffFromEditorSelected(const QStringList &files)
{
m_client->diff(m_submitRepository, files);
}
-void MercurialPlugin::commitFromEditor()
+void MercurialPluginPrivate::commitFromEditor()
{
// Close the submit editor
m_submitActionTriggered = true;
@@ -544,7 +561,7 @@ void MercurialPlugin::commitFromEditor()
Core::EditorManager::closeDocument(submitEditor()->document());
}
-bool MercurialPlugin::submitEditorAboutToClose()
+bool MercurialPluginPrivate::submitEditorAboutToClose()
{
auto commitEditor = qobject_cast<CommitEditor *>(submitEditor());
QTC_ASSERT(commitEditor, return true);
@@ -579,7 +596,7 @@ bool MercurialPlugin::submitEditorAboutToClose()
return true;
}
-void MercurialPlugin::updateActions(VcsBasePlugin::ActionState as)
+void MercurialPluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as)
{
if (!enableMenuAction(as, m_menuAction)) {
m_commandLocator->setEnabled(false);
diff --git a/src/plugins/mercurial/mercurialplugin.h b/src/plugins/mercurial/mercurialplugin.h
index 696d77d491..8964ba4e71 100644
--- a/src/plugins/mercurial/mercurialplugin.h
+++ b/src/plugins/mercurial/mercurialplugin.h
@@ -49,31 +49,21 @@ namespace Internal {
class OptionsPage;
class MercurialClient;
-class MercurialPlugin : public VcsBase::VcsBasePlugin
+class MercurialPluginPrivate final : public VcsBase::VcsBasePluginPrivate
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Mercurial.json")
public:
- MercurialPlugin();
- ~MercurialPlugin() override;
-
- bool initialize(const QStringList &arguments, QString *errorMessage) override;
+ MercurialPluginPrivate();
+ ~MercurialPluginPrivate() final;
- static MercurialPlugin *instance() { return m_instance; }
- static MercurialClient *client() { return m_instance->m_client; }
+ static MercurialPluginPrivate *instance();
+ static MercurialClient *client();
protected:
- void updateActions(VcsBase::VcsBasePlugin::ActionState) override;
+ void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override;
bool submitEditorAboutToClose() override;
-#ifdef WITH_TESTS
-private slots:
- void testDiffFileResolving_data();
- void testDiffFileResolving();
- void testLogResolving();
-#endif
-
private:
// File menu action slots
void addCurrentFile();
@@ -121,7 +111,6 @@ private:
void createRepositoryActions(const Core::Context &context);
// Variables
- static MercurialPlugin *m_instance;
OptionsPage *optionsPage = nullptr;
MercurialClient *m_client = nullptr;
@@ -148,5 +137,24 @@ private:
bool m_submitActionTriggered = false;
};
+class MercurialPlugin final : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Mercurial.json")
+
+ ~MercurialPlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *errorMessage) final;
+ void extensionsInitialized() final;
+
+#ifdef WITH_TESTS
+private slots:
+ void testDiffFileResolving_data();
+ void testDiffFileResolving();
+ void testLogResolving();
+#endif
+
+};
+
} // namespace Internal
} // namespace Mercurial
diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp
index 6611580ed6..e7b5b9a236 100644
--- a/src/plugins/mercurial/optionspage.cpp
+++ b/src/plugins/mercurial/optionspage.cpp
@@ -61,7 +61,7 @@ OptionsPageWidget::OptionsPageWidget(Core::IVersionControl *control)
m_ui.commandChooser->setHistoryCompleter(QLatin1String("Mercurial.Command.History"));
m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command"));
- const VcsBaseClientSettings &s = MercurialPlugin::client()->settings();
+ const VcsBaseClientSettings &s = MercurialPluginPrivate::client()->settings();
m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey));
m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey));
@@ -79,7 +79,7 @@ void OptionsPageWidget::apply()
ms.setValue(MercurialSettings::logCountKey, m_ui.logEntriesCount->value());
ms.setValue(MercurialSettings::timeoutKey, m_ui.timeout->value());
- VcsBaseClientSettings &s = MercurialPlugin::client()->settings();
+ VcsBaseClientSettings &s = MercurialPluginPrivate::client()->settings();
if (s != ms) {
s = ms;
m_control->configurationChanged();
diff --git a/src/plugins/mercurial/srcdestdialog.cpp b/src/plugins/mercurial/srcdestdialog.cpp
index 7f0011b684..b546a02990 100644
--- a/src/plugins/mercurial/srcdestdialog.cpp
+++ b/src/plugins/mercurial/srcdestdialog.cpp
@@ -97,8 +97,7 @@ QString SrcDestDialog::workingDir() const
QUrl SrcDestDialog::getRepoUrl() const
{
- MercurialPlugin *plugin = MercurialPlugin::instance();
- const VcsBasePluginState state = plugin->currentState();
+ const VcsBasePluginState state = MercurialPluginPrivate::instance()->currentState();
// Repo to use: Default to the project repo, but use the current
const QString projectLoc = state.currentProjectPath();
const QString fileLoc = state.currentFileTopLevel();
diff --git a/src/plugins/perforce/perforceeditor.cpp b/src/plugins/perforce/perforceeditor.cpp
index e686d4e427..3494c30a1a 100644
--- a/src/plugins/perforce/perforceeditor.cpp
+++ b/src/plugins/perforce/perforceeditor.cpp
@@ -106,7 +106,7 @@ VcsBase::BaseAnnotationHighlighter *PerforceEditorWidget::createAnnotationHighli
QString PerforceEditorWidget::findDiffFile(const QString &f) const
{
QString errorMessage;
- const QString fileName = PerforcePlugin::fileNameFromPerforceName(f.trimmed(), false, &errorMessage);
+ const QString fileName = PerforcePluginPrivate::fileNameFromPerforceName(f.trimmed(), false, &errorMessage);
if (fileName.isEmpty())
qWarning("%s", qPrintable(errorMessage));
return fileName;
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index e1a933cd54..bea2cc0f83 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -168,7 +168,13 @@ PerforceResponse::PerforceResponse() :
{
}
-PerforcePlugin *PerforcePlugin::m_instance = nullptr;
+static PerforcePluginPrivate *dd = nullptr;
+
+PerforcePlugin::~PerforcePlugin()
+{
+ delete dd;
+ dd = nullptr;
+}
static const VcsBaseSubmitEditorParameters submitParameters = {
SUBMIT_MIMETYPE,
@@ -180,12 +186,18 @@ static const VcsBaseSubmitEditorParameters submitParameters = {
bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *errorMessage)
{
Q_UNUSED(errorMessage)
+ dd = new PerforcePluginPrivate;
+ return true;
+}
+
+PerforcePluginPrivate::PerforcePluginPrivate()
+{
Context context(PERFORCE_CONTEXT);
auto vcsCtrl = new PerforceVersionControl(this);
initializeVcs(vcsCtrl, context);
- m_instance = this;
+ dd = this;
m_settings.fromSettings(ICore::settings());
@@ -219,7 +231,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command = ActionManager::registerAction(m_diffFileAction, CMD_ID_DIFF_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDescription(tr("Diff Current File"));
- connect(m_diffFileAction, &QAction::triggered, this, &PerforcePlugin::diffCurrentFile);
+ connect(m_diffFileAction, &QAction::triggered, this, &PerforcePluginPrivate::diffCurrentFile);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -227,7 +239,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command = ActionManager::registerAction(m_annotateCurrentAction, CMD_ID_ANNOTATE_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDescription(tr("Annotate Current File"));
- connect(m_annotateCurrentAction, &QAction::triggered, this, &PerforcePlugin::annotateCurrentFile);
+ connect(m_annotateCurrentAction, &QAction::triggered, this, &PerforcePluginPrivate::annotateCurrentFile);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -236,7 +248,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+P,Meta+F") : tr("Alt+P,Alt+F")));
command->setDescription(tr("Filelog Current File"));
- connect(m_filelogCurrentAction, &QAction::triggered, this, &PerforcePlugin::filelogCurrentFile);
+ connect(m_filelogCurrentAction, &QAction::triggered, this, &PerforcePluginPrivate::filelogCurrentFile);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -247,7 +259,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+P,Meta+E") : tr("Alt+P,Alt+E")));
command->setDescription(tr("Edit File"));
- connect(m_editAction, &QAction::triggered, this, &PerforcePlugin::openCurrentFile);
+ connect(m_editAction, &QAction::triggered, this, &PerforcePluginPrivate::openCurrentFile);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -256,7 +268,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+P,Meta+A") : tr("Alt+P,Alt+A")));
command->setDescription(tr("Add File"));
- connect(m_addAction, &QAction::triggered, this, &PerforcePlugin::addCurrentFile);
+ connect(m_addAction, &QAction::triggered, this, &PerforcePluginPrivate::addCurrentFile);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -264,7 +276,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command = ActionManager::registerAction(m_deleteAction, CMD_ID_DELETE_FILE, context);
command->setAttribute(Command::CA_UpdateText);
command->setDescription(tr("Delete File"));
- connect(m_deleteAction, &QAction::triggered, this, &PerforcePlugin::promptToDeleteCurrentFile);
+ connect(m_deleteAction, &QAction::triggered, this, &PerforcePluginPrivate::promptToDeleteCurrentFile);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -273,7 +285,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+P,Meta+R") : tr("Alt+P,Alt+R")));
command->setDescription(tr("Revert File"));
- connect(m_revertFileAction, &QAction::triggered, this, &PerforcePlugin::revertCurrentFile);
+ connect(m_revertFileAction, &QAction::triggered, this, &PerforcePluginPrivate::revertCurrentFile);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -285,14 +297,14 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+P,Meta+D") : tr("Alt+P,Alt+D")));
command->setDescription(diffProjectDefaultText);
- connect(m_diffProjectAction, &QAction::triggered, this, &PerforcePlugin::diffCurrentProject);
+ connect(m_diffProjectAction, &QAction::triggered, this, &PerforcePluginPrivate::diffCurrentProject);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_logProjectAction = new ParameterAction(tr("Log Project"), tr("Log Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_logProjectAction, CMD_ID_PROJECTLOG, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_logProjectAction, &QAction::triggered, this, &PerforcePlugin::logProject);
+ connect(m_logProjectAction, &QAction::triggered, this, &PerforcePluginPrivate::logProject);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -300,7 +312,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command = ActionManager::registerAction(m_submitProjectAction, CMD_ID_SUBMIT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+P,Meta+S") : tr("Alt+P,Alt+S")));
- connect(m_submitProjectAction, &QAction::triggered, this, &PerforcePlugin::startSubmitProject);
+ connect(m_submitProjectAction, &QAction::triggered, this, &PerforcePluginPrivate::startSubmitProject);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -309,21 +321,21 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
command = ActionManager::registerAction(m_updateProjectAction, CMD_ID_UPDATE_PROJECT, context);
command->setDescription(updateProjectDefaultText);
command->setAttribute(Command::CA_UpdateText);
- connect(m_updateProjectAction, &QAction::triggered, this, &PerforcePlugin::updateCurrentProject);
+ connect(m_updateProjectAction, &QAction::triggered, this, &PerforcePluginPrivate::updateCurrentProject);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_revertUnchangedAction = new ParameterAction(tr("Revert Unchanged"), tr("Revert Unchanged Files of Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_revertUnchangedAction, CMD_ID_REVERT_UNCHANGED_PROJECT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_revertUnchangedAction, &QAction::triggered, this, &PerforcePlugin::revertUnchangedCurrentProject);
+ connect(m_revertUnchangedAction, &QAction::triggered, this, &PerforcePluginPrivate::revertUnchangedCurrentProject);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_revertProjectAction = new ParameterAction(tr("Revert Project"), tr("Revert Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_revertProjectAction, CMD_ID_REVERT_PROJECT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_revertProjectAction, &QAction::triggered, this, &PerforcePlugin::revertCurrentProject);
+ connect(m_revertProjectAction, &QAction::triggered, this, &PerforcePluginPrivate::revertCurrentProject);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -331,32 +343,32 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
m_diffAllAction = new QAction(tr("Diff Opened Files"), this);
command = ActionManager::registerAction(m_diffAllAction, CMD_ID_DIFF_ALL, context);
- connect(m_diffAllAction, &QAction::triggered, this, &PerforcePlugin::diffAllOpened);
+ connect(m_diffAllAction, &QAction::triggered, this, &PerforcePluginPrivate::diffAllOpened);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_openedAction = new QAction(tr("Opened"), this);
command = ActionManager::registerAction(m_openedAction, CMD_ID_OPENED, context);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+P,Meta+O") : tr("Alt+P,Alt+O")));
- connect(m_openedAction, &QAction::triggered, this, &PerforcePlugin::printOpenedFileList);
+ connect(m_openedAction, &QAction::triggered, this, &PerforcePluginPrivate::printOpenedFileList);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_logRepositoryAction = new QAction(tr("Repository Log"), this);
command = ActionManager::registerAction(m_logRepositoryAction, CMD_ID_REPOSITORYLOG, context);
- connect(m_logRepositoryAction, &QAction::triggered, this, &PerforcePlugin::logRepository);
+ connect(m_logRepositoryAction, &QAction::triggered, this, &PerforcePluginPrivate::logRepository);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_pendingAction = new QAction(tr("Pending Changes..."), this);
command = ActionManager::registerAction(m_pendingAction, CMD_ID_PENDING_CHANGES, context);
- connect(m_pendingAction, &QAction::triggered, this, &PerforcePlugin::printPendingChanges);
+ connect(m_pendingAction, &QAction::triggered, this, &PerforcePluginPrivate::printPendingChanges);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
m_updateAllAction = new QAction(tr("Update All"), this);
command = ActionManager::registerAction(m_updateAllAction, CMD_ID_UPDATEALL, context);
- connect(m_updateAllAction, &QAction::triggered, this, &PerforcePlugin::updateAll);
+ connect(m_updateAllAction, &QAction::triggered, this, &PerforcePluginPrivate::updateAll);
perforceContainer->addAction(command);
m_commandLocator->appendCommand(command);
@@ -364,42 +376,41 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er
m_describeAction = new QAction(tr("Describe..."), this);
command = ActionManager::registerAction(m_describeAction, CMD_ID_DESCRIBE, context);
- connect(m_describeAction, &QAction::triggered, this, &PerforcePlugin::describeChange);
+ connect(m_describeAction, &QAction::triggered, this, &PerforcePluginPrivate::describeChange);
perforceContainer->addAction(command);
m_annotateAction = new QAction(tr("Annotate..."), this);
command = ActionManager::registerAction(m_annotateAction, CMD_ID_ANNOTATE, context);
- connect(m_annotateAction, &QAction::triggered, this, &PerforcePlugin::annotateFile);
+ connect(m_annotateAction, &QAction::triggered, this, &PerforcePluginPrivate::annotateFile);
perforceContainer->addAction(command);
m_filelogAction = new QAction(tr("Filelog..."), this);
command = ActionManager::registerAction(m_filelogAction, CMD_ID_FILELOG, context);
- connect(m_filelogAction, &QAction::triggered, this, &PerforcePlugin::filelogFile);
+ connect(m_filelogAction, &QAction::triggered, this, &PerforcePluginPrivate::filelogFile);
perforceContainer->addAction(command);
- return true;
}
void PerforcePlugin::extensionsInitialized()
{
- VcsBasePlugin::extensionsInitialized();
- getTopLevel();
+ dd->extensionsInitialized();
+ dd->getTopLevel();
}
-void PerforcePlugin::openCurrentFile()
+void PerforcePluginPrivate::openCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
vcsOpen(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void PerforcePlugin::addCurrentFile()
+void PerforcePluginPrivate::addCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
vcsAdd(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void PerforcePlugin::revertCurrentFile()
+void PerforcePluginPrivate::revertCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -434,38 +445,38 @@ void PerforcePlugin::revertCurrentFile()
perforceVersionControl()->emitFilesChanged(QStringList(state.currentFile()));
}
-void PerforcePlugin::diffCurrentFile()
+void PerforcePluginPrivate::diffCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
p4Diff(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()));
}
-void PerforcePlugin::diffCurrentProject()
+void PerforcePluginPrivate::diffCurrentProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
p4Diff(state.currentProjectTopLevel(), perforceRelativeProjectDirectory(state));
}
-void PerforcePlugin::diffAllOpened()
+void PerforcePluginPrivate::diffAllOpened()
{
p4Diff(m_settings.topLevel(), QStringList());
}
-void PerforcePlugin::updateCurrentProject()
+void PerforcePluginPrivate::updateCurrentProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
updateCheckout(state.currentProjectTopLevel(), perforceRelativeProjectDirectory(state));
}
-void PerforcePlugin::updateAll()
+void PerforcePluginPrivate::updateAll()
{
updateCheckout(m_settings.topLevel());
}
-void PerforcePlugin::revertCurrentProject()
+void PerforcePluginPrivate::revertCurrentProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
@@ -476,7 +487,7 @@ void PerforcePlugin::revertCurrentProject()
revertProject(state.currentProjectTopLevel(), perforceRelativeProjectDirectory(state), false);
}
-void PerforcePlugin::revertUnchangedCurrentProject()
+void PerforcePluginPrivate::revertUnchangedCurrentProject()
{
// revert -a.
const VcsBasePluginState state = currentState();
@@ -484,7 +495,7 @@ void PerforcePlugin::revertUnchangedCurrentProject()
revertProject(state.currentProjectTopLevel(), perforceRelativeProjectDirectory(state), true);
}
-bool PerforcePlugin::revertProject(const QString &workingDir, const QStringList &pathArgs, bool unchangedOnly)
+bool PerforcePluginPrivate::revertProject(const QString &workingDir, const QStringList &pathArgs, bool unchangedOnly)
{
QStringList args(QLatin1String("revert"));
if (unchangedOnly)
@@ -495,7 +506,7 @@ bool PerforcePlugin::revertProject(const QString &workingDir, const QStringList
return !resp.error;
}
-void PerforcePlugin::updateCheckout(const QString &workingDir, const QStringList &dirs)
+void PerforcePluginPrivate::updateCheckout(const QString &workingDir, const QStringList &dirs)
{
QStringList args(QLatin1String("sync"));
args.append(dirs);
@@ -511,7 +522,7 @@ void PerforcePlugin::updateCheckout(const QString &workingDir, const QStringList
}
}
-void PerforcePlugin::printOpenedFileList()
+void PerforcePluginPrivate::printOpenedFileList()
{
const PerforceResponse perforceResponse
= runP4Cmd(m_settings.topLevel(), QStringList(QLatin1String("opened")),
@@ -536,7 +547,7 @@ void PerforcePlugin::printOpenedFileList()
VcsOutputWindow::instance()->popup(IOutputPane::ModeSwitch | IOutputPane::WithFocus);
}
-void PerforcePlugin::startSubmitProject()
+void PerforcePluginPrivate::startSubmitProject()
{
if (!promptBeforeCommit())
return;
@@ -600,19 +611,19 @@ void PerforcePlugin::startSubmitProject()
openPerforceSubmitEditor(m_commitMessageFileName, depotFileNames);
}
-IEditor *PerforcePlugin::openPerforceSubmitEditor(const QString &fileName, const QStringList &depotFileNames)
+IEditor *PerforcePluginPrivate::openPerforceSubmitEditor(const QString &fileName, const QStringList &depotFileNames)
{
IEditor *editor = EditorManager::openEditor(fileName, PERFORCE_SUBMIT_EDITOR_ID);
auto submitEditor = static_cast<PerforceSubmitEditor*>(editor);
setSubmitEditor(submitEditor);
submitEditor->restrictToProjectFiles(depotFileNames);
connect(submitEditor, &VcsBaseSubmitEditor::diffSelectedFiles,
- this, &PerforcePlugin::slotSubmitDiff);
+ this, &PerforcePluginPrivate::slotSubmitDiff);
submitEditor->setCheckScriptWorkingDirectory(m_settings.topLevel());
return editor;
}
-void PerforcePlugin::printPendingChanges()
+void PerforcePluginPrivate::printPendingChanges()
{
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
PendingChangesDialog dia(pendingChangesData(), ICore::mainWindow());
@@ -626,21 +637,21 @@ void PerforcePlugin::printPendingChanges()
}
}
-void PerforcePlugin::describeChange()
+void PerforcePluginPrivate::describeChange()
{
ChangeNumberDialog dia;
if (dia.exec() == QDialog::Accepted && dia.number() > 0)
describe(QString(), QString::number(dia.number()));
}
-void PerforcePlugin::annotateCurrentFile()
+void PerforcePluginPrivate::annotateCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
annotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void PerforcePlugin::annotateFile()
+void PerforcePluginPrivate::annotateFile()
{
const QString file = QFileDialog::getOpenFileName(ICore::dialogParent(), tr("p4 annotate"));
if (!file.isEmpty()) {
@@ -649,13 +660,13 @@ void PerforcePlugin::annotateFile()
}
}
-void PerforcePlugin::vcsAnnotate(const QString &workingDirectory, const QString &file,
+void PerforcePluginPrivate::vcsAnnotate(const QString &workingDirectory, const QString &file,
const QString &revision, int lineNumber)
{
annotate(workingDirectory, file, revision, lineNumber);
}
-void PerforcePlugin::annotate(const QString &workingDir,
+void PerforcePluginPrivate::annotate(const QString &workingDir,
const QString &fileName,
const QString &changeList /* = QString() */,
int lineNumber /* = -1 */)
@@ -683,14 +694,14 @@ void PerforcePlugin::annotate(const QString &workingDir,
}
}
-void PerforcePlugin::filelogCurrentFile()
+void PerforcePluginPrivate::filelogCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
filelog(state.currentFileTopLevel(), state.relativeCurrentFile(), true);
}
-void PerforcePlugin::filelogFile()
+void PerforcePluginPrivate::filelogFile()
{
const QString file = QFileDialog::getOpenFileName(ICore::dialogParent(), tr("p4 filelog"));
if (!file.isEmpty()) {
@@ -699,21 +710,21 @@ void PerforcePlugin::filelogFile()
}
}
-void PerforcePlugin::logProject()
+void PerforcePluginPrivate::logProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
changelists(state.currentProjectTopLevel(), perforceRelativeFileArguments(state.relativeCurrentProject()));
}
-void PerforcePlugin::logRepository()
+void PerforcePluginPrivate::logRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
changelists(state.topLevel(), perforceRelativeFileArguments(QString()));
}
-void PerforcePlugin::filelog(const QString &workingDir, const QString &fileName,
+void PerforcePluginPrivate::filelog(const QString &workingDir, const QString &fileName,
bool enableAnnotationContextMenu)
{
const QString id = VcsBaseEditor::getTitleId(workingDir, QStringList(fileName));
@@ -736,7 +747,7 @@ void PerforcePlugin::filelog(const QString &workingDir, const QString &fileName,
}
}
-void PerforcePlugin::changelists(const QString &workingDir, const QString &fileName)
+void PerforcePluginPrivate::changelists(const QString &workingDir, const QString &fileName)
{
const QString id = VcsBaseEditor::getTitleId(workingDir, QStringList(fileName));
QTextCodec *codec = VcsBaseEditor::getCodec(workingDir, QStringList(fileName));
@@ -757,7 +768,7 @@ void PerforcePlugin::changelists(const QString &workingDir, const QString &fileN
}
}
-void PerforcePlugin::updateActions(VcsBasePlugin::ActionState as)
+void PerforcePluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as)
{
const bool menuActionEnabled = enableMenuAction(as, m_menuAction);
const bool enableActions = currentState().hasTopLevel() && menuActionEnabled;
@@ -783,7 +794,7 @@ void PerforcePlugin::updateActions(VcsBasePlugin::ActionState as)
m_revertUnchangedAction->setParameter(projectName);
}
-bool PerforcePlugin::managesDirectory(const QString &directory, QString *topLevel /* = 0 */)
+bool PerforcePluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */)
{
const bool rc = managesDirectoryFstat(directory);
if (topLevel) {
@@ -795,7 +806,7 @@ bool PerforcePlugin::managesDirectory(const QString &directory, QString *topLeve
return rc;
}
-bool PerforcePlugin::managesFile(const QString &workingDirectory, const QString &fileName) const
+bool PerforcePluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const
{
QStringList args;
args << QLatin1String("fstat") << QLatin1String("-m1") << fileName;
@@ -803,7 +814,7 @@ bool PerforcePlugin::managesFile(const QString &workingDirectory, const QString
return result.stdOut.contains(QLatin1String("depotFile"));
}
-bool PerforcePlugin::managesDirectoryFstat(const QString &directory)
+bool PerforcePluginPrivate::managesDirectoryFstat(const QString &directory)
{
// Cached?
const ManagedDirectoryCache::const_iterator cit = m_managedDirectoryCache.constFind(directory);
@@ -844,7 +855,7 @@ bool PerforcePlugin::managesDirectoryFstat(const QString &directory)
return managed;
}
-bool PerforcePlugin::vcsOpen(const QString &workingDir, const QString &fileName, bool silently)
+bool PerforcePluginPrivate::vcsOpen(const QString &workingDir, const QString &fileName, bool silently)
{
QStringList args;
args << QLatin1String("edit") << QDir::toNativeSeparators(fileName);
@@ -857,7 +868,7 @@ bool PerforcePlugin::vcsOpen(const QString &workingDir, const QString &fileName,
return !result.error;
}
-bool PerforcePlugin::vcsAdd(const QString &workingDir, const QString &fileName)
+bool PerforcePluginPrivate::vcsAdd(const QString &workingDir, const QString &fileName)
{
QStringList args;
args << QLatin1String("add") << fileName;
@@ -866,7 +877,7 @@ bool PerforcePlugin::vcsAdd(const QString &workingDir, const QString &fileName)
return !result.error;
}
-bool PerforcePlugin::vcsDelete(const QString &workingDir, const QString &fileName)
+bool PerforcePluginPrivate::vcsDelete(const QString &workingDir, const QString &fileName)
{
QStringList args;
@@ -889,7 +900,7 @@ bool PerforcePlugin::vcsDelete(const QString &workingDir, const QString &fileNam
return !deleteResult.error;
}
-bool PerforcePlugin::vcsMove(const QString &workingDir, const QString &from, const QString &to)
+bool PerforcePluginPrivate::vcsMove(const QString &workingDir, const QString &from, const QString &to)
{
// TODO verify this works
QStringList args;
@@ -907,16 +918,16 @@ bool PerforcePlugin::vcsMove(const QString &workingDir, const QString &from, con
// Write extra args to temporary file
QSharedPointer<TempFileSaver>
-PerforcePlugin::createTemporaryArgumentFile(const QStringList &extraArgs,
+PerforcePluginPrivate::createTemporaryArgumentFile(const QStringList &extraArgs,
QString *errorString)
{
if (extraArgs.isEmpty())
return QSharedPointer<TempFileSaver>();
// create pattern
- QString pattern = m_instance->m_tempFilePattern;
+ QString pattern = dd->m_tempFilePattern;
if (pattern.isEmpty()) {
pattern = Utils::TemporaryDirectory::masterDirectoryPath() + "/qtc_p4_XXXXXX.args";
- m_instance->m_tempFilePattern = pattern;
+ dd->m_tempFilePattern = pattern;
}
QSharedPointer<TempFileSaver> rc(new TempFileSaver(pattern));
rc->setAutoRemove(true);
@@ -935,26 +946,26 @@ PerforcePlugin::createTemporaryArgumentFile(const QStringList &extraArgs,
static inline QString msgNotStarted(const QString &cmd)
{
- return PerforcePlugin::tr("Could not start perforce \"%1\". Please check your settings in the preferences.").arg(cmd);
+ return PerforcePluginPrivate::tr("Could not start perforce \"%1\". Please check your settings in the preferences.").arg(cmd);
}
static inline QString msgTimeout(int timeOutS)
{
- return PerforcePlugin::tr("Perforce did not respond within timeout limit (%1 s).").arg(timeOutS);
+ return PerforcePluginPrivate::tr("Perforce did not respond within timeout limit (%1 s).").arg(timeOutS);
}
static inline QString msgCrash()
{
- return PerforcePlugin::tr("The process terminated abnormally.");
+ return PerforcePluginPrivate::tr("The process terminated abnormally.");
}
static inline QString msgExitCode(int ex)
{
- return PerforcePlugin::tr("The process terminated with exit code %1.").arg(ex);
+ return PerforcePluginPrivate::tr("The process terminated with exit code %1.").arg(ex);
}
// Run using a SynchronousProcess, emitting signals to the message window
-PerforceResponse PerforcePlugin::synchronousProcess(const QString &workingDir,
+PerforceResponse PerforcePluginPrivate::synchronousProcess(const QString &workingDir,
const QStringList &args,
unsigned flags,
const QByteArray &stdInput,
@@ -1026,7 +1037,7 @@ PerforceResponse PerforcePlugin::synchronousProcess(const QString &workingDir,
}
// Run using a QProcess, for short queries
-PerforceResponse PerforcePlugin::fullySynchronousProcess(const QString &workingDir,
+PerforceResponse PerforcePluginPrivate::fullySynchronousProcess(const QString &workingDir,
const QStringList &args,
unsigned flags,
const QByteArray &stdInput,
@@ -1091,7 +1102,7 @@ PerforceResponse PerforcePlugin::fullySynchronousProcess(const QString &workingD
return response;
}
-PerforceResponse PerforcePlugin::runP4Cmd(const QString &workingDir,
+PerforceResponse PerforcePluginPrivate::runP4Cmd(const QString &workingDir,
const QStringList &args,
unsigned flags,
const QStringList &extraArgs,
@@ -1136,7 +1147,7 @@ PerforceResponse PerforcePlugin::runP4Cmd(const QString &workingDir,
return response;
}
-IEditor *PerforcePlugin::showOutputInEditor(const QString &title,
+IEditor *PerforcePluginPrivate::showOutputInEditor(const QString &title,
const QString &output,
int editorType,
const QString &source,
@@ -1158,7 +1169,7 @@ IEditor *PerforcePlugin::showOutputInEditor(const QString &title,
auto e = qobject_cast<PerforceEditorWidget*>(editor->widget());
if (!e)
return nullptr;
- connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &PerforcePlugin::annotate);
+ connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &PerforcePluginPrivate::annotate);
e->setForceReadOnly(true);
e->setSource(source);
s.replace(QLatin1Char(' '), QLatin1Char('_'));
@@ -1168,7 +1179,7 @@ IEditor *PerforcePlugin::showOutputInEditor(const QString &title,
return editor;
}
-void PerforcePlugin::slotSubmitDiff(const QStringList &files)
+void PerforcePluginPrivate::slotSubmitDiff(const QStringList &files)
{
p4Diff(m_settings.topLevel(), files);
}
@@ -1210,12 +1221,12 @@ void PerforceDiffConfig::triggerReRun()
emit reRunDiff(effectiveParameters);
}
-QString PerforcePlugin::commitDisplayName() const
+QString PerforcePluginPrivate::commitDisplayName() const
{
return tr("Submit");
}
-void PerforcePlugin::p4Diff(const QString &workingDir, const QStringList &files)
+void PerforcePluginPrivate::p4Diff(const QString &workingDir, const QStringList &files)
{
PerforceDiffParameters p;
p.workingDir = workingDir;
@@ -1224,7 +1235,7 @@ void PerforcePlugin::p4Diff(const QString &workingDir, const QStringList &files)
p4Diff(p);
}
-void PerforcePlugin::p4Diff(const PerforceDiffParameters &p)
+void PerforcePluginPrivate::p4Diff(const PerforceDiffParameters &p)
{
QTextCodec *codec = VcsBaseEditor::getCodec(p.workingDir, p.files);
const QString id = VcsBaseEditor::getTitleId(p.workingDir, p.files);
@@ -1268,7 +1279,7 @@ void PerforcePlugin::p4Diff(const PerforceDiffParameters &p)
diffEditorWidget->setEditorConfig(pw);
}
-void PerforcePlugin::describe(const QString & source, const QString &n)
+void PerforcePluginPrivate::describe(const QString & source, const QString &n)
{
QTextCodec *codec = source.isEmpty() ? static_cast<QTextCodec *>(nullptr)
: VcsBaseEditor::getCodec(source);
@@ -1280,14 +1291,14 @@ void PerforcePlugin::describe(const QString & source, const QString &n)
showOutputInEditor(tr("p4 describe %1").arg(n), result.stdOut, VcsBase::DiffOutput, source, codec);
}
-void PerforcePlugin::commitFromEditor()
+void PerforcePluginPrivate::commitFromEditor()
{
m_submitActionTriggered = true;
QTC_ASSERT(submitEditor(), return);
EditorManager::closeDocument(submitEditor()->document());
}
-void PerforcePlugin::cleanCommitMessageFile()
+void PerforcePluginPrivate::cleanCommitMessageFile()
{
if (!m_commitMessageFileName.isEmpty()) {
QFile::remove(m_commitMessageFileName);
@@ -1295,12 +1306,12 @@ void PerforcePlugin::cleanCommitMessageFile()
}
}
-bool PerforcePlugin::isCommitEditorOpen() const
+bool PerforcePluginPrivate::isCommitEditorOpen() const
{
return !m_commitMessageFileName.isEmpty();
}
-bool PerforcePlugin::submitEditorAboutToClose()
+bool PerforcePluginPrivate::submitEditorAboutToClose()
{
if (!isCommitEditorOpen())
return true;
@@ -1353,7 +1364,7 @@ bool PerforcePlugin::submitEditorAboutToClose()
return true;
}
-QString PerforcePlugin::clientFilePath(const QString &serverFilePath)
+QString PerforcePluginPrivate::clientFilePath(const QString &serverFilePath)
{
QTC_ASSERT(m_settings.isValid(), return QString());
@@ -1369,7 +1380,7 @@ QString PerforcePlugin::clientFilePath(const QString &serverFilePath)
return r.indexIn(response.stdOut) != -1 ? r.cap(1).trimmed() : QString();
}
-QString PerforcePlugin::pendingChangesData()
+QString PerforcePluginPrivate::pendingChangesData()
{
QTC_ASSERT(m_settings.isValid(), return QString());
@@ -1392,17 +1403,17 @@ QString PerforcePlugin::pendingChangesData()
return dataResponse.error ? QString() : dataResponse.stdOut;
}
-const PerforceSettings& PerforcePlugin::settings()
+const PerforceSettings& PerforcePluginPrivate::settings()
{
- return m_instance->m_settings;
+ return dd->m_settings;
}
-void PerforcePlugin::setSettings(const Settings &newSettings)
+void PerforcePluginPrivate::setSettings(const Settings &newSettings)
{
- if (newSettings != m_instance->m_settings.settings()) {
- m_instance->m_settings.setSettings(newSettings);
- m_instance->m_managedDirectoryCache.clear();
- m_instance->m_settings.toSettings(ICore::settings());
+ if (newSettings != dd->m_settings.settings()) {
+ dd->m_settings.setSettings(newSettings);
+ dd->m_managedDirectoryCache.clear();
+ dd->m_settings.toSettings(ICore::settings());
getTopLevel();
perforceVersionControl()->emitConfigurationChanged();
}
@@ -1412,12 +1423,12 @@ static inline QString msgWhereFailed(const QString & file, const QString &why)
{
//: Failed to run p4 "where" to resolve a Perforce file name to a local
//: file system name.
- return PerforcePlugin::tr("Error running \"where\" on %1: %2").
+ return PerforcePluginPrivate::tr("Error running \"where\" on %1: %2").
arg(QDir::toNativeSeparators(file), why);
}
// Map a perforce name "//xx" to its real name in the file system
-QString PerforcePlugin::fileNameFromPerforceName(const QString& perforceName,
+QString PerforcePluginPrivate::fileNameFromPerforceName(const QString& perforceName,
bool quiet,
QString *errorMessage)
{
@@ -1448,15 +1459,15 @@ QString PerforcePlugin::fileNameFromPerforceName(const QString& perforceName,
return QString();
}
const QString p4fileSpec = output.mid(output.lastIndexOf(QLatin1Char(' ')) + 1);
- return m_instance->m_settings.mapToFileSystem(p4fileSpec);
+ return dd->m_settings.mapToFileSystem(p4fileSpec);
}
-PerforceVersionControl *PerforcePlugin::perforceVersionControl()
+PerforceVersionControl *PerforcePluginPrivate::perforceVersionControl()
{
- return static_cast<PerforceVersionControl *>(m_instance->versionControl());
+ return static_cast<PerforceVersionControl *>(dd->versionControl());
}
-void PerforcePlugin::setTopLevel(const QString &topLevel)
+void PerforcePluginPrivate::setTopLevel(const QString &topLevel)
{
if (m_settings.topLevel() == topLevel)
return;
@@ -1467,20 +1478,20 @@ void PerforcePlugin::setTopLevel(const QString &topLevel)
VcsOutputWindow::appendSilently(msg);
}
-void PerforcePlugin::slotTopLevelFailed(const QString &errorMessage)
+void PerforcePluginPrivate::slotTopLevelFailed(const QString &errorMessage)
{
VcsOutputWindow::appendSilently(tr("Perforce: Unable to determine the repository: %1").arg(errorMessage));
}
-void PerforcePlugin::getTopLevel(const QString &workingDirectory, bool isSync)
+void PerforcePluginPrivate::getTopLevel(const QString &workingDirectory, bool isSync)
{
// Run a new checker
- if (m_instance->m_settings.p4BinaryPath().isEmpty())
+ if (dd->m_settings.p4BinaryPath().isEmpty())
return;
- auto checker = new PerforceChecker(m_instance);
- connect(checker, &PerforceChecker::failed, m_instance, &PerforcePlugin::slotTopLevelFailed);
+ auto checker = new PerforceChecker(dd);
+ connect(checker, &PerforceChecker::failed, dd, &PerforcePluginPrivate::slotTopLevelFailed);
connect(checker, &PerforceChecker::failed, checker, &QObject::deleteLater);
- connect(checker, &PerforceChecker::succeeded, m_instance, &PerforcePlugin::setTopLevel);
+ connect(checker, &PerforceChecker::succeeded, dd, &PerforcePluginPrivate::setTopLevel);
connect(checker, &PerforceChecker::succeeded,checker, &QObject::deleteLater);
checker->start(settings().p4BinaryPath(), workingDirectory,
diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h
index 6c1e773357..eaf698aeba 100644
--- a/src/plugins/perforce/perforceplugin.h
+++ b/src/plugins/perforce/perforceplugin.h
@@ -69,16 +69,12 @@ struct PerforceResponse
QString message;
};
-class PerforcePlugin : public VcsBase::VcsBasePlugin
+class PerforcePluginPrivate final : public VcsBase::VcsBasePluginPrivate
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Perforce.json")
public:
- PerforcePlugin() = default;
-
- bool initialize(const QStringList &arguments, QString *errorMessage) override;
- void extensionsInitialized() override;
+ PerforcePluginPrivate();
bool managesDirectory(const QString &directory, QString *topLevel = nullptr);
bool managesFile(const QString &workingDirectory, const QString &fileName) const;
@@ -103,15 +99,12 @@ public:
void vcsAnnotate(const QString &workingDirectory, const QString &file,
const QString &revision, int lineNumber);
+ static void getTopLevel(const QString &workingDirectory = QString(), bool isSync = false);
+
protected:
- void updateActions(VcsBase::VcsBasePlugin::ActionState) override;
+ void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override;
bool submitEditorAboutToClose() override;
-#ifdef WITH_TESTS
-private slots:
- void testLogResolving();
-#endif
-
private:
QString commitDisplayName() const final;
void p4Diff(const PerforceDiffParameters &p);
@@ -203,7 +196,6 @@ private:
static QSharedPointer<Utils::TempFileSaver> createTemporaryArgumentFile(const QStringList &extraArgs,
QString *errorString);
- static void getTopLevel(const QString &workingDirectory = QString(), bool isSync = false);
QString pendingChangesData();
void updateCheckout(const QString &workingDir = QString(),
@@ -240,11 +232,25 @@ private:
mutable QString m_tempFilePattern;
QAction *m_menuAction = nullptr;
- static PerforcePlugin *m_instance;
-
PerforceSettings m_settings;
ManagedDirectoryCache m_managedDirectoryCache;
};
+class PerforcePlugin final : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Perforce.json")
+
+ ~PerforcePlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *errorMessage) final;
+ void extensionsInitialized() final;
+
+#ifdef WITH_TESTS
+private slots:
+ void testLogResolving();
+#endif
+};
+
} // namespace Perforce
} // namespace Internal
diff --git a/src/plugins/perforce/perforcesubmiteditor.h b/src/plugins/perforce/perforcesubmiteditor.h
index cff9b05bc7..dc43eeeab7 100644
--- a/src/plugins/perforce/perforcesubmiteditor.h
+++ b/src/plugins/perforce/perforcesubmiteditor.h
@@ -36,7 +36,7 @@ namespace Perforce {
namespace Internal {
class PerforceSubmitEditorWidget;
-class PerforcePlugin;
+class PerforcePluginPrivate;
/* PerforceSubmitEditor: In p4, the file list is contained in the
* submit message file (change list). On setting the file contents,
diff --git a/src/plugins/perforce/perforceversioncontrol.cpp b/src/plugins/perforce/perforceversioncontrol.cpp
index b8cc77d069..f47da2907e 100644
--- a/src/plugins/perforce/perforceversioncontrol.cpp
+++ b/src/plugins/perforce/perforceversioncontrol.cpp
@@ -35,7 +35,7 @@
namespace Perforce {
namespace Internal {
-PerforceVersionControl::PerforceVersionControl(PerforcePlugin *plugin) :
+PerforceVersionControl::PerforceVersionControl(PerforcePluginPrivate *plugin) :
m_plugin(plugin)
{ }
diff --git a/src/plugins/perforce/perforceversioncontrol.h b/src/plugins/perforce/perforceversioncontrol.h
index 410e9a749a..a06b2164ae 100644
--- a/src/plugins/perforce/perforceversioncontrol.h
+++ b/src/plugins/perforce/perforceversioncontrol.h
@@ -29,14 +29,14 @@
namespace Perforce {
namespace Internal {
-class PerforcePlugin;
+class PerforcePluginPrivate;
// Just a proxy for PerforcePlugin
class PerforceVersionControl : public Core::IVersionControl
{
Q_OBJECT
public:
- explicit PerforceVersionControl(PerforcePlugin *plugin);
+ explicit PerforceVersionControl(PerforcePluginPrivate *plugin);
QString displayName() const final;
Core::Id id() const final;
@@ -63,7 +63,7 @@ public:
void emitConfigurationChanged();
private:
- PerforcePlugin *m_plugin;
+ PerforcePluginPrivate *m_plugin;
};
} // namespace Internal
diff --git a/src/plugins/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp
index d8f15930f4..09251e90ea 100644
--- a/src/plugins/perforce/settingspage.cpp
+++ b/src/plugins/perforce/settingspage.cpp
@@ -134,14 +134,14 @@ QWidget *SettingsPage::widget()
{
if (!m_widget) {
m_widget = new SettingsPageWidget;
- m_widget->setSettings(PerforcePlugin::settings());
+ m_widget->setSettings(PerforcePluginPrivate::settings());
}
return m_widget;
}
void SettingsPage::apply()
{
- PerforcePlugin::setSettings(m_widget->settings());
+ PerforcePluginPrivate::setSettings(m_widget->settings());
}
void SettingsPage::finish()
diff --git a/src/plugins/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp
index 1718e54182..8b72b5ae7a 100644
--- a/src/plugins/subversion/settingspage.cpp
+++ b/src/plugins/subversion/settingspage.cpp
@@ -97,7 +97,7 @@ void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s)
}
SettingsPage::SettingsPage(Core::IVersionControl *control, QObject *parent) :
- VcsClientOptionsPage(control, SubversionPlugin::instance()->client(), parent)
+ VcsClientOptionsPage(control, SubversionPluginPrivate::instance()->client(), parent)
{
setId(VcsBase::Constants::VCS_ID_SUBVERSION);
setDisplayName(SettingsPageWidget::tr("Subversion"));
diff --git a/src/plugins/subversion/subversionclient.cpp b/src/plugins/subversion/subversionclient.cpp
index 89a7a82226..c2d7744939 100644
--- a/src/plugins/subversion/subversionclient.cpp
+++ b/src/plugins/subversion/subversionclient.cpp
@@ -194,7 +194,7 @@ private:
SubversionDiffEditorController::SubversionDiffEditorController(
IDocument *document,
const QString &workingDirectory)
- : VcsBaseDiffEditorController(document, SubversionPlugin::instance()->client(), workingDirectory)
+ : VcsBaseDiffEditorController(document, SubversionPluginPrivate::instance()->client(), workingDirectory)
, m_state(Idle)
{
forceContextLineCount(3); // SVN cannot change that when using internal diff
diff --git a/src/plugins/subversion/subversioncontrol.cpp b/src/plugins/subversion/subversioncontrol.cpp
index 70604a5650..737c3eecfd 100644
--- a/src/plugins/subversion/subversioncontrol.cpp
+++ b/src/plugins/subversion/subversioncontrol.cpp
@@ -44,7 +44,7 @@ namespace Internal {
class SubversionTopicCache : public Core::IVersionControl::TopicCache
{
public:
- SubversionTopicCache(SubversionPlugin *plugin) :
+ SubversionTopicCache(SubversionPluginPrivate *plugin) :
m_plugin(plugin)
{ }
@@ -60,10 +60,10 @@ protected:
}
private:
- SubversionPlugin *m_plugin;
+ SubversionPluginPrivate *m_plugin;
};
-SubversionControl::SubversionControl(SubversionPlugin *plugin) :
+SubversionControl::SubversionControl(SubversionPluginPrivate *plugin) :
Core::IVersionControl(new SubversionTopicCache(plugin)),
m_plugin(plugin)
{ }
diff --git a/src/plugins/subversion/subversioncontrol.h b/src/plugins/subversion/subversioncontrol.h
index 561decc2e9..f9f1fe8c34 100644
--- a/src/plugins/subversion/subversioncontrol.h
+++ b/src/plugins/subversion/subversioncontrol.h
@@ -30,14 +30,14 @@
namespace Subversion {
namespace Internal {
-class SubversionPlugin;
+class SubversionPluginPrivate;
// Just a proxy for SubversionPlugin
class SubversionControl : public Core::IVersionControl
{
Q_OBJECT
public:
- explicit SubversionControl(SubversionPlugin *plugin);
+ explicit SubversionControl(SubversionPluginPrivate *plugin);
QString displayName() const final;
Core::Id id() const final;
bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final;
@@ -64,7 +64,7 @@ public:
void emitFilesChanged(const QStringList &);
private:
- SubversionPlugin *m_plugin;
+ SubversionPluginPrivate *m_plugin;
};
} // namespace Internal
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 85d396dd3d..bd55af03c9 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -169,20 +169,22 @@ static inline QStringList svnDirectories()
}
// ------------- SubversionPlugin
-SubversionPlugin *SubversionPlugin::m_subversionPluginInstance = nullptr;
-SubversionPlugin::SubversionPlugin() :
- m_svnDirectories(svnDirectories())
+static SubversionPluginPrivate *dd = nullptr;
+
+SubversionPlugin::~SubversionPlugin()
{
+ delete dd;
+ dd = nullptr;
}
-SubversionPlugin::~SubversionPlugin()
+SubversionPluginPrivate::~SubversionPluginPrivate()
{
delete m_client;
cleanCommitMessageFile();
}
-void SubversionPlugin::cleanCommitMessageFile()
+void SubversionPluginPrivate::cleanCommitMessageFile()
{
if (!m_commitMessageFileName.isEmpty()) {
QFile::remove(m_commitMessageFileName);
@@ -191,7 +193,7 @@ void SubversionPlugin::cleanCommitMessageFile()
}
}
-bool SubversionPlugin::isCommitEditorOpen() const
+bool SubversionPluginPrivate::isCommitEditorOpen() const
{
return !m_commitMessageFileName.isEmpty();
}
@@ -206,16 +208,27 @@ const VcsBaseSubmitEditorParameters submitParameters = {
bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *errorMessage)
{
Q_UNUSED(errorMessage)
+ dd = new SubversionPluginPrivate;
+ return true;
+}
+
+void SubversionPlugin::extensionsInitialized()
+{
+ dd->extensionsInitialized();
+}
+
+SubversionPluginPrivate::SubversionPluginPrivate() :
+ m_svnDirectories(svnDirectories())
+{
+ dd = this;
+
using namespace Constants;
using namespace Core::Constants;
-
Context context(SUBVERSION_CONTEXT);
auto vcsCtrl = new SubversionControl(this);
initializeVcs(vcsCtrl, context);
- m_subversionPluginInstance = this;
-
m_client = new SubversionClient;
new SettingsPage(versionControl(), this);
@@ -248,7 +261,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
CMD_ID_DIFF_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+S,Meta+D") : tr("Alt+S,Alt+D")));
- connect(m_diffCurrentAction, &QAction::triggered, this, &SubversionPlugin::diffCurrentFile);
+ connect(m_diffCurrentAction, &QAction::triggered, this, &SubversionPluginPrivate::diffCurrentFile);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -256,7 +269,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
command = ActionManager::registerAction(m_filelogCurrentAction,
CMD_ID_FILELOG_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_filelogCurrentAction, &QAction::triggered, this, &SubversionPlugin::filelogCurrentFile);
+ connect(m_filelogCurrentAction, &QAction::triggered, this, &SubversionPluginPrivate::filelogCurrentFile);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -264,7 +277,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
command = ActionManager::registerAction(m_annotateCurrentAction,
CMD_ID_ANNOTATE_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_annotateCurrentAction, &QAction::triggered, this, &SubversionPlugin::annotateCurrentFile);
+ connect(m_annotateCurrentAction, &QAction::triggered, this, &SubversionPluginPrivate::annotateCurrentFile);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -275,7 +288,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+S,Meta+A") : tr("Alt+S,Alt+A")));
- connect(m_addAction, &QAction::triggered, this, &SubversionPlugin::addCurrentFile);
+ connect(m_addAction, &QAction::triggered, this, &SubversionPluginPrivate::addCurrentFile);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -284,7 +297,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
CMD_ID_COMMIT_CURRENT, context);
command->setAttribute(Command::CA_UpdateText);
command->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+S,Meta+C") : tr("Alt+S,Alt+C")));
- connect(m_commitCurrentAction, &QAction::triggered, this, &SubversionPlugin::startCommitCurrentFile);
+ connect(m_commitCurrentAction, &QAction::triggered, this, &SubversionPluginPrivate::startCommitCurrentFile);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -292,7 +305,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
command = ActionManager::registerAction(m_deleteAction, CMD_ID_DELETE_FILE,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_deleteAction, &QAction::triggered, this, &SubversionPlugin::promptToDeleteCurrentFile);
+ connect(m_deleteAction, &QAction::triggered, this, &SubversionPluginPrivate::promptToDeleteCurrentFile);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -300,7 +313,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
command = ActionManager::registerAction(m_revertAction, CMD_ID_REVERT,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_revertAction, &QAction::triggered, this, &SubversionPlugin::revertCurrentFile);
+ connect(m_revertAction, &QAction::triggered, this, &SubversionPluginPrivate::revertCurrentFile);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -310,7 +323,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
command = ActionManager::registerAction(m_diffProjectAction, CMD_ID_DIFF_PROJECT,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_diffProjectAction, &QAction::triggered, this, &SubversionPlugin::diffProject);
+ connect(m_diffProjectAction, &QAction::triggered, this, &SubversionPluginPrivate::diffProject);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -318,27 +331,27 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
command = ActionManager::registerAction(m_statusProjectAction, CMD_ID_STATUS,
context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_statusProjectAction, &QAction::triggered, this, &SubversionPlugin::projectStatus);
+ connect(m_statusProjectAction, &QAction::triggered, this, &SubversionPluginPrivate::projectStatus);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_logProjectAction = new ParameterAction(tr("Log Project"), tr("Log Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_logProjectAction, CMD_ID_PROJECTLOG, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_logProjectAction, &QAction::triggered, this, &SubversionPlugin::logProject);
+ connect(m_logProjectAction, &QAction::triggered, this, &SubversionPluginPrivate::logProject);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_updateProjectAction = new ParameterAction(tr("Update Project"), tr("Update Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_updateProjectAction, CMD_ID_UPDATE, context);
- connect(m_updateProjectAction, &QAction::triggered, this, &SubversionPlugin::updateProject);
+ connect(m_updateProjectAction, &QAction::triggered, this, &SubversionPluginPrivate::updateProject);
command->setAttribute(Command::CA_UpdateText);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_commitProjectAction = new ParameterAction(tr("Commit Project"), tr("Commit Project \"%1\""), ParameterAction::EnabledWithParameter, this);
command = ActionManager::registerAction(m_commitProjectAction, CMD_ID_COMMIT_PROJECT, context);
- connect(m_commitProjectAction, &QAction::triggered, this, &SubversionPlugin::startCommitProject);
+ connect(m_commitProjectAction, &QAction::triggered, this, &SubversionPluginPrivate::startCommitProject);
command->setAttribute(Command::CA_UpdateText);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
@@ -347,51 +360,49 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
m_diffRepositoryAction = new QAction(tr("Diff Repository"), this);
command = ActionManager::registerAction(m_diffRepositoryAction, CMD_ID_REPOSITORYDIFF, context);
- connect(m_diffRepositoryAction, &QAction::triggered, this, &SubversionPlugin::diffRepository);
+ connect(m_diffRepositoryAction, &QAction::triggered, this, &SubversionPluginPrivate::diffRepository);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_statusRepositoryAction = new QAction(tr("Repository Status"), this);
command = ActionManager::registerAction(m_statusRepositoryAction, CMD_ID_REPOSITORYSTATUS, context);
- connect(m_statusRepositoryAction, &QAction::triggered, this, &SubversionPlugin::statusRepository);
+ connect(m_statusRepositoryAction, &QAction::triggered, this, &SubversionPluginPrivate::statusRepository);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_logRepositoryAction = new QAction(tr("Log Repository"), this);
command = ActionManager::registerAction(m_logRepositoryAction, CMD_ID_REPOSITORYLOG, context);
- connect(m_logRepositoryAction, &QAction::triggered, this, &SubversionPlugin::logRepository);
+ connect(m_logRepositoryAction, &QAction::triggered, this, &SubversionPluginPrivate::logRepository);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_updateRepositoryAction = new QAction(tr("Update Repository"), this);
command = ActionManager::registerAction(m_updateRepositoryAction, CMD_ID_REPOSITORYUPDATE, context);
- connect(m_updateRepositoryAction, &QAction::triggered, this, &SubversionPlugin::updateRepository);
+ connect(m_updateRepositoryAction, &QAction::triggered, this, &SubversionPluginPrivate::updateRepository);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_commitAllAction = new QAction(tr("Commit All Files"), this);
command = ActionManager::registerAction(m_commitAllAction, CMD_ID_COMMIT_ALL,
context);
- connect(m_commitAllAction, &QAction::triggered, this, &SubversionPlugin::startCommitAll);
+ connect(m_commitAllAction, &QAction::triggered, this, &SubversionPluginPrivate::startCommitAll);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
m_describeAction = new QAction(tr("Describe..."), this);
command = ActionManager::registerAction(m_describeAction, CMD_ID_DESCRIBE, context);
- connect(m_describeAction, &QAction::triggered, this, &SubversionPlugin::slotDescribe);
+ connect(m_describeAction, &QAction::triggered, this, &SubversionPluginPrivate::slotDescribe);
subversionMenu->addAction(command);
m_revertRepositoryAction = new QAction(tr("Revert Repository..."), this);
command = ActionManager::registerAction(m_revertRepositoryAction, CMD_ID_REVERT_ALL,
context);
- connect(m_revertRepositoryAction, &QAction::triggered, this, &SubversionPlugin::revertAll);
+ connect(m_revertRepositoryAction, &QAction::triggered, this, &SubversionPluginPrivate::revertAll);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
-
- return true;
}
-bool SubversionPlugin::isVcsDirectory(const FilePath &fileName)
+bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName)
{
const QString baseName = fileName.fileName();
return fileName.isDir() && contains(m_svnDirectories, [baseName](const QString &s) {
@@ -399,13 +410,13 @@ bool SubversionPlugin::isVcsDirectory(const FilePath &fileName)
});
}
-SubversionClient *SubversionPlugin::client() const
+SubversionClient *SubversionPluginPrivate::client() const
{
QTC_CHECK(m_client);
return m_client;
}
-bool SubversionPlugin::submitEditorAboutToClose()
+bool SubversionPluginPrivate::submitEditorAboutToClose()
{
if (!isCommitEditorOpen())
return true;
@@ -450,24 +461,24 @@ bool SubversionPlugin::submitEditorAboutToClose()
return closeEditor;
}
-void SubversionPlugin::diffCommitFiles(const QStringList &files)
+void SubversionPluginPrivate::diffCommitFiles(const QStringList &files)
{
m_client->diff(m_commitRepository, files, QStringList());
}
-SubversionSubmitEditor *SubversionPlugin::openSubversionSubmitEditor(const QString &fileName)
+SubversionSubmitEditor *SubversionPluginPrivate::openSubversionSubmitEditor(const QString &fileName)
{
IEditor *editor = EditorManager::openEditor(fileName, Constants::SUBVERSION_COMMIT_EDITOR_ID);
auto submitEditor = qobject_cast<SubversionSubmitEditor*>(editor);
QTC_ASSERT(submitEditor, return nullptr);
setSubmitEditor(submitEditor);
connect(submitEditor, &VcsBaseSubmitEditor::diffSelectedFiles,
- this, &SubversionPlugin::diffCommitFiles);
+ this, &SubversionPluginPrivate::diffCommitFiles);
submitEditor->setCheckScriptWorkingDirectory(m_commitRepository);
return submitEditor;
}
-void SubversionPlugin::updateActions(VcsBasePlugin::ActionState as)
+void SubversionPluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as)
{
if (!enableMenuAction(as, m_menuAction)) {
m_commandLocator->setEnabled(false);
@@ -503,14 +514,14 @@ void SubversionPlugin::updateActions(VcsBasePlugin::ActionState as)
m_annotateCurrentAction->setParameter(fileName);
}
-void SubversionPlugin::addCurrentFile()
+void SubversionPluginPrivate::addCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
vcsAdd(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void SubversionPlugin::revertAll()
+void SubversionPluginPrivate::revertAll()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -534,7 +545,7 @@ void SubversionPlugin::revertAll()
subVersionControl()->emitRepositoryChanged(state.topLevel());
}
-void SubversionPlugin::revertCurrentFile()
+void SubversionPluginPrivate::revertCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -572,7 +583,7 @@ void SubversionPlugin::revertCurrentFile()
subVersionControl()->emitFilesChanged(QStringList(state.currentFile()));
}
-void SubversionPlugin::diffProject()
+void SubversionPluginPrivate::diffProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
@@ -582,7 +593,7 @@ void SubversionPlugin::diffProject()
QStringList());
}
-void SubversionPlugin::diffCurrentFile()
+void SubversionPluginPrivate::diffCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -590,21 +601,21 @@ void SubversionPlugin::diffCurrentFile()
QStringList());
}
-void SubversionPlugin::startCommitCurrentFile()
+void SubversionPluginPrivate::startCommitCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
startCommit(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()));
}
-void SubversionPlugin::startCommitAll()
+void SubversionPluginPrivate::startCommitAll()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
startCommit(state.topLevel());
}
-void SubversionPlugin::startCommitProject()
+void SubversionPluginPrivate::startCommitProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
@@ -614,7 +625,7 @@ void SubversionPlugin::startCommitProject()
/* Start commit of files of a single repository by displaying
* template and files in a submit editor. On closing, the real
* commit will start. */
-void SubversionPlugin::startCommit(const QString &workingDir, const QStringList &files)
+void SubversionPluginPrivate::startCommit(const QString &workingDir, const QStringList &files)
{
if (!promptBeforeCommit())
return;
@@ -660,49 +671,49 @@ void SubversionPlugin::startCommit(const QString &workingDir, const QStringList
editor->setStatusList(statusOutput);
}
-void SubversionPlugin::filelogCurrentFile()
+void SubversionPluginPrivate::filelogCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
filelog(state.currentFileTopLevel(), state.relativeCurrentFile(), true);
}
-void SubversionPlugin::logProject()
+void SubversionPluginPrivate::logProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
filelog(state.currentProjectTopLevel(), state.relativeCurrentProject());
}
-void SubversionPlugin::logRepository()
+void SubversionPluginPrivate::logRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
filelog(state.topLevel());
}
-void SubversionPlugin::diffRepository()
+void SubversionPluginPrivate::diffRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
m_client->diff(state.topLevel(), QStringList(), QStringList());
}
-void SubversionPlugin::statusRepository()
+void SubversionPluginPrivate::statusRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
svnStatus(state.topLevel());
}
-void SubversionPlugin::updateRepository()
+void SubversionPluginPrivate::updateRepository()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
svnUpdate(state.topLevel());
}
-void SubversionPlugin::svnStatus(const QString &workingDir, const QString &relativePath)
+void SubversionPluginPrivate::svnStatus(const QString &workingDir, const QString &relativePath)
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -716,21 +727,21 @@ void SubversionPlugin::svnStatus(const QString &workingDir, const QString &relat
VcsOutputWindow::clearRepository();
}
-void SubversionPlugin::filelog(const QString &workingDir,
+void SubversionPluginPrivate::filelog(const QString &workingDir,
const QString &file,
bool enableAnnotationContextMenu)
{
m_client->log(workingDir, QStringList(file), QStringList(), enableAnnotationContextMenu);
}
-void SubversionPlugin::updateProject()
+void SubversionPluginPrivate::updateProject()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
svnUpdate(state.currentProjectTopLevel(), state.relativeCurrentProject());
}
-void SubversionPlugin::svnUpdate(const QString &workingDir, const QString &relativePath)
+void SubversionPluginPrivate::svnUpdate(const QString &workingDir, const QString &relativePath)
{
QStringList args(QLatin1String("update"));
args << SubversionClient::addAuthenticationOptions(client()->settings());
@@ -744,14 +755,14 @@ void SubversionPlugin::svnUpdate(const QString &workingDir, const QString &relat
subVersionControl()->emitRepositoryChanged(workingDir);
}
-void SubversionPlugin::annotateCurrentFile()
+void SubversionPluginPrivate::annotateCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
vcsAnnotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void SubversionPlugin::vcsAnnotate(const QString &workingDir, const QString &file,
+void SubversionPluginPrivate::vcsAnnotate(const QString &workingDir, const QString &file,
const QString &revision /* = QString() */,
int lineNumber /* = -1 */)
{
@@ -794,14 +805,14 @@ void SubversionPlugin::vcsAnnotate(const QString &workingDir, const QString &fil
}
}
-void SubversionPlugin::projectStatus()
+void SubversionPluginPrivate::projectStatus()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasProject(), return);
svnStatus(state.currentProjectTopLevel(), state.relativeCurrentProject());
}
-void SubversionPlugin::describe(const QString &source, const QString &changeNr)
+void SubversionPluginPrivate::describe(const QString &source, const QString &changeNr)
{
// To describe a complete change, find the top level and then do
//svn diff -r 472958:472959 <top level>
@@ -824,7 +835,7 @@ void SubversionPlugin::describe(const QString &source, const QString &changeNr)
m_client->describe(topLevel, number, title);
}
-void SubversionPlugin::slotDescribe()
+void SubversionPluginPrivate::slotDescribe()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasTopLevel(), return);
@@ -842,14 +853,14 @@ void SubversionPlugin::slotDescribe()
describe(state.topLevel(), QString::number(revision));
}
-void SubversionPlugin::commitFromEditor()
+void SubversionPluginPrivate::commitFromEditor()
{
m_submitActionTriggered = true;
QTC_ASSERT(submitEditor(), return);
EditorManager::closeDocument(submitEditor()->document());
}
-SubversionResponse SubversionPlugin::runSvn(const QString &workingDir,
+SubversionResponse SubversionPluginPrivate::runSvn(const QString &workingDir,
const QStringList &arguments,
int timeOutS, unsigned flags,
QTextCodec *outputCodec) const
@@ -872,7 +883,7 @@ SubversionResponse SubversionPlugin::runSvn(const QString &workingDir,
return response;
}
-IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const QString &output,
+IEditor *SubversionPluginPrivate::showOutputInEditor(const QString &title, const QString &output,
int editorType, const QString &source,
QTextCodec *codec)
{
@@ -887,7 +898,7 @@ IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const QStrin
auto e = qobject_cast<SubversionEditorWidget*>(editor->widget());
if (!e)
return nullptr;
- connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &SubversionPlugin::vcsAnnotate);
+ connect(e, &VcsBaseEditorWidget::annotateRevisionRequested, this, &SubversionPluginPrivate::vcsAnnotate);
e->setForceReadOnly(true);
s.replace(QLatin1Char(' '), QLatin1Char('_'));
e->textDocument()->setFallbackSaveAsFileName(s);
@@ -898,13 +909,13 @@ IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const QStrin
return editor;
}
-SubversionPlugin *SubversionPlugin::instance()
+SubversionPluginPrivate *SubversionPluginPrivate::instance()
{
- QTC_ASSERT(m_subversionPluginInstance, return m_subversionPluginInstance);
- return m_subversionPluginInstance;
+ QTC_ASSERT(dd, return dd);
+ return dd;
}
-QString SubversionPlugin::monitorFile(const QString &repository) const
+QString SubversionPluginPrivate::monitorFile(const QString &repository) const
{
QTC_ASSERT(!repository.isEmpty(), return QString());
QDir repoDir(repository);
@@ -918,12 +929,12 @@ QString SubversionPlugin::monitorFile(const QString &repository) const
return QString();
}
-QString SubversionPlugin::synchronousTopic(const QString &repository) const
+QString SubversionPluginPrivate::synchronousTopic(const QString &repository) const
{
return m_client->synchronousTopic(repository);
}
-bool SubversionPlugin::vcsAdd(const QString &workingDir, const QString &rawFileName)
+bool SubversionPluginPrivate::vcsAdd(const QString &workingDir, const QString &rawFileName)
{
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
QStringList args;
@@ -936,7 +947,7 @@ bool SubversionPlugin::vcsAdd(const QString &workingDir, const QString &rawFileN
return !response.error;
}
-bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFileName)
+bool SubversionPluginPrivate::vcsDelete(const QString &workingDir, const QString &rawFileName)
{
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
@@ -951,7 +962,7 @@ bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFi
return !response.error;
}
-bool SubversionPlugin::vcsMove(const QString &workingDir, const QString &from, const QString &to)
+bool SubversionPluginPrivate::vcsMove(const QString &workingDir, const QString &from, const QString &to)
{
QStringList args(QLatin1String("move"));
args << SubversionClient::addAuthenticationOptions(client()->settings());
@@ -964,7 +975,7 @@ bool SubversionPlugin::vcsMove(const QString &workingDir, const QString &from, c
return !response.error;
}
-bool SubversionPlugin::vcsCheckout(const QString &directory, const QByteArray &url)
+bool SubversionPluginPrivate::vcsCheckout(const QString &directory, const QByteArray &url)
{
QUrl tempUrl = QUrl::fromEncoded(url);
QString username = tempUrl.userName();
@@ -992,7 +1003,7 @@ bool SubversionPlugin::vcsCheckout(const QString &directory, const QByteArray &u
}
-bool SubversionPlugin::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const
+bool SubversionPluginPrivate::managesDirectory(const QString &directory, QString *topLevel /* = 0 */) const
{
const QDir dir(directory);
if (topLevel)
@@ -1015,7 +1026,7 @@ bool SubversionPlugin::managesDirectory(const QString &directory, QString *topLe
return false;
}
-bool SubversionPlugin::managesFile(const QString &workingDirectory, const QString &fileName) const
+bool SubversionPluginPrivate::managesFile(const QString &workingDirectory, const QString &fileName) const
{
QStringList args;
args << QLatin1String("status");
@@ -1027,7 +1038,7 @@ bool SubversionPlugin::managesFile(const QString &workingDirectory, const QStrin
}
// Check whether SVN management subdirs exist.
-bool SubversionPlugin::checkSVNSubDir(const QDir &directory) const
+bool SubversionPluginPrivate::checkSVNSubDir(const QDir &directory) const
{
const int dirCount = m_svnDirectories.size();
for (int i = 0; i < dirCount; i++) {
@@ -1041,7 +1052,7 @@ bool SubversionPlugin::checkSVNSubDir(const QDir &directory) const
return false;
}
-SubversionControl *SubversionPlugin::subVersionControl() const
+SubversionControl *SubversionPluginPrivate::subVersionControl() const
{
return static_cast<SubversionControl *>(versionControl());
}
diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h
index a5b2dbd253..1988efb7aa 100644
--- a/src/plugins/subversion/subversionplugin.h
+++ b/src/plugins/subversion/subversionplugin.h
@@ -62,16 +62,13 @@ const char FileConflictedC[] = "C";
const char FileDeletedC[] = "D";
const char FileModifiedC[] = "M";
-class SubversionPlugin : public VcsBase::VcsBasePlugin
+class SubversionPluginPrivate final : public VcsBase::VcsBasePluginPrivate
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Subversion.json")
public:
- SubversionPlugin();
- ~SubversionPlugin() override;
-
- bool initialize(const QStringList &arguments, QString *errorMessage) override;
+ SubversionPluginPrivate();
+ ~SubversionPluginPrivate() final;
bool isVcsDirectory(const Utils::FilePath &fileName);
@@ -87,7 +84,7 @@ public:
bool managesFile(const QString &workingDirectory, const QString &fileName) const;
bool vcsCheckout(const QString &directory, const QByteArray &url);
- static SubversionPlugin *instance();
+ static SubversionPluginPrivate *instance();
QString monitorFile(const QString &repository) const;
QString synchronousTopic(const QString &repository) const;
@@ -98,13 +95,8 @@ public:
void vcsAnnotate(const QString &workingDir, const QString &file,
const QString &revision = QString(), int lineNumber = -1);
-#ifdef WITH_TESTS
-private slots:
- void testLogResolving();
-#endif
-
protected:
- void updateActions(VcsBase::VcsBasePlugin::ActionState) override;
+ void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override;
bool submitEditorAboutToClose() override;
private:
@@ -173,8 +165,23 @@ private:
QAction *m_menuAction = nullptr;
bool m_submitActionTriggered = false;
+};
+
+class SubversionPlugin final : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Subversion.json")
+
+ ~SubversionPlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *errorMessage) final;
+ void extensionsInitialized() final;
+
+#ifdef WITH_TESTS
+private slots:
+ void testLogResolving();
+#endif
- static SubversionPlugin *m_subversionPluginInstance;
};
} // namespace Subversion
diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
index 7b5b1fbab7..e366d8e56a 100644
--- a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
+++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
@@ -43,7 +43,7 @@ const char DIFF_SELECTED[] = "Vcs.DiffSelectedFiles";
VcsSubmitEditorFactory::VcsSubmitEditorFactory
(const VcsBaseSubmitEditorParameters *parameters,
const EditorCreator &editorCreator,
- VcsBasePlugin *plugin)
+ VcsBasePluginPrivate *plugin)
: IEditorFactory(plugin), m_editorCreator(editorCreator)
{
setId(parameters->id);
@@ -62,7 +62,7 @@ VcsSubmitEditorFactory::VcsSubmitEditorFactory
plugin->commitDisplayName(), this);
Command *command = ActionManager::registerAction(m_submitAction, SUBMIT, context);
command->setAttribute(Command::CA_UpdateText);
- connect(m_submitAction, &QAction::triggered, plugin, &VcsBasePlugin::commitFromEditor);
+ connect(m_submitAction, &QAction::triggered, plugin, &VcsBasePluginPrivate::commitFromEditor);
m_diffAction = new QAction(VcsBaseSubmitEditor::diffIcon(), tr("Diff &Selected Files"), this);
ActionManager::registerAction(m_diffAction, DIFF_SELECTED, context);
diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.h b/src/plugins/vcsbase/basevcssubmiteditorfactory.h
index d74f635698..5cb7e84bcb 100644
--- a/src/plugins/vcsbase/basevcssubmiteditorfactory.h
+++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.h
@@ -36,7 +36,7 @@ namespace VcsBase {
class VcsBaseSubmitEditor;
class VcsBaseSubmitEditorParameters;
-class VcsBasePlugin;
+class VcsBasePluginPrivate;
// Parametrizable base class for editor factories creating instances of
// VcsBaseSubmitEditor subclasses.
@@ -49,7 +49,7 @@ public:
VcsSubmitEditorFactory(const VcsBaseSubmitEditorParameters *parameters,
const EditorCreator &editorCreator,
- VcsBasePlugin *plugin);
+ VcsBasePluginPrivate *plugin);
Core::IEditor *createEditor() override;
diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp
index 14c9030556..9ae6f826c4 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.cpp
+++ b/src/plugins/vcsbase/vcsbaseplugin.cpp
@@ -516,113 +516,97 @@ VCSBASE_EXPORT QDebug operator<<(QDebug in, const VcsBasePluginState &state)
the virtual submitEditorAboutToClose() to trigger the submit process.
*/
-class VcsBasePluginPrivate
-{
-public:
- inline bool supportsRepositoryCreation() const;
-
- QPointer<VcsBaseSubmitEditor> m_submitEditor;
- IVersionControl *m_versionControl = nullptr;
- Context m_context;
- VcsBasePluginState m_state;
- int m_actionState = -1;
-
- static Internal::StateListener *m_listener;
-};
-
bool VcsBasePluginPrivate::supportsRepositoryCreation() const
{
return m_versionControl && m_versionControl->supportsOperation(IVersionControl::CreateRepositoryOperation);
}
-Internal::StateListener *VcsBasePluginPrivate::m_listener = nullptr;
+static Internal::StateListener *m_listener = nullptr;
-VcsBasePlugin::VcsBasePlugin() :
- d(new VcsBasePluginPrivate())
+VcsBasePluginPrivate::VcsBasePluginPrivate()
{ }
-VcsBasePlugin::~VcsBasePlugin()
+VcsBasePluginPrivate::~VcsBasePluginPrivate()
{
- delete d->m_versionControl;
- delete d;
+ delete m_versionControl;
}
-void VcsBasePlugin::initializeVcs(IVersionControl *vc, const Context &context)
+void VcsBasePluginPrivate::initializeVcs(IVersionControl *vc, const Context &context)
{
QTC_ASSERT(vc, return);
- d->m_versionControl = vc;
- d->m_context = context;
+ m_versionControl = vc;
+ m_context = context;
Internal::VcsPlugin *plugin = Internal::VcsPlugin::instance();
connect(plugin, &Internal::VcsPlugin::submitEditorAboutToClose,
- this, &VcsBasePlugin::slotSubmitEditorAboutToClose);
+ this, &VcsBasePluginPrivate::slotSubmitEditorAboutToClose);
// First time: create new listener
- if (!VcsBasePluginPrivate::m_listener)
- VcsBasePluginPrivate::m_listener = new Internal::StateListener(plugin);
- connect(VcsBasePluginPrivate::m_listener, &Internal::StateListener::stateChanged,
- this, &VcsBasePlugin::slotStateChanged);
+ if (!m_listener)
+ m_listener = new Internal::StateListener(plugin);
+ connect(m_listener, &Internal::StateListener::stateChanged,
+ this, &VcsBasePluginPrivate::slotStateChanged);
// VCSes might have become (un-)available, so clear the VCS directory cache
connect(vc, &IVersionControl::configurationChanged,
VcsManager::instance(), &VcsManager::clearVersionControlCache);
connect(vc, &IVersionControl::configurationChanged,
- VcsBasePluginPrivate::m_listener, &Internal::StateListener::slotStateChanged);
+ m_listener, &Internal::StateListener::slotStateChanged);
}
-void VcsBasePlugin::extensionsInitialized()
+void VcsBasePluginPrivate::extensionsInitialized()
{
// Initialize enable menus.
- VcsBasePluginPrivate::m_listener->slotStateChanged();
+ m_listener->slotStateChanged();
}
-void VcsBasePlugin::slotSubmitEditorAboutToClose(VcsBaseSubmitEditor *submitEditor, bool *result)
+void VcsBasePluginPrivate::slotSubmitEditorAboutToClose(VcsBaseSubmitEditor *submitEditor, bool *result)
{
- qCDebug(baseLog) << this << "plugin's submit editor" << d->m_submitEditor
- << (d->m_submitEditor ? d->m_submitEditor->document()->id().name() : QByteArray())
+ qCDebug(baseLog) << this << "plugin's submit editor" << m_submitEditor
+ << (m_submitEditor ? m_submitEditor->document()->id().name() : QByteArray())
<< "closing submit editor" << submitEditor
<< (submitEditor ? submitEditor->document()->id().name() : QByteArray());
- if (submitEditor == d->m_submitEditor)
+ if (submitEditor == m_submitEditor)
*result = submitEditorAboutToClose();
}
-IVersionControl *VcsBasePlugin::versionControl() const
+IVersionControl *VcsBasePluginPrivate::versionControl() const
{
- return d->m_versionControl;
+ return m_versionControl;
}
-void VcsBasePlugin::slotStateChanged(const VcsBase::Internal::State &newInternalState, IVersionControl *vc)
+void VcsBasePluginPrivate::slotStateChanged(const VcsBase::Internal::State &newInternalState, IVersionControl *vc)
{
- if (vc == d->m_versionControl) {
+ if (vc == m_versionControl) {
// We are directly affected: Change state
- if (!d->m_state.equals(newInternalState)) {
- d->m_state.setState(newInternalState);
+ if (!m_state.equals(newInternalState)) {
+ m_state.setState(newInternalState);
updateActions(VcsEnabled);
- ICore::addAdditionalContext(d->m_context);
+ ICore::addAdditionalContext(m_context);
}
} else {
// Some other VCS plugin or state changed: Reset us to empty state.
const ActionState newActionState = vc ? OtherVcsEnabled : NoVcsEnabled;
- if (d->m_actionState != newActionState || !d->m_state.isEmpty()) {
- d->m_actionState = newActionState;
+ if (m_actionState != newActionState || !m_state.isEmpty()) {
+ m_actionState = newActionState;
const VcsBasePluginState emptyState;
- d->m_state = emptyState;
+ m_state = emptyState;
updateActions(newActionState);
}
- ICore::removeAdditionalContext(d->m_context);
+ ICore::removeAdditionalContext(m_context);
}
}
-const VcsBasePluginState &VcsBasePlugin::currentState() const
+const VcsBasePluginState &VcsBasePluginPrivate::currentState() const
{
- return d->m_state;
+ return m_state;
}
-bool VcsBasePlugin::enableMenuAction(ActionState as, QAction *menuAction) const
+bool VcsBasePluginPrivate::enableMenuAction(ActionState as, QAction *menuAction) const
{
qCDebug(baseLog) << "enableMenuAction" << menuAction->text() << as;
switch (as) {
case NoVcsEnabled: {
- const bool supportsCreation = d->supportsRepositoryCreation();
+ const bool supportsCreation = supportsRepositoryCreation();
menuAction->setVisible(supportsCreation);
menuAction->setEnabled(supportsCreation);
return supportsCreation;
@@ -638,18 +622,18 @@ bool VcsBasePlugin::enableMenuAction(ActionState as, QAction *menuAction) const
return true;
}
-QString VcsBasePlugin::commitDisplayName() const
+QString VcsBasePluginPrivate::commitDisplayName() const
{
return tr("Commit", "name of \"commit\" action of the VCS.");
}
-bool VcsBasePlugin::promptBeforeCommit()
+bool VcsBasePluginPrivate::promptBeforeCommit()
{
return DocumentManager::saveAllModifiedDocuments(tr("Save before %1?")
.arg(commitDisplayName().toLower()));
}
-void VcsBasePlugin::promptToDeleteCurrentFile()
+void VcsBasePluginPrivate::promptToDeleteCurrentFile()
{
const VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
@@ -668,9 +652,9 @@ static inline bool ask(QWidget *parent, const QString &title, const QString &que
return QMessageBox::question(parent, title, question, QMessageBox::Yes|QMessageBox::No, defaultButton) == QMessageBox::Yes;
}
-void VcsBasePlugin::createRepository()
+void VcsBasePluginPrivate::createRepository()
{
- QTC_ASSERT(d->m_versionControl->supportsOperation(IVersionControl::CreateRepositoryOperation), return);
+ QTC_ASSERT(m_versionControl->supportsOperation(IVersionControl::CreateRepositoryOperation), return);
// Find current starting directory
QString directory;
if (const Project *currentProject = ProjectTree::currentProject())
@@ -691,7 +675,7 @@ void VcsBasePlugin::createRepository()
return;
} while (true);
// Create
- const bool rc = d->m_versionControl->vcsCreateRepository(directory);
+ const bool rc = m_versionControl->vcsCreateRepository(directory);
const QString nativeDir = QDir::toNativeSeparators(directory);
if (rc) {
QMessageBox::information(mw, tr("Repository Created"),
@@ -704,21 +688,21 @@ void VcsBasePlugin::createRepository()
}
}
-void VcsBasePlugin::setSubmitEditor(VcsBaseSubmitEditor *submitEditor)
+void VcsBasePluginPrivate::setSubmitEditor(VcsBaseSubmitEditor *submitEditor)
{
- d->m_submitEditor = submitEditor;
+ m_submitEditor = submitEditor;
}
-VcsBaseSubmitEditor *VcsBasePlugin::submitEditor() const
+VcsBaseSubmitEditor *VcsBasePluginPrivate::submitEditor() const
{
- return d->m_submitEditor;
+ return m_submitEditor;
}
-bool VcsBasePlugin::raiseSubmitEditor() const
+bool VcsBasePluginPrivate::raiseSubmitEditor() const
{
- if (!d->m_submitEditor)
+ if (!m_submitEditor)
return false;
- EditorManager::activateEditor(d->m_submitEditor, EditorManager::IgnoreNavigationHistory);
+ EditorManager::activateEditor(m_submitEditor, EditorManager::IgnoreNavigationHistory);
return true;
}
@@ -768,7 +752,7 @@ static const char SOURCE_PROPERTY[] = "qtcreator_source";
void setSource(IDocument *document, const QString &source)
{
document->setProperty(SOURCE_PROPERTY, source);
- VcsBasePluginPrivate::m_listener->slotStateChanged();
+ m_listener->slotStateChanged();
}
QString source(IDocument *document)
diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h
index 676ef59d58..a7109e1625 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.h
+++ b/src/plugins/vcsbase/vcsbaseplugin.h
@@ -27,6 +27,7 @@
#include "vcsbase_global.h"
+#include <coreplugin/icontext.h>
#include <coreplugin/iversioncontrol.h>
#include <coreplugin/vcsmanager.h>
#include <extensionsystem/iplugin.h>
@@ -59,7 +60,7 @@ namespace Internal { class State; }
class VcsBaseSubmitEditor;
class VcsBasePluginPrivate;
class VcsBasePluginStateData;
-class VcsBasePlugin;
+class VcsBasePluginPrivate;
// Documentation inside.
class VCSBASE_EXPORT VcsBasePluginState
@@ -109,7 +110,7 @@ public:
friend VCSBASE_EXPORT QDebug operator<<(QDebug in, const VcsBasePluginState &state);
private:
- friend class VcsBasePlugin;
+ friend class VcsBasePluginPrivate;
bool equals(const Internal::State &s) const;
void setState(const Internal::State &s);
@@ -153,17 +154,17 @@ VCSBASE_EXPORT Utils::SynchronousProcessResponse runVcs(const QString &workingDi
QTextCodec *outputCodec = nullptr,
const QProcessEnvironment &env = {});
-class VCSBASE_EXPORT VcsBasePlugin : public ExtensionSystem::IPlugin
+class VCSBASE_EXPORT VcsBasePluginPrivate : public QObject
{
Q_OBJECT
protected:
- explicit VcsBasePlugin();
-
- void extensionsInitialized() override;
+ explicit VcsBasePluginPrivate();
public:
- ~VcsBasePlugin() override;
+ ~VcsBasePluginPrivate() override;
+
+ void extensionsInitialized();
const VcsBasePluginState &currentState() const;
Core::IVersionControl *versionControl() const;
@@ -214,7 +215,13 @@ private:
void slotSubmitEditorAboutToClose(VcsBaseSubmitEditor *submitEditor, bool *result);
void slotStateChanged(const VcsBase::Internal::State &s, Core::IVersionControl *vc);
- VcsBasePluginPrivate *d;
+ bool supportsRepositoryCreation() const;
+
+ QPointer<VcsBaseSubmitEditor> m_submitEditor;
+ Core::IVersionControl *m_versionControl = nullptr;
+ Core::Context m_context;
+ VcsBasePluginState m_state;
+ int m_actionState = -1;
};
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index 4c36057945..1f21badce6 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -509,7 +509,7 @@ static QString withUnusedMnemonic(QString string, const QList<QPushButton *> &ot
}
VcsBaseSubmitEditor::PromptSubmitResult
- VcsBaseSubmitEditor::promptSubmit(VcsBasePlugin *plugin,
+ VcsBaseSubmitEditor::promptSubmit(VcsBasePluginPrivate *plugin,
bool *promptSetting,
bool forcePrompt,
bool canCommitOnFailure)
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h
index 223fa6f7f5..30fd82e694 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.h
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h
@@ -46,7 +46,7 @@ namespace Internal {
class SubmitEditorWidget;
class SubmitFileModel;
-class VcsBasePlugin;
+class VcsBasePluginPrivate;
class VcsBaseSubmitEditorPrivate;
class VCSBASE_EXPORT VcsBaseSubmitEditorParameters
@@ -85,7 +85,7 @@ public:
// 'promptSetting' points to a bool variable containing the plugin's
// prompt setting. The user can uncheck it from the message box.
enum PromptSubmitResult { SubmitConfirmed, SubmitCanceled, SubmitDiscarded };
- PromptSubmitResult promptSubmit(VcsBasePlugin *plugin,
+ PromptSubmitResult promptSubmit(VcsBasePluginPrivate *plugin,
bool *promptSetting,
bool forcePrompt = false,
bool canCommitOnFailure = true);