diff options
| author | Linus Jahn <lnj@kaidan.im> | 2019-01-22 20:25:31 +0100 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2019-05-01 10:24:51 +0200 |
| commit | 5b97e23737eb970d65a68f7a2c45c92c38fe50eb (patch) | |
| tree | f7e68e00a280b504fa8ccde0686492b4dac6fd0f /src/base | |
| parent | 9df7e7f24a2a6c313e7367d596601e07dbd2baeb (diff) | |
| download | qxmpp-5b97e23737eb970d65a68f7a2c45c92c38fe50eb.tar.gz | |
roster iq: Make use of d-pointer
Diffstat (limited to 'src/base')
| -rw-r--r-- | src/base/QXmppRosterIq.cpp | 91 | ||||
| -rw-r--r-- | src/base/QXmppRosterIq.h | 21 |
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 |
