aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRadovan Zivkovic <pivonroll@gmail.com>2013-10-03 23:52:56 +0200
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2014-03-11 19:54:58 +0100
commit76dd78f8f86d0d419e6a8c1c8c37b78bd197b5f1 (patch)
tree42af24d57d1235a647c975b123ad59aba0e7a29f
parenta5d062b9db49e3ff36eccd37c338a1b2a158e40c (diff)
Added VcFileContainerNode.
Change-Id: If6484c8cbc3576ab160c5bb548a6e08b71906c3c Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r--src/plugins/vcprojectmanager/menuhandler.cpp50
-rw-r--r--src/plugins/vcprojectmanager/menuhandler.h1
-rw-r--r--src/plugins/vcprojectmanager/vcproject.h1
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmanagerconstants.h7
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/files.cpp7
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/filter.cpp12
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/filter.h3
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/folder.cpp16
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/folder.h3
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.cpp458
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/vcdocprojectnodes.h131
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<VcFolderNode *>(node);
- folderNode->addFileNode(fileName);
- }
-
- if (node->nodeType() == ProjectExplorer::ProjectFileType) {
- VcDocProjectNode *projectNode = static_cast<VcDocProjectNode *>(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<VcFolderNode *>(node);
- folderNode->addFolderNode(folderName);
+ VcFileContainerNode *folderNode = static_cast<VcFileContainerNode *>(node);
+ folderNode->addFileContainerNode(folderName, VcFileContainerNode::VcContainerType_Folder);
}
if (node->nodeType() == ProjectExplorer::ProjectFileType) {
VcDocProjectNode *projectNode = static_cast<VcDocProjectNode *>(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<VcContainerNode *>(node);
- folderNode->addFilterNode(filterName);
+ VcFileContainerNode *folderNode = static_cast<VcFileContainerNode *>(node);
+ folderNode->addFileContainerNode(filterName);
}
if (node->nodeType() == ProjectExplorer::ProjectFileType) {
VcDocProjectNode *projectNode = static_cast<VcDocProjectNode *>(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<VcFilterNode *>(node);
+ VcFileContainerNode *filterNode = static_cast<VcFileContainerNode *>(node);
ProjectExplorer::FolderNode *parentNode = filterNode->parentFolderNode();
if (parentNode->nodeType() == ProjectExplorer::FolderNodeType) {
- VcContainerNode *projectNode = static_cast<VcContainerNode *>(parentNode);
- projectNode->removeFilterNode(filterNode);
+ VcFileContainerNode *projectNode = static_cast<VcFileContainerNode *>(parentNode);
+ projectNode->removeFileContainerNode(filterNode);
}
else if (parentNode->nodeType() == ProjectExplorer::ProjectFileType) {
VcDocProjectNode *projectNode = static_cast<VcDocProjectNode *>(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<VcFolderNode *>(node);
+ VcFileContainerNode *folderNode = static_cast<VcFileContainerNode *>(node);
ProjectExplorer::FolderNode *parentNode = folderNode->parentFolderNode();
if (parentNode->nodeType() == ProjectExplorer::FolderNodeType) {
- VcFolderNode *parentFolderNode = static_cast<VcFolderNode *>(parentNode);
- parentFolderNode->removeFolderNode(folderNode);
+ VcFileContainerNode *parentFolderNode = static_cast<VcFileContainerNode *>(parentNode);
+ parentFolderNode->removeFileContainerNode(folderNode);
}
else if (parentNode->nodeType() == ProjectExplorer::ProjectFileType) {
VcDocProjectNode *projectNode = static_cast<VcDocProjectNode *>(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<IFile *> 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 <QFileInfo>
#include <projectexplorer/projectexplorer.h>
@@ -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<VcFileNode *>(findFile(filePath));
- if (fileNode)
- return fileNode;
-
- foreach (ProjectExplorer::FolderNode *folderNode, m_subFolderNodes) {
- VcContainerNode *containerNode = static_cast<VcContainerNode *>(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<ProjectExplorer::FileNode *> 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<VcFilterNode *>(fNode);
+ VcFileContainerNode *vcFileContainerNode = qobject_cast<VcFileContainerNode *>(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<ProjectExplorer::FolderNode *> 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<ProjectExplorer::FolderNode *> 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<ProjectExplorer::FolderNode *> 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<ProjectExplorer::FileNode *> 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<VcFileNode *>(fNode);
-
- if (vcFileNode &&
- vcFileNode->m_vcFileModel &&
- vcFileNode->m_vcFileModel->relativePath() == fileNode->m_vcFileModel->relativePath())
- return false;
- }
- }
-
- m_vcFolderModel->addFile(fileNode->m_vcFileModel);
- QList<ProjectExplorer::FileNode *> 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<VcFilterNode *>(fNode);
-
- if (vcFilterNode &&
- vcFilterNode->m_vcFilterModel &&
- vcFilterNode->m_vcFilterModel->name() == filterNode->m_vcFilterModel->name())
- return false;
- }
- }
-
- m_vcFolderModel->addFileContainer(filterNode->m_vcFilterModel);
- QList<ProjectExplorer::FolderNode *> 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<ProjectExplorer::FileNode *> 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<ProjectExplorer::FolderNode *> 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<VcFolderNode *>(fNode);
-
- if (vcFolderNode &&
- vcFolderNode->m_vcFolderModel &&
- vcFolderNode->m_vcFolderModel->name() == folderNode->m_vcFolderModel->name())
- return false;
- }
- }
-
- m_vcFolderModel->addFileContainer(folderNode->m_vcFolderModel);
- QList<ProjectExplorer::FolderNode *> 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<ProjectExplorer::FolderNode *> 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<ProjectExplorer::FolderNode *> 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<VcFileNode *>(findFile(filePath));
- m_parentVcDocProjNode->addFolderNodes(vcFolderNodes, this);
+ if (fileNode)
+ return fileNode;
- QList<ProjectExplorer::FileNode *> vcFileNodes;
+ foreach (ProjectExplorer::FolderNode *folderNode, m_subFolderNodes) {
+ VcFileContainerNode *containerNode = static_cast<VcFileContainerNode *>(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<ProjectExplorer::FolderNode *> vcFolderNodes;
foreach (IFileContainer *filter, filters)
- vcFolderNodes.append(new VcFilterNode(filter, this));
+ vcFolderNodes.append(new VcFileContainerNode(filter, this));
addFolderNodes(vcFolderNodes, this);
QList<IFileContainer *> 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<ProjectExplorer::FolderNode *> 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<VcContainerNode *>(node);
+ VcFileContainerNode *vcContainerNode = static_cast<VcFileContainerNode *>(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<VcContainerNode *>(parentNode);
+ VcFileContainerNode *containerNode = static_cast<VcFileContainerNode *>(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<VcFolderNode *>(fNode);
+ VcFileContainerNode *vcFileContainerNode = qobject_cast<VcFileContainerNode *>(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<Files2005>()->addFolder(folderNode->m_vcFolderModel);
- QList<ProjectExplorer::FolderNode *> 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<VcFilterNode *>(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<Files2005>()->addFolder(fileContainerNode->m_vcFileContainerModel);
- m_vcProjectModel->files()->addFilter(filterNode->m_vcFilterModel);
QList<ProjectExplorer::FolderNode *> 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<ProjectExplorer::FolderNode *> folderNodesToRemove;
- folderNodesToRemove << filterNode;
- removeFolderNodes(folderNodesToRemove, filterNode->parentFolderNode());
+ QList<ProjectExplorer::FileNode *> 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<ProjectExplorer::FolderNode *> folderNodesToRemove;
- folderNodesToRemove << folderNode;
+ folderNodesToRemove << fileContainerNode;
removeFolderNodes(folderNodesToRemove, this);
- m_vcProjectModel->files().staticCast<Files2005>()->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<Files2005>()->removeFolder(containerName);
+ else if (type == VcFileContainerNode::VcContainerType_Filter)
+ m_vcProjectModel->files()->removeFilter(containerName);
- QString relativePath = fileNode->m_vcFileModel->relativePath();
-
- QList<ProjectExplorer::FileNode *> 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<VcContainerNode *>(folderNode);
+ VcFileContainerNode *containerNode = static_cast<VcFileContainerNode *>(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);