QXmpp  Version: 1.15.1
QXmppRosterIq.h
1 // SPDX-FileCopyrightText: 2009 Manjeet Dahiya <manjeetdahiya@gmail.com>
2 // SPDX-FileCopyrightText: 2010 Jeremy LainĂ© <jeremy.laine@m4x.org>
3 //
4 // SPDX-License-Identifier: LGPL-2.1-or-later
5 
6 #ifndef QXMPPROSTERIQ_H
7 #define QXMPPROSTERIQ_H
8 
9 #include "QXmppConstants_p.h"
10 #include "QXmppIq.h"
11 
12 #include <QList>
13 #include <QSet>
14 #include <QSharedDataPointer>
15 
16 namespace QXmpp::Private {
17 struct RosterData;
18 }
19 
20 class QXmppRosterIqPrivate;
21 
27 class QXMPP_EXPORT QXmppRosterIq : public QXmppIq
28 {
29 public:
30  class ItemPrivate;
31 
33  class QXMPP_EXPORT Item
34  {
35  public:
38  None = 0,
39  From = 1,
42  To = 2,
44  Both = 3,
46  Remove = 4,
48  NotSet = 8
49  };
50 
51  Item();
52  Item(const Item &other);
53  Item(Item &&);
54  ~Item();
55 
56  Item &operator=(const Item &other);
57  Item &operator=(Item &&);
58 
59  QString bareJid() const;
60  QSet<QString> groups() const;
61  QString name() const;
62  QString subscriptionStatus() const;
63  SubscriptionType subscriptionType() const;
64  bool isApproved() const;
65 
66  void setBareJid(const QString &);
67  void setGroups(const QSet<QString> &);
68  void setName(const QString &);
69  void setSubscriptionStatus(const QString &);
70  void setSubscriptionType(SubscriptionType);
71  void setIsApproved(bool);
72 
73  // XEP-0405: Mediated Information eXchange (MIX): Participant Server Requirements
74  bool isMixChannel() const;
75  void setIsMixChannel(bool);
76 
77  QString mixParticipantId() const;
78  void setMixParticipantId(const QString &);
79 
81  static constexpr std::tuple XmlTag = { u"item", QXmpp::Private::ns_roster };
82  void parse(const QDomElement &element);
83  void toXml(QXmlStreamWriter *writer) const;
85 
86  private:
87  friend struct QXmpp::Private::RosterData;
88 
89  void toXml(QXmlStreamWriter *writer, bool external) const;
90 
91  QString getSubscriptionTypeStr() const;
92  void setSubscriptionTypeFromStr(const QString &);
93 
94  QSharedDataPointer<ItemPrivate> d;
95  };
96 
97  QXmppRosterIq();
100  ~QXmppRosterIq() override;
101 
102  QXmppRosterIq &operator=(const QXmppRosterIq &);
103  QXmppRosterIq &operator=(QXmppRosterIq &&);
104 
105  QString version() const;
106  void setVersion(const QString &);
107 
108  QList<Item> items() const;
109  void setItems(const QList<Item> &);
110  void addItem(const Item &);
111 
112  // XEP-0405: Mediated Information eXchange (MIX): Participant Server Requirements
113  bool mixAnnotate() const;
114  void setMixAnnotate(bool);
115 
117  static constexpr std::tuple PayloadXmlTag = { u"query", QXmpp::Private::ns_roster };
118  [[deprecated("Use QXmpp::isIqElement()")]]
119  static bool isRosterIq(const QDomElement &element);
121 
122 protected:
124  void parseElementFromChild(const QDomElement &element) override;
125  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
127 
128 private:
129  QSharedDataPointer<QXmppRosterIqPrivate> d;
130 };
131 
132 #endif // QXMPPROSTERIQ_H
The QXmppRosterIq class represents a roster IQ.
Definition: QXmppRosterIq.h:27
SubscriptionType
An enumeration for type of subscription with the bareJid in the roster.
Definition: QXmppRosterIq.h:37
The QXmppIq class is the base class for all IQs.
Definition: QXmppIq.h:22
Definition: Algorithms.h:14
The QXmppRosterIq::Item class represents a roster entry.
Definition: QXmppRosterIq.h:33