diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-14 14:36:59 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-14 14:36:59 +0200 |
| commit | 575a9d9d860f5417b0173ff6dc3ed41cfef0bbaf (patch) | |
| tree | 489d79c60a144af79b2927ac14755b7473b7fbaa /examples/example_4_callHandling/xmppClient.cpp | |
| parent | 425cb7d2ec6a92cbb5d67d7fb9e1fdae918bc267 (diff) | |
| download | qxmpp-575a9d9d860f5417b0173ff6dc3ed41cfef0bbaf.tar.gz | |
fix example
Diffstat (limited to 'examples/example_4_callHandling/xmppClient.cpp')
| -rw-r--r-- | examples/example_4_callHandling/xmppClient.cpp | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/examples/example_4_callHandling/xmppClient.cpp b/examples/example_4_callHandling/xmppClient.cpp deleted file mode 100644 index b49024ba..00000000 --- a/examples/example_4_callHandling/xmppClient.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (C) 2008-2012 The QXmpp developers - * - * Authors: - * Ian Reinhart Geiser - * Jeremy Lainé - * - * Source: - * http://code.google.com/p/qxmpp - * - * This file is a part of QXmpp library. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - */ - -#include <QAudioInput> -#include <QAudioOutput> -#include <QDebug> - -#include "QXmppCallManager.h" -#include "QXmppJingleIq.h" -#include "QXmppRtpChannel.h" -#include "QXmppUtils.h" - -#include "xmppClient.h" - -xmppClient::xmppClient(QObject *parent) - : QXmppClient(parent) -{ - // add QXmppCallManager extension - callManager = new QXmppCallManager; - addExtension(callManager); - - bool check = connect(this, SIGNAL(presenceReceived(QXmppPresence)), - this, SLOT(slotPresenceReceived(QXmppPresence))); - Q_ASSERT(check); - - check = connect(callManager, SIGNAL(callReceived(QXmppCall*)), - this, SLOT(slotCallReceived(QXmppCall*))); - Q_ASSERT(check); -} - -/// The audio mode of a call changed. - -void xmppClient::slotAudioModeChanged(QIODevice::OpenMode mode) -{ - QXmppCall *call = qobject_cast<QXmppCall*>(sender()); - Q_ASSERT(call); - QXmppRtpAudioChannel *channel = call->audioChannel(); - - // prepare audio format - QAudioFormat format; - format.setFrequency(channel->payloadType().clockrate()); - format.setChannels(channel->payloadType().channels()); - format.setSampleSize(16); - format.setCodec("audio/pcm"); - format.setByteOrder(QAudioFormat::LittleEndian); - format.setSampleType(QAudioFormat::SignedInt); - - // the size in bytes of the audio buffers to/from sound devices - // 160 ms seems to be the minimum to work consistently on Linux/Mac/Windows - const int bufferSize = (format.frequency() * format.channels() * (format.sampleSize() / 8) * 160) / 1000; - - if (mode & QIODevice::ReadOnly) { - // initialise audio output - QAudioOutput *audioOutput = new QAudioOutput(format, this); - audioOutput->setBufferSize(bufferSize); - audioOutput->start(channel); - } - - if (mode & QIODevice::WriteOnly) { - // initialise audio input - QAudioInput *audioInput = new QAudioInput(format, this); - audioInput->setBufferSize(bufferSize); - audioInput->start(channel); - } -} - - -/// A call was received. - -void xmppClient::slotCallReceived(QXmppCall *call) -{ - qDebug() << "Got call from:" << call->jid(); - - bool check; - check = connect(call, SIGNAL(stateChanged(QXmppCall::State)), - this, SLOT(slotCallStateChanged(QXmppCall::State))); - Q_ASSERT(check); - - check = connect(call, SIGNAL(audioModeChanged(QIODevice::OpenMode)), - this, SLOT(slotAudioModeChanged(QIODevice::OpenMode))); - Q_ASSERT(check); - - // accept call - call->accept(); -} - -/// A call changed state. - -void xmppClient::slotCallStateChanged(QXmppCall::State state) -{ - if (state == QXmppCall::ActiveState) - qDebug("Call active"); - else if (state == QXmppCall::DisconnectingState) - qDebug("Call disconnecting"); - else if (state == QXmppCall::FinishedState) - qDebug("Call finished"); -} - -/// A presence was received. - -void xmppClient::slotPresenceReceived(const QXmppPresence &presence) -{ - const QLatin1String recipient("qxmpp.test2@gmail.com"); - - // if we are the recipient, or if the presence is not from the recipient, - // do nothing - if (jidToBareJid(configuration().jid()) == recipient || - jidToBareJid(presence.from()) != recipient || - presence.type() != QXmppPresence::Available) - return; - - // start the call and connect to the its signals - QXmppCall *call = callManager->call(presence.from()); - - bool check; - check = connect(call, SIGNAL(stateChanged(QXmppCall:State)), - this, SLOT(slotCallStateChanged(QXmppCall::State))); - Q_ASSERT(check); - - check = connect(call, SIGNAL(audioModeChanged(QIODevice::OpenMode)), - this, SLOT(slotAudioModeChanged(QIODevice::OpenMode))); - Q_ASSERT(check); -} - |
