#include "video.h"
#include <QDesktopServices>
+#include <QDebug>
+
+#ifdef APP_MAC
+#include "macutils.h"
+#endif
namespace The {
NetworkAccess* http();
}
DownloadItem::~DownloadItem() {
- if (m_reply) delete m_reply;
- if (video) delete video;
+ if (m_reply) {
+ delete m_reply;
+ m_reply = 0;
+ }
+ if (video) {
+ delete video;
+ video = 0;
+ }
}
void DownloadItem::start() {
void DownloadItem::openFolder() {
QFileInfo info(m_file);
+#ifdef APP_MAC
+ mac::showInFinder(info.absoluteFilePath());
+#else
QUrl url = QUrl::fromLocalFile(info.absolutePath());
QDesktopServices::openUrl(url);
+#endif
}
void DownloadItem::tryAgain() {
}
void DownloadItem::downloadReadyRead() {
+ if (!m_reply) return;
if (!m_file.isOpen()) {
if (!m_file.open(QIODevice::ReadWrite)) {
void DownloadItem::error(QNetworkReply::NetworkError) {
-#ifdef DOWNLOADMANAGER_DEBUG
- qDebug() << "DownloadItem::" << __FUNCTION__ << m_reply->errorString() << m_url;
-#endif
-
- qDebug() << m_reply->errorString();
+ if (m_reply) {
+ qWarning() << m_reply->errorString() << m_reply->url().toEncoded();
+ m_errorMessage = m_reply->errorString();
+ }
- m_errorMessage = m_reply->errorString();
m_reply = 0;
m_status = Failed;
}
void DownloadItem::metaDataChanged() {
+ if (!m_reply) return;
QVariant locationHeader = m_reply->header(QNetworkRequest::LocationHeader);
if (locationHeader.isValid()) {
m_url = locationHeader.toUrl();
void DownloadItem::downloadProgress(qint64 bytesReceived, qint64 bytesTotal) {
+ // qDebug() << bytesReceived << bytesTotal << m_downloadTime.elapsed();
+
if (m_lastProgressTime.elapsed() < 150) return;
m_lastProgressTime.start();
if (m_status != Downloading) {
- int neededBytes = (int) (bytesTotal * .01);
+ int neededBytes = (int) (bytesTotal * .001);
// qDebug() << bytesReceived << bytesTotal << neededBytes << m_downloadTime.elapsed();
int bufferSize = initialBufferSize();
if (bytesReceived > bufferSize
&& bytesReceived > neededBytes
- && m_downloadTime.elapsed() > 1000 ) {
+ && (m_downloadTime.elapsed() > 1000)) {
emit bufferProgress(100);
m_status = Downloading;
emit statusChanged();
qDebug() << "Request finished but never started saving";
return;
}
+ if (m_status == Starting) {
+ m_status = Downloading;
+ emit statusChanged();
+ }
m_file.close();
m_status = Finished;
emit statusChanged();