QXmpp Version: 1.14.4
Loading...
Searching...
No Matches
QXmppMucManagerV2.h
1// SPDX-FileCopyrightText: 2025 Linus Jahn <lnj@kaidan.im>
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4
5#ifndef QXMPPMUCMANAGERV2_H
6#define QXMPPMUCMANAGERV2_H
7
8#include "QXmppClientExtension.h"
9#include "QXmppPubSubEventHandler.h"
10#include "QXmppTask.h"
11
12#include <variant>
13
14namespace QXmpp::Private {
15struct Bookmarks2Conference;
16struct Bookmarks2ConferenceItem;
17} // namespace QXmpp::Private
18
19class QXmppError;
20class QXmppMucBookmarkPrivate;
21
22class QXMPP_EXPORT QXmppMucBookmark
23{
24public:
25 QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppMucBookmark)
26
28 QXmppMucBookmark(const QString &jid, const QString &name, bool autojoin, const QString &nick, const QString &password);
29 QXmppMucBookmark(const QString &jid, QXmpp::Private::Bookmarks2Conference conference);
30
31 const QString &jid() const;
32 void setJid(const QString &jid);
33 const QString &name() const;
34 void setName(const QString &name);
35 const QString &nick() const;
36 void setNick(const QString &nick);
37 const QString &password() const;
38 void setPassword(const QString &password);
39 bool autojoin() const;
40 void setAutojoin(bool autojoin);
41
42private:
43 friend class QXmppMucManagerV2Private;
44 QSharedDataPointer<QXmppMucBookmarkPrivate> d;
45};
46
47Q_DECLARE_METATYPE(QXmppMucBookmark);
48
49struct QXmppMucManagerV2Private;
50
52{
53 Q_OBJECT
54
55public:
56 struct BookmarkChange {
57 QXmppMucBookmark oldBookmark;
58 QXmppMucBookmark newBookmark;
59 };
60
61 struct Avatar {
62 QString contentType;
63 QByteArray data;
64 };
65
68
69 QStringList discoveryFeatures() const override;
70
71 const std::optional<QList<QXmppMucBookmark>> &bookmarks() const;
72 Q_SIGNAL void bookmarksReset();
73 Q_SIGNAL void bookmarksAdded(const QList<QXmppMucBookmark> &newBookmarks);
74 Q_SIGNAL void bookmarksChanged(const QList<QXmppMucManagerV2::BookmarkChange> &bookmarkUpdates);
75 Q_SIGNAL void bookmarksRemoved(const QList<QString> &removedBookmarkJids);
76
77 QXmppTask<QXmpp::Result<>> setBookmark(QXmppMucBookmark &&bookmark);
78 QXmppTask<QXmpp::Result<>> removeBookmark(const QString &jid);
79
80 QXmppTask<QXmpp::Result<>> setRoomAvatar(const QString &jid, const Avatar &avatar);
81 QXmppTask<QXmpp::Result<>> removeRoomAvatar(const QString &jid);
82 QXmppTask<QXmpp::Result<std::optional<Avatar>>> fetchRoomAvatar(const QString &jid);
83
84 bool handlePubSubEvent(const QDomElement &element, const QString &pubSubService, const QString &nodeName) override;
85
86protected:
87 void onRegistered(QXmppClient *client) override;
88 void onUnregistered(QXmppClient *client) override;
89
90private:
91 void onConnected();
92
93 friend class QXmppMucManagerV2Private;
94 friend class tst_QXmppMuc;
95 const std::unique_ptr<QXmppMucManagerV2Private> d;
96};
97
98Q_DECLARE_METATYPE(QXmppMucManagerV2::BookmarkChange);
99
100#endif // QXMPPMUCMANAGERV2_H
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition QXmppClientExtension.h:32
Main class for starting and managing connections to XMPP servers.
Definition QXmppClient.h:62
Definition QXmppMucManagerV2.h:23
XEP-0045: Multi-User Chat Manager with support for XEP-0402: PEP Native Bookmarks.
Definition QXmppMucManagerV2.h:52
Q_SIGNAL void bookmarksRemoved(const QList< QString > &removedBookmarkJids)
Q_SIGNAL void bookmarksChanged(const QList< QXmppMucManagerV2::BookmarkChange > &bookmarkUpdates)
Q_SIGNAL void bookmarksReset()
Q_SIGNAL void bookmarksAdded(const QList< QXmppMucBookmark > &newBookmarks)
Definition QXmppPubSubEventHandler.h:15
Definition QXmppTask.h:330
Definition QXmppError.h:17