QXmpp Version: 1.10.3
Loading...
Searching...
No Matches
QXmppMucManager.h
1// SPDX-FileCopyrightText: 2010 Jeremy Lainé <jeremy.laine@m4x.org>
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4
5#ifndef QXMPPMUCMANAGER_H
6#define QXMPPMUCMANAGER_H
7
8#include "QXmppClientExtension.h"
9#include "QXmppMucIq.h"
10#include "QXmppPresence.h"
11
12class QXmppDataForm;
14class QXmppMessage;
15class QXmppMucManagerPrivate;
16class QXmppMucRoom;
17class QXmppMucRoomPrivate;
18
41class QXMPP_EXPORT QXmppMucManager : public QXmppClientExtension
42{
43 Q_OBJECT
45 Q_PROPERTY(QList<QXmppMucRoom *> rooms READ rooms NOTIFY roomAdded)
46
47public:
49 ~QXmppMucManager() override;
50
51 QXmppMucRoom *addRoom(const QString &roomJid);
52
53 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
55 QList<QXmppMucRoom *> rooms() const;
56
58 QStringList discoveryFeatures() const override;
59 bool handleStanza(const QDomElement &element) override;
61
62Q_SIGNALS:
64 void invitationReceived(const QString &roomJid, const QString &inviter, const QString &reason);
65
68
69protected:
71 void onRegistered(QXmppClient *client) override;
72 void onUnregistered(QXmppClient *client) override;
74
75private Q_SLOTS:
76 void _q_messageReceived(const QXmppMessage &message);
77 void _q_roomDestroyed(QObject *object);
78
79private:
80 const std::unique_ptr<QXmppMucManagerPrivate> d;
81};
82
87
88class QXMPP_EXPORT QXmppMucRoom : public QObject
89{
90 Q_OBJECT
91 Q_FLAGS(Action Actions)
92
93
94 Q_PROPERTY(QXmppMucRoom::Actions allowedActions READ allowedActions NOTIFY allowedActionsChanged)
96 Q_PROPERTY(bool isJoined READ isJoined NOTIFY isJoinedChanged)
98 Q_PROPERTY(QString jid READ jid CONSTANT)
100 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
102 Q_PROPERTY(QString nickName READ nickName WRITE setNickName NOTIFY nickNameChanged)
104 Q_PROPERTY(QStringList participants READ participants NOTIFY participantsChanged)
106 Q_PROPERTY(QString password READ password WRITE setPassword)
108 Q_PROPERTY(QString subject READ subject WRITE setSubject NOTIFY subjectChanged)
109
110public:
119 Q_DECLARE_FLAGS(Actions, Action)
120
121 ~QXmppMucRoom() override;
122
123 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
125 Actions allowedActions() const;
126
127 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
129 bool isJoined() const;
130
131 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
133 QString jid() const;
134
135 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
141 QString name() const;
142
143 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
145 QString nickName() const;
146 void setNickName(const QString &nickName);
147
148 Q_INVOKABLE QString participantFullJid(const QString &jid) const;
149 QXmppPresence participantPresence(const QString &jid) const;
150
151 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
157 QStringList participants() const;
158
159 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
161 QString password() const;
162 void setPassword(const QString &password);
163
164 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
166 QString subject() const;
167 void setSubject(const QString &subject);
168
169Q_SIGNALS:
171 void allowedActionsChanged(QXmppMucRoom::Actions actions);
172
174 void configurationReceived(const QXmppDataForm &configuration);
175
178
180 void joined();
181
183 void kicked(const QString &jid, const QString &reason);
184
186 void isJoinedChanged();
188
190 void left();
191
193 void messageReceived(const QXmppMessage &message);
194
196 void nameChanged(const QString &name);
197
199 void nickNameChanged(const QString &nickName);
200
202 void participantAdded(const QString &jid);
203
205 void participantChanged(const QString &jid);
206
208 void participantRemoved(const QString &jid);
209
211 void participantsChanged();
213
215 void permissionsReceived(const QList<QXmppMucItem> &permissions);
216
218 void subjectChanged(const QString &subject);
219
220public Q_SLOTS:
221 bool ban(const QString &jid, const QString &reason);
222 bool join();
223 bool kick(const QString &jid, const QString &reason);
224 bool leave(const QString &message = QString());
226 bool requestPermissions();
227 bool setConfiguration(const QXmppDataForm &form);
228 bool setPermissions(const QList<QXmppMucItem> &permissions);
229 bool sendInvitation(const QString &jid, const QString &reason);
230 bool sendMessage(const QString &text);
231
232private Q_SLOTS:
233 void _q_disconnected();
234 void _q_discoveryInfoReceived(const QXmppDiscoveryIq &iq);
235 void _q_messageReceived(const QXmppMessage &message);
236 void _q_presenceReceived(const QXmppPresence &presence);
237
238private:
239 QXmppMucRoom(QXmppClient *client, const QString &jid, QObject *parent);
240 const std::unique_ptr<QXmppMucRoomPrivate> d;
241 friend class QXmppMucManager;
242};
243
244Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppMucRoom::Actions)
245
246#endif
virtual QStringList discoveryFeatures() const
Definition QXmppClientExtension.cpp:22
virtual void onUnregistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:95
virtual void onRegistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:85
QXmppClient * client() const
Definition QXmppClientExtension.cpp:57
QXmppClientExtension()
Definition QXmppClientExtension.cpp:12
virtual bool handleStanza(const QDomElement &stanza)
You need to implement this method to process incoming XMPP stanzas.
Definition client/compat/removed_api.cpp:26
Main class for starting and managing connections to XMPP servers.
Definition QXmppClient.h:62
Definition QXmppDataForm.h:27
Definition QXmppDiscoveryIq.h:18
The QXmppMessage class represents an XMPP message.
Definition QXmppMessage.h:64
QList< QXmppMucRoom * > rooms
List of joined MUC rooms.
Definition QXmppMucManager.h:45
QXmppMucManager()
Definition QXmppMucManager.cpp:43
void invitationReceived(const QString &roomJid, const QString &inviter, const QString &reason)
This signal is emitted when an invitation to a chat room is received.
QXmppMucRoom * addRoom(const QString &roomJid)
Definition QXmppMucManager.cpp:54
void roomAdded(QXmppMucRoom *room)
This signal is emitted when a new room is managed.
The QXmppMucRoom class represents a multi-user chat room as defined by XEP-0045: Multi-User Chat.
Definition QXmppMucManager.h:89
void error(const QXmppStanza::Error &error)
This signal is emitted when an error is encountered.
void participantChanged(const QString &jid)
This signal is emitted when a participant changes.
void messageReceived(const QXmppMessage &message)
This signal is emitted when a message is received.
bool setConfiguration(const QXmppDataForm &form)
Definition QXmppMucManager.cpp:451
void participantRemoved(const QString &jid)
This signal is emitted when a participant leaves the room.
void configurationReceived(const QXmppDataForm &configuration)
This signal is emitted when the configuration form for the room is received.
bool ban(const QString &jid, const QString &reason)
Definition QXmppMucManager.cpp:201
void nickNameChanged(const QString &nickName)
This signal is emitted when your own nick name changes.
QXmppMucRoom::Actions allowedActions
The actions you are allowed to perform on the room.
Definition QXmppMucManager.h:94
void subjectChanged(const QString &subject)
This signal is emitted when the room's subject changes.
QString nickName
Your own nickname.
Definition QXmppMucManager.h:102
bool kick(const QString &jid, const QString &reason)
Definition QXmppMucManager.cpp:258
void setNickName(const QString &nickName)
Definition QXmppMucManager.cpp:342
QString jid
The chat room's bare JID.
Definition QXmppMucManager.h:98
void nameChanged(const QString &name)
This signal is emitted when the room's human-readable name changes.
void participantAdded(const QString &jid)
This signal is emitted when a participant joins the room.
bool sendMessage(const QString &text)
Definition QXmppMucManager.cpp:326
bool setPermissions(const QList< QXmppMucItem > &permissions)
Definition QXmppMucManager.cpp:499
void left()
This signal is emitted once you have left the room.
QString subject
The room's subject.
Definition QXmppMucManager.h:108
QString password
The chat room password.
Definition QXmppMucManager.h:106
bool requestPermissions()
Definition QXmppMucManager.cpp:467
QString name
The chat room's human-readable name.
Definition QXmppMucManager.h:100
QStringList participants
The list of participant JIDs.
Definition QXmppMucManager.h:104
bool sendInvitation(const QString &jid, const QString &reason)
Definition QXmppMucManager.cpp:307
void joined()
This signal is emitted once you have joined the room.
bool requestConfiguration()
Definition QXmppMucManager.cpp:437
bool leave(const QString &message=QString())
Definition QXmppMucManager.cpp:280
void permissionsReceived(const QList< QXmppMucItem > &permissions)
This signal is emitted when the room's permissions are received.
void allowedActionsChanged(QXmppMucRoom::Actions actions)
This signal is emitted when the allowed actions change.
Action
This enum is used to describe chat room actions.
Definition QXmppMucManager.h:112
@ NoAction
no action
Definition QXmppMucManager.h:113
@ SubjectAction
change the room's subject
Definition QXmppMucManager.h:114
@ KickAction
kick users from the room
Definition QXmppMucManager.h:117
@ PermissionsAction
change the room's permissions
Definition QXmppMucManager.h:116
@ ConfigurationAction
change the room's configuration
Definition QXmppMucManager.h:115
void setSubject(const QString &subject)
Definition QXmppMucManager.cpp:421
void setPassword(const QString &password)
Definition QXmppMucManager.cpp:406
bool isJoined
Whether you are currently in the room.
Definition QXmppMucManager.h:96
void kicked(const QString &jid, const QString &reason)
This signal is emitted if you get kicked from the room.
bool join()
Definition QXmppMucManager.cpp:236
The QXmppPresence class represents an XMPP presence stanza.
Definition QXmppPresence.h:22
The Error class represents a stanza error.
Definition QXmppStanza.h:94