From 22754c6f9444b0cd004c12984cf6eb183c2f6ae5 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 2 Mar 2016 01:12:03 +0100 Subject: [PATCH] Add accessors for the amount of transferred data to Transfer classes Also fixes more inconsistent/missing uses of 'override'. --- src/client/clienttransfer.cpp | 9 +++++++++ src/client/clienttransfer.h | 2 ++ src/common/transfer.h | 4 +++- src/core/coretransfer.cpp | 6 ++++++ src/core/coretransfer.h | 8 +++++--- 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/client/clienttransfer.cpp b/src/client/clienttransfer.cpp index f42e14ed..2aac8cf7 100644 --- a/src/client/clienttransfer.cpp +++ b/src/client/clienttransfer.cpp @@ -31,6 +31,15 @@ ClientTransfer::ClientTransfer(const QUuid &uuid, QObject *parent) } +quint64 ClientTransfer::transferred() const +{ + if (status() == Status::Completed) + return fileSize(); + + return _file ? _file->size() : 0; +} + + void ClientTransfer::cleanUp() { if (_file) { diff --git a/src/client/clienttransfer.h b/src/client/clienttransfer.h index 4f54ef08..a1d062b7 100644 --- a/src/client/clienttransfer.h +++ b/src/client/clienttransfer.h @@ -37,6 +37,8 @@ public: QString savePath() const; + quint64 transferred() const override; + public slots: // called on the client side void accept(const QString &savePath) const override; diff --git a/src/common/transfer.h b/src/common/transfer.h index 9a22253a..48deb5bf 100644 --- a/src/common/transfer.h +++ b/src/common/transfer.h @@ -62,7 +62,7 @@ public: Transfer(const QUuid &uuid, QObject *parent = 0); // for creating a syncable object client-side Transfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 size = 0, QObject *parent = 0); - inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; } + inline const QMetaObject *syncMetaObject() const override { return &staticMetaObject; } QUuid uuid() const; Status status() const; @@ -74,6 +74,8 @@ public: quint64 fileSize() const; QString nick() const; + virtual quint64 transferred() const = 0; + public slots: // called on the client side virtual void accept(const QString &savePath) const { Q_UNUSED(savePath); } diff --git a/src/core/coretransfer.cpp b/src/core/coretransfer.cpp index aced4c6b..0d454ae3 100644 --- a/src/core/coretransfer.cpp +++ b/src/core/coretransfer.cpp @@ -39,6 +39,12 @@ CoreTransfer::CoreTransfer(Direction direction, const QString &nick, const QStri } +quint64 CoreTransfer::transferred() const +{ + return _pos; +} + + void CoreTransfer::cleanUp() { if (_socket) { diff --git a/src/core/coretransfer.h b/src/core/coretransfer.h index 3244efdf..66028b5f 100644 --- a/src/core/coretransfer.h +++ b/src/core/coretransfer.h @@ -36,12 +36,14 @@ class CoreTransfer : public Transfer public: CoreTransfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 size = 0, QObject *parent = 0); + quint64 transferred() const override; + public slots: void start(); // called through sync calls - void requestAccepted(PeerPtr peer); - void requestRejected(PeerPtr peer); + void requestAccepted(PeerPtr peer) override; + void requestRejected(PeerPtr peer) override; private slots: void startReceiving(); @@ -52,7 +54,7 @@ private slots: private: void setupConnectionForReceive(); bool relayData(const QByteArray &data, bool requireChunkSize); - virtual void cleanUp(); + void cleanUp() override; QPointer _peer; QTcpSocket *_socket; -- 2.20.1