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 &defaultString = {});
TriState operator()() const { return value(); }
TriState value() const;
void setValue(TriState setting);

View File

@@ -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

View File

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

View File

@@ -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<QbsBuildStep>();
QTC_ASSERT(bs, return);
@@ -107,25 +107,21 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
emit qbsConfigurationChanged();
});
m_configurationName = addAspect<StringAspect>();
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<SeparateDebugInfoAspect>();
connect(separateDebugInfoAspect, &SeparateDebugInfoAspect::changed,
connect(&separateDebugInfoSetting, &BaseAspect::changed,
this, &QbsBuildConfiguration::qbsConfigurationChanged);
const auto qmlDebuggingAspect = addAspect<QtSupport::QmlDebuggingAspect>();
qmlDebuggingAspect->setBuildConfiguration(this);
connect(qmlDebuggingAspect, &QtSupport::QmlDebuggingAspect::changed,
qmlDebuggingSetting.setBuildConfiguration(this);
connect(&qmlDebuggingSetting, &BaseAspect::changed,
this, &QbsBuildConfiguration::qbsConfigurationChanged);
const auto qtQuickCompilerAspect = addAspect<QtSupport::QtQuickCompilerAspect>();
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<QtSupport::QmlDebuggingAspect>()->value();
}
TriState QbsBuildConfiguration::qtQuickCompilerSetting() const
{
return aspect<QtSupport::QtQuickCompilerAspect>()->value();
}
TriState QbsBuildConfiguration::separateDebugInfoSetting() const
{
return aspect<SeparateDebugInfoAspect>()->value();
}
// ---------------------------------------------------------------------------
// QbsBuildConfigurationFactory:
// ---------------------------------------------------------------------------

View File

@@ -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;
};