forked from qt-creator/qt-creator
ProjectExplorer: Merge FolderNode's m_{file,folder}Node fields
One step closer to direct use of Utils::TreeNode. Change-Id: Icd0dfd2fa4d12c2572a68f61ae43c5e906956a0e Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -286,7 +286,7 @@ void BuildDirManager::generateProjectTree(CMakeListsNode *root, const QList<cons
|
||||
|
||||
// Make sure the top level CMakeLists.txt is always visible:
|
||||
if (root->isEmpty())
|
||||
root->addFileNode(new FileNode(projectFile, FileType::Project, false));
|
||||
root->addNode(new FileNode(projectFile, FileType::Project, false));
|
||||
}
|
||||
|
||||
QSet<Core::Id> BuildDirManager::updateCodeModel(CppTools::ProjectPartBuilder &ppBuilder)
|
||||
|
@@ -224,7 +224,7 @@ static void addCMakeVFolder(FolderNode *base, const Utils::FileName &basePath, i
|
||||
return;
|
||||
auto folder = new VirtualFolderNode(basePath, priority);
|
||||
folder->setDisplayName(displayName);
|
||||
base->addFolderNode(folder);
|
||||
base->addNode(folder);
|
||||
folder->buildTree(files);
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ static void addCMakeInputs(CMakeListsNode *root,
|
||||
QList<FileNode *> &rootInputs)
|
||||
{
|
||||
ProjectNode *cmakeVFolder = new CMakeInputsNode(root->filePath());
|
||||
root->addProjectNode(cmakeVFolder);
|
||||
root->addNode(cmakeVFolder);
|
||||
|
||||
addCMakeVFolder(cmakeVFolder, sourceDir, 1000,
|
||||
QCoreApplication::translate("CMakeProjectManager::Internal::ServerModeReader", "<Source Directory>"),
|
||||
@@ -550,14 +550,14 @@ void ServerModeReader::addCMakeLists(CMakeListsNode *root, const QList<FileNode
|
||||
cmln = static_cast<CMakeListsNode *>(parentNode->projectNode(fn->filePath()));
|
||||
if (!cmln) {
|
||||
cmln = new CMakeListsNode(fn->filePath());
|
||||
parentNode->addProjectNode(cmln);
|
||||
parentNode->addNode(cmln);
|
||||
}
|
||||
|
||||
// Find or create CMakeLists.txt filenode below CMakeListsNode:
|
||||
FileNode *cmFn = cmln->fileNode(fn->filePath());
|
||||
if (!cmFn) {
|
||||
cmFn = fn;
|
||||
cmln->addFileNode(cmFn);
|
||||
cmln->addNode(cmFn);
|
||||
}
|
||||
// Update displayName of CMakeListsNode:
|
||||
const QString dn = prefix.isEmpty() ? k : k.mid(prefix.count() + 1);
|
||||
@@ -601,7 +601,7 @@ static CMakeProjectNode *findOrCreateProjectNode(CMakeListsNode *root, const Uti
|
||||
CMakeProjectNode *pn = static_cast<CMakeProjectNode *>(cmln->projectNode(projectName));
|
||||
if (!pn) {
|
||||
pn = new CMakeProjectNode(projectName);
|
||||
cmln->addProjectNode(pn);
|
||||
cmln->addNode(pn);
|
||||
}
|
||||
pn->setDisplayName(displayName);
|
||||
return pn;
|
||||
@@ -637,7 +637,7 @@ static CMakeTargetNode *findOrCreateTargetNode(CMakeListsNode *root, const Utils
|
||||
CMakeTargetNode *tn = static_cast<CMakeTargetNode *>(cmln->projectNode(targetName));
|
||||
if (!tn) {
|
||||
tn = new CMakeTargetNode(targetName);
|
||||
cmln->addProjectNode(tn);
|
||||
cmln->addNode(tn);
|
||||
}
|
||||
tn->setDisplayName(displayName);
|
||||
return tn;
|
||||
|
@@ -307,8 +307,7 @@ FolderNode::FolderNode(const Utils::FileName &folderPath, NodeType nodeType, con
|
||||
|
||||
FolderNode::~FolderNode()
|
||||
{
|
||||
qDeleteAll(m_folderNodes);
|
||||
qDeleteAll(m_fileNodes);
|
||||
qDeleteAll(m_nodes);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -336,14 +335,20 @@ QIcon FolderNode::icon() const
|
||||
|
||||
QList<FileNode*> FolderNode::fileNodes() const
|
||||
{
|
||||
return m_fileNodes;
|
||||
QList<FileNode *> result;
|
||||
for (Node *n : m_nodes) {
|
||||
if (FileNode *fn = n->asFileNode())
|
||||
result.append(fn);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
FileNode *FolderNode::fileNode(const Utils::FileName &file) const
|
||||
{
|
||||
return Utils::findOrDefault(m_fileNodes, [&file](const FileNode *fn) {
|
||||
return fn->filePath() == file;
|
||||
});
|
||||
return static_cast<FileNode *>(Utils::findOrDefault(m_nodes, [&file](const Node *n) {
|
||||
const FileNode *fn = n->asFileNode();
|
||||
return fn && fn->filePath() == file;
|
||||
}));
|
||||
}
|
||||
|
||||
FileNode *FolderNode::recursiveFileNode(const Utils::FileName &file) const
|
||||
@@ -359,9 +364,10 @@ FileNode *FolderNode::recursiveFileNode(const Utils::FileName &file) const
|
||||
foreach (const QString &part, parts) {
|
||||
dir.appendPath(part);
|
||||
// Find folder in subFolders
|
||||
parent = Utils::findOrDefault(parent->folderNodes(), [&dir](const FolderNode *fn) {
|
||||
return fn->filePath() == dir;
|
||||
});
|
||||
parent = static_cast<FolderNode *>(Utils::findOrDefault(parent->nodes(), [&dir](const Node *n) {
|
||||
const FolderNode *fn = n->asFolderNode();
|
||||
return fn && fn->filePath() == dir;
|
||||
}));
|
||||
if (!parent)
|
||||
return nullptr;
|
||||
}
|
||||
@@ -378,14 +384,21 @@ QList<FileNode *> FolderNode::recursiveFileNodes() const
|
||||
|
||||
QList<FolderNode*> FolderNode::folderNodes() const
|
||||
{
|
||||
return m_folderNodes;
|
||||
QList<FolderNode *> result;
|
||||
for (Node *n : m_nodes) {
|
||||
if (FolderNode *fn = n->asFolderNode())
|
||||
result.append(fn);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
FolderNode *FolderNode::folderNode(const Utils::FileName &directory) const
|
||||
{
|
||||
return Utils::findOrDefault(m_folderNodes, [&directory](const FolderNode *fn) {
|
||||
return fn->filePath() == directory;
|
||||
});
|
||||
return static_cast<FolderNode *>(Utils::findOrDefault(m_nodes, [&directory](const Node *n) {
|
||||
const FolderNode *fn = n->asFolderNode();
|
||||
return fn && fn->filePath() == directory;
|
||||
}));
|
||||
}
|
||||
|
||||
FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory,
|
||||
@@ -412,7 +425,7 @@ FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory
|
||||
// No FolderNode yet, so create it
|
||||
auto tmp = new ProjectExplorer::FolderNode(path);
|
||||
tmp->setDisplayName(part);
|
||||
parent->addFolderNode(tmp);
|
||||
parent->addNode(tmp);
|
||||
next = tmp;
|
||||
}
|
||||
parent = next;
|
||||
@@ -428,7 +441,7 @@ void FolderNode::buildTree(QList<FileNode *> &files, const Utils::FileName &over
|
||||
// Get relative path to rootNode
|
||||
QString parentDir = fn->filePath().toFileInfo().absolutePath();
|
||||
ProjectExplorer::FolderNode *folder = recursiveFindOrCreateFolderNode(parentDir, overrideBaseDir);
|
||||
folder->addFileNode(fn);
|
||||
folder->addNode(fn);
|
||||
}
|
||||
|
||||
emitTreeChanged();
|
||||
@@ -437,8 +450,10 @@ void FolderNode::buildTree(QList<FileNode *> &files, const Utils::FileName &over
|
||||
void FolderNode::accept(NodesVisitor *visitor)
|
||||
{
|
||||
visitor->visitFolderNode(this);
|
||||
foreach (FolderNode *subFolder, m_folderNodes)
|
||||
subFolder->accept(visitor);
|
||||
for (Node *n : m_nodes) {
|
||||
if (FolderNode *subFolder = n->asFolderNode())
|
||||
subFolder->accept(visitor);
|
||||
}
|
||||
}
|
||||
|
||||
void FolderNode::setDisplayName(const QString &name)
|
||||
@@ -506,22 +521,24 @@ FolderNode::AddNewInformation FolderNode::addNewInformation(const QStringList &f
|
||||
}
|
||||
|
||||
/*!
|
||||
Adds a file node specified by \a file to the internal list of the folder
|
||||
and emits the corresponding signals from the projectNode.
|
||||
|
||||
This function should be called within an implementation of the public function
|
||||
addFiles.
|
||||
Adds a node specified by \a node to the internal list of nodes.
|
||||
*/
|
||||
|
||||
void FolderNode::addFileNode(FileNode *file)
|
||||
void FolderNode::addNode(Node *node)
|
||||
{
|
||||
Q_ASSERT(managingProject());
|
||||
QTC_ASSERT(!node->parentFolderNode(), qDebug("File node has already a parent folder"));
|
||||
node->setParentFolderNode(this);
|
||||
m_nodes.append(node);
|
||||
}
|
||||
|
||||
QTC_ASSERT(!file->parentFolderNode(),
|
||||
qDebug("File node has already a parent folder"));
|
||||
/*!
|
||||
Removes a node specified by \a node from the internal list of nodes.
|
||||
The node object itself is not deleted.
|
||||
*/
|
||||
|
||||
file->setParentFolderNode(this);
|
||||
m_fileNodes.append(file);
|
||||
void FolderNode::removeNode(Node *node)
|
||||
{
|
||||
m_nodes.removeOne(node);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -529,40 +546,20 @@ void FolderNode::addFileNode(FileNode *file)
|
||||
and emits the corresponding signals from the projectNode.
|
||||
*/
|
||||
|
||||
void FolderNode::setFileNodes(const QList<FileNode *> &files)
|
||||
void FolderNode::setNodes(const QList<Node *> &nodes)
|
||||
{
|
||||
qDeleteAll(m_fileNodes);
|
||||
m_fileNodes = files;
|
||||
for (FileNode *node : m_fileNodes)
|
||||
qDeleteAll(m_nodes);
|
||||
m_nodes = nodes;
|
||||
for (Node *node : m_nodes)
|
||||
node->setParentFolderNode(this);
|
||||
}
|
||||
|
||||
/*!
|
||||
Adds a folder node specified by \a folder to the node hierarchy below
|
||||
\a parentFolder and emits the corresponding signals.
|
||||
Removes all files and subfolders from this folder node.
|
||||
*/
|
||||
void FolderNode::addFolderNode(FolderNode *folder)
|
||||
{
|
||||
Q_ASSERT(managingProject());
|
||||
|
||||
QTC_ASSERT(!folder->parentFolderNode(),
|
||||
qDebug("Project node has already a parent folder"));
|
||||
folder->setParentFolderNode(this);
|
||||
m_folderNodes.append(folder);
|
||||
}
|
||||
|
||||
void FolderNode::setFolderNodes(const QList<FolderNode *> &folders)
|
||||
{
|
||||
qDeleteAll(m_folderNodes);
|
||||
m_folderNodes = folders;
|
||||
for (FolderNode *node : m_folderNodes)
|
||||
node->setParentFolderNode(this);
|
||||
}
|
||||
|
||||
void FolderNode::makeEmpty()
|
||||
{
|
||||
setFolderNodes({});
|
||||
setFileNodes({});
|
||||
setNodes({});
|
||||
}
|
||||
|
||||
bool FolderNode::showInSimpleTree() const
|
||||
@@ -688,7 +685,7 @@ QList<RunConfiguration *> ProjectNode::runConfigurations() const
|
||||
|
||||
ProjectNode *ProjectNode::projectNode(const Utils::FileName &file) const
|
||||
{
|
||||
for (FolderNode *node : m_folderNodes) {
|
||||
for (Node *node : m_nodes) {
|
||||
if (ProjectNode *pnode = node->asProjectNode())
|
||||
if (pnode->filePath() == file)
|
||||
return pnode;
|
||||
@@ -699,31 +696,16 @@ ProjectNode *ProjectNode::projectNode(const Utils::FileName &file) const
|
||||
QList<ProjectNode*> FolderNode::projectNodes() const
|
||||
{
|
||||
QList<ProjectNode *> nodes;
|
||||
for (FolderNode *node : m_folderNodes) {
|
||||
for (Node *node : m_nodes) {
|
||||
if (ProjectNode *pnode = node->asProjectNode())
|
||||
nodes.append(pnode);
|
||||
}
|
||||
return nodes;
|
||||
}
|
||||
|
||||
/*!
|
||||
Adds project nodes specified by \a subProjects to the node hierarchy and
|
||||
emits the corresponding signals.
|
||||
*/
|
||||
void ProjectNode::addProjectNode(ProjectNode *subProject)
|
||||
{
|
||||
QTC_ASSERT(subProject, return);
|
||||
QTC_ASSERT(!subProject->parentFolderNode(), return);
|
||||
|
||||
subProject->setParentFolderNode(this);
|
||||
m_folderNodes.append(subProject);
|
||||
|
||||
Utils::sort(m_folderNodes);
|
||||
}
|
||||
|
||||
bool FolderNode::isEmpty() const
|
||||
{
|
||||
return m_fileNodes.isEmpty() && m_folderNodes.isEmpty();
|
||||
return m_nodes.isEmpty();
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -750,18 +732,4 @@ QString SessionNode::addFileFilter() const
|
||||
return QString::fromLatin1("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;");
|
||||
}
|
||||
|
||||
void SessionNode::addProjectNode(ProjectNode *projectNode)
|
||||
{
|
||||
QTC_ASSERT(!projectNode->parentFolderNode(),
|
||||
qDebug("Project node has already a parent folder"));
|
||||
projectNode->setParentFolderNode(this);
|
||||
m_folderNodes.append(projectNode);
|
||||
Utils::sort(m_folderNodes);
|
||||
}
|
||||
|
||||
void SessionNode::removeProjectNode(ProjectNode *projectNode)
|
||||
{
|
||||
m_folderNodes.removeOne(projectNode);
|
||||
}
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
@@ -154,12 +154,12 @@ public:
|
||||
virtual const SessionNode *asSessionNode() const { return nullptr; }
|
||||
|
||||
static bool sortByPath(const Node *a, const Node *b);
|
||||
void setParentFolderNode(FolderNode *parentFolder);
|
||||
|
||||
protected:
|
||||
Node(NodeType nodeType, const Utils::FileName &filePath, int line = -1);
|
||||
|
||||
void setPriority(int priority);
|
||||
void setParentFolderNode(FolderNode *parentFolder);
|
||||
|
||||
private:
|
||||
FolderNode *m_parentFolderNode = nullptr;
|
||||
@@ -206,6 +206,7 @@ public:
|
||||
QString displayName() const override;
|
||||
QIcon icon() const;
|
||||
|
||||
const QList<Node *> nodes() const { return m_nodes; }
|
||||
QList<FileNode *> fileNodes() const;
|
||||
FileNode *fileNode(const Utils::FileName &file) const;
|
||||
FileNode *recursiveFileNode(const Utils::FileName &file) const;
|
||||
@@ -245,11 +246,9 @@ public:
|
||||
// determines if node will be shown in the flat view, by default folder and projects aren't shown
|
||||
virtual bool showInSimpleTree() const;
|
||||
|
||||
void addFileNode(FileNode *file);
|
||||
void setFileNodes(const QList<FileNode*> &files);
|
||||
|
||||
void addFolderNode(FolderNode *subFolder);
|
||||
void setFolderNodes(const QList<FolderNode*> &folders);
|
||||
void addNode(Node *node);
|
||||
void removeNode(Node *node);
|
||||
void setNodes(const QList<Node *> &nodes);
|
||||
|
||||
// all subFolders that are projects
|
||||
QList<ProjectNode*> projectNodes() const;
|
||||
@@ -261,8 +260,7 @@ public:
|
||||
const FolderNode *asFolderNode() const override { return this; }
|
||||
|
||||
protected:
|
||||
QList<FolderNode*> m_folderNodes;
|
||||
QList<FileNode*> m_fileNodes;
|
||||
QList<Node *> m_nodes;
|
||||
|
||||
private:
|
||||
QString m_displayName;
|
||||
@@ -300,7 +298,6 @@ public:
|
||||
virtual QList<RunConfiguration *> runConfigurations() const;
|
||||
|
||||
ProjectNode *projectNode(const Utils::FileName &file) const;
|
||||
void addProjectNode(ProjectNode *subProject);
|
||||
|
||||
ProjectNode *asProjectNode() final { return this; }
|
||||
const ProjectNode *asProjectNode() const final { return this; }
|
||||
@@ -330,10 +327,6 @@ private:
|
||||
|
||||
SessionNode *asSessionNode() final { return this; }
|
||||
const SessionNode *asSessionNode() const final { return this; }
|
||||
|
||||
friend class SessionManager;
|
||||
void addProjectNode(ProjectNode *projectNode);
|
||||
void removeProjectNode(ProjectNode *projectNode);
|
||||
};
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
@@ -381,7 +381,7 @@ void SessionManager::addProject(Project *pro)
|
||||
QTC_ASSERT(!d->m_projects.contains(pro), return);
|
||||
|
||||
d->m_projects.append(pro);
|
||||
d->m_sessionNode.addProjectNode(pro->rootProjectNode());
|
||||
d->m_sessionNode.addNode(pro->rootProjectNode());
|
||||
|
||||
connect(pro, &Project::fileListChanged,
|
||||
m_instance, &SessionManager::clearProjectFileCache);
|
||||
@@ -738,7 +738,7 @@ void SessionManager::removeProjects(QList<Project *> remove)
|
||||
m_instance, &SessionManager::clearProjectFileCache);
|
||||
d->m_projectFileCache.remove(pro);
|
||||
|
||||
d->m_sessionNode.removeProjectNode(pro->rootProjectNode());
|
||||
d->m_sessionNode.removeNode(pro->rootProjectNode());
|
||||
emit m_instance->projectRemoved(pro);
|
||||
delete pro;
|
||||
}
|
||||
|
@@ -322,9 +322,9 @@ QbsGroupNode::QbsGroupNode(const qbs::GroupData &grp, const QString &productPath
|
||||
|
||||
setIcon(m_groupIcon);
|
||||
|
||||
addFileNode(new QbsFileNode(Utils::FileName::fromString(grp.location().filePath()),
|
||||
ProjectExplorer::FileType::Project, false,
|
||||
grp.location().line()));
|
||||
addNode(new QbsFileNode(Utils::FileName::fromString(grp.location().filePath()),
|
||||
ProjectExplorer::FileType::Project, false,
|
||||
grp.location().line()));
|
||||
|
||||
updateQbsGroupData(grp, productPath, true);
|
||||
}
|
||||
@@ -472,7 +472,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root,
|
||||
}
|
||||
if (!fn) {
|
||||
fn = new ProjectExplorer::FileNode(path, newFileType, generated);
|
||||
root->addFileNode(fn);
|
||||
root->addNode(fn);
|
||||
}
|
||||
continue;
|
||||
} else {
|
||||
@@ -493,7 +493,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root,
|
||||
ProjectExplorer::NodeType::Folder,
|
||||
displayNameFromPath(c->path(), baseDir), false);
|
||||
}
|
||||
root->addFolderNode(fn);
|
||||
root->addNode(fn);
|
||||
} else {
|
||||
fn->setDisplayName(displayNameFromPath(c->path(), baseDir));
|
||||
}
|
||||
@@ -542,10 +542,10 @@ QbsProductNode::QbsProductNode(const qbs::Project &project, const qbs::ProductDa
|
||||
|
||||
setIcon(m_productIcon);
|
||||
|
||||
addFolderNode(m_generatedFilesNode);
|
||||
addFileNode(new QbsFileNode(Utils::FileName::fromString(prd.location().filePath()),
|
||||
ProjectExplorer::FileType::Project, false,
|
||||
prd.location().line()));
|
||||
addNode(m_generatedFilesNode);
|
||||
addNode(new QbsFileNode(Utils::FileName::fromString(prd.location().filePath()),
|
||||
ProjectExplorer::FileType::Project, false,
|
||||
prd.location().line()));
|
||||
|
||||
setQbsProductData(project, prd);
|
||||
}
|
||||
@@ -641,7 +641,7 @@ void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::P
|
||||
QbsGroupNode::setupFiles(this, grp, grp.allFilePaths(), productPath, false);
|
||||
continue;
|
||||
}
|
||||
addProjectNode(new QbsGroupNode(grp, productPath));
|
||||
addNode(new QbsGroupNode(grp, productPath));
|
||||
}
|
||||
|
||||
if (prd.isEnabled()) {
|
||||
@@ -703,11 +703,11 @@ void QbsProjectNode::update(const qbs::Project &qbsProject, const qbs::ProjectDa
|
||||
auto subProject =
|
||||
new QbsProjectNode(Utils::FileName::fromString(subData.location().filePath()));
|
||||
subProject->update(qbsProject, subData);
|
||||
addProjectNode(subProject);
|
||||
addNode(subProject);
|
||||
}
|
||||
|
||||
foreach (const qbs::ProductData &prd, prjData.products())
|
||||
addProjectNode(new QbsProductNode(qbsProject, prd));
|
||||
addNode(new QbsProductNode(qbsProject, prd));
|
||||
|
||||
if (!prjData.name().isEmpty())
|
||||
setDisplayName(prjData.name());
|
||||
@@ -738,7 +738,7 @@ void QbsProjectNode::ctor()
|
||||
m_projectIcon = generateIcon(QString::fromLatin1(ProjectExplorer::Constants::FILEOVERLAY_QT));
|
||||
|
||||
setIcon(m_projectIcon);
|
||||
addFileNode(new ProjectExplorer::FileNode(filePath(), ProjectExplorer::FileType::Project, false));
|
||||
addNode(new ProjectExplorer::FileNode(filePath(), ProjectExplorer::FileType::Project, false));
|
||||
}
|
||||
|
||||
QbsProductNode *QbsProjectNode::findProductNode(const QString &uniqueName)
|
||||
@@ -772,7 +772,7 @@ QbsRootProjectNode::QbsRootProjectNode(QbsProject *project) :
|
||||
ProjectExplorer::NodeType::Folder,
|
||||
QCoreApplication::translate("QbsRootProjectNode", "Qbs files")))
|
||||
{
|
||||
addFolderNode(m_buildSystemFiles);
|
||||
addNode(m_buildSystemFiles);
|
||||
}
|
||||
|
||||
void QbsRootProjectNode::update()
|
||||
|
@@ -405,19 +405,19 @@ struct InternalNode
|
||||
if (contents.isEmpty())
|
||||
vfs->readVirtualFile(file.toString(), QMakeVfs::VfsExact, &contents);
|
||||
auto resourceNode = new ResourceEditor::ResourceTopLevelNode(file, contents, folder);
|
||||
folder->addFolderNode(resourceNode);
|
||||
folder->addNode(resourceNode);
|
||||
resourceNode->addInternalNodes();
|
||||
}
|
||||
} else {
|
||||
for (const FileName &file : files)
|
||||
folder->addFileNode(new FileNode(file, type, false));
|
||||
folder->addNode(new FileNode(file, type, false));
|
||||
}
|
||||
|
||||
// Virtual
|
||||
{
|
||||
for (InternalNode *node : virtualfolders) {
|
||||
FolderNode *newNode = createFolderNode(node);
|
||||
folder->addFolderNode(newNode);
|
||||
folder->addNode(newNode);
|
||||
node->addSubFolderContents(newNode);
|
||||
}
|
||||
}
|
||||
@@ -427,7 +427,7 @@ struct InternalNode
|
||||
QMap<QString, InternalNode *>::const_iterator end = subnodes.constEnd();
|
||||
for ( ; it != end; ++it) {
|
||||
FolderNode *newNode = createFolderNode(it.value());
|
||||
folder->addFolderNode(newNode);
|
||||
folder->addNode(newNode);
|
||||
it.value()->addSubFolderContents(newNode);
|
||||
}
|
||||
}
|
||||
@@ -591,8 +591,8 @@ void QmakePriFileNode::processValues(PriFileEvalResult &result)
|
||||
void QmakePriFileNode::update(const Internal::PriFileEvalResult &result)
|
||||
{
|
||||
// add project file node
|
||||
if (m_fileNodes.isEmpty())
|
||||
addFileNode(new FileNode(m_projectFilePath, FileType::Project, false));
|
||||
if (m_nodes.isEmpty())
|
||||
addNode(new FileNode(m_projectFilePath, FileType::Project, false));
|
||||
|
||||
m_recursiveEnumerateFiles = result.recursiveEnumerateFiles;
|
||||
watchFolders(result.folders.toSet());
|
||||
@@ -1979,14 +1979,14 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult)
|
||||
|
||||
if (priFile->proFile) {
|
||||
QmakePriFileNode *qmakePriFileNode = new QmakePriFileNode(m_project, this, priFile->name);
|
||||
pn->addProjectNode(qmakePriFileNode);
|
||||
pn->addNode(qmakePriFileNode);
|
||||
qmakePriFileNode->setIncludedInExactParse(
|
||||
(result->state == EvalResult::EvalOk) && pn->includedInExactParse());
|
||||
qmakePriFileNode->update(priFile->result);
|
||||
toCompare.append(qMakePair(qmakePriFileNode, priFile));
|
||||
} else {
|
||||
QmakeProFileNode *qmakeProFileNode = new QmakeProFileNode(m_project, priFile->name);
|
||||
pn->addProjectNode(qmakeProFileNode);
|
||||
pn->addNode(qmakeProFileNode);
|
||||
qmakeProFileNode->setIncludedInExactParse(
|
||||
result->exactSubdirs.contains(qmakeProFileNode->filePath())
|
||||
&& pn->includedInExactParse());
|
||||
|
@@ -121,7 +121,7 @@ ResourceTopLevelNode::~ResourceTopLevelNode()
|
||||
|
||||
void ResourceTopLevelNode::addInternalNodes()
|
||||
{
|
||||
QMap<PrefixFolderLang, QList<ProjectExplorer::FileNode *>> filesToAdd;
|
||||
QMap<PrefixFolderLang, QList<ProjectExplorer::Node *>> nodesToAdd;
|
||||
QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode *>> foldersToAddToFolders;
|
||||
QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode *>> foldersToAddToPrefix;
|
||||
|
||||
@@ -138,7 +138,7 @@ void ResourceTopLevelNode::addInternalNodes()
|
||||
PrefixFolderLang prefixId(prefix, QString(), lang);
|
||||
if (!prefixNodes.contains(prefixId)) {
|
||||
ProjectExplorer::FolderNode *fn = new ResourceFolderNode(file.prefix(i), file.lang(i), this);
|
||||
addFolderNode(fn);
|
||||
addNode(fn);
|
||||
prefixNodes.insert(prefixId, fn);
|
||||
}
|
||||
ResourceFolderNode *currentPrefixNode = static_cast<ResourceFolderNode*>(prefixNodes[prefixId]);
|
||||
@@ -189,6 +189,7 @@ void ResourceTopLevelNode::addInternalNodes()
|
||||
} else {
|
||||
PrefixFolderLang parentFolderId(prefix, parentFolderName, lang);
|
||||
foldersToAddToFolders[parentFolderId] << newNode;
|
||||
nodesToAdd[parentFolderId] << newNode;
|
||||
}
|
||||
folderNodes.insert(folderId, newNode);
|
||||
}
|
||||
@@ -198,9 +199,9 @@ void ResourceTopLevelNode::addInternalNodes()
|
||||
|
||||
const QString qrcPath = QDir::cleanPath(prefixWithSlash + alias);
|
||||
fileNames.insert(fileName);
|
||||
filesToAdd[folderId]
|
||||
<< new ResourceFileNode(Utils::FileName::fromString(fileName),
|
||||
qrcPath, displayName);
|
||||
auto rn = new ResourceFileNode(Utils::FileName::fromString(fileName),
|
||||
qrcPath, displayName);
|
||||
nodesToAdd[folderId] << rn;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,11 +210,10 @@ void ResourceTopLevelNode::addInternalNodes()
|
||||
foreach (FolderNode *sfn, folderNodes()) {
|
||||
ResourceFolderNode *srn = static_cast<ResourceFolderNode *>(sfn);
|
||||
PrefixFolderLang folderId(srn->prefix(), QString(), srn->lang());
|
||||
srn->setFileNodes(filesToAdd[folderId]);
|
||||
srn->setFolderNodes(foldersToAddToPrefix[folderId]);
|
||||
srn->setNodes(nodesToAdd[folderId]);
|
||||
foreach (FolderNode* ssfn, sfn->folderNodes()) {
|
||||
SimpleResourceFolderNode *sssn = static_cast<SimpleResourceFolderNode *>(ssfn);
|
||||
sssn->addFilesAndSubfolders(filesToAdd, foldersToAddToFolders, srn->prefix(), srn->lang());
|
||||
sssn->addFilesAndSubfolders(foldersToAddToFolders, nodesToAdd, srn->prefix(), srn->lang());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -649,16 +649,13 @@ ResourceFolderNode *SimpleResourceFolderNode::prefixNode() const
|
||||
return m_prefixNode;
|
||||
}
|
||||
|
||||
void SimpleResourceFolderNode::addFilesAndSubfolders(QMap<PrefixFolderLang,
|
||||
QList<ProjectExplorer::FileNode *>> filesToAdd,
|
||||
QMap<PrefixFolderLang,
|
||||
QList<ProjectExplorer::FolderNode*> > foldersToAdd,
|
||||
void SimpleResourceFolderNode::addFilesAndSubfolders(QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode*> > foldersToAdd,
|
||||
QMap<PrefixFolderLang, QList<ProjectExplorer::Node*> > nodesToAdd,
|
||||
const QString &prefix, const QString &lang)
|
||||
{
|
||||
setFileNodes(filesToAdd.value(PrefixFolderLang(prefix, m_folderName, lang)));
|
||||
setFolderNodes(foldersToAdd.value(PrefixFolderLang(prefix, m_folderName, lang)));
|
||||
setNodes(nodesToAdd.value(PrefixFolderLang(prefix, m_folderName, lang)));
|
||||
foreach (FolderNode* subNode, folderNodes()) {
|
||||
SimpleResourceFolderNode* sn = static_cast<SimpleResourceFolderNode*>(subNode);
|
||||
sn->addFilesAndSubfolders(filesToAdd, foldersToAdd, prefix, lang);
|
||||
sn->addFilesAndSubfolders(foldersToAdd, nodesToAdd, prefix, lang);
|
||||
}
|
||||
}
|
||||
|
@@ -122,8 +122,8 @@ public:
|
||||
const QString &prefix, const QString &lang, Utils::FileName absolutePath,
|
||||
ResourceTopLevelNode *topLevel, ResourceFolderNode *prefixNode);
|
||||
QList<ProjectExplorer::ProjectAction> supportedActions(ProjectExplorer::Node *node) const;
|
||||
void addFilesAndSubfolders(QMap<PrefixFolderLang, QList<ProjectExplorer::FileNode *>> filesToAdd,
|
||||
QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode *>> foldersToAdd,
|
||||
void addFilesAndSubfolders(QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode *>> foldersToAdd,
|
||||
QMap<PrefixFolderLang, QList<ProjectExplorer::Node *>> nodesToAdd,
|
||||
const QString &prefix, const QString &lang);
|
||||
bool addFiles(const QStringList &filePaths, QStringList *notAdded);
|
||||
bool removeFiles(const QStringList &filePaths, QStringList *notRemoved);
|
||||
|
Reference in New Issue
Block a user