diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index c23375e1132..17faa1225ea 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -621,6 +621,7 @@ public: const QString &offString = {}, const QString &defaultString = {}); + TriState operator()() const { return value(); } TriState value() const; void setValue(TriState setting); diff --git a/src/plugins/projectexplorer/buildaspects.cpp b/src/plugins/projectexplorer/buildaspects.cpp index 7eb724b6323..f0f3d819440 100644 --- a/src/plugins/projectexplorer/buildaspects.cpp +++ b/src/plugins/projectexplorer/buildaspects.cpp @@ -163,11 +163,12 @@ void BuildDirectoryAspect::updateProblemLabel() d->problemLabel->setVisible(!d->problem.isEmpty()); } -SeparateDebugInfoAspect::SeparateDebugInfoAspect() +SeparateDebugInfoAspect::SeparateDebugInfoAspect(AspectContainer *container) + : TriStateAspect(container) { setDisplayName(Tr::tr("Separate debug info:")); setSettingsKey("SeparateDebugInfo"); - setValue(ProjectExplorerPlugin::buildPropertiesSettings().separateDebugInfo.value()); + setValue(ProjectExplorerPlugin::buildPropertiesSettings().separateDebugInfo()); } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/buildaspects.h b/src/plugins/projectexplorer/buildaspects.h index 10043b4ec62..5471ce893ae 100644 --- a/src/plugins/projectexplorer/buildaspects.h +++ b/src/plugins/projectexplorer/buildaspects.h @@ -41,7 +41,7 @@ class PROJECTEXPLORER_EXPORT SeparateDebugInfoAspect : public Utils::TriStateAsp { Q_OBJECT public: - SeparateDebugInfoAspect(); + SeparateDebugInfoAspect(Utils::AspectContainer *container = nullptr); }; } // namespace ProjectExplorer diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 52dd6fb9933..2e7d725ef51 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -98,7 +98,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id) + '_' + kit->fileSystemFriendlyName().left(8) + '_' + hash.toHex().left(16); - m_configurationName->setValue(uniqueConfigName); + configurationName.setValue(uniqueConfigName); auto bs = buildSteps()->firstOfType(); QTC_ASSERT(bs, return); @@ -107,25 +107,21 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id) emit qbsConfigurationChanged(); }); - m_configurationName = addAspect(); - m_configurationName->setLabelText(QbsProjectManager::Tr::tr("Configuration name:")); - m_configurationName->setSettingsKey("Qbs.configName"); - m_configurationName->setDisplayStyle(StringAspect::LineEditDisplay); - connect(m_configurationName, &StringAspect::changed, + configurationName.setSettingsKey("Qbs.configName"); + configurationName.setLabelText(QbsProjectManager::Tr::tr("Configuration name:")); + configurationName.setDisplayStyle(StringAspect::LineEditDisplay); + connect(&configurationName, &StringAspect::changed, this, &BuildConfiguration::buildDirectoryChanged); - const auto separateDebugInfoAspect = addAspect(); - connect(separateDebugInfoAspect, &SeparateDebugInfoAspect::changed, + connect(&separateDebugInfoSetting, &BaseAspect::changed, this, &QbsBuildConfiguration::qbsConfigurationChanged); - const auto qmlDebuggingAspect = addAspect(); - qmlDebuggingAspect->setBuildConfiguration(this); - connect(qmlDebuggingAspect, &QtSupport::QmlDebuggingAspect::changed, + qmlDebuggingSetting.setBuildConfiguration(this); + connect(&qmlDebuggingSetting, &BaseAspect::changed, this, &QbsBuildConfiguration::qbsConfigurationChanged); - const auto qtQuickCompilerAspect = addAspect(); - qtQuickCompilerAspect->setBuildConfiguration(this); - connect(qtQuickCompilerAspect, &QtSupport::QtQuickCompilerAspect::changed, + qtQuickCompilerSetting.setBuildConfiguration(this); + connect(&qtQuickCompilerSetting, &BaseAspect::changed, this, &QbsBuildConfiguration::qbsConfigurationChanged); connect(this, &BuildConfiguration::environmentChanged, @@ -171,11 +167,11 @@ bool QbsBuildConfiguration::fromMap(const QVariantMap &map) if (!BuildConfiguration::fromMap(map)) return false; - if (m_configurationName->value().isEmpty()) { // pre-4.4 backwards compatibility + if (configurationName().isEmpty()) { // pre-4.4 backwards compatibility const QString profileName = QbsProfileManager::profileNameForKit(target()->kit()); const QString buildVariant = qbsConfiguration() .value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString(); - m_configurationName->setValue(profileName + '-' + buildVariant); + configurationName.setValue(profileName + '-' + buildVariant); } return true; @@ -251,11 +247,6 @@ QStringList QbsBuildConfiguration::products() const return m_products; } -QString QbsBuildConfiguration::configurationName() const -{ - return m_configurationName->value(); -} - QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &stepData) const { CommandLine commandLine; @@ -302,21 +293,6 @@ QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &ste return commandLine.arguments(); } -TriState QbsBuildConfiguration::qmlDebuggingSetting() const -{ - return aspect()->value(); -} - -TriState QbsBuildConfiguration::qtQuickCompilerSetting() const -{ - return aspect()->value(); -} - -TriState QbsBuildConfiguration::separateDebugInfoSetting() const -{ - return aspect()->value(); -} - // --------------------------------------------------------------------------- // QbsBuildConfigurationFactory: // --------------------------------------------------------------------------- diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index 89ee9624371..8fdeb2ba550 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -60,12 +60,12 @@ public: void setProducts(const QStringList &products); QStringList products() const; - QString configurationName() const; QString equivalentCommandLine(const QbsBuildStepData &stepData) const; - Utils::TriState qmlDebuggingSetting() const; - Utils::TriState qtQuickCompilerSetting() const; - Utils::TriState separateDebugInfoSetting() const; + Utils::StringAspect configurationName{this}; + ProjectExplorer::SeparateDebugInfoAspect separateDebugInfoSetting{this}; + QtSupport::QmlDebuggingAspect qmlDebuggingSetting{this}; + QtSupport::QtQuickCompilerAspect qtQuickCompilerSetting{this}; signals: void qbsConfigurationChanged(); @@ -78,7 +78,6 @@ private: QStringList m_changedFiles; QStringList m_activeFileTags; QStringList m_products; - Utils::StringAspect *m_configurationName = nullptr; QbsBuildSystem *m_buildSystem = nullptr; };