diff options
author | hjk <hjk@qt.io> | 2018-11-28 18:52:19 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-12-14 12:08:39 +0000 |
commit | c58da42babe5052e28a28a5ad79497b7d6f34de3 (patch) | |
tree | 2a6126ed993a970dd7eabfd2d711243eebf3f69c | |
parent | d6b1e5653bb53a7dd245017ba11dddb6112fc179 (diff) | |
download | qt-creator-c58da42babe5052e28a28a5ad79497b7d6f34de3.tar.gz |
QmakeProjectManager et al: Reduce use of qmake specific logic
Change-Id: I8f7e5d822ccb27e3ec241b814ec67aed7fe7539f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
-rw-r--r-- | src/plugins/ios/iosrunconfiguration.cpp | 23 | ||||
-rw-r--r-- | src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp | 6 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp | 6 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakenodes.cpp | 12 | ||||
-rw-r--r-- | 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<const QmakeProject *>(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<const QmakeProFileNode *>(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<const QmakeProFileNode *>(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<QmakeProject *>(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<const QmakeProFileNode *>(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<const QmakeProFileNode *>(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<const QmakeProFileNode *>(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<QmakeProFileNode *>(this); - for (Node *node : nodes()) { - if (auto *qmakeProFileNode = dynamic_cast<QmakeProFileNode *>(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; |