ProjectExplorer: Introduce Target::buildTarget(buildKey)

A convenience wrapper for

   applicationTargets().buildTargetInfo(buildKey),

the only context using the BuildTargetInfoList member.

Also, only one of the free comparison functions is ever used,
only in one place. Inline it there.

Change-Id: I7565e9d51d429af34352649e235243e5b3328fe9
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-02-18 18:24:10 +01:00
parent 7f4c6e38bf
commit ea9dad4719
9 changed files with 18 additions and 26 deletions

View File

@@ -157,7 +157,7 @@ ChooseDirectoryPage::ChooseDirectoryPage(CreateAndroidManifestWizard *wizard)
void ChooseDirectoryPage::checkPackageSourceDir() void ChooseDirectoryPage::checkPackageSourceDir()
{ {
const QString buildKey = m_wizard->buildKey(); const QString buildKey = m_wizard->buildKey();
const BuildTargetInfo bti = m_wizard->target()->applicationTargets().buildTargetInfo(buildKey); const BuildTargetInfo bti = m_wizard->target()->buildTarget(buildKey);
const QString projectDir = bti.projectFilePath.toFileInfo().absolutePath(); const QString projectDir = bti.projectFilePath.toFileInfo().absolutePath();
const QString newDir = m_androidPackageSourceDir->path(); const QString newDir = m_androidPackageSourceDir->path();
@@ -181,7 +181,7 @@ void ChooseDirectoryPage::initializePage()
{ {
const Target *target = m_wizard->target(); const Target *target = m_wizard->target();
const QString buildKey = m_wizard->buildKey(); const QString buildKey = m_wizard->buildKey();
const BuildTargetInfo bti = target->applicationTargets().buildTargetInfo(buildKey); const BuildTargetInfo bti = target->buildTarget(buildKey);
const QString projectDir = bti.projectFilePath.toFileInfo().absolutePath(); const QString projectDir = bti.projectFilePath.toFileInfo().absolutePath();
QString androidPackageDir; QString androidPackageDir;
@@ -357,7 +357,7 @@ void CreateAndroidManifestWizard::createAndroidTemplateFiles()
if (androidPackageDir.isEmpty()) { if (androidPackageDir.isEmpty()) {
// and now time for some magic // and now time for some magic
const BuildTargetInfo bti = m_target->applicationTargets().buildTargetInfo(m_buildKey); const BuildTargetInfo bti = m_target->buildTarget(m_buildKey);
const QString value = "$$PWD/" + bti.projectFilePath.toFileInfo().absoluteDir().relativeFilePath(m_directory); const QString value = "$$PWD/" + bti.projectFilePath.toFileInfo().absoluteDir().relativeFilePath(m_directory);
bool result = node->setData(Android::Constants::AndroidPackageSourceDir, value); bool result = node->setData(Android::Constants::AndroidPackageSourceDir, value);

View File

@@ -93,8 +93,7 @@ void TestConfiguration::completeTestInformation(ProjectExplorer::RunConfiguratio
m_runnable = rc->runnable(); m_runnable = rc->runnable();
m_displayName = rc->displayName(); m_displayName = rc->displayName();
const QString buildKey = rc->buildKey(); BuildTargetInfo targetInfo = rc->buildTargetInfo();
BuildTargetInfo targetInfo = target->applicationTargets().buildTargetInfo(buildKey);
if (!targetInfo.targetFilePath.isEmpty()) if (!targetInfo.targetFilePath.isEmpty())
m_runnable.executable = ensureExeEnding(targetInfo.targetFilePath.toString()); m_runnable.executable = ensureExeEnding(targetInfo.targetFilePath.toString());

View File

@@ -62,7 +62,7 @@ BareMetalRunConfiguration::BareMetalRunConfiguration(Target *target, Core::Id id
void BareMetalRunConfiguration::updateTargetInformation() void BareMetalRunConfiguration::updateTargetInformation()
{ {
const BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(buildKey()); const BuildTargetInfo bti = buildTargetInfo();
aspect<ExecutableAspect>()->setExecutable(bti.targetFilePath); aspect<ExecutableAspect>()->setExecutable(bti.targetFilePath);
emit enabledChanged(); emit enabledChanged();
} }

View File

@@ -97,7 +97,7 @@ QString CMakeRunConfiguration::disabledReason() const
void CMakeRunConfiguration::updateTargetInformation() void CMakeRunConfiguration::updateTargetInformation()
{ {
BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(buildKey()); BuildTargetInfo bti = buildTargetInfo();
aspect<ExecutableAspect>()->setExecutable(bti.targetFilePath); aspect<ExecutableAspect>()->setExecutable(bti.targetFilePath);
aspect<WorkingDirectoryAspect>()->setDefaultWorkingDirectory(bti.workingDirectory); aspect<WorkingDirectoryAspect>()->setDefaultWorkingDirectory(bti.workingDirectory);
aspect<LocalEnvironmentAspect>()->buildEnvironmentHasChanged(); aspect<LocalEnvironmentAspect>()->buildEnvironmentHasChanged();

View File

@@ -79,23 +79,7 @@ inline uint qHash(const BuildTargetInfo &ti)
class PROJECTEXPLORER_EXPORT BuildTargetInfoList class PROJECTEXPLORER_EXPORT BuildTargetInfoList
{ {
public: public:
BuildTargetInfo buildTargetInfo(const QString &buildKey) {
return Utils::findOrDefault(list, [&buildKey](const BuildTargetInfo &ti) {
return ti.buildKey == buildKey;
});
}
QList<BuildTargetInfo> list; QList<BuildTargetInfo> list;
}; };
inline bool operator==(const BuildTargetInfoList &til1, const BuildTargetInfoList &til2)
{
return til1.list.toSet() == til2.list.toSet();
}
inline bool operator!=(const BuildTargetInfoList &til1, const BuildTargetInfoList &til2)
{
return !(til1 == til2);
}
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -313,7 +313,7 @@ QVariantMap RunConfiguration::toMap() const
BuildTargetInfo RunConfiguration::buildTargetInfo() const BuildTargetInfo RunConfiguration::buildTargetInfo() const
{ {
return target()->applicationTargets().buildTargetInfo(m_buildKey); return target()->buildTarget(m_buildKey);
} }
bool RunConfiguration::fromMap(const QVariantMap &map) bool RunConfiguration::fromMap(const QVariantMap &map)

View File

@@ -347,7 +347,7 @@ DeploymentData Target::deploymentData() const
void Target::setApplicationTargets(const BuildTargetInfoList &appTargets) void Target::setApplicationTargets(const BuildTargetInfoList &appTargets)
{ {
if (d->m_appTargets != appTargets) { if (appTargets.list.toSet() != d->m_appTargets.list.toSet()) {
d->m_appTargets = appTargets; d->m_appTargets = appTargets;
emit applicationTargetsChanged(); emit applicationTargetsChanged();
} }
@@ -358,6 +358,13 @@ BuildTargetInfoList Target::applicationTargets() const
return d->m_appTargets; return d->m_appTargets;
} }
BuildTargetInfo Target::buildTarget(const QString &buildKey) const
{
return Utils::findOrDefault(d->m_appTargets.list, [&buildKey](const BuildTargetInfo &ti) {
return ti.buildKey == buildKey;
});
}
QList<ProjectConfiguration *> Target::projectConfigurations() const QList<ProjectConfiguration *> Target::projectConfigurations() const
{ {
QList<ProjectConfiguration *> result; QList<ProjectConfiguration *> result;

View File

@@ -37,6 +37,7 @@ QT_FORWARD_DECLARE_CLASS(QIcon)
namespace ProjectExplorer { namespace ProjectExplorer {
class BuildConfiguration; class BuildConfiguration;
class BuildTargetInfoList; class BuildTargetInfoList;
class BuildTargetInfo;
class DeployConfiguration; class DeployConfiguration;
class DeploymentData; class DeploymentData;
class Kit; class Kit;
@@ -82,6 +83,7 @@ public:
void setApplicationTargets(const BuildTargetInfoList &appTargets); void setApplicationTargets(const BuildTargetInfoList &appTargets);
BuildTargetInfoList applicationTargets() const; BuildTargetInfoList applicationTargets() const;
BuildTargetInfo buildTarget(const QString &buildKey) const;
QList<ProjectConfiguration *> projectConfigurations() const; QList<ProjectConfiguration *> projectConfigurations() const;

View File

@@ -68,7 +68,7 @@ WinRtRunnerHelper::WinRtRunnerHelper(ProjectExplorer::RunWorker *runWorker, QStr
return; return;
} }
const BuildTargetInfo bti = target->applicationTargets().buildTargetInfo(runConfiguration->buildKey()); const BuildTargetInfo bti = runConfiguration->buildTargetInfo();
m_executableFilePath = bti.targetFilePath.toString(); m_executableFilePath = bti.targetFilePath.toString();
if (m_executableFilePath.isEmpty()) { if (m_executableFilePath.isEmpty()) {