From 4503d1e22d1eeac9c0dded725cc86bc7752ecb2c Mon Sep 17 00:00:00 2001 From: Jussi Laitinen Date: Wed, 16 Jun 2010 13:03:24 +0300 Subject: [PATCH] Added network error flag to NetworkReply. --- src/common.h | 3 ++- src/engine/engine.cpp | 6 +++++- src/network/networkaccessmanager.cpp | 14 ++++++++++++-- src/network/networkaccessmanager.h | 2 +- src/network/networkhandlerprivate.cpp | 2 +- src/network/networkreply.cpp | 9 ++++++++- src/network/networkreply.h | 17 ++++++++++++----- src/situareservice/situareservice.cpp | 4 ++-- src/src.pro | 23 +++++++++++++---------- 9 files changed, 56 insertions(+), 24 deletions(-) diff --git a/src/common.h b/src/common.h index b104f72..3893a9e 100644 --- a/src/common.h +++ b/src/common.h @@ -68,7 +68,8 @@ namespace SituareError { MAP_IMAGE_DOWNLOAD_FAILED, // map image download failed from OSM GPS_INITIALIZATION_FAILED, // GPS intialization failed UNKNOWN_REPLY, // unknown reply from situare server - INVALID_JSON // JSON parsing failed i.e. invalid JSON string + INVALID_JSON, // JSON parsing failed i.e. invalid JSON string + CONNECTION_ERROR // connection error }; } diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 47771dc..0a86cea 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -209,7 +209,7 @@ void SituareEngine::enableAutomaticLocationUpdate(bool enabled, int updateInterv void SituareEngine::error(const int error) { - qDebug() << __PRETTY_FUNCTION__; + qWarning() << __PRETTY_FUNCTION__; switch(error) { @@ -225,6 +225,10 @@ void SituareEngine::error(const int error) case QNetworkReply::TimeoutError: m_ui->buildInformationBox(tr("Connection timed out"), true); break; + case QNetworkReply::UnknownNetworkError: + m_ui->buildInformationBox(tr("Network error. Please connect to network"), true); + m_ui->toggleProgressIndicator(false); + break; case SituareError::SESSION_EXPIRED: m_ui->buildInformationBox(tr("Session expired. Please login again"), true); m_facebookAuthenticator->clearAccountInformation(true); // keep username = true diff --git a/src/network/networkaccessmanager.cpp b/src/network/networkaccessmanager.cpp index 76757d5..35eeff9 100644 --- a/src/network/networkaccessmanager.cpp +++ b/src/network/networkaccessmanager.cpp @@ -22,10 +22,12 @@ #include #include #include +#include #include "networkhandler.h" #include "networkaccessmanager.h" #include "networkreply.h" +#include "common.h" NetworkAccessManager *NetworkAccessManager::m_instance = 0; @@ -88,7 +90,7 @@ void NetworkAccessManager::downloadFinished(QNetworkReply *reply) } } -QNetworkReply *NetworkAccessManager::get(const QNetworkRequest &request) +QNetworkReply *NetworkAccessManager::get(const QNetworkRequest &request, bool onlineRequestsOnly) { qDebug() << __PRETTY_FUNCTION__; @@ -97,7 +99,15 @@ QNetworkReply *NetworkAccessManager::get(const QNetworkRequest &request) m_requestQueue.append(request); m_networkHandler->connect(); QNetworkReply *reply = new NetworkReply(request, this); - m_offlineReplyQueue.insert(request.url().toString(), reply); + + if (onlineRequestsOnly) { + ((NetworkReply*)reply)->setErrorCode(QNetworkReply::UnknownNetworkError); + emit finished(reply); + } + else { + m_offlineReplyQueue.insert(request.url().toString(), reply); + } + return reply; } //Connected, use normal get method. diff --git a/src/network/networkaccessmanager.h b/src/network/networkaccessmanager.h index 10a2ae3..3a166a2 100644 --- a/src/network/networkaccessmanager.h +++ b/src/network/networkaccessmanager.h @@ -59,7 +59,7 @@ public: * @param request QNetworkRequest * @return QNetworkReply */ - QNetworkReply *get(const QNetworkRequest &request); + QNetworkReply *get(const QNetworkRequest &request, bool onlineRequestsOnly = false); /** * @brief Sets cache. diff --git a/src/network/networkhandlerprivate.cpp b/src/network/networkhandlerprivate.cpp index 3d3b63a..31760c2 100644 --- a/src/network/networkhandlerprivate.cpp +++ b/src/network/networkhandlerprivate.cpp @@ -51,7 +51,7 @@ NetworkHandlerPrivate::NetworkHandlerPrivate(QObject *parent) void NetworkHandlerPrivate::stateChanged(const QDBusMessage &message) { - qDebug() << __PRETTY_FUNCTION__; + qDebug() << __PRETTY_FUNCTION__ << message; if (message.arguments().count() > CONNECTION_STATE_INDEX) { diff --git a/src/network/networkreply.cpp b/src/network/networkreply.cpp index ea3756c..23bfb2b 100644 --- a/src/network/networkreply.cpp +++ b/src/network/networkreply.cpp @@ -31,6 +31,11 @@ NetworkReply::NetworkReply(const QNetworkRequest &request, QObject *parent) setRequest(request); } +void NetworkReply::abort() +{ + qDebug() << __PRETTY_FUNCTION__; +} + qint64 NetworkReply::readData(char *data, qint64 maxlen) { qDebug() << __PRETTY_FUNCTION__; @@ -44,7 +49,9 @@ qint64 NetworkReply::readData(char *data, qint64 maxlen) return -1; } -void NetworkReply::abort() +void NetworkReply::setErrorCode(QNetworkReply::NetworkError errorCode) { qDebug() << __PRETTY_FUNCTION__; + + setError(errorCode, ""); } diff --git a/src/network/networkreply.h b/src/network/networkreply.h index dc5755a..2adb3d0 100644 --- a/src/network/networkreply.h +++ b/src/network/networkreply.h @@ -41,11 +41,23 @@ public: */ NetworkReply(const QNetworkRequest &request, QObject *parent = 0); + /** + * @brief Set error code + * + * @param errorCode QNetworkReply::NetworkError + */ + void setErrorCode(QNetworkReply::NetworkError errorCode); + /******************************************************************************* * BASE CLASS INHERITED AND REIMPLEMENTED MEMBER FUNCTIONS ******************************************************************************/ protected: /** + * @brief Aborts the operation. + */ + void abort(); + + /** * @brief Reads data from the device. * * @param data data is read into this @@ -54,11 +66,6 @@ protected: */ qint64 readData(char *data, qint64 maxlen); - /** - * @brief Aborts the operation. - */ - void abort(); - /******************************************************************************* * DATA MEMBERS ******************************************************************************/ diff --git a/src/situareservice/situareservice.cpp b/src/situareservice/situareservice.cpp index 2360ee1..119a8ea 100644 --- a/src/situareservice/situareservice.cpp +++ b/src/situareservice/situareservice.cpp @@ -40,7 +40,7 @@ SituareService::SituareService(QObject *parent) m_networkManager = NetworkAccessManager::instance(); connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), - this, SLOT(requestFinished(QNetworkReply*))); + this, SLOT(requestFinished(QNetworkReply*)), Qt::QueuedConnection); m_imageFetcher = new ImageFetcher(NetworkAccessManager::instance(), this); connect(this, SIGNAL(fetchImage(QUrl)), @@ -233,7 +233,7 @@ void SituareService::sendRequest(const QUrl &url, const QString &cookieType, con request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, false); request.setRawHeader(cookieType.toAscii(), cookie.toUtf8()); - QNetworkReply *reply = m_networkManager->get(request); + QNetworkReply *reply = m_networkManager->get(request, true); m_currentRequests.append(reply); } diff --git a/src/src.pro b/src/src.pro index 32d698b..244baf8 100644 --- a/src/src.pro +++ b/src/src.pro @@ -101,6 +101,7 @@ HEADERS += common.h \ user/user.h QT += network \ webkit + DEFINES += QT_NO_DEBUG_OUTPUT simulator { @@ -119,16 +120,18 @@ simulator { HEADERS += network/networkhandlerprivate.h QT += dbus CONFIG += icd2 - SOURCES += gps/gpspositionprivateliblocation.cpp \ - gps/liblocationwrapper.cpp \ - gps/geopositioninfo.cpp \ - gps/geocoordinate.cpp - HEADERS += gps/gpspositionprivateliblocation.h \ - gps/liblocationwrapper.h \ - gps/geopositioninfo.h \ - gps/geocoordinate.h - CONFIG += link_pkgconfig - PKGCONFIG += glib-2.0 liblocation +# SOURCES += gps/gpspositionprivateliblocation.cpp \ +# gps/liblocationwrapper.cpp \ +# gps/geopositioninfo.cpp \ +# gps/geocoordinate.cpp +# HEADERS += gps/gpspositionprivateliblocation.h \ +# gps/liblocationwrapper.h \ +# gps/geopositioninfo.h \ +# gps/geocoordinate.h +# CONFIG += link_pkgconfig +# PKGCONFIG += glib-2.0 liblocation + SOURCES += gps/gpspositionprivatestub.cpp + HEADERS += gps/gpspositionprivatestub.h } else { SOURCES += gps/gpspositionprivatestub.cpp \ network/networkhandlerprivatestub.cpp -- 1.7.9.5