From 36f720907c49dd6a3d71290b576780d347bf9411 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 19 Dec 2017 10:32:39 +0100 Subject: [PATCH] Android: Use device types as restrictions on project configurations Change-Id: I3f7ff05f27c76dadec9a9ff0ae02848830655472 Reviewed-by: Vikas Pachdha --- .../android/androiddeployconfiguration.cpp | 6 --- .../android/androiddeployconfiguration.h | 1 - src/plugins/android/androiddeployqtstep.cpp | 8 +-- src/plugins/android/androiddeployqtstep.h | 1 - src/plugins/android/androidmanager.cpp | 15 +----- src/plugins/android/androidmanager.h | 5 -- .../androidpackageinstallationstep.cpp | 6 +-- .../android/androidpackageinstallationstep.h | 2 - .../androidpackageinstallationfactory.cpp | 49 +++++++++++++++++++ .../androidqmakebuildconfigurationfactory.cpp | 19 ++----- .../androidqmakebuildconfigurationfactory.h | 3 -- .../qmakeandroidbuildapkstep.cpp | 8 +-- .../qmakeandroidbuildapkstep.h | 1 - .../qmakeandroidrunfactories.cpp | 8 +-- .../qmakeandroidrunfactories.h | 8 +-- 15 files changed, 60 insertions(+), 80 deletions(-) create mode 100644 src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp diff --git a/src/plugins/android/androiddeployconfiguration.cpp b/src/plugins/android/androiddeployconfiguration.cpp index a323fc72aad..9cda662910a 100644 --- a/src/plugins/android/androiddeployconfiguration.cpp +++ b/src/plugins/android/androiddeployconfiguration.cpp @@ -77,11 +77,5 @@ QList AndroidDeployConfigurationFactory::availableBuildTargets(Target * return {QString()}; } -bool AndroidDeployConfigurationFactory::canHandle(Target *parent) const -{ - return DeployConfigurationFactory::canHandle(parent) - && AndroidManager::supportsAndroid(parent->kit()); -} - } // namespace Internal } // namespace Android diff --git a/src/plugins/android/androiddeployconfiguration.h b/src/plugins/android/androiddeployconfiguration.h index fb1f5f5066a..c50fec6621d 100644 --- a/src/plugins/android/androiddeployconfiguration.h +++ b/src/plugins/android/androiddeployconfiguration.h @@ -46,7 +46,6 @@ class AndroidDeployConfigurationFactory : public ProjectExplorer::DeployConfigur public: AndroidDeployConfigurationFactory(); - bool canHandle(ProjectExplorer::Target *target) const override; QList availableBuildTargets(ProjectExplorer::Target *parent) const override; }; diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index ca10a6d32c9..1c3bb0d99e0 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -75,17 +75,11 @@ AndroidDeployQtStepFactory::AndroidDeployQtStepFactory() { registerStep(AndroidDeployQtStep::Id); setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_DEPLOY); + setSupportedDeviceType(Constants::ANDROID_DEVICE_TYPE); setRepeatable(false); setDisplayName(tr("Deploy to Android device or emulator")); } -bool AndroidDeployQtStepFactory::canHandle(BuildStepList *parent) const -{ - return BuildStepFactory::canHandle(parent) - && AndroidManager::supportsAndroid(parent->target()); -} - - // AndroidDeployQtStep AndroidDeployQtStep::AndroidDeployQtStep(ProjectExplorer::BuildStepList *parent) diff --git a/src/plugins/android/androiddeployqtstep.h b/src/plugins/android/androiddeployqtstep.h index d71cead2bd8..80ba7f5ef38 100644 --- a/src/plugins/android/androiddeployqtstep.h +++ b/src/plugins/android/androiddeployqtstep.h @@ -46,7 +46,6 @@ class AndroidDeployQtStepFactory : public ProjectExplorer::BuildStepFactory Q_OBJECT public: AndroidDeployQtStepFactory(); - bool canHandle(ProjectExplorer::BuildStepList *bsl) const; }; class AndroidDeployQtStep : public ProjectExplorer::BuildStep diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 8b5afb00920..53a3f6ada4d 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -102,17 +102,6 @@ AndroidQtSupport::~AndroidQtSupport() g_androidQtSupportProviders.removeOne(this); } -bool AndroidManager::supportsAndroid(const ProjectExplorer::Kit *kit) -{ - QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); - return version && version->targetDeviceTypes().contains(Constants::ANDROID_DEVICE_TYPE); -} - -bool AndroidManager::supportsAndroid(const ProjectExplorer::Target *target) -{ - return supportsAndroid(target->kit()); -} - QString AndroidManager::packageName(ProjectExplorer::Target *target) { QDomDocument doc; @@ -165,8 +154,8 @@ int AndroidManager::minimumSDK(ProjectExplorer::Target *target) int AndroidManager::minimumSDK(const ProjectExplorer::Kit *kit) { int minSDKVersion = -1; - if (supportsAndroid(kit)) { - QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); + QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); + if (version && version->targetDeviceTypes().contains(Constants::ANDROID_DEVICE_TYPE)) { Utils::FileName stockManifestFilePath = Utils::FileName::fromUserInput(version->qmakeProperty("QT_INSTALL_PREFIX") + QLatin1String("/src/android/templates/AndroidManifest.xml")); diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h index e9d8fc5062a..d6e175c66f7 100644 --- a/src/plugins/android/androidmanager.h +++ b/src/plugins/android/androidmanager.h @@ -29,7 +29,6 @@ #include #include -#include namespace ProjectExplorer { class Kit; @@ -47,10 +46,6 @@ class ANDROID_EXPORT AndroidManager : public QObject Q_OBJECT public: - - static bool supportsAndroid(const ProjectExplorer::Kit *kit); - static bool supportsAndroid(const ProjectExplorer::Target *target); - static QString packageName(ProjectExplorer::Target *target); static QString packageName(const Utils::FileName &manifestFile); diff --git a/src/plugins/android/androidpackageinstallationstep.cpp b/src/plugins/android/androidpackageinstallationstep.cpp index c8fcb74501c..c5d3d69f531 100644 --- a/src/plugins/android/androidpackageinstallationstep.cpp +++ b/src/plugins/android/androidpackageinstallationstep.cpp @@ -153,14 +153,10 @@ AndroidPackageInstallationFactory::AndroidPackageInstallationFactory() { registerStep(Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID); setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); + setSupportedDeviceType(Android::Constants::ANDROID_DEVICE_TYPE); setRepeatable(false); setDisplayName(tr("Deploy to device")); } -bool AndroidPackageInstallationFactory::canHandle(BuildStepList *bsl) const -{ - return BuildStepFactory::canHandle(bsl) && AndroidManager::supportsAndroid(bsl->target()); -} - } // namespace Internal } // namespace Android diff --git a/src/plugins/android/androidpackageinstallationstep.h b/src/plugins/android/androidpackageinstallationstep.h index 42edd7f01e7..ad3b2dd7aa3 100644 --- a/src/plugins/android/androidpackageinstallationstep.h +++ b/src/plugins/android/androidpackageinstallationstep.h @@ -71,8 +71,6 @@ class AndroidPackageInstallationFactory: public ProjectExplorer::BuildStepFactor public: AndroidPackageInstallationFactory(); - - bool canHandle(ProjectExplorer::BuildStepList *bsl) const override; }; } // namespace Internal diff --git a/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp b/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp new file mode 100644 index 00000000000..0c37cba23fc --- /dev/null +++ b/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2016 BogDan Vatra +** 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 "androidpackageinstallationfactory.h" +#include "androidpackageinstallationstep.h" + +#include + +#include +#include + +using namespace ProjectExplorer; + +namespace QmakeAndroidSupport { +namespace Internal { + +AndroidPackageInstallationFactory::AndroidPackageInstallationFactory() +{ + registerStep(AndroidPackageInstallationStep::Id); + setSupportedDeviceType(Android::Constants::ANDROID_DEVICE_TYPE); + setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); + setRepeatable(false); + setDisplayName(tr("Deploy to device")); +} + +} // namespace Internal +} // namespace Android diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp index 99ddfa1972a..040837d7393 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp @@ -27,6 +27,7 @@ #include "qmakeandroidbuildapkstep.h" #include +#include #include #include @@ -52,22 +53,8 @@ namespace Internal { AndroidQmakeBuildConfigurationFactory::AndroidQmakeBuildConfigurationFactory() { registerBuildConfiguration(QmakeProjectManager::Constants::QMAKE_BC_ID); -} - -int AndroidQmakeBuildConfigurationFactory::priority(const Kit *k, const QString &projectPath) const -{ - if (IBuildConfigurationFactory::priority(k, projectPath) >= 0 - && Android::AndroidManager::supportsAndroid(k)) - return 1; - return -1; -} - -int AndroidQmakeBuildConfigurationFactory::priority(const Target *parent) const -{ - if (IBuildConfigurationFactory::priority(parent) >= 0 - && Android::AndroidManager::supportsAndroid(parent)) - return 1; - return -1; + setSupportedTargetDeviceTypes({Android::Constants::ANDROID_DEVICE_TYPE}); + setBasePriority(1); } // AndroidQmakeBuildConfiguration diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h index db2afa89800..868a7a54a14 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h @@ -34,9 +34,6 @@ class AndroidQmakeBuildConfigurationFactory : public QmakeProjectManager::QmakeB { public: AndroidQmakeBuildConfigurationFactory(); - - int priority(const ProjectExplorer::Kit *k, const QString &projectPath) const override; - int priority(const ProjectExplorer::Target *parent) const override; }; class AndroidQmakeBuildConfiguration : public QmakeProjectManager::QmakeBuildConfiguration diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp index 78d9cfff2ab..951422fa58a 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp @@ -64,18 +64,12 @@ QmakeAndroidBuildApkStepFactory::QmakeAndroidBuildApkStepFactory() { registerStep(ANDROID_BUILD_APK_ID); setSupportedProjectType(QmakeProjectManager::Constants::QMAKEPROJECT_ID); + setSupportedDeviceType(Constants::ANDROID_DEVICE_TYPE); setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); setDisplayName(tr("Build Android APK")); setRepeatable(false); } -bool QmakeAndroidBuildApkStepFactory::canHandle(ProjectExplorer::BuildStepList *bsl) const -{ - return BuildStepFactory::canHandle(bsl) - && AndroidManager::supportsAndroid(bsl->target()); -} - - // QmakeAndroidBuildApkStep QmakeAndroidBuildApkStep::QmakeAndroidBuildApkStep(ProjectExplorer::BuildStepList *bc) diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h index 0425a567f3c..dd25216cf11 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h @@ -37,7 +37,6 @@ class QmakeAndroidBuildApkStepFactory : public ProjectExplorer::BuildStepFactory public: QmakeAndroidBuildApkStepFactory(); - bool canHandle(ProjectExplorer::BuildStepList *bsl) const; }; class QmakeAndroidBuildApkStep : public Android::AndroidBuildApkStep diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp index 2406fed4dd0..ab02775f04b 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp @@ -26,7 +26,7 @@ #include "qmakeandroidrunfactories.h" #include "qmakeandroidrunconfiguration.h" -#include +#include #include #include @@ -53,6 +53,7 @@ QmakeAndroidRunConfigurationFactory::QmakeAndroidRunConfigurationFactory(QObject { registerRunConfiguration(ANDROID_RC_ID_PREFIX); addSupportedProjectType(QmakeProjectManager::Constants::QMAKEPROJECT_ID); + setSupportedTargetDeviceTypes({Android::Constants::ANDROID_DEVICE_TYPE}); } QString QmakeAndroidRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const @@ -66,10 +67,5 @@ QList QmakeAndroidRunConfigurationFactory::availableBuildTargets(Target return project->buildTargets(mode, {ProjectType::ApplicationTemplate, ProjectType::SharedLibraryTemplate}); } -bool QmakeAndroidRunConfigurationFactory::canHandle(Target *t) const -{ - return IRunConfigurationFactory::canHandle(t) && AndroidManager::supportsAndroid(t); -} - } // namespace Internal } // namespace Android diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.h b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.h index ea5456d45ee..2950332f385 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.h @@ -26,12 +26,8 @@ #pragma once #include -#include -namespace ProjectExplorer { -class Target; -class Node; -} // namespace ProjectExplorer +namespace ProjectExplorer { class Target; } namespace QmakeAndroidSupport { namespace Internal { @@ -45,8 +41,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; }; } // namespace Internal