ProjectExplorer: Use a local object pool for IProjectManagers

Change-Id: I94ada96da2bf7ce4c95c0ae8f393e6303e79ff60
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
hjk
2017-03-02 08:47:06 +01:00
parent d2b82c6cf1
commit e9cdc807e7
4 changed files with 50 additions and 64 deletions

View File

@@ -33,8 +33,6 @@
#include <coreplugin/featureprovider.h>
#include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
@@ -105,18 +103,12 @@ void JsonKitsPage::setPreferredFeatures(const QVariant &data)
void JsonKitsPage::setupProjectFiles(const JsonWizard::GeneratorFiles &files)
{
Project *project = nullptr;
QList<IProjectManager *> managerList = ExtensionSystem::PluginManager::getObjects<IProjectManager>();
foreach (const JsonWizard::GeneratorFile &f, files) {
for (const JsonWizard::GeneratorFile &f : files) {
if (f.file.attributes() & GeneratedFile::OpenProjectAttribute) {
const QFileInfo fi(f.file.path());
const QString path = fi.absoluteFilePath();
Utils::MimeType mt = Utils::mimeTypeForFile(fi);
if (!mt.isValid())
continue;
auto manager = Utils::findOrDefault(managerList, Utils::equal(&IProjectManager::mimeType, mt.name()));
IProjectManager *manager = IProjectManager::managerForMimeType(Utils::mimeTypeForFile(fi));
project = manager ? manager->openProject(path) : nullptr;
if (project) {
if (setupProject(project))