QXmpp Version:0.7.6

- Main Page
- Modules
- Classes
- Files

- File List

All Classes Functions Variables Enumerations Enumerator Properties Groups
QXmppClient.h
1 /*
2 * Copyright (C) 2008-2012 The QXmpp developers
3 *
4 * Author:
5 * Manjeet Dahiya
6 *
7 * Source:
8 * http://code.google.com/p/qxmpp
9 *
10 * This file is a part of QXmpp library.
11 *
12 * This library is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public
14 * License as published by the Free Software Foundation; either
15 * version 2.1 of the License, or (at your option) any later version.
16 *
17 * This library is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
21 *
22 */
23
24 #ifndef QXMPPCLIENT_H
25 #define QXMPPCLIENT_H
26
27 #include <QObject>
28 #include <QAbstractSocket>
29
30 #include "QXmppConfiguration.h"
31 #include "QXmppLogger.h"
32 #include "QXmppPresence.h"
33
34 class QXmppClientExtension;
35 class QXmppClientPrivate;
36 class QXmppPresence;
37 class QXmppMessage;
38 class QXmppIq;
39 class QXmppStream;
40
41 // managers
42 class QXmppDiscoveryIq;
43 class QXmppRosterManager;
44 class QXmppVCardManager;
45 class QXmppVersionManager;
46
48
50
77
78 class QXMPP_EXPORT QXmppClient : public QXmppLoggable
79 {
80 Q_OBJECT
81 Q_ENUMS(Error State)
82 Q_PROPERTY(QXmppLogger* logger READ logger WRITE setLogger NOTIFY loggerChanged)
83 Q_PROPERTY(State state READ state NOTIFY stateChanged)
84
85 public:
88 enum Error
89 {
90 NoError,
91 SocketError,
92 KeepAliveError,
93 XmppStreamError,
94 };
95
97 enum State
98 {
99 DisconnectedState,
100 ConnectingState,
101 ConnectedState,
102 };
103
104 QXmppClient(QObject *parent = 0);
105 ~QXmppClient();
106
107 bool addExtension(QXmppClientExtension* extension);
108 bool insertExtension(int index, QXmppClientExtension* extension);
109 bool removeExtension(QXmppClientExtension* extension);
110
111 QList<QXmppClientExtension*> extensions();
112
125 template<typename T>
126 T* findExtension()
127 {
128 QList<QXmppClientExtension*> list = extensions();
129 for (int i = 0; i < list.size(); ++i)
130 {
131 T* extension = qobject_cast<T*>(list.at(i));
132 if(extension)
133 return extension;
134 }
135 return 0;
136 }
137
138 void connectToServer(const QXmppConfiguration&,
139 const QXmppPresence& initialPresence =
140 QXmppPresence());
141 bool isAuthenticated() const;
142 bool isConnected() const;
143
144 QXmppPresence clientPresence() const;
145 void setClientPresence(const QXmppPresence &presence);
146
147 QXmppConfiguration &configuration();
148 QXmppLogger *logger() const;
149 void setLogger(QXmppLogger *logger);
150
151 QAbstractSocket::SocketError socketError();
152 State state() const;
153 QXmppStanza::Error::Condition xmppStreamError();
154
155 QXmppRosterManager& rosterManager();
156 QXmppVCardManager& vCardManager();
157 QXmppVersionManager& versionManager();
158
159 signals:
160
180 void connected();
181
184 void disconnected();
185
191 void error(QXmppClient::Error);
192
194 void loggerChanged(QXmppLogger *logger);
195
200 void messageReceived(const QXmppMessage &message);
201
206 void presenceReceived(const QXmppPresence &presence);
207
212 void iqReceived(const QXmppIq &iq);
213
215 void stateChanged(QXmppClient::State state);
216
217 public slots:
218 void connectToServer(const QString &jid,
219 const QString &password);
220 void disconnectFromServer();
221 bool sendPacket(const QXmppStanza&);
222 void sendMessage(const QString& bareJid, const QString& message);
223
224 private slots:
225 void _q_elementReceived(const QDomElement &element, bool &handled);
226 void _q_reconnect();
227 void _q_socketStateChanged(QAbstractSocket::SocketState state);
228 void _q_streamConnected();
229 void _q_streamDisconnected();
230 void _q_streamError(QXmppClient::Error error);
231
232 private:
233 QXmppClientPrivate * const d;
234 };
235
236 #endif // QXMPPCLIENT_H