diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 47e67904c5927d04462b86b07c75967c28a8cc71..888f731a4d206d39c78394cd9ed423020adee2df 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -573,10 +573,9 @@ bool CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(this); bc->setDisplayName("all"); - addBuildConfiguration(bc); - bc->setValue("msvcVersion", copw.msvcVersion()); + bc->setMsvcVersion(copw.msvcVersion()); if (!copw.buildDirectory().isEmpty()) - bc->setValue("buildDirectory", copw.buildDirectory()); + bc->setBuildDirectory(copw.buildDirectory()); // Now create a standard build configuration makeStep = new MakeStep(bc); @@ -586,12 +585,14 @@ bool CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader MakeStep *cleanMakeStep = new MakeStep(bc); bc->insertCleanStep(0, cleanMakeStep); cleanMakeStep->setClean(true); + + addBuildConfiguration(bc); setActiveBuildConfiguration(bc); } else { // We have a user file, but we could still be missing the cbp file // or simply run createXml with the saved settings QFileInfo sourceFileInfo(m_fileName); - BuildConfiguration *activeBC = activeBuildConfiguration(); + CMakeBuildConfiguration *activeBC = activeCMakeBuildConfiguration(); QString cbpFile = CMakeManager::findCbpFile(QDir(activeBC->buildDirectory())); QFileInfo cbpFileFi(cbpFile); @@ -609,7 +610,7 @@ bool CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader activeBC->environment()); if (copw.exec() != QDialog::Accepted) return false; - activeBC->setValue("msvcVersion", copw.msvcVersion()); + activeBC->setMsvcVersion(copw.msvcVersion()); } } diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 3c1b38ec521cce67930d92fe93c3c06db86c69cc..4fbf07a01db9ad57b48fd91c12418596678eb0b6 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -64,6 +64,14 @@ QString GenericBuildConfiguration::buildDirectory() const return buildDirectory; } +void GenericBuildConfiguration::setBuildDirectory(const QString &buildDirectory) +{ + if (value("buildDirectory").toString() == buildDirectory) + return; + setValue("buildDirectory", buildDirectory); + emit buildDirectoryChanged(); +} + GenericProject *GenericBuildConfiguration::genericProject() const { return static_cast<GenericProject *>(project()); diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h index b42d7ae062b8e457f2915f853c8ea24bb50f0aad..d360eea9293309026ff62e7378fbda59fe0e4a1c 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h @@ -49,6 +49,7 @@ public: virtual ProjectExplorer::Environment environment() const; virtual QString buildDirectory() const; + void setBuildDirectory(const QString &buildDirectory); }; } // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 242e04c8c893a575bf36ca39961c74857e780cc7..2445acd0a133c8f2fd9b79f132399f7cfe8a3e93 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -525,7 +525,7 @@ bool GenericProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsRead const QLatin1String buildDirectory("buildDirectory"); const QFileInfo fileInfo(file()->fileName()); - bc->setValue(buildDirectory, fileInfo.absolutePath()); + bc->setBuildDirectory(fileInfo.absolutePath()); setActiveBuildConfiguration(bc); } @@ -614,7 +614,7 @@ void GenericBuildSettingsWidget::init(BuildConfiguration *bc) void GenericBuildSettingsWidget::buildDirectoryChanged() { - m_buildConfiguration->setValue("buildDirectory", m_pathChooser->path()); + m_buildConfiguration->setBuildDirectory(m_pathChooser->path()); } void GenericBuildSettingsWidget::toolChainSelected(int index) diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 79d7cc6522342f25074836d76fcf335e994e18ef..b4651a807d49750b39eede6e65a2249e0dfe0fed 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -57,10 +57,6 @@ public: QString displayName() const; void setDisplayName(const QString &name); - // TODO remove those - QVariant value(const QString &key) const; - void setValue(const QString &key, QVariant value); - QMap<QString, QVariant> toMap() const; void setValuesFromMap(QMap<QString, QVariant> map); @@ -88,6 +84,10 @@ protected: BuildConfiguration(Project *project); 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; diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index c3cbc89f0b98eb5e8a69be0e66406742a5bc0e5b..aa9c85bbfa84aaef814f4d72b252e0bf19708976 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -119,6 +119,7 @@ void Qt4BuildConfiguration::setUserEnvironmentChanges(const QList<ProjectExplore emit environmentChanged(); } +/// returns the build directory QString Qt4BuildConfiguration::buildDirectory() const { QString workingDirectory; @@ -129,8 +130,27 @@ QString Qt4BuildConfiguration::buildDirectory() const return workingDirectory; } +/// returns whether this is a shadow build configuration or not +/// note, even if shadowBuild() returns true, it might be using the +/// source directory as the shadow build directorys, thus not +/// still be a insource build +bool Qt4BuildConfiguration::shadowBuild() const +{ + return value("useShadowBuild").toBool(); +} + +/// 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(); +} + void Qt4BuildConfiguration::setShadowBuildAndDirectory(bool shadowBuild, const QString &buildDirectory) { + if (value("useShadowBuild").toBool() == shadowBuild + && value("buildDirectory").toString() == buildDirectory) + return; setValue("useShadowBuild", shadowBuild); setValue("buildDirectory", buildDirectory); emit buildDirectoryChanged(); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index 262e1cf2198eef702c546b53dd5d8df8278c9894..9ae35f8614e2f740984e328a7dd015932c20aa1e 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -63,6 +63,8 @@ public: void setUseSystemEnvironment(bool b); virtual QString buildDirectory() const; + bool shadowBuild() const; + QString shadowBuildDirectory() const; void setShadowBuildAndDirectory(bool shadowBuild, const QString &buildDirectory); //returns the qtVersion, if the project is set to use the default qt version, then diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index ac42bec16c75e0045eeb78b9aa7ba0c8f7338005..a6f4393a0b7701166e9552cc671b339a34e9296f 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -166,7 +166,7 @@ void Qt4ProjectConfigWidget::init(ProjectExplorer::BuildConfiguration *bc) qtVersionsChanged(); - bool shadowBuild = m_buildConfiguration->value("useShadowBuild").toBool(); + bool shadowBuild = m_buildConfiguration->shadowBuild(); m_ui->shadowBuildCheckBox->setChecked(shadowBuild); m_ui->shadowBuildDirEdit->setEnabled(shadowBuild); m_browseButton->setEnabled(shadowBuild); @@ -225,7 +225,7 @@ void Qt4ProjectConfigWidget::qtVersionsChanged() void Qt4ProjectConfigWidget::buildDirectoryChanged() { - m_ui->shadowBuildDirEdit->setPath(m_buildConfiguration->value("buildDirectory").toString()); + m_ui->shadowBuildDirEdit->setPath(m_buildConfiguration->shadowBuildDirectory()); updateDetails(); updateImportLabel(); } @@ -253,7 +253,7 @@ void Qt4ProjectConfigWidget::shadowBuildClicked(bool checked) void Qt4ProjectConfigWidget::shadowBuildEdited() { - if (m_buildConfiguration->value("buildDirectory").toString() == m_ui->shadowBuildDirEdit->path()) + if (m_buildConfiguration->shadowBuildDirectory() == m_ui->shadowBuildDirEdit->path()) return; m_ignoreChange = true; m_buildConfiguration->setShadowBuildAndDirectory(true, m_ui->shadowBuildDirEdit->path());