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:
parent
2c542c01a3
commit
cda37c3cd7
2 changed files with 28 additions and 13 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue