18 #include "CachingNetworkManagerFactory.h"
20 #include <QNetworkDiskCache>
21 #include <QNetworkAccessManager>
22 #include <QStandardPaths>
23 #include <QNetworkConfigurationManager>
25 CachingNetworkAccessManager::CachingNetworkAccessManager(QObject *parent)
26 : QNetworkAccessManager(parent)
28 m_networkManager =
new QNetworkConfigurationManager(
this);
30 QObject::connect(m_networkManager, &QNetworkConfigurationManager::onlineStateChanged,
this, &CachingNetworkAccessManager::onlineStateChanged);
31 m_isOnline = m_networkManager->isOnline();
34 void CachingNetworkAccessManager::onlineStateChanged(
bool isOnline)
36 m_isOnline = isOnline;
39 QNetworkReply* CachingNetworkAccessManager::createRequest(Operation op,
const QNetworkRequest &request, QIODevice *outgoingData)
42 QNetworkRequest req(request);
43 req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
44 return QNetworkAccessManager::createRequest(op, req, outgoingData);
47 return QNetworkAccessManager::createRequest(op, request, outgoingData);
50 CachingNetworkManagerFactory::CachingNetworkManagerFactory()
54 QNetworkAccessManager *CachingNetworkManagerFactory::create(QObject *parent) {
55 QNetworkAccessManager *manager =
new CachingNetworkAccessManager(parent);
57 QNetworkDiskCache* cache =
new QNetworkDiskCache(manager);
58 cache->setCacheDirectory(QString(
"%1/network").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)));
60 manager->setCache(cache);