From 76dd78f8f86d0d419e6a8c1c8c37b78bd197b5f1 Mon Sep 17 00:00:00 2001 From: Radovan Zivkovic Date: Thu, 3 Oct 2013 23:52:56 +0200 Subject: Added VcFileContainerNode. Change-Id: If6484c8cbc3576ab160c5bb548a6e08b71906c3c Reviewed-by: Tobias Hunger --- src/plugins/vcprojectmanager/menuhandler.cpp | 50 +-- src/plugins/vcprojectmanager/menuhandler.h | 1 - src/plugins/vcprojectmanager/vcproject.h | 1 - .../vcprojectmanager/vcprojectmanagerconstants.h | 7 +- .../vcprojectmanager/vcprojectmodel/files.cpp | 7 +- .../vcprojectmanager/vcprojectmodel/filter.cpp | 12 +- .../vcprojectmanager/vcprojectmodel/filter.h | 3 +- .../vcprojectmanager/vcprojectmodel/folder.cpp | 16 +- .../vcprojectmanager/vcprojectmodel/folder.h | 3 +- .../vcprojectmodel/vcdocprojectnodes.cpp | 458 +++++---------------- .../vcprojectmodel/vcdocprojectnodes.h | 131 +----- 11 files changed, 166 insertions(+), 523 deletions(-) diff --git a/src/plugins/vcprojectmanager/menuhandler.cpp b/src/plugins/vcprojectmanager/menuhandler.cpp index e9bba5f152..909b633d07 100644 --- a/src/plugins/vcprojectmanager/menuhandler.cpp +++ b/src/plugins/vcprojectmanager/menuhandler.cpp @@ -166,29 +166,9 @@ void MenuHandler::onShowProjectSettings() project->showSettingsDialog(); } -void MenuHandler::onAddFile() -{ - QString fileName; - - ProjectExplorer::ProjectExplorerPlugin *projExplPlugin = ProjectExplorer::ProjectExplorerPlugin::instance(); - ProjectExplorer::Node *node = projExplPlugin->currentNode(); - - if (node) { - if (node->nodeType() == ProjectExplorer::FolderNodeType) { - VcFolderNode *folderNode = static_cast(node); - folderNode->addFileNode(fileName); - } - - if (node->nodeType() == ProjectExplorer::ProjectFileType) { - VcDocProjectNode *projectNode = static_cast(node); - projectNode->addFileNode(fileName); - } - } -} - void MenuHandler::onAddFolder() { - VcEnterNameDialog dlg(QLatin1String("Filter:")); + VcEnterNameDialog dlg(QLatin1String("Folder:")); if (dlg.exec() == QDialog::Accepted) { QString folderName = dlg.contanerName(); @@ -197,13 +177,13 @@ void MenuHandler::onAddFolder() if (node) { if (node->nodeType() == ProjectExplorer::FolderNodeType) { - VcFolderNode *folderNode = static_cast(node); - folderNode->addFolderNode(folderName); + VcFileContainerNode *folderNode = static_cast(node); + folderNode->addFileContainerNode(folderName, VcFileContainerNode::VcContainerType_Folder); } if (node->nodeType() == ProjectExplorer::ProjectFileType) { VcDocProjectNode *projectNode = static_cast(node); - projectNode->addFolderNode(folderName); + projectNode->addFileContainerNode(folderName, VcFileContainerNode::VcContainerType_Folder); } } } @@ -220,13 +200,13 @@ void MenuHandler::onAddFilter() if (node) { if (node->nodeType() == ProjectExplorer::FolderNodeType) { - VcContainerNode *folderNode = static_cast(node); - folderNode->addFilterNode(filterName); + VcFileContainerNode *folderNode = static_cast(node); + folderNode->addFileContainerNode(filterName); } if (node->nodeType() == ProjectExplorer::ProjectFileType) { VcDocProjectNode *projectNode = static_cast(node); - projectNode->addFilterNode(filterName); + projectNode->addFileContainerNode(filterName, VcFileContainerNode::VcContainerType_Filter); } } } @@ -238,17 +218,17 @@ void MenuHandler::onRemoveFilter() ProjectExplorer::Node *node = projExplPlugin->currentNode(); if (node && node->nodeType() == ProjectExplorer::FolderNodeType) { - VcFilterNode *filterNode = static_cast(node); + VcFileContainerNode *filterNode = static_cast(node); ProjectExplorer::FolderNode *parentNode = filterNode->parentFolderNode(); if (parentNode->nodeType() == ProjectExplorer::FolderNodeType) { - VcContainerNode *projectNode = static_cast(parentNode); - projectNode->removeFilterNode(filterNode); + VcFileContainerNode *projectNode = static_cast(parentNode); + projectNode->removeFileContainerNode(filterNode); } else if (parentNode->nodeType() == ProjectExplorer::ProjectFileType) { VcDocProjectNode *projectNode = static_cast(parentNode); - projectNode->removeFilterNode(filterNode); + projectNode->removeFileContainerNode(filterNode); } } } @@ -259,17 +239,17 @@ void MenuHandler::onRemoveFolder() ProjectExplorer::Node *node = projExplPlugin->currentNode(); if (node && node->nodeType() == ProjectExplorer::FolderNodeType) { - VcFolderNode *folderNode = static_cast(node); + VcFileContainerNode *folderNode = static_cast(node); ProjectExplorer::FolderNode *parentNode = folderNode->parentFolderNode(); if (parentNode->nodeType() == ProjectExplorer::FolderNodeType) { - VcFolderNode *parentFolderNode = static_cast(parentNode); - parentFolderNode->removeFolderNode(folderNode); + VcFileContainerNode *parentFolderNode = static_cast(parentNode); + parentFolderNode->removeFileContainerNode(folderNode); } else if (parentNode->nodeType() == ProjectExplorer::ProjectFileType) { VcDocProjectNode *projectNode = static_cast(parentNode); - projectNode->removeFolderNode(folderNode); + projectNode->removeFileContainerNode(folderNode); } } } diff --git a/src/plugins/vcprojectmanager/menuhandler.h b/src/plugins/vcprojectmanager/menuhandler.h index 664c6c5dd1..4ee6fa4051 100644 --- a/src/plugins/vcprojectmanager/menuhandler.h +++ b/src/plugins/vcprojectmanager/menuhandler.h @@ -54,7 +54,6 @@ private: private slots: void onShowProjectSettings(); - void onAddFile(); void onAddFolder(); void onAddFilter(); void onRemoveFilter(); diff --git a/src/plugins/vcprojectmanager/vcproject.h b/src/plugins/vcprojectmanager/vcproject.h index ff7bd52956..976f755ac9 100644 --- a/src/plugins/vcprojectmanager/vcproject.h +++ b/src/plugins/vcprojectmanager/vcproject.h @@ -50,7 +50,6 @@ namespace Internal { class VcProjectFile; class VcDocProjectNode; class VcManager; -class VcFolderNode; class Configuration; class VcProjectBuildConfiguration; class IConfiguration; diff --git a/src/plugins/vcprojectmanager/vcprojectmanagerconstants.h b/src/plugins/vcprojectmanager/vcprojectmanagerconstants.h index b5b613c605..5a52d80c91 100644 --- a/src/plugins/vcprojectmanager/vcprojectmanagerconstants.h +++ b/src/plugins/vcprojectmanager/vcprojectmanagerconstants.h @@ -62,14 +62,15 @@ const char VC_PROJECT_TOOL_XML[] = "VcProject.ToolXML"; const char VC_PROJECT_KIT_INFO_ID[] = "VcProject.KitInformation"; const char VC_PROJECT_SHOW_PROPERTIES_ACTION[] = "VcProject.ShowPropertiesAction"; -const char VC_PROJECT_ADD_NEW_FILE_ACTION[] = "VcProject.AddNewFileAction"; -const char VC_PROJECT_ADD_EXISTING_FILES_ACTION[] = "VcProject.AddExistingFilesAction"; -const char VC_PROJECT_REMOVE_FILE_ACTION[] = "VcProject.RemoveFileAction"; const char VC_PROJECT_ADD_FOLDER_ACTION[] = "VcProject.AddFolderAction"; const char VC_PROJECT_ADD_FILTER_ACTION[] = "VcProject.AddFilterAction"; const char VC_PROJECT_REMOVE_FOLDER_ACTION[] = "VcProject.RemoveFolderAction"; const char VC_PROJECT_REMOVE_FILTER_ACTION[] = "VcProject.RemoveFilterAction"; +// File container constants +const char VC_PROJECT_FILE_CONTAINER_FOLDER[] = "Folder"; +const char VC_PROJECT_FILE_CONTAINER_FILTER[] = "Filter"; + enum SchemaVersion { SV_2003, diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/files.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/files.cpp index f951875312..331f046351 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/files.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/files.cpp @@ -30,6 +30,7 @@ #include "files.h" #include "vcprojectdocument.h" +#include "../vcprojectmanagerconstants.h" namespace VcProjectManager { namespace Internal { @@ -216,7 +217,7 @@ void Files::processFile(const QDomNode &fileNode) void Files::processFilter(const QDomNode &filterNode) { - IFileContainer *filter = new Filter(QLatin1String("Filter"), m_parentProject); + IFileContainer *filter = new Filter(m_parentProject); filter->processNode(filterNode); m_filters.append(filter); @@ -423,7 +424,7 @@ void Files2005::processFile(const QDomNode &fileNode) void Files2005::processFilter(const QDomNode &filterNode) { - IFileContainer *filter = new Filter(QLatin1String("Filter"), m_parentProject); + IFileContainer *filter = new Filter(m_parentProject); filter->processNode(filterNode); m_filters.append(filter); @@ -441,7 +442,7 @@ void Files2005::processFilter(const QDomNode &filterNode) void Files2005::processFolder(const QDomNode &folderNode) { - IFileContainer *folder = new Folder(QLatin1String("Folder"), m_parentProject); + IFileContainer *folder = new Folder(m_parentProject); folder->processNode(folderNode); m_folders.append(folder); diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/filter.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/filter.cpp index 6ca8fd4ce9..3a94ca0f1e 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/filter.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/filter.cpp @@ -33,13 +33,13 @@ #include "vcprojectdocument.h" #include "generalattributecontainer.h" +#include "../vcprojectmanagerconstants.h" namespace VcProjectManager { namespace Internal { -Filter::Filter(const QString &containerType, VcProjectDocument *parentProjectDoc) - : m_parentProjectDoc(parentProjectDoc), - m_containerType(containerType) +Filter::Filter(VcProjectDocument *parentProjectDoc) + : m_parentProjectDoc(parentProjectDoc) { m_attributeContainer = new GeneralAttributeContainer; } @@ -48,7 +48,6 @@ Filter::Filter(const Filter &filter) { m_parentProjectDoc = filter.m_parentProjectDoc; m_name = filter.m_name; - m_containerType = filter.m_containerType; m_attributeContainer = new GeneralAttributeContainer; *(m_attributeContainer) = *(filter.m_attributeContainer); @@ -64,7 +63,6 @@ Filter &Filter::operator =(const Filter &filter) if (this != &filter) { m_name = filter.m_name; m_parentProjectDoc = filter.m_parentProjectDoc; - m_containerType = filter.m_containerType; *(m_attributeContainer) = *(filter.m_attributeContainer); m_files.clear(); @@ -86,7 +84,7 @@ Filter::~Filter() QString Filter::containerType() const { - return m_containerType; + return QLatin1String(Constants::VC_PROJECT_FILE_CONTAINER_FILTER); } void Filter::processNode(const QDomNode &node) @@ -271,7 +269,7 @@ void Filter::processFile(const QDomNode &fileNode) void Filter::processFilter(const QDomNode &filterNode) { - IFileContainer *filter = new Filter(QLatin1String("Filter"), m_parentProjectDoc); + IFileContainer *filter = new Filter(m_parentProjectDoc); filter->processNode(filterNode); addFileContainer(filter); diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/filter.h b/src/plugins/vcprojectmanager/vcprojectmodel/filter.h index 8c13d2e844..fdcc933b26 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/filter.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/filter.h @@ -42,7 +42,7 @@ class Filter; class Filter : public IFileContainer { public: - Filter(const QString &containerType, VcProjectDocument *parentProjectDoc); + Filter(VcProjectDocument *parentProjectDoc); Filter(const Filter &filter); Filter& operator=(const Filter &filter); ~Filter(); @@ -83,7 +83,6 @@ private: QList m_files; VcProjectDocument *m_parentProjectDoc; IAttributeContainer *m_attributeContainer; - QString m_containerType; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/folder.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/folder.cpp index b5177a4f66..e29b8c4291 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/folder.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/folder.cpp @@ -33,13 +33,13 @@ #include "vcprojectdocument.h" #include "generalattributecontainer.h" +#include "../vcprojectmanagerconstants.h" namespace VcProjectManager { namespace Internal { -Folder::Folder(const QString &containerType, VcProjectDocument *parentProjectDoc) - : m_parentProjectDoc(parentProjectDoc), - m_containerName(containerType) +Folder::Folder(VcProjectDocument *parentProjectDoc) + : m_parentProjectDoc(parentProjectDoc) { m_attributeContainer = new GeneralAttributeContainer; } @@ -50,7 +50,6 @@ Folder::Folder(const Folder &folder) m_name = folder.m_name; m_attributeContainer = new GeneralAttributeContainer; *m_attributeContainer = *(folder.m_attributeContainer); - m_containerName = folder.m_containerName; foreach (IFile *file, folder.m_files) m_files.append(file->clone()); @@ -64,7 +63,6 @@ Folder &Folder::operator =(const Folder &folder) if (this != &folder) { m_parentProjectDoc = folder.m_parentProjectDoc; m_name = folder.m_name; - m_containerName = folder.m_containerName; *m_attributeContainer = *(folder.m_attributeContainer); qDeleteAll(m_files); @@ -88,7 +86,7 @@ Folder::~Folder() QString Folder::containerType() const { - return m_containerName; + return QLatin1String(Constants::VC_PROJECT_FILE_CONTAINER_FOLDER); } void Folder::processNode(const QDomNode &node) @@ -119,7 +117,7 @@ VcNodeWidget *Folder::createSettingsWidget() QDomNode Folder::toXMLDomNode(QDomDocument &domXMLDocument) const { - QDomElement fileNode = domXMLDocument.createElement(m_containerName); + QDomElement fileNode = domXMLDocument.createElement(QLatin1String("Folder")); fileNode.setAttribute(QLatin1String("Name"), m_name); @@ -276,7 +274,7 @@ void Folder::processFile(const QDomNode &fileNode) void Folder::processFilter(const QDomNode &filterNode) { - IFileContainer *filter = new Filter(QLatin1String("Filter"), m_parentProjectDoc); + IFileContainer *filter = new Filter(m_parentProjectDoc); filter->processNode(filterNode); m_fileContainers.append(filter); @@ -294,7 +292,7 @@ void Folder::processFilter(const QDomNode &filterNode) void Folder::processFolder(const QDomNode &folderNode) { - IFileContainer *folder = new Folder(QLatin1String("Folder"), m_parentProjectDoc); + IFileContainer *folder = new Folder(m_parentProjectDoc); folder->processNode(folderNode); m_fileContainers.append(folder); diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/folder.h b/src/plugins/vcprojectmanager/vcprojectmodel/folder.h index bf15e4a49e..b62bc6cf39 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/folder.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/folder.h @@ -40,7 +40,7 @@ namespace Internal { class Folder : public IFileContainer { public: - Folder(const QString &containerType, VcProjectDocument *parentProjectDoc); + Folder(VcProjectDocument *parentProjectDoc); Folder(const Folder &folder); Folder& operator=(const Folder &folder); ~Folder(); @@ -83,7 +83,6 @@ private: QString m_name; // required VcProjectDocument *m_parentProjectDoc; IAttributeContainer *m_attributeContainer; - QString m_containerName; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.cpp index 9f9733f67a..3619e4edc2 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.cpp @@ -34,6 +34,7 @@ #include "filter.h" #include "file.h" #include "files.h" +#include "../vcprojectmanagerconstants.h" #include #include @@ -57,54 +58,31 @@ void VcFileNode::readChildren(VcDocProjectNode *vcDocProj) Q_UNUSED(vcDocProj) } - -VcContainerNode::VcContainerNode(const QString &folderPath) - : ProjectExplorer::FolderNode(folderPath) -{ -} - -VcContainerNode::~VcContainerNode() +VcFileContainerNode::VcFileContainerNode(IFileContainer *fileContainerModel, VcDocProjectNode *vcDocProjNode) + : ProjectExplorer::FolderNode(fileContainerModel->name()), + m_vcFileContainerModel(fileContainerModel), + m_parentVcDocProjNode(vcDocProjNode) { -} + m_vcContainerType = VcContainerType_Filter; + if (m_vcFileContainerModel->containerType() == QLatin1String(Constants::VC_PROJECT_FILE_CONTAINER_FOLDER)) + m_vcContainerType = VcContainerType_Folder; -VcContainerNode::VcContainerType VcContainerNode::vcContainerType() const -{ - return m_vcContainerType; + readChildren(); } -VcFileNode *VcContainerNode::findFileNode(const QString &filePath) +VcFileContainerNode::~VcFileContainerNode() { - VcFileNode *fileNode = static_cast(findFile(filePath)); - if (fileNode) - return fileNode; - - foreach (ProjectExplorer::FolderNode *folderNode, m_subFolderNodes) { - VcContainerNode *containerNode = static_cast(folderNode); - fileNode = containerNode->findFileNode(filePath); - - if (fileNode) - return fileNode; - } - - return 0; } - -VcFilterNode::VcFilterNode(VcProjectManager::Internal::IFileContainer *filterModel, VcDocProjectNode *vcDocProjNode) - : VcContainerNode(filterModel->name()), - m_vcFilterModel(filterModel) -{ - m_parentVcDocProjNode = vcDocProjNode; - m_vcContainerType = VcContainerType_Filter; - readChildren(); -} - -VcFilterNode::~VcFilterNode() +VcFileContainerNode::VcContainerType VcFileContainerNode::containerType() const { + if (m_vcFileContainerModel->containerType() == QLatin1String(Constants::VC_PROJECT_FILE_CONTAINER_FILTER)) + return VcContainerType_Filter; + return VcContainerType_Folder; } -void VcFilterNode::addFileNode(const QString &filePath) +void VcFileContainerNode::addFileNode(const QString &filePath) { File *file = new File(m_parentVcDocProjNode->m_vcProjectModel); file->setRelativePath(filePath); @@ -116,9 +94,9 @@ void VcFilterNode::addFileNode(const QString &filePath) } } -bool VcFilterNode::appendFileNode(VcFileNode *fileNode) +bool VcFileContainerNode::appendFileNode(VcFileNode *fileNode) { - if (!m_vcFilterModel || !fileNode || !fileNode->m_vcFileModel) + if (!m_vcFileContainerModel || !fileNode || !fileNode->m_vcFileModel) return false; if (m_fileNodes.contains(fileNode)) @@ -134,67 +112,75 @@ bool VcFilterNode::appendFileNode(VcFileNode *fileNode) } } - m_vcFilterModel->addFile(fileNode->m_vcFileModel); + m_vcFileContainerModel->addFile(fileNode->m_vcFileModel); QList vcFileNodes; vcFileNodes << fileNode; m_parentVcDocProjNode->addFileNodes(vcFileNodes, this); return true; } -void VcFilterNode::addFilterNode(const QString &name) +void VcFileContainerNode::addFileContainerNode(const QString &name, VcContainerType type) { - Filter *filter = new Filter(QLatin1String("Filter"), m_parentVcDocProjNode->m_vcProjectModel); - filter->setName(name); - VcFilterNode *filterNode = new VcFilterNode(filter, m_parentVcDocProjNode); + IFileContainer *fileContainerModel = 0; + + if (type == VcContainerType_Filter) + fileContainerModel = new Filter(m_parentVcDocProjNode->m_vcProjectModel); + else if (type == VcContainerType_Folder) + fileContainerModel = new Folder(m_parentVcDocProjNode->m_vcProjectModel); - if (!appendFilterNode(filterNode)) { - delete filter; - delete filterNode; + if (fileContainerModel) { + fileContainerModel->setName(name); + VcFileContainerNode *folderNode = new VcFileContainerNode(fileContainerModel, m_parentVcDocProjNode); + + if (!appendFileContainerNode(folderNode)) { + delete fileContainerModel; + delete folderNode; + } } } -bool VcFilterNode::appendFilterNode(VcFilterNode *filterNode) +bool VcFileContainerNode::appendFileContainerNode(VcFileContainerNode *fileContainer) { - if (!m_vcFilterModel || !filterNode || !filterNode->m_vcFilterModel) + if (!m_vcFileContainerModel || !fileContainer || !fileContainer->m_vcFileContainerModel) return false; - if (m_subFolderNodes.contains(filterNode)) + if (m_subFolderNodes.contains(fileContainer)) return false; else { foreach (ProjectExplorer::FolderNode *fNode, m_subFolderNodes) { - VcFilterNode *vcFilterNode = qobject_cast(fNode); + VcFileContainerNode *vcFileContainerNode = qobject_cast(fNode); - if (vcFilterNode && - vcFilterNode->m_vcFilterModel && - vcFilterNode->m_vcFilterModel->name() == filterNode->m_vcFilterModel->name()) + if (vcFileContainerNode && + vcFileContainerNode->m_vcFileContainerModel && + vcFileContainerNode->m_vcFileContainerModel->name() == fileContainer->m_vcFileContainerModel->name()) return false; } } - m_vcFilterModel->addFileContainer(filterNode->m_vcFilterModel); + m_vcFileContainerModel->addFileContainer(fileContainer->m_vcFileContainerModel); QList vcFolderNodes; - vcFolderNodes << filterNode; + vcFolderNodes << fileContainer; m_parentVcDocProjNode->addFolderNodes(vcFolderNodes, this); m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); return true; } -void VcFilterNode::removeFilterNode(VcFilterNode *filterNode) +void VcFileContainerNode::removeFileContainerNode(VcFileContainerNode *fileContainer) { - if (!filterNode || !filterNode->m_vcFilterModel) + if (!fileContainer || !fileContainer->m_vcFileContainerModel) return; - IFileContainer *filter = filterNode->m_vcFilterModel; + IFileContainer *fileContainerModel = fileContainer->m_vcFileContainerModel; QList folderNodesToRemove; - folderNodesToRemove << filterNode; + folderNodesToRemove << fileContainer; m_parentVcDocProjNode->removeFolderNodes(folderNodesToRemove, this); - m_vcFilterModel->removeFileContainer(filter); + m_vcFileContainerModel->removeFileContainer(fileContainerModel); m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); } -void VcFilterNode::removeFileNode(VcFileNode *fileNode) +void VcFileContainerNode::removeFileNode(VcFileNode *fileNode) { if (!fileNode || !fileNode->m_vcFileModel) return; @@ -205,26 +191,26 @@ void VcFilterNode::removeFileNode(VcFileNode *fileNode) fileNodesToRemove << fileNode; m_parentVcDocProjNode->removeFileNodes(fileNodesToRemove, this); - m_vcFilterModel->removeFile(file); + m_vcFileContainerModel->removeFile(file); m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); } -void VcFilterNode::readChildren() +void VcFileContainerNode::readChildren() { QList vcFolderNodes; - for (int i = 0; i < m_vcFilterModel->childCount(); ++i) { - IFileContainer *fileCont = m_vcFilterModel->fileContainer(i); + for (int i = 0; i < m_vcFileContainerModel->childCount(); ++i) { + IFileContainer *fileCont = m_vcFileContainerModel->fileContainer(i); if (fileCont) - vcFolderNodes.append(new VcFilterNode(fileCont, m_parentVcDocProjNode)); + vcFolderNodes.append(new VcFileContainerNode(fileCont, m_parentVcDocProjNode)); } m_parentVcDocProjNode->addFolderNodes(vcFolderNodes, this); QList vcFileNodes; - for (int i = 0; i < m_vcFilterModel->fileCount(); ++i) { - IFile *file = m_vcFilterModel->file(i); + for (int i = 0; i < m_vcFileContainerModel->fileCount(); ++i) { + IFile *file = m_vcFileContainerModel->file(i); if (file) vcFileNodes.append(new VcFileNode(file, m_parentVcDocProjNode)); @@ -233,204 +219,24 @@ void VcFilterNode::readChildren() m_parentVcDocProjNode->addFileNodes(vcFileNodes, this); } - -VcFolderNode::VcFolderNode(VcProjectManager::Internal::IFileContainer *folderModel, VcDocProjectNode *vcDocProjNode) - : VcContainerNode(folderModel->name()), - m_vcFolderModel(folderModel) -{ - m_parentVcDocProjNode = vcDocProjNode; - m_vcContainerType = VcContainerType_Folder; - readChildren(); -} - -VcFolderNode::~VcFolderNode() -{ -} - -void VcFolderNode::addFileNode(const QString &filePath) -{ - File *file = new File(m_parentVcDocProjNode->m_vcProjectModel); - file->setRelativePath(filePath); - VcFileNode *fileNode = new VcFileNode(file, m_parentVcDocProjNode); - - if (!appendFileNode(fileNode)) { - delete file; - delete fileNode; - } -} - -bool VcFolderNode::appendFileNode(VcFileNode *fileNode) -{ - if (!m_vcFolderModel || !fileNode || !fileNode->m_vcFileModel) - return false; - - if (m_fileNodes.contains(fileNode)) - return false; - else { - foreach (ProjectExplorer::FileNode *fNode, m_fileNodes) { - VcFileNode *vcFileNode = qobject_cast(fNode); - - if (vcFileNode && - vcFileNode->m_vcFileModel && - vcFileNode->m_vcFileModel->relativePath() == fileNode->m_vcFileModel->relativePath()) - return false; - } - } - - m_vcFolderModel->addFile(fileNode->m_vcFileModel); - QList vcFileNodes; - vcFileNodes << fileNode; - m_parentVcDocProjNode->addFileNodes(vcFileNodes, this); - return true; -} - -void VcFolderNode::addFilterNode(const QString &name) -{ - Filter *filter = new Filter(QLatin1String("Filter"), m_parentVcDocProjNode->m_vcProjectModel); - filter->setName(name); - VcFilterNode *filterNode = new VcFilterNode(filter, m_parentVcDocProjNode); - - if (!appendFilterNode(filterNode)) { - delete filter; - delete filterNode; - } -} - -bool VcFolderNode::appendFilterNode(VcFilterNode *filterNode) -{ - if (!m_vcFolderModel && !filterNode && !filterNode->m_vcFilterModel) - return false; - - if (m_subFolderNodes.contains(filterNode)) - return false; - else { - foreach (ProjectExplorer::FolderNode *fNode, m_subFolderNodes) { - VcFilterNode *vcFilterNode = qobject_cast(fNode); - - if (vcFilterNode && - vcFilterNode->m_vcFilterModel && - vcFilterNode->m_vcFilterModel->name() == filterNode->m_vcFilterModel->name()) - return false; - } - } - - m_vcFolderModel->addFileContainer(filterNode->m_vcFilterModel); - QList vcFolderNodes; - vcFolderNodes << filterNode; - m_parentVcDocProjNode->addFolderNodes(vcFolderNodes, this); - m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); - return true; -} - -void VcFolderNode::removeFileNode(VcFileNode *fileNode) -{ - if (!fileNode || !fileNode->m_vcFileModel) - return; - - IFile *file = fileNode->m_vcFileModel; - - QList fileNodesToRemove; - fileNodesToRemove << fileNode; - m_parentVcDocProjNode->removeFileNodes(fileNodesToRemove, this); - - m_vcFolderModel->removeFile(file); - m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); -} - -void VcFolderNode::removeFilterNode(VcFilterNode *filterNode) -{ - if (!filterNode || !filterNode->m_vcFilterModel) - return; - - IFileContainer *filter = filterNode->m_vcFilterModel; - - QList folderNodesToRemove; - folderNodesToRemove << filterNode; - m_parentVcDocProjNode->removeFolderNodes(folderNodesToRemove, this); - - m_vcFolderModel->removeFileContainer(filter); - m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); -} - -void VcFolderNode::addFolderNode(const QString &name) -{ - Folder *folder = new Folder(QLatin1String("Folder"), m_parentVcDocProjNode->m_vcProjectModel); - folder->setName(name); - VcFolderNode *folderNode = new VcFolderNode(folder, m_parentVcDocProjNode); - - if (!appendFolderNode(folderNode)) { - delete folder; - delete folderNode; - } -} - -bool VcFolderNode::appendFolderNode(VcFolderNode *folderNode) -{ - if (!m_vcFolderModel || !folderNode || !folderNode->m_vcFolderModel) - return false; - - if (m_subFolderNodes.contains(folderNode)) - return false; - else { - foreach (ProjectExplorer::FolderNode *fNode, m_subFolderNodes) { - VcFolderNode *vcFolderNode = qobject_cast(fNode); - - if (vcFolderNode && - vcFolderNode->m_vcFolderModel && - vcFolderNode->m_vcFolderModel->name() == folderNode->m_vcFolderModel->name()) - return false; - } - } - - m_vcFolderModel->addFileContainer(folderNode->m_vcFolderModel); - QList vcFolderNodes; - vcFolderNodes << folderNode; - m_parentVcDocProjNode->addFolderNodes(vcFolderNodes, this); - m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); - return true; -} - -void VcFolderNode::removeFolderNode(VcFolderNode *folderNode) -{ - if (!folderNode || !folderNode->m_vcFolderModel) - return; - - IFileContainer *folder = folderNode->m_vcFolderModel; - - QList folderNodesToRemove; - folderNodesToRemove << folderNode; - m_parentVcDocProjNode->removeFolderNodes(folderNodesToRemove, this); - - m_vcFolderModel->removeFileContainer(folder); - m_parentVcDocProjNode->m_vcProjectModel->saveToFile(m_parentVcDocProjNode->m_vcProjectModel->filePath()); -} - -void VcFolderNode::readChildren() +VcFileNode *VcFileContainerNode::findFileNode(const QString &filePath) { - QList vcFolderNodes; - - for (int i = 0; i < m_vcFolderModel->childCount(); ++i) { - IFileContainer *fileCont = m_vcFolderModel->fileContainer(i); - if (fileCont && fileCont->containerType() == QLatin1String("Filter")) - vcFolderNodes.append(new VcFilterNode(fileCont, m_parentVcDocProjNode)); - else if (fileCont && fileCont->containerType() == QLatin1String("Folder")) - vcFolderNodes.append(new VcFolderNode(fileCont, m_parentVcDocProjNode)); - } + VcFileNode *fileNode = static_cast(findFile(filePath)); - m_parentVcDocProjNode->addFolderNodes(vcFolderNodes, this); + if (fileNode) + return fileNode; - QList vcFileNodes; + foreach (ProjectExplorer::FolderNode *folderNode, m_subFolderNodes) { + VcFileContainerNode *containerNode = static_cast(folderNode); + fileNode = containerNode->findFileNode(filePath); - for (int i = 0; i < m_vcFolderModel->fileCount(); ++i) { - IFile *file = m_vcFolderModel->file(i); - if (file) - vcFileNodes.append(new VcFileNode(file, m_parentVcDocProjNode)); + if (fileNode) + return fileNode; } - m_parentVcDocProjNode->addFileNodes(vcFileNodes, this); + return 0; } - VcDocProjectNode::VcDocProjectNode(VcProjectDocument *vcProjectModel) : ProjectExplorer::ProjectNode(vcProjectModel->filePath()), m_vcProjectModel(vcProjectModel) @@ -441,14 +247,14 @@ VcDocProjectNode::VcDocProjectNode(VcProjectDocument *vcProjectModel) QList vcFolderNodes; foreach (IFileContainer *filter, filters) - vcFolderNodes.append(new VcFilterNode(filter, this)); + vcFolderNodes.append(new VcFileContainerNode(filter, this)); addFolderNodes(vcFolderNodes, this); QList folders = files2005->folders(); vcFolderNodes.clear(); foreach (IFileContainer *folder, folders) - vcFolderNodes.append(new VcFolderNode(folder, this)); + vcFolderNodes.append(new VcFileContainerNode(folder, this)); addFolderNodes(vcFolderNodes, this); @@ -465,7 +271,7 @@ VcDocProjectNode::VcDocProjectNode(VcProjectDocument *vcProjectModel) QList vcFolderNodes; foreach (IFileContainer *filter, filters) - vcFolderNodes.append(new VcFilterNode(filter, this)); + vcFolderNodes.append(new VcFileContainerNode(filter, this)); addFolderNodes(vcFolderNodes, this); @@ -536,7 +342,7 @@ bool VcDocProjectNode::addFiles(const ProjectExplorer::FileType fileType, const bool anyFileAdded = false; if (node->nodeType() == ProjectExplorer::FolderNodeType) { - VcContainerNode *vcContainerNode = static_cast(node); + VcFileContainerNode *vcContainerNode = static_cast(node); if (vcContainerNode) { foreach (const QString &filePath, filePaths) { @@ -598,7 +404,7 @@ bool VcDocProjectNode::removeFiles(const ProjectExplorer::FileType fileType, con ProjectExplorer::FolderNode *parentNode = fileNode->parentFolderNode(); if (parentNode && parentNode->nodeType() == ProjectExplorer::FolderNodeType) { - VcContainerNode *containerNode = static_cast(parentNode); + VcFileContainerNode *containerNode = static_cast(parentNode); if (containerNode) containerNode->removeFileNode(fileNode); @@ -667,79 +473,51 @@ void VcDocProjectNode::addFileNode(const QString &filePath) } } -void VcDocProjectNode::addFolderNode(const QString &name) +void VcDocProjectNode::addFileContainerNode(const QString &name, VcFileContainerNode::VcContainerType type) { - Folder *folder = new Folder(QLatin1String("Folder"), m_vcProjectModel); - folder->setName(name); - VcFolderNode *folderNode = new VcFolderNode(folder, this); + IFileContainer *fileContainer = 0; - if (!appendFolderNode(folderNode)) { - delete folder; - delete folderNode; - } -} + if (type == VcFileContainerNode::VcContainerType_Filter) + fileContainer = new Filter(m_vcProjectModel); + else + fileContainer = new Folder(m_vcProjectModel); -void VcDocProjectNode::addFilterNode(const QString &name) -{ - Filter *filter = new Filter(QLatin1String("Filter"), m_vcProjectModel); - filter->setName(name); - VcFilterNode *folderNode = new VcFilterNode(filter, this); + fileContainer->setName(name); + VcFileContainerNode *folderNode = new VcFileContainerNode(fileContainer, this); - if (!appendFilterNode(folderNode)) { - delete filter; + if (!appendFileContainerNode(folderNode)) { + delete fileContainer; delete folderNode; } } -bool VcDocProjectNode::appendFolderNode(VcFolderNode *folderNode) +bool VcDocProjectNode::appendFileContainerNode(VcFileContainerNode *fileContainerNode) { - if (!m_vcProjectModel || m_vcProjectModel->documentVersion() != VcDocConstants::DV_MSVC_2005) - return false; - - if (!folderNode || !folderNode->m_vcFolderModel) + if (!m_vcProjectModel || !fileContainerNode || !fileContainerNode->m_vcFileContainerModel) return false; - if (m_subFolderNodes.contains(folderNode)) + if (m_subFolderNodes.contains(fileContainerNode)) return false; else { foreach (ProjectExplorer::FolderNode *fNode, m_subFolderNodes) { - VcFolderNode *vcFolderNode = qobject_cast(fNode); + VcFileContainerNode *vcFileContainerNode = qobject_cast(fNode); - if (vcFolderNode && - vcFolderNode->m_vcFolderModel && - folderNode->m_vcFolderModel && - vcFolderNode->m_vcFolderModel->name() == folderNode->m_vcFolderModel->name()) + if (vcFileContainerNode && + vcFileContainerNode->m_vcFileContainerModel && + fileContainerNode->m_vcFileContainerModel && + vcFileContainerNode->m_vcFileContainerModel->name() == fileContainerNode->m_vcFileContainerModel->name()) return false; } } - m_vcProjectModel->files().staticCast()->addFolder(folderNode->m_vcFolderModel); - QList vcFolderNodes; - vcFolderNodes << folderNode; - addFolderNodes(vcFolderNodes, this); - m_vcProjectModel->saveToFile(m_vcProjectModel->filePath()); - return true; -} - -bool VcDocProjectNode::appendFilterNode(VcFilterNode *filterNode) -{ - if (!m_vcProjectModel || !filterNode || !filterNode->m_vcFilterModel) - return false; - - if (m_subFolderNodes.contains(filterNode)) - return false; - else { - foreach (ProjectExplorer::FolderNode *fNode, m_subFolderNodes) { - VcFilterNode *vcFolderNode = qobject_cast(fNode); - - if (vcFolderNode->m_vcFilterModel && vcFolderNode->m_vcFilterModel->name() == filterNode->m_vcFilterModel->name()) - return false; - } - } + VcFileContainerNode::VcContainerType type = fileContainerNode->containerType(); + if (type == VcFileContainerNode::VcContainerType_Filter) + m_vcProjectModel->files()->addFilter(fileContainerNode->m_vcFileContainerModel); + else + m_vcProjectModel->files().staticCast()->addFolder(fileContainerNode->m_vcFileContainerModel); - m_vcProjectModel->files()->addFilter(filterNode->m_vcFilterModel); QList vcFolderNodes; - vcFolderNodes << filterNode; + vcFolderNodes << fileContainerNode; addFolderNodes(vcFolderNodes, this); m_vcProjectModel->saveToFile(m_vcProjectModel->filePath()); return true; @@ -768,53 +546,43 @@ bool VcDocProjectNode::appendFileNode(VcFileNode *fileNode) return true; } -void VcDocProjectNode::removeFilterNode(VcFilterNode *filterNode) +void VcDocProjectNode::removeFileNode(VcFileNode *fileNode) { - if (!m_vcProjectModel || !filterNode || !filterNode->m_vcFilterModel) + if (!m_vcProjectModel || !fileNode || !fileNode->m_vcFileModel) return; - QString filterName = filterNode->m_vcFilterModel->name(); + QString relativePath = fileNode->m_vcFileModel->relativePath(); - QList folderNodesToRemove; - folderNodesToRemove << filterNode; - removeFolderNodes(folderNodesToRemove, filterNode->parentFolderNode()); + QList fileNodesToRemove; + fileNodesToRemove << fileNode; + removeFileNodes(fileNodesToRemove, this); - m_vcProjectModel->files()->removeFilter(filterName); + IFile *filePtr = m_vcProjectModel->files()->file(relativePath); + + m_vcProjectModel->files()->removeFile(filePtr); m_vcProjectModel->saveToFile(m_vcProjectModel->filePath()); } -void VcDocProjectNode::removeFolderNode(VcFolderNode *folderNode) +void VcDocProjectNode::removeFileContainerNode(VcFileContainerNode *fileContainerNode) { if (!m_vcProjectModel || m_vcProjectModel->documentVersion() != VcDocConstants::DV_MSVC_2005) return; - if (!folderNode || !folderNode->m_vcFolderModel) + if (!fileContainerNode || !fileContainerNode->m_vcFileContainerModel) return; - QString folderName = folderNode->m_vcFolderModel->name(); + QString containerName = fileContainerNode->m_vcFileContainerModel->name(); + VcFileContainerNode::VcContainerType type = fileContainerNode->containerType(); QList folderNodesToRemove; - folderNodesToRemove << folderNode; + folderNodesToRemove << fileContainerNode; removeFolderNodes(folderNodesToRemove, this); - m_vcProjectModel->files().staticCast()->removeFolder(folderName); - m_vcProjectModel->saveToFile(m_vcProjectModel->filePath()); -} - -void VcDocProjectNode::removeFileNode(VcFileNode *fileNode) -{ - if (!m_vcProjectModel || !fileNode || !fileNode->m_vcFileModel) - return; + if (type == VcFileContainerNode::VcContainerType_Folder) + m_vcProjectModel->files().staticCast()->removeFolder(containerName); + else if (type == VcFileContainerNode::VcContainerType_Filter) + m_vcProjectModel->files()->removeFilter(containerName); - QString relativePath = fileNode->m_vcFileModel->relativePath(); - - QList fileNodesToRemove; - fileNodesToRemove << fileNode; - removeFileNodes(fileNodesToRemove, this); - - IFile *filePtr = m_vcProjectModel->files()->file(relativePath); - - m_vcProjectModel->files()->removeFile(filePtr); m_vcProjectModel->saveToFile(m_vcProjectModel->filePath()); } @@ -826,7 +594,7 @@ VcFileNode *VcDocProjectNode::findFileNode(const QString &filePath) return fileNode; foreach (ProjectExplorer::FolderNode *folderNode, m_subFolderNodes) { - VcContainerNode *containerNode = static_cast(folderNode); + VcFileContainerNode *containerNode = static_cast(folderNode); fileNode = containerNode->findFileNode(filePath); if (fileNode) diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.h b/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.h index f64856405b..ad999ba4fc 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.h @@ -44,9 +44,8 @@ class VcFileNode : public ProjectExplorer::FileNode { Q_OBJECT - friend class VcFolderNode; friend class VcDocProjectNode; - friend class VcFilterNode; + friend class VcFileContainerNode; public: VcFileNode(IFile *fileModel, VcDocProjectNode *vcDocProject); @@ -59,12 +58,9 @@ private: IFile *m_vcFileModel; }; -class VcFilterNode; - -class VcContainerNode : public ProjectExplorer::FolderNode +class VcFileContainerNode : public ProjectExplorer::FolderNode { Q_OBJECT - friend class VcFileNode; friend class VcDocProjectNode; @@ -74,127 +70,36 @@ public: VcContainerType_Folder }; - VcContainerNode(const QString &folderPath); - ~VcContainerNode(); - - VcContainerType vcContainerType() const; - - /*! - * Implement this member function if you want to add a new VcFileNode to a VcContainerNode based on a full path to a file that - * should be added. - * \param filePath is a full path to a file for which node should be created. - */ - virtual void addFileNode(const QString &filePath) = 0; - - /*! - * Implement this member function if you want to support appending of a VcFileNode node to a VcContainerNode. - * \param fileNode is a pointer to a VcFileNode that should be append as a child of this VcContainerNode. - * \return \b true if file node is successfully append as a child of VcContainerNode. Otherwise it returns \b false. - */ - virtual bool appendFileNode(VcFileNode *fileNode) = 0; - - /*! - * Implement this member function if you want to add a new VcFilterNode to a VcContainerNode based on a name of a filter. - * should be added. - * \param name is a name of the filter. - */ - virtual void addFilterNode(const QString &name) = 0; - - /*! - * Implement this member function if you want to support appending of a VcFilterNode node to a VcContainerNode. - * \param filterNode is a pointer to a VcFilterNode that should be append as a child of this VcContainerNode. - * \return \b true if file node is successfully append as a child of VcContainerNode. Otherwise it returns \b false. - */ - virtual bool appendFilterNode(VcFilterNode *folderNode) = 0; - - /*! - * Implement this member function if you want to remove a filter node from VcContainerNode. - * \param filterNode is a pointer to a VcFilterNode that will be removed. - */ - virtual void removeFilterNode(VcFilterNode *filterNode) = 0; - - /*! - * Implement this member function if you want to remove a file node from VcContainerNode. - * \param fileNode is a pointer to a VcFileNode that will be removed. - */ - virtual void removeFileNode(VcFileNode *fileNode) = 0; - - VcFileNode* findFileNode(const QString &filePath); + VcFileContainerNode(IFileContainer *fileContainerModel, VcDocProjectNode *vcDocProjNode); + ~VcFileContainerNode(); -protected: - VcContainerType m_vcContainerType; - VcDocProjectNode *m_parentVcDocProjNode; -}; - -class VcFilterNode : public VcContainerNode -{ - Q_OBJECT - - friend class VcFileNode; - friend class VcDocProjectNode; - friend class VcFolderNode; - -public: - VcFilterNode(IFileContainer *filterModel, VcDocProjectNode *vcDocProjNode); - ~VcFilterNode(); + VcContainerType containerType() const; void addFileNode(const QString &filePath); bool appendFileNode(VcFileNode *fileNode); - void addFilterNode(const QString &name); - bool appendFilterNode(VcFilterNode *filterNode); + void addFileContainerNode(const QString &name, VcContainerType type = VcContainerType_Filter); + bool appendFileContainerNode(VcFileContainerNode *fileContainer); - void removeFilterNode(VcFilterNode *filterNode); + void removeFileContainerNode(VcFileContainerNode *filterNode); void removeFileNode(VcFileNode *fileNode); + VcFileNode *findFileNode(const QString &filePath); protected: void readChildren(); private: - IFileContainer *m_vcFilterModel; -}; - -// used only for VS 2005 projects -class VcFolderNode : public VcContainerNode -{ - Q_OBJECT - - friend class VcFileNode; - friend class VcDocProjectNode; - friend class VcFilterNode; - -public: - VcFolderNode(IFileContainer *folderModel, VcDocProjectNode *vcDocProjNode); - ~VcFolderNode(); - - void addFileNode(const QString &filePath); - bool appendFileNode(VcFileNode *fileNode); - - void addFilterNode(const QString &name); - bool appendFilterNode(VcFilterNode *folderNode); - - void removeFileNode(VcFileNode *fileNode); - void removeFilterNode(VcFilterNode *filterNode); - - void addFolderNode(const QString &name); // only for VS 2005 - bool appendFolderNode(VcFolderNode *folderNode); // only for VS 2005 - - void removeFolderNode(VcFolderNode *folderNode); - -protected: - void readChildren(); - -private: - IFileContainer *m_vcFolderModel; + IFileContainer *m_vcFileContainerModel; + VcContainerType m_vcContainerType; + VcDocProjectNode *m_parentVcDocProjNode; }; class VcDocProjectNode : public ProjectExplorer::ProjectNode { Q_OBJECT - friend class VcFolderNode; friend class VcFileNode; - friend class VcFilterNode; + friend class VcFileContainerNode; public: VcDocProjectNode(VcProjectDocument* vcProjectModel); @@ -221,15 +126,11 @@ public: QString projectDirectory() const; void addFileNode(const QString &filePath); - void addFolderNode(const QString &name); // only for VS 2005 - void addFilterNode(const QString &name); - bool appendFolderNode(VcFolderNode *folderNode); // only for VS 2005 - bool appendFilterNode(VcFilterNode *filterNode); + void addFileContainerNode(const QString &name, VcFileContainerNode::VcContainerType type); + bool appendFileContainerNode(VcFileContainerNode *fileContainerNode); bool appendFileNode(VcFileNode *fileNode); - - void removeFilterNode(VcFilterNode *filterNode); - void removeFolderNode(VcFolderNode *folderNode); void removeFileNode(VcFileNode *fileNode); + void removeFileContainerNode(VcFileContainerNode *fileContainerNode); private: VcFileNode* findFileNode(const QString &filePath); -- cgit v1.2.3