Ios: Use aspects more directly in build configurations

Change-Id: I1fa9583fccd5bb6a93fcfea9e3977f626b790afb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-07-12 17:21:51 +02:00
parent dff33fa84b
commit 66ecfb15d1
2 changed files with 52 additions and 56 deletions

View File

@@ -367,25 +367,36 @@ void IosSigningSettingsWidget::updateWarningText()
m_warningLabel->setText(warningText); m_warningLabel->setText(warningText);
} }
// IosQmakeBuildConfiguration
// IosBuildConfiguration class IosQmakeBuildConfiguration : public QmakeProjectManager::QmakeBuildConfiguration
{
public:
IosQmakeBuildConfiguration(Target *target, Id id);
IosQmakeBuildConfiguration::IosQmakeBuildConfiguration(Target *target, Utils::Id id) private:
QList<NamedWidget *> createSubConfigWidgets() override;
bool fromMap(const QVariantMap &map) override;
void updateQmakeCommand();
StringAspect m_signingIdentifier{this};
BoolAspect m_autoManagedSigning{this};
};
IosQmakeBuildConfiguration::IosQmakeBuildConfiguration(Target *target, Id id)
: QmakeBuildConfiguration(target, id) : QmakeBuildConfiguration(target, id)
{ {
m_signingIdentifier = addAspect<StringAspect>(); m_signingIdentifier.setSettingsKey(signingIdentifierKey);
m_signingIdentifier->setSettingsKey(signingIdentifierKey);
m_autoManagedSigning = addAspect<BoolAspect>(); m_autoManagedSigning.setDefaultValue(true);
m_autoManagedSigning->setDefaultValue(true); m_autoManagedSigning.setSettingsKey(autoManagedSigningKey);
m_autoManagedSigning->setValue(true);
m_autoManagedSigning->setSettingsKey(autoManagedSigningKey);
connect(m_signingIdentifier, connect(&m_signingIdentifier,
&BaseAspect::changed, &BaseAspect::changed,
this, this,
&IosQmakeBuildConfiguration::updateQmakeCommand); &IosQmakeBuildConfiguration::updateQmakeCommand);
connect(m_autoManagedSigning, connect(&m_autoManagedSigning,
&BaseAspect::changed, &BaseAspect::changed,
this, this,
&IosQmakeBuildConfiguration::updateQmakeCommand); &IosQmakeBuildConfiguration::updateQmakeCommand);
@@ -397,8 +408,8 @@ QList<NamedWidget *> IosQmakeBuildConfiguration::createSubConfigWidgets()
// Ownership of this widget is with BuildSettingsWidget // Ownership of this widget is with BuildSettingsWidget
auto buildSettingsWidget = new IosSigningSettingsWidget(this, auto buildSettingsWidget = new IosSigningSettingsWidget(this,
m_autoManagedSigning, &m_autoManagedSigning,
m_signingIdentifier); &m_signingIdentifier);
subConfigWidgets.prepend(buildSettingsWidget); subConfigWidgets.prepend(buildSettingsWidget);
return subConfigWidgets; return subConfigWidgets;
} }
@@ -440,13 +451,13 @@ void IosQmakeBuildConfiguration::updateQmakeCommand()
}); });
// Set force ovveride qmake switch // Set force ovveride qmake switch
const QString signingIdentifier = m_signingIdentifier->value(); const QString signingIdentifier = m_signingIdentifier();
if (signingIdentifier.isEmpty() ) if (signingIdentifier.isEmpty() )
extraArgs << forceOverrideArg; extraArgs << forceOverrideArg;
Utils::Id devType = DeviceTypeKitAspect::deviceTypeId(kit()); Utils::Id devType = DeviceTypeKitAspect::deviceTypeId(kit());
if (devType == Constants::IOS_DEVICE_TYPE && !signingIdentifier.isEmpty()) { if (devType == Constants::IOS_DEVICE_TYPE && !signingIdentifier.isEmpty()) {
if (m_autoManagedSigning->value()) { if (m_autoManagedSigning()) {
extraArgs << qmakeIosTeamSettings + signingIdentifier; extraArgs << qmakeIosTeamSettings + signingIdentifier;
} else { } else {
const QString teamId = teamIdForProvisioningProfile(signingIdentifier); const QString teamId = teamIdForProvisioningProfile(signingIdentifier);
@@ -469,22 +480,36 @@ IosQmakeBuildConfigurationFactory::IosQmakeBuildConfigurationFactory()
addSupportedTargetDeviceType(Constants::IOS_SIMULATOR_TYPE); addSupportedTargetDeviceType(Constants::IOS_SIMULATOR_TYPE);
} }
// IosCMakeBuildConfiguration
class IosCMakeBuildConfiguration : public CMakeProjectManager::CMakeBuildConfiguration
{
public:
IosCMakeBuildConfiguration(Target *target, Id id);
private:
QList<NamedWidget *> createSubConfigWidgets() override;
bool fromMap(const QVariantMap &map) override;
CMakeProjectManager::CMakeConfig signingFlags() const final;
StringAspect m_signingIdentifier{this};
BoolAspect m_autoManagedSigning{this};
};
IosCMakeBuildConfiguration::IosCMakeBuildConfiguration(Target *target, Id id) IosCMakeBuildConfiguration::IosCMakeBuildConfiguration(Target *target, Id id)
: CMakeBuildConfiguration(target, id) : CMakeBuildConfiguration(target, id)
{ {
m_signingIdentifier = addAspect<StringAspect>(); m_signingIdentifier.setSettingsKey(signingIdentifierKey);
m_signingIdentifier->setSettingsKey(signingIdentifierKey);
m_autoManagedSigning = addAspect<BoolAspect>(); m_autoManagedSigning.setDefaultValue(true);
m_autoManagedSigning->setDefaultValue(true); m_autoManagedSigning.setSettingsKey(autoManagedSigningKey);
m_autoManagedSigning->setValue(true);
m_autoManagedSigning->setSettingsKey(autoManagedSigningKey);
connect(m_signingIdentifier, connect(&m_signingIdentifier,
&BaseAspect::changed, &BaseAspect::changed,
this, this,
&IosCMakeBuildConfiguration::signingFlagsChanged); &IosCMakeBuildConfiguration::signingFlagsChanged);
connect(m_autoManagedSigning, connect(&m_autoManagedSigning,
&BaseAspect::changed, &BaseAspect::changed,
this, this,
&IosCMakeBuildConfiguration::signingFlagsChanged); &IosCMakeBuildConfiguration::signingFlagsChanged);
@@ -496,8 +521,8 @@ QList<NamedWidget *> IosCMakeBuildConfiguration::createSubConfigWidgets()
// Ownership of this widget is with BuildSettingsWidget // Ownership of this widget is with BuildSettingsWidget
auto buildSettingsWidget = new IosSigningSettingsWidget(this, auto buildSettingsWidget = new IosSigningSettingsWidget(this,
m_autoManagedSigning, &m_autoManagedSigning,
m_signingIdentifier); &m_signingIdentifier);
subConfigWidgets.prepend(buildSettingsWidget); subConfigWidgets.prepend(buildSettingsWidget);
return subConfigWidgets; return subConfigWidgets;
} }
@@ -513,8 +538,8 @@ CMakeConfig IosCMakeBuildConfiguration::signingFlags() const
{ {
if (DeviceTypeKitAspect::deviceTypeId(kit()) != Constants::IOS_DEVICE_TYPE) if (DeviceTypeKitAspect::deviceTypeId(kit()) != Constants::IOS_DEVICE_TYPE)
return {}; return {};
const QString signingIdentifier = m_signingIdentifier->value(); const QString signingIdentifier = m_signingIdentifier();
if (m_autoManagedSigning->value()) { if (m_autoManagedSigning()) {
const DevelopmentTeams teams = IosConfigurations::developmentTeams(); const DevelopmentTeams teams = IosConfigurations::developmentTeams();
const QString teamId = signingIdentifier.isEmpty() && !teams.isEmpty() const QString teamId = signingIdentifier.isEmpty() && !teams.isEmpty()
? teams.first()->identifier() ? teams.first()->identifier()

View File

@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once #pragma once
#include <qmakeprojectmanager/qmakebuildconfiguration.h> #include <qmakeprojectmanager/qmakebuildconfiguration.h>
@@ -7,42 +8,12 @@
namespace Ios::Internal { namespace Ios::Internal {
class IosQmakeBuildConfiguration : public QmakeProjectManager::QmakeBuildConfiguration
{
public:
IosQmakeBuildConfiguration(ProjectExplorer::Target *target, Utils::Id id);
private:
QList<ProjectExplorer::NamedWidget *> createSubConfigWidgets() override;
bool fromMap(const QVariantMap &map) override;
void updateQmakeCommand();
Utils::StringAspect *m_signingIdentifier = nullptr;
Utils::BoolAspect *m_autoManagedSigning = nullptr;
};
class IosQmakeBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfigurationFactory class IosQmakeBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfigurationFactory
{ {
public: public:
IosQmakeBuildConfigurationFactory(); IosQmakeBuildConfigurationFactory();
}; };
class IosCMakeBuildConfiguration : public CMakeProjectManager::CMakeBuildConfiguration
{
public:
IosCMakeBuildConfiguration(ProjectExplorer::Target *target, Utils::Id id);
private:
QList<ProjectExplorer::NamedWidget *> createSubConfigWidgets() override;
bool fromMap(const QVariantMap &map) override;
CMakeProjectManager::CMakeConfig signingFlags() const final;
Utils::StringAspect *m_signingIdentifier = nullptr;
Utils::BoolAspect *m_autoManagedSigning = nullptr;
};
class IosCMakeBuildConfigurationFactory : public CMakeProjectManager::CMakeBuildConfigurationFactory class IosCMakeBuildConfigurationFactory : public CMakeProjectManager::CMakeBuildConfigurationFactory
{ {
public: public: