forked from qt-creator/qt-creator
PublishingData implements IPublishingData interface.
Change-Id: Ic2438a94cc5ef4a59b2234729255ee6d18a02916 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Oswald Buddenhagen
parent
790012e701
commit
1acbf03101
@@ -27,4 +27,5 @@ HEADERS += \
|
|||||||
interfaces/itoolfiles.h \
|
interfaces/itoolfiles.h \
|
||||||
interfaces/iplatform.h \
|
interfaces/iplatform.h \
|
||||||
interfaces/iplatforms.h \
|
interfaces/iplatforms.h \
|
||||||
interfaces/ipublishingitem.h
|
interfaces/ipublishingitem.h \
|
||||||
|
interfaces/ipublishingdata.h
|
||||||
|
55
src/plugins/vcprojectmanager/interfaces/ipublishingdata.h
Normal file
55
src/plugins/vcprojectmanager/interfaces/ipublishingdata.h
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (c) 2013 Bojan Petrovic
|
||||||
|
** Copyright (c) 2013 Radovan Zivkovic
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator.
|
||||||
|
**
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef VCPROJECTMANAGER_INTERNAL_IPUBLISHINGDATA_H
|
||||||
|
#define VCPROJECTMANAGER_INTERNAL_IPUBLISHINGDATA_H
|
||||||
|
|
||||||
|
#include "../vcprojectmodel/ivcprojectnodemodel.h"
|
||||||
|
|
||||||
|
namespace VcProjectManager {
|
||||||
|
namespace Internal {
|
||||||
|
|
||||||
|
class IPublishingItem;
|
||||||
|
class IAttributeContainer;
|
||||||
|
|
||||||
|
class IPublishingData : public IVcProjectXMLNode
|
||||||
|
{
|
||||||
|
public :
|
||||||
|
virtual ~IPublishingData() {}
|
||||||
|
virtual void addPublishingItem(IPublishingItem *item) = 0;
|
||||||
|
virtual void removePublishingItem(IPublishingItem *item) = 0;
|
||||||
|
virtual int publishingItemCount() const = 0;
|
||||||
|
virtual IPublishingItem* publishingItem(int index) const = 0;
|
||||||
|
virtual IAttributeContainer* attributeContainer() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // Internal
|
||||||
|
} // VcProjectManager
|
||||||
|
|
||||||
|
#endif // VCPROJECTMANAGER_INTERNAL_IPUBLISHINGDATA_H
|
@@ -42,6 +42,7 @@ class IPublishingItem : public IVcProjectXMLNode
|
|||||||
public:
|
public:
|
||||||
virtual ~IPublishingItem() {}
|
virtual ~IPublishingItem() {}
|
||||||
virtual IAttributeContainer* attributeContainer() const = 0;
|
virtual IAttributeContainer* attributeContainer() const = 0;
|
||||||
|
virtual IPublishingItem* clone() const = 0;
|
||||||
};
|
};
|
||||||
} // Internal
|
} // Internal
|
||||||
} // VcProjectManager
|
} // VcProjectManager
|
||||||
|
@@ -30,6 +30,8 @@
|
|||||||
#include "publishingdata.h"
|
#include "publishingdata.h"
|
||||||
#include "generalattributecontainer.h"
|
#include "generalattributecontainer.h"
|
||||||
|
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
namespace VcProjectManager {
|
namespace VcProjectManager {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -43,8 +45,8 @@ PublishingData::PublishingData(const PublishingData &data)
|
|||||||
m_attributeContainer = new GeneralAttributeContainer;
|
m_attributeContainer = new GeneralAttributeContainer;
|
||||||
*m_attributeContainer = *data.m_attributeContainer;
|
*m_attributeContainer = *data.m_attributeContainer;
|
||||||
|
|
||||||
foreach (const PublishingItem::Ptr &item, data.m_publishingItems)
|
foreach (const IPublishingItem *item, data.m_publishingItems)
|
||||||
m_publishingItems.append(PublishingItem::Ptr(new PublishingItem(*item)));
|
m_publishingItems.append(item->clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
PublishingData &PublishingData::operator =(const PublishingData &data)
|
PublishingData &PublishingData::operator =(const PublishingData &data)
|
||||||
@@ -52,16 +54,18 @@ PublishingData &PublishingData::operator =(const PublishingData &data)
|
|||||||
if (this != &data) {
|
if (this != &data) {
|
||||||
*m_attributeContainer = *data.m_attributeContainer;
|
*m_attributeContainer = *data.m_attributeContainer;
|
||||||
|
|
||||||
|
qDeleteAll(m_publishingItems);
|
||||||
m_publishingItems.clear();
|
m_publishingItems.clear();
|
||||||
foreach (const PublishingItem::Ptr &item, data.m_publishingItems)
|
foreach (const IPublishingItem *item, data.m_publishingItems)
|
||||||
m_publishingItems.append(PublishingItem::Ptr(new PublishingItem(*item)));
|
m_publishingItems.append(item->clone());
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
PublishingData::~PublishingData()
|
PublishingData::~PublishingData()
|
||||||
{
|
{
|
||||||
m_publishingItems.clear();
|
qDeleteAll(m_publishingItems);
|
||||||
|
delete m_attributeContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PublishingData::processNode(const QDomNode &node)
|
void PublishingData::processNode(const QDomNode &node)
|
||||||
@@ -90,20 +94,42 @@ QDomNode PublishingData::toXMLDomNode(QDomDocument &domXMLDocument) const
|
|||||||
QDomElement publishingDataNode = domXMLDocument.createElement(QLatin1String("PublishingData"));
|
QDomElement publishingDataNode = domXMLDocument.createElement(QLatin1String("PublishingData"));
|
||||||
m_attributeContainer->appendToXMLNode(publishingDataNode);
|
m_attributeContainer->appendToXMLNode(publishingDataNode);
|
||||||
|
|
||||||
foreach (const PublishingItem::Ptr &publish, m_publishingItems)
|
foreach (const IPublishingItem *publish, m_publishingItems)
|
||||||
publishingDataNode.appendChild(publish->toXMLDomNode(domXMLDocument));
|
publishingDataNode.appendChild(publish->toXMLDomNode(domXMLDocument));
|
||||||
|
|
||||||
return publishingDataNode;
|
return publishingDataNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PublishingData::isEmpty() const
|
void PublishingData::addPublishingItem(IPublishingItem *item)
|
||||||
{
|
{
|
||||||
return m_publishingItems.isEmpty() && !m_attributeContainer->getAttributeCount();
|
if (!item || m_publishingItems.contains(item))
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_publishingItems.append(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PublishingData::removePublishingItem(IPublishingItem *item)
|
||||||
|
{
|
||||||
|
if (!item || !m_publishingItems.contains(item))
|
||||||
|
return;
|
||||||
|
m_publishingItems.removeOne(item);
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PublishingData::publishingItemCount() const
|
||||||
|
{
|
||||||
|
return m_publishingItems.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
IPublishingItem *PublishingData::publishingItem(int index) const
|
||||||
|
{
|
||||||
|
QTC_ASSERT(0 <= index && index < m_publishingItems.size(), return 0);
|
||||||
|
return m_publishingItems[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
void PublishingData::processPublishingItem(const QDomNode &publishingItemNode)
|
void PublishingData::processPublishingItem(const QDomNode &publishingItemNode)
|
||||||
{
|
{
|
||||||
PublishingItem::Ptr publishingItem(new PublishingItem);
|
PublishingItem *publishingItem(new PublishingItem);
|
||||||
m_publishingItems.append(publishingItem);
|
m_publishingItems.append(publishingItem);
|
||||||
publishingItem->processNode(publishingItemNode);
|
publishingItem->processNode(publishingItemNode);
|
||||||
|
|
||||||
@@ -113,35 +139,6 @@ void PublishingData::processPublishingItem(const QDomNode &publishingItemNode)
|
|||||||
processPublishingItem(nextSibling);
|
processPublishingItem(nextSibling);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PublishingData::addPublishingItem(PublishingItem::Ptr item)
|
|
||||||
{
|
|
||||||
if (m_publishingItems.contains(item))
|
|
||||||
return;
|
|
||||||
m_publishingItems.append(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PublishingData::removePublishingItem(PublishingItem::Ptr item)
|
|
||||||
{
|
|
||||||
m_publishingItems.removeAll(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<PublishingItem::Ptr> PublishingData::publishingItems() const
|
|
||||||
{
|
|
||||||
return m_publishingItems;
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<PublishingItem::Ptr> PublishingData::publishingItems(const QString &attributeName, const QString &attributeValue) const
|
|
||||||
{
|
|
||||||
QList<PublishingItem::Ptr> items;
|
|
||||||
|
|
||||||
foreach (const PublishingItem::Ptr &item, m_publishingItems) {
|
|
||||||
if (item->attributeContainer()->attributeValue(attributeName) == attributeValue)
|
|
||||||
items.append(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
IAttributeContainer *PublishingData::attributeContainer() const
|
IAttributeContainer *PublishingData::attributeContainer() const
|
||||||
{
|
{
|
||||||
return m_attributeContainer;
|
return m_attributeContainer;
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
#ifndef VCPROJECTMANAGER_INTERNAL_PUBLISHINGDATA_H
|
#ifndef VCPROJECTMANAGER_INTERNAL_PUBLISHINGDATA_H
|
||||||
#define VCPROJECTMANAGER_INTERNAL_PUBLISHINGDATA_H
|
#define VCPROJECTMANAGER_INTERNAL_PUBLISHINGDATA_H
|
||||||
|
|
||||||
#include "ivcprojectnodemodel.h"
|
#include "../interfaces/ipublishingdata.h"
|
||||||
|
|
||||||
#include "publishingitem.h"
|
#include "publishingitem.h"
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ namespace Internal {
|
|||||||
class IAttributeContainer;
|
class IAttributeContainer;
|
||||||
class GeneralAttributeContainer;
|
class GeneralAttributeContainer;
|
||||||
|
|
||||||
class PublishingData : public IVcProjectXMLNode
|
class PublishingData : public IPublishingData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef QSharedPointer<PublishingData> Ptr;
|
typedef QSharedPointer<PublishingData> Ptr;
|
||||||
@@ -54,21 +54,17 @@ public:
|
|||||||
VcNodeWidget* createSettingsWidget();
|
VcNodeWidget* createSettingsWidget();
|
||||||
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
|
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
|
||||||
|
|
||||||
bool isEmpty() const;
|
void addPublishingItem(IPublishingItem *item);
|
||||||
|
void removePublishingItem(IPublishingItem *item);
|
||||||
void processPublishingItem(const QDomNode &publishingItem);
|
int publishingItemCount() const;
|
||||||
|
IPublishingItem *publishingItem(int index) const;
|
||||||
void addPublishingItem(PublishingItem::Ptr item);
|
|
||||||
void removePublishingItem(PublishingItem::Ptr item);
|
|
||||||
QList<PublishingItem::Ptr> publishingItems() const;
|
|
||||||
QList<PublishingItem::Ptr> publishingItems(const QString &attributeName, const QString &attributeValue) const;
|
|
||||||
|
|
||||||
IAttributeContainer* attributeContainer() const;
|
IAttributeContainer* attributeContainer() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void processPublishingItem(const QDomNode &publishingItem);
|
||||||
void processNodeAttributes(const QDomElement &element);
|
void processNodeAttributes(const QDomElement &element);
|
||||||
|
|
||||||
QList<PublishingItem::Ptr> m_publishingItems;
|
QList<IPublishingItem *> m_publishingItems;
|
||||||
GeneralAttributeContainer *m_attributeContainer;
|
GeneralAttributeContainer *m_attributeContainer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -81,6 +81,11 @@ IAttributeContainer *PublishingItem::attributeContainer() const
|
|||||||
return m_attributeContainer;
|
return m_attributeContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IPublishingItem *PublishingItem::clone() const
|
||||||
|
{
|
||||||
|
return new PublishingItem(*this);
|
||||||
|
}
|
||||||
|
|
||||||
void PublishingItem::processNodeAttributes(const QDomElement &element)
|
void PublishingItem::processNodeAttributes(const QDomElement &element)
|
||||||
{
|
{
|
||||||
QDomNamedNodeMap namedNodeMap = element.attributes();
|
QDomNamedNodeMap namedNodeMap = element.attributes();
|
||||||
|
@@ -44,8 +44,6 @@ class GeneralAttributeContainer;
|
|||||||
class PublishingItem : public IPublishingItem
|
class PublishingItem : public IPublishingItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef QSharedPointer<PublishingItem> Ptr;
|
|
||||||
|
|
||||||
PublishingItem();
|
PublishingItem();
|
||||||
PublishingItem(const PublishingItem &item);
|
PublishingItem(const PublishingItem &item);
|
||||||
PublishingItem& operator=(const PublishingItem &item);
|
PublishingItem& operator=(const PublishingItem &item);
|
||||||
@@ -56,6 +54,7 @@ public:
|
|||||||
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
|
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
|
||||||
|
|
||||||
IAttributeContainer* attributeContainer() const;
|
IAttributeContainer* attributeContainer() const;
|
||||||
|
IPublishingItem* clone() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void processNodeAttributes(const QDomElement &element);
|
void processNodeAttributes(const QDomElement &element);
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
#include "../widgets/projectsettingswidget.h"
|
#include "../widgets/projectsettingswidget.h"
|
||||||
#include "../widgets/configurationswidgets.h"
|
#include "../widgets/configurationswidgets.h"
|
||||||
#include "configurationcontainer.h"
|
#include "configurationcontainer.h"
|
||||||
|
#include "../interfaces/iattributecontainer.h"
|
||||||
|
|
||||||
namespace VcProjectManager {
|
namespace VcProjectManager {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -747,7 +748,7 @@ QDomElement VcProjectDocument2008::toVcDocumentElement(QDomDocument &domXMLDocum
|
|||||||
if (!m_targetFrameworkVersion.isEmpty())
|
if (!m_targetFrameworkVersion.isEmpty())
|
||||||
vcDocNode.setAttribute(QLatin1String("TargetFrameworkVersion"), m_targetFrameworkVersion);
|
vcDocNode.setAttribute(QLatin1String("TargetFrameworkVersion"), m_targetFrameworkVersion);
|
||||||
|
|
||||||
if (!m_publishingData->isEmpty())
|
if (m_publishingData->publishingItemCount() && m_publishingData->attributeContainer()->getAttributeCount())
|
||||||
vcDocNode.appendChild(m_publishingData->toXMLDomNode(domXMLDocument));
|
vcDocNode.appendChild(m_publishingData->toXMLDomNode(domXMLDocument));
|
||||||
|
|
||||||
return vcDocNode;
|
return vcDocNode;
|
||||||
|
Reference in New Issue
Block a user