diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 376f3f198c23b623a55f7eae4dc7d18020af285a..8116243fea86d1cc1d74ba7f4540e4331f344974 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -35,15 +35,46 @@ using namespace CMakeProjectManager; using namespace Internal; CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeProject *pro) - : BuildConfiguration(pro), m_toolChain(0) + : BuildConfiguration(pro), + m_toolChain(0), + m_clearSystemEnvironment(false) { } -CMakeBuildConfiguration::CMakeBuildConfiguration(BuildConfiguration *source) - : BuildConfiguration(source), m_toolChain(0) +CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeProject *pro, const QMap<QString, QVariant> &map) + : BuildConfiguration(pro, map), + m_toolChain(0) { + QMap<QString, QVariant>::const_iterator it = map.constFind("clearSystemEnvironment"); + m_clearSystemEnvironment = (it != map.constEnd() && it.value().toBool()); + m_userEnvironmentChanges = + ProjectExplorer::EnvironmentItem::fromStringList( + map.value("userEnvironmentChanges").toStringList()); + m_msvcVersion = map.value("msvcVersion").toString(); + m_buildDirectory = map.value("buildDirectory").toString(); + +} + +CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeBuildConfiguration *source) + : BuildConfiguration(source), + m_toolChain(0), + m_clearSystemEnvironment(source->m_clearSystemEnvironment), + m_userEnvironmentChanges(source->m_userEnvironmentChanges), + m_buildDirectory(source->m_buildDirectory), + m_msvcVersion(source->m_msvcVersion) +{ + +} + +void CMakeBuildConfiguration::toMap(QMap<QString, QVariant> &map) const +{ + map.insert("userEnvironmentChanges", + ProjectExplorer::EnvironmentItem::toStringList(m_userEnvironmentChanges)); + map.insert("msvcVersion", m_msvcVersion); + map.insert("buildDirectory", m_buildDirectory); + BuildConfiguration::toMap(map); } CMakeBuildConfiguration::~CMakeBuildConfiguration() @@ -73,36 +104,33 @@ ProjectExplorer::Environment CMakeBuildConfiguration::environment() const void CMakeBuildConfiguration::setUseSystemEnvironment(bool b) { - if (b == useSystemEnvironment()) + if (b == m_clearSystemEnvironment) return; - setValue("clearSystemEnvironment", !b); + m_clearSystemEnvironment = !b; emit environmentChanged(); } bool CMakeBuildConfiguration::useSystemEnvironment() const { - bool b = !(value("clearSystemEnvironment").isValid() && - value("clearSystemEnvironment").toBool()); - return b; + return !m_clearSystemEnvironment; } QList<ProjectExplorer::EnvironmentItem> CMakeBuildConfiguration::userEnvironmentChanges() const { - return ProjectExplorer::EnvironmentItem::fromStringList(value("userEnvironmentChanges").toStringList()); + return m_userEnvironmentChanges; } void CMakeBuildConfiguration::setUserEnvironmentChanges(const QList<ProjectExplorer::EnvironmentItem> &diff) { - QStringList list = ProjectExplorer::EnvironmentItem::toStringList(diff); - if (list == value("userEnvironmentChanges")) + if (m_userEnvironmentChanges == diff) return; - setValue("userEnvironmentChanges", list); + m_userEnvironmentChanges = diff; emit environmentChanged(); } QString CMakeBuildConfiguration::buildDirectory() const { - QString buildDirectory = value("buildDirectory").toString(); + QString buildDirectory = m_buildDirectory; if (buildDirectory.isEmpty()) buildDirectory = cmakeProject()->sourceDirectory() + "/qtcreator-build"; return buildDirectory; @@ -146,7 +174,7 @@ void CMakeBuildConfiguration::updateToolChain() const newToolChain = ProjectExplorer::ToolChain::createGccToolChain("gcc"); #endif } else { // msvc - newToolChain = ProjectExplorer::ToolChain::createMSVCToolChain(value("msvcVersion").toString(), false); + newToolChain = ProjectExplorer::ToolChain::createMSVCToolChain(m_msvcVersion, false); } if (ProjectExplorer::ToolChain::equals(newToolChain, m_toolChain)) { @@ -160,22 +188,22 @@ void CMakeBuildConfiguration::updateToolChain() const void CMakeBuildConfiguration::setBuildDirectory(const QString &buildDirectory) { - if (value("buildDirectory") == buildDirectory) + if (m_buildDirectory == buildDirectory) return; - setValue("buildDirectory", buildDirectory); + m_buildDirectory = buildDirectory; emit buildDirectoryChanged(); } QString CMakeBuildConfiguration::msvcVersion() const { - return value("msvcVersion").toString(); + return m_msvcVersion; } void CMakeBuildConfiguration::setMsvcVersion(const QString &msvcVersion) { - if (value("msvcVersion").toString() == msvcVersion) + if (m_msvcVersion == msvcVersion) return; - setValue("msvcVersion", msvcVersion); + m_msvcVersion = msvcVersion; updateToolChain(); emit msvcVersionChanged(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index ce5c88ef6ba7d69f9ef50bb983ee06338b51f864..24064ed34751933c7e15da89b2338c32feba268f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -43,7 +43,8 @@ class CMakeBuildConfiguration : public ProjectExplorer::BuildConfiguration Q_OBJECT public: CMakeBuildConfiguration(CMakeProject *pro); - CMakeBuildConfiguration(BuildConfiguration *source); + CMakeBuildConfiguration(CMakeProject *pro, const QMap<QString, QVariant> &map); + CMakeBuildConfiguration(CMakeBuildConfiguration *source); ~CMakeBuildConfiguration(); CMakeProject *cmakeProject() const; @@ -67,12 +68,18 @@ public: QString msvcVersion() const; void setMsvcVersion(const QString &msvcVersion); + void toMap(QMap<QString, QVariant> &map) const; + signals: void msvcVersionChanged(); private: void updateToolChain() const; mutable ProjectExplorer::ToolChain *m_toolChain; + bool m_clearSystemEnvironment; + QList<ProjectExplorer::EnvironmentItem> m_userEnvironmentChanges; + QString m_buildDirectory; + QString m_msvcVersion; }; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 888f731a4d206d39c78394cd9ed423020adee2df..b4ec10e62a0b730c7c2340c76f8cd3bffcc1aedb 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -141,9 +141,9 @@ BuildConfiguration *CMakeBuildConfigurationFactory::clone(ProjectExplorer::Build return bc; } -BuildConfiguration *CMakeBuildConfigurationFactory::restore() const +BuildConfiguration *CMakeBuildConfigurationFactory::restore(const QMap<QString, QVariant> &map) const { - CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(m_project); + CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(m_project, map); return bc; } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index a98bff69568a38f25eaafa8eb9dbce6353ba612a..6fbf50ce061cea8ee518989fa7e7da69bc13c532 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -76,7 +76,7 @@ public: ProjectExplorer::BuildConfiguration *create(const QString &type) const; ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::BuildConfiguration *source) const; - ProjectExplorer::BuildConfiguration *restore() const; + ProjectExplorer::BuildConfiguration *restore(const QMap<QString, QVariant> &map) const; private: CMakeProject *m_project; diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 4fbf07a01db9ad57b48fd91c12418596678eb0b6..16dee5c4170fcbfbcbdb3d71807b6d01bd319dd9 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -40,12 +40,24 @@ GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro) } +GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro, const QMap<QString, QVariant> &map) + : BuildConfiguration(pro, map) +{ + m_buildDirectory = map.value("buildDirectory").toString(); +} + GenericBuildConfiguration::GenericBuildConfiguration(GenericBuildConfiguration *source) - : BuildConfiguration(source) + : BuildConfiguration(source), + m_buildDirectory(source->m_buildDirectory) { } +void GenericBuildConfiguration::toMap(QMap<QString, QVariant> &map) const +{ + map.insert("buildDirectory", m_buildDirectory); +} + ProjectExplorer::Environment GenericBuildConfiguration::environment() const { return ProjectExplorer::Environment::systemEnvironment(); @@ -53,22 +65,20 @@ ProjectExplorer::Environment GenericBuildConfiguration::environment() const QString GenericBuildConfiguration::buildDirectory() const { - QString buildDirectory = value("buildDirectory").toString(); - + QString buildDirectory = m_buildDirectory; if (buildDirectory.isEmpty()) { QFileInfo fileInfo(project()->file()->fileName()); buildDirectory = fileInfo.absolutePath(); } - return buildDirectory; } void GenericBuildConfiguration::setBuildDirectory(const QString &buildDirectory) { - if (value("buildDirectory").toString() == buildDirectory) + if (m_buildDirectory == buildDirectory) return; - setValue("buildDirectory", buildDirectory); + m_buildDirectory = buildDirectory; emit buildDirectoryChanged(); } diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h index d360eea9293309026ff62e7378fbda59fe0e4a1c..7cd9058b84ea205f0ca2ec379a03cb8969a3dcc6 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h @@ -43,6 +43,7 @@ class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration Q_OBJECT public: GenericBuildConfiguration(GenericProject *pro); + GenericBuildConfiguration(GenericProject *pro, const QMap<QString, QVariant> &map); GenericBuildConfiguration(GenericBuildConfiguration *source); GenericProject *genericProject() const; @@ -50,6 +51,9 @@ public: virtual ProjectExplorer::Environment environment() const; virtual QString buildDirectory() const; void setBuildDirectory(const QString &buildDirectory); + void toMap(QMap<QString, QVariant> &map) const; +private: + QString m_buildDirectory; }; } // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 2445acd0a133c8f2fd9b79f132399f7cfe8a3e93..ec9723fccc49a0be9d2cd712d14259230c73a260 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -162,9 +162,9 @@ BuildConfiguration *GenericBuildConfigurationFactory::clone(BuildConfiguration * return bc; } -BuildConfiguration *GenericBuildConfigurationFactory::restore() const +BuildConfiguration *GenericBuildConfigurationFactory::restore(const QMap<QString, QVariant> &map) const { - GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project); + GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project, map); return bc; } diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index eb828b683c672e744725008469d1820a64334ea4..bbbbc059fe8953ced4996e68e4f54affaf1f1a18 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -69,7 +69,7 @@ public: ProjectExplorer::BuildConfiguration *create(const QString &type) const; ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::BuildConfiguration *source) const; - ProjectExplorer::BuildConfiguration *restore() const; + ProjectExplorer::BuildConfiguration *restore(const QMap<QString, QVariant> &map) const; private: GenericProject *m_project; diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index c2b2cb7d94c9be42c03b33a128bd4ee857337189..4fdd0be89b0ffda7d9ba8673777c85c881b98fca 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -50,8 +50,15 @@ BuildConfiguration::BuildConfiguration(Project *pro) } +BuildConfiguration::BuildConfiguration(Project *pro, const QMap<QString, QVariant> &map) + : m_project(pro) +{ + m_displayName = map.value("ProjectExplorer.BuildConfiguration.DisplayName").toString(); +} + BuildConfiguration::BuildConfiguration(BuildConfiguration *source) - : m_values(source->m_values), m_project(source->m_project) + : m_displayName(source->m_displayName), + m_project(source->m_project) { foreach(BuildStep *originalbs, source->buildSteps()) { IBuildStepFactory *factory = findFactory(originalbs->name()); @@ -73,49 +80,20 @@ BuildConfiguration::~BuildConfiguration() QString BuildConfiguration::displayName() const { - QVariant v = value("ProjectExplorer.BuildConfiguration.DisplayName"); - QTC_ASSERT(v.isValid(), return QString()); - return v.toString(); + return m_displayName; } void BuildConfiguration::setDisplayName(const QString &name) { - if (value("ProjectExplorer.BuildConfiguration.DisplayName").toString() == name) + if (m_displayName == name) return; - setValue("ProjectExplorer.BuildConfiguration.DisplayName", name); + m_displayName = name; emit displayNameChanged(); } -QVariant BuildConfiguration::value(const QString & key) const -{ - QHash<QString, QVariant>::const_iterator it = m_values.find(key); - if (it != m_values.constEnd()) - return *it; - else - return QVariant(); -} - -void BuildConfiguration::setValue(const QString & key, QVariant value) -{ - m_values[key] = value; -} - -void BuildConfiguration::setValuesFromMap(QMap<QString, QVariant> map) -{ - QMap<QString, QVariant>::const_iterator it, end; - end = map.constEnd(); - for (it = map.constBegin(); it != end; ++it) - setValue(it.key(), it.value()); -} - -QMap<QString, QVariant> BuildConfiguration::toMap() const +void BuildConfiguration::toMap(QMap<QString, QVariant> &map) const { - QMap<QString, QVariant> result; - QHash<QString, QVariant>::const_iterator it, end; - end = m_values.constEnd(); - for (it = m_values.constBegin(); it != end; ++it) - result.insert(it.key(), it.value()); - return result; + map.insert("ProjectExplorer.BuildConfiguration.DisplayName", m_displayName); } QList<BuildStep *> BuildConfiguration::buildSteps() const diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index b4651a807d49750b39eede6e65a2249e0dfe0fed..543a8580dcbe2ca690f801f88502908c1e0835d5 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -57,8 +57,7 @@ public: QString displayName() const; void setDisplayName(const QString &name); - QMap<QString, QVariant> toMap() const; - void setValuesFromMap(QMap<QString, QVariant> map); + virtual void toMap(QMap<QString, QVariant> &map) const; QList<BuildStep *> buildSteps() const; void insertBuildStep(int position, BuildStep *step); @@ -82,16 +81,13 @@ signals: protected: BuildConfiguration(Project *project); + BuildConfiguration(Project *project, const QMap<QString, QVariant> &map); BuildConfiguration(BuildConfiguration *source); - // TODO remove those - QVariant value(const QString &key) const; - void setValue(const QString &key, QVariant value); - private: QList<BuildStep *> m_buildSteps; QList<BuildStep *> m_cleanSteps; - QHash<QString, QVariant> m_values; + QString m_displayName; Project *m_project; }; @@ -117,7 +113,7 @@ public: virtual BuildConfiguration *clone(BuildConfiguration *source) const = 0; // restores a BuildConfiguration with the name and adds it to the project - virtual BuildConfiguration *restore() const = 0; + virtual BuildConfiguration *restore(const QMap<QString, QVariant> &values) const = 0; signals: void availableCreationTypesChanged(); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index d5b746be869ada84f40284d3a864ff35591e764f..33a8582a5b67fafa9413a1e99b1a9c3567029dd0 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -147,7 +147,8 @@ void Project::saveSettingsImpl(PersistentSettingsWriter &writer) //save buildsettings QStringList buildConfigurationNames; for(int i=0; i < bcs.size(); ++i) { - QMap<QString, QVariant> temp = bcs.at(i)->toMap(); + QMap<QString, QVariant> temp; + bcs.at(i)->toMap(temp); writer.saveValue("buildConfiguration-" + QString::number(i), temp); buildConfigurationNames << QString::number(i); } @@ -211,12 +212,10 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) const QStringList buildConfigurationNames = reader.restoreValue("buildconfigurations").toStringList(); foreach (const QString &buildConfigurationName, buildConfigurationNames) { - BuildConfiguration *bc = buildConfigurationFactory()->restore(); - QMap<QString, QVariant> temp = reader.restoreValue("buildConfiguration-" + buildConfigurationName).toMap(); - bc->setValuesFromMap(temp); + BuildConfiguration *bc = buildConfigurationFactory()->restore(temp); // Restore build steps QVariant buildStepsValueVariant = reader.restoreValue("buildconfiguration-" + buildConfigurationName + "-buildsteps"); if(buildStepsValueVariant.isValid()) { diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 4a57267f07fbc96adaca39a1df25876eed0d991e..a6e92fe3417273d1b182074cec797708459a11fc 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -43,13 +43,42 @@ namespace { } Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4Project *pro) - : BuildConfiguration(pro) + : BuildConfiguration(pro), + m_clearSystemEnvironment(false), + m_shadowBuild(false), + m_qtVersion(0), + m_toolChainType(-1), // toolChainType() makes sure to return the default toolchainType + m_qmakeBuildConfiguration(0) { init(); } +Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4Project *pro, const QMap<QString, QVariant> &map) + : BuildConfiguration(pro, map) +{ + init(); + QMap<QString, QVariant>::const_iterator it; + it = map.constFind("clearSystemEnvironment"); + m_clearSystemEnvironment = (it != map.constEnd() && it.value().toBool()); + + m_userEnvironmentChanges = + EnvironmentItem::fromStringList(map.value("userEnvironmentChanges").toStringList()); + m_shadowBuild = map.value("useShadowBuild").toBool(); + m_buildDirectory = map.value("buildDirectory").toString(); + m_qtVersion = map.value(KEY_QT_VERSION_ID).toInt(); + m_toolChainType = map.value("ToolChain").toInt(); + m_qmakeBuildConfiguration = QtVersion::QmakeBuildConfigs(map.value("buildConfiguration").toInt()); +} + Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4BuildConfiguration *source) - : BuildConfiguration(source) + : BuildConfiguration(source), + m_clearSystemEnvironment(source->m_clearSystemEnvironment), + m_userEnvironmentChanges(source->m_userEnvironmentChanges), + m_shadowBuild(source->m_shadowBuild), + m_buildDirectory(source->m_buildDirectory), + m_qtVersion(source->m_qtVersion), + m_toolChainType(source->m_toolChainType), + m_qmakeBuildConfiguration(source->m_qmakeBuildConfiguration) { init(); } @@ -59,6 +88,18 @@ Qt4BuildConfiguration::~Qt4BuildConfiguration() } +void Qt4BuildConfiguration::toMap(QMap<QString, QVariant> &map) const +{ + map.insert("clearSystemEnvironment", m_clearSystemEnvironment); + map.insert("userEnvironmentChanges", EnvironmentItem::toStringList(m_userEnvironmentChanges)); + map.insert("useShadowBuild", m_shadowBuild); + map.insert("buildDirectory", m_buildDirectory); + map.insert(KEY_QT_VERSION_ID, m_qtVersion); + map.insert("ToolChain", m_toolChainType); + map.insert("buildConfiguration", int(m_qmakeBuildConfiguration)); + BuildConfiguration::toMap(map); +} + void Qt4BuildConfiguration::init() { QtVersionManager *vm = QtVersionManager::instance(); @@ -94,28 +135,25 @@ void Qt4BuildConfiguration::setUseSystemEnvironment(bool b) { if (useSystemEnvironment() == b) return; - setValue("clearSystemEnvironment", !b); + m_clearSystemEnvironment = !b; emit environmentChanged(); } bool Qt4BuildConfiguration::useSystemEnvironment() const { - bool b = !(value("clearSystemEnvironment").isValid() - && value("clearSystemEnvironment").toBool()); - return b; + return !m_clearSystemEnvironment; } QList<ProjectExplorer::EnvironmentItem> Qt4BuildConfiguration::userEnvironmentChanges() const { - return EnvironmentItem::fromStringList(value("userEnvironmentChanges").toStringList()); + return m_userEnvironmentChanges; } void Qt4BuildConfiguration::setUserEnvironmentChanges(const QList<ProjectExplorer::EnvironmentItem> &diff) { - QStringList list = EnvironmentItem::toStringList(diff); - if (list == value("userEnvironmentChanges").toStringList()) + if (m_userEnvironmentChanges == diff) return; - setValue("userEnvironmentChanges", list); + m_userEnvironmentChanges = diff; emit environmentChanged(); } @@ -123,8 +161,8 @@ void Qt4BuildConfiguration::setUserEnvironmentChanges(const QList<ProjectExplore QString Qt4BuildConfiguration::buildDirectory() const { QString workingDirectory; - if (value("useShadowBuild").toBool()) - workingDirectory = value("buildDirectory").toString(); + if (m_shadowBuild) + workingDirectory = m_buildDirectory; if (workingDirectory.isEmpty()) workingDirectory = QFileInfo(project()->file()->fileName()).absolutePath(); return workingDirectory; @@ -136,23 +174,22 @@ QString Qt4BuildConfiguration::buildDirectory() const /// still be a insource build bool Qt4BuildConfiguration::shadowBuild() const { - return value("useShadowBuild").toBool(); + return m_shadowBuild; } /// returns the shadow build directory if set /// \note buildDirectory() is probably the function you want to call QString Qt4BuildConfiguration::shadowBuildDirectory() const { - return value("buildDirectory").toString(); + return m_buildDirectory; } void Qt4BuildConfiguration::setShadowBuildAndDirectory(bool shadowBuild, const QString &buildDirectory) { - if (value("useShadowBuild").toBool() == shadowBuild - && value("buildDirectory").toString() == buildDirectory) + if (m_shadowBuild == shadowBuild && m_buildDirectory == buildDirectory) return; - setValue("useShadowBuild", shadowBuild); - setValue("buildDirectory", buildDirectory); + m_shadowBuild = shadowBuild; + m_buildDirectory = buildDirectory; emit buildDirectoryChanged(); emit targetInformationChanged(); } @@ -216,22 +253,12 @@ int Qt4BuildConfiguration::qtVersionId() const QtVersionManager *vm = QtVersionManager::instance(); if (debug) qDebug()<<"Looking for qtVersion ID of "<<displayName(); - int id = 0; - QVariant vid = value(KEY_QT_VERSION_ID); - if (vid.isValid()) { - id = vid.toInt(); - if (vm->version(id)->isValid()) { - return id; - } else { - const_cast<Qt4BuildConfiguration *>(this)->setValue(KEY_QT_VERSION_ID, 0); - return 0; - } + if (vm->version(m_qtVersion)->isValid()) { + return m_qtVersion; + } else { + m_qtVersion = 0; + return 0; } - if (debug) - qDebug()<<" using qtversion with id ="<<id; - // Nothing found, reset to default - const_cast<Qt4BuildConfiguration *>(this)->setValue(KEY_QT_VERSION_ID, id); - return id; } void Qt4BuildConfiguration::setQtVersion(int id) @@ -239,7 +266,7 @@ void Qt4BuildConfiguration::setQtVersion(int id) if (qtVersionId() == id) return; - setValue(KEY_QT_VERSION_ID, id); + m_qtVersion = id; emit qtVersionChanged(); emit targetInformationChanged(); emit environmentChanged(); @@ -247,9 +274,9 @@ void Qt4BuildConfiguration::setQtVersion(int id) void Qt4BuildConfiguration::setToolChainType(ProjectExplorer::ToolChain::ToolChainType type) { - if (value("ToolChain").toInt() == type) + if (m_toolChainType == type) return; - setValue("ToolChain", (int)type); + m_toolChainType = type; emit toolChainTypeChanged(); emit targetInformationChanged(); emit environmentChanged(); @@ -257,7 +284,7 @@ void Qt4BuildConfiguration::setToolChainType(ProjectExplorer::ToolChain::ToolCha ProjectExplorer::ToolChain::ToolChainType Qt4BuildConfiguration::toolChainType() const { - ToolChain::ToolChainType originalType = ToolChain::ToolChainType(value("ToolChain").toInt()); + ToolChain::ToolChainType originalType = ToolChain::ToolChainType(m_toolChainType); ToolChain::ToolChainType type = originalType; const QtVersion *version = qtVersion(); if (!version->possibleToolChainTypes().contains(type)) { @@ -271,14 +298,14 @@ ProjectExplorer::ToolChain::ToolChainType Qt4BuildConfiguration::toolChainType() QtVersion::QmakeBuildConfigs Qt4BuildConfiguration::qmakeBuildConfiguration() const { - return QtVersion::QmakeBuildConfigs(value("buildConfiguration").toInt()); + return m_qmakeBuildConfiguration; } void Qt4BuildConfiguration::setQMakeBuildConfiguration(QtVersion::QmakeBuildConfigs config) { - if (value("buildConfiguration").toInt() == int(config)) + if (m_qmakeBuildConfiguration == config) return; - setValue("buildConfiguration", int(config)); + m_qmakeBuildConfiguration = config; emit qmakeBuildConfigurationChanged(); emit targetInformationChanged(); } @@ -286,7 +313,7 @@ void Qt4BuildConfiguration::setQMakeBuildConfiguration(QtVersion::QmakeBuildConf void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUserConfigs, QStringList *removedUserConfigs) const { QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qtVersion()->defaultBuildConfig(); - QtVersion::QmakeBuildConfigs userBuildConfiguration = qmakeBuildConfiguration(); + QtVersion::QmakeBuildConfigs userBuildConfiguration = m_qmakeBuildConfiguration; if (removedUserConfigs) { if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(userBuildConfiguration & QtVersion::BuildAll)) (*removedUserConfigs) << "debug_and_release"; diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index 9ae35f8614e2f740984e328a7dd015932c20aa1e..189b8a5558496b73cc00865a2d13ff366c0762ca 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -48,7 +48,10 @@ class Qt4BuildConfiguration : public ProjectExplorer::BuildConfiguration { Q_OBJECT public: + // new buildconfiguration Qt4BuildConfiguration(Qt4Project *pro); + // restore ctor + Qt4BuildConfiguration(Qt4Project *pro, const QMap<QString, QVariant> &values); // copy ctor Qt4BuildConfiguration(Qt4BuildConfiguration *source); ~Qt4BuildConfiguration(); @@ -104,6 +107,7 @@ public: static QStringList removeSpecFromArgumentList(const QStringList &old); static QString extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version); + void toMap(QMap<QString, QVariant> &map) const; signals: /// emitted if the qt version changes (either directly, or because the default qt version changed @@ -124,6 +128,13 @@ private slots: void qtVersionsChanged(const QList<int> &changedVersions); private: void init(); + bool m_clearSystemEnvironment; + QList<ProjectExplorer::EnvironmentItem> m_userEnvironmentChanges; + bool m_shadowBuild; + QString m_buildDirectory; + mutable int m_qtVersion; // Changed if the qtversion is invalid + int m_toolChainType; + QtVersion::QmakeBuildConfigs m_qmakeBuildConfiguration; }; } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index d0f9941246ceaabf0e0ff2bff9b26dad9a272f11..4b1b288014f96d453b13e28ba7c8fff650141bfa 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -300,9 +300,9 @@ BuildConfiguration *Qt4BuildConfigurationFactory::clone(BuildConfiguration *sour return newbc; } -BuildConfiguration *Qt4BuildConfigurationFactory::restore() const +BuildConfiguration *Qt4BuildConfigurationFactory::restore(const QMap<QString, QVariant> &values) const { - Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(m_project); + Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(m_project, values); return bc; } @@ -480,7 +480,6 @@ Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString displayName, // Add the buildconfiguration Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(this); bc->setDisplayName(displayName); - addBuildConfiguration(bc); QMakeStep *qmakeStep = new QMakeStep(bc); bc->insertBuildStep(0, qmakeStep); @@ -506,6 +505,7 @@ Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString displayName, bc->setQtVersion(0); else bc->setQtVersion(qtversion->uniqueId()); + addBuildConfiguration(bc); return bc; } diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index fec4d5670a1309f3d98c729853b9b3c4041ef0ec..5ba7e030504523e137730cf6ef5fd14c4eae0bec 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -130,7 +130,7 @@ public: ProjectExplorer::BuildConfiguration *create(const QString &type) const; ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::BuildConfiguration *source) const; - ProjectExplorer::BuildConfiguration *restore() const; + ProjectExplorer::BuildConfiguration *restore(const QMap<QString, QVariant> &values) const; private slots: void update();