diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 09:52:26 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 09:52:26 +0000 |
| commit | e6c18670dbcb36a2a1b999327f657b8cdd77b78e (patch) | |
| tree | 97524929821f97b733d766c8b4110c0509a7abe0 /src | |
| parent | f6d667262a5d86eb3c63213d9d21ee6269aa0000 (diff) | |
| download | qxmpp-e6c18670dbcb36a2a1b999327f657b8cdd77b78e.tar.gz | |
add a QXmppTransferJob::speed() method to return the speed of a transfer
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppTransferManager.cpp | 15 | ||||
| -rw-r--r-- | src/QXmppTransferManager.h | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/QXmppTransferManager.cpp b/src/QXmppTransferManager.cpp index 74e0d549..d6fef54f 100644 --- a/src/QXmppTransferManager.cpp +++ b/src/QXmppTransferManager.cpp @@ -232,6 +232,19 @@ QString QXmppTransferJob::sid() const return m_sid; } +/// Returns the job's transfer speed in bytes per second. +/// +/// If the transfer has not started yet or is already finished, returns 0. +/// + +qint64 QXmppTransferJob::speed() const +{ + qint64 elapsed = m_transferStart.elapsed(); + if (m_state != QXmppTransferJob::TransferState || !elapsed) + return 0; + return (m_done * 1000.0) / elapsed; +} + /// Returns the job's state. /// @@ -245,6 +258,8 @@ void QXmppTransferJob::setState(QXmppTransferJob::State state) if (m_state != state) { m_state = state; + if (m_state == QXmppTransferJob::TransferState) + m_transferStart.start(); emit stateChanged(m_state); } } diff --git a/src/QXmppTransferManager.h b/src/QXmppTransferManager.h index 0c3d4190..7ec84f15 100644 --- a/src/QXmppTransferManager.h +++ b/src/QXmppTransferManager.h @@ -29,6 +29,7 @@ #include <QHash> #include <QHostAddress> #include <QVariant> +#include <QTime> #include "QXmppIq.h" #include "QXmppByteStreamIq.h" @@ -127,6 +128,7 @@ public: QString jid() const; QXmppTransferJob::Method method() const; QString sid() const; + qint64 speed() const; QXmppTransferJob::State state() const; // XEP-0096 : File transfer @@ -182,6 +184,7 @@ private: QString m_mimeType; QString m_requestId; State m_state; + QTime m_transferStart; // arbitrary data QHash<int, QVariant> m_data; |
