aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppTransferManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-09-20 09:52:26 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-09-20 09:52:26 +0000
commite6c18670dbcb36a2a1b999327f657b8cdd77b78e (patch)
tree97524929821f97b733d766c8b4110c0509a7abe0 /src/QXmppTransferManager.cpp
parentf6d667262a5d86eb3c63213d9d21ee6269aa0000 (diff)
downloadqxmpp-e6c18670dbcb36a2a1b999327f657b8cdd77b78e.tar.gz
add a QXmppTransferJob::speed() method to return the speed of a transfer
Diffstat (limited to 'src/QXmppTransferManager.cpp')
-rw-r--r--src/QXmppTransferManager.cpp15
1 files changed, 15 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);
}
}