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 QXMPPCLIENT_H
00025 #define QXMPPCLIENT_H
00026
00027 #include <QObject>
00028 #include <QAbstractSocket>
00029
00030 #include "QXmppConfiguration.h"
00031 #include "QXmppLogger.h"
00032 #include "QXmppPresence.h"
00033
00034 class QXmppClientExtension;
00035 class QXmppClientPrivate;
00036 class QXmppPresence;
00037 class QXmppMessage;
00038 class QXmppPacket;
00039 class QXmppIq;
00040 class QXmppStream;
00041
00042
00043 class QXmppDiscoveryIq;
00044 class QXmppReconnectionManager;
00045 class QXmppRosterManager;
00046 class QXmppVCardManager;
00047 class QXmppVersionManager;
00048
00050
00052
00079
00080 class QXmppClient : public QXmppLoggable
00081 {
00082 Q_OBJECT
00083
00084 public:
00087 enum Error
00088 {
00089 SocketError,
00090 KeepAliveError,
00091 XmppStreamError,
00092 };
00093
00094 QXmppClient(QObject *parent = 0);
00095 ~QXmppClient();
00096
00097 bool addExtension(QXmppClientExtension* extension);
00098 bool removeExtension(QXmppClientExtension* extension);
00099
00100 QList<QXmppClientExtension*> extensions();
00101
00114 template<typename T>
00115 T* findExtension()
00116 {
00117 QList<QXmppClientExtension*> list = extensions();
00118 for (int i = 0; i < list.size(); ++i)
00119 {
00120 T* extension = qobject_cast<T*>(list.at(i));
00121 if(extension)
00122 return extension;
00123 }
00124 return 0;
00125 }
00126
00127 void connectToServer(const QXmppConfiguration&,
00128 const QXmppPresence& initialPresence =
00129 QXmppPresence());
00130 void connectToServer(const QString &jid,
00131 const QString &password);
00132 void disconnectFromServer();
00133 bool isConnected() const;
00134
00135 QXmppPresence clientPresence() const;
00136 void setClientPresence(const QXmppPresence &presence);
00137
00138 QXmppConfiguration &configuration();
00139 QXmppLogger *logger();
00140 void setLogger(QXmppLogger *logger);
00141
00142 QAbstractSocket::SocketError socketError();
00143 QXmppStanza::Error::Condition xmppStreamError();
00144
00145 QXmppRosterManager& rosterManager();
00146 QXmppVCardManager& vCardManager();
00147 QXmppVersionManager& versionManager();
00148
00149 QXmppReconnectionManager* reconnectionManager();
00150 bool setReconnectionManager(QXmppReconnectionManager*);
00151
00153
00154
00155 void Q_DECL_DEPRECATED connectToServer(const QString& host,
00156 const QString& user,
00157 const QString& password,
00158 const QString& domain,
00159 int port = 5222,
00160 const QXmppPresence& initialPresence =
00161 QXmppPresence());
00162 void Q_DECL_DEPRECATED connectToServer(const QString& host,
00163 const QString& bareJid,
00164 const QString& password,
00165 int port = 5222,
00166 const QXmppPresence& initialPresence =
00167 QXmppPresence());
00168
00169
00170
00171 const QXmppPresence Q_DECL_DEPRECATED & getClientPresence() const;
00172 QXmppConfiguration Q_DECL_DEPRECATED & getConfiguration();
00173 const QXmppConfiguration Q_DECL_DEPRECATED & getConfiguration() const;
00174 QXmppReconnectionManager Q_DECL_DEPRECATED * getReconnectionManager();
00175 QXmppRosterManager Q_DECL_DEPRECATED & getRoster();
00176 QXmppVCardManager Q_DECL_DEPRECATED & getVCardManager();
00177 QAbstractSocket::SocketError Q_DECL_DEPRECATED getSocketError();
00178 QXmppStanza::Error::Condition Q_DECL_DEPRECATED getXmppStreamError();
00179
00181 void Q_DECL_DEPRECATED disconnect();
00182
00183
00184 void Q_DECL_DEPRECATED setClientPresence(const QString& statusText);
00185 void Q_DECL_DEPRECATED setClientPresence(QXmppPresence::Type presenceType);
00186 void Q_DECL_DEPRECATED setClientPresence(QXmppPresence::Status::Type statusType);
00188
00189 signals:
00190
00210 void connected();
00211
00214 void disconnected();
00215
00221 void error(QXmppClient::Error);
00222
00227 void messageReceived(const QXmppMessage&);
00228
00233 void presenceReceived(const QXmppPresence&);
00234
00239 void iqReceived(const QXmppIq&);
00240
00242
00243
00244
00245 void discoveryIqReceived(const QXmppDiscoveryIq&);
00247
00248 public slots:
00249 bool sendPacket(const QXmppPacket&);
00250 void sendMessage(const QString& bareJid, const QString& message);
00251
00252 private slots:
00253 void slotElementReceived(const QDomElement &element, bool &handled);
00254 void xmppConnected();
00255
00256 private:
00257 QXmppClientPrivate * const d;
00258 };
00259
00260 #endif // QXMPPCLIENT_H