From 17877151653ff2a62847f018e5038f77a08c85e8 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 30 Apr 2019 19:11:11 +0200 Subject: [PATCH] Ios: Use aspects for build configuration date storage Change-Id: I6c14cd5acc5dcc820339ccc0e7ef7b30ca7724ab Reviewed-by: Vikas Pachdha --- src/plugins/ios/iosbuildconfiguration.cpp | 56 +++++++++++------------ src/plugins/ios/iosbuildconfiguration.h | 8 ++-- 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/src/plugins/ios/iosbuildconfiguration.cpp b/src/plugins/ios/iosbuildconfiguration.cpp index 2d5b6022ca2..149c5749a09 100644 --- a/src/plugins/ios/iosbuildconfiguration.cpp +++ b/src/plugins/ios/iosbuildconfiguration.cpp @@ -52,6 +52,12 @@ const char autoManagedSigningKey[] = "Ios.AutoManagedSigning"; IosBuildConfiguration::IosBuildConfiguration(Target *target, Core::Id id) : QmakeBuildConfiguration(target, id) { + m_signingIdentifier = addAspect(); + m_signingIdentifier->setSettingsKey(signingIdentifierKey); + + m_autoManagedSigning = addAspect(); + m_autoManagedSigning->setDefaultValue(true); + m_autoManagedSigning->setSettingsKey(autoManagedSigningKey); } QList IosBuildConfiguration::createSubConfigWidgets() @@ -60,42 +66,31 @@ QList IosBuildConfiguration::createSubConfigWidg Core::Id devType = ProjectExplorer::DeviceTypeKitAspect::deviceTypeId(target()->kit()); // Ownership of this widget is with BuildSettingsWidget - auto buildSettingsWidget = new IosBuildSettingsWidget(devType, m_signingIdentifier, - m_autoManagedSigning); + auto buildSettingsWidget = new IosBuildSettingsWidget(devType, + m_signingIdentifier->value(), + m_autoManagedSigning->value()); subConfigWidgets.prepend(buildSettingsWidget); connect(buildSettingsWidget, &IosBuildSettingsWidget::signingSettingsChanged, - this, &IosBuildConfiguration::onSigningSettingsChanged); - return subConfigWidgets; -} + this, [this](bool autoManagedSigning, QString identifier) { + if (m_signingIdentifier->value().compare(identifier) != 0 + || m_autoManagedSigning->value() != autoManagedSigning) { + m_autoManagedSigning->setValue(autoManagedSigning); + m_signingIdentifier->setValue(identifier); + updateQmakeCommand(); + } + }); -QVariantMap IosBuildConfiguration::toMap() const -{ - QVariantMap map(QmakeBuildConfiguration::toMap()); - map.insert(signingIdentifierKey, m_signingIdentifier); - map.insert(autoManagedSigningKey, m_autoManagedSigning); - return map; + return subConfigWidgets; } bool IosBuildConfiguration::fromMap(const QVariantMap &map) { if (!QmakeBuildConfiguration::fromMap(map)) return false; - m_autoManagedSigning = map.value(autoManagedSigningKey).toBool(); - m_signingIdentifier = map.value(signingIdentifierKey).toString(); updateQmakeCommand(); return true; } -void IosBuildConfiguration::onSigningSettingsChanged(bool autoManagedSigning, QString identifier) -{ - if (m_signingIdentifier.compare(identifier) != 0 - || m_autoManagedSigning != autoManagedSigning) { - m_autoManagedSigning = autoManagedSigning; - m_signingIdentifier = identifier; - updateQmakeCommand(); - } -} - void IosBuildConfiguration::updateQmakeCommand() { QMakeStep *qmakeStepInstance = qmakeStep(); @@ -110,25 +105,26 @@ void IosBuildConfiguration::updateQmakeCommand() }); // Set force ovveride qmake switch - if (!m_signingIdentifier.isEmpty() ) + const QString signingIdentifier = m_signingIdentifier->value(); + if (signingIdentifier.isEmpty() ) extraArgs << forceOverrideArg; Core::Id devType = ProjectExplorer::DeviceTypeKitAspect::deviceTypeId(target()->kit()); - if (devType == Constants::IOS_DEVICE_TYPE && !m_signingIdentifier.isEmpty()) { - if (m_autoManagedSigning) { - extraArgs << qmakeIosTeamSettings + m_signingIdentifier; + if (devType == Constants::IOS_DEVICE_TYPE && !signingIdentifier.isEmpty()) { + if (m_autoManagedSigning->value()) { + extraArgs << qmakeIosTeamSettings + signingIdentifier; } else { // Get the team id from provisioning profile ProvisioningProfilePtr profile = - IosConfigurations::provisioningProfile(m_signingIdentifier); + IosConfigurations::provisioningProfile(signingIdentifier); QString teamId; if (profile) teamId = profile->developmentTeam()->identifier(); else - qCDebug(iosLog) << "No provisioing profile found for id:"<< m_signingIdentifier; + qCDebug(iosLog) << "No provisioing profile found for id:" << signingIdentifier; if (!teamId.isEmpty()) { - extraArgs << qmakeProvisioningProfileSettings + m_signingIdentifier; + extraArgs << qmakeProvisioningProfileSettings + signingIdentifier; extraArgs << qmakeIosTeamSettings + teamId; } else { qCDebug(iosLog) << "Development team unavailable for profile:" << profile; diff --git a/src/plugins/ios/iosbuildconfiguration.h b/src/plugins/ios/iosbuildconfiguration.h index aa3b529e943..d267d93450f 100644 --- a/src/plugins/ios/iosbuildconfiguration.h +++ b/src/plugins/ios/iosbuildconfiguration.h @@ -26,6 +26,8 @@ #include "qmakeprojectmanager/qmakebuildconfiguration.h" +#include + namespace Ios { namespace Internal { @@ -38,14 +40,12 @@ public: private: QList createSubConfigWidgets() override; - QVariantMap toMap() const override; bool fromMap(const QVariantMap &map) override; - void onSigningSettingsChanged(bool autoManagedSigning, QString identifier); void updateQmakeCommand(); - QString m_signingIdentifier; - bool m_autoManagedSigning = true; + ProjectExplorer::BaseStringAspect *m_signingIdentifier = nullptr; + ProjectExplorer::BaseBoolAspect *m_autoManagedSigning = nullptr; }; class IosBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfigurationFactory