From 280b7e2109f0f20de891f83defca25c8c048f370 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 30 Nov 2017 18:43:44 +0100 Subject: [PATCH] Ios: Use device types as restrictions on project configurations Change-Id: I3c31f14eba9d9f68a333a814bea800a3da38d4a2 Reviewed-by: Vikas Pachdha --- src/plugins/ios/ios.pro | 2 - src/plugins/ios/ios.qbs | 2 - src/plugins/ios/iosbuildconfiguration.cpp | 17 +---- src/plugins/ios/iosbuildconfiguration.h | 3 - src/plugins/ios/iosbuildstep.cpp | 3 +- src/plugins/ios/iosdeployconfiguration.cpp | 7 +- src/plugins/ios/iosdeployconfiguration.h | 2 - src/plugins/ios/iosdeploystep.cpp | 1 - src/plugins/ios/iosdeploystepfactory.cpp | 15 +--- src/plugins/ios/iosdeploystepfactory.h | 1 - src/plugins/ios/iosdsymbuildstep.cpp | 1 - src/plugins/ios/iosmanager.cpp | 70 ------------------- src/plugins/ios/iosmanager.h | 53 -------------- src/plugins/ios/iosplugin.cpp | 1 - src/plugins/ios/iosqtversion.cpp | 1 - src/plugins/ios/iosrunconfiguration.cpp | 1 - src/plugins/ios/iosrunfactories.cpp | 7 +- src/plugins/ios/iosrunfactories.h | 1 - src/plugins/ios/iosrunner.cpp | 1 - .../projectexplorer/buildconfiguration.cpp | 7 +- .../projectexplorer/buildconfiguration.h | 2 + 21 files changed, 16 insertions(+), 182 deletions(-) delete mode 100644 src/plugins/ios/iosmanager.cpp delete mode 100644 src/plugins/ios/iosmanager.h diff --git a/src/plugins/ios/ios.pro b/src/plugins/ios/ios.pro index 13215055815..f12b7bf39e8 100644 --- a/src/plugins/ios/ios.pro +++ b/src/plugins/ios/ios.pro @@ -10,7 +10,6 @@ macx: LIBS += -framework CoreFoundation -framework IOKit HEADERS += \ iosconstants.h \ iosconfigurations.h \ - iosmanager.h \ iosrunconfiguration.h \ iosrunfactories.h \ iossettingspage.h \ @@ -41,7 +40,6 @@ HEADERS += \ SOURCES += \ iosconfigurations.cpp \ - iosmanager.cpp \ iosrunconfiguration.cpp \ iosrunfactories.cpp \ iossettingspage.cpp \ diff --git a/src/plugins/ios/ios.qbs b/src/plugins/ios/ios.qbs index 398c3f43e69..8f3580e69cb 100644 --- a/src/plugins/ios/ios.qbs +++ b/src/plugins/ios/ios.qbs @@ -44,8 +44,6 @@ QtcPlugin { "iosdevicefactory.h", "iosdsymbuildstep.cpp", "iosdsymbuildstep.h", - "iosmanager.cpp", - "iosmanager.h", "iosplugin.cpp", "iosplugin.h", "iospresetbuildstep.ui", diff --git a/src/plugins/ios/iosbuildconfiguration.cpp b/src/plugins/ios/iosbuildconfiguration.cpp index f7d056e4f5a..1d5bf59ee3a 100644 --- a/src/plugins/ios/iosbuildconfiguration.cpp +++ b/src/plugins/ios/iosbuildconfiguration.cpp @@ -22,12 +22,12 @@ ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ****************************************************************************/ + #include "iosbuildconfiguration.h" #include "iosconfigurations.h" #include "iosconstants.h" #include "iosbuildsettingswidget.h" -#include "iosmanager.h" #include "projectexplorer/kitinformation.h" #include "projectexplorer/namedwidget.h" @@ -143,20 +143,9 @@ void IosBuildConfiguration::updateQmakeCommand() IosBuildConfigurationFactory::IosBuildConfigurationFactory() { registerBuildConfiguration(QmakeProjectManager::Constants::QMAKE_BC_ID); + setSupportedTargetDeviceTypes({Constants::IOS_DEVICE_TYPE, Constants::IOS_SIMULATOR_TYPE}); + setBasePriority(1); } -int IosBuildConfigurationFactory::priority(const ProjectExplorer::Kit *k, const QString &projectPath) const -{ - return (QmakeBuildConfigurationFactory::priority(k, projectPath) >= 0 - && IosManager::supportsIos(k)) ? 1 : -1; -} - -int IosBuildConfigurationFactory::priority(const ProjectExplorer::Target *parent) const -{ - return (IBuildConfigurationFactory::priority(parent) >= 0 - && IosManager::supportsIos(parent)) ? 1 : -1; -} - - } // namespace Internal } // namespace Ios diff --git a/src/plugins/ios/iosbuildconfiguration.h b/src/plugins/ios/iosbuildconfiguration.h index 8eff217bc82..60f8d0d0d8f 100644 --- a/src/plugins/ios/iosbuildconfiguration.h +++ b/src/plugins/ios/iosbuildconfiguration.h @@ -52,9 +52,6 @@ class IosBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfi { public: IosBuildConfigurationFactory(); - - int priority(const ProjectExplorer::Kit *k, const QString &projectPath) const override; - int priority(const ProjectExplorer::Target *parent) const override; }; } // namespace Internal diff --git a/src/plugins/ios/iosbuildstep.cpp b/src/plugins/ios/iosbuildstep.cpp index 5d89f7c6a88..61fb670c907 100644 --- a/src/plugins/ios/iosbuildstep.cpp +++ b/src/plugins/ios/iosbuildstep.cpp @@ -26,7 +26,6 @@ #include "iosbuildstep.h" #include "iosconstants.h" #include "ui_iosbuildstep.h" -#include "iosmanager.h" #include #include @@ -162,7 +161,7 @@ QStringList IosBuildStep::defaultArguments() const } if (!SysRootKitInformation::sysRoot(kit).isEmpty()) res << "-sdk" << SysRootKitInformation::sysRoot(kit).toString(); - res << "SYMROOT=" + IosManager::resDirForTarget(target()); + res << "SYMROOT=" + target()->activeBuildConfiguration()->buildDirectory().toString(); return res; } diff --git a/src/plugins/ios/iosdeployconfiguration.cpp b/src/plugins/ios/iosdeployconfiguration.cpp index fcdb6ad0661..1397e98d9ce 100644 --- a/src/plugins/ios/iosdeployconfiguration.cpp +++ b/src/plugins/ios/iosdeployconfiguration.cpp @@ -26,7 +26,6 @@ #include "iosconstants.h" #include "iosdeploystep.h" #include "iosdeployconfiguration.h" -#include "iosmanager.h" #include #include @@ -56,13 +55,9 @@ IosDeployConfigurationFactory::IosDeployConfigurationFactory() setObjectName("IosDeployConfigurationFactory"); registerDeployConfiguration(IOS_DEPLOYCONFIGURATION_ID); setSupportedProjectType(QmakeProjectManager::Constants::QMAKEPROJECT_ID); + setSupportedTargetDeviceTypes({Constants::IOS_DEVICE_TYPE, Constants::IOS_SIMULATOR_TYPE}); setDefaultDisplayName(tr("Deploy on iOS")); } -bool IosDeployConfigurationFactory::canHandle(Target *target) const -{ - return DeployConfigurationFactory::canHandle(target) && IosManager::supportsIos(target->kit()); -} - } // namespace Internal } // namespace Ios diff --git a/src/plugins/ios/iosdeployconfiguration.h b/src/plugins/ios/iosdeployconfiguration.h index 1a1f8bd377c..85c0097195c 100644 --- a/src/plugins/ios/iosdeployconfiguration.h +++ b/src/plugins/ios/iosdeployconfiguration.h @@ -45,8 +45,6 @@ class IosDeployConfigurationFactory : public ProjectExplorer::DeployConfiguratio public: IosDeployConfigurationFactory(); - - bool canHandle(ProjectExplorer::Target *target) const override; }; } // namespace Internal diff --git a/src/plugins/ios/iosdeploystep.cpp b/src/plugins/ios/iosdeploystep.cpp index d9a67ea9623..b311bd54331 100644 --- a/src/plugins/ios/iosdeploystep.cpp +++ b/src/plugins/ios/iosdeploystep.cpp @@ -28,7 +28,6 @@ #include "iosbuildstep.h" #include "iosconstants.h" #include "iosrunconfiguration.h" -#include "iosmanager.h" #include "iostoolhandler.h" #include diff --git a/src/plugins/ios/iosdeploystepfactory.cpp b/src/plugins/ios/iosdeploystepfactory.cpp index d14660fa38c..b6a3506e91e 100644 --- a/src/plugins/ios/iosdeploystepfactory.cpp +++ b/src/plugins/ios/iosdeploystepfactory.cpp @@ -25,16 +25,10 @@ #include "iosdeploystepfactory.h" +#include "iosconstants.h" #include "iosdeploystep.h" -#include "iosmanager.h" -#include #include -#include - -#include - -using namespace ProjectExplorer; namespace Ios { namespace Internal { @@ -44,14 +38,9 @@ IosDeployStepFactory::IosDeployStepFactory() registerStep(IosDeployStep::Id); setDisplayName(tr("Deploy to iOS device or emulator")); setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_DEPLOY); + setSupportedDeviceTypes({Constants::IOS_DEVICE_TYPE, Constants::IOS_SIMULATOR_TYPE}); setRepeatable(false); } -bool IosDeployStepFactory::canHandle(BuildStepList *parent) const -{ - return BuildStepFactory::canHandle(parent) - && IosManager::supportsIos(parent->target()); -} - } // namespace Internal } // namespace Ios diff --git a/src/plugins/ios/iosdeploystepfactory.h b/src/plugins/ios/iosdeploystepfactory.h index 75bf7ef7cb4..73d01f05997 100644 --- a/src/plugins/ios/iosdeploystepfactory.h +++ b/src/plugins/ios/iosdeploystepfactory.h @@ -36,7 +36,6 @@ class IosDeployStepFactory : public ProjectExplorer::BuildStepFactory public: IosDeployStepFactory(); - bool canHandle(ProjectExplorer::BuildStepList *parent) const; }; } // namespace Internal diff --git a/src/plugins/ios/iosdsymbuildstep.cpp b/src/plugins/ios/iosdsymbuildstep.cpp index 2d2f494766a..95790185387 100644 --- a/src/plugins/ios/iosdsymbuildstep.cpp +++ b/src/plugins/ios/iosdsymbuildstep.cpp @@ -27,7 +27,6 @@ #include "iosconstants.h" #include "ui_iospresetbuildstep.h" -#include "iosmanager.h" #include "iosconfigurations.h" #include "iosrunconfiguration.h" diff --git a/src/plugins/ios/iosmanager.cpp b/src/plugins/ios/iosmanager.cpp deleted file mode 100644 index 354c71658d0..00000000000 --- a/src/plugins/ios/iosmanager.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "iosmanager.h" -#include "iosconfigurations.h" -#include "iosrunconfiguration.h" - -#include -#include -#include -#include -#include -#include - -using namespace QmakeProjectManager; -using namespace ProjectExplorer; - -namespace Ios { -namespace Internal { - -/*! - Returns \c true if the target supports iOS build, \c false otherwise. -*/ -bool IosManager::supportsIos(const Target *target) -{ - return qobject_cast(target->project()) && supportsIos(target->kit()); -} - -/*! - Returns \c true if the kit supports iOS build, \c false otherwise. -*/ -bool IosManager::supportsIos(const Kit *kit) -{ - bool supports = false; - if (kit) { - QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); - supports = version && version->type() == QLatin1String(Ios::Constants::IOSQT); - } - return supports; -} - -QString IosManager::resDirForTarget(Target *target) -{ - return target->activeBuildConfiguration()->buildDirectory().toString(); -} - -} // namespace Internal -} // namespace Ios diff --git a/src/plugins/ios/iosmanager.h b/src/plugins/ios/iosmanager.h deleted file mode 100644 index 163da42d512..00000000000 --- a/src/plugins/ios/iosmanager.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include - -#include -#include -#include - -namespace ProjectExplorer { - class Target; - class Kit; -} - -namespace Ios { -namespace Internal { - -class IosManager : public QObject -{ - Q_OBJECT - -public: - static bool supportsIos(const ProjectExplorer::Target *target); - static bool supportsIos(const ProjectExplorer::Kit *kit); - static QString resDirForTarget(ProjectExplorer::Target *target); -}; - -} // namespace Internal -} // namespace Ios diff --git a/src/plugins/ios/iosplugin.cpp b/src/plugins/ios/iosplugin.cpp index b2b33d8ae32..1841ed73a65 100644 --- a/src/plugins/ios/iosplugin.cpp +++ b/src/plugins/ios/iosplugin.cpp @@ -32,7 +32,6 @@ #include "iosdeployconfiguration.h" #include "iosdeploystepfactory.h" #include "iosdevicefactory.h" -#include "iosmanager.h" #include "iosdsymbuildstep.h" #include "iosqtversionfactory.h" #include "iosrunfactories.h" diff --git a/src/plugins/ios/iosqtversion.cpp b/src/plugins/ios/iosqtversion.cpp index e6e462f5340..1c18d07ffa1 100644 --- a/src/plugins/ios/iosqtversion.cpp +++ b/src/plugins/ios/iosqtversion.cpp @@ -26,7 +26,6 @@ #include "iosqtversion.h" #include "iosconstants.h" #include "iosconfigurations.h" -#include "iosmanager.h" #include #include diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp index 78a3928d521..40053f3cc7a 100644 --- a/src/plugins/ios/iosrunconfiguration.cpp +++ b/src/plugins/ios/iosrunconfiguration.cpp @@ -25,7 +25,6 @@ #include "iosrunconfiguration.h" #include "iosconstants.h" -#include "iosmanager.h" #include "iosdeploystep.h" #include "simulatorcontrol.h" diff --git a/src/plugins/ios/iosrunfactories.cpp b/src/plugins/ios/iosrunfactories.cpp index 8de2583e56f..00b158840be 100644 --- a/src/plugins/ios/iosrunfactories.cpp +++ b/src/plugins/ios/iosrunfactories.cpp @@ -27,7 +27,6 @@ #include "iosconstants.h" #include "iosrunconfiguration.h" -#include "iosmanager.h" #include #include @@ -48,6 +47,7 @@ IosRunConfigurationFactory::IosRunConfigurationFactory(QObject *parent) { setObjectName("IosRunConfigurationFactory"); registerRunConfiguration(Constants::IOS_RC_ID_PREFIX); + setSupportedTargetDeviceTypes({Constants::IOS_DEVICE_TYPE, Constants::IOS_SIMULATOR_TYPE}); setSupportedProjectType(); } @@ -69,11 +69,6 @@ QString IosRunConfigurationFactory::displayNameForBuildTarget(const QString &bui return QFileInfo(buildTarget).completeBaseName(); } -bool IosRunConfigurationFactory::canHandle(Target *t) const -{ - return IRunConfigurationFactory::canHandle(t) && IosManager::supportsIos(t->kit()); -} - QList IosRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n) { QList result; diff --git a/src/plugins/ios/iosrunfactories.h b/src/plugins/ios/iosrunfactories.h index 0b64e3a7eec..829e9eb6b74 100644 --- a/src/plugins/ios/iosrunfactories.h +++ b/src/plugins/ios/iosrunfactories.h @@ -46,7 +46,6 @@ public: QList availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QString displayNameForBuildTarget(const QString &buildTarget) const override; - bool canHandle(ProjectExplorer::Target *t) const override; bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override; QList runConfigurationsForNode(ProjectExplorer::Target *t, diff --git a/src/plugins/ios/iosrunner.cpp b/src/plugins/ios/iosrunner.cpp index a1ad19d3e8f..6681a273544 100644 --- a/src/plugins/ios/iosrunner.cpp +++ b/src/plugins/ios/iosrunner.cpp @@ -26,7 +26,6 @@ #include "iosbuildstep.h" #include "iosconfigurations.h" #include "iosdevice.h" -#include "iosmanager.h" #include "iosrunconfiguration.h" #include "iosrunner.h" #include "iossimulator.h" diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index d0856ad398e..b661a1cfda4 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -332,7 +332,7 @@ IBuildConfigurationFactory::~IBuildConfigurationFactory() int IBuildConfigurationFactory::priority(const Target *parent) const { - return canHandle(parent) ? 0 : -1; + return canHandle(parent) ? m_basePriority : -1; } int IBuildConfigurationFactory::priority(const Kit *k, const QString &projectPath) const @@ -422,6 +422,11 @@ void IBuildConfigurationFactory::setSupportedTargetDeviceTypes(const QListproject()->id()) diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index c9584e1d9ba..b5903e40b0f 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -157,6 +157,7 @@ protected: void setSupportedProjectMimeTypeName(const QString &mimeTypeName); void setSupportedTargetDeviceTypes(const QList &ids); void setDefaultDisplayName(const QString &defaultDisplayName); + void setBasePriority(int basePriority); using BuildConfigurationCreator = std::function; @@ -177,6 +178,7 @@ private: Core::Id m_supportedProjectType; QList m_supportedTargetDeviceTypes; QString m_supportedProjectMimeTypeName; + int m_basePriority = 0; // Use higher numbers (1, 2, ...) for higher priorities. }; } // namespace ProjectExplorer