forked from qt-creator/qt-creator
ProjectExplorer: Remove ProjectNode::m_projectNodes
They are duplicated in m_folderNodes, use them. Change-Id: I4571720f1ef3daf098870a3cf05fa28a1002bb3f Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -81,11 +81,6 @@ QList<Node*> FindNodesForFileVisitor::nodes() const
|
|||||||
return m_nodes;
|
return m_nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindNodesForFileVisitor::visitProjectNode(ProjectNode *node)
|
|
||||||
{
|
|
||||||
visitFolderNode(node);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindNodesForFileVisitor::visitFolderNode(FolderNode *node)
|
void FindNodesForFileVisitor::visitFolderNode(FolderNode *node)
|
||||||
{
|
{
|
||||||
if (node->filePath() == m_path)
|
if (node->filePath() == m_path)
|
||||||
@@ -96,11 +91,6 @@ void FindNodesForFileVisitor::visitFolderNode(FolderNode *node)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindNodesForFileVisitor::visitSessionNode(SessionNode *node)
|
|
||||||
{
|
|
||||||
visitFolderNode(node);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class FindAllFilesVisitor
|
\class FindAllFilesVisitor
|
||||||
|
|
||||||
@@ -112,11 +102,6 @@ Utils::FileNameList FindAllFilesVisitor::filePaths() const
|
|||||||
return m_filePaths;
|
return m_filePaths;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindAllFilesVisitor::visitProjectNode(ProjectNode *projectNode)
|
|
||||||
{
|
|
||||||
visitFolderNode(projectNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindAllFilesVisitor::visitFolderNode(FolderNode *folderNode)
|
void FindAllFilesVisitor::visitFolderNode(FolderNode *folderNode)
|
||||||
{
|
{
|
||||||
m_filePaths.append(folderNode->filePath());
|
m_filePaths.append(folderNode->filePath());
|
||||||
|
@@ -36,15 +36,13 @@ namespace ProjectExplorer {
|
|||||||
class Node;
|
class Node;
|
||||||
class FileNode;
|
class FileNode;
|
||||||
class SessionNode;
|
class SessionNode;
|
||||||
class ProjectNode;
|
|
||||||
class FolderNode;
|
class FolderNode;
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT NodesVisitor {
|
class PROJECTEXPLORER_EXPORT NodesVisitor
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~NodesVisitor();
|
virtual ~NodesVisitor();
|
||||||
|
|
||||||
virtual void visitSessionNode(SessionNode *) { }
|
|
||||||
virtual void visitProjectNode(ProjectNode *) { }
|
|
||||||
virtual void visitFolderNode(FolderNode *) { }
|
virtual void visitFolderNode(FolderNode *) { }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -53,26 +51,25 @@ protected:
|
|||||||
|
|
||||||
/* useful visitors */
|
/* useful visitors */
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT FindNodesForFileVisitor : public NodesVisitor {
|
class PROJECTEXPLORER_EXPORT FindNodesForFileVisitor : public NodesVisitor
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
explicit FindNodesForFileVisitor(const Utils::FileName &fileToSearch);
|
explicit FindNodesForFileVisitor(const Utils::FileName &fileToSearch);
|
||||||
|
|
||||||
QList<Node*> nodes() const;
|
QList<Node*> nodes() const;
|
||||||
|
|
||||||
void visitProjectNode(ProjectNode *node) override;
|
|
||||||
void visitFolderNode(FolderNode *node) override;
|
void visitFolderNode(FolderNode *node) override;
|
||||||
void visitSessionNode(SessionNode *node) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Utils::FileName m_path;
|
Utils::FileName m_path;
|
||||||
QList<Node *> m_nodes;
|
QList<Node *> m_nodes;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT FindAllFilesVisitor : public NodesVisitor {
|
class PROJECTEXPLORER_EXPORT FindAllFilesVisitor : public NodesVisitor
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
Utils::FileNameList filePaths() const;
|
Utils::FileNameList filePaths() const;
|
||||||
|
|
||||||
void visitProjectNode(ProjectNode *projectNode) override;
|
|
||||||
void visitFolderNode(FolderNode *folderNode) override;
|
void visitFolderNode(FolderNode *folderNode) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -686,24 +686,24 @@ QList<RunConfiguration *> ProjectNode::runConfigurations() const
|
|||||||
return QList<RunConfiguration *>();
|
return QList<RunConfiguration *>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectNode::accept(NodesVisitor *visitor)
|
|
||||||
{
|
|
||||||
visitor->visitProjectNode(this);
|
|
||||||
|
|
||||||
foreach (FolderNode *folder, m_folderNodes)
|
|
||||||
folder->accept(visitor);
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectNode *ProjectNode::projectNode(const Utils::FileName &file) const
|
ProjectNode *ProjectNode::projectNode(const Utils::FileName &file) const
|
||||||
{
|
{
|
||||||
return Utils::findOrDefault(m_projectNodes, [&file](const ProjectNode *fn) {
|
for (FolderNode *node : m_folderNodes) {
|
||||||
return fn->filePath() == file;
|
if (ProjectNode *pnode = node->asProjectNode())
|
||||||
});
|
if (pnode->filePath() == file)
|
||||||
|
return pnode;
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ProjectNode*> ProjectNode::projectNodes() const
|
QList<ProjectNode*> FolderNode::projectNodes() const
|
||||||
{
|
{
|
||||||
return m_projectNodes;
|
QList<ProjectNode *> nodes;
|
||||||
|
for (FolderNode *node : m_folderNodes) {
|
||||||
|
if (ProjectNode *pnode = node->asProjectNode())
|
||||||
|
nodes.append(pnode);
|
||||||
|
}
|
||||||
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -717,31 +717,13 @@ void ProjectNode::addProjectNode(ProjectNode *subProject)
|
|||||||
|
|
||||||
subProject->setParentFolderNode(this);
|
subProject->setParentFolderNode(this);
|
||||||
m_folderNodes.append(subProject);
|
m_folderNodes.append(subProject);
|
||||||
m_projectNodes.append(subProject);
|
|
||||||
|
|
||||||
Utils::sort(m_folderNodes);
|
Utils::sort(m_folderNodes);
|
||||||
Utils::sort(m_projectNodes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FolderNode::isEmpty() const
|
||||||
/*!
|
|
||||||
Removes all child nodes from the node hierarchy and deletes them.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void ProjectNode::makeEmpty()
|
|
||||||
{
|
{
|
||||||
foreach (ProjectNode *subProject, m_projectNodes)
|
return m_fileNodes.isEmpty() && m_folderNodes.isEmpty();
|
||||||
m_folderNodes.removeAll(subProject);
|
|
||||||
|
|
||||||
qDeleteAll(m_projectNodes);
|
|
||||||
m_projectNodes.clear();
|
|
||||||
|
|
||||||
FolderNode::makeEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ProjectNode::isEmpty() const
|
|
||||||
{
|
|
||||||
return m_fileNodes.isEmpty() && m_folderNodes.isEmpty() && m_projectNodes.isEmpty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -758,24 +740,11 @@ QList<ProjectAction> SessionNode::supportedActions(Node *node) const
|
|||||||
return QList<ProjectAction>();
|
return QList<ProjectAction>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SessionNode::accept(NodesVisitor *visitor)
|
|
||||||
{
|
|
||||||
visitor->visitSessionNode(this);
|
|
||||||
foreach (ProjectNode *project, m_projectNodes)
|
|
||||||
project->accept(visitor);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SessionNode::showInSimpleTree() const
|
bool SessionNode::showInSimpleTree() const
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ProjectNode*> SessionNode::projectNodes() const
|
|
||||||
{
|
|
||||||
return m_projectNodes;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString SessionNode::addFileFilter() const
|
QString SessionNode::addFileFilter() const
|
||||||
{
|
{
|
||||||
return QString::fromLatin1("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;");
|
return QString::fromLatin1("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;");
|
||||||
@@ -787,16 +756,12 @@ void SessionNode::addProjectNode(ProjectNode *projectNode)
|
|||||||
qDebug("Project node has already a parent folder"));
|
qDebug("Project node has already a parent folder"));
|
||||||
projectNode->setParentFolderNode(this);
|
projectNode->setParentFolderNode(this);
|
||||||
m_folderNodes.append(projectNode);
|
m_folderNodes.append(projectNode);
|
||||||
m_projectNodes.append(projectNode);
|
|
||||||
|
|
||||||
Utils::sort(m_folderNodes);
|
Utils::sort(m_folderNodes);
|
||||||
Utils::sort(m_projectNodes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SessionNode::removeProjectNode(ProjectNode *projectNode)
|
void SessionNode::removeProjectNode(ProjectNode *projectNode)
|
||||||
{
|
{
|
||||||
m_folderNodes.removeOne(projectNode);
|
m_folderNodes.removeOne(projectNode);
|
||||||
m_projectNodes.removeOne(projectNode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
@@ -251,6 +251,9 @@ public:
|
|||||||
void addFolderNode(FolderNode *subFolder);
|
void addFolderNode(FolderNode *subFolder);
|
||||||
void setFolderNodes(const QList<FolderNode*> &folders);
|
void setFolderNodes(const QList<FolderNode*> &folders);
|
||||||
|
|
||||||
|
// all subFolders that are projects
|
||||||
|
QList<ProjectNode*> projectNodes() const;
|
||||||
|
|
||||||
void makeEmpty();
|
void makeEmpty();
|
||||||
bool isEmpty() const;
|
bool isEmpty() const;
|
||||||
|
|
||||||
@@ -296,16 +299,8 @@ public:
|
|||||||
|
|
||||||
virtual QList<RunConfiguration *> runConfigurations() const;
|
virtual QList<RunConfiguration *> runConfigurations() const;
|
||||||
|
|
||||||
void accept(NodesVisitor *visitor) override;
|
|
||||||
|
|
||||||
ProjectNode *projectNode(const Utils::FileName &file) const;
|
ProjectNode *projectNode(const Utils::FileName &file) const;
|
||||||
// all subFolders that are projects
|
|
||||||
QList<ProjectNode*> projectNodes() const;
|
|
||||||
void addProjectNode(ProjectNode *subProject);
|
void addProjectNode(ProjectNode *subProject);
|
||||||
void removeProjectNode(ProjectNode *subProject);
|
|
||||||
|
|
||||||
void makeEmpty();
|
|
||||||
bool isEmpty() const;
|
|
||||||
|
|
||||||
ProjectNode *asProjectNode() final { return this; }
|
ProjectNode *asProjectNode() final { return this; }
|
||||||
const ProjectNode *asProjectNode() const final { return this; }
|
const ProjectNode *asProjectNode() const final { return this; }
|
||||||
@@ -316,8 +311,6 @@ protected:
|
|||||||
explicit ProjectNode(const Utils::FileName &projectFilePath);
|
explicit ProjectNode(const Utils::FileName &projectFilePath);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<ProjectNode*> m_projectNodes;
|
|
||||||
|
|
||||||
// let SessionNode call setParentFolderNode
|
// let SessionNode call setParentFolderNode
|
||||||
friend class SessionNode;
|
friend class SessionNode;
|
||||||
};
|
};
|
||||||
@@ -327,12 +320,10 @@ class PROJECTEXPLORER_EXPORT SessionNode : public FolderNode
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SessionNode();
|
SessionNode();
|
||||||
QList<ProjectNode*> projectNodes() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<ProjectAction> supportedActions(Node *node) const final;
|
QList<ProjectAction> supportedActions(Node *node) const final;
|
||||||
QString addFileFilter() const final;
|
QString addFileFilter() const final;
|
||||||
void accept(NodesVisitor *visitor) final;
|
|
||||||
|
|
||||||
bool showInSimpleTree() const final;
|
bool showInSimpleTree() const final;
|
||||||
void projectDisplayNameChanged(Node *node);
|
void projectDisplayNameChanged(Node *node);
|
||||||
@@ -343,8 +334,6 @@ private:
|
|||||||
friend class SessionManager;
|
friend class SessionManager;
|
||||||
void addProjectNode(ProjectNode *projectNode);
|
void addProjectNode(ProjectNode *projectNode);
|
||||||
void removeProjectNode(ProjectNode *projectNode);
|
void removeProjectNode(ProjectNode *projectNode);
|
||||||
|
|
||||||
QList<ProjectNode*> m_projectNodes;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
@@ -36,8 +36,8 @@ QList<QmakeProFileNode *> FindQmakeProFiles::operator()(ProjectExplorer::Project
|
|||||||
return m_proFiles;
|
return m_proFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindQmakeProFiles::visitProjectNode(ProjectExplorer::ProjectNode *projectNode)
|
void FindQmakeProFiles::visitFolderNode(ProjectExplorer::FolderNode *folderNode)
|
||||||
{
|
{
|
||||||
if (QmakeProFileNode *pro = dynamic_cast<QmakeProFileNode *>(projectNode))
|
if (QmakeProFileNode *pro = dynamic_cast<QmakeProFileNode *>(folderNode))
|
||||||
m_proFiles.append(pro);
|
m_proFiles.append(pro);
|
||||||
}
|
}
|
||||||
|
@@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
#include <projectexplorer/nodesvisitor.h>
|
#include <projectexplorer/nodesvisitor.h>
|
||||||
|
|
||||||
|
namespace ProjectExplorer { class ProjectNode; }
|
||||||
|
|
||||||
namespace QmakeProjectManager {
|
namespace QmakeProjectManager {
|
||||||
class QmakeProFileNode;
|
class QmakeProFileNode;
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -36,7 +38,7 @@ class FindQmakeProFiles: protected ProjectExplorer::NodesVisitor
|
|||||||
public:
|
public:
|
||||||
QList<QmakeProFileNode *> operator()(ProjectExplorer::ProjectNode *root);
|
QList<QmakeProFileNode *> operator()(ProjectExplorer::ProjectNode *root);
|
||||||
protected:
|
protected:
|
||||||
virtual void visitProjectNode(ProjectExplorer::ProjectNode *projectNode);
|
void visitFolderNode(ProjectExplorer::FolderNode *folderNode) final;
|
||||||
private:
|
private:
|
||||||
QList<QmakeProFileNode *> m_proFiles;
|
QList<QmakeProFileNode *> m_proFiles;
|
||||||
};
|
};
|
||||||
|
@@ -1391,18 +1391,15 @@ static QmakeProjectType proFileTemplateTypeToProjectType(ProFileEvaluator::Templ
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
// feed all files accepted by any of the factories to the callback.
|
// feed all files accepted by any of the factories to the callback.
|
||||||
class FindGeneratorSourcesVisitor : public NodesVisitor {
|
class FindGeneratorSourcesVisitor : public NodesVisitor
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
FindGeneratorSourcesVisitor(
|
FindGeneratorSourcesVisitor(
|
||||||
const QList<ProjectExplorer::ExtraCompilerFactory *> &factories,
|
const QList<ProjectExplorer::ExtraCompilerFactory *> &factories,
|
||||||
std::function<void(FileNode *, ProjectExplorer::ExtraCompilerFactory *)> callback) :
|
std::function<void(FileNode *, ProjectExplorer::ExtraCompilerFactory *)> callback) :
|
||||||
factories(factories), callback(callback) {}
|
factories(factories), callback(callback) {}
|
||||||
|
|
||||||
void visitProjectNode(ProjectNode *projectNode)
|
void visitFolderNode(FolderNode *folderNode) final
|
||||||
{
|
|
||||||
visitFolderNode(projectNode);
|
|
||||||
}
|
|
||||||
void visitFolderNode(FolderNode *folderNode)
|
|
||||||
{
|
{
|
||||||
foreach (FileNode *fileNode, folderNode->fileNodes()) {
|
foreach (FileNode *fileNode, folderNode->fileNodes()) {
|
||||||
foreach (ProjectExplorer::ExtraCompilerFactory *factory, factories) {
|
foreach (ProjectExplorer::ExtraCompilerFactory *factory, factories) {
|
||||||
|
@@ -161,11 +161,9 @@ class ProjectFilesVisitor : public NodesVisitor
|
|||||||
ProjectFilesVisitor(QmakeProjectFiles *files);
|
ProjectFilesVisitor(QmakeProjectFiles *files);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static void findProjectFiles(QmakeProFileNode *rootNode, QmakeProjectFiles *files);
|
static void findProjectFiles(QmakeProFileNode *rootNode, QmakeProjectFiles *files);
|
||||||
|
|
||||||
void visitProjectNode(ProjectNode *projectNode);
|
void visitFolderNode(FolderNode *folderNode) final;
|
||||||
void visitFolderNode(FolderNode *folderNode);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QmakeProjectFiles *m_files;
|
QmakeProjectFiles *m_files;
|
||||||
@@ -199,14 +197,10 @@ void ProjectFilesVisitor::findProjectFiles(QmakeProFileNode *rootNode, QmakeProj
|
|||||||
unique(files->proFiles);
|
unique(files->proFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectFilesVisitor::visitProjectNode(ProjectNode *projectNode)
|
|
||||||
{
|
|
||||||
m_files->proFiles.append(projectNode->filePath().toString());
|
|
||||||
visitFolderNode(projectNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProjectFilesVisitor::visitFolderNode(FolderNode *folderNode)
|
void ProjectFilesVisitor::visitFolderNode(FolderNode *folderNode)
|
||||||
{
|
{
|
||||||
|
if (ProjectNode *projectNode = folderNode->asProjectNode())
|
||||||
|
m_files->proFiles.append(projectNode->filePath().toString());
|
||||||
if (dynamic_cast<ResourceEditor::ResourceTopLevelNode *>(folderNode))
|
if (dynamic_cast<ResourceEditor::ResourceTopLevelNode *>(folderNode))
|
||||||
m_files->files[static_cast<int>(FileType::Resource)].push_back(folderNode->filePath().toString());
|
m_files->files[static_cast<int>(FileType::Resource)].push_back(folderNode->filePath().toString());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user