diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-05-13 07:30:07 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-05-13 07:30:07 +0000 |
| commit | 612a93867681c48ec9fc28c77dd8926b4e70baef (patch) | |
| tree | fee5c2479d1224600d06193db778633c10951ee8 /src/QXmppTransferManager.cpp | |
| parent | 89b85eda7570337e2e9611a547e28f21bba0d48a (diff) | |
| download | qxmpp-612a93867681c48ec9fc28c77dd8926b4e70baef.tar.gz | |
add some properties to QXmppTransferJob to make it easier to script
Diffstat (limited to 'src/QXmppTransferManager.cpp')
| -rw-r--r-- | src/QXmppTransferManager.cpp | 57 |
1 files changed, 52 insertions, 5 deletions
diff --git a/src/QXmppTransferManager.cpp b/src/QXmppTransferManager.cpp index cf5a5492..ca0bbbbe 100644 --- a/src/QXmppTransferManager.cpp +++ b/src/QXmppTransferManager.cpp @@ -30,6 +30,7 @@ #include <QNetworkInterface> #include <QTime> #include <QTimer> +#include <QUrl> #include "QXmppByteStreamIq.h" #include "QXmppClient.h" @@ -116,6 +117,7 @@ public: QIODevice *iodevice; QString offerId; QString jid; + QUrl localFileUrl; QString sid; QXmppTransferJob::Method method; QString mimeType; @@ -151,7 +153,7 @@ QXmppTransferJobPrivate::QXmppTransferJobPrivate() } QXmppTransferJob::QXmppTransferJob(const QString &jid, QXmppTransferJob::Direction direction, QObject *parent) - : QObject(parent), + : QXmppLoggable(parent), d(new QXmppTransferJobPrivate) { d->direction = direction; @@ -174,6 +176,27 @@ void QXmppTransferJob::abort() /// Call this method if you wish to accept an incoming transfer job. /// +void QXmppTransferJob::accept(const QString &filePath) +{ + if (d->direction == IncomingDirection && d->state == OfferState && !d->iodevice) + { + QFile *file = new QFile(filePath, this); + if (!file->open(QIODevice::WriteOnly)) + { + warning(QString("Could not write to %1").arg(filePath)); + abort(); + return; + } + + d->iodevice = file; + setLocalFileUrl(QUrl::fromLocalFile(filePath)); + setState(QXmppTransferJob::StartState); + } +} + +/// Call this method if you wish to accept an incoming transfer job. +/// + void QXmppTransferJob::accept(QIODevice *iodevice) { if (d->direction == IncomingDirection && d->state == OfferState && !d->iodevice) @@ -235,6 +258,27 @@ QString QXmppTransferJob::jid() const return d->jid; } +/// Returns the local file URL. +/// + +QUrl QXmppTransferJob::localFileUrl() const +{ + return d->localFileUrl; +} + +/// Sets the local file URL. +/// +/// \note You do not need to call this method if you called accept() +/// with a file path. + +void QXmppTransferJob::setLocalFileUrl(const QUrl &localFileUrl) +{ + if (localFileUrl != d->localFileUrl) { + d->localFileUrl = localFileUrl; + emit localFileUrlChanged(localFileUrl); + } +} + /// Returns meta-data about the file being transferred. /// @@ -1016,9 +1060,9 @@ void QXmppTransferManager::jobStateChanged(QXmppTransferJob::State state) /// /// The remote party will be given the choice to accept or refuse the transfer. /// -QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, const QString &fileName, const QString &sid) +QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, const QString &filePath, const QString &sid) { - QFileInfo info(fileName); + QFileInfo info(filePath); QXmppTransferFileInfo fileInfo; fileInfo.setDate(info.lastModified()); @@ -1026,9 +1070,10 @@ QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, const QStri fileInfo.setSize(info.size()); // open file - QIODevice *device = new QFile(fileName); + QIODevice *device = new QFile(filePath); if (!device->open(QIODevice::ReadOnly)) { + warning(QString("Could not read from %1").arg(filePath)); delete device; device = 0; } @@ -1048,7 +1093,9 @@ QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, const QStri } // create job - return sendFile(jid, device, fileInfo, sid); + QXmppTransferJob *job = sendFile(jid, device, fileInfo, sid); + job->setLocalFileUrl(filePath); + return job; } /// Send file to a remote party. |
