QmakeProject: Make availableBuildTargets return a BuildTargetInfo list

It's what the "consumer side" expects.

Change-Id: I1a4e75eda09f8626fcf65290e6c58a08eed9fdca
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-01-05 12:06:56 +01:00
parent 54160400e9
commit c39eb08ac4
7 changed files with 25 additions and 46 deletions

View File

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

View File

@@ -60,15 +60,7 @@ QList<BuildTargetInfo>
QmakeAndroidRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{
auto project = static_cast<QmakeProject *>(parent->project());
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;
});
return project->buildTargets(mode, {ProjectType::ApplicationTemplate, ProjectType::SharedLibraryTemplate});
}
} // namespace Internal

View File

@@ -447,13 +447,7 @@ QList<BuildTargetInfo>
DesktopQmakeRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
const QList<QString> buildTargets = project->buildTargets(mode);
return Utils::transform(buildTargets, [](const QString &buildTarget) {
BuildTargetInfo bti;
bti.targetName = buildTarget;
bti.displayName = QFileInfo(buildTarget).completeBaseName();
return bti;
});
return project->buildTargets(mode);
}
QList<RunConfiguration *> DesktopQmakeRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n)

View File

@@ -784,8 +784,8 @@ bool QmakeProject::hasApplicationProFile(const FileName &path) const
return Utils::contains(list, Utils::equal(&QmakeProFile::filePath, path));
}
QList<QString> QmakeProject::buildTargets(IRunConfigurationFactory::CreationMode mode,
const QList<ProjectType> &projectTypes)
QList<BuildTargetInfo> QmakeProject::buildTargets(IRunConfigurationFactory::CreationMode mode,
const QList<ProjectType> &projectTypes)
{
QList<ProjectType> realTypes = projectTypes;
if (realTypes.isEmpty())
@@ -800,7 +800,12 @@ QList<QString> QmakeProject::buildTargets(IRunConfigurationFactory::CreationMode
temp = filtered.isEmpty() ? files : filtered;
}
return Utils::transform(temp, [](QmakeProFile *f) { return f->filePath().toString(); });
return Utils::transform(temp, [](QmakeProFile *f) {
BuildTargetInfo bti;
bti.targetName = f->filePath().toString();
bti.displayName = QFileInfo(bti.targetName).completeBaseName();
return bti;
});
}
void QmakeProject::activeTargetWasChanged()

View File

@@ -73,8 +73,9 @@ public:
QList<QmakeProFile *> applicationProFiles(Parsing parse = ExactParse) const;
bool hasApplicationProFile(const Utils::FileName &path) const;
QList<QString> buildTargets(ProjectExplorer::IRunConfigurationFactory::CreationMode mode,
const QList<ProjectType> &projectTypes = {});
QList<ProjectExplorer::BuildTargetInfo>
buildTargets(ProjectExplorer::IRunConfigurationFactory::CreationMode mode,
const QList<ProjectType> &projectTypes = {});
static void notifyChanged(const Utils::FileName &name);

View File

@@ -49,11 +49,9 @@ QList<ProjectExplorer::BuildTargetInfo>
QnxRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{
auto project = qobject_cast<QmakeProjectManager::QmakeProject *>(parent->project());
const QList<QString> buildTargets = project->buildTargets(mode);
return Utils::transform(buildTargets, [](const QString &buildTarget) {
BuildTargetInfo bti;
bti.targetName = buildTarget;
bti.displayName = tr("%1 on QNX Device").arg(QFileInfo(buildTarget).completeBaseName());
const QList<BuildTargetInfo> buildTargets = project->buildTargets(mode);
return Utils::transform(buildTargets, [](BuildTargetInfo bti) {
bti.displayName = tr("%1 on QNX Device").arg(QFileInfo(bti.targetName).completeBaseName());
return bti;
});
}

View File

@@ -54,10 +54,8 @@ QList<BuildTargetInfo>
WinRtRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const
{
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
const QList<QString> buildTargets = project->buildTargets(mode);
return Utils::transform(buildTargets, [](const QString &buildTarget) {
BuildTargetInfo bti;
bti.targetName = buildTarget;
const QList<BuildTargetInfo> buildTargets = project->buildTargets(mode);
return Utils::transform(buildTargets, [](BuildTargetInfo bti) {
bti.displayName = tr("Run App Package");
return bti;
});