do not propagate error message when it is 'only' a content error because then there will also be a reply finished

This commit is contained in:
Hauke Schade 2013-07-30 19:44:07 +02:00
parent 2c542c01a3
commit cda37c3cd7
2 changed files with 28 additions and 13 deletions

View file

@ -12,6 +12,7 @@
#include "mynetworkmanager.hh"
#include <QtNetwork/QNetworkDiskCache>
#include <QDesktopServices>
#include <QDebug>
QScopedPointer<MyNetworkManager> MyNetworkManager::m_instance(0);
@ -44,18 +45,18 @@ QNetworkReply *MyNetworkAccessManager::createRequest( QNetworkAccessManager::Ope
QNetworkRequest request(req);
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
QNetworkReply *reply = QNetworkAccessManager::createRequest(op, request, outgoingData);
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
return reply;
}
void MyNetworkAccessManager::onError() {
this->error();
void MyNetworkAccessManager::onError(QNetworkReply::NetworkError e) {
qDebug() << "got network error " << (int)e;
if (e < QNetworkReply::ContentAccessDenied)
this->error();
}
void MyNetworkManager::onError() {
_numRequests--;
if (_numRequests == 0)
loadingChanged();
this->decNumRequests();
}
void MyNetworkManager::onSslErrors(QNetworkReply *reply, const QList<QSslError> &errors) {
@ -64,15 +65,11 @@ void MyNetworkManager::onSslErrors(QNetworkReply *reply, const QList<QSslError>
}
void MyNetworkManager::onStarted() {
_numRequests++;
if (_numRequests > 0)
loadingChanged();
this->incNumRequests();
}
void MyNetworkManager::onReplyFinished(QNetworkReply *reply) {
_numRequests--;
if (_numRequests == 0)
loadingChanged();
this->decNumRequests();
}
//void MyNetworkManager::onReplyFinished(QNetworkReply *reply) {

View file

@ -15,6 +15,8 @@
#include <qdeclarativenetworkaccessmanagerfactory.h>
#include <QtNetwork/qnetworkreply.h>
#include <QtNetwork/QNetworkAccessManager>
#include <QMutex>
#include <QDebug>
class MyNetworkManager : public QObject, public QDeclarativeNetworkAccessManagerFactory
{
@ -42,6 +44,22 @@ private slots:
private:
static QScopedPointer<MyNetworkManager> m_instance;
int _numRequests;
QMutex _mutex;
void incNumRequests() {
QMutexLocker locker(&_mutex);
_numRequests++;
qDebug() << "numReq is now " << _numRequests;
if (_numRequests == 1)
loadingChanged();
}
void decNumRequests() {
QMutexLocker locker(&_mutex);
_numRequests--;
qDebug() << "numReq is now " << _numRequests;
if (_numRequests == 0)
loadingChanged();
}
};
class MyNetworkAccessManager : public QNetworkAccessManager {
@ -50,7 +68,7 @@ public:
MyNetworkAccessManager(QObject *parent = 0) : QNetworkAccessManager(parent) { }
private slots:
void onError();
void onError(QNetworkReply::NetworkError e);
signals:
void started();