diff options
author | Radovan Zivkovic <pivonroll@gmail.com> | 2013-10-10 23:51:57 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-03-11 19:55:00 +0100 |
commit | e800ad4bbd2f21bd3f60722feb8ac76b30370143 (patch) | |
tree | f454154eb8246fcff54aced9b67be8b2891cdad2 | |
parent | 42e7e7fef9c799096160bddb2f745a7f1c82751d (diff) |
DefaultToolFile implements IToolFile interface.
Change-Id: Ic7f91ac564bb41958a81b1e4190df14d79a7fc5d
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
4 files changed, 33 insertions, 19 deletions
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.cpp index 1f77643dca..01f9db817d 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.cpp @@ -28,28 +28,33 @@ ** ****************************************************************************/ #include "defaulttoolfile.h" +#include "vcprojectdocument_constants.h" +#include "generalattributecontainer.h" namespace VcProjectManager { namespace Internal { DefaultToolFile::DefaultToolFile() { + m_attributeContainer = new GeneralAttributeContainer; } DefaultToolFile::DefaultToolFile(const DefaultToolFile &defToolFile) { - m_fileName = defToolFile.m_fileName; + m_attributeContainer = new GeneralAttributeContainer; + *m_attributeContainer = *defToolFile.m_attributeContainer; } DefaultToolFile &DefaultToolFile::operator =(const DefaultToolFile &defToolFile) { if (this != &defToolFile) - m_fileName = defToolFile.m_fileName; + *m_attributeContainer = *defToolFile.m_attributeContainer; return *this; } DefaultToolFile::~DefaultToolFile() { + delete m_attributeContainer; } void DefaultToolFile::processNode(const QDomNode &node) @@ -69,18 +74,23 @@ VcNodeWidget *DefaultToolFile::createSettingsWidget() QDomNode DefaultToolFile::toXMLDomNode(QDomDocument &domXMLDocument) const { QDomElement toolNode = domXMLDocument.createElement(QLatin1String("DefaultToolFile")); - toolNode.setAttribute(QLatin1String("FileName"), m_fileName); + m_attributeContainer->appendToXMLNode(toolNode); return toolNode; } -QString DefaultToolFile::fileName() const +QString DefaultToolFile::type() const { - return m_fileName; + return QLatin1String(VcDocConstants::DEFAULT_TOOL_FILE); } -void DefaultToolFile::setFileName(const QString &fileName) +IToolFile *DefaultToolFile::clone() const { - m_fileName = fileName; + return new DefaultToolFile(*this); +} + +IAttributeContainer *DefaultToolFile::attributeContainer() const +{ + return m_attributeContainer; } void DefaultToolFile::processNodeAttributes(const QDomElement &element) @@ -93,8 +103,8 @@ void DefaultToolFile::processNodeAttributes(const QDomElement &element) if (domNode.nodeType() == QDomNode::AttributeNode) { QDomAttr domAttr = domNode.toAttr(); - if (domAttr.name() == QLatin1String("FileName")) - m_fileName = domAttr.value(); + if (domAttr.name() == QLatin1String(VcDocConstants::DEFAULT_TOOL_FILE_FILE_NAME)) + m_attributeContainer->setAttribute(domAttr.name(), domAttr.value()); } } } diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.h b/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.h index 94de1f04fd..eefaac2e40 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/defaulttoolfile.h @@ -30,7 +30,7 @@ #ifndef VCPROJECTMANAGER_INTERNAL_DEFAULTTOOLFILE_H #define VCPROJECTMANAGER_INTERNAL_DEFAULTTOOLFILE_H -#include "ivcprojectnodemodel.h" +#include "../interfaces/itoolfile.h" #include <QString> #include <QSharedPointer> @@ -38,7 +38,9 @@ namespace VcProjectManager { namespace Internal { -class DefaultToolFile : public IVcProjectXMLNode +class GeneralAttributeContainer; + +class DefaultToolFile : public IToolFile { public: typedef QSharedPointer<DefaultToolFile> Ptr; @@ -52,13 +54,14 @@ public: VcNodeWidget* createSettingsWidget(); QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const; - QString fileName() const; - void setFileName(const QString &fileName); + QString type() const; + IToolFile *clone() const; + IAttributeContainer *attributeContainer() const; private: void processNodeAttributes(const QDomElement &element); - QString m_fileName; // required + GeneralAttributeContainer *m_attributeContainer; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/toolfiles.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/toolfiles.cpp index 65529c8424..4e75b8e4e6 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/toolfiles.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/toolfiles.cpp @@ -152,7 +152,7 @@ void ToolFiles::addDefaultToolFile(DefaultToolFile::Ptr defToolFile) return; foreach (const DefaultToolFile::Ptr &toolF, m_defaultToolFiles) { - if (toolF->fileName() == defToolFile->fileName()) + if (toolF->attributeContainer()->attributeValue(QLatin1String(VcDocConstants::DEFAULT_TOOL_FILE_FILE_NAME)) == defToolFile->attributeContainer()->attributeValue(QLatin1String(VcDocConstants::DEFAULT_TOOL_FILE_FILE_NAME))) return; } m_defaultToolFiles.append(defToolFile); @@ -166,7 +166,7 @@ void ToolFiles::removeDefaultToolFile(DefaultToolFile::Ptr defToolFile) void ToolFiles::removeDefaultToolFile(const QString &fileName) { foreach (const DefaultToolFile::Ptr &toolF, m_defaultToolFiles) { - if (toolF->fileName() == fileName) { + if (toolF->attributeContainer()->attributeValue(QLatin1String(VcDocConstants::DEFAULT_TOOL_FILE_FILE_NAME)) == fileName) { removeDefaultToolFile(toolF); return; } @@ -181,20 +181,20 @@ QList<DefaultToolFile::Ptr> ToolFiles::defaultToolFiles() const DefaultToolFile::Ptr ToolFiles::defaultToolFile(const QString &fileName) { foreach (DefaultToolFile::Ptr defToolFile, m_defaultToolFiles) - if (defToolFile->fileName() == fileName) + if (defToolFile->attributeContainer()->attributeValue(QLatin1String(VcDocConstants::DEFAULT_TOOL_FILE_FILE_NAME)) == fileName) return defToolFile; return DefaultToolFile::Ptr(); } void ToolFiles::processToolFiles(const QDomNode &toolFileNode) { - if (toolFileNode.nodeName() == QLatin1String("ToolFile")) { + if (toolFileNode.nodeName() == QLatin1String(VcDocConstants::TOOL_FILE)) { ToolFile::Ptr toolFile(new ToolFile); m_toolFiles.append(toolFile); toolFile->processNode(toolFileNode); } - else if (toolFileNode.nodeName() == QLatin1String("DefaultToolFile")) { + else if (toolFileNode.nodeName() == QLatin1String(VcDocConstants::DEFAULT_TOOL_FILE)) { DefaultToolFile::Ptr defToolFile(new DefaultToolFile); m_defaultToolFiles.append(defToolFile); defToolFile->processNode(toolFileNode); diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h index 30acb825d6..8076a8bfbe 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h @@ -82,6 +82,7 @@ const char PROJECT_REFERENCE_COPY_LOCAL_DEPENDENCIES [] = "CopyLocalDependencies const char TOOL_FILE [] = "ToolFile"; const char TOOL_FILE_RELATIVE_PATH [] = "RelativePath"; const char DEFAULT_TOOL_FILE [] = "DefaultToolFile"; +const char DEFAULT_TOOL_FILE_FILE_NAME [] = "FileName"; } // VcDocConstants } // namespace Internal |