aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2024-01-15 15:38:18 +0100
committerEike Ziller <eike.ziller@qt.io>2024-01-29 12:13:51 +0000
commit479f1f34ceaf5605c49df2014a0d80b1e2044d7e (patch)
tree46df39b154149a2876a52633abf2beac4655692c
parent76a89667397e8b527ba3a9b00436cc0d10e6c3fa (diff)
iOS: Disable anything but running for iOS 17+ devices
We currently cannot support anything than running for devices with iOS 17 and later. Make it possible for RunConfigurations to state that they are disabled depending on run mode. Change-Id: I13df4dd482f6381cda15168c38ede00d95e1d692 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/plugins/ios/iosrunconfiguration.cpp19
-rw-r--r--src/plugins/ios/iosrunconfiguration.h4
-rw-r--r--src/plugins/mcusupport/mcusupportrunconfiguration.cpp4
-rw-r--r--src/plugins/projectexplorer/customexecutablerunconfiguration.cpp2
-rw-r--r--src/plugins/projectexplorer/customexecutablerunconfiguration.h2
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp8
-rw-r--r--src/plugins/projectexplorer/runconfiguration.cpp4
-rw-r--r--src/plugins/projectexplorer/runconfiguration.h4
-rw-r--r--src/plugins/projectexplorer/runsettingspropertiespage.cpp9
-rw-r--r--src/plugins/projectexplorer/target.cpp9
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp10
11 files changed, 47 insertions, 28 deletions
diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp
index 334f27345d..a7c8851d56 100644
--- a/src/plugins/ios/iosrunconfiguration.cpp
+++ b/src/plugins/ios/iosrunconfiguration.cpp
@@ -15,6 +15,7 @@
#include <projectexplorer/devicesupport/devicemanager.h>
#include <projectexplorer/kitaspects.h>
#include <projectexplorer/project.h>
+#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectnodes.h>
#include <projectexplorer/runconfigurationaspects.h>
#include <projectexplorer/target.h>
@@ -87,7 +88,7 @@ void IosDeviceTypeAspect::updateDeviceType()
m_deviceType = IosDeviceType(IosDeviceType::SimulatedDevice);
}
-bool IosRunConfiguration::isEnabled() const
+bool IosRunConfiguration::isEnabled(Id runMode) const
{
Utils::Id devType = DeviceTypeKitAspect::deviceTypeId(kit());
if (devType != Constants::IOS_DEVICE_TYPE && devType != Constants::IOS_SIMULATOR_TYPE)
@@ -99,6 +100,12 @@ bool IosRunConfiguration::isEnabled() const
if (dev.isNull() || dev->deviceState() != IDevice::DeviceReadyToUse)
return false;
+ IosDevice::ConstPtr iosdevice = dev.dynamicCast<const IosDevice>();
+ if (iosdevice && iosdevice->handler() == IosDevice::Handler::DeviceCtl
+ && runMode != ProjectExplorer::Constants::NORMAL_RUN_MODE) {
+ return false;
+ }
+
return true;
}
@@ -223,7 +230,7 @@ void IosDeviceTypeAspect::toMap(Store &map) const
map.insert(deviceTypeKey, QVariant::fromValue(deviceType().toMap()));
}
-QString IosRunConfiguration::disabledReason() const
+QString IosRunConfiguration::disabledReason(Id runMode) const
{
Utils::Id devType = DeviceTypeKitAspect::deviceTypeId(kit());
if (devType != Constants::IOS_DEVICE_TYPE && devType != Constants::IOS_SIMULATOR_TYPE)
@@ -270,8 +277,14 @@ QString IosRunConfiguration::disabledReason() const
else
return Tr::tr("%1 is not connected.").arg(dev->displayName());
}
+ IosDevice::ConstPtr iosdevice = dev.dynamicCast<const IosDevice>();
+ if (iosdevice && iosdevice->handler() == IosDevice::Handler::DeviceCtl
+ && runMode != ProjectExplorer::Constants::NORMAL_RUN_MODE) {
+ return Tr::tr("Debugging and profiling is currently not supported for devices with iOS "
+ "17 and later.");
+ }
}
- return RunConfiguration::disabledReason();
+ return RunConfiguration::disabledReason(runMode);
}
IosDeviceType IosRunConfiguration::deviceType() const
diff --git a/src/plugins/ios/iosrunconfiguration.h b/src/plugins/ios/iosrunconfiguration.h
index da890ae3e5..865d9c8808 100644
--- a/src/plugins/ios/iosrunconfiguration.h
+++ b/src/plugins/ios/iosrunconfiguration.h
@@ -70,11 +70,11 @@ public:
QString applicationName() const;
Utils::FilePath bundleDirectory() const;
Utils::FilePath localExecutable() const;
- QString disabledReason() const override;
+ QString disabledReason(Utils::Id runMode) const override;
IosDeviceType deviceType() const;
private:
- bool isEnabled() const final;
+ bool isEnabled(Utils::Id runMode) const final;
ProjectExplorer::ExecutableAspect executable{this};
ProjectExplorer::ArgumentsAspect arguments{this};
diff --git a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp
index b87b527f41..9e936c4fae 100644
--- a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp
+++ b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp
@@ -59,12 +59,12 @@ public:
connect(target->project(), &Project::displayNameChanged, this, &RunConfiguration::update);
}
- bool isEnabled() const override
+ bool isEnabled(Utils::Id runMode) const override
{
if (disabled)
return false;
- return RunConfiguration::isEnabled();
+ return RunConfiguration::isEnabled(runMode);
}
static bool disabled;
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index 4341e14cf7..dc810bac32 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -46,7 +46,7 @@ CustomExecutableRunConfiguration::CustomExecutableRunConfiguration(Target *targe
setDefaultDisplayName(defaultDisplayName());
}
-bool CustomExecutableRunConfiguration::isEnabled() const
+bool CustomExecutableRunConfiguration::isEnabled(Id) const
{
return true;
}
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.h b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
index 39199f4b4a..ced9892c01 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.h
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
@@ -21,7 +21,7 @@ public:
private:
Utils::ProcessRunData runnable() const override;
- bool isEnabled() const override;
+ bool isEnabled(Utils::Id) const override;
Tasks checkForIssues() const override;
void configurationDialogFinished();
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 11318ef9ce..b2b2f5fc61 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -2980,7 +2980,7 @@ void ProjectExplorerPlugin::runRunConfiguration(RunConfiguration *rc,
Id runMode,
const bool forceSkipDeploy)
{
- if (!rc->isEnabled())
+ if (!rc->isEnabled(runMode))
return;
const auto delay = [rc, runMode] {
dd->m_runMode = runMode;
@@ -3004,7 +3004,7 @@ void ProjectExplorerPlugin::runRunConfiguration(RunConfiguration *rc,
delay();
break;
case BuildForRunConfigStatus::NotBuilding:
- if (rc->isEnabled())
+ if (rc->isEnabled(runMode))
dd->executeRunConfiguration(rc, runMode);
else
delay();
@@ -3108,8 +3108,8 @@ expected_str<void> ProjectExplorerPlugin::canRunStartupProject(Utils::Id runMode
.arg(target->displayName(), project->displayName()));
}
- if (!activeRC->isEnabled())
- return make_unexpected(activeRC->disabledReason());
+ if (!activeRC->isEnabled(runMode))
+ return make_unexpected(activeRC->disabledReason(runMode));
if (dd->m_projectExplorerSettings.buildBeforeDeploy != BuildBeforeRunMode::Off
&& dd->m_projectExplorerSettings.deployBeforeRun
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 30fda9b044..be59ad0eaa 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -186,13 +186,13 @@ RunConfiguration::RunConfiguration(Target *target, Utils::Id id)
RunConfiguration::~RunConfiguration() = default;
-QString RunConfiguration::disabledReason() const
+QString RunConfiguration::disabledReason(Utils::Id) const
{
BuildSystem *bs = activeBuildSystem();
return bs ? bs->disabledReason(m_buildKey) : Tr::tr("No build system active");
}
-bool RunConfiguration::isEnabled() const
+bool RunConfiguration::isEnabled(Utils::Id) const
{
BuildSystem *bs = activeBuildSystem();
return bs && bs->hasParsingData();
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index 629fcd2c61..2054a840c1 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -78,8 +78,8 @@ class PROJECTEXPLORER_EXPORT RunConfiguration : public ProjectConfiguration
public:
~RunConfiguration() override;
- virtual QString disabledReason() const;
- virtual bool isEnabled() const;
+ virtual QString disabledReason(Utils::Id runMode) const;
+ virtual bool isEnabled(Utils::Id runMode) const;
QWidget *createConfigurationWidget();
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
index 75980d8ccb..ec18f68c60 100644
--- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
@@ -8,6 +8,7 @@
#include "buildstepspage.h"
#include "deployconfiguration.h"
#include "projectconfigurationmodel.h"
+#include "projectexplorerconstants.h"
#include "projectexplorertr.h"
#include "runconfiguration.h"
#include "target.h"
@@ -523,8 +524,12 @@ void RunSettingsWidget::removeSubWidgets()
void RunSettingsWidget::updateEnabledState()
{
- const bool enable = m_runConfiguration ? m_runConfiguration->isEnabled() : false;
- const QString reason = m_runConfiguration ? m_runConfiguration->disabledReason() : QString();
+ const bool enable = m_runConfiguration
+ ? m_runConfiguration->isEnabled(Constants::NORMAL_RUN_MODE)
+ : false;
+ const QString reason = m_runConfiguration
+ ? m_runConfiguration->disabledReason(Constants::NORMAL_RUN_MODE)
+ : QString();
m_runConfigurationWidget->setEnabled(enable);
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 8231366dfc..7028ffc459 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -18,6 +18,7 @@
#include "project.h"
#include "projectconfigurationmodel.h"
#include "projectexplorer.h"
+#include "projectexplorerconstants.h"
#include "projectexplorericons.h"
#include "projectexplorersettings.h"
#include "projectexplorertr.h"
@@ -780,12 +781,12 @@ void Target::updateDefaultRunConfigurations()
// Make sure a configured RC will be active after we delete the RCs:
RunConfiguration *active = activeRunConfiguration();
- if (active && (removalList.contains(active) || !active->isEnabled())) {
+ if (active && (removalList.contains(active) || !active->isEnabled(Constants::NORMAL_RUN_MODE))) {
RunConfiguration *newConfiguredDefault = newConfigured.isEmpty() ? nullptr : newConfigured.at(0);
- RunConfiguration *rc
- = Utils::findOrDefault(existingConfigured,
- [](RunConfiguration *rc) { return rc->isEnabled(); });
+ RunConfiguration *rc = Utils::findOrDefault(existingConfigured, [](RunConfiguration *rc) {
+ return rc->isEnabled(Constants::NORMAL_RUN_MODE);
+ });
if (!rc) {
rc = Utils::findOr(newConfigured, newConfiguredDefault,
Utils::equal(&RunConfiguration::displayName, project()->displayName()));
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index 19c57f1220..77650c9dd8 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -57,8 +57,8 @@ public:
QmlProjectRunConfiguration(Target *target, Id id);
private:
- QString disabledReason() const final;
- bool isEnabled() const final;
+ QString disabledReason(Utils::Id runMode) const final;
+ bool isEnabled(Utils::Id) const final;
FilePath mainScript() const;
FilePath qmlRuntimeFilePath() const;
@@ -180,7 +180,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
update();
}
-QString QmlProjectRunConfiguration::disabledReason() const
+QString QmlProjectRunConfiguration::disabledReason(Utils::Id runMode) const
{
if (mainScript().isEmpty())
return Tr::tr("No script file to execute.");
@@ -193,7 +193,7 @@ QString QmlProjectRunConfiguration::disabledReason() const
}
if (viewer.isEmpty())
return Tr::tr("No QML utility specified for target device.");
- return RunConfiguration::disabledReason();
+ return RunConfiguration::disabledReason(runMode);
}
FilePath QmlProjectRunConfiguration::qmlRuntimeFilePath() const
@@ -306,7 +306,7 @@ void QmlProjectRunConfiguration::setupQtVersionAspect()
}
}
-bool QmlProjectRunConfiguration::isEnabled() const
+bool QmlProjectRunConfiguration::isEnabled(Id) const
{
return const_cast<QmlProjectRunConfiguration *>(this)->qmlMainFile.isQmlFilePresent()
&& !commandLine().executable().isEmpty()