コード例 #1
0
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();
}
コード例 #2
0
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);
}