diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-07-29 23:34:56 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-08-02 11:19:28 +0000 |
commit | e52ebbf217499e50a00ec35095aaf0f606416491 (patch) | |
tree | 89044e062e2dcc6c9c7aa799192f1dd03bf410ad /src/plugins/genericprojectmanager/genericmakestep.cpp | |
parent | 34456aa906434b2c90ff179b11ba90dc5a273bd6 (diff) |
ProjectExplorer: Add subscribeSignal method to targets and projects
Add a subscribeSignal method to targets and projects that will make
sure all signals of all project configurations added during the lifetime
of the project/target will get connected (if the type matches).
Use this to connect to some signal in all BuildConfigurations of
a project and get rid of code that keeps connecting to the current
build configuration.
Use Project::buildEnvironmentChanged as an example and convert its
usages.
Change-Id: I689bcebac4b191bf3f8a18765bf18eaac371c5fe
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/genericprojectmanager/genericmakestep.cpp')
-rw-r--r-- | src/plugins/genericprojectmanager/genericmakestep.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 8569a994ef..082be2dd14 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -232,7 +232,7 @@ GenericMakeStepConfigWidget::GenericMakeStepConfigWidget(GenericMakeStep *makeSt m_ui->makeLineEdit->setText(m_makeStep->m_makeCommand); m_ui->makeArgumentsLineEdit->setText(m_makeStep->m_makeArguments); - updateMakeOverrrideLabel(); + updateMakeOverrideLabel(); updateDetails(); connect(m_ui->targetsList, &QListWidget::itemChanged, @@ -243,17 +243,26 @@ GenericMakeStepConfigWidget::GenericMakeStepConfigWidget(GenericMakeStep *makeSt this, &GenericMakeStepConfigWidget::makeArgumentsLineEditTextEdited); connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged, - this, &GenericMakeStepConfigWidget::updateMakeOverrrideLabel); + this, &GenericMakeStepConfigWidget::updateMakeOverrideLabel); connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged, this, &GenericMakeStepConfigWidget::updateDetails); connect(m_makeStep->target(), &Target::kitChanged, - this, &GenericMakeStepConfigWidget::updateMakeOverrrideLabel); - - connect(pro, &GenericProject::environmentChanged, - this, &GenericMakeStepConfigWidget::updateMakeOverrrideLabel); - connect(pro, &GenericProject::environmentChanged, - this, &GenericMakeStepConfigWidget::updateDetails); + this, &GenericMakeStepConfigWidget::updateMakeOverrideLabel); + + pro->subscribeSignal(&BuildConfiguration::environmentChanged, this, [this]() { + if (static_cast<BuildConfiguration *>(sender())->isActive()) { + updateMakeOverrideLabel(); + updateDetails(); + } + }); + connect(pro, &Project::activeProjectConfigurationChanged, + this, [this](ProjectConfiguration *pc) { + if (pc->isActive()) { + updateMakeOverrideLabel(); + updateDetails(); + } + }); } GenericMakeStepConfigWidget::~GenericMakeStepConfigWidget() @@ -266,7 +275,7 @@ QString GenericMakeStepConfigWidget::displayName() const return tr("Make", "GenericMakestep display name."); } -void GenericMakeStepConfigWidget::updateMakeOverrrideLabel() +void GenericMakeStepConfigWidget::updateMakeOverrideLabel() { BuildConfiguration *bc = m_makeStep->buildConfiguration(); if (!bc) |