void Kopete::Transfer::timerEvent( QTimerEvent *event ) { if ( event->timerId() != d->transferRateTimer ) { KIO::Job::timerEvent( event ); return; } // Calculate average transferRate qint64 bytesPerSecond = 0; for ( int i = 0; i < TransferRateWindowLength; ++i ) bytesPerSecond += d->transferRate[i]; bytesPerSecond /= qint64( TransferRateWindowLength ); for ( int i = TransferRateWindowLength - 2; i >= 0; --i ) d->transferRate[i + 1] = d->transferRate[i]; d->transferRate[0] = 0; emitSpeed( bytesPerSecond ); // Stop the timer if there is no activity. if ( bytesPerSecond == 0 ) stopTransferRateTimer(); }
void FileTransferJob::startTransfer() { setProcessedAmount(Bytes, 0); mTime = QTime::currentTime(); description(this, i18n("Receiving file over KDE Connect"), QPair<QString, QString>(i18nc("File transfer origin", "From"), mFrom), QPair<QString, QString>(i18nc("File transfer destination", "To"), mDestination.toLocalFile())); QNetworkRequest req(mDestination); req.setHeader(QNetworkRequest::ContentLengthHeader, totalAmount(Bytes)); mReply = Daemon::instance()->networkAccessManager()->put(req, mOrigin.data()); connect(mReply, &QNetworkReply::uploadProgress, this, [this](qint64 bytesSent, qint64 /*bytesTotal*/) { setProcessedAmount(Bytes, bytesSent); emitSpeed(bytesSent/mTime.elapsed()); }); connect(mReply, &QNetworkReply::finished, this, &FileTransferJob::transferFinished); }