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()
{
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 newDir = m_androidPackageSourceDir->path();
@@ -181,7 +181,7 @@ void ChooseDirectoryPage::initializePage()
{
const Target *target = m_wizard->target();
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();
QString androidPackageDir;
@@ -357,7 +357,7 @@ void CreateAndroidManifestWizard::createAndroidTemplateFiles()
if (androidPackageDir.isEmpty()) {
// 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);
bool result = node->setData(Android::Constants::AndroidPackageSourceDir, value);

View File

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

View File

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

View File

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

View File

@@ -79,23 +79,7 @@ inline uint qHash(const BuildTargetInfo &ti)
class PROJECTEXPLORER_EXPORT BuildTargetInfoList
{
public:
BuildTargetInfo buildTargetInfo(const QString &buildKey) {
return Utils::findOrDefault(list, [&buildKey](const BuildTargetInfo &ti) {
return ti.buildKey == buildKey;
});
}
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

View File

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

View File

@@ -347,7 +347,7 @@ DeploymentData Target::deploymentData() const
void Target::setApplicationTargets(const BuildTargetInfoList &appTargets)
{
if (d->m_appTargets != appTargets) {
if (appTargets.list.toSet() != d->m_appTargets.list.toSet()) {
d->m_appTargets = appTargets;
emit applicationTargetsChanged();
}
@@ -358,6 +358,13 @@ BuildTargetInfoList Target::applicationTargets() const
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 *> result;

View File

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

View File

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