ProjectExplorer: Simplify DeployConfigFactory::availableBuildTargets

It only ever returned either an empty list, or a list with a single
empty string. Using a bool return value to distiguish the cases is
less convoluted.

This is a leftover from the time when a DeployConfigurationFactory
could potentially create more than on DeployConfiguration, but this
is not supported anymore, as factories are cheap nowadays.

Change-Id: I4f2a91d3509d2b978949211ee709863d5ff460c7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-01-15 15:25:45 +01:00
parent 54385ad67b
commit 9c23e37f5d
4 changed files with 10 additions and 14 deletions

View File

@@ -60,20 +60,18 @@ AndroidDeployConfigurationFactory::AndroidDeployConfigurationFactory()
setDefaultDisplayName(AndroidDeployConfiguration::tr("Deploy to Android device")); setDefaultDisplayName(AndroidDeployConfiguration::tr("Deploy to Android device"));
} }
QList<QString> AndroidDeployConfigurationFactory::availableBuildTargets(Target *parent) const bool AndroidDeployConfigurationFactory::hasAvailableBuildTargets(Target *parent) const
{ {
if (!parent->project()->id().name().startsWith("QmlProjectManager.QmlProject")) { if (!parent->project()->id().name().startsWith("QmlProjectManager.QmlProject")) {
// Avoid tool chain check for QML Project // Avoid tool chain check for QML Project
Core::Id cxxLangId(ProjectExplorer::Constants::CXX_LANGUAGE_ID); Core::Id cxxLangId(ProjectExplorer::Constants::CXX_LANGUAGE_ID);
ToolChain *tc = ToolChainKitInformation::toolChain(parent->kit(), cxxLangId); ToolChain *tc = ToolChainKitInformation::toolChain(parent->kit(), cxxLangId);
if (!tc || tc->targetAbi().osFlavor() != Abi::AndroidLinuxFlavor) if (!tc || tc->targetAbi().osFlavor() != Abi::AndroidLinuxFlavor)
return {}; return false;
} }
QtSupport::BaseQtVersion *qt = QtSupport::QtKitInformation::qtVersion(parent->kit()); QtSupport::BaseQtVersion *qt = QtSupport::QtKitInformation::qtVersion(parent->kit());
if (!qt || qt->type() != Constants::ANDROIDQT) return qt && qt->type() == Constants::ANDROIDQT;
return {};
return {QString()};
} }
} // namespace Internal } // namespace Internal

View File

@@ -44,7 +44,7 @@ class AndroidDeployConfigurationFactory : public ProjectExplorer::DeployConfigur
public: public:
AndroidDeployConfigurationFactory(); AndroidDeployConfigurationFactory();
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent) const override; bool hasAvailableBuildTargets(ProjectExplorer::Target *parent) const override;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -153,16 +153,14 @@ DeployConfigurationFactory::~DeployConfigurationFactory()
QList<Core::Id> DeployConfigurationFactory::availableCreationIds(Target *parent) const QList<Core::Id> DeployConfigurationFactory::availableCreationIds(Target *parent) const
{ {
if (!canHandle(parent)) if (canHandle(parent) && hasAvailableBuildTargets(parent))
return {m_deployConfigBaseId};
return {}; return {};
return Utils::transform(availableBuildTargets(parent), [this](const QString &suffix) {
return m_deployConfigBaseId.withSuffix(suffix);
});
} }
QList<QString> DeployConfigurationFactory::availableBuildTargets(Target *) const bool DeployConfigurationFactory::hasAvailableBuildTargets(Target *) const
{ {
return {QString()}; return true;
} }
QString DeployConfigurationFactory::displayNameForBuildTarget(const QString &) const QString DeployConfigurationFactory::displayNameForBuildTarget(const QString &) const

View File

@@ -98,7 +98,7 @@ public:
protected: protected:
virtual bool canHandle(ProjectExplorer::Target *target) const; virtual bool canHandle(ProjectExplorer::Target *target) const;
virtual QList<QString> availableBuildTargets(Target *parent) const; virtual bool hasAvailableBuildTargets(Target *parent) const;
virtual QString displayNameForBuildTarget(const QString &buildTarget) const; virtual QString displayNameForBuildTarget(const QString &buildTarget) const;
using DeployConfigurationCreator = std::function<DeployConfiguration *(Target *)>; using DeployConfigurationCreator = std::function<DeployConfiguration *(Target *)>;