Qbs: Split mangled build key only when needed

Easier to keep one variable in sync than three, and moves
the code closer towards a unified pattern in the local
runconfigurations.

Change-Id: I2df09127d476be4ddab466f8a709a2b383a76b97
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-03-16 16:34:39 +01:00
parent efd9b08eb4
commit 150011823e
2 changed files with 10 additions and 27 deletions

View File

@@ -193,10 +193,6 @@ bool QbsRunConfiguration::fromMap(const QVariantMap &map)
m_buildKey = ProjectExplorer::idFromMap(map).suffixAfter(id()); m_buildKey = ProjectExplorer::idFromMap(map).suffixAfter(id());
m_usingLibraryPaths = map.value(usingLibraryPathsKey(), true).toBool(); m_usingLibraryPaths = map.value(usingLibraryPathsKey(), true).toBool();
const int sepPos = m_buildKey.indexOf(rcNameSeparator());
m_productDisplayName = sepPos == -1 ? QString() : m_buildKey.mid(sepPos + rcNameSeparator().size());
m_uniqueProductName = m_buildKey.left(sepPos);
setDefaultDisplayName(defaultDisplayName()); setDefaultDisplayName(defaultDisplayName());
return true; return true;
@@ -204,17 +200,12 @@ bool QbsRunConfiguration::fromMap(const QVariantMap &map)
QString QbsRunConfiguration::extraId() const QString QbsRunConfiguration::extraId() const
{ {
return m_uniqueProductName + rcNameSeparator() + m_productDisplayName; return m_buildKey;
} }
void QbsRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo &rci) void QbsRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo &rci)
{ {
m_buildKey = rci.buildKey; m_buildKey = rci.buildKey;
const int sepPos = m_buildKey.indexOf(rcNameSeparator());
m_productDisplayName = sepPos == -1 ? QString() : m_buildKey.mid(sepPos + rcNameSeparator().size());
m_uniqueProductName = m_buildKey.left(sepPos);
setDefaultDisplayName(defaultDisplayName()); setDefaultDisplayName(defaultDisplayName());
} }
@@ -272,17 +263,12 @@ QString QbsRunConfiguration::buildSystemTarget() const
return m_buildKey; return m_buildKey;
} }
QString QbsRunConfiguration::uniqueProductName() const
{
return m_uniqueProductName;
}
QString QbsRunConfiguration::defaultDisplayName() QString QbsRunConfiguration::defaultDisplayName()
{ {
QString defaultName = m_productDisplayName; const int sepPos = m_buildKey.indexOf(rcNameSeparator());
if (defaultName.isEmpty()) if (sepPos == -1)
defaultName = tr("Qbs Run Configuration"); return tr("Qbs Run Configuration");
return defaultName; return m_buildKey.mid(sepPos + rcNameSeparator().size());
} }
Utils::OutputFormatter *QbsRunConfiguration::createOutputFormatter() const Utils::OutputFormatter *QbsRunConfiguration::createOutputFormatter() const
@@ -298,8 +284,11 @@ void QbsRunConfiguration::handleBuildSystemDataUpdated()
bool QbsRunConfiguration::canRunForNode(const Node *node) const bool QbsRunConfiguration::canRunForNode(const Node *node) const
{ {
if (auto pn = dynamic_cast<const QbsProductNode *>(node)) if (auto pn = dynamic_cast<const QbsProductNode *>(node)) {
return m_uniqueProductName == QbsProject::uniqueProductName(pn->qbsProductData()); const int sepPos = m_buildKey.indexOf(rcNameSeparator());
const QString uniqueProductName = m_buildKey.left(sepPos);
return uniqueProductName == QbsProject::uniqueProductName(pn->qbsProductData());
}
return false; return false;
} }

View File

@@ -56,7 +56,6 @@ public:
void addToBaseEnvironment(Utils::Environment &env) const; void addToBaseEnvironment(Utils::Environment &env) const;
QString buildSystemTarget() const final; QString buildSystemTarget() const final;
QString uniqueProductName() const;
bool isConsoleApplication() const; bool isConsoleApplication() const;
bool usingLibraryPaths() const { return m_usingLibraryPaths; } bool usingLibraryPaths() const { return m_usingLibraryPaths; }
void setUsingLibraryPaths(bool useLibPaths); void setUsingLibraryPaths(bool useLibPaths);
@@ -79,11 +78,6 @@ private:
bool m_usingLibraryPaths = true; bool m_usingLibraryPaths = true;
QString m_buildKey; QString m_buildKey;
// m_buildKey consists of the two below initially, but
// m_productDisplayName main be changed for clones etc.
QString m_productDisplayName;
QString m_uniqueProductName;
}; };
class QbsRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory class QbsRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory