X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoretransfer.cpp;h=1b03b45bc6ddc17b1963c669a525c50dc913524d;hp=766136e0d17bb2145f5fdefedac408c5cad7cd80;hb=ee8b9f55860e340c1600188fddcfd557c7489f66;hpb=324ae188301d46e2268462bc0d8411baed8f00b8 diff --git a/src/core/coretransfer.cpp b/src/core/coretransfer.cpp index 766136e0..1b03b45b 100644 --- a/src/core/coretransfer.cpp +++ b/src/core/coretransfer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -39,6 +39,12 @@ CoreTransfer::CoreTransfer(Direction direction, const QString &nick, const QStri } +quint64 CoreTransfer::transferred() const +{ + return _pos; +} + + void CoreTransfer::cleanUp() { if (_socket) { @@ -54,7 +60,7 @@ void CoreTransfer::cleanUp() void CoreTransfer::onSocketDisconnected() { - if (state() == State::Connecting || state() == State::Transferring) { + if (status() == Status::Connecting || status() == Status::Transferring) { setError(tr("Socket closed while still transferring!")); } else @@ -66,7 +72,7 @@ void CoreTransfer::onSocketError(QAbstractSocket::SocketError error) { Q_UNUSED(error) - if (state() == State::Connecting || state() == State::Transferring) { + if (status() == Status::Connecting || status() == Status::Transferring) { setError(tr("DCC connection error: %1").arg(_socket->errorString())); } } @@ -74,11 +80,11 @@ void CoreTransfer::onSocketError(QAbstractSocket::SocketError error) void CoreTransfer::requestAccepted(PeerPtr peer) { - if (_peer || !peer || state() != State::New) + if (_peer || !peer || status() != Status::New) return; // transfer was already accepted _peer = peer; - setState(State::Pending); + setStatus(Status::Pending); emit accepted(peer); @@ -89,11 +95,11 @@ void CoreTransfer::requestAccepted(PeerPtr peer) void CoreTransfer::requestRejected(PeerPtr peer) { - if (_peer || state() != State::New) + if (_peer || status() != Status::New) return; _peer = peer; - setState(State::Rejected); + setStatus(Status::Rejected); emit rejected(peer); } @@ -101,7 +107,7 @@ void CoreTransfer::requestRejected(PeerPtr peer) void CoreTransfer::start() { - if (!_peer || state() != State::Pending || direction() != Direction::Receive) + if (!_peer || status() != Status::Pending || direction() != Direction::Receive) return; setupConnectionForReceive(); @@ -115,7 +121,7 @@ void CoreTransfer::setupConnectionForReceive() return; } - setState(State::Connecting); + setStatus(Status::Connecting); _socket = new QTcpSocket(this); connect(_socket, SIGNAL(connected()), SLOT(startReceiving())); @@ -129,7 +135,7 @@ void CoreTransfer::setupConnectionForReceive() void CoreTransfer::startReceiving() { - setState(State::Transferring); + setStatus(Status::Transferring); } @@ -142,6 +148,7 @@ void CoreTransfer::onDataReceived() while (_socket->bytesAvailable()) { QByteArray data = _socket->read(chunkSize); _pos += data.size(); + emit transferredChanged(transferred()); if (!relayData(data, true)) return; @@ -162,7 +169,7 @@ void CoreTransfer::onDataReceived() else if (_pos == fileSize()) { qDebug() << "DCC Receive: Transfer finished"; if (relayData(QByteArray(), false)) // empty buffer - setState(State::Completed); + setStatus(Status::Completed); } _reading = false;