aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppElement.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:51:15 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:51:15 +0000
commitdeb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4 (patch)
treed956bad28e28aadc3c83dbf88b3eddb5e1d9a9f4 /src/QXmppElement.cpp
parente8a1ad0cc608f12874ba4bafbd8282fa537ec9fb (diff)
downloadqxmpp-deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4.tar.gz
move files common to client/server into "base"
Diffstat (limited to 'src/QXmppElement.cpp')
-rw-r--r--src/QXmppElement.cpp241
1 files changed, 0 insertions, 241 deletions
diff --git a/src/QXmppElement.cpp b/src/QXmppElement.cpp
deleted file mode 100644
index 904ab473..00000000
--- a/src/QXmppElement.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (C) 2008-2011 The QXmpp developers
- *
- * Author:
- * Jeremy Lainé
- *
- * Source:
- * http://code.google.com/p/qxmpp
- *
- * This file is a part of QXmpp library.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- */
-
-#include "QXmppElement.h"
-#include "QXmppUtils.h"
-
-#include <QDomElement>
-
-class QXmppElementPrivate
-{
-public:
- QXmppElementPrivate();
- QXmppElementPrivate(const QDomElement &element);
- ~QXmppElementPrivate();
-
- QAtomicInt counter;
-
- QXmppElementPrivate *parent;
- QMap<QString, QString> attributes;
- QList<QXmppElementPrivate*> children;
- QString name;
- QString value;
-};
-
-QXmppElementPrivate::QXmppElementPrivate()
- : counter(1), parent(NULL)
-{
-}
-
-QXmppElementPrivate::QXmppElementPrivate(const QDomElement &element)
- : counter(1), parent(NULL)
-{
- if (element.isNull())
- return;
-
- name = element.tagName();
- QString xmlns = element.namespaceURI();
- QString parentns = element.parentNode().namespaceURI();
- if (!xmlns.isEmpty() && xmlns != parentns)
- attributes.insert("xmlns", xmlns);
- QDomNamedNodeMap attrs = element.attributes();
- for (int i = 0; i < attrs.size(); i++)
- {
- QDomAttr attr = attrs.item(i).toAttr();
- attributes.insert(attr.name(), attr.value());
- }
-
- QDomNode childNode = element.firstChild();
- while (!childNode.isNull())
- {
- if (childNode.isElement())
- {
- QXmppElementPrivate *child = new QXmppElementPrivate(childNode.toElement());
- child->parent = this;
- children.append(child);
- } else if (childNode.isText()) {
- value += childNode.toText().data();
- }
- childNode = childNode.nextSibling();
- }
-}
-
-QXmppElementPrivate::~QXmppElementPrivate()
-{
- foreach (QXmppElementPrivate *child, children)
- if (!child->counter.deref())
- delete child;
-}
-
-QXmppElement::QXmppElement()
-{
- d = new QXmppElementPrivate();
-}
-
-QXmppElement::QXmppElement(const QXmppElement &other)
-{
- other.d->counter.ref();
- d = other.d;
-}
-
-QXmppElement::QXmppElement(QXmppElementPrivate *other)
-{
- other->counter.ref();
- d = other;
-}
-
-QXmppElement::QXmppElement(const QDomElement &element)
-{
- d = new QXmppElementPrivate(element);
-}
-
-QXmppElement::~QXmppElement()
-{
- if (!d->counter.deref())
- delete d;
-}
-
-QXmppElement &QXmppElement::operator=(const QXmppElement &other)
-{
- other.d->counter.ref();
- if (!d->counter.deref())
- delete d;
- d = other.d;
- return *this;
-}
-
-QStringList QXmppElement::attributeNames() const
-{
- return d->attributes.keys();
-}
-
-QString QXmppElement::attribute(const QString &name) const
-{
- return d->attributes.value(name);
-}
-
-void QXmppElement::setAttribute(const QString &name, const QString &value)
-{
- d->attributes.insert(name, value);
-}
-
-void QXmppElement::appendChild(const QXmppElement &child)
-{
- if (child.d->parent == d)
- return;
-
- if (child.d->parent)
- child.d->parent->children.removeAll(child.d);
- else
- child.d->counter.ref();
- child.d->parent = d;
- d->children.append(child.d);
-}
-
-QXmppElement QXmppElement::firstChildElement(const QString &name) const
-{
- foreach (QXmppElementPrivate *child_d, d->children)
- if (name.isEmpty() || child_d->name == name)
- return QXmppElement(child_d);
- return QXmppElement();
-}
-
-QXmppElement QXmppElement::nextSiblingElement(const QString &name) const
-{
- if (!d->parent)
- return QXmppElement();
- const QList<QXmppElementPrivate*> &siblings_d = d->parent->children;
- for (int i = siblings_d.indexOf(d) + 1; i < siblings_d.size(); i++)
- if (name.isEmpty() || siblings_d[i]->name == name)
- return QXmppElement(siblings_d[i]);
- return QXmppElement();
-}
-
-bool QXmppElement::isNull() const
-{
- return d->name.isEmpty();
-}
-
-void QXmppElement::removeChild(const QXmppElement &child)
-{
- if (child.d->parent != d)
- return;
-
- d->children.removeAll(child.d);
- child.d->counter.deref();
- child.d->parent = NULL;
-}
-
-QString QXmppElement::tagName() const
-{
- return d->name;
-}
-
-void QXmppElement::setTagName(const QString &tagName)
-{
- d->name = tagName;
-}
-
-QString QXmppElement::value() const
-{
- return d->value;
-}
-
-void QXmppElement::setValue(const QString &value)
-{
- d->value = value;
-}
-
-void QXmppElement::toXml(QXmlStreamWriter *writer) const
-{
- if (isNull())
- return;
-
- writer->writeStartElement(d->name);
- if (d->attributes.contains("xmlns"))
- writer->writeAttribute("xmlns", d->attributes.value("xmlns"));
- foreach (const QString &attr, d->attributes.keys())
- if (attr != "xmlns")
- helperToXmlAddAttribute(writer, attr, d->attributes.value(attr));
- if (!d->value.isEmpty())
- writer->writeCharacters(d->value);
- foreach (const QXmppElement &child, d->children)
- child.toXml(writer);
- writer->writeEndElement();
-}
-
-QXmppElementList::QXmppElementList()
-{
-}
-
-QXmppElementList::QXmppElementList(const QXmppElement &element)
-{
- append(element);
-}
-
-
-QXmppElementList::QXmppElementList(const QList<QXmppElement> &other)
- : QList<QXmppElement>(other)
-{
-}
-