File indexing completed on 2024-03-24 15:17:05

0001 /*
0002     SPDX-FileCopyrightText: 2015-2017 Pavel Mraz
0003 
0004     SPDX-FileCopyrightText: 2017 Jasem Mutlaq
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "urlfiledownload.h"
0010 #include <QDebug>
0011 
0012 UrlFileDownload::UrlFileDownload(QObject *parent, QNetworkDiskCache *cache) : QObject(parent)
0013 {
0014     connect(&m_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(downloadFinished(QNetworkReply*)));
0015 
0016     m_manager.setCache(cache);
0017 }
0018 
0019 void UrlFileDownload::begin(const QUrl &url, const pixCacheKey_t &key)
0020 {
0021     QNetworkRequest request(url);
0022     request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
0023 
0024     QNetworkReply *reply = m_manager.get(request);
0025 
0026     connect(this, SIGNAL(sigAbort()), reply, SLOT(abort()));
0027 
0028     QVariant val;
0029     val.setValue(key);
0030     reply->setProperty("user_data0", val);
0031 }
0032 
0033 void UrlFileDownload::abortAll()
0034 {
0035     emit sigAbort();
0036 }
0037 
0038 void UrlFileDownload::downloadFinished(QNetworkReply *reply)
0039 {
0040     pixCacheKey_t key = reply->property("user_data0").value<pixCacheKey_t>();
0041 
0042     //QVariant fromCache = reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute);
0043 
0044     if (reply->error() == QNetworkReply::NoError)
0045     {
0046         QByteArray data = reply->readAll();
0047 
0048         emit sigDownloadDone(reply->error(), data, key);
0049     }
0050     else
0051     {
0052         QByteArray empty;
0053         emit sigDownloadDone(reply->error(), empty, key);
0054     }
0055 
0056     reply->deleteLater();
0057 }