QXmpp Version: 0.9.3
QXmppCallManager.h
1/*
2 * Copyright (C) 2008-2014 The QXmpp developers
3 *
4 * Author:
5 * Jeremy Lainé
6 *
7 * Source:
8 * https://github.com/qxmpp-project/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 QXMPPCALLMANAGER_H
25#define QXMPPCALLMANAGER_H
26
27#include <QObject>
28#include <QIODevice>
29#include <QMetaType>
30
31#include "QXmppClientExtension.h"
32#include "QXmppLogger.h"
33
34class QHostAddress;
35class QXmppCallPrivate;
37class QXmppCallManagerPrivate;
38class QXmppIq;
40class QXmppJingleIq;
42class QXmppPresence;
45
52
53class QXMPP_EXPORT QXmppCall : public QXmppLoggable
54{
55 Q_OBJECT
56 Q_ENUMS(Direction State)
57 Q_FLAGS(QIODevice::OpenModeFlag QIODevice::OpenMode)
58 Q_PROPERTY(Direction direction READ direction CONSTANT)
59 Q_PROPERTY(QString jid READ jid CONSTANT)
60 Q_PROPERTY(State state READ state NOTIFY stateChanged)
61 Q_PROPERTY(QIODevice::OpenMode audioMode READ audioMode NOTIFY audioModeChanged)
62 Q_PROPERTY(QIODevice::OpenMode videoMode READ videoMode NOTIFY videoModeChanged)
63
64public:
67 {
69 OutgoingDirection
70 };
71
73 enum State
74 {
75 ConnectingState = 0,
76 ActiveState = 1,
77 DisconnectingState = 2,
78 FinishedState = 3
79 };
80
81 ~QXmppCall();
82
83 QXmppCall::Direction direction() const;
84 QString jid() const;
85 QString sid() const;
86 QXmppCall::State state() const;
87
88 QXmppRtpAudioChannel *audioChannel() const;
89 QIODevice::OpenMode audioMode() const;
90 QXmppRtpVideoChannel *videoChannel() const;
91 QIODevice::OpenMode videoMode() const;
92
93signals:
99 void connected();
100
105 void finished();
106
108 void ringing();
109
112
114 void audioModeChanged(QIODevice::OpenMode mode);
115
117 void videoModeChanged(QIODevice::OpenMode mode);
118
119public slots:
120 void accept();
121 void hangup();
122 void startVideo();
123 void stopVideo();
124
125private slots:
126 void localCandidatesChanged();
127 void terminated();
128 void updateOpenMode();
129
130private:
131 QXmppCall(const QString &jid, QXmppCall::Direction direction, QXmppCallManager *parent);
132
133 QXmppCallPrivate *d;
134 friend class QXmppCallManager;
135 friend class QXmppCallManagerPrivate;
136 friend class QXmppCallPrivate;
137};
138
159
160class QXMPP_EXPORT QXmppCallManager : public QXmppClientExtension
161{
162 Q_OBJECT
163
164public:
167 void setStunServer(const QHostAddress &host, quint16 port = 3478);
168 void setTurnServer(const QHostAddress &host, quint16 port = 3478);
169 void setTurnUser(const QString &user);
170 void setTurnPassword(const QString &password);
171
173 QStringList discoveryFeatures() const;
174 bool handleStanza(const QDomElement &element);
176
177signals:
183
186
187public slots:
188 QXmppCall *call(const QString &jid);
189
190protected:
192 void setClient(QXmppClient* client);
194
195private slots:
196 void _q_callDestroyed(QObject *object);
197 void _q_disconnected();
198 void _q_iqReceived(const QXmppIq &iq);
199 void _q_jingleIqReceived(const QXmppJingleIq &iq);
200 void _q_presenceReceived(const QXmppPresence &presence);
201
202private:
203 QXmppCallManagerPrivate *d;
204 friend class QXmppCall;
205 friend class QXmppCallPrivate;
206 friend class QXmppCallManagerPrivate;
207};
208
209Q_DECLARE_METATYPE(QXmppCall::State)
210
211#endif
The QXmppCallManager class provides support for making and receiving voice calls.
Definition: QXmppCallManager.h:161
void callStarted(QXmppCall *call)
This signal is emitted when a call (incoming or outgoing) is started.
void callReceived(QXmppCall *call)
The QXmppCall class represents a Voice-Over-IP call to a remote party.
Definition: QXmppCallManager.h:54
void stateChanged(QXmppCall::State state)
This signal is emitted when the call state changes.
void connected()
This signal is emitted when a call is connected.
void audioModeChanged(QIODevice::OpenMode mode)
This signal is emitted when the audio channel changes.
Direction
This enum is used to describe the direction of a call.
Definition: QXmppCallManager.h:67
@ IncomingDirection
The call is incoming.
Definition: QXmppCallManager.h:68
void finished()
This signal is emitted when a call is finished.
State
This enum is used to describe the state of a call.
Definition: QXmppCallManager.h:74
void videoModeChanged(QIODevice::OpenMode mode)
This signal is emitted when the video channel changes.
void ringing()
This signal is emitted when the remote party is ringing.
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:48
The QXmppClient class is the main class for using QXmpp.
Definition: QXmppClient.h:81
The QXmppIq class is the base class for all IQs.
Definition: QXmppIq.h:43
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition: QXmppJingleIq.h:85
The QXmppJingleIq class represents an IQ used for initiating media sessions as specified by XEP-0166:...
Definition: QXmppJingleIq.h:155
The QXmppJinglePayloadType class represents a payload type as specified by XEP-0167: Jingle RTP Sessi...
Definition: QXmppJingleIq.h:41
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:112
The QXmppPresence class represents an XMPP presence stanza.
Definition: QXmppPresence.h:37
The QXmppRtpAudioChannel class represents an RTP audio channel to a remote party.
Definition: QXmppRtpChannel.h:76
The QXmppRtpVideoChannel class represents an RTP video channel to a remote party.
Definition: QXmppRtpChannel.h:256