From c58da42babe5052e28a28a5ad79497b7d6f34de3 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 28 Nov 2018 18:52:19 +0100 Subject: QmakeProjectManager et al: Reduce use of qmake specific logic Change-Id: I8f7e5d822ccb27e3ec241b814ec67aed7fe7539f Reviewed-by: Tobias Hunger --- src/plugins/ios/iosrunconfiguration.cpp | 23 +++++----------------- .../qmakeandroidsupport/qmakeandroidsupport.cpp | 6 ++---- .../librarydetailscontroller.cpp | 6 +++--- src/plugins/qmakeprojectmanager/qmakenodes.cpp | 12 ----------- src/plugins/qmakeprojectmanager/qmakenodes.h | 1 - 5 files changed, 10 insertions(+), 38 deletions(-) diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp index 5d085c1bc7..0d26ba7e8f 100644 --- a/src/plugins/ios/iosrunconfiguration.cpp +++ b/src/plugins/ios/iosrunconfiguration.cpp @@ -159,27 +159,13 @@ void IosRunConfiguration::updateEnabledState() bool IosRunConfiguration::canRunForNode(const Node *node) const { - return node->filePath() == profilePath(); -} - -FileName IosRunConfiguration::profilePath() const -{ - return FileName::fromString(buildKey()); -} - -static QmakeProFile *proFile(const IosRunConfiguration *rc) -{ - auto pro = qobject_cast(rc->target()->project()); - QmakeProFile *proFile = pro ? pro->rootProFile() : nullptr; - if (proFile) - proFile = proFile->findProFile(rc->profilePath()); - return proFile; + return node->filePath().toString() == buildKey(); } QString IosRunConfiguration::applicationName() const { - QmakeProFile *pro = proFile(this); - if (pro) { + Project *project = target()->project(); + if (auto pro = dynamic_cast(project->findNodeForBuildKey(buildKey()))) { TargetInformation ti = pro->targetInformation(); if (ti.valid) return ti.target; @@ -197,7 +183,8 @@ FileName IosRunConfiguration::bundleDirectory() const return res; } if (BuildConfiguration *bc = target()->activeBuildConfiguration()) { - const QmakeProFile *pro = proFile(this); + Project *project = target()->project(); + auto pro = dynamic_cast(project->findNodeForBuildKey(buildKey())); if (pro) { TargetInformation ti = pro->targetInformation(); if (ti.valid) diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp index 7972d62ce6..13bf221ea8 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp @@ -61,10 +61,8 @@ QVariant QmakeAndroidSupport::targetData(Core::Id role, const Target *target) co return {}; const FileName projectFilePath = FileName::fromString(rc->buildKey()); - const QmakeProject *pro = qobject_cast(target->project()); - QTC_ASSERT(pro, return {}); - QTC_ASSERT(pro->rootProjectNode(), return {}); - const QmakeProFileNode *profileNode = pro->rootProjectNode()->findProFileFor(projectFilePath); + const ProjectNode *projectNode = target->project()->findNodeForBuildKey(rc->buildKey()); + auto profileNode = dynamic_cast(projectNode); QTC_ASSERT(profileNode, return {}); if (role == Android::Constants::AndroidPackageSourceDir) diff --git a/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp b/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp index 5e7ba07673..0f0830b58e 100644 --- a/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp +++ b/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp @@ -864,12 +864,12 @@ bool PackageLibraryDetailsController::isLinkPackageGenerated() const if (!project) return false; - const auto *rootProject = dynamic_cast(project->rootProjectNode()); - if (!rootProject) + const ProjectNode *projectNode = project->findNodeForBuildKey(proFile()); + if (!projectNode) return false; const QmakeProFileNode *currentProject = - rootProject->findProFileFor(Utils::FileName::fromString(proFile())); + dynamic_cast(projectNode); if (!currentProject) return false; diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 9f093e6020..fa94ca5eaa 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -198,18 +198,6 @@ FolderNode::AddNewInformation QmakePriFileNode::addNewInformation(const QStringL return FolderNode::AddNewInformation(filePath().fileName(), context && context->parentProjectNode() == this ? 120 : 90); } -QmakeProFileNode *QmakeProFileNode::findProFileFor(const FileName &fileName) const -{ - if (fileName == filePath()) - return const_cast(this); - for (Node *node : nodes()) { - if (auto *qmakeProFileNode = dynamic_cast(node)) - if (QmakeProFileNode *result = qmakeProFileNode->findProFileFor(fileName)) - return result; - } - return nullptr; -} - /*! \class QmakeProFileNode Implements abstract ProjectNode class diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 31eb5871ef..79c3c3e95d 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -102,7 +102,6 @@ public: QStringList variableValue(const Variable var) const; QString singleVariableValue(const Variable var) const; - QmakeProFileNode *findProFileFor(const Utils::FileName &string) const; TargetInformation targetInformation() const; bool showInSimpleTree(ProjectType projectType) const; -- cgit v1.2.3