QXmpp Version: 1.12.0
Loading...
Searching...
No Matches
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
16namespace QXmpp::Private {
17struct RosterData;
18}
19
20class QXmppRosterIqPrivate;
21
27class QXMPP_EXPORT QXmppRosterIq : public QXmppIq
28{
29public:
30 class ItemPrivate;
31
33 class QXMPP_EXPORT Item
34 {
35 public:
38 None = 0,
41 From = 1,
43 To = 2,
45 Both = 3,
47 Remove = 4,
48 NotSet = 8
49 };
50
51 Item();
52 Item(const Item &other);
54 ~Item();
55
56 Item &operator=(const Item &other);
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
100 ~QXmppRosterIq() override;
101
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
122protected:
124 void parseElementFromChild(const QDomElement &element) override;
125 void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
127
128private:
129 QSharedDataPointer<QXmppRosterIqPrivate> d;
130};
131
132#endif // QXMPPROSTERIQ_H
The QXmppIq class is the base class for all IQs.
Definition QXmppIq.h:23
virtual void parse(const QDomElement &)=0
virtual void toXml(QXmlStreamWriter *writer) const =0
The QXmppRosterIq::Item class represents a roster entry.
Definition QXmppRosterIq.h:34
SubscriptionType
An enumeration for type of subscription with the bareJid in the roster.
Definition QXmppRosterIq.h:37
Item(Item &&)
Default move-constructor.
Item & operator=(const Item &other)
Default assignment operator.
Item & operator=(Item &&)
Default assignment operator.
Item(const Item &other)
Default copy-constructor.
The QXmppRosterIq class represents a roster IQ.
Definition QXmppRosterIq.h:28
QXmppRosterIq(const QXmppRosterIq &)
Default copy-constructor.
QXmppRosterIq & operator=(const QXmppRosterIq &)
Default assignment operator.
QXmppRosterIq & operator=(QXmppRosterIq &&)
Default move-assignment operator.
QXmppRosterIq(QXmppRosterIq &&)
Default move-constructor.