From 334dc840723768b35612cc49cb3869f929e083cb Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@nokia.com> Date: Fri, 13 Jan 2012 16:29:38 +0100 Subject: [PATCH] Fix warnings about connects on adding makestep to deploysteps By actually fixing the underling problem Change-Id: I3ee41ba9238f63f8a645c5d29e6627c6d4f4f7f9 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> --- src/plugins/qt4projectmanager/makestep.cpp | 54 +++++++++++++++++++--- src/plugins/qt4projectmanager/makestep.h | 2 + 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 36dc0afaa4e..c79b13d67de 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -305,7 +305,7 @@ void MakeStep::setUserArguments(const QString &arguments) } MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) - : BuildStepConfigWidget(), m_ui(new Internal::Ui::MakeStep), m_makeStep(makeStep), m_ignoreChange(false) + : BuildStepConfigWidget(), m_ui(new Internal::Ui::MakeStep), m_makeStep(makeStep), m_bc(0), m_ignoreChange(false) { m_ui->setupUi(this); @@ -327,13 +327,26 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) connect(makeStep, SIGNAL(userArgumentsChanged()), this, SLOT(userArgumentsChanged())); - connect(makeStep->buildConfiguration(), SIGNAL(buildDirectoryChanged()), - this, SLOT(updateDetails())); - connect(makeStep->buildConfiguration(), SIGNAL(toolChainChanged()), - this, SLOT(updateDetails())); - connect(makeStep->qt4BuildConfiguration(), SIGNAL(qtVersionChanged()), - this, SLOT(qtVersionChanged())); + ProjectExplorer::BuildConfiguration *bc = makeStep->buildConfiguration(); + if (!bc) { + // That means the step is in the deploylist, so we listen to the active build config + // changed signal and update various things in return + bc = makeStep->target()->activeBuildConfiguration(); + m_bc = bc; + connect (makeStep->target(), SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), + this, SLOT(activeBuildConfigurationChanged())); + } + + if (bc) { + connect(bc, SIGNAL(buildDirectoryChanged()), + this, SLOT(updateDetails())); + connect(bc, SIGNAL(toolChainChanged()), + this, SLOT(updateDetails())); + + connect(bc, SIGNAL(qtVersionChanged()), + this, SLOT(qtVersionChanged())); + } connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()), this, SLOT(updateMakeOverrideLabel())); @@ -341,6 +354,33 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) this, SLOT(updateDetails())); } +void MakeStepConfigWidget::activeBuildConfigurationChanged() +{ + if (m_bc) { + disconnect(m_bc, SIGNAL(buildDirectoryChanged()), + this, SLOT(updateDetails())); + disconnect(m_bc, SIGNAL(toolChainChanged()), + this, SLOT(updateDetails())); + + disconnect(m_bc, SIGNAL(qtVersionChanged()), + this, SLOT(qtVersionChanged())); + } + + m_bc = m_makeStep->target()->activeBuildConfiguration(); + updateMakeOverrideLabel(); + updateDetails(); + + if (m_bc) { + connect(m_bc, SIGNAL(buildDirectoryChanged()), + this, SLOT(updateDetails())); + connect(m_bc, SIGNAL(toolChainChanged()), + this, SLOT(updateDetails())); + + connect(m_bc, SIGNAL(qtVersionChanged()), + this, SLOT(qtVersionChanged())); + } +} + MakeStepConfigWidget::~MakeStepConfigWidget() { delete m_ui; diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h index 0507d24b6da..6c010a7d2e0 100644 --- a/src/plugins/qt4projectmanager/makestep.h +++ b/src/plugins/qt4projectmanager/makestep.h @@ -138,10 +138,12 @@ private slots: void updateDetails(); void userArgumentsChanged(); void qtVersionChanged(); + void activeBuildConfigurationChanged(); private: Internal::Ui::MakeStep *m_ui; MakeStep *m_makeStep; QString m_summaryText; + ProjectExplorer::BuildConfiguration *m_bc; bool m_ignoreChange; }; -- GitLab