diff options
author | Radovan Zivkovic <pivonroll@gmail.com> | 2013-09-22 23:17:32 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-03-11 19:54:57 +0100 |
commit | 4e787157b6a8cbf61cfb210d90d890d8a1399958 (patch) | |
tree | f8f53b40a867836828612105908edc9b809bd67b | |
parent | 82130c9c3f4f1335e861e1f06b6542ddb8c02046 (diff) | |
download | qt-creator-4e787157b6a8cbf61cfb210d90d890d8a1399958.tar.gz |
Added AttributeContainer class to File.
Change-Id: I3d6c5ed09c0dd60ef252b8e107bdeec2e6a3f1da
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
4 files changed, 22 insertions, 42 deletions
diff --git a/src/plugins/vcprojectmanager/interfaces/ifile.h b/src/plugins/vcprojectmanager/interfaces/ifile.h index c3923a8e22..85f74e34e5 100644 --- a/src/plugins/vcprojectmanager/interfaces/ifile.h +++ b/src/plugins/vcprojectmanager/interfaces/ifile.h @@ -39,6 +39,7 @@ namespace Internal { class IConfiguration; class ConfigurationContainer; +class IAttributeContainer; class IFile : public IVcProjectXMLNode { @@ -48,6 +49,7 @@ public: virtual QString relativePath() const = 0; virtual void setRelativePath(const QString &path) = 0; virtual ConfigurationContainer* configurationContainer() const = 0; + virtual IAttributeContainer* attributeContainer() const = 0; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h b/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h index 6fbb37c1a7..3ebdc0674d 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h @@ -27,8 +27,8 @@ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ****************************************************************************/ -#ifndef ICONFIGURATIONCONTAINER_H -#define ICONFIGURATIONCONTAINER_H +#ifndef VCPROJECTMANAGER_INTERNAL_CONFIGURATIONCONTAINER_H +#define VCPROJECTMANAGER_INTERNAL_CONFIGURATIONCONTAINER_H #include <QList> #include <QDomElement> @@ -59,4 +59,4 @@ private: } // Internal } // VcProjectManager -#endif // ICONFIGURATIONCONTAINER_H +#endif // VCPROJECTMANAGER_INTERNAL_CONFIGURATIONCONTAINER_H diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp index 5b61bc76ef..9d002ddd77 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp @@ -32,6 +32,7 @@ #include "configurationsfactory.h" #include "vcprojectdocument.h" #include "configurationcontainer.h" +#include "generalattributecontainer.h" #include <projectexplorer/projectexplorerconstants.h> #include <coreplugin/mimedatabase.h> @@ -44,14 +45,18 @@ File::File(VcProjectDocument *parentProjectDoc) : m_parentProjectDoc(parentProjectDoc) { m_configurationContainer = new ConfigurationContainer; + m_attributeContainer = new GeneralAttributeContainer; } File::File(const File &file) { + m_attributeContainer = new GeneralAttributeContainer; + m_configurationContainer = new ConfigurationContainer; + m_parentProjectDoc = file.m_parentProjectDoc; m_relativePath = file.m_relativePath; - m_configurationContainer = new ConfigurationContainer; *m_configurationContainer = *(file.m_configurationContainer); + *m_attributeContainer = *(file.m_attributeContainer); foreach (const File::Ptr &f, file.m_files) m_files.append(File::Ptr(new File(*f))); @@ -63,6 +68,7 @@ File &File::operator =(const File &file) m_parentProjectDoc = file.m_parentProjectDoc; m_relativePath = file.m_relativePath; *m_configurationContainer = *(file.m_configurationContainer); + *m_attributeContainer = *(file.m_attributeContainer); m_files.clear(); @@ -76,6 +82,7 @@ File::~File() { m_files.clear(); delete m_configurationContainer; + delete m_attributeContainer; } void File::processNode(const QDomNode &node) @@ -108,18 +115,11 @@ QDomNode File::toXMLDomNode(QDomDocument &domXMLDocument) const fileNode.setAttribute(QLatin1String("RelativePath"), m_relativePath); - QHashIterator<QString, QString> it(m_anyAttribute); - - while (it.hasNext()) { - it.next(); - fileNode.setAttribute(it.key(), it.value()); - } - foreach (const File::Ptr &file, m_files) fileNode.appendChild(file->toXMLDomNode(domXMLDocument)); m_configurationContainer->appendToXMLNode(fileNode, domXMLDocument); - + m_attributeContainer->appendToXMLNode(fileNode); return fileNode; } @@ -128,6 +128,11 @@ ConfigurationContainer *File::configurationContainer() const return m_configurationContainer; } +IAttributeContainer *File::attributeContainer() const +{ + return m_attributeContainer; +} + void File::addFile(File::Ptr file) { if (m_files.contains(file)) @@ -141,28 +146,6 @@ void File::removeFile(File::Ptr file) m_files.removeAll(file); } -QString File::attributeValue(const QString &attributeName) const -{ - return m_anyAttribute.value(attributeName); -} - -void File::setAttribute(const QString &attributeName, const QString &attributeValue) -{ - m_anyAttribute.insert(attributeName, attributeValue); -} - -void File::clearAttribute(const QString &attributeName) -{ - // no need to clear the attribute's value if attribute isn't present - if (m_anyAttribute.contains(attributeName)) - m_anyAttribute.insert(attributeName, QString()); -} - -void File::removeAttribute(const QString &attributeName) -{ - m_anyAttribute.remove(attributeName); -} - QString File::relativePath() const { return m_relativePath; @@ -260,7 +243,7 @@ void File::processNodeAttributes(const QDomElement &element) m_relativePath = domElement.value(); else - m_anyAttribute.insert(domElement.name(), domElement.value()); + m_attributeContainer->setAttribute(domElement.name(), domElement.value()); } } } diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/file.h b/src/plugins/vcprojectmanager/vcprojectmodel/file.h index fe6ef894ea..f5615490db 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/file.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/file.h @@ -30,7 +30,6 @@ #ifndef VCPROJECTMANAGER_INTERNAL_FILE_H #define VCPROJECTMANAGER_INTERNAL_FILE_H -#include "ivcprojectnodemodel.h" #include "configuration.h" #include "../interfaces/ifile.h" @@ -57,15 +56,11 @@ public: QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const; ConfigurationContainer *configurationContainer() const; + IAttributeContainer *attributeContainer() const; void addFile(File::Ptr file); void removeFile(File::Ptr file); - QString attributeValue(const QString &attributeName) const; - void setAttribute(const QString &attributeName, const QString &attributeValue); - void clearAttribute(const QString &attributeName); - void removeAttribute(const QString &attributeName); - QString relativePath() const; void setRelativePath(const QString &relativePath); @@ -78,9 +73,9 @@ private: QString m_relativePath; // required QList<QSharedPointer<File> > m_files; - QHash<QString, QString> m_anyAttribute; VcProjectDocument *m_parentProjectDoc; ConfigurationContainer *m_configurationContainer; + GeneralAttributeContainer *m_attributeContainer; }; } // namespace Internal |