6#ifndef QXMPPDISCOVERY_H
7#define QXMPPDISCOVERY_H
9#include "QXmppDataFormBase.h"
12#include <QSharedDataPointer>
14class QXmppDiscoveryIdentityPrivate;
15class QXmppDiscoveryItemPrivate;
16class QXmppDiscoveryIqPrivate;
23 explicit QXmppDiscoItem(
const QString &jid,
const QString &name = {},
const QString &node = {})
24 : m_jid(jid), m_name(name), m_node(node) { }
27 const QString &
jid()
const {
return m_jid; }
29 void setJid(
const QString &newJid) { m_jid = newJid; }
32 const QString &
name()
const {
return m_name; }
34 void setName(
const QString &newName) { m_name = newName; }
37 const QString &
node()
const {
return m_node; }
39 void setNode(
const QString &newNode) { m_node = newNode; }
42 static constexpr std::tuple XmlTag = { u
"item", QXmpp::Private::ns_disco_items };
43 static std::optional<QXmppDiscoItem> fromDom(
const QDomElement &el);
44 void toXml(QXmlStreamWriter *writer)
const;
58 explicit QXmppDiscoItems(
const QString &node,
const QList<QXmppDiscoItem> &items = {})
59 : m_node(node), m_items(items) { }
62 const QList<QXmppDiscoItem> &
items()
const {
return m_items; }
64 void setItems(
const QList<QXmppDiscoItem> &newItems) { m_items = newItems; }
67 const QString &
node()
const {
return m_node; }
69 void setNode(
const QString &newNode) { m_node = newNode; }
72 static constexpr std::tuple XmlTag = { u
"query", QXmpp::Private::ns_disco_items };
73 static std::optional<QXmppDiscoItems> fromDom(
const QDomElement &el);
74 void toXml(QXmlStreamWriter *writer)
const;
78 QList<QXmppDiscoItem> m_items;
87 explicit QXmppDiscoIdentity(
const QString &category,
const QString &type = {},
const QString &name = {},
const QString &lang = {})
88 : m_category(category), m_type(type), m_name(name), m_language(lang) { }
91 const QString &
category()
const {
return m_category; }
93 void setCategory(
const QString &newCategory) { m_category = newCategory; }
100 const QString &
type()
const {
return m_type; }
106 void setType(
const QString &newType) { m_type = newType; }
109 const QString &
name()
const {
return m_name; }
111 void setName(
const QString &newName) { m_name = newName; }
119 const QString &
language()
const {
return m_language; }
126 void setLanguage(
const QString &newLanguage) { m_language = newLanguage; }
129 static constexpr std::tuple XmlTag = { u
"identity", QXmpp::Private::ns_disco_info };
130 static std::optional<QXmppDiscoIdentity> fromDom(
const QDomElement &el);
131 void toXml(QXmlStreamWriter *writer)
const;
146 explicit QXmppDiscoInfo(
const QString &node,
const QList<QXmppDiscoIdentity> &identities = {},
const QList<QString> &features = {},
const QList<QXmppDataForm> &dataForms = {})
147 : m_node(node), m_identities(identities), m_features(features), m_dataForms(dataForms) { }
150 const QString &
node()
const {
return m_node; }
152 void setNode(
const QString &newNode) { m_node = newNode; }
155 const QList<QXmppDiscoIdentity> &
identities()
const {
return m_identities; }
157 void setIdentities(
const QList<QXmppDiscoIdentity> &newIdentities) { m_identities = newIdentities; }
160 const QList<QString> &
features()
const {
return m_features; }
162 void setFeatures(
const QList<QString> &newFeatures) { m_features = newFeatures; }
165 const QList<QXmppDataForm> &
dataForms()
const {
return m_dataForms; }
168 void setDataForms(
const QList<QXmppDataForm> &newDataForms) { m_dataForms = newDataForms; }
169 std::optional<QXmppDataForm> dataForm(QStringView formType)
const;
172 template<QXmpp::Private::DataFormConvertible FormType>
175 if (
auto form = dataForm(QXmpp::Private::DataFormType<FormType>)) {
176 if (
auto result = FormType::fromDataForm(*form)) {
183 QByteArray calculateEntityCapabilitiesHash()
const;
186 static constexpr std::tuple XmlTag = { u
"query", QXmpp::Private::ns_disco_info };
187 static std::optional<QXmppDiscoInfo> fromDom(
const QDomElement &el);
188 void toXml(QXmlStreamWriter *writer)
const;
193 QList<QXmppDiscoIdentity> m_identities;
194 QList<QString> m_features;
195 QList<QXmppDataForm> m_dataForms;
198#if QXMPP_DEPRECATED_SINCE(1, 12)
207 [[deprecated(
"Use QXmppDiscoInfo/Items")]]
216 QStringList features()
const;
217 void setFeatures(
const QStringList &features);
219 QList<QXmppDiscoIdentity> identities()
const;
220 void setIdentities(
const QList<QXmppDiscoIdentity> &identities);
222 QList<QXmppDiscoItem> items()
const;
223 void setItems(
const QList<QXmppDiscoItem> &items);
225 [[deprecated(
"Use dataForms() instead")]]
227 [[deprecated(
"Use setDataForms() instead")]]
230 const QList<QXmppDataForm> &dataForms()
const;
231 void setDataForms(
const QList<QXmppDataForm> &dataForms);
232 std::optional<QXmppDataForm> dataForm(QStringView formType)
const;
236 template<QXmpp::Private::DataFormConvertible FormT>
239 if (
auto form = dataForm(QXmpp::Private::DataFormType<FormT>)) {
240 if (
auto result = FormT::fromDataForm(*form)) {
247 QString queryNode()
const;
248 void setQueryNode(
const QString &node);
250 enum QueryType queryType()
const;
251 void setQueryType(
enum QueryType type);
253 QByteArray verificationString()
const;
256 [[deprecated(
"Use QXmpp::isIqElement()")]]
257 static bool isDiscoveryIq(
const QDomElement &element);
258 static bool checkIqType(
const QString &tagName,
const QString &xmlNamespace);
261 void parseElementFromChild(
const QDomElement &element)
override;
262 void toXmlElementFromChild(QXmlStreamWriter *writer)
const override;
266 QSharedDataPointer<QXmppDiscoveryIqPrivate> d;
Definition QXmppDiscoveryIq.h:83
void setName(const QString &newName)
Sets the human-readable name of the service.
Definition QXmppDiscoveryIq.h:111
void setType(const QString &newType)
Definition QXmppDiscoveryIq.h:106
QXmppDiscoIdentity(const QString &category, const QString &type={}, const QString &name={}, const QString &lang={})
Default constructor.
Definition QXmppDiscoveryIq.h:87
const QString & type() const
Definition QXmppDiscoveryIq.h:100
void setLanguage(const QString &newLanguage)
Definition QXmppDiscoveryIq.h:126
const QString & name() const
Returns the human-readable name of the service.
Definition QXmppDiscoveryIq.h:109
const QString & language() const
Definition QXmppDiscoveryIq.h:119
const QString & category() const
Returns the category of the identity.
Definition QXmppDiscoveryIq.h:91
void setCategory(const QString &newCategory)
Sets the category of the identity.
Definition QXmppDiscoveryIq.h:93
Definition QXmppDiscoveryIq.h:142
std::optional< FormType > dataForm() const
Looks for a form with the form type of FormType and parses it if found.
Definition QXmppDiscoveryIq.h:173
void setNode(const QString &newNode)
Sets the node of the query.
Definition QXmppDiscoveryIq.h:152
void setDataForms(const QList< QXmppDataForm > &newDataForms)
Definition QXmppDiscoveryIq.h:168
QXmppDiscoInfo(const QString &node, const QList< QXmppDiscoIdentity > &identities={}, const QList< QString > &features={}, const QList< QXmppDataForm > &dataForms={})
Default constructor.
Definition QXmppDiscoveryIq.h:146
const QString & node() const
Returns the node of the query.
Definition QXmppDiscoveryIq.h:150
const QList< QXmppDataForm > & dataForms() const
Returns additional data forms as specified in XEP-0128: Service Discovery Extensions.
Definition QXmppDiscoveryIq.h:165
const QList< QXmppDiscoIdentity > & identities() const
Returns the identities of the entity.
Definition QXmppDiscoveryIq.h:155
void setFeatures(const QList< QString > &newFeatures)
Sets the features supported by the entity.
Definition QXmppDiscoveryIq.h:162
const QList< QString > & features() const
Returns the features supported by the entity.
Definition QXmppDiscoveryIq.h:160
void setIdentities(const QList< QXmppDiscoIdentity > &newIdentities)
Sets the identities of the entity.
Definition QXmppDiscoveryIq.h:157
Definition QXmppDiscoveryIq.h:19
void setNode(const QString &newNode)
Sets the node for querying the information.
Definition QXmppDiscoveryIq.h:39
void setJid(const QString &newJid)
Sets the JID of the item.
Definition QXmppDiscoveryIq.h:29
const QString & jid() const
Returns the JID of the item.
Definition QXmppDiscoveryIq.h:27
void setName(const QString &newName)
Sets the name of the item.
Definition QXmppDiscoveryIq.h:34
const QString & node() const
Returns the node for querying the information.
Definition QXmppDiscoveryIq.h:37
const QString & name() const
Returns the name of the item.
Definition QXmppDiscoveryIq.h:32
QXmppDiscoItem(const QString &jid, const QString &name={}, const QString &node={})
Default constructor.
Definition QXmppDiscoveryIq.h:23
Definition QXmppDiscoveryIq.h:54
void setNode(const QString &newNode)
Sets the node of the query.
Definition QXmppDiscoveryIq.h:69
void setItems(const QList< QXmppDiscoItem > &newItems)
Sets the items.
Definition QXmppDiscoveryIq.h:64
const QString & node() const
Returns the node of the query.
Definition QXmppDiscoveryIq.h:67
QXmppDiscoItems(const QString &node, const QList< QXmppDiscoItem > &items={})
Default constructor.
Definition QXmppDiscoveryIq.h:58
const QList< QXmppDiscoItem > & items() const
Returns the items.
Definition QXmppDiscoveryIq.h:62
Definition QXmppDiscoveryIq.h:200
std::optional< FormT > dataForm() const
Definition QXmppDiscoveryIq.h:237
QueryType
Definition QXmppDiscoveryIq.h:211
The QXmppIq class is the base class for all IQs.
Definition QXmppIq.h:23