Merge branch 'master' into network_handler
[situare] / src / network / networkaccessmanager.cpp
index 76757d5..307cdae 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;
 
 NetworkAccessManager::NetworkAccessManager()
-    : m_networkHandler(0),
+    : m_connected(false),
+      m_networkHandler(0),
       m_networkAccessManagerPrivate(0)
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -40,6 +43,8 @@ NetworkAccessManager::NetworkAccessManager()
 
     connect(m_networkHandler, SIGNAL(connected()),
             this, SLOT(connected()));
+    connect(m_networkHandler, SIGNAL(disconnected()),
+            this, SLOT(disconnected()));
 
     connect(m_networkAccessManagerPrivate, SIGNAL(finished(QNetworkReply*)),
             this, SLOT(downloadFinished(QNetworkReply*)));
@@ -56,6 +61,8 @@ void NetworkAccessManager::connected()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
+    m_connected = true;
+
     //Loop through all requests and calls get method.
     foreach (const QNetworkRequest &request, m_requestQueue) {
         QNetworkReply *reply = m_networkAccessManagerPrivate->get(request);
@@ -65,6 +72,13 @@ void NetworkAccessManager::connected()
     m_requestQueue.clear();
 }
 
+void NetworkAccessManager::disconnected()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    m_connected = false;
+}
+
 void NetworkAccessManager::downloadFinished(QNetworkReply *reply)
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -88,7 +102,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 +111,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.
@@ -106,7 +128,6 @@ QNetworkReply *NetworkAccessManager::get(const QNetworkRequest &request)
     }
 }
 
-
 NetworkAccessManager *NetworkAccessManager::instance()
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -117,6 +138,13 @@ NetworkAccessManager *NetworkAccessManager::instance()
     return m_instance;
 }
 
+bool NetworkAccessManager::isConnected()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    return m_connected;
+}
+
 void NetworkAccessManager::setCache(QAbstractNetworkCache *cache)
 {
     qDebug() << __PRETTY_FUNCTION__;