aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-01-22 20:25:31 +0100
committerJeremy Lainé <jeremy.laine@m4x.org>2019-05-01 10:24:51 +0200
commit5b97e23737eb970d65a68f7a2c45c92c38fe50eb (patch)
treef7e68e00a280b504fa8ccde0686492b4dac6fd0f /src
parent9df7e7f24a2a6c313e7367d596601e07dbd2baeb (diff)
downloadqxmpp-5b97e23737eb970d65a68f7a2c45c92c38fe50eb.tar.gz
roster iq: Make use of d-pointer
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppRosterIq.cpp91
-rw-r--r--src/base/QXmppRosterIq.h21
2 files changed, 77 insertions, 35 deletions
diff --git a/src/base/QXmppRosterIq.cpp b/src/base/QXmppRosterIq.cpp
index 081cb753..6e87909a 100644
--- a/src/base/QXmppRosterIq.cpp
+++ b/src/base/QXmppRosterIq.cpp
@@ -29,20 +29,37 @@
#include "QXmppConstants_p.h"
#include "QXmppUtils.h"
+class QXmppRosterIqPrivate : public QSharedData
+{
+public:
+ QList<QXmppRosterIq::Item> items;
+ // XEP-0237 Roster Versioning
+ QString version;
+};
+
+QXmppRosterIq::QXmppRosterIq()
+ : d(new QXmppRosterIqPrivate)
+{
+}
+
+QXmppRosterIq::~QXmppRosterIq()
+{
+}
+
/// Adds an item to the roster IQ.
///
/// \param item
void QXmppRosterIq::addItem(const Item& item)
{
- m_items.append(item);
+ d->items.append(item);
}
/// Returns the roster IQ's items.
QList<QXmppRosterIq::Item> QXmppRosterIq::items() const
{
- return m_items;
+ return d->items;
}
/// Returns the roster version of IQ.
@@ -52,7 +69,7 @@ QList<QXmppRosterIq::Item> QXmppRosterIq::items() const
QString QXmppRosterIq::version() const
{
- return m_version;
+ return d->version;
}
/// Sets the roster version of IQ.
@@ -62,7 +79,7 @@ QString QXmppRosterIq::version() const
void QXmppRosterIq::setVersion(const QString &version)
{
- m_version = version;
+ d->version = version;
}
/// \cond
@@ -81,7 +98,7 @@ void QXmppRosterIq::parseElementFromChild(const QDomElement &element)
{
QXmppRosterIq::Item item;
item.parse(itemElement);
- m_items.append(item);
+ d->items.append(item);
itemElement = itemElement.nextSiblingElement();
}
}
@@ -94,17 +111,39 @@ void QXmppRosterIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
// XEP-0237 roster versioning - If the server does not advertise support for roster versioning, the client MUST NOT include the 'ver' attribute.
if(!version().isEmpty())
writer->writeAttribute( "ver", version());
- for(int i = 0; i < m_items.count(); ++i)
- m_items.at(i).toXml(writer);
+ for(int i = 0; i < d->items.count(); ++i)
+ d->items.at(i).toXml(writer);
writer->writeEndElement();
}
/// \endcond
+class QXmppRosterIq::ItemPrivate : public QSharedData
+{
+public:
+ QString bareJid;
+ Item::SubscriptionType type;
+ QString name;
+ // can be subscribe/unsubscribe (attribute "ask")
+ QString subscriptionStatus;
+ QSet<QString> groups;
+};
+
/// Constructs a new roster entry.
QXmppRosterIq::Item::Item()
- : m_type(NotSet)
+ : d(new ItemPrivate)
+{
+ d->type = NotSet;
+}
+
+QXmppRosterIq::Item::~Item()
+{
+}
+
+QXmppRosterIq::Item& QXmppRosterIq::Item::operator=(const Item &other)
{
+ d = other.d;
+ return *this;
}
/// Returns the bareJid of the roster entry.
@@ -114,7 +153,7 @@ QXmppRosterIq::Item::Item()
QString QXmppRosterIq::Item::bareJid() const
{
- return m_bareJid;
+ return d->bareJid;
}
/// Sets the bareJid of the roster entry.
@@ -124,7 +163,7 @@ QString QXmppRosterIq::Item::bareJid() const
void QXmppRosterIq::Item::setBareJid(const QString &bareJid)
{
- m_bareJid = bareJid;
+ d->bareJid = bareJid;
}
/// Returns the groups of the roster entry.
@@ -134,7 +173,7 @@ void QXmppRosterIq::Item::setBareJid(const QString &bareJid)
QSet<QString> QXmppRosterIq::Item::groups() const
{
- return m_groups;
+ return d->groups;
}
/// Sets the groups of the roster entry.
@@ -144,7 +183,7 @@ QSet<QString> QXmppRosterIq::Item::groups() const
void QXmppRosterIq::Item::setGroups(const QSet<QString>& groups)
{
- m_groups = groups;
+ d->groups = groups;
}
/// Returns the name of the roster entry.
@@ -154,7 +193,7 @@ void QXmppRosterIq::Item::setGroups(const QSet<QString>& groups)
QString QXmppRosterIq::Item::name() const
{
- return m_name;
+ return d->name;
}
/// Sets the name of the roster entry.
@@ -164,7 +203,7 @@ QString QXmppRosterIq::Item::name() const
void QXmppRosterIq::Item::setName(const QString &name)
{
- m_name = name;
+ d->name = name;
}
/// Returns the subscription status of the roster entry. It is the "ask"
@@ -177,7 +216,7 @@ void QXmppRosterIq::Item::setName(const QString &name)
QString QXmppRosterIq::Item::subscriptionStatus() const
{
- return m_subscriptionStatus;
+ return d->subscriptionStatus;
}
/// Sets the subscription status of the roster entry. It is the "ask"
@@ -189,7 +228,7 @@ QString QXmppRosterIq::Item::subscriptionStatus() const
void QXmppRosterIq::Item::setSubscriptionStatus(const QString &status)
{
- m_subscriptionStatus = status;
+ d->subscriptionStatus = status;
}
/// Returns the subscription type of the roster entry.
@@ -198,7 +237,7 @@ void QXmppRosterIq::Item::setSubscriptionStatus(const QString &status)
QXmppRosterIq::Item::SubscriptionType
QXmppRosterIq::Item::subscriptionType() const
{
- return m_type;
+ return d->type;
}
/// Sets the subscription type of the roster entry.
@@ -208,12 +247,12 @@ QXmppRosterIq::Item::SubscriptionType
void QXmppRosterIq::Item::setSubscriptionType(SubscriptionType type)
{
- m_type = type;
+ d->type = type;
}
QString QXmppRosterIq::Item::getSubscriptionTypeStr() const
{
- switch(m_type)
+ switch(d->type)
{
case NotSet:
return "";
@@ -256,15 +295,15 @@ void QXmppRosterIq::Item::setSubscriptionTypeFromStr(const QString& type)
/// \cond
void QXmppRosterIq::Item::parse(const QDomElement &element)
{
- m_name = element.attribute("name");
- m_bareJid = element.attribute("jid");
+ d->name = element.attribute("name");
+ d->bareJid = element.attribute("jid");
setSubscriptionTypeFromStr(element.attribute("subscription"));
setSubscriptionStatus(element.attribute("ask"));
QDomElement groupElement = element.firstChildElement("group");
while(!groupElement.isNull())
{
- m_groups << groupElement.text();
+ d->groups << groupElement.text();
groupElement = groupElement.nextSiblingElement("group");
}
}
@@ -272,13 +311,13 @@ void QXmppRosterIq::Item::parse(const QDomElement &element)
void QXmppRosterIq::Item::toXml(QXmlStreamWriter *writer) const
{
writer->writeStartElement("item");
- helperToXmlAddAttribute(writer,"jid", m_bareJid);
- helperToXmlAddAttribute(writer,"name", m_name);
+ helperToXmlAddAttribute(writer,"jid", d->bareJid);
+ helperToXmlAddAttribute(writer,"name", d->name);
helperToXmlAddAttribute(writer,"subscription", getSubscriptionTypeStr());
helperToXmlAddAttribute(writer, "ask", subscriptionStatus());
- QSet<QString>::const_iterator i = m_groups.constBegin();
- while(i != m_groups.constEnd())
+ QSet<QString>::const_iterator i = d->groups.constBegin();
+ while(i != d->groups.constEnd())
{
helperToXmlAddTextElement(writer,"group", *i);
++i;
diff --git a/src/base/QXmppRosterIq.h b/src/base/QXmppRosterIq.h
index b2883557..6f6749c9 100644
--- a/src/base/QXmppRosterIq.h
+++ b/src/base/QXmppRosterIq.h
@@ -30,6 +30,8 @@
#include <QList>
#include <QSet>
+class QXmppRosterIqPrivate;
+
/// \brief The QXmppRosterIq class represents a roster IQ.
///
/// \ingroup Stanzas
@@ -37,6 +39,7 @@
class QXMPP_EXPORT QXmppRosterIq : public QXmppIq
{
public:
+ class ItemPrivate;
/// \brief The QXmppRosterIq::Item class represents a roster entry.
class QXMPP_EXPORT Item
@@ -59,6 +62,10 @@ public:
};
Item();
+ ~Item();
+
+ Item& operator=(const Item &other);
+
QString bareJid() const;
QSet<QString> groups() const;
QString name() const;
@@ -80,14 +87,12 @@ public:
QString getSubscriptionTypeStr() const;
void setSubscriptionTypeFromStr(const QString&);
- QString m_bareJid;
- SubscriptionType m_type;
- QString m_name;
- // can be subscribe/unsubscribe (attribute "ask")
- QString m_subscriptionStatus;
- QSet<QString> m_groups;
+ ItemPrivate *d;
};
+ QXmppRosterIq();
+ ~QXmppRosterIq();
+
QString version() const;
void setVersion(const QString&);
@@ -105,9 +110,7 @@ protected:
/// \endcond
private:
- QList<Item> m_items;
- // XEP-0237 Roster Versioning
- QString m_version;
+ QXmppRosterIqPrivate *d;
};
#endif // QXMPPROSTERIQ_H