QXmpp  Version: 1.10.4
QXmppMixConfigItem.h
1 // SPDX-FileCopyrightText: 2023 Melvin Keskin <melvo@olomono.de>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPMIXCONFIGITEM_H
6 #define QXMPPMIXCONFIGITEM_H
7 
8 #include "QXmppDataForm.h"
9 #include "QXmppPubSubBaseItem.h"
10 
11 class QXmppMixConfigItemPrivate;
12 
13 class QXMPP_EXPORT QXmppMixConfigItem : public QXmppPubSubBaseItem
14 {
15 public:
16  enum class Role {
17  Owner,
18  Administrator,
19  Participant,
20  Allowed,
21  Anyone,
22  Nobody,
23  };
24 
25  enum class Node {
26  AllowedJids = 1 << 0,
27  AvatarData = 1 << 1,
28  AvatarMetadata = 1 << 2,
29  BannedJids = 1 << 3,
30  Configuration = 1 << 4,
31  Information = 1 << 5,
32  JidMap = 1 << 6,
33  Messages = 1 << 7,
34  Participants = 1 << 8,
35  Presence = 1 << 9,
36  };
37  Q_DECLARE_FLAGS(Nodes, Node)
38 
42  ~QXmppMixConfigItem() override;
43 
46 
47  QXmppDataForm::Type formType() const;
48  void setFormType(QXmppDataForm::Type formType);
49 
50  QString lastEditorJid() const;
51  void setLastEditorJid(const QString &lastEditorJid);
52 
53  QStringList ownerJids() const;
54  void setOwnerJids(const QStringList &ownerJids);
55 
56  QStringList administratorJids() const;
57  void setAdministratorJids(const QStringList &administratorJids);
58 
59  QDateTime channelDeletion() const;
60  void setChannelDeletion(const QDateTime &channelDeletion);
61 
62  Nodes nodes() const;
63  void setNodes(Nodes nodes);
64 
65  std::optional<Role> messagesSubscribeRole() const;
66  void setMessagesSubscribeRole(std::optional<Role> messagesSubscribeRole);
67 
68  std::optional<Role> messagesRetractRole() const;
69  void setMessagesRetractRole(std::optional<Role> messagesRetractRole);
70 
71  std::optional<Role> presenceSubscribeRole() const;
72  void setPresenceSubscribeRole(std::optional<Role> presenceSubscribeRole);
73 
74  std::optional<Role> participantsSubscribeRole() const;
75  void setParticipantsSubscribeRole(std::optional<Role> participantsSubscribeRole);
76 
77  std::optional<Role> informationSubscribeRole() const;
78  void setInformationSubscribeRole(std::optional<Role> informationSubscribeRole);
79 
80  std::optional<Role> informationUpdateRole() const;
81  void setInformationUpdateRole(std::optional<Role> informationUpdateRole);
82 
83  std::optional<Role> allowedJidsSubscribeRole() const;
84  void setAllowedJidsSubscribeRole(std::optional<Role> allowedJidsSubscribeRole);
85 
86  std::optional<Role> bannedJidsSubscribeRole() const;
87  void setBannedJidsSubscribeRole(std::optional<Role> bannedJidsSubscribeRole);
88 
89  std::optional<Role> configurationReadRole() const;
90  void setConfigurationReadRole(std::optional<Role> configurationReadRole);
91 
92  std::optional<Role> avatarUpdateRole() const;
93  void setAvatarUpdateRole(std::optional<Role> avatarUpdateRole);
94 
95  std::optional<bool> nicknameRequired() const;
96  void setNicknameRequired(std::optional<bool> nicknameRequired);
97 
98  std::optional<bool> presenceRequired() const;
99  void setPresenceRequired(std::optional<bool> presenceRequired);
100 
101  std::optional<bool> onlyParticipantsPermittedToSubmitPresence() const;
102  void setOnlyParticipantsPermittedToSubmitPresence(std::optional<bool> onlyParticipantsPermittedToSubmitPresence);
103 
104  std::optional<bool> ownMessageRetractionPermitted() const;
105  void setOwnMessageRetractionPermitted(std::optional<bool> ownMessageRetractionPermitted);
106 
107  std::optional<bool> invitationsPermitted() const;
108  void setInvitationsPermitted(std::optional<bool> invitationsPermitted);
109 
110  std::optional<bool> privateMessagesPermitted() const;
111  void setPrivateMessagesPermitted(std::optional<bool> privateMessagesPermitted);
112 
113  static bool isItem(const QDomElement &itemElement);
114 
115 protected:
117  void parsePayload(const QDomElement &payloadElement) override;
118  void serializePayload(QXmlStreamWriter *writer) const override;
120 
121 private:
122  QSharedDataPointer<QXmppMixConfigItemPrivate> d;
123 };
124 
125 Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppMixConfigItem::Nodes)
127 // Scoped enums (enum class) are not implicitly converted to int.
128 inline auto qHash(QXmppMixConfigItem::Node key, uint seed) noexcept { return qHash(std::underlying_type_t<QXmppMixConfigItem::Node>(key), seed); }
130 
131 Q_DECLARE_METATYPE(QXmppMixConfigItem)
132 Q_DECLARE_METATYPE(QXmppMixConfigItem::Nodes)
133 
134 #endif // QXMPPMIXCONFIGITEM_H
virtual void serializePayload(QXmlStreamWriter *writer) const
Definition: QXmppPubSubBaseItem.cpp:154
Type
This enum is used to describe a form&#39;s type.
Definition: QXmppDataForm.h:163
static bool isItem(const QDomElement &element)
Definition: QXmppPubSubBaseItem.cpp:134
Definition: QXmppPubSubBaseItem.h:18
Role
Definition: QXmppMixConfigItem.h:16
Node
Definition: QXmppMixConfigItem.h:25
virtual void parsePayload(const QDomElement &payloadElement)
Definition: QXmppPubSubBaseItem.cpp:144
QXmppPubSubBaseItem & operator=(const QXmppPubSubBaseItem &) noexcept
Default assignment operator.
The QXmppMixConfigItem class represents a PubSub item of a MIX channel containing its configuration a...
Definition: QXmppMixConfigItem.h:13