From 327f09c240df00288d4dc6b0786b2a7ecbbbb395 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 10 Nov 2016 15:35:46 +0100 Subject: [PATCH] ProjectExplorer: Override filePath for recursiveFindOrCreateFolder Override the base node's filePath for recursiveFindOrCreateFolder (and buildTree, which is based on that). This makes it possible to use this method to build up trees below project nodes, etc. that have no representation as a existing directory in the filesystem. Change-Id: I29fd1ab5b81b144b3db1966dc08dd50470c2d5d7 Reviewed-by: Tim Jenssen --- src/plugins/projectexplorer/projectnodes.cpp | 10 ++++++---- src/plugins/projectexplorer/projectnodes.h | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 4f6c5b7eece..d8f3c726af2 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -409,9 +409,10 @@ FolderNode *FolderNode::folderNode(const Utils::FileName &directory) const }); } -FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory) +FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory, + const Utils::FileName &overrideBaseDir) { - Utils::FileName path = filePath(); + Utils::FileName path = overrideBaseDir.isEmpty() ? filePath() : overrideBaseDir; QString workPath; if (path.isEmpty() || path.toFileInfo().isRoot()) { workPath = directory; @@ -440,7 +441,7 @@ FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory return parent; } -void FolderNode::buildTree(QList &files) +void FolderNode::buildTree(QList &files, const Utils::FileName &overrideBaseDir) { // Gather old list QList oldFiles = recursiveFileNodes(); @@ -461,7 +462,8 @@ void FolderNode::buildTree(QList &files) foreach (ProjectExplorer::FileNode *fn, added) { // Get relative path to rootNode QString parentDir = fn->filePath().toFileInfo().absolutePath(); - ProjectExplorer::FolderNode *folder = recursiveFindOrCreateFolderNode(parentDir); + ProjectExplorer::FolderNode *folder + = recursiveFindOrCreateFolderNode(parentDir, overrideBaseDir); addedFolderMapping[folder] << fn; } diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 2e6a39e2ecb..00604b02a5a 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -193,8 +193,9 @@ public: QList recursiveFileNodes() const; QList folderNodes() const; FolderNode *folderNode(const Utils::FileName &directory) const; - FolderNode *recursiveFindOrCreateFolderNode(const QString &directory); - void buildTree(QList &files); + FolderNode *recursiveFindOrCreateFolderNode(const QString &directory, + const Utils::FileName &overrideBaseDir = Utils::FileName()); + void buildTree(QList &files, const Utils::FileName &overrideBaseDir = Utils::FileName()); virtual void accept(NodesVisitor *visitor);