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);
}
// 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)
{
m_signingIdentifier = addAspect<StringAspect>();
m_signingIdentifier->setSettingsKey(signingIdentifierKey);
m_signingIdentifier.setSettingsKey(signingIdentifierKey);
m_autoManagedSigning = addAspect<BoolAspect>();
m_autoManagedSigning->setDefaultValue(true);
m_autoManagedSigning->setValue(true);
m_autoManagedSigning->setSettingsKey(autoManagedSigningKey);
m_autoManagedSigning.setDefaultValue(true);
m_autoManagedSigning.setSettingsKey(autoManagedSigningKey);
connect(m_signingIdentifier,
connect(&m_signingIdentifier,
&BaseAspect::changed,
this,
&IosQmakeBuildConfiguration::updateQmakeCommand);
connect(m_autoManagedSigning,
connect(&m_autoManagedSigning,
&BaseAspect::changed,
this,
&IosQmakeBuildConfiguration::updateQmakeCommand);
@@ -397,8 +408,8 @@ QList<NamedWidget *> IosQmakeBuildConfiguration::createSubConfigWidgets()
// Ownership of this widget is with BuildSettingsWidget
auto buildSettingsWidget = new IosSigningSettingsWidget(this,
m_autoManagedSigning,
m_signingIdentifier);
&m_autoManagedSigning,
&m_signingIdentifier);
subConfigWidgets.prepend(buildSettingsWidget);
return subConfigWidgets;
}
@@ -440,13 +451,13 @@ void IosQmakeBuildConfiguration::updateQmakeCommand()
});
// Set force ovveride qmake switch
const QString signingIdentifier = m_signingIdentifier->value();
const QString signingIdentifier = m_signingIdentifier();
if (signingIdentifier.isEmpty() )
extraArgs << forceOverrideArg;
Utils::Id devType = DeviceTypeKitAspect::deviceTypeId(kit());
if (devType == Constants::IOS_DEVICE_TYPE && !signingIdentifier.isEmpty()) {
if (m_autoManagedSigning->value()) {
if (m_autoManagedSigning()) {
extraArgs << qmakeIosTeamSettings + signingIdentifier;
} else {
const QString teamId = teamIdForProvisioningProfile(signingIdentifier);
@@ -469,22 +480,36 @@ IosQmakeBuildConfigurationFactory::IosQmakeBuildConfigurationFactory()
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)
: 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->setValue(true);
m_autoManagedSigning->setSettingsKey(autoManagedSigningKey);
m_autoManagedSigning.setDefaultValue(true);
m_autoManagedSigning.setSettingsKey(autoManagedSigningKey);
connect(m_signingIdentifier,
connect(&m_signingIdentifier,
&BaseAspect::changed,
this,
&IosCMakeBuildConfiguration::signingFlagsChanged);
connect(m_autoManagedSigning,
connect(&m_autoManagedSigning,
&BaseAspect::changed,
this,
&IosCMakeBuildConfiguration::signingFlagsChanged);
@@ -496,8 +521,8 @@ QList<NamedWidget *> IosCMakeBuildConfiguration::createSubConfigWidgets()
// Ownership of this widget is with BuildSettingsWidget
auto buildSettingsWidget = new IosSigningSettingsWidget(this,
m_autoManagedSigning,
m_signingIdentifier);
&m_autoManagedSigning,
&m_signingIdentifier);
subConfigWidgets.prepend(buildSettingsWidget);
return subConfigWidgets;
}
@@ -513,8 +538,8 @@ CMakeConfig IosCMakeBuildConfiguration::signingFlags() const
{
if (DeviceTypeKitAspect::deviceTypeId(kit()) != Constants::IOS_DEVICE_TYPE)
return {};
const QString signingIdentifier = m_signingIdentifier->value();
if (m_autoManagedSigning->value()) {
const QString signingIdentifier = m_signingIdentifier();
if (m_autoManagedSigning()) {
const DevelopmentTeams teams = IosConfigurations::developmentTeams();
const QString teamId = signingIdentifier.isEmpty() && !teams.isEmpty()
? teams.first()->identifier()

View File

@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <qmakeprojectmanager/qmakebuildconfiguration.h>
@@ -7,42 +8,12 @@
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
{
public:
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
{
public: