5#ifndef QXMPPPUBSUBNODECONFIG_H
6#define QXMPPPUBSUBNODECONFIG_H
8#include "QXmppDataForm.h"
9#include "QXmppDataFormBase.h"
13class QXmppPubSubNodeConfigPrivate;
20 using ItemLimit = std::variant<Unset, uint64_t, Max>;
22 enum AccessModel : uint8_t {
30 enum PublishModel : uint8_t {
36 enum class ChildAssociationPolicy : uint8_t {
42 enum ItemPublisher : uint8_t {
47 enum NodeType : uint8_t {
52 enum NotificationType : uint8_t {
57 enum SendLastItemType : uint8_t {
60 OnSubscriptionAndPresence
65 QXmppPubSubNodeConfig();
66 QXmppPubSubNodeConfig(
const QXmppPubSubNodeConfig &);
67 QXmppPubSubNodeConfig(QXmppPubSubNodeConfig &&);
68 ~QXmppPubSubNodeConfig()
override;
70 QXmppPubSubNodeConfig &operator=(
const QXmppPubSubNodeConfig &);
71 QXmppPubSubNodeConfig &operator=(QXmppPubSubNodeConfig &&);
73 std::optional<AccessModel> accessModel()
const;
74 void setAccessModel(std::optional<AccessModel> accessModel);
76 QString bodyXslt()
const;
77 void setBodyXslt(
const QString &bodyXslt);
79 std::optional<ChildAssociationPolicy> childAssociationPolicy()
const;
80 void setChildAssociationPolicy(std::optional<ChildAssociationPolicy> childAssociationPolicy);
82 QStringList childAssociationAllowlist()
const;
83 void setChildAssociationAllowlist(
const QStringList &childAssociationWhitelist);
85 QStringList childNodes()
const;
86 void setChildNodes(
const QStringList &childNodes);
88 std::optional<quint32> childNodesMax()
const;
89 void setChildNodesMax(std::optional<quint32> childNodesMax);
91 QStringList collections()
const;
92 void setCollections(
const QStringList &collections);
94 QStringList contactJids()
const;
95 void setContactJids(
const QStringList &contactJids);
97 QString dataFormXslt()
const;
98 void setDataFormXslt(
const QString &dataFormXslt);
100 std::optional<bool> notificationsEnabled()
const;
101 void setNotificationsEnabled(std::optional<bool> notificationsEnabled);
103 std::optional<bool> includePayloads()
const;
104 void setIncludePayloads(std::optional<bool> includePayloads);
106 QString description()
const;
107 void setDescription(
const QString &description);
109 std::optional<quint32> itemExpiry()
const;
110 void setItemExpiry(std::optional<quint32> itemExpiry);
112 std::optional<ItemPublisher> notificationItemPublisher()
const;
113 void setNotificationItemPublisher(std::optional<ItemPublisher> notificationItemPublisher);
115 QString language()
const;
116 void setLanguage(
const QString &language);
118 ItemLimit maxItems()
const;
119 void setMaxItems(ItemLimit maxItems);
120 inline void resetMaxItems() { setMaxItems(Unset()); }
122 std::optional<quint32> maxPayloadSize()
const;
123 void setMaxPayloadSize(std::optional<quint32> maxPayloadSize);
125 std::optional<NodeType> nodeType()
const;
126 void setNodeType(std::optional<NodeType> nodeType);
128 std::optional<QXmppPubSubNodeConfig::NotificationType> notificationType()
const;
129 void setNotificationType(std::optional<QXmppPubSubNodeConfig::NotificationType> notificationType);
131 std::optional<bool> configNotificationsEnabled()
const;
132 void setConfigNotificationsEnabled(std::optional<bool> configNotificationsEnabled);
134 std::optional<bool> deleteNotificationsEnabled()
const;
135 void setDeleteNotificationsEnabled(std::optional<bool> nodeDeleteNotificationsEnabled);
137 std::optional<bool> retractNotificationsEnabled()
const;
138 void setRetractNotificationsEnabled(std::optional<bool> retractNotificationsEnabled);
140 std::optional<bool> subNotificationsEnabled()
const;
141 void setSubNotificationsEnabled(std::optional<bool> subNotificationsEnabled);
143 std::optional<bool> persistItems()
const;
144 void setPersistItems(std::optional<bool> persistItems);
146 std::optional<bool> presenceBasedNotifications()
const;
147 void setPresenceBasedNotifications(std::optional<bool> presenceBasedNotifications);
149 std::optional<PublishModel> publishModel()
const;
150 void setPublishModel(std::optional<PublishModel> publishModel);
152 std::optional<bool> purgeWhenOffline()
const;
153 void setPurgeWhenOffline(std::optional<bool> purgeWhenOffline);
155 QStringList allowedRosterGroups()
const;
156 void setAllowedRosterGroups(
const QStringList &allowedRosterGroups);
158 std::optional<SendLastItemType> sendLastItem()
const;
159 void setSendLastItem(std::optional<SendLastItemType> sendLastItem);
161 std::optional<bool> temporarySubscriptions()
const;
162 void setTemporarySubscriptions(std::optional<bool> temporarySubscriptions);
164 std::optional<bool> allowSubscriptions()
const;
165 void setAllowSubscriptions(std::optional<bool> allowSubscriptions);
167 QString title()
const;
168 void setTitle(
const QString &title);
170 QString payloadType()
const;
171 void setPayloadType(
const QString &payloadType);
179 QSharedDataPointer<QXmppPubSubNodeConfigPrivate> d;
182class QXMPP_EXPORT QXmppPubSubPublishOptions :
public QXmppPubSubNodeConfig
191Q_DECLARE_METATYPE(QXmppPubSubNodeConfig);
192Q_DECLARE_METATYPE(QXmppPubSubPublishOptions);