aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRadovan Zivkovic <pivonroll@gmail.com>2013-09-22 23:17:32 +0200
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2014-03-11 19:54:57 +0100
commit4e787157b6a8cbf61cfb210d90d890d8a1399958 (patch)
treef8f53b40a867836828612105908edc9b809bd67b
parent82130c9c3f4f1335e861e1f06b6542ddb8c02046 (diff)
Added AttributeContainer class to File.
Change-Id: I3d6c5ed09c0dd60ef252b8e107bdeec2e6a3f1da Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r--src/plugins/vcprojectmanager/interfaces/ifile.h2
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h6
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/file.cpp47
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/file.h9
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