QXmpp Version:0.3.91
QXmppClient.h
00001 /*
00002  * Copyright (C) 2008-2011 The QXmpp developers
00003  *
00004  * Author:
00005  *  Manjeet Dahiya
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 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 // managers
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     Q_ENUMS(Error State)
00084     Q_PROPERTY(QXmppLogger* logger READ logger WRITE setLogger NOTIFY loggerChanged)
00085     Q_PROPERTY(State state READ state NOTIFY stateChanged)
00086 
00087 public:
00090     enum Error
00091     {
00092         NoError,            
00093         SocketError,        
00094         KeepAliveError,     
00095         XmppStreamError,    
00096     };
00097 
00099     enum State
00100     {
00101         DisconnectedState,  
00102         ConnectingState,    
00103         ConnectedState,     
00104     };
00105 
00106     QXmppClient(QObject *parent = 0);
00107     ~QXmppClient();
00108 
00109     bool addExtension(QXmppClientExtension* extension);
00110     bool removeExtension(QXmppClientExtension* extension);
00111 
00112     QList<QXmppClientExtension*> extensions();
00113 
00126     template<typename T>
00127     T* findExtension()
00128     {
00129         QList<QXmppClientExtension*> list = extensions();
00130         for (int i = 0; i < list.size(); ++i)
00131         {
00132             T* extension = qobject_cast<T*>(list.at(i));
00133             if(extension)
00134                 return extension;
00135         }
00136         return 0;
00137     }
00138 
00139     void connectToServer(const QXmppConfiguration&,
00140                          const QXmppPresence& initialPresence =
00141                          QXmppPresence());
00142     bool isConnected() const;
00143 
00144     QXmppPresence clientPresence() const;
00145     void setClientPresence(const QXmppPresence &presence);
00146 
00147     QXmppConfiguration &configuration();
00148     QXmppLogger *logger() const;
00149     void setLogger(QXmppLogger *logger);
00150 
00151     QAbstractSocket::SocketError socketError();
00152     State state() const;
00153     QXmppStanza::Error::Condition xmppStreamError();
00154 
00155     QXmppRosterManager& rosterManager();
00156     QXmppVCardManager& vCardManager();
00157     QXmppVersionManager& versionManager();
00158 
00159     QXmppReconnectionManager* reconnectionManager();
00160     bool setReconnectionManager(QXmppReconnectionManager*);
00161 
00162 signals:
00163 
00183     void connected();
00184 
00187     void disconnected();
00188 
00194     void error(QXmppClient::Error);
00195 
00197     void loggerChanged(QXmppLogger *logger);
00198 
00203     void messageReceived(const QXmppMessage &message);
00204 
00209     void presenceReceived(const QXmppPresence &presence);
00210 
00215     void iqReceived(const QXmppIq &iq);
00216 
00218     void stateChanged(State state);
00219 
00221     // Deprecated in release 0.3.0
00222     // Use QXmppDiscoveryManager::informationReceived(const QXmppDiscoveryIq&)
00223     // Notifies that an XMPP service discovery iq stanza is received.
00224     void discoveryIqReceived(const QXmppDiscoveryIq&);
00226 
00227 public slots:
00228     void connectToServer(const QString &jid,
00229                          const QString &password);
00230     void disconnectFromServer();
00231     bool sendPacket(const QXmppPacket&);
00232     void sendMessage(const QString& bareJid, const QString& message);
00233 
00234 private slots:
00235     void _q_elementReceived(const QDomElement &element, bool &handled);
00236     void _q_socketStateChanged(QAbstractSocket::SocketState state);
00237     void _q_streamConnected();
00238     void _q_streamDisconnected();
00239 
00240 private:
00241     QXmppClientPrivate * const d;
00242 };
00243 
00244 #endif // QXMPPCLIENT_H
 All Classes Functions Enumerations Enumerator Properties