QXmppMucManager.h

    00001 /*
    00002  * Copyright (C) 2008-2011 The QXmpp developers
    00003  *
    00004  * Author:
    00005  *  Jeremy Lainé
    00006  *
    00007  * Source:
    00008  *  http://code.google.com/p/qxmpp
    00009  *
    00010  * This file is a part of QXmpp library.
    00011  *
    00012  * This library is free software; you can redistribute it and/or
    00013  * modify it under the terms of the GNU Lesser General Public
    00014  * License as published by the Free Software Foundation; either
    00015  * version 2.1 of the License, or (at your option) any later version.
    00016  *
    00017  * This library is distributed in the hope that it will be useful,
    00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00020  * Lesser General Public License for more details.
    00021  *
    00022  */
    00023
    00024 #ifndef QXMPPMUCMANAGER_H
    00025 #define QXMPPMUCMANAGER_H
    00026
    00027 #include "QXmppClientExtension.h"
    00028 #include "QXmppMucIq.h"
    00029 #include "QXmppPresence.h"
    00030
    00031 class QXmppDataForm;
    00032 class QXmppMessage;
    00033 class QXmppMucManagerPrivate;
    00034 class QXmppMucRoom;
    00035 class QXmppMucRoomPrivate;
    00036
    00057
    00058 class QXmppMucManager : public QXmppClientExtension
    00059 {
    00060     Q_OBJECT
    00061
    00062 public:
    00063     QXmppMucManager();
    00064     ~QXmppMucManager();
    00065
    00066     QXmppMucRoom *addRoom(const QString &roomJid);
    00067
    00069     QStringList discoveryFeatures() const;
    00070     bool handleStanza(const QDomElement &element);
    00072
    00073 signals:
    00075     void invitationReceived(const QString &roomJid, const QString &inviter, const QString &reason);
    00076
    00077 protected:
    00079     void setClient(QXmppClient* client);
    00081
    00082 private slots:
    00083     void _q_messageReceived(const QXmppMessage &message);
    00084     void _q_roomDestroyed(QObject *object);
    00085
    00086 private:
    00087     QXmppMucManagerPrivate *d;
    00088 };
    00089
    00094
    00095 class QXmppMucRoom : public QObject
    00096 {
    00097     Q_OBJECT
    00098     Q_FLAGS(Action Actions)
    00099     Q_PROPERTY(QXmppMucRoom::Actions allowedActions READ allowedActions NOTIFY allowedActionsChanged)
    00100     Q_PROPERTY(bool isJoined READ isJoined NOTIFY isJoinedChanged)
    00101     Q_PROPERTY(QString jid READ jid CONSTANT)
    00102     Q_PROPERTY(QString nickName READ nickName WRITE setNickName NOTIFY nickNameChanged)
    00103     Q_PROPERTY(QStringList participants READ participants NOTIFY participantsChanged)
    00104     Q_PROPERTY(QString password READ password WRITE setPassword)
    00105     Q_PROPERTY(QString subject READ subject WRITE setSubject NOTIFY subjectChanged)
    00106
    00107 public:
    00108
    00110     enum Action {
    00111         NoAction = 0,
    00112         SubjectAction = 1,
    00113         ConfigurationAction = 2,
    00114         PermissionsAction = 4,
    00115         KickAction = 8,
    00116     };
    00117     Q_DECLARE_FLAGS(Actions, Action)
    00118
    00119     ~QXmppMucRoom();
    00120
    00121     Actions allowedActions() const;
    00122     bool isJoined() const;
    00123     QString jid() const;
    00124
    00125     QString nickName() const;
    00126     void setNickName(const QString &nickName);
    00127
    00128     QXmppPresence participantPresence(const QString &jid) const;
    00129     QStringList participants() const;
    00130
    00131     QString password() const;
    00132     void setPassword(const QString &password);
    00133
    00134     QString subject() const;
    00135     void setSubject(const QString &subject);
    00136
    00137 signals:
    00139     void allowedActionsChanged(QXmppMucRoom::Actions actions) const;
    00140
    00142     void configurationReceived(const QXmppDataForm &configuration);
    00143
    00145     void error(const QXmppStanza::Error &error);
    00146
    00148     void joined();
    00149
    00151     void kicked(const QString &jid, const QString &reason);
    00152
    00154     void isJoinedChanged();
    00156
    00158     void left();
    00159
    00161     void messageReceived(const QXmppMessage &message);
    00162
    00164     void nickNameChanged(const QString &nickName);
    00165
    00167     void participantAdded(const QString &jid);
    00168
    00170     void participantChanged(const QString &jid);
    00171
    00173     void participantRemoved(const QString &jid);
    00174
    00176     void participantsChanged();
    00178
    00180     void permissionsReceived(const QList<QXmppMucItem> &permissions);
    00181
    00183     void subjectChanged(const QString &subject);
    00184
    00185 public slots:
    00186     bool join();
    00187     bool kick(const QString &jid, const QString &reason);
    00188     bool leave(const QString &message = QString());
    00189     bool requestConfiguration();
    00190     bool requestPermissions();
    00191     bool setConfiguration(const QXmppDataForm &form);
    00192     bool setPermissions(const QList<QXmppMucItem> &permissions);
    00193     bool sendInvitation(const QString &jid, const QString &reason);
    00194     bool sendMessage(const QString &text);
    00195
    00196 private slots:
    00197     void _q_disconnected();
    00198     void _q_messageReceived(const QXmppMessage &message);
    00199     void _q_presenceReceived(const QXmppPresence &presence);
    00200
    00201 private:
    00202     QXmppMucRoom(QXmppClient *client, const QString &jid, QObject *parent);
    00203     QXmppMucRoomPrivate *d;
    00204     friend class QXmppMucManager;
    00205 };
    00206
    00207 Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppMucRoom::Actions)
    00208
    00209 #endif

All Classes Functions Enumerations Enumerator Properties