aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppPubSubIq.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-12-26 20:10:19 +0100
committerLinus Jahn <lnj@kaidan.im>2022-12-26 20:48:34 +0100
commit847de2ddc00057049de6d7f507711906e7dfd3a8 (patch)
tree0bde8b647dfc2026ce05143ad664abcba4fda804 /src/base/QXmppPubSubIq.h
parent681a4cc6a36486953b82baaa5a7e1e0e6fd6a070 (diff)
downloadqxmpp-847de2ddc00057049de6d7f507711906e7dfd3a8.tar.gz
Make PubSubIq header private
Users should only need to use the PubSubManager. The PubSubIq does not need to have a stable API this way and this gives us more flexibility. Closes #509.
Diffstat (limited to 'src/base/QXmppPubSubIq.h')
-rw-r--r--src/base/QXmppPubSubIq.h165
1 files changed, 0 insertions, 165 deletions
diff --git a/src/base/QXmppPubSubIq.h b/src/base/QXmppPubSubIq.h
deleted file mode 100644
index ac33766a..00000000
--- a/src/base/QXmppPubSubIq.h
+++ /dev/null
@@ -1,165 +0,0 @@
-// SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im>
-// SPDX-FileCopyrightText: 2010 Jeremy Lainé <jeremy.laine@m4x.org>
-//
-// SPDX-License-Identifier: LGPL-2.1-or-later
-
-#ifndef QXMPPPUBSUBIQ_H
-#define QXMPPPUBSUBIQ_H
-
-#include "QXmppIq.h"
-
-#include <optional>
-
-#include <QDomElement>
-#include <QSharedDataPointer>
-
-class QXmppDataForm;
-class QXmppPubSubIqPrivate;
-class QXmppPubSubItem;
-class QXmppPubSubSubscription;
-class QXmppPubSubAffiliation;
-class QXmppResultSetReply;
-
-class QXMPP_EXPORT QXmppPubSubIqBase : public QXmppIq
-{
-public:
- /// This enum is used to describe a publish-subscribe query type.
- enum QueryType : uint8_t {
- Affiliations,
- OwnerAffiliations,
- Configure,
- Create,
- Default,
- OwnerDefault,
- Delete,
- Items,
- Options,
- Publish,
- Purge,
- Retract,
- Subscribe,
- Subscription,
- Subscriptions,
- OwnerSubscriptions,
- Unsubscribe,
- };
-
- QXmppPubSubIqBase();
- QXmppPubSubIqBase(const QXmppPubSubIqBase &other);
- ~QXmppPubSubIqBase();
-
- QXmppPubSubIqBase &operator=(const QXmppPubSubIqBase &other);
-
- QueryType queryType() const;
- void setQueryType(QueryType queryType);
-
- QString queryJid() const;
- void setQueryJid(const QString &queryJid);
-
- QString queryNode() const;
- void setQueryNode(const QString &queryNode);
-
- QString subscriptionId() const;
- void setSubscriptionId(const QString &subscriptionId);
-
- QVector<QXmppPubSubSubscription> subscriptions() const;
- void setSubscriptions(const QVector<QXmppPubSubSubscription> &);
-
- std::optional<QXmppPubSubSubscription> subscription() const;
- void setSubscription(const std::optional<QXmppPubSubSubscription> &);
-
- QVector<QXmppPubSubAffiliation> affiliations() const;
- void setAffiliations(const QVector<QXmppPubSubAffiliation> &);
-
- std::optional<uint32_t> maxItems() const;
- void setMaxItems(std::optional<uint32_t>);
-
- std::optional<QXmppDataForm> dataForm() const;
- void setDataForm(const std::optional<QXmppDataForm> &);
-
- std::optional<QXmppResultSetReply> itemsContinuation() const;
- void setItemsContinuation(const std::optional<QXmppResultSetReply> &itemsContinuation);
-
- /// \cond
- static bool isPubSubIq(const QDomElement &element);
-
-protected:
- static bool isPubSubIq(const QDomElement &element,
- bool (*isItemValid)(const QDomElement &));
-
- void parseElementFromChild(const QDomElement &) override;
- void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
-
- virtual void parseItems(const QDomElement &queryElement) = 0;
- virtual void serializeItems(QXmlStreamWriter *writer) const = 0;
- /// \endcond
-
-private:
- static std::optional<QueryType> queryTypeFromDomElement(const QDomElement &element);
- static bool queryTypeIsOwnerIq(QueryType type);
-
- QSharedDataPointer<QXmppPubSubIqPrivate> d;
-};
-
-template<typename T = QXmppPubSubItem>
-class QXmppPubSubIq : public QXmppPubSubIqBase
-{
-public:
- QVector<T> items() const;
- void setItems(const QVector<T> &items);
-
- static bool isPubSubIq(const QDomElement &element);
-
-protected:
- /// \cond
- void parseItems(const QDomElement &queryElement) override;
- void serializeItems(QXmlStreamWriter *writer) const override;
- /// \endcond
-
-private:
- QVector<T> m_items;
-};
-
-template<typename T>
-QVector<T> QXmppPubSubIq<T>::items() const
-{
- return m_items;
-}
-
-template<typename T>
-void QXmppPubSubIq<T>::setItems(const QVector<T> &items)
-{
- m_items = items;
-}
-
-template<typename T>
-bool QXmppPubSubIq<T>::isPubSubIq(const QDomElement &element)
-{
- return QXmppPubSubIqBase::isPubSubIq(element, [](const QDomElement &item) -> bool {
- return T::isItem(item);
- });
-}
-
-/// \cond
-template<typename T>
-void QXmppPubSubIq<T>::parseItems(const QDomElement &queryElement)
-{
- for (auto childElement = queryElement.firstChildElement(QStringLiteral("item"));
- !childElement.isNull();
- childElement = childElement.nextSiblingElement(QStringLiteral("item"))) {
- T item;
- item.parse(childElement);
- m_items << std::move(item);
- }
-}
-
-template<typename T>
-void QXmppPubSubIq<T>::serializeItems(QXmlStreamWriter *writer) const
-{
- for (const auto &item : std::as_const(m_items)) {
- item.toXml(writer);
- }
-}
-/// \endcond
-
-#endif // QXMPPPUBSUBIQ_H