From 6b10466b103755e5826ade1588c69b9cb47dfeee Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 19 Jan 2015 15:36:07 +0100 Subject: [PATCH] Core: Add some helper methods to VcsManager Make VcsManager provide a generic way to list all IVersionControls and to search for a specific one based on its id. At some point we want to register the IVersionControls directly with the VcsManager instead of going through the object pool and this is a first step into this direction. Change-Id: Id4ded85b29487f6d8adcd0cec1de490afae07132 Reviewed-by: Orgad Shaneh Reviewed-by: Tobias Hunger --- src/plugins/coreplugin/vcsmanager.cpp | 12 ++++++++++++ src/plugins/coreplugin/vcsmanager.h | 4 ++++ src/plugins/projectexplorer/projectwizardpage.cpp | 3 +-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 264d0410abf..b516e05dcf4 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -223,6 +223,18 @@ void VcsManager::extensionsInitialized() } } +QList VcsManager::versionControls() +{ + return ExtensionSystem::PluginManager::getObjects(); +} + +IVersionControl *VcsManager::versionControl(Id id) +{ + return Utils::findOrDefault(versionControls(), [id](const Core::IVersionControl *vc) { + return vc->id() == id; + }); +} + void VcsManager::resetVersionControlForDirectory(const QString &inputDirectory) { if (inputDirectory.isEmpty()) diff --git a/src/plugins/coreplugin/vcsmanager.h b/src/plugins/coreplugin/vcsmanager.h index b19cc1d608f..77b1fa9e6f2 100644 --- a/src/plugins/coreplugin/vcsmanager.h +++ b/src/plugins/coreplugin/vcsmanager.h @@ -32,6 +32,7 @@ #define VCSMANAGER_H #include "core_global.h" +#include "id.h" #include #include @@ -63,6 +64,9 @@ public: static void extensionsInitialized(); + static QList versionControls(); + static IVersionControl *versionControl(Id id); + static void resetVersionControlForDirectory(const QString &inputDirectory); static IVersionControl *findVersionControlForDirectory(const QString &directory, QString *topLevelDirectory = 0); diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp index 1cfae0f32b8..9c662af5903 100644 --- a/src/plugins/projectexplorer/projectwizardpage.cpp +++ b/src/plugins/projectexplorer/projectwizardpage.cpp @@ -38,7 +38,6 @@ #include #include #include -#include #include #include #include @@ -433,7 +432,7 @@ void ProjectWizardPage::initializeVersionControls() } } else { // Create - foreach (IVersionControl *vc, ExtensionSystem::PluginManager::getObjects()) { + foreach (IVersionControl *vc, VcsManager::versionControls()) { if (vc->supportsOperation(IVersionControl::CreateRepositoryOperation)) { versionControlChoices.append(vc->displayName()); m_activeVersionControls.append(vc);