Added network error flag to NetworkReply.
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 16 Jun 2010 10:03:24 +0000 (13:03 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 16 Jun 2010 10:03:24 +0000 (13:03 +0300)
src/common.h
src/engine/engine.cpp
src/network/networkaccessmanager.cpp
src/network/networkaccessmanager.h
src/network/networkhandlerprivate.cpp
src/network/networkreply.cpp
src/network/networkreply.h
src/situareservice/situareservice.cpp
src/src.pro

index b104f72..3893a9e 100644 (file)
@@ -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
     };
 }
 
index 47771dc..0a86cea 100644 (file)
@@ -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
index 76757d5..35eeff9 100644 (file)
 #include <QNetworkRequest>
 #include <QNetworkAccessManager>
 #include <QDebug>
+#include <QTimer>
 
 #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.
index 10a2ae3..3a166a2 100644 (file)
@@ -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.
index 3d3b63a..31760c2 100644 (file)
@@ -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) {
 
index ea3756c..23bfb2b 100644 (file)
@@ -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, "");
 }
index dc5755a..2adb3d0 100644 (file)
@@ -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
  ******************************************************************************/
index 2360ee1..119a8ea 100644 (file)
@@ -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);
 }
index 32d698b..244baf8 100644 (file)
@@ -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