Changing string based api to BuildConfiguration based api.

Builds, but I'm pretty sure it doesn't *work* :)
This commit is contained in:
con
2009-09-24 16:02:02 +02:00
parent 30362e1050
commit acbd4513e3
30 changed files with 737 additions and 440 deletions

View File

@@ -66,9 +66,9 @@ void Project::insertBuildStep(int position, BuildStep *step)
{
m_buildSteps.insert(position, step);
// check that the step has all the configurations
foreach (const QString &name, buildConfigurations())
if (!step->getBuildConfiguration(name))
step->addBuildConfiguration(name);
foreach (const BuildConfiguration *bc, buildConfigurations())
if (!step->getBuildConfiguration(bc->name()))
step->addBuildConfiguration(bc->name());
}
void Project::removeBuildStep(int position)
@@ -87,9 +87,9 @@ void Project::insertCleanStep(int position, BuildStep *step)
{
m_cleanSteps.insert(position, step);
// check that the step has all the configurations
foreach (const QString &name, buildConfigurations())
if (!step->getBuildConfiguration(name))
step->addBuildConfiguration(name);
foreach (const BuildConfiguration *bc, buildConfigurations())
if (!step->getBuildConfiguration(bc->name()))
step->addBuildConfiguration(bc->name());
}
void Project::removeCleanStep(int position)
@@ -104,49 +104,75 @@ void Project::moveCleanStepUp(int position)
m_cleanSteps.insert(position - 1, bs);
}
void Project::addBuildConfiguration(const QString &name)
void Project::addBuildConfiguration(BuildConfiguration *configuration)
{
if (buildConfigurations().contains(name) )
return;
QStringList buildConfigurationNames;
foreach (const BuildConfiguration *bc, buildConfigurations())
buildConfigurationNames << bc->name();
m_buildConfigurationValues.push_back(new BuildConfiguration(name));
// Check that the internal name is not taken and use a different one otherwise
QString configurationName = configuration->name();
if (buildConfigurationNames.contains(configurationName)) {
int i = 2;
while (buildConfigurationNames.contains(configurationName + QString::number(i)))
++i;
configurationName += QString::number(i);
}
configuration->setName(configurationName);
// Check that we don't have a configuration with the same displayName
QString configurationDisplayName = configuration->displayName();
QStringList displayNames;
foreach (const BuildConfiguration *bc, m_buildConfigurationValues)
displayNames << bc->displayName();
if (displayNames.contains(configurationDisplayName)) {
int i = 2;
while (displayNames.contains(configurationDisplayName + QString::number(i)))
++i;
configurationDisplayName += QString::number(i);
}
configuration->setDisplayName(configurationDisplayName);
// add it
m_buildConfigurationValues.push_back(configuration);
// update build steps
for (int i = 0; i != m_buildSteps.size(); ++i)
m_buildSteps.at(i)->addBuildConfiguration(name);
m_buildSteps.at(i)->addBuildConfiguration(configuration->name());
for (int i = 0; i != m_cleanSteps.size(); ++i)
m_cleanSteps.at(i)->addBuildConfiguration(name);
emit addedBuildConfiguration(this, name);
m_cleanSteps.at(i)->addBuildConfiguration(configuration->name());
emit addedBuildConfiguration(this, configuration->name());
}
void Project::removeBuildConfiguration(const QString &name)
void Project::removeBuildConfiguration(BuildConfiguration *configuration)
{
if (!buildConfigurations().contains(name))
//todo: this might be error prone
if (!buildConfigurations().contains(configuration))
return;
for (int i = 0; i != m_buildConfigurationValues.size(); ++i)
if (m_buildConfigurationValues.at(i)->name() == name) {
if (m_buildConfigurationValues.at(i)->name() == configuration->name()) {
delete m_buildConfigurationValues.at(i);
m_buildConfigurationValues.removeAt(i);
break;
}
for (int i = 0; i != m_buildSteps.size(); ++i)
m_buildSteps.at(i)->removeBuildConfiguration(name);
m_buildSteps.at(i)->removeBuildConfiguration(configuration->name());
for (int i = 0; i != m_cleanSteps.size(); ++i)
m_cleanSteps.at(i)->removeBuildConfiguration(name);
m_cleanSteps.at(i)->removeBuildConfiguration(configuration->name());
emit removedBuildConfiguration(this, name);
emit removedBuildConfiguration(this, configuration->name());
}
void Project::copyBuildConfiguration(const QString &source, const QString &dest)
{
if (!buildConfigurations().contains(source))
BuildConfiguration *sourceConfiguration = buildConfiguration(source);
if (!sourceConfiguration)
return;
for (int i = 0; i != m_buildConfigurationValues.size(); ++i)
if (m_buildConfigurationValues.at(i)->name() == source)
m_buildConfigurationValues.push_back(new BuildConfiguration(dest, m_buildConfigurationValues.at(i)));
m_buildConfigurationValues.push_back(new BuildConfiguration(dest, sourceConfiguration));
for (int i = 0; i != m_buildSteps.size(); ++i)
m_buildSteps.at(i)->copyBuildConfiguration(source, dest);
@@ -156,12 +182,9 @@ void Project::copyBuildConfiguration(const QString &source, const QString &dest)
emit addedBuildConfiguration(this, dest);
}
QStringList Project::buildConfigurations() const
QList<BuildConfiguration *> Project::buildConfigurations() const
{
QStringList result;
foreach (BuildConfiguration *bc, m_buildConfigurationValues)
result << bc->name();
return result;
return m_buildConfigurationValues;
}
bool Project::hasBuildSettings() const
@@ -194,7 +217,7 @@ bool Project::restoreSettings()
return false;
if (m_activeBuildConfiguration.isEmpty() && !m_buildConfigurations.isEmpty())
setActiveBuildConfiguration(m_buildConfigurations.at(0));
setActiveBuildConfiguration(m_buildConfigurationValues.at(0));
if (!m_activeRunConfiguration && !m_runConfigurations.isEmpty())
setActiveRunConfiguration(m_runConfigurations.at(0));
@@ -213,10 +236,11 @@ void Project::saveSettingsImpl(PersistentSettingsWriter &writer)
writer.saveValue("project", m_values);
//save buildsettings
foreach (const QString &buildConfigurationName, buildConfigurations()) {
QMap<QString, QVariant> temp =
buildConfiguration(buildConfigurationName)->toMap();
writer.saveValue("buildConfiguration-" + buildConfigurationName, temp);
QStringList buildConfigurationNames;
foreach (const BuildConfiguration *bc, buildConfigurations()) {
QMap<QString, QVariant> temp = bc->toMap();
writer.saveValue("buildConfiguration-" + bc->name(), temp);
buildConfigurationNames << bc->name();
}
QStringList buildStepNames;
@@ -228,7 +252,6 @@ void Project::saveSettingsImpl(PersistentSettingsWriter &writer)
foreach (BuildStep *cleanStep, cleanSteps())
cleanStepNames << cleanStep->name();
writer.saveValue("cleansteps", cleanStepNames);
QStringList buildConfigurationNames = buildConfigurations();
writer.saveValue("buildconfigurations", buildConfigurationNames );
//save buildstep configuration
@@ -294,10 +317,11 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader)
// restoring BuldConfigurations from settings
const QStringList buildConfigurationNames = reader.restoreValue("buildconfigurations").toStringList();
foreach (const QString &buildConfigurationName, buildConfigurationNames) {
addBuildConfiguration(buildConfigurationName);
BuildConfiguration *bc = new BuildConfiguration(buildConfigurationName);
addBuildConfiguration(bc);
QMap<QString, QVariant> temp =
reader.restoreValue("buildConfiguration-" + buildConfigurationName).toMap();
buildConfiguration(buildConfigurationName)->setValuesFromMap(temp);
bc->setValuesFromMap(temp);
}
const QList<IBuildStepFactory *> buildStepFactories =
@@ -434,20 +458,19 @@ QVariant Project::value(const QString &buildConfigurationName, const QString &na
return QVariant();
}
QString Project::activeBuildConfiguration() const
BuildConfiguration *Project::activeBuildConfiguration() const
{
return m_activeBuildConfiguration;
return buildConfiguration(m_activeBuildConfiguration); //TODO
}
void Project::setActiveBuildConfiguration(const QString &config)
void Project::setActiveBuildConfiguration(BuildConfiguration *configuration)
{
if (m_activeBuildConfiguration != config && buildConfigurations().contains(config)) {
m_activeBuildConfiguration = config;
if (m_activeBuildConfiguration != configuration->name() && m_buildConfigurationValues.contains(configuration)) {
m_activeBuildConfiguration = configuration->name();
emit activeBuildConfigurationChanged();
}
}
QList<QSharedPointer<RunConfiguration> > Project::runConfigurations() const
{
return m_runConfigurations;
@@ -468,7 +491,7 @@ void Project::removeRunConfiguration(QSharedPointer<RunConfiguration> runConfigu
if(!m_runConfigurations.contains(runConfiguration)) {
qWarning()<<"Not removing runConfiguration"<<runConfiguration->name()<<"becasue it doesn't exist";
return;
}
}
if (m_activeRunConfiguration == runConfiguration) {
if (m_runConfigurations.size() <= 1)