aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-12-08 17:20:48 +0100
committerhjk <hjk@qt.io>2017-12-15 07:08:05 +0000
commitcc883023090030eb341a11c4d6634ca027f02c65 (patch)
treef5dd463617c340842e1f74440f0caa3a8ea41d3b /src/plugins
parent32762e27e2f4556cd7ed63f78ed3f28695fddccf (diff)
De-emphasize PluginManager::getObjects<Type>()
... by additionally keeping local (currently non-owning) pools per "interesting" type. Current situation: - The global object pool does not scale well for looking up objects, as iteration plus qobject_cast typically iterates over all pooled objects. - User code that can use typed results from the object pool need to have access to the full type definition anyway, i.e. depend on the plugin of the target class anyway. The patch here solves the scaling problem is to have local type-specific pools to which objects register in their constructors and deregister in their destructors. This patch here does *not* change the ownership model of the pooled objects, however, it opens the possibility to change the ownership model per type (e.g. by not putting things into the global pool at all anymore and make the local pool 'owning') and the intent is to handle that in later patchs. Even without the follow-up patches this here is a performance improvement for the cases that access the local pools instead the global one, i.e. "practically all". Change-Id: Ib11a42df2c4ecf5e1155534730083a520dd1995b Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/android/androidmanager.cpp17
-rw-r--r--src/plugins/android/androidqtsupport.h5
-rw-r--r--src/plugins/coreplugin/basefilewizard.cpp39
-rw-r--r--src/plugins/coreplugin/dialogs/ioptionspage.cpp27
-rw-r--r--src/plugins/coreplugin/dialogs/ioptionspage.h7
-rw-r--r--src/plugins/coreplugin/dialogs/settingsdialog.cpp6
-rw-r--r--src/plugins/coreplugin/diffservice.cpp16
-rw-r--r--src/plugins/coreplugin/diffservice.h3
-rw-r--r--src/plugins/coreplugin/documentmanager.cpp24
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp26
-rw-r--r--src/plugins/coreplugin/editormanager/ieditorfactory.cpp17
-rw-r--r--src/plugins/coreplugin/editormanager/ieditorfactory.h6
-rw-r--r--src/plugins/coreplugin/editormanager/iexternaleditor.cpp22
-rw-r--r--src/plugins/coreplugin/editormanager/iexternaleditor.h5
-rw-r--r--src/plugins/coreplugin/find/findplugin.cpp3
-rw-r--r--src/plugins/coreplugin/find/findtoolbar.cpp6
-rw-r--r--src/plugins/coreplugin/find/ifindfilter.cpp17
-rw-r--r--src/plugins/coreplugin/find/ifindfilter.h5
-rw-r--r--src/plugins/coreplugin/findplaceholder.cpp13
-rw-r--r--src/plugins/coreplugin/findplaceholder.h3
-rw-r--r--src/plugins/coreplugin/idocumentfactory.cpp18
-rw-r--r--src/plugins/coreplugin/idocumentfactory.h5
-rw-r--r--src/plugins/coreplugin/ifilewizardextension.h4
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.cpp13
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.h3
-rw-r--r--src/plugins/coreplugin/ioutputpane.h3
-rw-r--r--src/plugins/coreplugin/iwelcomepage.cpp9
-rw-r--r--src/plugins/coreplugin/iwelcomepage.h2
-rw-r--r--src/plugins/coreplugin/locator/ilocatorfilter.cpp13
-rw-r--r--src/plugins/coreplugin/locator/ilocatorfilter.h6
-rw-r--r--src/plugins/coreplugin/locator/locator.cpp2
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp6
-rw-r--r--src/plugins/coreplugin/outputpanemanager.cpp20
-rw-r--r--src/plugins/cppeditor/cppquickfix.h2
-rw-r--r--src/plugins/cppeditor/cppquickfixassistant.cpp9
-rw-r--r--src/plugins/cppeditor/fileandtokenactions_test.cpp41
-rw-r--r--src/plugins/cpptools/cppcodestylepreferencesfactory.cpp5
-rw-r--r--src/plugins/cpptools/cppcodestylesettingspage.cpp6
-rw-r--r--src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp11
-rw-r--r--src/plugins/projectexplorer/buildconfiguration.cpp58
-rw-r--r--src/plugins/projectexplorer/buildconfiguration.h3
-rw-r--r--src/plugins/projectexplorer/buildstep.cpp16
-rw-r--r--src/plugins/projectexplorer/buildstep.h3
-rw-r--r--src/plugins/projectexplorer/buildsteplist.cpp4
-rw-r--r--src/plugins/projectexplorer/buildstepspage.cpp5
-rw-r--r--src/plugins/projectexplorer/customwizard/customwizard.cpp15
-rw-r--r--src/plugins/projectexplorer/customwizard/customwizard.h5
-rw-r--r--src/plugins/projectexplorer/deployconfiguration.cpp21
-rw-r--r--src/plugins/projectexplorer/deployconfiguration.h3
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.cpp6
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicemanager.cpp4
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp8
-rw-r--r--src/plugins/projectexplorer/devicesupport/idevicefactory.cpp20
-rw-r--r--src/plugins/projectexplorer/devicesupport/idevicefactory.h2
-rw-r--r--src/plugins/projectexplorer/ipotentialkit.h4
-rw-r--r--src/plugins/projectexplorer/itaskhandler.h3
-rw-r--r--src/plugins/projectexplorer/kit.cpp4
-rw-r--r--src/plugins/projectexplorer/kitinformation.cpp5
-rw-r--r--src/plugins/projectexplorer/kitinformationconfigwidget.cpp6
-rw-r--r--src/plugins/projectexplorer/kitmanager.cpp4
-rw-r--r--src/plugins/projectexplorer/projectimporter.cpp6
-rw-r--r--src/plugins/projectexplorer/runconfiguration.cpp21
-rw-r--r--src/plugins/projectexplorer/runconfiguration.h3
-rw-r--r--src/plugins/projectexplorer/runsettingspropertiespage.cpp5
-rw-r--r--src/plugins/projectexplorer/target.cpp9
-rw-r--r--src/plugins/projectexplorer/targetsetuppage.cpp20
-rw-r--r--src/plugins/projectexplorer/taskwindow.cpp18
-rw-r--r--src/plugins/projectexplorer/toolchain.cpp17
-rw-r--r--src/plugins/projectexplorer/toolchain.h5
-rw-r--r--src/plugins/projectexplorer/toolchainmanager.cpp10
-rw-r--r--src/plugins/projectexplorer/toolchainoptionspage.cpp2
-rw-r--r--src/plugins/qbsprojectmanager/propertyprovider.h3
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanager.cpp18
-rw-r--r--src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp18
-rw-r--r--src/plugins/qmljseditor/qmljsquickfixassist.cpp9
-rw-r--r--src/plugins/qmljstools/qmljsbundleprovider.cpp18
-rw-r--r--src/plugins/qmljstools/qmljsbundleprovider.h7
-rw-r--r--src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp6
-rw-r--r--src/plugins/qmljstools/qmljscodestylesettingspage.cpp7
-rw-r--r--src/plugins/qmljstools/qmljsmodelmanager.cpp16
-rw-r--r--src/plugins/qtsupport/qtversionfactory.cpp11
-rw-r--r--src/plugins/qtsupport/qtversionfactory.h2
-rw-r--r--src/plugins/qtsupport/qtversionmanager.cpp6
-rw-r--r--src/plugins/texteditor/ioutlinewidget.h7
-rw-r--r--src/plugins/texteditor/outlinefactory.cpp25
-rw-r--r--src/plugins/texteditor/outlinefactory.h5
-rw-r--r--src/plugins/texteditor/quickfix.cpp9
-rw-r--r--src/plugins/texteditor/quickfix.h2
-rw-r--r--src/plugins/texteditor/snippets/snippetprovider.cpp25
-rw-r--r--src/plugins/texteditor/snippets/snippetprovider.h6
-rw-r--r--src/plugins/texteditor/snippets/snippetscollection.cpp4
-rw-r--r--src/plugins/texteditor/snippets/snippetssettingspage.cpp8
-rw-r--r--src/plugins/texteditor/texteditorplugin.cpp2
-rw-r--r--src/plugins/vcsbase/basevcseditorfactory.cpp11
-rw-r--r--src/plugins/welcome/welcomeplugin.cpp3
95 files changed, 668 insertions, 320 deletions
diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp
index 460c749eba..8b5afb0092 100644
--- a/src/plugins/android/androidmanager.cpp
+++ b/src/plugins/android/androidmanager.cpp
@@ -41,8 +41,6 @@
#include <coreplugin/messagemanager.h>
#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
-
#include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h>
@@ -92,6 +90,18 @@ static bool openXmlFile(QDomDocument &doc, const Utils::FileName &fileName);
static bool openManifest(ProjectExplorer::Target *target, QDomDocument &doc);
static int parseMinSdk(const QDomElement &manifestElem);
+static QList<AndroidQtSupport *> g_androidQtSupportProviders;
+
+AndroidQtSupport::AndroidQtSupport()
+{
+ g_androidQtSupportProviders.append(this);
+}
+
+AndroidQtSupport::~AndroidQtSupport()
+{
+ g_androidQtSupportProviders.removeOne(this);
+}
+
bool AndroidManager::supportsAndroid(const ProjectExplorer::Kit *kit)
{
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit);
@@ -457,8 +467,7 @@ bool AndroidManager::checkForQt51Files(Utils::FileName fileName)
AndroidQtSupport *AndroidManager::androidQtSupport(ProjectExplorer::Target *target)
{
- QList<AndroidQtSupport *> providerList = ExtensionSystem::PluginManager::getObjects<AndroidQtSupport>();
- foreach (AndroidQtSupport *provider, providerList) {
+ for (AndroidQtSupport *provider : g_androidQtSupportProviders) {
if (provider->canHandle(target))
return provider;
}
diff --git a/src/plugins/android/androidqtsupport.h b/src/plugins/android/androidqtsupport.h
index 021e5d7cff..df2db99551 100644
--- a/src/plugins/android/androidqtsupport.h
+++ b/src/plugins/android/androidqtsupport.h
@@ -45,6 +45,10 @@ class ANDROID_EXPORT AndroidQtSupport : public QObject
{
Q_OBJECT
+protected:
+ AndroidQtSupport();
+ ~AndroidQtSupport();
+
public:
enum BuildType {
DebugBuild,
@@ -52,7 +56,6 @@ public:
ReleaseBuildSigned
};
-public:
virtual bool canHandle(const ProjectExplorer::Target *target) const = 0;
virtual QStringList soLibSearchPath(const ProjectExplorer::Target *target) const = 0;
virtual QStringList androidExtraLibs(const ProjectExplorer::Target *target) const = 0;
diff --git a/src/plugins/coreplugin/basefilewizard.cpp b/src/plugins/coreplugin/basefilewizard.cpp
index a9bf34e451..b252d0de2b 100644
--- a/src/plugins/coreplugin/basefilewizard.cpp
+++ b/src/plugins/coreplugin/basefilewizard.cpp
@@ -28,14 +28,24 @@
#include "basefilewizardfactory.h"
#include "ifilewizardextension.h"
-#include <extensionsystem/pluginmanager.h>
-
#include <QMessageBox>
using namespace Utils;
namespace Core {
+static QList<IFileWizardExtension *> g_fileWizardExtensions;
+
+IFileWizardExtension::IFileWizardExtension()
+{
+ g_fileWizardExtensions.append(this);
+}
+
+IFileWizardExtension::~IFileWizardExtension()
+{
+ g_fileWizardExtensions.removeOne(this);
+}
+
BaseFileWizard::BaseFileWizard(const BaseFileWizardFactory *factory,
const QVariantMap &extraValues,
QWidget *parent) :
@@ -43,19 +53,8 @@ BaseFileWizard::BaseFileWizard(const BaseFileWizardFactory *factory,
m_extraValues(extraValues),
m_factory(factory)
{
- // Compile extension pages, purge out unused ones
- QList<IFileWizardExtension *> extensionList
- = ExtensionSystem::PluginManager::getObjects<IFileWizardExtension>();
-
- for (auto it = extensionList.begin(); it != extensionList.end(); ) {
- const QList<QWizardPage *> extensionPages = (*it)->extensionPages(factory);
- if (extensionPages.empty()) {
- it = extensionList.erase(it);
- } else {
- m_extensionPages += extensionPages;
- ++it;
- }
- }
+ for (IFileWizardExtension *extension : g_fileWizardExtensions)
+ m_extensionPages += extension->extensionPages(factory);
if (!m_extensionPages.empty())
m_firstExtensionPage = m_extensionPages.front();
@@ -67,9 +66,7 @@ void BaseFileWizard::initializePage(int id)
if (page(id) == m_firstExtensionPage) {
generateFileList();
- QList<IFileWizardExtension *> extensionList
- = ExtensionSystem::PluginManager::getObjects<IFileWizardExtension>();
- foreach (IFileWizardExtension *ex, extensionList)
+ for (IFileWizardExtension *ex : g_fileWizardExtensions)
ex->firstExtensionPageShown(m_files, m_extraValues);
}
}
@@ -99,9 +96,7 @@ void BaseFileWizard::accept()
break;
}
- QList<IFileWizardExtension *> extensionList
- = ExtensionSystem::PluginManager::getObjects<IFileWizardExtension>();
- foreach (IFileWizardExtension *ex, extensionList) {
+ for (IFileWizardExtension *ex : g_fileWizardExtensions) {
for (int i = 0; i < m_files.count(); i++) {
ex->applyCodeStyle(&m_files[i]);
}
@@ -116,7 +111,7 @@ void BaseFileWizard::accept()
bool removeOpenProjectAttribute = false;
// Run the extensions
- foreach (IFileWizardExtension *ex, extensionList) {
+ for (IFileWizardExtension *ex : g_fileWizardExtensions) {
bool remove;
if (!ex->processFiles(m_files, &remove, &errorMessage)) {
if (!errorMessage.isEmpty())
diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.cpp b/src/plugins/coreplugin/dialogs/ioptionspage.cpp
index 16ac6e9184..49d72dc1d9 100644
--- a/src/plugins/coreplugin/dialogs/ioptionspage.cpp
+++ b/src/plugins/coreplugin/dialogs/ioptionspage.cpp
@@ -135,6 +135,7 @@ QIcon Core::IOptionsPage::categoryIcon() const
Sets \a categoryIcon as the category icon of the options page.
*/
+static QList<Core::IOptionsPage *> g_optionsPages;
/*!
Constructs an options page with the given \a parent.
@@ -143,7 +144,7 @@ Core::IOptionsPage::IOptionsPage(QObject *parent)
: QObject(parent),
m_keywordsInitialized(false)
{
-
+ g_optionsPages.append(this);
}
/*!
@@ -151,6 +152,12 @@ Core::IOptionsPage::IOptionsPage(QObject *parent)
*/
Core::IOptionsPage::~IOptionsPage()
{
+ g_optionsPages.removeOne(this);
+}
+
+const QList<Core::IOptionsPage *> Core::IOptionsPage::allOptionsPages()
+{
+ return g_optionsPages;
}
/*!
@@ -183,6 +190,24 @@ bool Core::IOptionsPage::matches(const QString &searchKeyWord) const
return false;
}
+static QList<Core::IOptionsPageProvider *> g_optionsPagesProviders;
+
+Core::IOptionsPageProvider::IOptionsPageProvider(QObject *parent)
+ : QObject(parent)
+{
+ g_optionsPagesProviders.append(this);
+}
+
+Core::IOptionsPageProvider::~IOptionsPageProvider()
+{
+ g_optionsPagesProviders.removeOne(this);
+}
+
+const QList<Core::IOptionsPageProvider *> Core::IOptionsPageProvider::allOptionsPagesProviders()
+{
+ return g_optionsPagesProviders;
+}
+
QIcon Core::IOptionsPageProvider::categoryIcon() const
{
return QIcon(m_categoryIcon);
diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.h b/src/plugins/coreplugin/dialogs/ioptionspage.h
index b726755b7b..16e6d285c0 100644
--- a/src/plugins/coreplugin/dialogs/ioptionspage.h
+++ b/src/plugins/coreplugin/dialogs/ioptionspage.h
@@ -47,6 +47,8 @@ public:
IOptionsPage(QObject *parent = 0);
virtual ~IOptionsPage();
+ static const QList<IOptionsPage *> allOptionsPages();
+
Id id() const { return m_id; }
QString displayName() const { return m_displayName; }
Id category() const { return m_category; }
@@ -88,7 +90,10 @@ class CORE_EXPORT IOptionsPageProvider : public QObject
Q_OBJECT
public:
- IOptionsPageProvider(QObject *parent = 0) : QObject(parent) {}
+ IOptionsPageProvider(QObject *parent = nullptr);
+ ~IOptionsPageProvider();
+
+ static const QList<IOptionsPageProvider *> allOptionsPagesProviders();
Id category() const { return m_category; }
QString displayCategory() const { return m_displayCategory; }
diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
index dca59526dd..4d1aea8fd9 100644
--- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
@@ -27,7 +27,6 @@
#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h>
#include <utils/hostosinfo.h>
#include <utils/fancylineedit.h>
@@ -69,7 +68,7 @@ bool optionsPageLessThan(const IOptionsPage *p1, const IOptionsPage *p2)
static inline QList<IOptionsPage*> sortedOptionsPages()
{
- QList<IOptionsPage*> rc = ExtensionSystem::PluginManager::getObjects<IOptionsPage>();
+ QList<IOptionsPage*> rc = IOptionsPage::allOptionsPages();
std::stable_sort(rc.begin(), rc.end(), optionsPageLessThan);
return rc;
}
@@ -414,8 +413,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
else
setWindowTitle(tr("Options"));
- m_model->setPages(m_pages,
- ExtensionSystem::PluginManager::getObjects<IOptionsPageProvider>());
+ m_model->setPages(m_pages, IOptionsPageProvider::allOptionsPagesProviders());
m_proxyModel->setSourceModel(m_model);
m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
diff --git a/src/plugins/coreplugin/diffservice.cpp b/src/plugins/coreplugin/diffservice.cpp
index 312d08346b..7feb9aae02 100644
--- a/src/plugins/coreplugin/diffservice.cpp
+++ b/src/plugins/coreplugin/diffservice.cpp
@@ -25,13 +25,23 @@
#include "diffservice.h"
-#include <extensionsystem/pluginmanager.h>
-
namespace Core {
+static DiffService *g_instance = nullptr;
+
+DiffService::DiffService()
+{
+ g_instance = this;
+}
+
+DiffService::~DiffService()
+{
+ g_instance = nullptr;
+}
+
DiffService *DiffService::instance()
{
- return ExtensionSystem::PluginManager::getObject<DiffService>();
+ return g_instance;
}
} // Core
diff --git a/src/plugins/coreplugin/diffservice.h b/src/plugins/coreplugin/diffservice.h
index 72b9881d9f..1c241364dc 100644
--- a/src/plugins/coreplugin/diffservice.h
+++ b/src/plugins/coreplugin/diffservice.h
@@ -38,7 +38,8 @@ class CORE_EXPORT DiffService
public:
static DiffService *instance();
- virtual ~DiffService() {}
+ DiffService();
+ virtual ~DiffService();
virtual void diffFiles(const QString &leftFileName, const QString &rightFileName) = 0;
virtual void diffModifiedFiles(const QStringList &fileNames) = 0;
diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp
index 49cc96566a..0edf3a3966 100644
--- a/src/plugins/coreplugin/documentmanager.cpp
+++ b/src/plugins/coreplugin/documentmanager.cpp
@@ -711,24 +711,26 @@ bool DocumentManager::saveDocument(IDocument *document, const QString &fileName,
return ret;
}
-template<typename FactoryType>
-QSet<QString> filterStrings()
+QString DocumentManager::allDocumentFactoryFiltersString(QString *allFilesFilter = 0)
{
- QSet<QString> filters;
- for (FactoryType *factory : ExtensionSystem::PluginManager::getObjects<FactoryType>()) {
+ QSet<QString> uniqueFilters;
+
+ for (IEditorFactory *factory : IEditorFactory::allEditorFactories()) {
for (const QString &mt : factory->mimeTypes()) {
const QString filter = mimeTypeForName(mt).filterString();
if (!filter.isEmpty())
- filters.insert(filter);
+ uniqueFilters.insert(filter);
+ }
+ }
+
+ for (IDocumentFactory *factory : IDocumentFactory::allDocumentFactories()) {
+ for (const QString &mt : factory->mimeTypes()) {
+ const QString filter = mimeTypeForName(mt).filterString();
+ if (!filter.isEmpty())
+ uniqueFilters.insert(filter);
}
}
- return filters;
-}
-QString DocumentManager::allDocumentFactoryFiltersString(QString *allFilesFilter = 0)
-{
- const QSet<QString> uniqueFilters = filterStrings<IDocumentFactory>()
- + filterStrings<IEditorFactory>();
QStringList filters = uniqueFilters.toList();
filters.sort();
const QString allFiles = Utils::allFilesFilterString();
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 45fc900f18..61d0854cdf 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -186,17 +186,6 @@ static void setFocusToEditorViewAndUnmaximizePanes(EditorView *view)
}
}
-/* For something that has a 'QString id' (IEditorFactory
- * or IExternalEditor), find the one matching a id. */
-template <class EditorFactoryLike>
-EditorFactoryLike *findById(Id id)
-{
- return ExtensionSystem::PluginManager::getObject<EditorFactoryLike>(
- [&id](EditorFactoryLike *efl) {
- return id == efl->id();
- });
-}
-
EditorManagerPrivate::EditorManagerPrivate(QObject *parent) :
QObject(parent),
m_revertToSavedAction(new QAction(EditorManager::tr("Revert to Saved"), this)),
@@ -606,7 +595,9 @@ IEditor *EditorManagerPrivate::openEditor(EditorView *view, const QString &fileN
return 0;
}
if (editorId.isValid()) {
- if (IEditorFactory *factory = findById<IEditorFactory>(editorId)) {
+ IEditorFactory *factory = Utils::findOrDefault(IEditorFactory::allEditorFactories(),
+ Utils::equal(&IEditorFactory::id, editorId));
+ if (factory) {
factories.removeOne(factory);
factories.push_front(factory);
}
@@ -1139,7 +1130,9 @@ EditorManager::EditorFactoryList EditorManagerPrivate::findFactories(Id editorId
factories = EditorManager::editorFactories(mimeType, false);
} else {
// Find by editor id
- if (IEditorFactory *factory = findById<IEditorFactory>(editorId))
+ IEditorFactory *factory = Utils::findOrDefault(IEditorFactory::allEditorFactories(),
+ Utils::equal(&IEditorFactory::id, editorId));
+ if (factory)
factories.push_back(factory);
}
if (factories.empty()) {
@@ -2606,7 +2599,7 @@ EditorManager::EditorFactoryList
EditorManager::editorFactories(const Utils::MimeType &mimeType, bool bestMatchOnly)
{
EditorFactoryList rc;
- const EditorFactoryList allFactories = ExtensionSystem::PluginManager::getObjects<IEditorFactory>();
+ const EditorFactoryList allFactories = IEditorFactory::allEditorFactories();
mimeTypeFactoryLookup(mimeType, allFactories, bestMatchOnly, &rc);
if (debugEditorManager)
qDebug() << Q_FUNC_INFO << mimeType.name() << " returns " << rc;
@@ -2617,7 +2610,7 @@ EditorManager::ExternalEditorList
EditorManager::externalEditors(const Utils::MimeType &mimeType, bool bestMatchOnly)
{
ExternalEditorList rc;
- const ExternalEditorList allEditors = ExtensionSystem::PluginManager::getObjects<IExternalEditor>();
+ const ExternalEditorList allEditors = IExternalEditor::allExternalEditors();
mimeTypeFactoryLookup(mimeType, allEditors, bestMatchOnly, &rc);
if (debugEditorManager)
qDebug() << Q_FUNC_INFO << mimeType.name() << " returns " << rc;
@@ -2692,7 +2685,8 @@ bool EditorManager::isAutoSaveFile(const QString &fileName)
bool EditorManager::openExternalEditor(const QString &fileName, Id editorId)
{
- IExternalEditor *ee = findById<IExternalEditor>(editorId);
+ IExternalEditor *ee = Utils::findOrDefault(IExternalEditor::allExternalEditors(),
+ Utils::equal(&IExternalEditor::id, editorId));
if (!ee)
return false;
QString errorMessage;
diff --git a/src/plugins/coreplugin/editormanager/ieditorfactory.cpp b/src/plugins/coreplugin/editormanager/ieditorfactory.cpp
index c3abc40b8a..b32b6036bc 100644
--- a/src/plugins/coreplugin/editormanager/ieditorfactory.cpp
+++ b/src/plugins/coreplugin/editormanager/ieditorfactory.cpp
@@ -27,9 +27,24 @@
#include <utils/qtcassert.h>
-Core::IEditorFactory::IEditorFactory(QObject *parent)
+namespace Core {
+
+static QList<IEditorFactory *> g_editorFactories;
+
+IEditorFactory::IEditorFactory(QObject *parent)
: QObject(parent)
{
+ g_editorFactories.append(this);
+}
+IEditorFactory::~IEditorFactory()
+{
+ g_editorFactories.removeOne(this);
+}
+
+const QList<IEditorFactory *> IEditorFactory::allEditorFactories()
+{
+ return g_editorFactories;
}
+} // Core
diff --git a/src/plugins/coreplugin/editormanager/ieditorfactory.h b/src/plugins/coreplugin/editormanager/ieditorfactory.h
index 583001951c..5ed1a83eda 100644
--- a/src/plugins/coreplugin/editormanager/ieditorfactory.h
+++ b/src/plugins/coreplugin/editormanager/ieditorfactory.h
@@ -40,7 +40,11 @@ class CORE_EXPORT IEditorFactory : public QObject
Q_OBJECT
public:
- IEditorFactory(QObject *parent = 0);
+ IEditorFactory(QObject *parent = nullptr);
+ ~IEditorFactory();
+
+ static const QList<IEditorFactory *> allEditorFactories();
+
QString displayName() const { return m_displayName; }
void setDisplayName(const QString &displayName) { m_displayName = displayName; }
diff --git a/src/plugins/coreplugin/editormanager/iexternaleditor.cpp b/src/plugins/coreplugin/editormanager/iexternaleditor.cpp
index 7da7f48444..246003162f 100644
--- a/src/plugins/coreplugin/editormanager/iexternaleditor.cpp
+++ b/src/plugins/coreplugin/editormanager/iexternaleditor.cpp
@@ -25,6 +25,8 @@
#include "iexternaleditor.h"
+namespace Core {
+
/*!
\class Core::IExternalEditor
\mainclass
@@ -50,3 +52,23 @@
Opens the editor with \a fileName. Returns \c true on success or \c false
on failure along with the error in \a errorMessage.
*/
+
+static QList<IExternalEditor *> g_externalEditors;
+
+IExternalEditor::IExternalEditor(QObject *parent)
+ : QObject(parent)
+{
+ g_externalEditors.append(this);
+}
+
+IExternalEditor::~IExternalEditor()
+{
+ g_externalEditors.removeOne(this);
+}
+
+const QList<IExternalEditor *> IExternalEditor::allExternalEditors()
+{
+ return g_externalEditors;
+}
+
+} // Core
diff --git a/src/plugins/coreplugin/editormanager/iexternaleditor.h b/src/plugins/coreplugin/editormanager/iexternaleditor.h
index 24784b1e4a..84d99bcef0 100644
--- a/src/plugins/coreplugin/editormanager/iexternaleditor.h
+++ b/src/plugins/coreplugin/editormanager/iexternaleditor.h
@@ -38,7 +38,10 @@ class CORE_EXPORT IExternalEditor : public QObject
Q_OBJECT
public:
- explicit IExternalEditor(QObject *parent = 0) : QObject(parent) {}
+ explicit IExternalEditor(QObject *parent = nullptr);
+ ~IExternalEditor();
+
+ static const QList<IExternalEditor *> allExternalEditors();
virtual QStringList mimeTypes() const = 0;
virtual Id id() const = 0;
diff --git a/src/plugins/coreplugin/find/findplugin.cpp b/src/plugins/coreplugin/find/findplugin.cpp
index 3ae5ce0e50..c90ba0ba36 100644
--- a/src/plugins/coreplugin/find/findplugin.cpp
+++ b/src/plugins/coreplugin/find/findplugin.cpp
@@ -202,13 +202,12 @@ static QString filterActionName(const IFindFilter *filter)
void FindPrivate::setupFilterMenuItems()
{
- QList<IFindFilter*> findInterfaces = ExtensionSystem::PluginManager::getObjects<IFindFilter>();
Command *cmd;
ActionContainer *mfindadvanced = ActionManager::actionContainer(Constants::M_FIND_ADVANCED);
bool haveEnabledFilters = false;
const Id base("FindFilter.");
- QList<IFindFilter *> sortedFilters = findInterfaces;
+ QList<IFindFilter *> sortedFilters = IFindFilter::allFindFilters();
Utils::sort(sortedFilters, &IFindFilter::displayName);
foreach (IFindFilter *filter, sortedFilters) {
QAction *action = new QAction(filterActionName(filter), this);
diff --git a/src/plugins/coreplugin/find/findtoolbar.cpp b/src/plugins/coreplugin/find/findtoolbar.cpp
index ba619cfa30..a4699dc7b3 100644
--- a/src/plugins/coreplugin/find/findtoolbar.cpp
+++ b/src/plugins/coreplugin/find/findtoolbar.cpp
@@ -36,8 +36,6 @@
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/findplaceholder.h>
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/hostosinfo.h>
#include <utils/qtcassert.h>
#include <utils/stylehelper.h>
@@ -727,10 +725,10 @@ void FindToolBar::hideAndResetFocus()
FindToolBarPlaceHolder *FindToolBar::findToolBarPlaceHolder() const
{
- QList<FindToolBarPlaceHolder*> placeholders = ExtensionSystem::PluginManager::getObjects<FindToolBarPlaceHolder>();
+ const QList<FindToolBarPlaceHolder*> placeholders = FindToolBarPlaceHolder::allFindToolbarPlaceHolders();
QWidget *candidate = QApplication::focusWidget();
while (candidate) {
- foreach (FindToolBarPlaceHolder *ph, placeholders) {
+ for (FindToolBarPlaceHolder *ph : placeholders) {
if (ph->owner() == candidate)
return ph;
}
diff --git a/src/plugins/coreplugin/find/ifindfilter.cpp b/src/plugins/coreplugin/find/ifindfilter.cpp
index d57a16370e..c861d1e0df 100644
--- a/src/plugins/coreplugin/find/ifindfilter.cpp
+++ b/src/plugins/coreplugin/find/ifindfilter.cpp
@@ -227,6 +227,23 @@
namespace Core {
+static QList<IFindFilter *> g_findFilters;
+
+IFindFilter::IFindFilter()
+{
+ g_findFilters.append(this);
+}
+
+IFindFilter::~IFindFilter()
+{
+ g_findFilters.removeOne(this);
+}
+
+const QList<IFindFilter *> IFindFilter::allFindFilters()
+{
+ return g_findFilters;
+}
+
QKeySequence IFindFilter::defaultShortcut() const
{
return QKeySequence();
diff --git a/src/plugins/coreplugin/find/ifindfilter.h b/src/plugins/coreplugin/find/ifindfilter.h
index 9c67c29fc2..efedbf44f9 100644
--- a/src/plugins/coreplugin/find/ifindfilter.h
+++ b/src/plugins/coreplugin/find/ifindfilter.h
@@ -39,9 +39,12 @@ namespace Core {
class CORE_EXPORT IFindFilter : public QObject
{
Q_OBJECT
+
public:
+ IFindFilter();
+ virtual ~IFindFilter();
- virtual ~IFindFilter() {}
+ static const QList<IFindFilter *> allFindFilters();
virtual QString id() const = 0;
virtual QString displayName() const = 0;
diff --git a/src/plugins/coreplugin/findplaceholder.cpp b/src/plugins/coreplugin/findplaceholder.cpp
index a1b32359e2..90ade039d5 100644
--- a/src/plugins/coreplugin/findplaceholder.cpp
+++ b/src/plugins/coreplugin/findplaceholder.cpp
@@ -26,26 +26,26 @@
#include "findplaceholder.h"
#include "find/findtoolbar.h"
-#include <extensionsystem/pluginmanager.h>
-
#include <QVBoxLayout>
using namespace Core;
FindToolBarPlaceHolder *FindToolBarPlaceHolder::m_current = 0;
+static QList<FindToolBarPlaceHolder *> g_findToolBarPlaceHolders;
+
FindToolBarPlaceHolder::FindToolBarPlaceHolder(QWidget *owner, QWidget *parent)
: QWidget(parent), m_owner(owner), m_subWidget(0), m_lightColored(false)
{
+ g_findToolBarPlaceHolders.append(this);
setLayout(new QVBoxLayout);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
layout()->setMargin(0);
- ExtensionSystem::PluginManager::addObject(this);
}
FindToolBarPlaceHolder::~FindToolBarPlaceHolder()
{
- ExtensionSystem::PluginManager::removeObject(this);
+ g_findToolBarPlaceHolders.removeOne(this);
if (m_subWidget) {
m_subWidget->setVisible(false);
m_subWidget->setParent(0);
@@ -54,6 +54,11 @@ FindToolBarPlaceHolder::~FindToolBarPlaceHolder()
m_current = 0;
}
+const QList<FindToolBarPlaceHolder *> FindToolBarPlaceHolder::allFindToolbarPlaceHolders()
+{
+ return g_findToolBarPlaceHolders;
+}
+
QWidget *FindToolBarPlaceHolder::owner() const
{
return m_owner;
diff --git a/src/plugins/coreplugin/findplaceholder.h b/src/plugins/coreplugin/findplaceholder.h
index 4073354dc1..4029d3e3ab 100644
--- a/src/plugins/coreplugin/findplaceholder.h
+++ b/src/plugins/coreplugin/findplaceholder.h
@@ -39,6 +39,9 @@ class CORE_EXPORT FindToolBarPlaceHolder : public QWidget
public:
explicit FindToolBarPlaceHolder(QWidget *owner, QWidget *parent = 0);
~FindToolBarPlaceHolder();
+
+ static const QList<FindToolBarPlaceHolder *> allFindToolbarPlaceHolders();
+
QWidget *owner() const;
bool isUsedByWidget(QWidget *widget);
diff --git a/src/plugins/coreplugin/idocumentfactory.cpp b/src/plugins/coreplugin/idocumentfactory.cpp
index 4aba09b97a..016d562d8b 100644
--- a/src/plugins/coreplugin/idocumentfactory.cpp
+++ b/src/plugins/coreplugin/idocumentfactory.cpp
@@ -29,6 +29,24 @@
namespace Core {
+static QList<IDocumentFactory *> g_documentFactories;
+
+IDocumentFactory::IDocumentFactory(QObject *parent)
+ : QObject(parent)
+{
+ g_documentFactories.append(this);
+}
+
+IDocumentFactory::~IDocumentFactory()
+{
+ g_documentFactories.removeOne(this);
+}
+
+const QList<IDocumentFactory *> IDocumentFactory::allDocumentFactories()
+{
+ return g_documentFactories;
+}
+
IDocument *IDocumentFactory::open(const QString &filename)
{
QTC_ASSERT(m_opener, return 0);
diff --git a/src/plugins/coreplugin/idocumentfactory.h b/src/plugins/coreplugin/idocumentfactory.h
index 518cb23f1f..461f8aeb4b 100644
--- a/src/plugins/coreplugin/idocumentfactory.h
+++ b/src/plugins/coreplugin/idocumentfactory.h
@@ -41,7 +41,10 @@ class CORE_EXPORT IDocumentFactory : public QObject
Q_OBJECT
public:
- IDocumentFactory(QObject *parent = 0) : QObject(parent) {}
+ IDocumentFactory(QObject *parent = nullptr);
+ ~IDocumentFactory();
+
+ static const QList<IDocumentFactory *> allDocumentFactories();
typedef std::function<IDocument *(const QString &fileName)> Opener;
IDocument *open(const QString &filename);
diff --git a/src/plugins/coreplugin/ifilewizardextension.h b/src/plugins/coreplugin/ifilewizardextension.h
index 2e788eb8c7..494680a87a 100644
--- a/src/plugins/coreplugin/ifilewizardextension.h
+++ b/src/plugins/coreplugin/ifilewizardextension.h
@@ -48,6 +48,10 @@ class CORE_EXPORT IFileWizardExtension : public QObject
{
Q_OBJECT
public:
+ IFileWizardExtension();
+ ~IFileWizardExtension();
+ static QList<IFileWizardExtension *> allFileWizardExtensions();
+
/* Return a list of pages to be added to the Wizard (empty list if not
* applicable). */
virtual QList<QWizardPage *> extensionPages(const IWizardFactory *wizard) = 0;
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.cpp b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
index 06dfdb43bc..eb7c78993d 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.cpp
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
@@ -85,12 +85,25 @@
using namespace Core;
+static QList<INavigationWidgetFactory *> g_navigationWidgetFactories;
+
/*!
Creates a \l{Core::NavigationViewFactory}.
*/
INavigationWidgetFactory::INavigationWidgetFactory()
: m_priority(0)
{
+ g_navigationWidgetFactories.append(this);
+}
+
+INavigationWidgetFactory::~INavigationWidgetFactory()
+{
+ g_navigationWidgetFactories.removeOne(this);
+}
+
+const QList<INavigationWidgetFactory *> INavigationWidgetFactory::allNavigationFactories()
+{
+ return g_navigationWidgetFactories;
}
/*!
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.h b/src/plugins/coreplugin/inavigationwidgetfactory.h
index 2205212232..e569b4b366 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.h
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.h
@@ -53,6 +53,9 @@ class CORE_EXPORT INavigationWidgetFactory : public QObject
public:
INavigationWidgetFactory();
+ ~INavigationWidgetFactory();
+
+ static const QList<INavigationWidgetFactory *> allNavigationFactories();
void setDisplayName(const QString &displayName);
void setPriority(int priority);
diff --git a/src/plugins/coreplugin/ioutputpane.h b/src/plugins/coreplugin/ioutputpane.h
index 55d266b406..d4cd8cc4a9 100644
--- a/src/plugins/coreplugin/ioutputpane.h
+++ b/src/plugins/coreplugin/ioutputpane.h
@@ -42,7 +42,8 @@ class CORE_EXPORT IOutputPane : public QObject
Q_OBJECT
public:
- IOutputPane(QObject *parent = 0) : QObject(parent) {}
+ IOutputPane(QObject *parent = nullptr);
+ ~IOutputPane();
virtual QWidget *outputWidget(QWidget *parent) = 0;
virtual QList<QWidget *> toolBarWidgets() const = 0;
diff --git a/src/plugins/coreplugin/iwelcomepage.cpp b/src/plugins/coreplugin/iwelcomepage.cpp
index a99a309ea7..0f93bb1f3b 100644
--- a/src/plugins/coreplugin/iwelcomepage.cpp
+++ b/src/plugins/coreplugin/iwelcomepage.cpp
@@ -41,12 +41,21 @@ using namespace Utils;
namespace Core {
+static QList<IWelcomePage *> g_welcomePages;
+
+const QList<IWelcomePage *> IWelcomePage::allWelcomePages()
+{
+ return g_welcomePages;
+}
+
IWelcomePage::IWelcomePage()
{
+ g_welcomePages.append(this);
}
IWelcomePage::~IWelcomePage()
{
+ g_welcomePages.removeOne(this);
}
static QPalette buttonPalette(bool isActive, bool isCursorInside, bool forText)
diff --git a/src/plugins/coreplugin/iwelcomepage.h b/src/plugins/coreplugin/iwelcomepage.h
index 4732a2893c..7fa43653eb 100644
--- a/src/plugins/coreplugin/iwelcomepage.h
+++ b/src/plugins/coreplugin/iwelcomepage.h
@@ -55,6 +55,8 @@ public:
virtual int priority() const { return 0; }
virtual Core::Id id() const = 0;
virtual QWidget *createWidget() const = 0;
+
+ static const QList<IWelcomePage *> allWelcomePages();
};
class WelcomePageButtonPrivate;
diff --git a/src/plugins/coreplugin/locator/ilocatorfilter.cpp b/src/plugins/coreplugin/locator/ilocatorfilter.cpp
index 1e74741c7e..5ba268b5e3 100644
--- a/src/plugins/coreplugin/locator/ilocatorfilter.cpp
+++ b/src/plugins/coreplugin/locator/ilocatorfilter.cpp
@@ -48,12 +48,25 @@ using namespace Core;
The filter is added to \uicontrol Tools > \uicontrol Locate.
*/
+static QList<ILocatorFilter *> g_locatorFilters;
+
/*!
Constructs a locator filter with \a parent. Call from subclasses.
*/
ILocatorFilter::ILocatorFilter(QObject *parent):
QObject(parent)
{
+ g_locatorFilters.append(this);
+}
+
+ILocatorFilter::~ILocatorFilter()
+{
+ g_locatorFilters.removeOne(this);
+}
+
+const QList<ILocatorFilter *> ILocatorFilter::allLocatorFilters()
+{
+ return g_locatorFilters;
}
/*!
diff --git a/src/plugins/coreplugin/locator/ilocatorfilter.h b/src/plugins/coreplugin/locator/ilocatorfilter.h
index 828f21fb59..c6adae975e 100644
--- a/src/plugins/coreplugin/locator/ilocatorfilter.h
+++ b/src/plugins/coreplugin/locator/ilocatorfilter.h
@@ -107,8 +107,10 @@ class CORE_EXPORT ILocatorFilter : public QObject
public:
enum Priority {Highest = 0, High = 1, Medium = 2, Low = 3};
- ILocatorFilter(QObject *parent = 0);
- virtual ~ILocatorFilter() {}
+ ILocatorFilter(QObject *parent = nullptr);
+ virtual ~ILocatorFilter();
+
+ static const QList<ILocatorFilter *> allLocatorFilters();
Id id() const;
Id actionId() const;
diff --git a/src/plugins/coreplugin/locator/locator.cpp b/src/plugins/coreplugin/locator/locator.cpp
index a3e9df5e45..a4261d571c 100644
--- a/src/plugins/coreplugin/locator/locator.cpp
+++ b/src/plugins/coreplugin/locator/locator.cpp
@@ -139,7 +139,7 @@ void Locator::initialize(CorePlugin *corePlugin, const QStringList &, QString *)
void Locator::extensionsInitialized()
{
- m_filters = ExtensionSystem::PluginManager::getObjects<ILocatorFilter>();
+ m_filters = ILocatorFilter::allLocatorFilters();
Utils::sort(m_filters, [](const ILocatorFilter *first, const ILocatorFilter *second) -> bool {
if (first->priority() != second->priority())
return first->priority() < second->priority();
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 13d7036d8f..2b97701575 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -341,8 +341,8 @@ void MainWindow::extensionsInitialized()
m_statusBarManager->extensionsInitalized();
OutputPaneManager::instance()->init();
m_vcsManager->extensionsInitialized();
- m_leftNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
- m_rightNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
+ m_leftNavigationWidget->setFactories(INavigationWidgetFactory::allNavigationFactories());
+ m_rightNavigationWidget->setFactories(INavigationWidgetFactory::allNavigationFactories());
readSettings();
updateContext();
@@ -808,7 +808,7 @@ IDocument *MainWindow::openFiles(const QStringList &fileNames,
ICore::OpenFilesFlags flags,
const QString &workingDirectory)
{
- QList<IDocumentFactory*> documentFactories = PluginManager::getObjects<IDocumentFactory>();
+ const QList<IDocumentFactory*> documentFactories = IDocumentFactory::allDocumentFactories();
IDocument *res = nullptr;
foreach (const QString &fileName, fileNames) {
diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp
index 034271a750..be6938af65 100644
--- a/src/plugins/coreplugin/outputpanemanager.cpp
+++ b/src/plugins/coreplugin/outputpanemanager.cpp
@@ -37,8 +37,6 @@
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/algorithm.h>
#include <utils/hostosinfo.h>
#include <utils/styledbar.h>
@@ -66,6 +64,22 @@
using namespace Utils;
namespace Core {
+
+// OutputPane
+
+static QList<IOutputPane *> g_outputPanes;
+
+IOutputPane::IOutputPane(QObject *parent)
+ : QObject(parent)
+{
+ g_outputPanes.append(this);
+}
+
+IOutputPane::~IOutputPane()
+{
+ g_outputPanes.removeOne(this);
+}
+
namespace Internal {
static char outputPaneSettingsKeyC[] = "OutputPaneVisibility";
@@ -256,7 +270,7 @@ void OutputPaneManager::init()
QFontMetrics titleFm = m_titleLabel->fontMetrics();
int minTitleWidth = 0;
- m_panes = ExtensionSystem::PluginManager::getObjects<IOutputPane>();
+ m_panes = g_outputPanes;
Utils::sort(m_panes, [](IOutputPane *p1, IOutputPane *p2) {
return p1->priorityInStatusBar() > p2->priorityInStatusBar();
});
diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h
index 02c63534c7..fba4b733aa 100644
--- a/src/plugins/cppeditor/cppquickfix.h
+++ b/src/plugins/cppeditor/cppquickfix.h
@@ -49,8 +49,6 @@ class CPPEDITOR_EXPORT CppQuickFixFactory: public TextEditor::QuickFixFactory
Q_OBJECT
public:
- CppQuickFixFactory() {}
-
void matchingOperations(const TextEditor::QuickFixInterface &interface,
TextEditor::QuickFixOperations &result);
diff --git a/src/plugins/cppeditor/cppquickfixassistant.cpp b/src/plugins/cppeditor/cppquickfixassistant.cpp
index 8ded187d88..349c7111d4 100644
--- a/src/plugins/cppeditor/cppquickfixassistant.cpp
+++ b/src/plugins/cppeditor/cppquickfixassistant.cpp
@@ -34,7 +34,7 @@
#include <cplusplus/ASTPath.h>
-#include <extensionsystem/pluginmanager.h>
+#include <utils/algorithm.h>
#include <utils/qtcassert.h>
using namespace TextEditor;
@@ -59,10 +59,9 @@ IAssistProcessor *CppQuickFixAssistProvider::createProcessor() const
QList<QuickFixFactory *> CppQuickFixAssistProvider::quickFixFactories() const
{
- QList<QuickFixFactory *> results;
- foreach (CppQuickFixFactory *f, ExtensionSystem::PluginManager::getObjects<CppQuickFixFactory>())
- results.append(f);
- return results;
+ return Utils::filtered(QuickFixFactory::allQuickFixFactories(), [](QuickFixFactory *f) {
+ return qobject_cast<CppQuickFixFactory *>(f) != nullptr;
+ });
}
// --------------------------
diff --git a/src/plugins/cppeditor/fileandtokenactions_test.cpp b/src/plugins/cppeditor/fileandtokenactions_test.cpp
index 463172d45b..21b11c7524 100644
--- a/src/plugins/cppeditor/fileandtokenactions_test.cpp
+++ b/src/plugins/cppeditor/fileandtokenactions_test.cpp
@@ -41,7 +41,6 @@
#include <projectexplorer/projectexplorer.h>
#include <texteditor/textdocument.h>
-#include <extensionsystem/pluginmanager.h>
#include <cplusplus/CppDocument.h>
#include <cplusplus/TranslationUnit.h>
#include <utils/algorithm.h>
@@ -448,33 +447,31 @@ void RunAllQuickFixesTokenAction::run(CppEditorWidget *editorWidget)
// Calling editorWidget->invokeAssist(QuickFix) would be not enough
// since we also want to execute the ones that match.
- const QList<CppQuickFixFactory *> quickFixFactories
- = ExtensionSystem::PluginManager::getObjects<CppQuickFixFactory>();
- QVERIFY(!quickFixFactories.isEmpty());
-
CppQuickFixInterface qfi(editorWidget, ExplicitlyInvoked);
// This guard is important since the Quick Fixes expect to get a non-empty path().
if (qfi.path().isEmpty())
return;
- foreach (CppQuickFixFactory *quickFixFactory, quickFixFactories) {
- QuickFixOperations operations;
- // Some Quick Fixes pop up a dialog and are therefore inappropriate for this test.
- // Where possible, use a guiless version of the factory.
- if (qobject_cast<InsertVirtualMethods *>(quickFixFactory)) {
- QScopedPointer<CppQuickFixFactory> factoryProducingGuiLessOperations;
- factoryProducingGuiLessOperations.reset(InsertVirtualMethods::createTestFactory());
- factoryProducingGuiLessOperations->match(qfi, operations);
- } else {
- quickFixFactory->match(qfi, operations);
- }
+ for (QuickFixFactory *quickFixFactory : QuickFixFactory::allQuickFixFactories()) {
+ if (auto cppQuickFixFactory = qobject_cast<CppQuickFixFactory *>(quickFixFactory)) {
+ QuickFixOperations operations;
+ // Some Quick Fixes pop up a dialog and are therefore inappropriate for this test.
+ // Where possible, use a guiless version of the factory.
+ if (qobject_cast<InsertVirtualMethods *>(cppQuickFixFactory)) {
+ QScopedPointer<CppQuickFixFactory> factoryProducingGuiLessOperations;
+ factoryProducingGuiLessOperations.reset(InsertVirtualMethods::createTestFactory());
+ factoryProducingGuiLessOperations->match(qfi, operations);
+ } else {
+ cppQuickFixFactory->match(qfi, operations);
+ }
- foreach (QuickFixOperation::Ptr operation, operations) {
- qDebug() << " -- Performing Quick Fix" << operation->description();
- operation->perform();
- TestActionsTestCase::escape();
- TestActionsTestCase::undoChangesInAllEditorWidgets();
- QApplication::processEvents();
+ foreach (QuickFixOperation::Ptr operation, operations) {
+ qDebug() << " -- Performing Quick Fix" << operation->description();
+ operation->perform();
+ TestActionsTestCase::escape();
+ TestActionsTestCase::undoChangesInAllEditorWidgets();
+ QApplication::processEvents();
+ }
}
}
}
diff --git a/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp b/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp
index 633668aabf..599849a302 100644
--- a/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp
+++ b/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp
@@ -123,10 +123,7 @@ TextEditor::Indenter *CppCodeStylePreferencesFactory::createIndenter() const
TextEditor::SnippetProvider *CppCodeStylePreferencesFactory::snippetProvider() const
{
- return ExtensionSystem::PluginManager::getObject<TextEditor::SnippetProvider>(
- [](TextEditor::SnippetProvider *provider) {
- return provider->groupId() == QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID);
- });
+ return TextEditor::SnippetProvider::snippetProviderForGroupId(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID);
}
QString CppCodeStylePreferencesFactory::previewText() const
diff --git a/src/plugins/cpptools/cppcodestylesettingspage.cpp b/src/plugins/cpptools/cppcodestylesettingspage.cpp
index 21eadbea4f..5986d7a504 100644
--- a/src/plugins/cpptools/cppcodestylesettingspage.cpp
+++ b/src/plugins/cpptools/cppcodestylesettingspage.cpp
@@ -493,10 +493,8 @@ void CppCodeStylePreferencesWidget::updatePreview()
void CppCodeStylePreferencesWidget::decorateEditors(const FontSettings &fontSettings)
{
- const SnippetProvider *provider = ExtensionSystem::PluginManager::getObject<SnippetProvider>(
- [](SnippetProvider *current) {
- return current->groupId() == QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID);
- });
+ const SnippetProvider *provider =
+ SnippetProvider::snippetProviderForGroupId(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID);
foreach (SnippetEditorWidget *editor, m_previews) {
editor->textDocument()->setFontSettings(fontSettings);
diff --git a/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp b/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp
index 809d546732..6d35cdd78f 100644
--- a/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp
+++ b/src/plugins/nim/settings/nimcodestylepreferencesfactory.cpp
@@ -30,13 +30,15 @@
#include "../editor/nimindenter.h"
#include <coreplugin/id.h>
+
#include <texteditor/simplecodestylepreferences.h>
#include <texteditor/snippets/snippetprovider.h>
-#include <extensionsystem/pluginmanager.h>
#include <QWidget>
#include <QLayout>
+using namespace TextEditor;
+
namespace Nim {
NimCodeStylePreferencesFactory::NimCodeStylePreferencesFactory()
@@ -71,12 +73,9 @@ TextEditor::Indenter *NimCodeStylePreferencesFactory::createIndenter() const
return new NimIndenter();
}
-TextEditor::SnippetProvider *NimCodeStylePreferencesFactory::snippetProvider() const
+SnippetProvider *NimCodeStylePreferencesFactory::snippetProvider() const
{
- return ExtensionSystem::PluginManager::getObject<TextEditor::SnippetProvider>(
- [](TextEditor::SnippetProvider *provider) {
- return provider->groupId() == Nim::Constants::C_NIMSNIPPETSGROUP_ID;
- });
+ return SnippetProvider::snippetProviderForGroupId(Nim::Constants::C_NIMSNIPPETSGROUP_ID);
}
QString NimCodeStylePreferencesFactory::previewText() const
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index 50866d63a4..d0856ad398 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -38,7 +38,7 @@
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectmacroexpander.h>
#include <projectexplorer/target.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <coreplugin/idocument.h>
#include <utils/qtcassert.h>
@@ -318,6 +318,18 @@ void BuildConfiguration::prependCompilerPathToEnvironment(Kit *k, Utils::Environ
// IBuildConfigurationFactory
///
+static QList<IBuildConfigurationFactory *> g_buildConfigurationFactories;
+
+IBuildConfigurationFactory::IBuildConfigurationFactory()
+{
+ g_buildConfigurationFactories.append(this);
+}
+
+IBuildConfigurationFactory::~IBuildConfigurationFactory()
+{
+ g_buildConfigurationFactories.removeOne(this);
+}
+
int IBuildConfigurationFactory::priority(const Target *parent) const
{
return canHandle(parent) ? 0 : -1;
@@ -334,19 +346,15 @@ int IBuildConfigurationFactory::priority(const Kit *k, const QString &projectPat
// restore
IBuildConfigurationFactory *IBuildConfigurationFactory::find(Target *parent, const QVariantMap &map)
{
- QList<IBuildConfigurationFactory *> factories
- = ExtensionSystem::PluginManager::getObjects<IBuildConfigurationFactory>(
- [&parent, map](IBuildConfigurationFactory *factory) {
- return factory->canRestore(parent, map);
- });
-
IBuildConfigurationFactory *factory = 0;
int priority = -1;
- foreach (IBuildConfigurationFactory *i, factories) {
- int iPriority = i->priority(parent);
- if (iPriority > priority) {
- factory = i;
- priority = iPriority;
+ for (IBuildConfigurationFactory *i : g_buildConfigurationFactories) {
+ if (i->canRestore(parent, map)) {
+ int iPriority = i->priority(parent);
+ if (iPriority > priority) {
+ factory = i;
+ priority = iPriority;
+ }
}
}
return factory;
@@ -355,11 +363,9 @@ IBuildConfigurationFactory *IBuildConfigurationFactory::find(Target *parent, con
// setup
IBuildConfigurationFactory *IBuildConfigurationFactory::find(const Kit *k, const QString &projectPath)
{
- QList<IBuildConfigurationFactory *> factories
- = ExtensionSystem::PluginManager::instance()->getObjects<IBuildConfigurationFactory>();
IBuildConfigurationFactory *factory = 0;
int priority = -1;
- foreach (IBuildConfigurationFactory *i, factories) {
+ for (IBuildConfigurationFactory *i : g_buildConfigurationFactories) {
int iPriority = i->priority(k, projectPath);
if (iPriority > priority) {
factory = i;
@@ -372,11 +378,9 @@ IBuildConfigurationFactory *IBuildConfigurationFactory::find(const Kit *k, const
// create
IBuildConfigurationFactory * IBuildConfigurationFactory::find(Target *parent)
{
- QList<IBuildConfigurationFactory *> factories
- = ExtensionSystem::PluginManager::instance()->getObjects<IBuildConfigurationFactory>();
IBuildConfigurationFactory *factory = 0;
int priority = -1;
- foreach (IBuildConfigurationFactory *i, factories) {
+ for (IBuildConfigurationFactory *i : g_buildConfigurationFactories) {
int iPriority = i->priority(parent);
if (iPriority > priority) {
factory = i;
@@ -389,19 +393,15 @@ IBuildConfigurationFactory * IBuildConfigurationFactory::find(Target *parent)
// clone
IBuildConfigurationFactory *IBuildConfigurationFactory::find(Target *parent, BuildConfiguration *bc)
{
- QList<IBuildConfigurationFactory *> factories
- = ExtensionSystem::PluginManager::getObjects<IBuildConfigurationFactory>(
- [&parent, &bc](IBuildConfigurationFactory *factory) {
- return factory->canClone(parent, bc);
- });
-
IBuildConfigurationFactory *factory = 0;
int priority = -1;
- foreach (IBuildConfigurationFactory *i, factories) {
- int iPriority = i->priority(parent);
- if (iPriority > priority) {
- factory = i;
- priority = iPriority;
+ for (IBuildConfigurationFactory *i : g_buildConfigurationFactories) {
+ if (i->canClone(parent, bc)) {
+ int iPriority = i->priority(parent);
+ if (iPriority > priority) {
+ factory = i;
+ priority = iPriority;
+ }
}
}
return factory;
diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h
index 3bc718fd51..c9584e1d9b 100644
--- a/src/plugins/projectexplorer/buildconfiguration.h
+++ b/src/plugins/projectexplorer/buildconfiguration.h
@@ -121,7 +121,8 @@ class PROJECTEXPLORER_EXPORT IBuildConfigurationFactory : public QObject
Q_OBJECT
protected:
- IBuildConfigurationFactory() = default;
+ IBuildConfigurationFactory();
+ ~IBuildConfigurationFactory();
public:
// The priority is negative if this factory can not create anything for the target.
diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp
index ff2bf2bf3f..265a718f14 100644
--- a/src/plugins/projectexplorer/buildstep.cpp
+++ b/src/plugins/projectexplorer/buildstep.cpp
@@ -114,6 +114,8 @@ static const char buildStepEnabledKey[] = "ProjectExplorer.BuildStep.Enabled";
namespace ProjectExplorer {
+static QList<BuildStepFactory *> g_buildStepFactories;
+
BuildStep::BuildStep(BuildStepList *bsl, Core::Id id) :
ProjectConfiguration(bsl, id)
{
@@ -213,7 +215,19 @@ bool BuildStep::enabled() const
}
BuildStepFactory::BuildStepFactory()
-{ }
+{
+ g_buildStepFactories.append(this);
+}
+
+BuildStepFactory::~BuildStepFactory()
+{
+ g_buildStepFactories.removeOne(this);
+}
+
+const QList<BuildStepFactory *> BuildStepFactory::allBuildStepFactories()
+{
+ return g_buildStepFactories;
+}
bool BuildStepFactory::canHandle(BuildStepList *bsl) const
{
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index adc9192060..7a0f6db92a 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -124,6 +124,9 @@ class PROJECTEXPLORER_EXPORT BuildStepFactory : public QObject
public:
BuildStepFactory();
+ ~BuildStepFactory();
+
+ static const QList<BuildStepFactory *> allBuildStepFactories();
BuildStepInfo stepInfo() const;
Core::Id stepId() const;
diff --git a/src/plugins/projectexplorer/buildsteplist.cpp b/src/plugins/projectexplorer/buildsteplist.cpp
index 1d1ffab0d6..d5979a97a6 100644
--- a/src/plugins/projectexplorer/buildsteplist.cpp
+++ b/src/plugins/projectexplorer/buildsteplist.cpp
@@ -32,7 +32,6 @@
#include "projectexplorer.h"
#include "target.h"
-#include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h>
using namespace ProjectExplorer;
@@ -108,8 +107,7 @@ bool BuildStepList::fromMap(const QVariantMap &map)
if (!ProjectConfiguration::fromMap(map))
return false;
- const QList<BuildStepFactory *> factories
- = ExtensionSystem::PluginManager::getObjects<BuildStepFactory>();
+ const QList<BuildStepFactory *> factories = BuildStepFactory::allBuildStepFactories();
int maxSteps = map.value(QString::fromLatin1(STEPS_COUNT_KEY), 0).toInt();
for (int i = 0; i < maxSteps; ++i) {
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index d835b3f609..3e05c09b31 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -32,7 +32,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/coreicons.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <utils/qtcassert.h>
#include <utils/detailswidget.h>
#include <utils/hostosinfo.h>
@@ -288,8 +288,7 @@ void BuildStepListWidget::updateAddBuildStepMenu()
{
QMap<QString, QPair<Core::Id, BuildStepFactory *> > map;
//Build up a list of possible steps and save map the display names to the (internal) name and factories.
- QList<BuildStepFactory *> factories = ExtensionSystem::PluginManager::getObjects<BuildStepFactory>();
- foreach (BuildStepFactory *factory, factories) {
+ for (BuildStepFactory *factory : BuildStepFactory::allBuildStepFactories()) {
if (factory->canHandle(m_buildStepList)) {
const BuildStepInfo &info = factory->stepInfo();
if (info.flags & BuildStepInfo::Uncreatable)
diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp
index 057b49840d..c9a84889d1 100644
--- a/src/plugins/projectexplorer/customwizard/customwizard.cpp
+++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp
@@ -65,6 +65,19 @@ bool enableLoadTemplateFiles()
namespace ProjectExplorer {
+static QList<ICustomWizardMetaFactory *> g_customWizardMetaFactories;
+
+ICustomWizardMetaFactory::ICustomWizardMetaFactory(const QString &klass, Core::IWizardFactory::WizardKind kind) :
+ m_klass(klass), m_kind(kind)
+{
+ g_customWizardMetaFactories.append(this);
+}
+
+ICustomWizardMetaFactory::~ICustomWizardMetaFactory()
+{
+ g_customWizardMetaFactories.removeOne(this);
+}
+
namespace Internal {
/*!
\class ProjectExplorer::ICustomWizardFactory
@@ -338,7 +351,7 @@ CustomWizard::CustomWizardContextPtr CustomWizard::context() const
CustomWizard *CustomWizard::createWizard(const CustomProjectWizard::CustomWizardParametersPtr &p)
{
- ICustomWizardMetaFactory *factory = ExtensionSystem::PluginManager::getObject<ICustomWizardMetaFactory>(
+ ICustomWizardMetaFactory *factory = Utils::findOrDefault(g_customWizardMetaFactories,
[&p](ICustomWizardMetaFactory *factory) {
return p->klass.isEmpty() ? (p->kind == factory->kind()) : (p->klass == factory->klass());
});
diff --git a/src/plugins/projectexplorer/customwizard/customwizard.h b/src/plugins/projectexplorer/customwizard/customwizard.h
index 619b8470c6..d9fec08044 100644
--- a/src/plugins/projectexplorer/customwizard/customwizard.h
+++ b/src/plugins/projectexplorer/customwizard/customwizard.h
@@ -55,9 +55,8 @@ class PROJECTEXPLORER_EXPORT ICustomWizardMetaFactory : public QObject
Q_OBJECT
public:
- ICustomWizardMetaFactory(const QString &klass, Core::IWizardFactory::WizardKind kind) :
- m_klass(klass), m_kind(kind)
- { }
+ ICustomWizardMetaFactory(const QString &klass, Core::IWizardFactory::WizardKind kind);
+ ~ICustomWizardMetaFactory();
virtual CustomWizard *create() const = 0;
QString klass() const { return m_klass; }
diff --git a/src/plugins/projectexplorer/deployconfiguration.cpp b/src/plugins/projectexplorer/deployconfiguration.cpp
index 1c3967442d..3c4e8ab8f4 100644
--- a/src/plugins/projectexplorer/deployconfiguration.cpp
+++ b/src/plugins/projectexplorer/deployconfiguration.cpp
@@ -32,8 +32,6 @@
#include "projectexplorer.h"
#include "target.h"
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/algorithm.h>
namespace ProjectExplorer {
@@ -142,9 +140,22 @@ bool DeployConfiguration::isActive() const
// DeployConfigurationFactory
///
+static QList<DeployConfigurationFactory *> g_deployConfigurationFactories;
+
DeployConfigurationFactory::DeployConfigurationFactory()
{
setObjectName("DeployConfigurationFactory");
+ g_deployConfigurationFactories.append(this);
+}
+
+DeployConfigurationFactory::~DeployConfigurationFactory()
+{
+ g_deployConfigurationFactories.removeOne(this);
+}
+
+QList<DeployConfigurationFactory *> DeployConfigurationFactory::allDeployConfigurationFactories()
+{
+ return g_deployConfigurationFactories;
}
QList<Core::Id> DeployConfigurationFactory::availableCreationIds(Target *parent) const
@@ -256,7 +267,7 @@ bool DeployConfigurationFactory::canRestore(Target *parent, const QVariantMap &m
DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, const QVariantMap &map)
{
- return ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>(
+ return Utils::findOrDefault(g_deployConfigurationFactories,
[&parent, &map](DeployConfigurationFactory *factory) {
return factory->canRestore(parent, map);
});
@@ -264,7 +275,7 @@ DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, con
QList<DeployConfigurationFactory *> DeployConfigurationFactory::find(Target *parent)
{
- return ExtensionSystem::PluginManager::getObjects<DeployConfigurationFactory>(
+ return Utils::filtered(g_deployConfigurationFactories,
[&parent](DeployConfigurationFactory *factory) {
return !factory->availableCreationIds(parent).isEmpty();
});
@@ -272,7 +283,7 @@ QList<DeployConfigurationFactory *> DeployConfigurationFactory::find(Target *par
DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, DeployConfiguration *dc)
{
- return ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>(
+ return Utils::findOrDefault(g_deployConfigurationFactories,
[&parent, &dc](DeployConfigurationFactory *factory) {
return factory->canClone(parent, dc);
});
diff --git a/src/plugins/projectexplorer/deployconfiguration.h b/src/plugins/projectexplorer/deployconfiguration.h
index 4e42e5e00f..56a06ae585 100644
--- a/src/plugins/projectexplorer/deployconfiguration.h
+++ b/src/plugins/projectexplorer/deployconfiguration.h
@@ -78,6 +78,9 @@ class PROJECTEXPLORER_EXPORT DeployConfigurationFactory : public QObject
public:
DeployConfigurationFactory();
+ ~DeployConfigurationFactory();
+
+ static QList<DeployConfigurationFactory *> allDeployConfigurationFactories();
// used to show the list of possible additons to a target, returns a list of types
QList<Core::Id> availableCreationIds(Target *parent) const;
diff --git a/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.cpp b/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.cpp
index 5275df08af..86afd635de 100644
--- a/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.cpp
+++ b/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.cpp
@@ -31,8 +31,6 @@
#include <coreplugin/id.h>
-#include <extensionsystem/pluginmanager.h>
-
#include <QPushButton>
namespace ProjectExplorer {
@@ -44,9 +42,7 @@ DeviceFactorySelectionDialog::DeviceFactorySelectionDialog(QWidget *parent) :
ui->setupUi(this);
ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Start Wizard"));
- const QList<IDeviceFactory *> &factories
- = ExtensionSystem::PluginManager::getObjects<IDeviceFactory>();
- foreach (const IDeviceFactory * const factory, factories) {
+ for (const IDeviceFactory * const factory : IDeviceFactory::allDeviceFactories()) {
if (!factory->canCreate())
continue;
foreach (Core::Id id, factory->availableCreationIds()) {
diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp
index 2d1e161d2c..900f6d283a 100644
--- a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp
+++ b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp
@@ -29,7 +29,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <ssh/sshhostkeydatabase.h>
@@ -338,7 +338,7 @@ void DeviceManager::setDefaultDevice(Core::Id id)
const IDeviceFactory *DeviceManager::restoreFactory(const QVariantMap &map)
{
- IDeviceFactory *factory = ExtensionSystem::PluginManager::getObject<IDeviceFactory>(
+ IDeviceFactory *factory = Utils::findOrDefault(IDeviceFactory::allDeviceFactories(),
[&map](IDeviceFactory *factory) {
return factory->canRestore(map);
});
diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp
index 7be659e450..98a841122e 100644
--- a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp
+++ b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp
@@ -38,7 +38,7 @@
#include <projectexplorer/projectexplorericons.h>
#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <utils/qtcassert.h>
#include <utils/algorithm.h>
@@ -111,10 +111,8 @@ void DeviceSettingsWidget::initGui()
m_ui->configurationComboBox->setModel(m_deviceManagerModel);
m_ui->nameLineEdit->setValidator(m_nameValidator);
- const QList<IDeviceFactory *> &factories
- = ExtensionSystem::PluginManager::getObjects<IDeviceFactory>();
-
- bool hasDeviceFactories = Utils::anyOf(factories, &IDeviceFactory::canCreate);
+ bool hasDeviceFactories = Utils::anyOf(IDeviceFactory::allDeviceFactories(),
+ &IDeviceFactory::canCreate);
m_ui->addConfigButton->setEnabled(hasDeviceFactories);
diff --git a/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp b/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp
index f9cb444c8d..8b02da344e 100644
--- a/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp
+++ b/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp
@@ -25,7 +25,7 @@
#include "idevicefactory.h"
-#include <extensionsystem/pluginmanager.h>
+#include <utils/algorithm.h>
namespace ProjectExplorer {
@@ -83,15 +83,29 @@ bool IDeviceFactory::canCreate() const
return !availableCreationIds().isEmpty();
}
+static QList<IDeviceFactory *> g_deviceFactories;
+
IDeviceFactory *IDeviceFactory::find(Core::Id type)
{
- return ExtensionSystem::PluginManager::getObject<IDeviceFactory>(
+ return Utils::findOrDefault(g_deviceFactories,
[&type](IDeviceFactory *factory) {
return factory->availableCreationIds().contains(type);
});
}
IDeviceFactory::IDeviceFactory(QObject *parent) : QObject(parent)
-{ }
+{
+ g_deviceFactories.append(this);
+}
+
+IDeviceFactory::~IDeviceFactory()
+{
+ g_deviceFactories.removeOne(this);
+}
+
+const QList<IDeviceFactory *> IDeviceFactory::allDeviceFactories()
+{
+ return g_deviceFactories;
+}
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/devicesupport/idevicefactory.h b/src/plugins/projectexplorer/devicesupport/idevicefactory.h
index 7010b190c7..42929ff2d7 100644
--- a/src/plugins/projectexplorer/devicesupport/idevicefactory.h
+++ b/src/plugins/projectexplorer/devicesupport/idevicefactory.h
@@ -44,6 +44,8 @@ class PROJECTEXPLORER_EXPORT IDeviceFactory : public QObject
Q_OBJECT
public:
+ ~IDeviceFactory();
+ static const QList<IDeviceFactory *> allDeviceFactories();
virtual QString displayNameForId(Core::Id type) const = 0;
diff --git a/src/plugins/projectexplorer/ipotentialkit.h b/src/plugins/projectexplorer/ipotentialkit.h
index 40237682ae..1d25f7ad47 100644
--- a/src/plugins/projectexplorer/ipotentialkit.h
+++ b/src/plugins/projectexplorer/ipotentialkit.h
@@ -34,7 +34,11 @@ namespace ProjectExplorer {
class PROJECTEXPLORER_EXPORT IPotentialKit : public QObject
{
Q_OBJECT
+
public:
+ IPotentialKit();
+ ~IPotentialKit() override;
+
virtual QString displayName() const = 0;
virtual void executeFromMenu() = 0;
virtual QWidget *createWidget(QWidget *parent) const = 0;
diff --git a/src/plugins/projectexplorer/itaskhandler.h b/src/plugins/projectexplorer/itaskhandler.h
index 9f8692bbf4..89f8eda738 100644
--- a/src/plugins/projectexplorer/itaskhandler.h
+++ b/src/plugins/projectexplorer/itaskhandler.h
@@ -44,7 +44,8 @@ class PROJECTEXPLORER_EXPORT ITaskHandler : public QObject
Q_OBJECT
public:
- virtual ~ITaskHandler() { }
+ ITaskHandler();
+ ~ITaskHandler() override;
virtual bool isDefaultHandler() const { return false; }
virtual bool canHandle(const Task &) const = 0;
diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp
index a4d7b608f6..c0cebbd0c8 100644
--- a/src/plugins/projectexplorer/kit.cpp
+++ b/src/plugins/projectexplorer/kit.cpp
@@ -32,8 +32,6 @@
#include "osparser.h"
#include "projectexplorerconstants.h"
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/icon.h>
@@ -369,7 +367,7 @@ Id Kit::id() const
static QIcon iconForDeviceType(Core::Id deviceType)
{
- const IDeviceFactory *factory = ExtensionSystem::PluginManager::getObject<IDeviceFactory>(
+ const IDeviceFactory *factory = Utils::findOrDefault(IDeviceFactory::allDeviceFactories(),
[&deviceType](const IDeviceFactory *factory) {
return factory->availableCreationIds().contains(deviceType);
});
diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp
index 6a46f957f9..e1c1bf091d 100644
--- a/src/plugins/projectexplorer/kitinformation.cpp
+++ b/src/plugins/projectexplorer/kitinformation.cpp
@@ -25,6 +25,7 @@
#include "kitinformation.h"
+#include "abi.h"
#include "devicesupport/desktopdevice.h"
#include "devicesupport/devicemanager.h"
#include "projectexplorerconstants.h"
@@ -33,8 +34,6 @@
#include "toolchain.h"
#include "toolchainmanager.h"
-#include <extensionsystem/pluginmanager.h>
-#include <projectexplorer/abi.h>
#include <ssh/sshconnection.h>
#include <utils/algorithm.h>
@@ -566,7 +565,7 @@ KitInformation::ItemList DeviceTypeKitInformation::toUserOutput(const Kit *k) co
Core::Id type = deviceTypeId(k);
QString typeDisplayName = tr("Unknown device type");
if (type.isValid()) {
- IDeviceFactory *factory = ExtensionSystem::PluginManager::getObject<IDeviceFactory>(
+ IDeviceFactory *factory = Utils::findOrDefault(IDeviceFactory::allDeviceFactories(),
[&type](IDeviceFactory *factory) {
return factory->availableCreationIds().contains(type);
});
diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp
index d4eae3df13..0ec65f95db 100644
--- a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp
+++ b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp
@@ -37,7 +37,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <utils/algorithm.h>
#include <utils/fancylineedit.h>
#include <utils/environment.h>
@@ -261,9 +261,7 @@ int ToolChainInformationConfigWidget::indexOf(QComboBox *cb, const ToolChain *tc
DeviceTypeInformationConfigWidget::DeviceTypeInformationConfigWidget(Kit *workingCopy, const KitInformation *ki) :
KitConfigWidget(workingCopy, ki), m_comboBox(new QComboBox)
{
- QList<IDeviceFactory *> factories
- = ExtensionSystem::PluginManager::getObjects<IDeviceFactory>();
- foreach (IDeviceFactory *factory, factories) {
+ for (IDeviceFactory *factory : IDeviceFactory::allDeviceFactories()) {
foreach (Id id, factory->availableCreationIds())
m_comboBox->addItem(factory->displayNameForId(id), id.toSetting());
}
diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp
index d48c9a389e..91b2529e8d 100644
--- a/src/plugins/projectexplorer/kitmanager.cpp
+++ b/src/plugins/projectexplorer/kitmanager.cpp
@@ -34,8 +34,6 @@
#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/persistentsettings.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
@@ -560,7 +558,7 @@ QSet<Id> KitFeatureProvider::availablePlatforms() const
QString KitFeatureProvider::displayNameForPlatform(Id id) const
{
- foreach (IDeviceFactory *f, ExtensionSystem::PluginManager::getObjects<IDeviceFactory>()) {
+ for (IDeviceFactory *f : IDeviceFactory::allDeviceFactories()) {
if (f->availableCreationIds().contains(id)) {
const QString dn = f->displayNameForId(id);
QTC_ASSERT(!dn.isEmpty(), continue);
diff --git a/src/plugins/projectexplorer/projectimporter.cpp b/src/plugins/projectexplorer/projectimporter.cpp
index 67655decb3..25565015d8 100644
--- a/src/plugins/projectexplorer/projectimporter.cpp
+++ b/src/plugins/projectexplorer/projectimporter.cpp
@@ -37,8 +37,6 @@
#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
@@ -374,11 +372,9 @@ bool ProjectImporter::hasKitWithTemporaryData(Core::Id id, const QVariant &data)
static ProjectImporter::ToolChainData
createToolChains(const Utils::FileName &toolChainPath, const Core::Id &language)
{
- const QList<ToolChainFactory *> factories
- = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>();
ProjectImporter::ToolChainData data;
- for (ToolChainFactory *factory : factories) {
+ for (ToolChainFactory *factory : ToolChainFactory::allToolChainFactories()) {
data.tcs = factory->autoDetect(toolChainPath, language);
if (data.tcs.isEmpty())
continue;
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 83cbdd0249..9e08c4bb53 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -36,8 +36,6 @@
#include "session.h"
#include "kitinformation.h"
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/algorithm.h>
#include <utils/checkablemessagebox.h>
#include <utils/outputformatter.h>
@@ -432,9 +430,22 @@ Utils::OutputFormatter *RunConfiguration::createOutputFormatter() const
Translates the types to names to display to the user.
*/
+static QList<IRunConfigurationFactory *> g_runConfigurationFactories;
+
IRunConfigurationFactory::IRunConfigurationFactory(QObject *parent) :
QObject(parent)
{
+ g_runConfigurationFactories.append(this);
+}
+
+IRunConfigurationFactory::~IRunConfigurationFactory()
+{
+ g_runConfigurationFactories.removeOne(this);
+}
+
+const QList<IRunConfigurationFactory *> IRunConfigurationFactory::allRunConfigurationFactories()
+{
+ return g_runConfigurationFactories;
}
QList<RunConfigurationCreationInfo>
@@ -556,7 +567,7 @@ RunConfiguration *IRunConfigurationFactory::clone(Target *parent, RunConfigurati
IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, const QVariantMap &map)
{
- return ExtensionSystem::PluginManager::getObject<IRunConfigurationFactory>(
+ return Utils::findOrDefault(g_runConfigurationFactories,
[&parent, &map](IRunConfigurationFactory *factory) {
return factory->canRestore(parent, map);
});
@@ -564,7 +575,7 @@ IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, const Q
IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, RunConfiguration *rc)
{
- return ExtensionSystem::PluginManager::getObject<IRunConfigurationFactory>(
+ return Utils::findOrDefault(g_runConfigurationFactories,
[&parent, rc](IRunConfigurationFactory *factory) {
return factory->canClone(parent, rc);
});
@@ -572,7 +583,7 @@ IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, RunConf
QList<IRunConfigurationFactory *> IRunConfigurationFactory::find(Target *parent)
{
- return ExtensionSystem::PluginManager::getObjects<IRunConfigurationFactory>(
+ return Utils::filtered(g_runConfigurationFactories,
[&parent](IRunConfigurationFactory *factory) {
return !factory->availableCreators(parent).isEmpty();
});
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index cf66ef36a6..68e9aab7bd 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -295,6 +295,9 @@ class PROJECTEXPLORER_EXPORT IRunConfigurationFactory : public QObject
public:
explicit IRunConfigurationFactory(QObject *parent = nullptr);
+ ~IRunConfigurationFactory();
+
+ static const QList<IRunConfigurationFactory *> allRunConfigurationFactories();
enum CreationMode {UserCreate, AutoCreate};
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
index 5687534756..781f5872be 100644
--- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
@@ -237,11 +237,8 @@ void RunSettingsWidget::aboutToShowAddMenu()
connect(cloneAction, &QAction::triggered,
this, &RunSettingsWidget::cloneRunConfiguration);
}
- const QList<IRunConfigurationFactory *> factories =
- ExtensionSystem::PluginManager::getObjects<IRunConfigurationFactory>();
-
QList<QAction *> menuActions;
- for (IRunConfigurationFactory *factory : factories) {
+ for (IRunConfigurationFactory *factory : IRunConfigurationFactory::allRunConfigurationFactories()) {
const QList<RunConfigurationCreationInfo> items = factory->availableCreators(m_target);
for (const RunConfigurationCreationInfo &item : items) {
auto action = new QAction(item.displayName, m_addRunMenu);
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 33bd4d83f0..ec7a43e39c 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -87,8 +87,6 @@ class TargetPrivate
public:
TargetPrivate(Kit *k);
- QList<DeployConfigurationFactory *> deployFactories() const;
-
bool m_isEnabled = true;
QIcon m_overlayIcon;
@@ -109,11 +107,6 @@ TargetPrivate::TargetPrivate(Kit *k) :
m_kit(k)
{ }
-QList<DeployConfigurationFactory *> TargetPrivate::deployFactories() const
-{
- return ExtensionSystem::PluginManager::getObjects<DeployConfigurationFactory>();
-}
-
Target::Target(Project *project, Kit *k) :
ProjectConfiguration(project, k->id()),
d(new TargetPrivate(k))
@@ -269,7 +262,7 @@ void Target::addDeployConfiguration(DeployConfiguration *dc)
QTC_ASSERT(dc && !d->m_deployConfigurations.contains(dc), return);
Q_ASSERT(dc->target() == this);
- if (d->deployFactories().isEmpty())
+ if (DeployConfigurationFactory::allDeployConfigurationFactories().isEmpty())
return;
// Check that we don't have a configuration with the same displayName
diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp
index 0336d83377..f39582e7f1 100644
--- a/src/plugins/projectexplorer/targetsetuppage.cpp
+++ b/src/plugins/projectexplorer/targetsetuppage.cpp
@@ -36,8 +36,9 @@
#include "targetsetupwidget.h"
#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <projectexplorer/ipotentialkit.h>
+
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/wizard.h>
@@ -52,6 +53,19 @@
#include <QCheckBox>
namespace ProjectExplorer {
+
+static QList<IPotentialKit *> g_potentialKits;
+
+IPotentialKit::IPotentialKit()
+{
+ g_potentialKits.append(this);
+}
+
+IPotentialKit::~IPotentialKit()
+{
+ g_potentialKits.removeOne(this);
+}
+
namespace Internal {
static Utils::FileName importDirectory(const QString &projectPath)
{
@@ -183,9 +197,7 @@ TargetSetupPage::TargetSetupPage(QWidget *parent) :
setTitle(tr("Kit Selection"));
- QList<IPotentialKit *> potentialKits =
- ExtensionSystem::PluginManager::instance()->getObjects<IPotentialKit>();
- foreach (IPotentialKit *pk, potentialKits)
+ for (IPotentialKit *pk : g_potentialKits)
if (pk->isEnabled())
m_potentialWidgets.append(pk->createWidget(this));
diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp
index d8337cf6ff..75ba8e6391 100644
--- a/src/plugins/projectexplorer/taskwindow.cpp
+++ b/src/plugins/projectexplorer/taskwindow.cpp
@@ -36,7 +36,7 @@
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/icore.h>
#include <coreplugin/icontext.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
#include <utils/itemviews.h>
@@ -56,6 +56,19 @@ const char SESSION_FILTER_WARNINGS[] = "TaskWindow.IncludeWarnings";
}
namespace ProjectExplorer {
+
+static QList<ITaskHandler *> g_taskHandlers;
+
+ITaskHandler::ITaskHandler()
+{
+ g_taskHandlers.append(this);
+}
+
+ITaskHandler::~ITaskHandler()
+{
+ g_taskHandlers.removeOne(this);
+}
+
namespace Internal {
class TaskView : public Utils::ListView
@@ -321,8 +334,7 @@ void TaskWindow::delayedInitialization()
alreadyDone = true;
- QList<ITaskHandler *> handlers = ExtensionSystem::PluginManager::getObjects<ITaskHandler>();
- foreach (ITaskHandler *h, handlers) {
+ for (ITaskHandler *h : g_taskHandlers) {
if (h->isDefaultHandler() && !d->m_defaultHandler)
d->m_defaultHandler = h;
diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp
index 53e03e16ad..4cc3ee120d 100644
--- a/src/plugins/projectexplorer/toolchain.cpp
+++ b/src/plugins/projectexplorer/toolchain.cpp
@@ -322,6 +322,23 @@ QList<Task> ToolChain::validateKit(const Kit *) const
Used by the tool chain manager to restore user-generated tool chains.
*/
+static QList<ToolChainFactory *> g_toolChainFactories;
+
+ToolChainFactory::ToolChainFactory()
+{
+ g_toolChainFactories.append(this);
+}
+
+ToolChainFactory::~ToolChainFactory()
+{
+ g_toolChainFactories.removeOne(this);
+}
+
+const QList<ToolChainFactory *> ToolChainFactory::allToolChainFactories()
+{
+ return g_toolChainFactories;
+}
+
QList<ToolChain *> ToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
{
Q_UNUSED(alreadyKnown);
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index 018c99fd7e..10c86c9e92 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -177,6 +177,11 @@ class PROJECTEXPLORER_EXPORT ToolChainFactory : public QObject
Q_OBJECT
public:
+ ToolChainFactory();
+ ~ToolChainFactory();
+
+ static const QList<ToolChainFactory *> allToolChainFactories();
+
QString displayName() const { return m_displayName; }
virtual QList<ToolChain *> autoDetect(const QList<ToolChain *> &alreadyKnown);
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index b6c79b8773..87ad2f2b30 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -31,8 +31,6 @@
#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
-
#include <utils/fileutils.h>
#include <utils/persistentsettings.h>
#include <utils/qtcassert.h>
@@ -139,7 +137,7 @@ static QList<ToolChain *> restoreFromFile(const FileName &fileName)
if (version < 1)
return result;
- QList<ToolChainFactory *> factories = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>();
+ const QList<ToolChainFactory *> factories = ToolChainFactory::allToolChainFactories();
int count = data.value(QLatin1String(TOOLCHAIN_COUNT_KEY), 0).toInt();
for (int i = 0; i < count; ++i) {
@@ -150,7 +148,7 @@ static QList<ToolChain *> restoreFromFile(const FileName &fileName)
const QVariantMap tcMap = data.value(key).toMap();
bool restored = false;
- foreach (ToolChainFactory *f, factories) {
+ for (ToolChainFactory *f : factories) {
if (f->canRestore(tcMap)) {
if (ToolChain *tc = f->restore(tcMap)) {
result.append(tc);
@@ -172,9 +170,7 @@ static QList<ToolChain *> restoreFromFile(const FileName &fileName)
static QList<ToolChain *> autoDetectToolChains(const QList<ToolChain *> alreadyKnownTcs)
{
QList<ToolChain *> result;
- const QList<ToolChainFactory *> factories
- = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>();
- foreach (ToolChainFactory *f, factories)
+ for (ToolChainFactory *f : ToolChainFactory::allToolChainFactories())
result.append(f->autoDetect(alreadyKnownTcs));
// Remove invalid toolchains that might have sneaked in.
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp
index 2e76c7f3c4..8cfd23655e 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.cpp
+++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp
@@ -110,7 +110,7 @@ class ToolChainOptionsWidget : public QWidget
public:
ToolChainOptionsWidget()
{
- m_factories = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>(
+ m_factories = Utils::filtered(ToolChainFactory::allToolChainFactories(),
[](ToolChainFactory *factory) { return factory->canCreate();});
m_model.setHeader({ToolChainOptionsPage::tr("Name"), ToolChainOptionsPage::tr("Type")});
diff --git a/src/plugins/qbsprojectmanager/propertyprovider.h b/src/plugins/qbsprojectmanager/propertyprovider.h
index 1d99c1aea5..7d6e94f897 100644
--- a/src/plugins/qbsprojectmanager/propertyprovider.h
+++ b/src/plugins/qbsprojectmanager/propertyprovider.h
@@ -39,6 +39,9 @@ class QBSPROJECTMANAGER_EXPORT PropertyProvider : public QObject
Q_OBJECT
public:
+ PropertyProvider();
+ ~PropertyProvider();
+
virtual bool canHandle(const ProjectExplorer::Kit *k) const = 0;
virtual QVariantMap properties(const ProjectExplorer::Kit *k, const QVariantMap &defaultData) const = 0;
};
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
index ba4775f2c2..ad99c81bf1 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
@@ -34,7 +34,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <projectexplorer/kit.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/projectexplorer.h>
@@ -54,6 +54,19 @@ static QString qtcProfileGroup() { return QLatin1String("preferences.qtcreator.k
static QString qtcProfilePrefix() { return qtcProfileGroup() + sep; }
namespace QbsProjectManager {
+
+static QList<PropertyProvider *> g_propertyProviders;
+
+PropertyProvider::PropertyProvider()
+{
+ g_propertyProviders.append(this);
+}
+
+PropertyProvider::~PropertyProvider()
+{
+ g_propertyProviders.removeOne(this);
+}
+
namespace Internal {
qbs::Settings *QbsManager::m_settings = nullptr;
@@ -200,8 +213,7 @@ void QbsManager::addProfileFromKit(const ProjectExplorer::Kit *k)
// set up properties:
QVariantMap data = m_defaultPropertyProvider->properties(k, QVariantMap());
- QList<PropertyProvider *> providerList = ExtensionSystem::PluginManager::getObjects<PropertyProvider>();
- foreach (PropertyProvider *provider, providerList) {
+ for (PropertyProvider *provider : g_propertyProviders) {
if (provider->canHandle(k))
data = provider->properties(k, data);
}
diff --git a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp
index 3acc165550..12b3e9a13b 100644
--- a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp
@@ -25,7 +25,7 @@
#include "qmakerunconfigurationfactory.h"
-#include <extensionsystem/pluginmanager.h>
+using namespace ProjectExplorer;
namespace QmakeProjectManager {
@@ -35,13 +35,15 @@ QmakeRunConfigurationFactory::QmakeRunConfigurationFactory(QObject *parent) :
QmakeRunConfigurationFactory *QmakeRunConfigurationFactory::find(ProjectExplorer::Target *t)
{
- if (!t)
- return nullptr;
-
- return ExtensionSystem::PluginManager::getObject<QmakeRunConfigurationFactory>(
- [&t](QmakeRunConfigurationFactory *factory) {
- return factory->canHandle(t);
- });
+ if (t) {
+ for (auto factory : IRunConfigurationFactory::allRunConfigurationFactories()) {
+ if (auto qmakeFactory = qobject_cast<QmakeRunConfigurationFactory *>(factory)) {
+ if (qmakeFactory->canHandle(t))
+ return qmakeFactory;
+ }
+ }
+ }
+ return nullptr;
}
} // namespace QmakeProjectManager
diff --git a/src/plugins/qmljseditor/qmljsquickfixassist.cpp b/src/plugins/qmljseditor/qmljsquickfixassist.cpp
index 1138a1341e..7f7160d6ea 100644
--- a/src/plugins/qmljseditor/qmljsquickfixassist.cpp
+++ b/src/plugins/qmljseditor/qmljsquickfixassist.cpp
@@ -30,7 +30,7 @@
//temp
#include "qmljsquickfix.h"
-#include <extensionsystem/pluginmanager.h>
+#include <utils/algorithm.h>
using namespace QmlJSTools;
using namespace TextEditor;
@@ -85,10 +85,9 @@ IAssistProcessor *QmlJSQuickFixAssistProvider::createProcessor() const
QList<QuickFixFactory *> QmlJSQuickFixAssistProvider::quickFixFactories() const
{
- QList<QuickFixFactory *> results;
- foreach (QmlJSQuickFixFactory *f, ExtensionSystem::PluginManager::getObjects<QmlJSQuickFixFactory>())
- results.append(f);
- return results;
+ return Utils::filtered(QuickFixFactory::allQuickFixFactories(), [](QuickFixFactory *f) {
+ return qobject_cast<QmlJSQuickFixFactory *>(f) != nullptr;
+ });
}
} // namespace QmlJSEditor
diff --git a/src/plugins/qmljstools/qmljsbundleprovider.cpp b/src/plugins/qmljstools/qmljsbundleprovider.cpp
index 10f81a9db3..8fa30ae870 100644
--- a/src/plugins/qmljstools/qmljsbundleprovider.cpp
+++ b/src/plugins/qmljstools/qmljsbundleprovider.cpp
@@ -176,4 +176,22 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit
}
}
+static QList<IBundleProvider *> g_bundleProviders;
+
+IBundleProvider::IBundleProvider(QObject *parent)
+ : QObject(parent)
+{
+ g_bundleProviders.append(this);
+}
+
+IBundleProvider::~IBundleProvider()
+{
+ g_bundleProviders.removeOne(this);
+}
+
+const QList<IBundleProvider *> IBundleProvider::allBundleProviders()
+{
+ return g_bundleProviders;
+}
+
} // end namespace QmlJSTools
diff --git a/src/plugins/qmljstools/qmljsbundleprovider.h b/src/plugins/qmljstools/qmljsbundleprovider.h
index d3b01bbb22..8fc2258c69 100644
--- a/src/plugins/qmljstools/qmljsbundleprovider.h
+++ b/src/plugins/qmljstools/qmljsbundleprovider.h
@@ -47,9 +47,10 @@ class QMLJSTOOLS_EXPORT IBundleProvider : public QObject
{
Q_OBJECT
public:
- explicit IBundleProvider(QObject *parent = 0)
- : QObject(parent)
- { }
+ explicit IBundleProvider(QObject *parent = 0);
+ ~IBundleProvider();
+
+ static const QList<IBundleProvider *> allBundleProviders();
virtual void mergeBundlesForKit(ProjectExplorer::Kit *kit, QmlJS::QmlLanguageBundles &bundles
, const QHash<QString,QString> &replacements) = 0;
diff --git a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp
index 60c1cad38f..42a42d4d1f 100644
--- a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp
+++ b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp
@@ -88,10 +88,8 @@ TextEditor::Indenter *QmlJSCodeStylePreferencesFactory::createIndenter() const
TextEditor::SnippetProvider *QmlJSCodeStylePreferencesFactory::snippetProvider() const
{
- return ExtensionSystem::PluginManager::getObject<TextEditor::SnippetProvider>(
- [](TextEditor::SnippetProvider *provider) {
- return provider->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID);
- });
+ return TextEditor::SnippetProvider::snippetProviderForGroupId
+ (QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID);
}
QString QmlJSCodeStylePreferencesFactory::previewText() const
diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp
index 9067f1cac8..04bbb007e5 100644
--- a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp
+++ b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp
@@ -80,13 +80,10 @@ void QmlJSCodeStylePreferencesWidget::setPreferences(ICodeStylePreferences *pref
updatePreview();
}
-
void QmlJSCodeStylePreferencesWidget::decorateEditor(const FontSettings &fontSettings)
{
- const SnippetProvider *provider = ExtensionSystem::PluginManager::getObject<SnippetProvider>(
- [](SnippetProvider *current) {
- return current->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID);
- });
+ const SnippetProvider *provider =
+ SnippetProvider::snippetProviderForGroupId(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID);
m_ui->previewTextEdit->textDocument()->setFontSettings(fontSettings);
if (provider)
diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp
index 4da912cc90..a493ca2e94 100644
--- a/src/plugins/qmljstools/qmljsmodelmanager.cpp
+++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp
@@ -33,8 +33,9 @@
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/progressmanager/progressmanager.h>
+
#include <cpptools/cppmodelmanager.h>
-#include <extensionsystem/pluginmanager.h>
+
#include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorerconstants.h>
@@ -152,13 +153,9 @@ void setupProjectInfoQmlBundles(ModelManagerInterface::ProjectInfo &projectInfo)
replacements.insert(QLatin1String("$(QT_INSTALL_IMPORTS)"), projectInfo.qtImportsPath);
replacements.insert(QLatin1String("$(QT_INSTALL_QML)"), projectInfo.qtQmlPath);
- QList<IBundleProvider *> bundleProviders =
- ExtensionSystem::PluginManager::getObjects<IBundleProvider>();
+ for (IBundleProvider *bp : IBundleProvider::allBundleProviders())
+ bp->mergeBundlesForKit(activeKit, projectInfo.activeBundle, replacements);
- foreach (IBundleProvider *bp, bundleProviders) {
- if (bp)
- bp->mergeBundlesForKit(activeKit, projectInfo.activeBundle, replacements);
- }
projectInfo.extendedBundle = projectInfo.activeBundle;
if (projectInfo.project) {
@@ -167,9 +164,8 @@ void setupProjectInfoQmlBundles(ModelManagerInterface::ProjectInfo &projectInfo)
currentKits.insert(t->kit());
currentKits.remove(activeKit);
foreach (Kit *kit, currentKits) {
- foreach (IBundleProvider *bp, bundleProviders)
- if (bp)
- bp->mergeBundlesForKit(kit, projectInfo.extendedBundle, replacements);
+ for (IBundleProvider *bp : IBundleProvider::allBundleProviders())
+ bp->mergeBundlesForKit(kit, projectInfo.extendedBundle, replacements);
}
}
}
diff --git a/src/plugins/qtsupport/qtversionfactory.cpp b/src/plugins/qtsupport/qtversionfactory.cpp
index dc23ea981f..ebc8ae36ee 100644
--- a/src/plugins/qtsupport/qtversionfactory.cpp
+++ b/src/plugins/qtsupport/qtversionfactory.cpp
@@ -36,13 +36,22 @@
using namespace QtSupport;
using namespace QtSupport::Internal;
+static QList<QtVersionFactory *> g_qtVersionFactories;
+
QtVersionFactory::QtVersionFactory(QObject *parent) :
QObject(parent)
{
+ g_qtVersionFactories.append(this);
}
QtVersionFactory::~QtVersionFactory()
{
+ g_qtVersionFactories.removeOne(this);
+}
+
+const QList<QtVersionFactory *> QtVersionFactory::allQtVersionFactories()
+{
+ return g_qtVersionFactories;
}
BaseQtVersion *QtVersionFactory::createQtVersionFromQMakePath(const Utils::FileName &qmakePath, bool isAutoDetected, const QString &autoDetectionSource, QString *error)
@@ -62,7 +71,7 @@ BaseQtVersion *QtVersionFactory::createQtVersionFromQMakePath(const Utils::FileN
ProFileEvaluator evaluator(&globals, &parser, &vfs, &msgHandler);
evaluator.loadNamedSpec(mkspec.toString(), false);
- QList<QtVersionFactory *> factories = ExtensionSystem::PluginManager::getObjects<QtVersionFactory>();
+ QList<QtVersionFactory *> factories = g_qtVersionFactories;
Utils::sort(factories, [](const QtVersionFactory *l, const QtVersionFactory *r) {
return l->priority() > r->priority();
});
diff --git a/src/plugins/qtsupport/qtversionfactory.h b/src/plugins/qtsupport/qtversionfactory.h
index d789717408..c54b2c3745 100644
--- a/src/plugins/qtsupport/qtversionfactory.h
+++ b/src/plugins/qtsupport/qtversionfactory.h
@@ -49,6 +49,8 @@ public:
explicit QtVersionFactory(QObject *parent = 0);
~QtVersionFactory();
+ static const QList<QtVersionFactory *> allQtVersionFactories();
+
virtual bool canRestore(const QString &type) = 0;
virtual BaseQtVersion *restore(const QString &type, const QVariantMap &data) = 0;
diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp
index 321fd5895d..621cfa6878 100644
--- a/src/plugins/qtsupport/qtversionmanager.cpp
+++ b/src/plugins/qtsupport/qtversionmanager.cpp
@@ -179,7 +179,7 @@ static bool restoreQtVersions()
m_writer = new PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)),
QLatin1String("QtCreatorQtVersions"));
- QList<QtVersionFactory *> factories = ExtensionSystem::PluginManager::getObjects<QtVersionFactory>();
+ const QList<QtVersionFactory *> factories = QtVersionFactory::allQtVersionFactories();
PersistentSettingsReader reader;
FileName filename = settingsFileName(QLatin1String(QTVERSION_FILENAME));
@@ -208,7 +208,7 @@ static bool restoreQtVersions()
const QString type = qtversionMap.value(QLatin1String(QTVERSION_TYPE_KEY)).toString();
bool restored = false;
- foreach (QtVersionFactory *f, factories) {
+ for (QtVersionFactory *f : factories) {
if (f->canRestore(type)) {
if (BaseQtVersion *qtv = f->restore(type, qtversionMap)) {
if (m_versions.contains(qtv->uniqueId())) {
@@ -249,7 +249,7 @@ void QtVersionManager::updateFromInstaller(bool emitSignal)
QList<int> removed;
QList<int> changed;
- QList<QtVersionFactory *> factories = ExtensionSystem::PluginManager::getObjects<QtVersionFactory>();
+ const QList<QtVersionFactory *> factories = QtVersionFactory::allQtVersionFactories();
PersistentSettingsReader reader;
QVariantMap data;
if (reader.load(path))
diff --git a/src/plugins/texteditor/ioutlinewidget.h b/src/plugins/texteditor/ioutlinewidget.h
index d6aa32fa03..7ea654441f 100644
--- a/src/plugins/texteditor/ioutlinewidget.h
+++ b/src/plugins/texteditor/ioutlinewidget.h
@@ -46,9 +46,14 @@ public:
virtual QVariantMap settings() const { return QVariantMap(); }
};
-class TEXTEDITOR_EXPORT IOutlineWidgetFactory : public QObject {
+class TEXTEDITOR_EXPORT IOutlineWidgetFactory : public QObject
+{
Q_OBJECT
+
public:
+ IOutlineWidgetFactory();
+ ~IOutlineWidgetFactory() override;
+
virtual bool supportsEditor(Core::IEditor *editor) const = 0;
virtual IOutlineWidget *createWidget(Core::IEditor *editor) = 0;
};
diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp
index 0b04789099..76dd86717e 100644
--- a/src/plugins/texteditor/outlinefactory.cpp
+++ b/src/plugins/texteditor/outlinefactory.cpp
@@ -38,6 +38,19 @@
#include <QDebug>
namespace TextEditor {
+
+static QList<IOutlineWidgetFactory *> g_outlineWidgetFactories;
+
+IOutlineWidgetFactory::IOutlineWidgetFactory()
+{
+ g_outlineWidgetFactories.append(this);
+}
+
+IOutlineWidgetFactory::~IOutlineWidgetFactory()
+{
+ g_outlineWidgetFactories.removeOne(this);
+}
+
namespace Internal {
OutlineWidgetStack::OutlineWidgetStack(OutlineFactory *factory) :
@@ -153,7 +166,7 @@ void OutlineWidgetStack::updateCurrentEditor(Core::IEditor *editor)
IOutlineWidget *newWidget = 0;
if (editor) {
- foreach (IOutlineWidgetFactory *widgetFactory, m_factory->widgetFactories()) {
+ for (IOutlineWidgetFactory *widgetFactory : g_outlineWidgetFactories) {
if (widgetFactory->supportsEditor(editor)) {
newWidget = widgetFactory->createWidget(editor);
break;
@@ -189,16 +202,6 @@ OutlineFactory::OutlineFactory()
setPriority(600);
}
-QList<IOutlineWidgetFactory*> OutlineFactory::widgetFactories() const
-{
- return m_factories;
-}
-
-void OutlineFactory::setWidgetFactories(QList<IOutlineWidgetFactory*> factories)
-{
- m_factories = factories;
-}
-
Core::NavigationView OutlineFactory::createWidget()
{
Core::NavigationView n;
diff --git a/src/plugins/texteditor/outlinefactory.h b/src/plugins/texteditor/outlinefactory.h
index 11a1f4d0a9..940aab969e 100644
--- a/src/plugins/texteditor/outlinefactory.h
+++ b/src/plugins/texteditor/outlinefactory.h
@@ -72,15 +72,10 @@ class OutlineFactory : public Core::INavigationWidgetFactory
public:
OutlineFactory();
- QList<IOutlineWidgetFactory*> widgetFactories() const;
- void setWidgetFactories(QList<IOutlineWidgetFactory*> factories);
-
// from INavigationWidgetFactory
virtual Core::NavigationView createWidget();
virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
-private:
- QList<IOutlineWidgetFactory*> m_factories;
};
} // namespace Internal
diff --git a/src/plugins/texteditor/quickfix.cpp b/src/plugins/texteditor/quickfix.cpp
index 1fff0b3d6f..8f6012829b 100644
--- a/src/plugins/texteditor/quickfix.cpp
+++ b/src/plugins/texteditor/quickfix.cpp
@@ -56,11 +56,20 @@ void QuickFixOperation::setDescription(const QString &description)
_description = description;
}
+static QList<QuickFixFactory *> g_quickFixFactories;
+
QuickFixFactory::QuickFixFactory(QObject *parent)
: QObject(parent)
{
+ g_quickFixFactories.append(this);
}
QuickFixFactory::~QuickFixFactory()
{
+ g_quickFixFactories.removeOne(this);
+}
+
+const QList<QuickFixFactory *> QuickFixFactory::allQuickFixFactories()
+{
+ return g_quickFixFactories;
}
diff --git a/src/plugins/texteditor/quickfix.h b/src/plugins/texteditor/quickfix.h
index 715d9e09b7..c9ee1f6f0b 100644
--- a/src/plugins/texteditor/quickfix.h
+++ b/src/plugins/texteditor/quickfix.h
@@ -114,6 +114,8 @@ public:
QuickFixFactory(QObject *parent = 0);
~QuickFixFactory();
+ static const QList<QuickFixFactory *> allQuickFixFactories();
+
virtual void matchingOperations(const QuickFixInterface &interface, QuickFixOperations &result) = 0;
};
diff --git a/src/plugins/texteditor/snippets/snippetprovider.cpp b/src/plugins/texteditor/snippets/snippetprovider.cpp
index 3791996d12..13e9515232 100644
--- a/src/plugins/texteditor/snippets/snippetprovider.cpp
+++ b/src/plugins/texteditor/snippets/snippetprovider.cpp
@@ -27,8 +27,33 @@
#include "texteditorplugin.h"
+#include <utils/algorithm.h>
+
using namespace TextEditor;
+static QList<SnippetProvider *> g_snippetProviders;
+
+const QList<SnippetProvider *> SnippetProvider::snippetProviders()
+{
+ return g_snippetProviders;
+}
+
+SnippetProvider *SnippetProvider::snippetProviderForGroupId(const QString &groupId)
+{
+ return Utils::findOrDefault(g_snippetProviders,
+ Utils::equal(&SnippetProvider::groupId, groupId));
+}
+
+SnippetProvider::SnippetProvider()
+{
+ g_snippetProviders.append(this);
+}
+
+SnippetProvider::~SnippetProvider()
+{
+ g_snippetProviders.removeOne(this);
+}
+
/*!
\group Snippets
\title Snippets for Editors
diff --git a/src/plugins/texteditor/snippets/snippetprovider.h b/src/plugins/texteditor/snippets/snippetprovider.h
index 0bb0b0682c..5c343df182 100644
--- a/src/plugins/texteditor/snippets/snippetprovider.h
+++ b/src/plugins/texteditor/snippets/snippetprovider.h
@@ -41,6 +41,9 @@ class TEXTEDITOR_EXPORT SnippetProvider : public QObject
public:
using EditorDecorator = std::function<void(TextEditorWidget *)>;
+ static const QList<SnippetProvider *> snippetProviders();
+ static SnippetProvider *snippetProviderForGroupId(const QString &groupId);
+
static void registerGroup(const QString &groupId, const QString &displayName,
EditorDecorator editorDecorator = EditorDecorator());
@@ -51,7 +54,8 @@ public:
void decorateEditor(TextEditorWidget *editor) const;
private:
- SnippetProvider() = default;
+ SnippetProvider();
+ ~SnippetProvider() override;
QString m_groupId;
QString m_displayName;
diff --git a/src/plugins/texteditor/snippets/snippetscollection.cpp b/src/plugins/texteditor/snippets/snippetscollection.cpp
index 4aabbf2fd2..20c9615d5a 100644
--- a/src/plugins/texteditor/snippets/snippetscollection.cpp
+++ b/src/plugins/texteditor/snippets/snippetscollection.cpp
@@ -409,9 +409,7 @@ int SnippetsCollection::groupIndex(const QString &groupId) const
void SnippetsCollection::identifyGroups()
{
- const QList<SnippetProvider *> &providers =
- ExtensionSystem::PluginManager::getObjects<SnippetProvider>();
- foreach (SnippetProvider *provider, providers) {
+ for (SnippetProvider *provider : SnippetProvider::snippetProviders()) {
const int groupIndex = m_groupIndexById.size();
m_groupIndexById.insert(provider->groupId(), groupIndex);
m_snippets.resize(groupIndex + 1);
diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.cpp b/src/plugins/texteditor/snippets/snippetssettingspage.cpp
index 85b88d4eb4..96a81d27f0 100644
--- a/src/plugins/texteditor/snippets/snippetssettingspage.cpp
+++ b/src/plugins/texteditor/snippets/snippetssettingspage.cpp
@@ -328,9 +328,8 @@ void SnippetsSettingsPagePrivate::configureUi(QWidget *w)
{
m_ui.setupUi(w);
- const QList<SnippetProvider *> &providers =
- ExtensionSystem::PluginManager::getObjects<SnippetProvider>();
- foreach (SnippetProvider *provider, providers) {
+ const QList<SnippetProvider *> &providers = SnippetProvider::snippetProviders();
+ for (SnippetProvider *provider : providers) {
m_ui.groupCombo->addItem(provider->displayName(), provider->groupId());
SnippetEditorWidget *snippetEditor = new SnippetEditorWidget(w);
provider->decorateEditor(snippetEditor);
@@ -537,8 +536,7 @@ void SnippetsSettingsPagePrivate::setSnippetContent()
void SnippetsSettingsPagePrivate::decorateEditors(const TextEditor::FontSettings &fontSettings)
{
- const QList<SnippetProvider *> &providers =
- ExtensionSystem::PluginManager::getObjects<SnippetProvider>();
+ const QList<SnippetProvider *> &providers = SnippetProvider::snippetProviders();
for (int i = 0; i < m_ui.groupCombo->count(); ++i) {
SnippetEditorWidget *snippetEditor = editorAt(i);
snippetEditor->textDocument()->setFontSettings(fontSettings);
diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp
index 80f95ba22c..37b7aed27f 100644
--- a/src/plugins/texteditor/texteditorplugin.cpp
+++ b/src/plugins/texteditor/texteditorplugin.cpp
@@ -147,8 +147,6 @@ bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMe
void TextEditorPlugin::extensionsInitialized()
{
- m_outlineFactory->setWidgetFactories(ExtensionSystem::PluginManager::getObjects<TextEditor::IOutlineWidgetFactory>());
-
connect(m_settings, &TextEditorSettings::fontSettingsChanged,
this, &TextEditorPlugin::updateSearchResultsFont);
diff --git a/src/plugins/vcsbase/basevcseditorfactory.cpp b/src/plugins/vcsbase/basevcseditorfactory.cpp
index 2e26d4026e..84edc57092 100644
--- a/src/plugins/vcsbase/basevcseditorfactory.cpp
+++ b/src/plugins/vcsbase/basevcseditorfactory.cpp
@@ -83,10 +83,13 @@ VcsEditorFactory::VcsEditorFactory(const VcsBaseEditorParameters *parameters,
VcsBaseEditor *VcsEditorFactory::createEditorById(const char *id)
{
- auto factory = ExtensionSystem::PluginManager::getObject<VcsEditorFactory>(
- [id](QObject *ob) { return ob->property("VcsEditorFactoryName").toByteArray() == id; });
- QTC_ASSERT(factory, return 0);
- return qobject_cast<VcsBaseEditor *>(factory->createEditor());
+ for (IEditorFactory *factory : allEditorFactories()) {
+ if (auto vcsFactory = qobject_cast<VcsEditorFactory *>(factory)) {
+ if (vcsFactory->property("VcsEditorFactoryName").toByteArray() == id)
+ return qobject_cast<VcsBaseEditor *>(factory->createEditor());
+ }
+ }
+ return nullptr;
}
} // namespace VcsBase
diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp
index 195dac2d14..0c9f62cb37 100644
--- a/src/plugins/welcome/welcomeplugin.cpp
+++ b/src/plugins/welcome/welcomeplugin.cpp
@@ -343,8 +343,7 @@ void WelcomeMode::initPlugins()
QSettings *settings = ICore::settings();
m_activePage = Id::fromSetting(settings->value(currentPageSettingsKeyC));
- const QList<IWelcomePage *> availablePages = PluginManager::getObjects<IWelcomePage>();
- for (IWelcomePage *page : availablePages)
+ for (IWelcomePage *page : IWelcomePage::allWelcomePages())
addPage(page);
// make sure later added pages are made available too: