Ios: Inline IosBuildSettingsWidget ui

First mechanical baby-step towards using aspects in IosBuildConfiguration.

Change-Id: I6eec5136ec05f0f26c3ca915fa7d84dccaafcb82
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2019-04-29 15:47:11 +02:00
parent 5b46b17b08
commit b3eded3ee1
5 changed files with 140 additions and 220 deletions

View File

@@ -57,7 +57,6 @@ FORMS += \
iossettingswidget.ui \
iosbuildstep.ui \
iospresetbuildstep.ui \
iosbuildsettingswidget.ui \
createsimulatordialog.ui \
simulatoroperationdialog.ui

View File

@@ -22,7 +22,6 @@ QtcPlugin {
"iosbuildconfiguration.h",
"iosbuildsettingswidget.cpp",
"iosbuildsettingswidget.h",
"iosbuildsettingswidget.ui",
"iosbuildstep.cpp",
"iosbuildstep.h",
"iosbuildstep.ui",

View File

@@ -41,8 +41,6 @@
#include <QLoggingCategory>
#include <QVBoxLayout>
using namespace QmakeProjectManager;
namespace Ios {
namespace Internal {
@@ -56,109 +54,168 @@ IosBuildSettingsWidget::IosBuildSettingsWidget(const Core::Id &deviceType,
const QString &signingIdentifier,
bool isSigningAutoManaged, QWidget *parent) :
ProjectExplorer::NamedWidget(parent),
ui(new Ui::IosBuildSettingsWidget),
m_detailsWidget(new Utils::DetailsWidget(this)),
m_deviceType(deviceType)
{
auto rootLayout = new QVBoxLayout(this);
rootLayout->setMargin(0);
rootLayout->addWidget(m_detailsWidget);
const bool isDevice = m_deviceType == Constants::IOS_DEVICE_TYPE;
auto container = new QWidget(m_detailsWidget);
ui->setupUi(container);
ui->m_autoSignCheckbox->setChecked(isSigningAutoManaged);
connect(ui->m_qmakeDefaults, &QPushButton::clicked, this, &IosBuildSettingsWidget::onReset);
auto detailsWidget = new Utils::DetailsWidget(this);
auto container = new QWidget(detailsWidget);
ui->m_infoIconLabel->hide();
ui->m_infoIconLabel->setPixmap(Utils::Icons::INFO.pixmap());
ui->m_infoLabel->hide();
m_qmakeDefaults = new QPushButton(container);
QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
m_qmakeDefaults->setSizePolicy(sizePolicy);
m_qmakeDefaults->setText(tr("Reset"));
m_qmakeDefaults->setEnabled(isDevice);
ui->m_warningIconLabel->hide();
ui->m_warningIconLabel->setPixmap(Utils::Icons::WARNING.pixmap());
ui->m_warningLabel->hide();
m_signEntityCombo = new QComboBox(container);
QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Fixed);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
m_signEntityCombo->setSizePolicy(sizePolicy1);
m_detailsWidget->setState(Utils::DetailsWidget::NoSummary);
m_detailsWidget->setWidget(container);
m_autoSignCheckbox = new QCheckBox(container);
QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Fixed);
sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0);
m_autoSignCheckbox->setSizePolicy(sizePolicy2);
m_autoSignCheckbox->setChecked(true);
m_autoSignCheckbox->setText(tr("Automatically manage signing"));
m_autoSignCheckbox->setChecked(isSigningAutoManaged);
m_autoSignCheckbox->setEnabled(isDevice);
m_signEntityLabel = new QLabel(container);
m_infoIconLabel = new QLabel(container);
QSizePolicy sizePolicy3(QSizePolicy::Maximum, QSizePolicy::Preferred);
sizePolicy3.setHorizontalStretch(0);
sizePolicy3.setVerticalStretch(0);
m_infoIconLabel->setSizePolicy(sizePolicy3);
m_infoLabel = new QLabel(container);
QSizePolicy sizePolicy4(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy4.setHorizontalStretch(0);
sizePolicy4.setVerticalStretch(0);
m_infoLabel->setSizePolicy(sizePolicy4);
m_infoLabel->setWordWrap(false);
m_warningIconLabel = new QLabel(container);
m_warningIconLabel->setSizePolicy(sizePolicy3);
m_warningLabel = new QLabel(container);
m_warningLabel->setSizePolicy(sizePolicy4);
m_warningLabel->setWordWrap(true);
m_signEntityLabel->setText(QApplication::translate("Ios::Internal::IosBuildSettingsWidget", "Development team:", nullptr));
connect(m_qmakeDefaults, &QPushButton::clicked, this, &IosBuildSettingsWidget::onReset);
m_infoIconLabel->hide();
m_infoIconLabel->setPixmap(Utils::Icons::INFO.pixmap());
m_infoLabel->hide();
m_warningIconLabel->hide();
m_warningIconLabel->setPixmap(Utils::Icons::WARNING.pixmap());
m_warningLabel->hide();
detailsWidget->setState(Utils::DetailsWidget::NoSummary);
detailsWidget->setWidget(container);
setDisplayName(tr("iOS Settings"));
const bool isDevice = m_deviceType == Constants::IOS_DEVICE_TYPE;
if (isDevice) {
connect(IosConfigurations::instance(), &IosConfigurations::provisioningDataChanged,
this, &IosBuildSettingsWidget::populateDevelopmentTeams);
connect(ui->m_signEntityCombo, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
connect(m_signEntityCombo, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this, &IosBuildSettingsWidget::onSigningEntityComboIndexChanged);
connect(ui->m_autoSignCheckbox, &QCheckBox::toggled,
connect(m_autoSignCheckbox, &QCheckBox::toggled,
this, &IosBuildSettingsWidget::configureSigningUi);
configureSigningUi(ui->m_autoSignCheckbox->isChecked());
configureSigningUi(m_autoSignCheckbox->isChecked());
setDefaultSigningIdentfier(signingIdentifier);
}
ui->m_autoSignCheckbox->setEnabled(isDevice);
ui->m_signEntityCombo->setEnabled(isDevice);
ui->m_qmakeDefaults->setEnabled(isDevice);
ui->m_signEntityLabel->setEnabled(isDevice);
m_signEntityCombo->setEnabled(isDevice);
m_signEntityLabel->setEnabled(isDevice);
adjustSize();
}
IosBuildSettingsWidget::~IosBuildSettingsWidget()
{
delete ui;
auto rootLayout = new QVBoxLayout(this);
rootLayout->setMargin(0);
rootLayout->addWidget(detailsWidget);
auto gridLayout = new QGridLayout();
gridLayout->addWidget(m_signEntityLabel, 0, 0, 1, 1);
gridLayout->addWidget(m_signEntityCombo, 0, 1, 1, 1);
gridLayout->addWidget(m_autoSignCheckbox, 0, 2, 1, 1);
gridLayout->addWidget(m_qmakeDefaults, 1, 1, 1, 1);
auto horizontalLayout = new QHBoxLayout();
horizontalLayout->addWidget(m_infoIconLabel);
horizontalLayout->addWidget(m_infoLabel);
auto horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->addWidget(m_warningIconLabel);
horizontalLayout_2->addWidget(m_warningLabel);
auto verticalLayout = new QVBoxLayout(container);
verticalLayout->addLayout(gridLayout);
verticalLayout->addLayout(horizontalLayout);
verticalLayout->addLayout(horizontalLayout_2);
}
void IosBuildSettingsWidget::setDefaultSigningIdentfier(const QString &identifier) const
{
if (identifier.isEmpty()) {
ui->m_signEntityCombo->setCurrentIndex(0);
m_signEntityCombo->setCurrentIndex(0);
return;
}
int defaultIndex = -1;
for (int index = 0; index < ui->m_signEntityCombo->count(); ++index) {
QString teamID = ui->m_signEntityCombo->itemData(index, IdentifierRole).toString();
for (int index = 0; index < m_signEntityCombo->count(); ++index) {
QString teamID = m_signEntityCombo->itemData(index, IdentifierRole).toString();
if (teamID == identifier) {
defaultIndex = index;
break;
}
}
if (defaultIndex > -1) {
ui->m_signEntityCombo->setCurrentIndex(defaultIndex);
m_signEntityCombo->setCurrentIndex(defaultIndex);
} else {
// Reset to default
ui->m_signEntityCombo->setCurrentIndex(0);
m_signEntityCombo->setCurrentIndex(0);
qCDebug(iosSettingsLog) << "Cannot find default"
<< (ui->m_autoSignCheckbox->isChecked() ? "team": "provisioning profile")
<< (m_autoSignCheckbox->isChecked() ? "team": "provisioning profile")
<< ". Identifier: " << identifier;
}
}
bool IosBuildSettingsWidget::isSigningAutomaticallyManaged() const
{
return ui->m_autoSignCheckbox->isChecked() && ui->m_signEntityCombo->currentIndex() > 0;
return m_autoSignCheckbox->isChecked() && m_signEntityCombo->currentIndex() > 0;
}
void IosBuildSettingsWidget::onSigningEntityComboIndexChanged()
{
QString identifier = selectedIdentifier();
(ui->m_autoSignCheckbox->isChecked() ? m_lastTeamSelection : m_lastProfileSelection) = identifier;
(m_autoSignCheckbox->isChecked() ? m_lastTeamSelection : m_lastProfileSelection) = identifier;
updateInfoText();
updateWarningText();
emit signingSettingsChanged(ui->m_autoSignCheckbox->isChecked(), identifier);
emit signingSettingsChanged(m_autoSignCheckbox->isChecked(), identifier);
}
void IosBuildSettingsWidget::onReset()
{
m_lastTeamSelection.clear();
m_lastProfileSelection.clear();
ui->m_autoSignCheckbox->setChecked(true);
m_autoSignCheckbox->setChecked(true);
setDefaultSigningIdentfier("");
}
void IosBuildSettingsWidget::configureSigningUi(bool autoManageSigning)
{
ui->m_signEntityLabel->setText(autoManageSigning ? tr("Development team:")
: tr("Provisioning profile:"));
m_signEntityLabel->setText(autoManageSigning ? tr("Development team:")
: tr("Provisioning profile:"));
if (autoManageSigning)
populateDevelopmentTeams();
else
@@ -171,15 +228,15 @@ void IosBuildSettingsWidget::configureSigningUi(bool autoManageSigning)
void IosBuildSettingsWidget::populateDevelopmentTeams()
{
{
QSignalBlocker blocker(ui->m_signEntityCombo);
QSignalBlocker blocker(m_signEntityCombo);
// Populate Team id's
ui->m_signEntityCombo->clear();
ui->m_signEntityCombo->addItem(tr("Default"));
m_signEntityCombo->clear();
m_signEntityCombo->addItem(tr("Default"));
foreach (auto team, IosConfigurations::developmentTeams()) {
ui->m_signEntityCombo->addItem(team->displayName());
const int index = ui->m_signEntityCombo->count() - 1;
ui->m_signEntityCombo->setItemData(index, team->identifier(), IdentifierRole);
ui->m_signEntityCombo->setItemData(index, team->details(), Qt::ToolTipRole);
m_signEntityCombo->addItem(team->displayName());
const int index = m_signEntityCombo->count() - 1;
m_signEntityCombo->setItemData(index, team->identifier(), IdentifierRole);
m_signEntityCombo->setItemData(index, team->details(), Qt::ToolTipRole);
}
}
// Maintain previous selection.
@@ -191,18 +248,18 @@ void IosBuildSettingsWidget::populateProvisioningProfiles()
{
{
// Populate Team id's
QSignalBlocker blocker(ui->m_signEntityCombo);
ui->m_signEntityCombo->clear();
ProvisioningProfiles profiles = IosConfigurations::provisioningProfiles();
QSignalBlocker blocker(m_signEntityCombo);
m_signEntityCombo->clear();
const ProvisioningProfiles profiles = IosConfigurations::provisioningProfiles();
if (profiles.count() > 0) {
foreach (auto profile, profiles) {
ui->m_signEntityCombo->addItem(profile->displayName());
const int index = ui->m_signEntityCombo->count() - 1;
ui->m_signEntityCombo->setItemData(index, profile->identifier(), IdentifierRole);
ui->m_signEntityCombo->setItemData(index, profile->details(), Qt::ToolTipRole);
for (auto profile : profiles) {
m_signEntityCombo->addItem(profile->displayName());
const int index = m_signEntityCombo->count() - 1;
m_signEntityCombo->setItemData(index, profile->identifier(), IdentifierRole);
m_signEntityCombo->setItemData(index, profile->details(), Qt::ToolTipRole);
}
} else {
ui->m_signEntityCombo->addItem(tr("None"));
m_signEntityCombo->addItem(tr("None"));
}
}
// Maintain previous selection.
@@ -212,7 +269,7 @@ void IosBuildSettingsWidget::populateProvisioningProfiles()
QString IosBuildSettingsWidget::selectedIdentifier() const
{
return ui->m_signEntityCombo->currentData(IdentifierRole).toString();
return m_signEntityCombo->currentData(IdentifierRole).toString();
}
void IosBuildSettingsWidget::updateInfoText()
@@ -228,7 +285,7 @@ void IosBuildSettingsWidget::updateInfoText()
};
QString identifier = selectedIdentifier();
bool configuringTeams = ui->m_autoSignCheckbox->isChecked();
bool configuringTeams = m_autoSignCheckbox->isChecked();
if (identifier.isEmpty()) {
// No signing entity selection.
@@ -256,9 +313,9 @@ void IosBuildSettingsWidget::updateInfoText()
}
}
ui->m_infoIconLabel->setVisible(!infoMessage.isEmpty());
ui->m_infoLabel->setVisible(!infoMessage.isEmpty());
ui->m_infoLabel->setText(infoMessage);
m_infoIconLabel->setVisible(!infoMessage.isEmpty());
m_infoLabel->setVisible(!infoMessage.isEmpty());
m_infoLabel->setText(infoMessage);
}
void IosBuildSettingsWidget::updateWarningText()
@@ -267,8 +324,8 @@ void IosBuildSettingsWidget::updateWarningText()
return;
QString warningText;
bool configuringTeams = ui->m_autoSignCheckbox->isChecked();
if (ui->m_signEntityCombo->count() < 2) {
bool configuringTeams = m_autoSignCheckbox->isChecked();
if (m_signEntityCombo->count() < 2) {
warningText = tr("%1 not configured. Use Xcode and Apple developer account to configure the "
"provisioning profiles and teams.")
.arg(configuringTeams ? tr("Development teams") : tr("Provisioning profiles"));
@@ -287,9 +344,9 @@ void IosBuildSettingsWidget::updateWarningText()
}
}
ui->m_warningLabel->setVisible(!warningText.isEmpty());
ui->m_warningIconLabel->setVisible(!warningText.isEmpty());
ui->m_warningLabel->setText(warningText);
m_warningLabel->setVisible(!warningText.isEmpty());
m_warningIconLabel->setVisible(!warningText.isEmpty());
m_warningLabel->setText(warningText);
}
} // namespace Internal

View File

@@ -25,20 +25,16 @@
#pragma once
#include <coreplugin/id.h>
#include "projectexplorer/namedwidget.h"
#include <QWidget>
namespace Utils {
class DetailsWidget;
}
#include <projectexplorer/namedwidget.h>
#include <QCheckBox>
#include <QComboBox>
#include <QLabel>
#include <QPushButton>
namespace Ios {
namespace Internal {
namespace Ui {
class IosBuildSettingsWidget;
}
class IosBuildSettingsWidget : public ProjectExplorer::NamedWidget
{
@@ -47,7 +43,6 @@ class IosBuildSettingsWidget : public ProjectExplorer::NamedWidget
public:
explicit IosBuildSettingsWidget(const Core::Id &deviceType, const QString &signingIdentifier,
bool isSigningAutoManaged, QWidget *parent = nullptr);
~IosBuildSettingsWidget() override;
bool isSigningAutomaticallyManaged() const;
@@ -67,11 +62,18 @@ private:
void updateWarningText();
private:
Ui::IosBuildSettingsWidget *ui;
Utils::DetailsWidget *m_detailsWidget;
QString m_lastProfileSelection;
QString m_lastTeamSelection;
const Core::Id m_deviceType;
QPushButton *m_qmakeDefaults;
QComboBox *m_signEntityCombo;
QCheckBox *m_autoSignCheckbox;
QLabel *m_signEntityLabel;
QLabel *m_infoIconLabel;
QLabel *m_infoLabel;
QLabel *m_warningIconLabel;
QLabel *m_warningLabel;
};
} // namespace Internal

View File

@@ -1,137 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Ios::Internal::IosBuildSettingsWidget</class>
<widget class="QWidget" name="Ios::Internal::IosBuildSettingsWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>467</width>
<height>141</height>
</rect>
</property>
<property name="windowTitle">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1">
<widget class="QPushButton" name="m_qmakeDefaults">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="m_signEntityCombo">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QCheckBox" name="m_autoSignCheckbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Automatically manage signing</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="m_signEntityLabel">
<property name="text">
<string>Development team:</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="m_infoIconLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="m_infoLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="m_warningIconLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="m_warningLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>