QXmpp Version: 1.15.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;
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 &);
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
98 QXmppRosterIq(const QXmppRosterIq &);
99 QXmppRosterIq(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
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
QXmppIq(QXmppIq::Type type=QXmppIq::Get)
Definition QXmppIq.cpp:39
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
@ From
Definition QXmppRosterIq.h:41
@ Remove
to delete a roster item
Definition QXmppRosterIq.h:47
@ None
Definition QXmppRosterIq.h:38
@ NotSet
the subscription state was not specified
Definition QXmppRosterIq.h:48
@ Both
Definition QXmppRosterIq.h:45
@ To
Definition QXmppRosterIq.h:43
SubscriptionType subscriptionType() const
Definition QXmppRosterIq.cpp:268
bool isApproved() const
Definition QXmppRosterIq.cpp:288
QString mixParticipantId() const
Definition QXmppRosterIq.cpp:373
QString bareJid() const
Definition QXmppRosterIq.cpp:186
void setMixParticipantId(const QString &)
Definition QXmppRosterIq.cpp:383
void setName(const QString &)
Definition QXmppRosterIq.cpp:235
Item()
Definition QXmppRosterIq.cpp:166
void setIsApproved(bool)
Definition QXmppRosterIq.cpp:302
bool isMixChannel() const
Definition QXmppRosterIq.cpp:353
Item(Item &&)
Default move-constructor.
QSet< QString > groups() const
Definition QXmppRosterIq.cpp:205
Item & operator=(const Item &other)
Default assignment operator.
void setIsMixChannel(bool)
Definition QXmppRosterIq.cpp:363
void setSubscriptionType(SubscriptionType)
Definition QXmppRosterIq.cpp:278
void setBareJid(const QString &)
Definition QXmppRosterIq.cpp:195
Item & operator=(Item &&)
Default assignment operator.
void setGroups(const QSet< QString > &)
Definition QXmppRosterIq.cpp:215
Item(const Item &other)
Default copy-constructor.
QString subscriptionStatus() const
Definition QXmppRosterIq.cpp:247
void setSubscriptionStatus(const QString &)
Definition QXmppRosterIq.cpp:259
QString name() const
Definition QXmppRosterIq.cpp:225
The QXmppRosterIq class represents a roster IQ.
Definition QXmppRosterIq.h:28
QXmppRosterIq(const QXmppRosterIq &)
Default copy-constructor.
QXmppRosterIq & operator=(const QXmppRosterIq &)
Default assignment operator.
void setMixAnnotate(bool)
Definition QXmppRosterIq.cpp:113
void setVersion(const QString &)
Definition QXmppRosterIq.cpp:92
QXmppRosterIq & operator=(QXmppRosterIq &&)
Default move-assignment operator.
QList< Item > items() const
Definition QXmppRosterIq.cpp:58
QString version() const
Definition QXmppRosterIq.cpp:80
void addItem(const Item &)
Definition QXmppRosterIq.cpp:50
void setItems(const QList< Item > &)
Definition QXmppRosterIq.cpp:68
QXmppRosterIq(QXmppRosterIq &&)
Default move-constructor.
bool mixAnnotate() const
Definition QXmppRosterIq.cpp:102