aboutsummaryrefslogtreecommitdiff
path: root/example/example_3_ibbTransferSource/ibbClient.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-07-19 12:44:24 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-07-19 12:44:24 +0000
commit368037c7a1d077da4cb828e7cf5671d92e4eda02 (patch)
treeb767f813feb9817f97efd514a2aba76cafd1d433 /example/example_3_ibbTransferSource/ibbClient.cpp
parent046f9b04abdf3e2315744a7e548c6c860eecd07e (diff)
downloadqxmpp-368037c7a1d077da4cb828e7cf5671d92e4eda02.tar.gz
merge ibbTransferTarget code
Diffstat (limited to 'example/example_3_ibbTransferSource/ibbClient.cpp')
-rw-r--r--example/example_3_ibbTransferSource/ibbClient.cpp57
1 files changed, 52 insertions, 5 deletions
diff --git a/example/example_3_ibbTransferSource/ibbClient.cpp b/example/example_3_ibbTransferSource/ibbClient.cpp
index 3db6973a..cfd78a42 100644
--- a/example/example_3_ibbTransferSource/ibbClient.cpp
+++ b/example/example_3_ibbTransferSource/ibbClient.cpp
@@ -22,7 +22,7 @@
*
*/
-
+#include <QBuffer>
#include <QDebug>
#include "QXmppMessage.h"
@@ -33,16 +33,36 @@
ibbClient::ibbClient(QObject *parent)
: QXmppClient(parent)
{
- bool check = connect( this, SIGNAL(connected()),
- this, SLOT(slotConnected()) );
+ bool check = connect(this, SIGNAL(connected()),
+ this, SLOT(slotConnected()) );
+ Q_ASSERT(check);
+
+ check = connect(&transferManager(), SIGNAL(fileReceived(QXmppTransferJob*)),
+ this, SLOT(slotFileReceived(QXmppTransferJob*)));
Q_ASSERT(check);
- Q_UNUSED(check);
+}
+
+/// Request that the given file be sent to the recipient once he/she is online.
+///
+/// \param recipient
+/// \param file
+
+void ibbClient::sendOnceAvailable(const QString &recipient, const QString &file)
+{
+ m_sendRecipient = recipient;
+ m_sendFile = file;
}
void ibbClient::slotConnected()
{
+ const QLatin1String recipient("client@geiseri.com/QXmpp");
+
+ // if we are the recipient, do nothing
+ if (getConfiguration().jid() == recipient)
+ return;
+
transferManager().setSupportedMethods(QXmppTransferJob::InBandMethod);
- QXmppTransferJob *job = transferManager().sendFile( "client@geiseri.com/QXmpp", "ibbClient.cpp" );
+ QXmppTransferJob *job = transferManager().sendFile(recipient, "ibbClient.cpp");
bool check = connect( job, SIGNAL(error(QXmppTransferJob::Error)),
this, SLOT(slotError(QXmppTransferJob::Error)) );
@@ -57,16 +77,43 @@ void ibbClient::slotConnected()
Q_ASSERT(check);
}
+/// A file transfer failed.
+
void ibbClient::slotError(QXmppTransferJob::Error error)
{
qDebug() << "Transmission failed:" << error;
}
+/// A file transfer request was received.
+
+void ibbClient::slotFileReceived(QXmppTransferJob *job)
+{
+ qDebug() << "Got transfer request from:" << job->jid();
+
+ bool 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 ibbClient::slotFinished()
{
qDebug() << "Transmission finished";
}
+/// A file transfer has made progress.
+
void ibbClient::slotProgress(qint64 done, qint64 total)
{
qDebug() << "Transmission progress:" << done << "/" << total;