@@ -20,15 +20,44 @@
20#include <QNetworkDiskCache>
20#include <QNetworkDiskCache>
21#include <QNetworkAccessManager>
21#include <QNetworkAccessManager>
22#include <QStandardPaths>
22#include <QStandardPaths>
24+#include <QNetworkConfigurationManager>
26+CachingNetworkAccessManager::CachingNetworkAccessManager(QObject *parent)
27+ : QNetworkAccessManager(parent)
29+ m_networkManager = new QNetworkConfigurationManager(this);
31+ QObject::connect(m_networkManager, &QNetworkConfigurationManager::onlineStateChanged, this, &CachingNetworkAccessManager::onlineStateChanged);
32+ m_isOnline = m_networkManager->isOnline();
35+void CachingNetworkAccessManager::onlineStateChanged(bool isOnline)
37+ m_isOnline = isOnline;
40+QNetworkReply* CachingNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
43+ QNetworkRequest req(request);
44+ req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
45+ return QNetworkAccessManager::createRequest(op, req, outgoingData);
48+ return QNetworkAccessManager::createRequest(op, request, outgoingData);
24CachingNetworkManagerFactory::CachingNetworkManagerFactory()
51CachingNetworkManagerFactory::CachingNetworkManagerFactory()
25− : m_cache(new QNetworkDiskCache())
27− m_cache->setCacheDirectory(QString("%1/network").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)));
30QNetworkAccessManager *CachingNetworkManagerFactory::create(QObject *parent) {
55QNetworkAccessManager *CachingNetworkManagerFactory::create(QObject *parent) {
31− QNetworkAccessManager *manager = new QNetworkAccessManager(parent);
56+ QNetworkAccessManager *manager = new CachingNetworkAccessManager(parent);
58+ QNetworkDiskCache* cache = new QNetworkDiskCache(manager);
59+ cache->setCacheDirectory(QString("%1/network").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)));
32− manager->setCache(m_cache);
61+ manager->setCache(cache);
33 return manager;
62 return manager;