ProjectExplorer: Move ITargetFactory to object pool

Makes multiple target factories per project possible

Reviewed-By: hunger
This commit is contained in:
dt
2010-12-06 16:15:41 +01:00
parent 95d7639bb7
commit 8697072ce4
15 changed files with 65 additions and 51 deletions

View File

@@ -64,7 +64,6 @@ const char * const TOOLCHAIN_KEY("GenericProjectManager.GenericProject.Toolchain
GenericProject::GenericProject(Manager *manager, const QString &fileName)
: m_manager(manager),
m_fileName(fileName),
m_targetFactory(new GenericTargetFactory(this)),
m_toolChain(0)
{
QFileInfo fileInfo(m_fileName);
@@ -90,11 +89,6 @@ GenericProject::~GenericProject()
delete m_toolChain;
}
GenericTargetFactory *GenericProject::targetFactory() const
{
return m_targetFactory;
}
GenericTarget *GenericProject::activeTarget() const
{
return static_cast<GenericTarget *>(Project::activeTarget());
@@ -444,8 +438,11 @@ bool GenericProject::fromMap(const QVariantMap &map)
}
// Add default setup:
if (targets().isEmpty())
addTarget(targetFactory()->create(this, QLatin1String(GENERIC_DESKTOP_TARGET_ID)));
if (targets().isEmpty()) {
GenericTargetFactory *factory =
ExtensionSystem::PluginManager::instance()->getObject<GenericTargetFactory>();
addTarget(factory->create(this, QLatin1String(GENERIC_DESKTOP_TARGET_ID)));
}
ToolChainType type =
static_cast<ProjectExplorer::ToolChainType>