diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 1ec25aed34f..d1b872ae535 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -1380,11 +1380,10 @@ EditorManager::ExternalEditorList template EditorFactoryLike *findById(const Core::Id &id) { - const QList factories = ExtensionSystem::PluginManager::getObjects(); - foreach (EditorFactoryLike *efl, factories) - if (id == efl->id()) - return efl; - return 0; + return ExtensionSystem::PluginManager::getObject( + [&id](EditorFactoryLike *efl) { + return id == efl->id(); + }); } IEditor *EditorManager::createEditor(const Id &editorId, const QString &fileName) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index ea57d05b472..c0e02117b89 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -795,14 +795,10 @@ void MainWindow::openFile() static QList getNonEditorDocumentFactories() { - const QList allFileFactories = - ExtensionSystem::PluginManager::getObjects(); - QList nonEditorFileFactories; - foreach (IDocumentFactory *factory, allFileFactories) { - if (!qobject_cast(factory)) - nonEditorFileFactories.append(factory); - } - return nonEditorFileFactories; + return ExtensionSystem::PluginManager::getObjects( + [](IDocumentFactory *factory) { + return !qobject_cast(factory); + }); } static IDocumentFactory *findDocumentFactory(const QList &fileFactories, diff --git a/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp b/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp index 574c76ab3ce..837a48a854e 100644 --- a/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp +++ b/src/plugins/cpptools/cppcodestylepreferencesfactory.cpp @@ -127,12 +127,10 @@ TextEditor::Indenter *CppCodeStylePreferencesFactory::createIndenter() const TextEditor::ISnippetProvider *CppCodeStylePreferencesFactory::snippetProvider() const { - const QList &providers = - ExtensionSystem::PluginManager::getObjects(); - foreach (TextEditor::ISnippetProvider *provider, providers) - if (provider->groupId() == QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID)) - return provider; - return 0; + return ExtensionSystem::PluginManager::getObject( + [](TextEditor::ISnippetProvider *provider) { + return provider->groupId() == QLatin1String(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 3f655a551d6..5a3b055e232 100644 --- a/src/plugins/cpptools/cppcodestylesettingspage.cpp +++ b/src/plugins/cpptools/cppcodestylesettingspage.cpp @@ -486,15 +486,10 @@ void CppCodeStylePreferencesWidget::updatePreview() void CppCodeStylePreferencesWidget::decorateEditors(const TextEditor::FontSettings &fontSettings) { - const ISnippetProvider *provider = 0; - const QList &providers = - ExtensionSystem::PluginManager::getObjects(); - foreach (const ISnippetProvider *current, providers) { - if (current->groupId() == QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID)) { - provider = current; - break; - } - } + const ISnippetProvider *provider = ExtensionSystem::PluginManager::getObject( + [](ISnippetProvider *current) { + return current->groupId() == QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID); + }); foreach (TextEditor::SnippetEditorWidget *editor, m_previews) { editor->baseTextDocument()->setFontSettings(fontSettings); diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index f5392a5e925..3ecfb78e2ad 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -332,13 +332,10 @@ IBuildConfigurationFactory::~IBuildConfigurationFactory() // restore IBuildConfigurationFactory *IBuildConfigurationFactory::find(Target *parent, const QVariantMap &map) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (IBuildConfigurationFactory *factory, factories) { - if (factory->canRestore(parent, map)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, map](IBuildConfigurationFactory *factory) { + return factory->canRestore(parent, map); + }); } // setup @@ -378,12 +375,9 @@ IBuildConfigurationFactory * IBuildConfigurationFactory::find(Target *parent) // clone IBuildConfigurationFactory *IBuildConfigurationFactory::find(Target *parent, BuildConfiguration *bc) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (IBuildConfigurationFactory *factory, factories) { - if (factory->canClone(parent, bc)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, &bc](IBuildConfigurationFactory *factory) { + return factory->canClone(parent, bc); + }); } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/buildsteplist.cpp b/src/plugins/projectexplorer/buildsteplist.cpp index cda68083738..82a0c236f3b 100644 --- a/src/plugins/projectexplorer/buildsteplist.cpp +++ b/src/plugins/projectexplorer/buildsteplist.cpp @@ -44,20 +44,18 @@ namespace { IBuildStepFactory *findCloneFactory(BuildStepList *parent, BuildStep *source) { - QList factories = ExtensionSystem::PluginManager::getObjects(); - foreach (IBuildStepFactory *factory, factories) - if (factory->canClone(parent, source)) - return factory; - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, &source](IBuildStepFactory *factory) { + return factory->canClone(parent, source); + }); } IBuildStepFactory *findRestoreFactory(BuildStepList *parent, const QVariantMap &map) { - QList factories = ExtensionSystem::PluginManager::getObjects(); - foreach (IBuildStepFactory *factory, factories) - if (factory->canRestore(parent, map)) - return factory; - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, &map](IBuildStepFactory *factory) { + return factory->canRestore(parent, map); + }); } const char STEPS_COUNT_KEY[] = "ProjectExplorer.BuildStepList.StepsCount"; diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp index 7e11528fbb3..1caff64c794 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp @@ -335,15 +335,16 @@ CustomWizard::CustomWizardContextPtr CustomWizard::context() const CustomWizard *CustomWizard::createWizard(const CustomProjectWizard::CustomWizardParametersPtr &p, const Core::IWizard::Data &b) { + ICustomWizardFactory * factory = ExtensionSystem::PluginManager::getObject( + [&p, &b](ICustomWizardFactory *factory) { + return ((p->klass.isEmpty() && b.kind == factory->kind()) + || (!p->klass.isEmpty() && p->klass == factory->klass())); + }); + CustomWizard *rc = 0; - QList factories = ExtensionSystem::PluginManager::getObjects(); - foreach (ICustomWizardFactory *tmp, factories) { - if ((p->klass.isEmpty() && b.kind == tmp->kind()) - || (!p->klass.isEmpty() && p->klass == tmp->klass())) { - rc = tmp->create(); - break; - } - } + if (factory) + rc = factory->create(); + if (!rc) { qWarning("Unable to create custom wizard for class %s.", qPrintable(p->klass)); return 0; diff --git a/src/plugins/projectexplorer/deployconfiguration.cpp b/src/plugins/projectexplorer/deployconfiguration.cpp index 0756f081330..a6259f0acdd 100644 --- a/src/plugins/projectexplorer/deployconfiguration.cpp +++ b/src/plugins/projectexplorer/deployconfiguration.cpp @@ -227,36 +227,26 @@ DeployConfiguration *DeployConfigurationFactory::clone(Target *parent, DeployCon DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, const QVariantMap &map) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (DeployConfigurationFactory *factory, factories) { - if (factory->canRestore(parent, map)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, &map](DeployConfigurationFactory *factory) { + return factory->canRestore(parent, map); + }); } QList DeployConfigurationFactory::find(Target *parent) { - QList result; - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (DeployConfigurationFactory *factory, factories) { - if (!factory->availableCreationIds(parent).isEmpty()) - result << factory; - } - return result; + return ExtensionSystem::PluginManager::getObjects( + [&parent](DeployConfigurationFactory *factory) { + return !factory->availableCreationIds(parent).isEmpty(); + }); } DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, DeployConfiguration *dc) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (DeployConfigurationFactory *factory, factories) { - if (factory->canClone(parent, dc)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, &dc](DeployConfigurationFactory *factory) { + return factory->canClone(parent, dc); + }); } bool DeployConfigurationFactory::canHandle(Target *parent) const diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp index e452a412b3f..3229e2dafb0 100644 --- a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp @@ -324,16 +324,16 @@ void DeviceManager::setDefaultDevice(Core::Id id) const IDeviceFactory *DeviceManager::restoreFactory(const QVariantMap &map) { - const QList &factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (const IDeviceFactory * const factory, factories) { - if (factory->canRestore(map)) - return factory; - } - qWarning("Warning: No factory found for device '%s' of type '%s'.", - qPrintable(IDevice::idFromMap(map).toString()), - qPrintable(IDevice::typeFromMap(map).toString())); - return 0; + IDeviceFactory *factory = ExtensionSystem::PluginManager::getObject( + [&map](IDeviceFactory *factory) { + return factory->canRestore(map); + }); + + if (!factory) + qWarning("Warning: No factory found for device '%s' of type '%s'.", + qPrintable(IDevice::idFromMap(map).toString()), + qPrintable(IDevice::typeFromMap(map).toString())); + return factory; } DeviceManager::DeviceManager(bool isInstance) : d(new DeviceManagerPrivate) diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp index fdd093d4305..5c35fb149e6 100644 --- a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp @@ -125,15 +125,12 @@ void DeviceSettingsWidget::initGui() m_ui->configurationComboBox->setModel(m_deviceManagerModel); m_ui->nameLineEdit->setValidator(m_nameValidator); - bool hasDeviceFactories = false; const QList &factories = ExtensionSystem::PluginManager::getObjects(); - foreach (const IDeviceFactory *f, factories) { - if (f->canCreate()) { - hasDeviceFactories = true; - break; - } - } + + bool hasDeviceFactories = std::any_of(factories.constBegin(), factories.constEnd(), + [](IDeviceFactory *factory) { return factory->canCreate(); }); + m_ui->addConfigButton->setEnabled(hasDeviceFactories); int lastIndex = Core::ICore::settings() diff --git a/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp b/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp index 1a7328ee661..90758882830 100644 --- a/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp +++ b/src/plugins/projectexplorer/devicesupport/idevicefactory.cpp @@ -89,13 +89,10 @@ bool IDeviceFactory::canCreate() const IDeviceFactory *IDeviceFactory::find(Core::Id type) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (IDeviceFactory *factory, factories) { - if (factory->availableCreationIds().contains(type)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&type](IDeviceFactory *factory) { + return factory->availableCreationIds().contains(type); + }); } IDeviceFactory::IDeviceFactory(QObject *parent) : QObject(parent) diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index 72b19302e31..2dc56c18c42 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -293,14 +293,13 @@ KitInformation::ItemList DeviceTypeKitInformation::toUserOutput(const Kit *k) co Core::Id type = deviceTypeId(k); QString typeDisplayName = tr("Unknown device type"); if (type.isValid()) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (IDeviceFactory *factory, factories) { - if (factory->availableCreationIds().contains(type)) { - typeDisplayName = factory->displayNameForId(type); - break; - } - } + IDeviceFactory *factory = ExtensionSystem::PluginManager::getObject( + [&type](IDeviceFactory *factory) { + return factory->availableCreationIds().contains(type); + }); + + if (factory) + typeDisplayName = factory->displayNameForId(type); } return ItemList() << qMakePair(tr("Device type"), typeDisplayName); } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 401f677344d..87d879849e5 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2445,11 +2445,10 @@ void ProjectExplorerPlugin::activeRunConfigurationChanged() // NBS TODO implement more than one runner IRunControlFactory *ProjectExplorerPlugin::findRunControlFactory(RunConfiguration *config, RunMode mode) { - const QList factories = ExtensionSystem::PluginManager::getObjects(); - foreach (IRunControlFactory *f, factories) - if (f->canRun(config, mode)) - return f; - return 0; + return ExtensionSystem::PluginManager::getObject( + [&config, &mode](IRunControlFactory *factory) { + return factory->canRun(config, mode); + }); } void ProjectExplorerPlugin::updateDeployActions() diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index b12139b4056..238489d510d 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -429,36 +429,26 @@ RunConfiguration *IRunConfigurationFactory::restore(Target *parent, const QVaria IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, const QVariantMap &map) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (IRunConfigurationFactory *factory, factories) { - if (factory->canRestore(parent, map)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, &map](IRunConfigurationFactory *factory) { + return factory->canRestore(parent, map); + }); } IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, RunConfiguration *rc) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (IRunConfigurationFactory *factory, factories) { - if (factory->canClone(parent, rc)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&parent, rc](IRunConfigurationFactory *factory) { + return factory->canClone(parent, rc); + }); } QList IRunConfigurationFactory::find(Target *parent) { - QList factories - = ExtensionSystem::PluginManager::getObjects(); - QList result; - foreach (IRunConfigurationFactory *factory, factories) { - if (!factory->availableCreationIds(parent).isEmpty()) - result << factory; - } - return result; + return ExtensionSystem::PluginManager::getObjects( + [&parent](IRunConfigurationFactory *factory) { + return !factory->availableCreationIds(parent).isEmpty(); + }); } /*! diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp index fb2e03a09f4..a757b018801 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.cpp +++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp @@ -501,7 +501,8 @@ QWidget *ToolChainOptionsPage::widget() this, SLOT(toolChainSelectionChanged())); // Get toolchainfactories: - m_factories = ExtensionSystem::PluginManager::getObjects(); + m_factories = ExtensionSystem::PluginManager::getObjects( + [](ToolChainFactory *factory) { return factory->canCreate();}); // Set up add menu: QMenu *addMenu = new QMenu(m_addButton); @@ -509,14 +510,12 @@ QWidget *ToolChainOptionsPage::widget() connect(mapper, SIGNAL(mapped(QObject*)), this, SLOT(createToolChain(QObject*))); foreach (ToolChainFactory *factory, m_factories) { - if (factory->canCreate()) { - QAction *action = new QAction(addMenu); - action->setText(factory->displayName()); - connect(action, SIGNAL(triggered()), mapper, SLOT(map())); - mapper->setMapping(action, static_cast(factory)); + QAction *action = new QAction(addMenu); + action->setText(factory->displayName()); + connect(action, SIGNAL(triggered()), mapper, SLOT(map())); + mapper->setMapping(action, static_cast(factory)); - addMenu->addAction(action); - } + addMenu->addAction(action); } connect(m_cloneButton, SIGNAL(clicked()), mapper, SLOT(map())); mapper->setMapping(m_cloneButton, static_cast(0)); diff --git a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp index d644e8a0941..a057cae8e70 100644 --- a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp +++ b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp @@ -42,13 +42,10 @@ QmakeRunConfigurationFactory *QmakeRunConfigurationFactory::find(ProjectExplorer if (!t) return 0; - QList factories - = ExtensionSystem::PluginManager::getObjects(); - foreach (QmakeRunConfigurationFactory *factory, factories) { - if (factory->canHandle(t)) - return factory; - } - return 0; + return ExtensionSystem::PluginManager::getObject( + [&t](QmakeRunConfigurationFactory *factory) { + return factory->canHandle(t); + }); } } // namespace QmakeProjectManager diff --git a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp index a8e7eaf2f26..37b53d040dd 100644 --- a/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp +++ b/src/plugins/qmljstools/qmljscodestylepreferencesfactory.cpp @@ -92,12 +92,10 @@ TextEditor::Indenter *QmlJSCodeStylePreferencesFactory::createIndenter() const TextEditor::ISnippetProvider *QmlJSCodeStylePreferencesFactory::snippetProvider() const { - const QList &providers = - ExtensionSystem::PluginManager::getObjects(); - foreach (TextEditor::ISnippetProvider *provider, providers) - if (provider->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID)) - return provider; - return 0; + return ExtensionSystem::PluginManager::getObject( + [](TextEditor::ISnippetProvider *provider) { + return provider->groupId() == QLatin1String(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 0fe931277d4..16162c029fa 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp @@ -61,14 +61,13 @@ QmlJSCodeStylePreferencesWidget::QmlJSCodeStylePreferencesWidget(QWidget *parent { m_ui->setupUi(this); - const QList &providers = - ExtensionSystem::PluginManager::getObjects(); - foreach (ISnippetProvider *provider, providers) { - if (provider->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID)) { - provider->decorateEditor(m_ui->previewTextEdit); - break; - } - } + ISnippetProvider *provider = ExtensionSystem::PluginManager::getObject( + [](ISnippetProvider *provider) { + return provider->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID); + }); + + if (provider) + provider->decorateEditor(m_ui->previewTextEdit); decorateEditor(TextEditorSettings::fontSettings()); connect(TextEditorSettings::instance(), SIGNAL(fontSettingsChanged(TextEditor::FontSettings)), @@ -97,15 +96,10 @@ void QmlJSCodeStylePreferencesWidget::setPreferences(TextEditor::ICodeStylePrefe void QmlJSCodeStylePreferencesWidget::decorateEditor(const TextEditor::FontSettings &fontSettings) { - const ISnippetProvider *provider = 0; - const QList &providers = - ExtensionSystem::PluginManager::getObjects(); - foreach (const ISnippetProvider *current, providers) { - if (current->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID)) { - provider = current; - break; - } - } + const ISnippetProvider *provider = ExtensionSystem::PluginManager::getObject( + [](ISnippetProvider *current) { + return current->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID); + }); m_ui->previewTextEdit->baseTextDocument()->setFontSettings(fontSettings); if (provider)