aboutsummaryrefslogtreecommitdiff
path: root/src
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
parentf6d667262a5d86eb3c63213d9d21ee6269aa0000 (diff)
downloadqxmpp-e6c18670dbcb36a2a1b999327f657b8cdd77b78e.tar.gz
add a QXmppTransferJob::speed() method to return the speed of a transfer
Diffstat (limited to 'src')
-rw-r--r--src/QXmppTransferManager.cpp15
-rw-r--r--src/QXmppTransferManager.h3
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;