aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/ios/iosrunconfiguration.cpp
diff options
context:
space:
mode:
authorVikas Pachdha <[email protected]>2017-01-24 16:30:26 +0100
committerVikas Pachdha <[email protected]>2017-02-14 14:57:20 +0000
commitb2a33d311849d4ba6686981c32fe48e98acd266c (patch)
tree1df48f15c1c4f87c690108438e39232cc6a113c0 /src/plugins/ios/iosrunconfiguration.cpp
parentc888989a41dd512195e93a769f2923d789104896 (diff)
iOS: Extend the information cached for simulator
Change-Id: Ia2bc421b2af7d1e82d48bbd9d7914f177fef30d0 Reviewed-by: Eike Ziller <[email protected]>
Diffstat (limited to 'src/plugins/ios/iosrunconfiguration.cpp')
-rw-r--r--src/plugins/ios/iosrunconfiguration.cpp59
1 files changed, 36 insertions, 23 deletions
diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp
index d33e2eaf762..2b023fbf32d 100644
--- a/src/plugins/ios/iosrunconfiguration.cpp
+++ b/src/plugins/ios/iosrunconfiguration.cpp
@@ -42,6 +42,7 @@
#include <qtsupport/qtoutputformatter.h>
#include <qtsupport/qtkitinformation.h>
+#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/qtcprocess.h>
#include <utils/qtcassert.h>
@@ -67,6 +68,14 @@ namespace Internal {
static const QLatin1String deviceTypeKey("Ios.device_type");
+static IosDeviceType toIosDeviceType(const SimulatorInfo &device)
+{
+ IosDeviceType iosDeviceType(IosDeviceType::SimulatedDevice,
+ device.identifier,
+ QString("%1, %2").arg(device.name).arg(device.runtimeName));
+ return iosDeviceType;
+}
+
class IosRunConfigurationWidget : public RunConfigWidget
{
public:
@@ -350,22 +359,24 @@ QString IosRunConfiguration::disabledReason() const
IosDeviceType IosRunConfiguration::deviceType() const
{
- QList<IosDeviceType> availableSimulators;
- if (m_deviceType.type == IosDeviceType::SimulatedDevice)
- availableSimulators = SimulatorControl::availableSimulators();
- if (!availableSimulators.isEmpty()) {
- QList<IosDeviceType> elegibleDevices;
- QString devname = m_deviceType.identifier.split(QLatin1Char(',')).value(0);
- foreach (const IosDeviceType &dType, availableSimulators) {
- if (dType == m_deviceType)
- return m_deviceType;
- if (!devname.isEmpty() && dType.identifier.startsWith(devname)
- && dType.identifier.split(QLatin1Char(',')).value(0) == devname)
- elegibleDevices << dType;
+ if (m_deviceType.type == IosDeviceType::SimulatedDevice) {
+ QList<SimulatorInfo> availableSimulators = SimulatorControl::availableSimulators();
+ if (availableSimulators.isEmpty())
+ return m_deviceType;
+ if (Utils::contains(availableSimulators,
+ Utils::equal(&SimulatorInfo::identifier, m_deviceType.identifier))) {
+ return m_deviceType;
}
- if (!elegibleDevices.isEmpty())
- return elegibleDevices.last();
- return availableSimulators.last();
+ const QStringList parts = m_deviceType.displayName.split(QLatin1Char(','));
+ if (parts.count() < 2)
+ return toIosDeviceType(availableSimulators.last());
+
+ QList<SimulatorInfo> eligibleDevices;
+ eligibleDevices = Utils::filtered(availableSimulators, [parts](const SimulatorInfo &info) {
+ return info.name == parts.at(0) && info.runtimeName == parts.at(1);
+ });
+ return toIosDeviceType(eligibleDevices.isEmpty() ? availableSimulators.last()
+ : eligibleDevices.last());
}
return m_deviceType;
}
@@ -413,7 +424,7 @@ void IosRunConfigurationWidget::setDeviceTypeIndex(int devIndex)
{
QVariant selectedDev = m_deviceTypeModel.data(m_deviceTypeModel.index(devIndex, 0), Qt::UserRole + 1);
if (selectedDev.isValid())
- m_runConfiguration->setDeviceType(selectedDev.value<IosDeviceType>());
+ m_runConfiguration->setDeviceType(toIosDeviceType(selectedDev.value<SimulatorInfo>()));
}
@@ -423,25 +434,27 @@ void IosRunConfigurationWidget::updateValues()
m_deviceTypeLabel->setVisible(showDeviceSelector);
m_deviceTypeComboBox->setVisible(showDeviceSelector);
if (showDeviceSelector && m_deviceTypeModel.rowCount() == 0) {
- foreach (const IosDeviceType &dType, SimulatorControl::availableSimulators()) {
- QStandardItem *item = new QStandardItem(dType.displayName);
+ foreach (const SimulatorInfo &device, SimulatorControl::availableSimulators()) {
+ QStandardItem *item = new QStandardItem(QString("%1, %2").arg(device.name)
+ .arg(device.runtimeName));
QVariant v;
- v.setValue(dType);
+ v.setValue(device);
item->setData(v);
m_deviceTypeModel.appendRow(item);
}
}
IosDeviceType currentDType = m_runConfiguration->deviceType();
+ QVariant currentData = m_deviceTypeComboBox->currentData();
if (currentDType.type == IosDeviceType::SimulatedDevice && !currentDType.identifier.isEmpty()
- && (!m_deviceTypeComboBox->currentData().isValid()
- || currentDType != m_deviceTypeComboBox->currentData().value<IosDeviceType>()))
+ && (!currentData.isValid()
+ || currentDType != toIosDeviceType(currentData.value<SimulatorInfo>())))
{
bool didSet = false;
for (int i = 0; m_deviceTypeModel.hasIndex(i, 0); ++i) {
QVariant vData = m_deviceTypeModel.data(m_deviceTypeModel.index(i, 0), Qt::UserRole + 1);
- IosDeviceType dType = vData.value<IosDeviceType>();
- if (dType == currentDType) {
+ SimulatorInfo dType = vData.value<SimulatorInfo>();
+ if (dType.identifier == currentDType.identifier) {
m_deviceTypeComboBox->setCurrentIndex(i);
didSet = true;
break;