Qbs: Use aspects more directly in QbsBuildConfiguration

Change-Id: Ie6de858023895cc3f70a9f1d14308e3d0d3480a4
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2023-07-13 15:43:12 +02:00
parent 763b694801
commit 46b0cdf90e
5 changed files with 21 additions and 44 deletions

View File

@@ -621,6 +621,7 @@ public:
const QString &offString = {}, const QString &offString = {},
const QString &defaultString = {}); const QString &defaultString = {});
TriState operator()() const { return value(); }
TriState value() const; TriState value() const;
void setValue(TriState setting); void setValue(TriState setting);

View File

@@ -163,11 +163,12 @@ void BuildDirectoryAspect::updateProblemLabel()
d->problemLabel->setVisible(!d->problem.isEmpty()); d->problemLabel->setVisible(!d->problem.isEmpty());
} }
SeparateDebugInfoAspect::SeparateDebugInfoAspect() SeparateDebugInfoAspect::SeparateDebugInfoAspect(AspectContainer *container)
: TriStateAspect(container)
{ {
setDisplayName(Tr::tr("Separate debug info:")); setDisplayName(Tr::tr("Separate debug info:"));
setSettingsKey("SeparateDebugInfo"); setSettingsKey("SeparateDebugInfo");
setValue(ProjectExplorerPlugin::buildPropertiesSettings().separateDebugInfo.value()); setValue(ProjectExplorerPlugin::buildPropertiesSettings().separateDebugInfo());
} }
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -41,7 +41,7 @@ class PROJECTEXPLORER_EXPORT SeparateDebugInfoAspect : public Utils::TriStateAsp
{ {
Q_OBJECT Q_OBJECT
public: public:
SeparateDebugInfoAspect(); SeparateDebugInfoAspect(Utils::AspectContainer *container = nullptr);
}; };
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -98,7 +98,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
+ '_' + kit->fileSystemFriendlyName().left(8) + '_' + kit->fileSystemFriendlyName().left(8)
+ '_' + hash.toHex().left(16); + '_' + hash.toHex().left(16);
m_configurationName->setValue(uniqueConfigName); configurationName.setValue(uniqueConfigName);
auto bs = buildSteps()->firstOfType<QbsBuildStep>(); auto bs = buildSteps()->firstOfType<QbsBuildStep>();
QTC_ASSERT(bs, return); QTC_ASSERT(bs, return);
@@ -107,25 +107,21 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
emit qbsConfigurationChanged(); emit qbsConfigurationChanged();
}); });
m_configurationName = addAspect<StringAspect>(); configurationName.setSettingsKey("Qbs.configName");
m_configurationName->setLabelText(QbsProjectManager::Tr::tr("Configuration name:")); configurationName.setLabelText(QbsProjectManager::Tr::tr("Configuration name:"));
m_configurationName->setSettingsKey("Qbs.configName"); configurationName.setDisplayStyle(StringAspect::LineEditDisplay);
m_configurationName->setDisplayStyle(StringAspect::LineEditDisplay); connect(&configurationName, &StringAspect::changed,
connect(m_configurationName, &StringAspect::changed,
this, &BuildConfiguration::buildDirectoryChanged); this, &BuildConfiguration::buildDirectoryChanged);
const auto separateDebugInfoAspect = addAspect<SeparateDebugInfoAspect>(); connect(&separateDebugInfoSetting, &BaseAspect::changed,
connect(separateDebugInfoAspect, &SeparateDebugInfoAspect::changed,
this, &QbsBuildConfiguration::qbsConfigurationChanged); this, &QbsBuildConfiguration::qbsConfigurationChanged);
const auto qmlDebuggingAspect = addAspect<QtSupport::QmlDebuggingAspect>(); qmlDebuggingSetting.setBuildConfiguration(this);
qmlDebuggingAspect->setBuildConfiguration(this); connect(&qmlDebuggingSetting, &BaseAspect::changed,
connect(qmlDebuggingAspect, &QtSupport::QmlDebuggingAspect::changed,
this, &QbsBuildConfiguration::qbsConfigurationChanged); this, &QbsBuildConfiguration::qbsConfigurationChanged);
const auto qtQuickCompilerAspect = addAspect<QtSupport::QtQuickCompilerAspect>(); qtQuickCompilerSetting.setBuildConfiguration(this);
qtQuickCompilerAspect->setBuildConfiguration(this); connect(&qtQuickCompilerSetting, &BaseAspect::changed,
connect(qtQuickCompilerAspect, &QtSupport::QtQuickCompilerAspect::changed,
this, &QbsBuildConfiguration::qbsConfigurationChanged); this, &QbsBuildConfiguration::qbsConfigurationChanged);
connect(this, &BuildConfiguration::environmentChanged, connect(this, &BuildConfiguration::environmentChanged,
@@ -171,11 +167,11 @@ bool QbsBuildConfiguration::fromMap(const QVariantMap &map)
if (!BuildConfiguration::fromMap(map)) if (!BuildConfiguration::fromMap(map))
return false; 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 profileName = QbsProfileManager::profileNameForKit(target()->kit());
const QString buildVariant = qbsConfiguration() const QString buildVariant = qbsConfiguration()
.value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString(); .value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString();
m_configurationName->setValue(profileName + '-' + buildVariant); configurationName.setValue(profileName + '-' + buildVariant);
} }
return true; return true;
@@ -251,11 +247,6 @@ QStringList QbsBuildConfiguration::products() const
return m_products; return m_products;
} }
QString QbsBuildConfiguration::configurationName() const
{
return m_configurationName->value();
}
QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &stepData) const QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &stepData) const
{ {
CommandLine commandLine; CommandLine commandLine;
@@ -302,21 +293,6 @@ QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &ste
return commandLine.arguments(); return commandLine.arguments();
} }
TriState QbsBuildConfiguration::qmlDebuggingSetting() const
{
return aspect<QtSupport::QmlDebuggingAspect>()->value();
}
TriState QbsBuildConfiguration::qtQuickCompilerSetting() const
{
return aspect<QtSupport::QtQuickCompilerAspect>()->value();
}
TriState QbsBuildConfiguration::separateDebugInfoSetting() const
{
return aspect<SeparateDebugInfoAspect>()->value();
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// QbsBuildConfigurationFactory: // QbsBuildConfigurationFactory:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View File

@@ -60,12 +60,12 @@ public:
void setProducts(const QStringList &products); void setProducts(const QStringList &products);
QStringList products() const; QStringList products() const;
QString configurationName() const;
QString equivalentCommandLine(const QbsBuildStepData &stepData) const; QString equivalentCommandLine(const QbsBuildStepData &stepData) const;
Utils::TriState qmlDebuggingSetting() const; Utils::StringAspect configurationName{this};
Utils::TriState qtQuickCompilerSetting() const; ProjectExplorer::SeparateDebugInfoAspect separateDebugInfoSetting{this};
Utils::TriState separateDebugInfoSetting() const; QtSupport::QmlDebuggingAspect qmlDebuggingSetting{this};
QtSupport::QtQuickCompilerAspect qtQuickCompilerSetting{this};
signals: signals:
void qbsConfigurationChanged(); void qbsConfigurationChanged();
@@ -78,7 +78,6 @@ private:
QStringList m_changedFiles; QStringList m_changedFiles;
QStringList m_activeFileTags; QStringList m_activeFileTags;
QStringList m_products; QStringList m_products;
Utils::StringAspect *m_configurationName = nullptr;
QbsBuildSystem *m_buildSystem = nullptr; QbsBuildSystem *m_buildSystem = nullptr;
}; };