}
void DownloadItem::start() {
- m_reply = The::http()->simpleGet(m_url);
+ m_reply = The::http()->request(m_url);
init();
}
this, SLOT(requestFinished()));
// start timer for the download estimation
+ m_totalTime = 0;
m_downloadTime.start();
speedCheckTimer->start();
QVariant locationHeader = m_reply->header(QNetworkRequest::LocationHeader);
if (locationHeader.isValid()) {
m_url = locationHeader.toUrl();
- qDebug() << "Redirecting to" << m_url;
+ // qDebug() << "Redirecting to" << m_url;
tryAgain();
return;
}
m_status = Downloading;
emit statusChanged();
} else {
- int bufferPercent = bytesReceived * 100 / qMax(bufferSize, neededBytes);
+ int bytes = qMax(bufferSize, neededBytes);
+ int bufferPercent = 0;
+ if (bytes > 0)
+ bufferPercent = bytesReceived * 100 / bytes;
emit bufferProgress(bufferPercent);
}
if (m_finishedDownloading)
return -1.0;
- double timeRemaining = ((double)(bytesTotal() - bytesReceived())) / currentSpeed();
+ double speed = currentSpeed();
+ double timeRemaining = 0.0;
+ if (speed > 0.0)
+ timeRemaining = ((double)(bytesTotal() - bytesReceived())) / speed;
// When downloading the eta should never be 0
if (timeRemaining == 0)
if (m_finishedDownloading)
return -1.0;
- return m_bytesReceived * 1000.0 / m_downloadTime.elapsed();
+ int elapsed = m_downloadTime.elapsed();
+ double speed = -1.0;
+ if (elapsed > 0)
+ speed = m_bytesReceived * 1000.0 / elapsed;
+ return speed;
}
void DownloadItem::requestFinished() {
}
m_file.close();
m_status = Finished;
+ m_totalTime = m_downloadTime.elapsed() / 1000.0;
emit statusChanged();
emit finished();
m_reply->deleteLater();
return QString(QLatin1String("%1 %2")).arg(speedInt).arg(unit);
}
-QString DownloadItem::formattedTime(double timeRemaining) {
+QString DownloadItem::formattedTime(double timeRemaining, bool remaining) {
QString timeRemainingString = tr("seconds");
if (timeRemaining > 60) {
timeRemaining = timeRemaining / 60;
timeRemainingString = tr("minutes");
}
timeRemaining = floor(timeRemaining);
- return tr("%4 %5 remaining")
+ QString msg = remaining ? tr("%4 %5 remaining") : "%4 %5";
+ return msg
.arg(timeRemaining)
.arg(timeRemainingString);
}