QXmpp  Version: 1.15.1
QXmppMucIq.h
1 // SPDX-FileCopyrightText: 2010 Jeremy LainĂ© <jeremy.laine@m4x.org>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPMUCIQ_H
6 #define QXMPPMUCIQ_H
7 
8 #include "QXmppDataForm.h"
9 #include "QXmppIq.h"
10 
18 class QXMPP_EXPORT QXmppMucItem
19 {
20 public:
22  enum Affiliation {
23  UnspecifiedAffiliation,
24  OutcastAffiliation,
25  NoAffiliation,
26  MemberAffiliation,
27  AdminAffiliation,
28  OwnerAffiliation
29  };
30 
32  enum Role {
33  UnspecifiedRole,
34  NoRole,
35  VisitorRole,
36  ParticipantRole,
37  ModeratorRole
38  };
39 
40  QXmppMucItem();
41  bool isNull() const;
42 
43  QString actor() const;
44  void setActor(const QString &actor);
45 
46  Affiliation affiliation() const;
47  void setAffiliation(Affiliation affiliation);
48 
49  QString jid() const;
50  void setJid(const QString &jid);
51 
52  QString nick() const;
53  void setNick(const QString &nick);
54 
55  QString reason() const;
56  void setReason(const QString &reason);
57 
58  Role role() const;
59  void setRole(Role role);
60 
62  static constexpr std::tuple XmlTag = { u"item", QXmpp::Private::ns_muc_admin };
63  void parse(const QDomElement &element);
64  void toXml(QXmlStreamWriter *writer) const;
66 
67 private:
68  QString m_actor;
69  Affiliation m_affiliation;
70  QString m_jid;
71  QString m_nick;
72  QString m_reason;
73  Role m_role;
74 };
75 
84 class QXMPP_EXPORT QXmppMucAdminIq : public QXmppIq
85 {
86 public:
87  QList<QXmppMucItem> items() const;
88  void setItems(const QList<QXmppMucItem> &items);
89 
91  static bool isMucAdminIq(const QDomElement &element);
93 
94 protected:
96  void parseElementFromChild(const QDomElement &element) override;
97  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
99 
100 private:
101  QList<QXmppMucItem> m_items;
102 };
103 
112 class QXMPP_EXPORT QXmppMucOwnerIq : public QXmppIq
113 {
114 public:
115  QXmppDataForm form() const;
116  void setForm(const QXmppDataForm &form);
117 
119  static bool isMucOwnerIq(const QDomElement &element);
121 
122 protected:
124  void parseElementFromChild(const QDomElement &element) override;
125  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
127 
128 private:
129  QXmppDataForm m_form;
130 };
131 
132 #endif
Role
This enum is used to represent short-lived permissions in a room (roles).
Definition: QXmppMucIq.h:32
Affiliation
This enum is used to represent long-lived permissions in a room (affiliations).
Definition: QXmppMucIq.h:22
The QXmppMucOwnerIq class represents a chat room configuration IQ as defined by XEP-0045: Multi-User ...
Definition: QXmppMucIq.h:112
The QXmppMucItem class represents a chat room "item".
Definition: QXmppMucIq.h:18
Definition: QXmppDataForm.h:27
The QXmppMucAdminIq class represents a chat room administration IQ as defined by XEP-0045: Multi-User...
Definition: QXmppMucIq.h:84
The QXmppIq class is the base class for all IQs.
Definition: QXmppIq.h:22