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 }