Correctly restore disabled shadow building setting

Task-Nr: QTCREATORBUG-4781
This commit is contained in:
dt_
2011-05-06 15:48:20 +02:00
parent aa2acec14c
commit 4a54ac4570
3 changed files with 30 additions and 32 deletions

View File

@@ -125,15 +125,15 @@ ProjectExplorer::Target *Qt4DesktopTargetFactory::restore(ProjectExplorer::Proj
Qt4TargetSetupWidget *Qt4DesktopTargetFactory::createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtVersionNumber &number, bool importEnabled, QList<BuildConfigurationInfo> importInfos) Qt4TargetSetupWidget *Qt4DesktopTargetFactory::createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtVersionNumber &number, bool importEnabled, QList<BuildConfigurationInfo> importInfos)
{ {
Qt4DefaultTargetSetupWidget *widget
= static_cast<Qt4DefaultTargetSetupWidget *>( QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number);
Qt4BaseTargetFactory::createTargetSetupWidget(id, proFilePath, if (infos.isEmpty())
number, importEnabled, return 0;
importInfos)); Qt4DefaultTargetSetupWidget *widget = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos,
if (widget) { number, importEnabled,
widget->setShadowBuildCheckBoxVisible(true); importInfos,
widget->setBuildConfiguraionComboBoxVisible(true); Qt4DefaultTargetSetupWidget::USER);
} widget->setBuildConfiguraionComboBoxVisible(true);
return widget; return widget;
} }

View File

@@ -83,8 +83,11 @@ Qt4TargetSetupWidget *Qt4BaseTargetFactory::createTargetSetupWidget(const QStrin
QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number); QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number);
if (infos.isEmpty()) if (infos.isEmpty())
return 0; return 0;
Qt4DefaultTargetSetupWidget *widget = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, number, importEnabled, importInfos); Qt4DefaultTargetSetupWidget *widget = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos,
widget->setShadowBuildSupported(supportsShadowBuilds(id)); number, importEnabled && supportsShadowBuilds(id),
importInfos,
supportsShadowBuilds(id) ? Qt4DefaultTargetSetupWidget::ENABLE :
Qt4DefaultTargetSetupWidget::DISABLE);
return widget; return widget;
} }
@@ -365,7 +368,8 @@ Qt4DefaultTargetSetupWidget::Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *f
const QList<BuildConfigurationInfo> &infos, const QList<BuildConfigurationInfo> &infos,
const QtVersionNumber &minimumQtVersion, const QtVersionNumber &minimumQtVersion,
bool importEnabled, bool importEnabled,
const QList<BuildConfigurationInfo> &importInfos) const QList<BuildConfigurationInfo> &importInfos,
ShadowBuildOption shadowBuild)
: Qt4TargetSetupWidget(), : Qt4TargetSetupWidget(),
m_id(id), m_id(id),
m_factory(factory), m_factory(factory),
@@ -459,7 +463,8 @@ Qt4DefaultTargetSetupWidget::Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *f
m_shadowBuildEnabled = new QCheckBox; m_shadowBuildEnabled = new QCheckBox;
m_shadowBuildEnabled->setText(tr("Use Shadow Building")); m_shadowBuildEnabled->setText(tr("Use Shadow Building"));
m_shadowBuildEnabled->setVisible(false); m_shadowBuildCheckBoxVisible = shadowBuild == USER;
m_shadowBuildEnabled->setVisible(m_shadowBuildCheckBoxVisible);
layout->addWidget(m_shadowBuildEnabled); layout->addWidget(m_shadowBuildEnabled);
@@ -492,10 +497,16 @@ Qt4DefaultTargetSetupWidget::Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *f
m_importEnabled << true; m_importEnabled << true;
} }
if (m_hasInSourceBuild) if (m_hasInSourceBuild || shadowBuild == DISABLE) {
m_shadowBuildEnabled->setChecked(false); m_shadowBuildEnabled->setChecked(false);
else m_directoriesEnabled = false;
m_shadowBuildEnabled->setChecked(s->value("Qt4ProjectManager.TargetSetupPage.ShadowBuilding", true).toBool()); } else if (shadowBuild == ENABLE) {
m_shadowBuildEnabled->setChecked(true);
m_directoriesEnabled = true;
} else {
m_directoriesEnabled = s->value("Qt4ProjectManager.TargetSetupPage.ShadowBuilding", true).toBool();
m_shadowBuildEnabled->setChecked(m_directoriesEnabled);
}
m_selected += m_importInfos.size(); m_selected += m_importInfos.size();
@@ -589,19 +600,6 @@ void Qt4DefaultTargetSetupWidget::setProFilePath(const QString &proFilePath)
setBuildConfigurationInfos(m_factory->availableBuildConfigurations(m_id, proFilePath, m_minimumQtVersion), false); setBuildConfigurationInfos(m_factory->availableBuildConfigurations(m_id, proFilePath, m_minimumQtVersion), false);
} }
void Qt4DefaultTargetSetupWidget::setShadowBuildSupported(bool b)
{
// if shadow building is supported we want to enable it, unless we have a in source build
m_shadowBuildEnabled->setChecked(b && !m_hasInSourceBuild);
m_importLineButton->setVisible(b);
}
void Qt4DefaultTargetSetupWidget::setShadowBuildCheckBoxVisible(bool b)
{
m_shadowBuildCheckBoxVisible = b;
m_shadowBuildEnabled->setVisible(b);
}
void Qt4DefaultTargetSetupWidget::setBuildConfiguraionComboBoxVisible(bool b) void Qt4DefaultTargetSetupWidget::setBuildConfiguraionComboBoxVisible(bool b)
{ {
m_buildConfigurationLabel->setVisible(b); m_buildConfigurationLabel->setVisible(b);

View File

@@ -108,13 +108,15 @@ class Qt4DefaultTargetSetupWidget : public Qt4TargetSetupWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
enum ShadowBuildOption { DISABLE, ENABLE, USER };
Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *factory, Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *factory,
const QString &id, const QString &id,
const QString &proFilePath, const QString &proFilePath,
const QList<BuildConfigurationInfo> &info, const QList<BuildConfigurationInfo> &info,
const QtVersionNumber &minimumQtVersion, const QtVersionNumber &minimumQtVersion,
bool importEnabled, bool importEnabled,
const QList<BuildConfigurationInfo> &importInfos); const QList<BuildConfigurationInfo> &importInfos,
ShadowBuildOption shadowBuild);
~Qt4DefaultTargetSetupWidget(); ~Qt4DefaultTargetSetupWidget();
bool isTargetSelected() const; bool isTargetSelected() const;
void setTargetSelected(bool b); void setTargetSelected(bool b);
@@ -123,8 +125,6 @@ public:
QList<BuildConfigurationInfo> buildConfigurationInfos() const; QList<BuildConfigurationInfo> buildConfigurationInfos() const;
void setProFilePath(const QString &proFilePath); void setProFilePath(const QString &proFilePath);
void setShadowBuildSupported(bool b);
void setShadowBuildCheckBoxVisible(bool b);
void setBuildConfiguraionComboBoxVisible(bool b); void setBuildConfiguraionComboBoxVisible(bool b);
enum BuildConfigurationTemplate { PERQT = 0, enum BuildConfigurationTemplate { PERQT = 0,