From 425cb7d2ec6a92cbb5d67d7fb9e1fdae918bc267 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Fri, 14 Sep 2012 14:30:44 +0200 Subject: fix example --- .../example_3_transferHandling.cpp | 165 +++++++++++++++++++++ .../example_3_transferHandling.h | 53 +++++++ .../example_3_transferHandling.pro | 5 +- examples/example_3_transferHandling/main.cpp | 49 ------ examples/example_3_transferHandling/xmppClient.cpp | 135 ----------------- examples/example_3_transferHandling/xmppClient.h | 51 ------- 6 files changed, 220 insertions(+), 238 deletions(-) create mode 100644 examples/example_3_transferHandling/example_3_transferHandling.cpp create mode 100644 examples/example_3_transferHandling/example_3_transferHandling.h delete mode 100644 examples/example_3_transferHandling/main.cpp delete mode 100644 examples/example_3_transferHandling/xmppClient.cpp delete mode 100644 examples/example_3_transferHandling/xmppClient.h (limited to 'examples/example_3_transferHandling') diff --git a/examples/example_3_transferHandling/example_3_transferHandling.cpp b/examples/example_3_transferHandling/example_3_transferHandling.cpp new file mode 100644 index 00000000..55936cba --- /dev/null +++ b/examples/example_3_transferHandling/example_3_transferHandling.cpp @@ -0,0 +1,165 @@ +/* + * 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 +#include + +#include +#include +#include + +#include "QXmppMessage.h" +#include "QXmppUtils.h" + +#include "example_3_transferHandling.h" + +xmppClient::xmppClient(QObject *parent) + : QXmppClient(parent), transferManager(0) +{ + bool check; + Q_UNUSED(check); + + // add transfer manager + transferManager = new QXmppTransferManager; + addExtension(transferManager); + + // uncomment one of the following if you only want to use a specific transfer method: + // + // transferManager->setSupportedMethods(QXmppTransferJob::InBandMethod); + // transferManager->setSupportedMethods(QXmppTransferJob::SocksMethod); + + check = connect(this, SIGNAL(presenceReceived(QXmppPresence)), + this, SLOT(slotPresenceReceived(QXmppPresence))); + Q_ASSERT(check); + + check = connect(transferManager, SIGNAL(fileReceived(QXmppTransferJob*)), + this, SLOT(slotFileReceived(QXmppTransferJob*))); + Q_ASSERT(check); +} + +void xmppClient::setRecipient(const QString &recipient) +{ + m_recipient = recipient; +} + +/// A file transfer failed. + +void xmppClient::slotError(QXmppTransferJob::Error error) +{ + qDebug() << "Transmission failed:" << error; +} + +/// A file transfer request was received. + +void xmppClient::slotFileReceived(QXmppTransferJob *job) +{ + bool check; + Q_UNUSED(check); + + qDebug() << "Got transfer request from:" << job->jid(); + + check = connect(job, SIGNAL(error(QXmppTransferJob::Error)), + this, SLOT(slotError(QXmppTransferJob::Error))); + Q_ASSERT(check); + + check = connect(job, SIGNAL(finished()), + this, SLOT(slotFinished())); + Q_ASSERT(check); + + check = connect(job, SIGNAL(progress(qint64,qint64)), + this, SLOT(slotProgress(qint64,qint64))); + Q_ASSERT(check); + + // allocate a buffer to receive the file + QBuffer *buffer = new QBuffer(this); + buffer->open(QIODevice::WriteOnly); + job->accept(buffer); +} + +/// A file transfer finished. + +void xmppClient::slotFinished() +{ + qDebug() << "Transmission finished"; +} + +/// A presence was received + +void xmppClient::slotPresenceReceived(const QXmppPresence &presence) +{ + bool check; + Q_UNUSED(check); + + // if we don't have a recipient, or if the presence is not from the recipient, + // do nothing + if (m_recipient.isEmpty() || + QXmppUtils::jidToBareJid(presence.from()) != m_recipient || + presence.type() != QXmppPresence::Available) + return; + + // send the file and connect to the job's signals + QXmppTransferJob *job = transferManager->sendFile(presence.from(), "xmppClient.cpp"); + + check = connect(job, SIGNAL(error(QXmppTransferJob::Error)), + this, SLOT(slotError(QXmppTransferJob::Error))); + Q_ASSERT(check); + + check = connect(job, SIGNAL(finished()), + this, SLOT(slotFinished())); + Q_ASSERT(check); + + check = connect(job, SIGNAL(progress(qint64,qint64)), + this, SLOT(slotProgress(qint64,qint64))); + Q_ASSERT(check); +} + +/// A file transfer has made progress. + +void xmppClient::slotProgress(qint64 done, qint64 total) +{ + qDebug() << "Transmission progress:" << done << "/" << total; +} + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + + // we want one argument : "send" or "receive" + if (argc != 2 || (strcmp(argv[1], "send") && strcmp(argv[1], "receive"))) + { + fprintf(stderr, "Usage: %s send|receive\n", argv[0]); + return EXIT_FAILURE; + } + + xmppClient client; + client.logger()->setLoggingType(QXmppLogger::StdoutLogging); + if (!strcmp(argv[1], "send")) { + client.setRecipient("qxmpp.test2@qxmpp.org"); + client.connectToServer("qxmpp.test1@qxmpp.org", "qxmpp123"); + } else { + client.connectToServer("qxmpp.test2@qxmpp.org", "qxmpp456"); + } + + return a.exec(); +} diff --git a/examples/example_3_transferHandling/example_3_transferHandling.h b/examples/example_3_transferHandling/example_3_transferHandling.h new file mode 100644 index 00000000..bb0e62ba --- /dev/null +++ b/examples/example_3_transferHandling/example_3_transferHandling.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2008-2012 The QXmpp developers + * + * Author: + * Ian Reinhart Geiser + * + * 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. + * + */ + + +#ifndef IBBCLIENT_H +#define IBBCLIENT_H + +#include "QXmppClient.h" +#include "QXmppTransferManager.h" + +class QBuffer; + +class xmppClient : public QXmppClient +{ + Q_OBJECT + +public: + xmppClient(QObject *parent = 0); + void setRecipient(const QString &recipient); + +private slots: + void slotError(QXmppTransferJob::Error error); + void slotFileReceived(QXmppTransferJob *job); + void slotFinished(); + void slotPresenceReceived(const QXmppPresence &presence); + void slotProgress(qint64 done, qint64 total); + +private: + QString m_recipient; + QXmppTransferManager *transferManager; +}; + +#endif // IBBCLIENT_H diff --git a/examples/example_3_transferHandling/example_3_transferHandling.pro b/examples/example_3_transferHandling/example_3_transferHandling.pro index 7f7e6153..191f6d88 100644 --- a/examples/example_3_transferHandling/example_3_transferHandling.pro +++ b/examples/example_3_transferHandling/example_3_transferHandling.pro @@ -2,7 +2,6 @@ include(../examples.pri) TARGET = example_3_transferHandling -SOURCES += main.cpp \ - xmppClient.cpp +SOURCES += example_3_transferHandling.cpp -HEADERS += xmppClient.h +HEADERS += example_3_transferHandling.h diff --git a/examples/example_3_transferHandling/main.cpp b/examples/example_3_transferHandling/main.cpp deleted file mode 100644 index 5bbf990d..00000000 --- a/examples/example_3_transferHandling/main.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2008-2012 The QXmpp developers - * - * Author: - * Ian Reinhart Geiser - * - * 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 -#include - -#include - -#include "QXmppLogger.h" -#include "xmppClient.h" - -int main(int argc, char *argv[]) -{ - QCoreApplication a(argc, argv); - - QXmppLogger::getLogger()->setLoggingType(QXmppLogger::StdoutLogging); - - // we want one argument : "send" or "receive" - if (argc != 2 || (strcmp(argv[1], "send") && strcmp(argv[1], "receive"))) - { - fprintf(stderr, "Usage: ibbClient send|receive\n"); - return EXIT_FAILURE; - } - const QString username = (!strcmp(argv[1], "send")) ? QLatin1String("qxmpp.test1") : QLatin1String("qxmpp.test2"); - - xmppClient client; - client.connectToServer(username + "@gmail.com", "qxmpp123"); - return a.exec(); -} diff --git a/examples/example_3_transferHandling/xmppClient.cpp b/examples/example_3_transferHandling/xmppClient.cpp deleted file mode 100644 index 15ce2713..00000000 --- a/examples/example_3_transferHandling/xmppClient.cpp +++ /dev/null @@ -1,135 +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 -#include - -#include "QXmppMessage.h" -#include "QXmppUtils.h" - -#include "xmppClient.h" - -xmppClient::xmppClient(QObject *parent) - : QXmppClient(parent), transferManager(0) -{ - bool check; - Q_UNUSED(check); - - // add transfer manager - transferManager = new QXmppTransferManager; - addExtension(transferManager); - - // uncomment one of the following if you only want to use a specific transfer method: - // - // transferManager->setSupportedMethods(QXmppTransferJob::InBandMethod); - // transferManager->setSupportedMethods(QXmppTransferJob::SocksMethod); - - check = connect(this, SIGNAL(presenceReceived(QXmppPresence)), - this, SLOT(slotPresenceReceived(QXmppPresence))); - Q_ASSERT(check); - - check = connect(transferManager, SIGNAL(fileReceived(QXmppTransferJob*)), - this, SLOT(slotFileReceived(QXmppTransferJob*))); - Q_ASSERT(check); -} - -/// A file transfer failed. - -void xmppClient::slotError(QXmppTransferJob::Error error) -{ - qDebug() << "Transmission failed:" << error; -} - -/// A file transfer request was received. - -void xmppClient::slotFileReceived(QXmppTransferJob *job) -{ - bool check; - Q_UNUSED(check); - - qDebug() << "Got transfer request from:" << job->jid(); - - check = connect(job, SIGNAL(error(QXmppTransferJob::Error)), - this, SLOT(slotError(QXmppTransferJob::Error))); - Q_ASSERT(check); - - check = connect(job, SIGNAL(finished()), - this, SLOT(slotFinished())); - Q_ASSERT(check); - - check = connect(job, SIGNAL(progress(qint64,qint64)), - this, SLOT(slotProgress(qint64,qint64))); - Q_ASSERT(check); - - // allocate a buffer to receive the file - QBuffer *buffer = new QBuffer(this); - buffer->open(QIODevice::WriteOnly); - job->accept(buffer); -} - -/// A file transfer finished. - -void xmppClient::slotFinished() -{ - qDebug() << "Transmission finished"; -} - -/// A presence was received - -void xmppClient::slotPresenceReceived(const QXmppPresence &presence) -{ - bool check; - Q_UNUSED(check); - - const QLatin1String recipient("qxmpp.test2@gmail.com"); - - // if we are the recipient, or if the presence is not from the recipient, - // do nothing - if (QXmppUtils::jidToBareJid(configuration().jid()) == recipient || - QXmppUtils::jidToBareJid(presence.from()) != recipient || - presence.type() != QXmppPresence::Available) - return; - - // send the file and connect to the job's signals - QXmppTransferJob *job = transferManager->sendFile(presence.from(), "xmppClient.cpp"); - - check = connect(job, SIGNAL(error(QXmppTransferJob::Error)), - this, SLOT(slotError(QXmppTransferJob::Error))); - Q_ASSERT(check); - - check = connect(job, SIGNAL(finished()), - this, SLOT(slotFinished())); - Q_ASSERT(check); - - check = connect(job, SIGNAL(progress(qint64,qint64)), - this, SLOT(slotProgress(qint64,qint64))); - Q_ASSERT(check); -} - -/// A file transfer has made progress. - -void xmppClient::slotProgress(qint64 done, qint64 total) -{ - qDebug() << "Transmission progress:" << done << "/" << total; -} diff --git a/examples/example_3_transferHandling/xmppClient.h b/examples/example_3_transferHandling/xmppClient.h deleted file mode 100644 index 1ec7fa9b..00000000 --- a/examples/example_3_transferHandling/xmppClient.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2008-2012 The QXmpp developers - * - * Author: - * Ian Reinhart Geiser - * - * 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. - * - */ - - -#ifndef IBBCLIENT_H -#define IBBCLIENT_H - -#include "QXmppClient.h" -#include "QXmppTransferManager.h" - -class QBuffer; - -class xmppClient : public QXmppClient -{ - Q_OBJECT - -public: - xmppClient(QObject *parent = 0); - -private slots: - void slotError(QXmppTransferJob::Error error); - void slotFileReceived(QXmppTransferJob *job); - void slotFinished(); - void slotPresenceReceived(const QXmppPresence &presence); - void slotProgress(qint64 done, qint64 total); - -private: - QXmppTransferManager *transferManager; -}; - -#endif // IBBCLIENT_H -- cgit v1.2.3