From 5c855bc11e833a946bba0390d2aed1ec010c20cd Mon Sep 17 00:00:00 2001 From: Radovan Zivkovic Date: Sat, 5 Oct 2013 19:15:45 +0200 Subject: PublishingData uses GeneralAttributeContainer. Change-Id: Ibf00e075ed996b27e2fc63eb6c05adb71dbe3b0a Reviewed-by: Tobias Hunger --- .../vcprojectmodel/publishingdata.cpp | 38 ++++++---------------- .../vcprojectmodel/publishingdata.h | 10 +++--- 2 files changed, 15 insertions(+), 33 deletions(-) diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.cpp index 67d28a9129..53de4574d2 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.cpp @@ -28,17 +28,20 @@ ** ****************************************************************************/ #include "publishingdata.h" +#include "generalattributecontainer.h" namespace VcProjectManager { namespace Internal { PublishingData::PublishingData() { + m_attributeContainer = new GeneralAttributeContainer; } PublishingData::PublishingData(const PublishingData &data) { - m_anyAttribute = data.m_anyAttribute; + m_attributeContainer = new GeneralAttributeContainer; + *m_attributeContainer = *data.m_attributeContainer; foreach (const PublishingItem::Ptr &item, data.m_publishingItems) m_publishingItems.append(PublishingItem::Ptr(new PublishingItem(*item))); @@ -47,7 +50,7 @@ PublishingData::PublishingData(const PublishingData &data) PublishingData &PublishingData::operator =(const PublishingData &data) { if (this != &data) { - m_anyAttribute = data.m_anyAttribute; + *m_attributeContainer = *data.m_attributeContainer; m_publishingItems.clear(); foreach (const PublishingItem::Ptr &item, data.m_publishingItems) @@ -85,12 +88,7 @@ VcNodeWidget *PublishingData::createSettingsWidget() QDomNode PublishingData::toXMLDomNode(QDomDocument &domXMLDocument) const { QDomElement publishingDataNode = domXMLDocument.createElement(QLatin1String("PublishingData")); - QHashIterator it(m_anyAttribute); - - while (it.hasNext()) { - it.next(); - publishingDataNode.setAttribute(it.key(), it.value()); - } + m_attributeContainer->appendToXMLNode(publishingDataNode); foreach (const PublishingItem::Ptr &publish, m_publishingItems) publishingDataNode.appendChild(publish->toXMLDomNode(domXMLDocument)); @@ -100,7 +98,7 @@ QDomNode PublishingData::toXMLDomNode(QDomDocument &domXMLDocument) const bool PublishingData::isEmpty() const { - return m_publishingItems.isEmpty() && m_anyAttribute.isEmpty(); + return m_publishingItems.isEmpty() && !m_attributeContainer->getAttributeCount(); } void PublishingData::processPublishingItem(const QDomNode &publishingItemNode) @@ -144,25 +142,9 @@ QList PublishingData::publishingItems(const QString &attrib return items; } -QString PublishingData::attributeValue(const QString &attributeName) const -{ - return m_anyAttribute.value(attributeName); -} - -void PublishingData::setAttribute(const QString &attributeName, const QString &attributeValue) -{ - m_anyAttribute.insert(attributeName, attributeValue); -} - -void PublishingData::clearAttribute(const QString &attributeName) -{ - if (m_anyAttribute.contains(attributeName)) - m_anyAttribute.insert(attributeName, QString()); -} - -void PublishingData::removeAttribute(const QString &attributeName) +IAttributeContainer *PublishingData::attributeContainer() const { - m_anyAttribute.remove(attributeName); + return m_attributeContainer; } void PublishingData::processNodeAttributes(const QDomElement &element) @@ -174,7 +156,7 @@ void PublishingData::processNodeAttributes(const QDomElement &element) if (domNode.nodeType() == QDomNode::AttributeNode) { QDomAttr domElement = domNode.toAttr(); - m_anyAttribute.insert(domElement.name(), domElement.value()); + m_attributeContainer->setAttribute(domElement.name(), domElement.value()); } } } diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.h b/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.h index 3922cb710d..18b7a0c055 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/publishingdata.h @@ -37,6 +37,9 @@ namespace VcProjectManager { namespace Internal { +class IAttributeContainer; +class GeneralAttributeContainer; + class PublishingData : public IVcProjectXMLNode { public: @@ -60,16 +63,13 @@ public: QList publishingItems() const; QList publishingItems(const QString &attributeName, const QString &attributeValue) const; - QString attributeValue(const QString &attributeName) const; - void setAttribute(const QString &attributeName, const QString &attributeValue); - void clearAttribute(const QString &attributeName); - void removeAttribute(const QString &attributeName); + IAttributeContainer* attributeContainer() const; private: void processNodeAttributes(const QDomElement &element); QList m_publishingItems; - QHash m_anyAttribute; + GeneralAttributeContainer *m_attributeContainer; }; } // namespace Internal -- cgit v1.2.3