18 #include "CachingNetworkManagerFactory.h"
20 #include <QNetworkDiskCache>
21 #include <QNetworkAccessManager>
22 #include <QStandardPaths>
24 CachingNetworkAccessManager::CachingNetworkAccessManager(QObject *parent)
25 : QNetworkAccessManager(parent)
27 m_networkingStatus =
new ubuntu::connectivity::NetworkingStatus(
this);
30 QNetworkReply* CachingNetworkAccessManager::createRequest(Operation op,
const QNetworkRequest &request, QIODevice *outgoingData)
32 if (m_networkingStatus->status() != ubuntu::connectivity::NetworkingStatus::Status::Online) {
33 QNetworkRequest req(request);
34 req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
35 return QNetworkAccessManager::createRequest(op, req, outgoingData);
38 return QNetworkAccessManager::createRequest(op, request, outgoingData);
41 CachingNetworkManagerFactory::CachingNetworkManagerFactory()
45 QNetworkAccessManager *CachingNetworkManagerFactory::create(QObject *parent) {
46 QNetworkAccessManager *manager =
new CachingNetworkAccessManager(parent);
48 QNetworkDiskCache* cache =
new QNetworkDiskCache(manager);
49 cache->setCacheDirectory(QStringLiteral(
"%1/network").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)));
51 manager->setCache(cache);