00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef QXMPPMUCMANAGER_H
00025 #define QXMPPMUCMANAGER_H
00026
00027 #include <QMap>
00028
00029 #include "QXmppClientExtension.h"
00030 #include "QXmppMucIq.h"
00031 #include "QXmppPresence.h"
00032
00033 class QXmppDataForm;
00034 class QXmppMessage;
00035 class QXmppMucAdminIq;
00036 class QXmppMucOwnerIq;
00037
00050
00051 class QXmppMucManager : public QXmppClientExtension
00052 {
00053 Q_OBJECT
00054
00055 public:
00056 bool joinRoom(const QString &roomJid, const QString &nickName, const QString &password = QString());
00057 bool leaveRoom(const QString &roomJid);
00058
00059 bool requestRoomConfiguration(const QString &roomJid);
00060 bool setRoomConfiguration(const QString &roomJid, const QXmppDataForm &form);
00061
00062 bool requestRoomPermissions(const QString &roomJid);
00063
00064 bool setRoomSubject(const QString &roomJid, const QString &subject);
00065
00066 bool sendInvitation(const QString &roomJid, const QString &jid, const QString &reason);
00067 bool sendMessage(const QString &roomJid, const QString &text);
00068
00069 QMap<QString, QXmppPresence> roomParticipants(const QString& bareJid) const;
00070
00072 QStringList discoveryFeatures() const;
00073 bool handleStanza(const QDomElement &element);
00075
00076 signals:
00078 void invitationReceived(const QString &roomJid, const QString &inviter, const QString &reason);
00079
00081 void roomConfigurationReceived(const QString &roomJid, const QXmppDataForm &configuration);
00082
00084 void roomPermissionsReceived(const QString &roomJid, const QList<QXmppMucAdminIq::Item> &permissions);
00085
00089 void roomParticipantChanged(const QString &roomJid, const QString &nickName);
00090
00091 protected:
00093 void setClient(QXmppClient* client);
00095
00096 private slots:
00097 void messageReceived(const QXmppMessage &message);
00098 void mucAdminIqReceived(const QXmppMucAdminIq &iq);
00099 void mucOwnerIqReceived(const QXmppMucOwnerIq &iq);
00100 void presenceReceived(const QXmppPresence &presence);
00101
00102 private:
00103 QMap<QString, QString> m_nickNames;
00104 QMap<QString, QMap<QString, QXmppPresence> > m_participants;
00105 };
00106
00107 #endif