ProjectExplorer: Return BuildTargetInfo from availableBuildTarget()

... including build target name and display names instead of
returning QString build target names and producing display names
via displayNameForBuildTarget()

This is a mechanical intermediate step on the road to use
Target::applicationTargets().list uniformly as source of build
targets.

Change-Id: I7b0b1fb398d5061b0cec0b86890f9eaf0bb53a19
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-01-03 16:41:40 +01:00
parent 94086e53bd
commit c3d87e81c5
21 changed files with 117 additions and 110 deletions

View File

@@ -48,19 +48,17 @@ BareMetalRunConfigurationFactory::BareMetalRunConfigurationFactory(QObject *pare
setSupportedTargetDeviceTypes({BareMetal::Constants::BareMetalOsType}); setSupportedTargetDeviceTypes({BareMetal::Constants::BareMetalOsType});
} }
QList<QString> BareMetalRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode) const QList<BuildTargetInfo>
BareMetalRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode) const
{ {
return Utils::transform(parent->applicationTargets().list, [](const BuildTargetInfo &bti) { return Utils::transform(parent->applicationTargets().list, [](BuildTargetInfo bti) {
return QString(bti.projectFilePath.toString() + '/' + bti.targetName); bti.displayName = tr("%1 (on GDB server or hardware debugger)")
.arg(QFileInfo(bti.targetName).fileName());
bti.targetName = bti.projectFilePath.toString() + '/' + bti.targetName;
return bti;
}); });
} }
QString BareMetalRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const
{
return tr("%1 (on GDB server or hardware debugger)").arg(QFileInfo(buildTarget).fileName());
}
// BareMetalCustomRunConfigurationFactory // BareMetalCustomRunConfigurationFactory
BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory(QObject *parent) : BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory(QObject *parent) :

View File

@@ -37,8 +37,8 @@ class BareMetalRunConfigurationFactory : public ProjectExplorer::IRunConfigurati
public: public:
explicit BareMetalRunConfigurationFactory(QObject *parent = 0); explicit BareMetalRunConfigurationFactory(QObject *parent = 0);
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
}; };
class BareMetalCustomRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFactory class BareMetalCustomRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFactory

View File

@@ -241,10 +241,17 @@ CMakeRunConfigurationFactory::CMakeRunConfigurationFactory(QObject *parent) :
addSupportedProjectType(CMakeProjectManager::Constants::CMAKEPROJECT_ID); addSupportedProjectType(CMakeProjectManager::Constants::CMAKEPROJECT_ID);
} }
QList<QString> CMakeRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode) const QList<BuildTargetInfo>
CMakeRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode) const
{ {
CMakeProject *project = static_cast<CMakeProject *>(parent->project()); CMakeProject *project = static_cast<CMakeProject *>(parent->project());
return project->buildTargetTitles(true); const QStringList titles = project->buildTargetTitles(true);
return Utils::transform(titles, [project](const QString &title) {
BuildTargetInfo bti;
bti.targetName = title;
bti.displayName = title;
return bti;
});
} }
bool CMakeRunConfigurationFactory::canCreateHelper(Target *parent, const QString &buildTarget) const bool CMakeRunConfigurationFactory::canCreateHelper(Target *parent, const QString &buildTarget) const

View File

@@ -83,7 +83,8 @@ class CMakeRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFa
public: public:
explicit CMakeRunConfigurationFactory(QObject *parent = 0); explicit CMakeRunConfigurationFactory(QObject *parent = 0);
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override; bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override;
}; };

View File

@@ -53,20 +53,28 @@ IosRunConfigurationFactory::IosRunConfigurationFactory(QObject *parent)
bool IosRunConfigurationFactory::canCreateHelper(Target *parent, const QString &buildTarget) const bool IosRunConfigurationFactory::canCreateHelper(Target *parent, const QString &buildTarget) const
{ {
return availableBuildTargets(parent, UserCreate).contains(buildTarget); auto project = static_cast<QmakeProject *>(parent->project());
const QList<QString> buildTargets = project->buildTargets(UserCreate, {ProjectType::ApplicationTemplate,
ProjectType::SharedLibraryTemplate,
ProjectType::AuxTemplate});
return buildTargets.contains(buildTarget);
} }
QList<QString> IosRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const QList<BuildTargetInfo>
IosRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{ {
auto project = static_cast<QmakeProject *>(parent->project()); auto project = static_cast<QmakeProject *>(parent->project());
return project->buildTargets(mode, {ProjectType::ApplicationTemplate, const QList<QString> buildTargets = project->buildTargets(mode, {ProjectType::ApplicationTemplate,
ProjectType::SharedLibraryTemplate, ProjectType::SharedLibraryTemplate,
ProjectType::AuxTemplate}); ProjectType::AuxTemplate});
}
QString IosRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const return Utils::transform(buildTargets, [](const QString &buildTarget) {
{ BuildTargetInfo bti;
return QFileInfo(buildTarget).completeBaseName(); bti.targetName = buildTarget;
bti.displayName = QFileInfo(buildTarget).completeBaseName();
return bti;
});
} }
QList<RunConfiguration *> IosRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n) QList<RunConfiguration *> IosRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n)

View File

@@ -43,8 +43,8 @@ class IosRunConfigurationFactory : public QmakeProjectManager::QmakeRunConfigura
public: public:
explicit IosRunConfigurationFactory(QObject *parent = 0); explicit IosRunConfigurationFactory(QObject *parent = 0);
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override; bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override;

View File

@@ -454,31 +454,25 @@ QList<RunConfigurationCreationInfo>
if (!canHandle(parent)) if (!canHandle(parent))
return {}; return {};
if (m_fixedBuildTargets.isEmpty()) {
return Utils::transform(availableBuildTargets(parent, mode), [this](const QString &suffix) {
return RunConfigurationCreationInfo{this, m_runConfigBaseId, suffix,
this->displayNameForBuildTarget(suffix)};
});
}
QList<RunConfigurationCreationInfo> result; QList<RunConfigurationCreationInfo> result;
for (const BuildTargetInfo &bt : m_fixedBuildTargets) {
RunConfigurationCreationInfo rci(this, m_runConfigBaseId, QString(), bt.displayName); const QList<BuildTargetInfo> buildTargets = m_fixedBuildTargets.isEmpty()
? availableBuildTargets(parent, mode)
: m_fixedBuildTargets;
for (const BuildTargetInfo &bt : buildTargets) {
RunConfigurationCreationInfo rci(this, m_runConfigBaseId, bt.targetName, bt.displayName);
result.append(rci); result.append(rci);
} }
return result; return result;
} }
QList<QString> IRunConfigurationFactory::availableBuildTargets(Target *, CreationMode) const QList<BuildTargetInfo> IRunConfigurationFactory::availableBuildTargets(Target *, CreationMode) const
{ {
return {}; return {};
} }
QString IRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const
{
return buildTarget;
}
/*! /*!
Specifies a list of device types for which this RunConfigurationFactory Specifies a list of device types for which this RunConfigurationFactory

View File

@@ -321,8 +321,7 @@ signals:
void availableCreationIdsChanged(); void availableCreationIdsChanged();
protected: protected:
virtual QList<QString> availableBuildTargets(Target *parent, CreationMode mode = UserCreate) const; virtual QList<BuildTargetInfo> availableBuildTargets(Target *parent, CreationMode mode = UserCreate) const;
virtual QString displayNameForBuildTarget(const QString &buildTarget) const;
virtual bool canCreateHelper(Target *parent, const QString &buildTarget) const; virtual bool canCreateHelper(Target *parent, const QString &buildTarget) const;

View File

@@ -264,12 +264,15 @@ public:
addSupportedProjectType(PythonProjectId); addSupportedProjectType(PythonProjectId);
} }
QList<QString> availableBuildTargets(Target *parent, CreationMode mode) const override QList<BuildTargetInfo> availableBuildTargets(Target *parent, CreationMode mode) const override
{ {
Q_UNUSED(mode); Q_UNUSED(mode);
//return { Core::Id(PythonExecutableId) }; return Utils::transform(parent->project()->files(Project::AllFiles), [](const FileName &fn) {
PythonProject *project = static_cast<PythonProject *>(parent->project()); BuildTargetInfo bti;
return Utils::transform(project->files(ProjectExplorer::Project::AllFiles), &Utils::FileName::toString); bti.targetName = fn.toString();
bti.displayName = fn.toString();
return bti;
});
} }
bool canCreateHelper(Target *parent, const QString &buildTarget) const override bool canCreateHelper(Target *parent, const QString &buildTarget) const override

View File

@@ -364,7 +364,7 @@ bool QbsRunConfigurationFactory::canCreateHelper(Target *parent, const QString &
return findProduct(project->qbsProjectData(), product).isValid(); return findProduct(project->qbsProjectData(), product).isValid();
} }
QList<QString> QbsRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const QList<BuildTargetInfo> QbsRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{ {
QList<qbs::ProductData> products; QList<qbs::ProductData> products;
@@ -387,18 +387,13 @@ QList<QString> QbsRunConfigurationFactory::availableBuildTargets(Target *parent,
} }
return Utils::transform(products, [project](const qbs::ProductData &product) { return Utils::transform(products, [project](const qbs::ProductData &product) {
return QString(QbsProject::uniqueProductName(product) + rcNameSeparator() QString displayName = QbsProject::productDisplayName(project->qbsProject(), product);
+ QbsProject::productDisplayName(project->qbsProject(), product)); BuildTargetInfo bti;
bti.targetName = QbsProject::uniqueProductName(product) + rcNameSeparator() + displayName;
bti.displayName = displayName;
return bti;
}); });
} }
QString QbsRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const
{
const int sepPos = buildTarget.indexOf(rcNameSeparator());
if (sepPos == -1)
return buildTarget;
return buildTarget.mid(sepPos + rcNameSeparator().count());
}
} // namespace Internal } // namespace Internal
} // namespace QbsProjectManager } // namespace QbsProjectManager

View File

@@ -112,8 +112,8 @@ public:
bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override; bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override;
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -56,15 +56,19 @@ QmakeAndroidRunConfigurationFactory::QmakeAndroidRunConfigurationFactory(QObject
setSupportedTargetDeviceTypes({Android::Constants::ANDROID_DEVICE_TYPE}); setSupportedTargetDeviceTypes({Android::Constants::ANDROID_DEVICE_TYPE});
} }
QString QmakeAndroidRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const QList<BuildTargetInfo>
{ QmakeAndroidRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
return QFileInfo(buildTarget).completeBaseName();
}
QList<QString> QmakeAndroidRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{ {
auto project = static_cast<QmakeProject *>(parent->project()); auto project = static_cast<QmakeProject *>(parent->project());
return project->buildTargets(mode, {ProjectType::ApplicationTemplate, ProjectType::SharedLibraryTemplate}); const QList<QString> buildTargets =
project->buildTargets(mode, {ProjectType::ApplicationTemplate, ProjectType::SharedLibraryTemplate});
return Utils::transform(buildTargets, [](const QString &buildTarget) {
BuildTargetInfo bti;
bti.targetName = buildTarget;
bti.displayName = QFileInfo(buildTarget).completeBaseName();
return bti;
});
} }
} // namespace Internal } // namespace Internal

View File

@@ -39,8 +39,8 @@ class QmakeAndroidRunConfigurationFactory : public ProjectExplorer::IRunConfigur
public: public:
explicit QmakeAndroidRunConfigurationFactory(QObject *parent = nullptr); explicit QmakeAndroidRunConfigurationFactory(QObject *parent = nullptr);
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -454,15 +454,17 @@ bool DesktopQmakeRunConfigurationFactory::canCreateHelper(Target *parent, const
return project->hasApplicationProFile(Utils::FileName::fromString(buildTarget)); return project->hasApplicationProFile(Utils::FileName::fromString(buildTarget));
} }
QList<QString> DesktopQmakeRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const QList<BuildTargetInfo>
DesktopQmakeRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{ {
QmakeProject *project = static_cast<QmakeProject *>(parent->project()); QmakeProject *project = static_cast<QmakeProject *>(parent->project());
return project->buildTargets(mode); const QList<QString> buildTargets = project->buildTargets(mode);
} return Utils::transform(buildTargets, [](const QString &buildTarget) {
BuildTargetInfo bti;
QString DesktopQmakeRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const bti.targetName = buildTarget;
{ bti.displayName = QFileInfo(buildTarget).completeBaseName();
return QFileInfo(buildTarget).completeBaseName(); return bti;
});
} }
QList<RunConfiguration *> DesktopQmakeRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n) QList<RunConfiguration *> DesktopQmakeRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n)

View File

@@ -141,8 +141,8 @@ public:
bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override; bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override;
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t, QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t,
const ProjectExplorer::Node *n) override; const ProjectExplorer::Node *n) override;

View File

@@ -33,6 +33,8 @@
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <qmakeprojectmanager/qmakeproject.h> #include <qmakeprojectmanager/qmakeproject.h>
using namespace ProjectExplorer;
namespace Qnx { namespace Qnx {
namespace Internal { namespace Internal {
@@ -43,19 +45,17 @@ QnxRunConfigurationFactory::QnxRunConfigurationFactory(QObject *parent) :
setSupportedTargetDeviceTypes({Constants::QNX_QNX_OS_TYPE}); setSupportedTargetDeviceTypes({Constants::QNX_QNX_OS_TYPE});
} }
QList<QString> QnxRunConfigurationFactory::availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const QList<ProjectExplorer::BuildTargetInfo>
QnxRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{ {
auto project = qobject_cast<QmakeProjectManager::QmakeProject *>(parent->project()); auto project = qobject_cast<QmakeProjectManager::QmakeProject *>(parent->project());
if (!project) const QList<QString> buildTargets = project->buildTargets(mode);
return {}; return Utils::transform(buildTargets, [](const QString &buildTarget) {
return project->buildTargets(mode); BuildTargetInfo bti;
} bti.targetName = buildTarget;
bti.displayName = tr("%1 on QNX Device").arg(QFileInfo(buildTarget).completeBaseName());
QString QnxRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const return bti;
{ });
if (buildTarget.isEmpty())
return QString();
return tr("%1 on QNX Device").arg(QFileInfo(buildTarget).completeBaseName());
} }
bool QnxRunConfigurationFactory::canCreateHelper(ProjectExplorer::Target *parent, bool QnxRunConfigurationFactory::canCreateHelper(ProjectExplorer::Target *parent,

View File

@@ -38,8 +38,8 @@ class QnxRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFact
public: public:
explicit QnxRunConfigurationFactory(QObject *parent = 0); explicit QnxRunConfigurationFactory(QObject *parent = 0);
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override; bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override;
}; };

View File

@@ -53,19 +53,14 @@ bool RemoteLinuxRunConfigurationFactory::canCreateHelper(Target *parent, const Q
return parent->applicationTargets().hasTarget(buildTarget); return parent->applicationTargets().hasTarget(buildTarget);
} }
QList<QString> QList<BuildTargetInfo> RemoteLinuxRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode) const
RemoteLinuxRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode) const
{ {
return Utils::transform(parent->applicationTargets().list, [](const BuildTargetInfo &bti) { return Utils::transform(parent->applicationTargets().list, [](BuildTargetInfo bti) {
return bti.targetName; bti.displayName = bti.targetName + ' ' + tr("(on Remote Generic Linux Host)");
return bti;
}); });
} }
QString RemoteLinuxRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const
{
return buildTarget + ' ' + tr("(on Remote Generic Linux Host)");
}
// RemoteLinuxCustomRunConfigurationFactory // RemoteLinuxCustomRunConfigurationFactory
RemoteLinuxCustomRunConfigurationFactory::RemoteLinuxCustomRunConfigurationFactory(QObject *parent) RemoteLinuxCustomRunConfigurationFactory::RemoteLinuxCustomRunConfigurationFactory(QObject *parent)

View File

@@ -37,8 +37,8 @@ class RemoteLinuxRunConfigurationFactory : public ProjectExplorer::IRunConfigura
public: public:
explicit RemoteLinuxRunConfigurationFactory(QObject *parent = 0); explicit RemoteLinuxRunConfigurationFactory(QObject *parent = 0);
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override; bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override;
}; };

View File

@@ -50,16 +50,17 @@ WinRtRunConfigurationFactory::WinRtRunConfigurationFactory()
Constants::WINRT_DEVICE_TYPE_EMULATOR}); Constants::WINRT_DEVICE_TYPE_EMULATOR});
} }
QList<QString> WinRtRunConfigurationFactory::availableBuildTargets(Target *parent, QList<BuildTargetInfo>
CreationMode mode) const WinRtRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{ {
QmakeProject *project = static_cast<QmakeProject *>(parent->project()); QmakeProject *project = static_cast<QmakeProject *>(parent->project());
return project->buildTargets(mode); const QList<QString> buildTargets = project->buildTargets(mode);
} return Utils::transform(buildTargets, [](const QString &buildTarget) {
BuildTargetInfo bti;
QString WinRtRunConfigurationFactory::displayNameForBuildTarget(const QString &) const bti.targetName = buildTarget;
{ bti.displayName = tr("Run App Package");
return tr("Run App Package"); return bti;
});
} }
} // namespace Internal } // namespace Internal

View File

@@ -38,8 +38,8 @@ class WinRtRunConfigurationFactory : public ProjectExplorer::IRunConfigurationF
public: public:
WinRtRunConfigurationFactory(); WinRtRunConfigurationFactory();
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override; QList<ProjectExplorer::BuildTargetInfo>
QString displayNameForBuildTarget(const QString &buildTarget) const override; availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
}; };
} // namespace Internal } // namespace Internal