forked from qt-creator/qt-creator
Ios: Use aspects for build configuration date storage
Change-Id: I6c14cd5acc5dcc820339ccc0e7ef7b30ca7724ab Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
@@ -52,6 +52,12 @@ const char autoManagedSigningKey[] = "Ios.AutoManagedSigning";
|
|||||||
IosBuildConfiguration::IosBuildConfiguration(Target *target, Core::Id id)
|
IosBuildConfiguration::IosBuildConfiguration(Target *target, Core::Id id)
|
||||||
: QmakeBuildConfiguration(target, id)
|
: QmakeBuildConfiguration(target, id)
|
||||||
{
|
{
|
||||||
|
m_signingIdentifier = addAspect<BaseStringAspect>();
|
||||||
|
m_signingIdentifier->setSettingsKey(signingIdentifierKey);
|
||||||
|
|
||||||
|
m_autoManagedSigning = addAspect<BaseBoolAspect>();
|
||||||
|
m_autoManagedSigning->setDefaultValue(true);
|
||||||
|
m_autoManagedSigning->setSettingsKey(autoManagedSigningKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ProjectExplorer::NamedWidget *> IosBuildConfiguration::createSubConfigWidgets()
|
QList<ProjectExplorer::NamedWidget *> IosBuildConfiguration::createSubConfigWidgets()
|
||||||
@@ -60,42 +66,31 @@ QList<ProjectExplorer::NamedWidget *> IosBuildConfiguration::createSubConfigWidg
|
|||||||
|
|
||||||
Core::Id devType = ProjectExplorer::DeviceTypeKitAspect::deviceTypeId(target()->kit());
|
Core::Id devType = ProjectExplorer::DeviceTypeKitAspect::deviceTypeId(target()->kit());
|
||||||
// Ownership of this widget is with BuildSettingsWidget
|
// Ownership of this widget is with BuildSettingsWidget
|
||||||
auto buildSettingsWidget = new IosBuildSettingsWidget(devType, m_signingIdentifier,
|
auto buildSettingsWidget = new IosBuildSettingsWidget(devType,
|
||||||
m_autoManagedSigning);
|
m_signingIdentifier->value(),
|
||||||
|
m_autoManagedSigning->value());
|
||||||
subConfigWidgets.prepend(buildSettingsWidget);
|
subConfigWidgets.prepend(buildSettingsWidget);
|
||||||
connect(buildSettingsWidget, &IosBuildSettingsWidget::signingSettingsChanged,
|
connect(buildSettingsWidget, &IosBuildSettingsWidget::signingSettingsChanged,
|
||||||
this, &IosBuildConfiguration::onSigningSettingsChanged);
|
this, [this](bool autoManagedSigning, QString identifier) {
|
||||||
return subConfigWidgets;
|
if (m_signingIdentifier->value().compare(identifier) != 0
|
||||||
|
|| m_autoManagedSigning->value() != autoManagedSigning) {
|
||||||
|
m_autoManagedSigning->setValue(autoManagedSigning);
|
||||||
|
m_signingIdentifier->setValue(identifier);
|
||||||
|
updateQmakeCommand();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
QVariantMap IosBuildConfiguration::toMap() const
|
return subConfigWidgets;
|
||||||
{
|
|
||||||
QVariantMap map(QmakeBuildConfiguration::toMap());
|
|
||||||
map.insert(signingIdentifierKey, m_signingIdentifier);
|
|
||||||
map.insert(autoManagedSigningKey, m_autoManagedSigning);
|
|
||||||
return map;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IosBuildConfiguration::fromMap(const QVariantMap &map)
|
bool IosBuildConfiguration::fromMap(const QVariantMap &map)
|
||||||
{
|
{
|
||||||
if (!QmakeBuildConfiguration::fromMap(map))
|
if (!QmakeBuildConfiguration::fromMap(map))
|
||||||
return false;
|
return false;
|
||||||
m_autoManagedSigning = map.value(autoManagedSigningKey).toBool();
|
|
||||||
m_signingIdentifier = map.value(signingIdentifierKey).toString();
|
|
||||||
updateQmakeCommand();
|
updateQmakeCommand();
|
||||||
return true;
|
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()
|
void IosBuildConfiguration::updateQmakeCommand()
|
||||||
{
|
{
|
||||||
QMakeStep *qmakeStepInstance = qmakeStep();
|
QMakeStep *qmakeStepInstance = qmakeStep();
|
||||||
@@ -110,25 +105,26 @@ void IosBuildConfiguration::updateQmakeCommand()
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Set force ovveride qmake switch
|
// Set force ovveride qmake switch
|
||||||
if (!m_signingIdentifier.isEmpty() )
|
const QString signingIdentifier = m_signingIdentifier->value();
|
||||||
|
if (signingIdentifier.isEmpty() )
|
||||||
extraArgs << forceOverrideArg;
|
extraArgs << forceOverrideArg;
|
||||||
|
|
||||||
Core::Id devType = ProjectExplorer::DeviceTypeKitAspect::deviceTypeId(target()->kit());
|
Core::Id devType = ProjectExplorer::DeviceTypeKitAspect::deviceTypeId(target()->kit());
|
||||||
if (devType == Constants::IOS_DEVICE_TYPE && !m_signingIdentifier.isEmpty()) {
|
if (devType == Constants::IOS_DEVICE_TYPE && !signingIdentifier.isEmpty()) {
|
||||||
if (m_autoManagedSigning) {
|
if (m_autoManagedSigning->value()) {
|
||||||
extraArgs << qmakeIosTeamSettings + m_signingIdentifier;
|
extraArgs << qmakeIosTeamSettings + signingIdentifier;
|
||||||
} else {
|
} else {
|
||||||
// Get the team id from provisioning profile
|
// Get the team id from provisioning profile
|
||||||
ProvisioningProfilePtr profile =
|
ProvisioningProfilePtr profile =
|
||||||
IosConfigurations::provisioningProfile(m_signingIdentifier);
|
IosConfigurations::provisioningProfile(signingIdentifier);
|
||||||
QString teamId;
|
QString teamId;
|
||||||
if (profile)
|
if (profile)
|
||||||
teamId = profile->developmentTeam()->identifier();
|
teamId = profile->developmentTeam()->identifier();
|
||||||
else
|
else
|
||||||
qCDebug(iosLog) << "No provisioing profile found for id:"<< m_signingIdentifier;
|
qCDebug(iosLog) << "No provisioing profile found for id:" << signingIdentifier;
|
||||||
|
|
||||||
if (!teamId.isEmpty()) {
|
if (!teamId.isEmpty()) {
|
||||||
extraArgs << qmakeProvisioningProfileSettings + m_signingIdentifier;
|
extraArgs << qmakeProvisioningProfileSettings + signingIdentifier;
|
||||||
extraArgs << qmakeIosTeamSettings + teamId;
|
extraArgs << qmakeIosTeamSettings + teamId;
|
||||||
} else {
|
} else {
|
||||||
qCDebug(iosLog) << "Development team unavailable for profile:" << profile;
|
qCDebug(iosLog) << "Development team unavailable for profile:" << profile;
|
||||||
|
@@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
#include "qmakeprojectmanager/qmakebuildconfiguration.h"
|
#include "qmakeprojectmanager/qmakebuildconfiguration.h"
|
||||||
|
|
||||||
|
#include <projectexplorer/projectconfigurationaspects.h>
|
||||||
|
|
||||||
namespace Ios {
|
namespace Ios {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -38,14 +40,12 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QList<ProjectExplorer::NamedWidget *> createSubConfigWidgets() override;
|
QList<ProjectExplorer::NamedWidget *> createSubConfigWidgets() override;
|
||||||
QVariantMap toMap() const override;
|
|
||||||
bool fromMap(const QVariantMap &map) override;
|
bool fromMap(const QVariantMap &map) override;
|
||||||
|
|
||||||
void onSigningSettingsChanged(bool autoManagedSigning, QString identifier);
|
|
||||||
void updateQmakeCommand();
|
void updateQmakeCommand();
|
||||||
|
|
||||||
QString m_signingIdentifier;
|
ProjectExplorer::BaseStringAspect *m_signingIdentifier = nullptr;
|
||||||
bool m_autoManagedSigning = true;
|
ProjectExplorer::BaseBoolAspect *m_autoManagedSigning = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
class IosBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfigurationFactory
|
class IosBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfigurationFactory
|
||||||
|
Reference in New Issue
Block a user