forked from qt-creator/qt-creator
Make use of ProjectConfiguration in the BuildConfigurations
* Make use of the ProjectConfiguration base class in the BuildConfigurations and update the factories accordingly. Reviewed-by: dt
This commit is contained in:
@@ -40,28 +40,44 @@ using namespace GenericProjectManager;
|
||||
using namespace GenericProjectManager::Internal;
|
||||
using ProjectExplorer::BuildConfiguration;
|
||||
|
||||
namespace {
|
||||
const char * const GENERIC_BC_ID("GenericProjectManager.GenericBuildConfiguration");
|
||||
|
||||
const char * const BUILD_DIRECTORY_KEY("GenericProjectManager.GenericBuildConfiguration.BuildDirectory");
|
||||
}
|
||||
|
||||
GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro)
|
||||
: BuildConfiguration(pro)
|
||||
: BuildConfiguration(pro, QLatin1String(GENERIC_BC_ID))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro, const QVariantMap &map)
|
||||
: BuildConfiguration(pro, map)
|
||||
GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro, const QString &id)
|
||||
: BuildConfiguration(pro, id)
|
||||
{
|
||||
m_buildDirectory = map.value("buildDirectory").toString();
|
||||
}
|
||||
|
||||
GenericBuildConfiguration::GenericBuildConfiguration(GenericBuildConfiguration *source)
|
||||
: BuildConfiguration(source),
|
||||
GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro, GenericBuildConfiguration *source) :
|
||||
BuildConfiguration(pro, source),
|
||||
m_buildDirectory(source->m_buildDirectory)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void GenericBuildConfiguration::toMap(QVariantMap &map) const
|
||||
GenericBuildConfiguration::~GenericBuildConfiguration()
|
||||
{
|
||||
map.insert("buildDirectory", m_buildDirectory);
|
||||
}
|
||||
|
||||
QVariantMap GenericBuildConfiguration::toMap() const
|
||||
{
|
||||
QVariantMap map(BuildConfiguration::toMap());
|
||||
map.insert(QLatin1String(BUILD_DIRECTORY_KEY), m_buildDirectory);
|
||||
return map;
|
||||
}
|
||||
|
||||
bool GenericBuildConfiguration::fromMap(const QVariantMap &map)
|
||||
{
|
||||
m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY)).toString();
|
||||
|
||||
return BuildConfiguration::fromMap(map);
|
||||
}
|
||||
|
||||
ProjectExplorer::Environment GenericBuildConfiguration::environment() const
|
||||
@@ -98,9 +114,8 @@ GenericProject *GenericBuildConfiguration::genericProject() const
|
||||
\class GenericBuildConfigurationFactory
|
||||
*/
|
||||
|
||||
GenericBuildConfigurationFactory::GenericBuildConfigurationFactory(GenericProject *project)
|
||||
: IBuildConfigurationFactory(project),
|
||||
m_project(project)
|
||||
GenericBuildConfigurationFactory::GenericBuildConfigurationFactory(QObject *parent) :
|
||||
ProjectExplorer::IBuildConfigurationFactory(parent)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -108,20 +123,34 @@ GenericBuildConfigurationFactory::~GenericBuildConfigurationFactory()
|
||||
{
|
||||
}
|
||||
|
||||
QStringList GenericBuildConfigurationFactory::availableCreationIds() const
|
||||
QStringList GenericBuildConfigurationFactory::availableCreationIds(ProjectExplorer::Project *parent) const
|
||||
{
|
||||
return QStringList() << "Create";
|
||||
Q_UNUSED(parent);
|
||||
return QStringList() << QLatin1String(GENERIC_BC_ID);
|
||||
}
|
||||
|
||||
QString GenericBuildConfigurationFactory::displayNameForId(const QString &id) const
|
||||
{
|
||||
QTC_ASSERT(id == "Create", return QString());
|
||||
return tr("Create");
|
||||
if (id == QLatin1String(GENERIC_BC_ID))
|
||||
return tr("Build");
|
||||
return QString();
|
||||
}
|
||||
|
||||
BuildConfiguration *GenericBuildConfigurationFactory::create(const QString &id) const
|
||||
bool GenericBuildConfigurationFactory::canCreate(ProjectExplorer::Project *parent, const QString &id) const
|
||||
{
|
||||
QTC_ASSERT(id == "Create", return false);
|
||||
if (!qobject_cast<GenericProject *>(parent))
|
||||
return false;
|
||||
if (id == QLatin1String(GENERIC_BC_ID))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
BuildConfiguration *GenericBuildConfigurationFactory::create(ProjectExplorer::Project *parent, const QString &id)
|
||||
{
|
||||
if (!canCreate(parent, id))
|
||||
return 0;
|
||||
GenericProject *project(static_cast<GenericProject *>(parent));
|
||||
|
||||
//TODO asking for name is duplicated everywhere, but maybe more
|
||||
// wizards will show up, that incorporate choosing the name
|
||||
bool ok;
|
||||
@@ -133,9 +162,9 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(const QString &id)
|
||||
&ok);
|
||||
if (!ok || buildConfigurationName.isEmpty())
|
||||
return false;
|
||||
GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project);
|
||||
GenericBuildConfiguration *bc = new GenericBuildConfiguration(project);
|
||||
bc->setDisplayName(buildConfigurationName);
|
||||
m_project->addBuildConfiguration(bc); // also makes the name unique...
|
||||
project->addBuildConfiguration(bc); // also makes the name unique...
|
||||
|
||||
GenericMakeStep *makeStep = new GenericMakeStep(bc);
|
||||
bc->insertBuildStep(0, makeStep);
|
||||
@@ -143,14 +172,33 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(const QString &id)
|
||||
return bc;
|
||||
}
|
||||
|
||||
BuildConfiguration *GenericBuildConfigurationFactory::clone(BuildConfiguration *source) const
|
||||
bool GenericBuildConfigurationFactory::canClone(ProjectExplorer::Project *parent, ProjectExplorer::BuildConfiguration *source) const
|
||||
{
|
||||
GenericBuildConfiguration *bc = new GenericBuildConfiguration(static_cast<GenericBuildConfiguration *>(source));
|
||||
return bc;
|
||||
return canCreate(parent, source->id());
|
||||
}
|
||||
|
||||
BuildConfiguration *GenericBuildConfigurationFactory::restore(const QVariantMap &map) const
|
||||
BuildConfiguration *GenericBuildConfigurationFactory::clone(ProjectExplorer::Project *parent, BuildConfiguration *source)
|
||||
{
|
||||
GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project, map);
|
||||
return bc;
|
||||
if (!canClone(parent, source))
|
||||
return 0;
|
||||
GenericProject *project(static_cast<GenericProject *>(parent));
|
||||
return new GenericBuildConfiguration(project, qobject_cast<GenericBuildConfiguration *>(source));
|
||||
}
|
||||
|
||||
bool GenericBuildConfigurationFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const
|
||||
{
|
||||
QString id(ProjectExplorer::idFromMap(map));
|
||||
return canCreate(parent, id);
|
||||
}
|
||||
|
||||
BuildConfiguration *GenericBuildConfigurationFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map)
|
||||
{
|
||||
if (!canRestore(parent, map))
|
||||
return 0;
|
||||
GenericProject *project(static_cast<GenericProject *>(parent));
|
||||
GenericBuildConfiguration *bc(new GenericBuildConfiguration(project));
|
||||
if (bc->fromMap(map))
|
||||
return bc;
|
||||
delete bc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user