Added NetworkReply class.
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 26 May 2010 07:58:16 +0000 (10:58 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 26 May 2010 07:58:16 +0000 (10:58 +0300)
src/engine/engine.cpp
src/engine/networkaccessmanager.cpp
src/engine/networkaccessmanager.h
src/engine/networkhandler.cpp
src/engine/networkreply.cpp [new file with mode: 0644]
src/engine/networkreply.h [new file with mode: 0644]
src/map/mapfetcher.cpp
src/src.pro

index b1be946..5b62495 100644 (file)
@@ -82,8 +82,8 @@ SituareEngine::SituareEngine(QMainWindow *parent)
 
     // signals connected, now it's time to show the main window
     // but init the MapEngine before so starting location is set
-//    m_mapEngine->init();
-//    m_ui->show();
+    m_mapEngine->init();
+    m_ui->show();
 
     QSettings settings(DIRECTORY_NAME, FILE_NAME);
     QVariant gpsEnabled = settings.value(SETTINGS_GPS_ENABLED);
@@ -99,8 +99,7 @@ SituareEngine::SituareEngine(QMainWindow *parent)
     if (gpsEnabled.toBool() && autoCenteringEnabled.toBool())
         m_ui->showMaemoInformationBox(tr("Auto centering enabled"));
 
-    //Request network state.
-    m_networkHandler->state();
+    m_facebookAuthenticator->start();
 }
 
 SituareEngine::~SituareEngine()
index 2f67958..03fddbb 100644 (file)
 */
 
 #include <QNetworkRequest>
+#include <QNetworkAccessManager>
 
 #include "networkhandler.h"
 #include "networkaccessmanager.h"
+#include "networkreply.h"
 
 NetworkAccessManager::NetworkAccessManager(QObject *parent)
-    : QNetworkAccessManager(parent),
-      m_networkHandler(0)
+    : QObject(parent),
+      m_networkHandler(0),
+      m_networkAccessManagerPrivate(0)
 {
     m_networkHandler = new NetworkHandler(this);
+    m_networkAccessManagerPrivate = new QNetworkAccessManager(this);
 
     connect(m_networkHandler, SIGNAL(connected()),
             this, SLOT(connected()));
 }
 
-QNetworkReply *NetworkAccessManager::getti(const QNetworkRequest &request)
+void NetworkAccessManager::setCache(QAbstractNetworkCache *cache)
+{
+    m_networkAccessManagerPrivate->setCache(cache);
+}
+
+QAbstractNetworkCache *NetworkAccessManager::cache() const
+{
+    return m_networkAccessManagerPrivate->cache();
+}
+
+QNetworkReply *NetworkAccessManager::get(const QNetworkRequest &request)
 {
     if (!m_networkHandler->isConnected()) {
         m_requestQueue.append(request);
         m_networkHandler->connect();
-        return createRequest(QNetworkAccessManager::GetOperation, request);
+        QNetworkReply *reply = new NetworkReply(this);
+        m_replyQueue.append(reply);
+        return reply;
     }
     else {
         return get(request);
@@ -48,8 +64,10 @@ QNetworkReply *NetworkAccessManager::getti(const QNetworkRequest &request)
 
 void NetworkAccessManager::connected()
 {
-    foreach (QNetworkRequest request, m_requestQueue)
-        get(request);
+    foreach (QNetworkRequest request, m_requestQueue) {
+        QNetworkReply *reply = get(request);
+    }
 
+    m_replyQueue.clear();
     m_requestQueue.clear();
 }
index cf67745..ca84d40 100644 (file)
 #ifndef NETWORKACCESSMANAGER_H
 #define NETWORKACCESSMANAGER_H
 
-#include <QNetworkAccessManager>
 #include <QList>
 #include <QNetworkReply>
 #include <QNetworkRequest>
+#include <QAbstractNetworkCache>
+
+
 
 class NetworkHandler;
+class QNetworkAccessManager;
 
-class NetworkAccessManager : public QNetworkAccessManager
+class NetworkAccessManager : public QObject
 {
     Q_OBJECT
 
 public:
     NetworkAccessManager(QObject *parent = 0);
 
-    QNetworkReply *getti(const QNetworkRequest &request);
+    QNetworkReply *get(const QNetworkRequest &request);
+
+    void setCache(QAbstractNetworkCache *cache);
+
+    QAbstractNetworkCache *cache() const;
 
 private slots:
     void connected();
 
 private:
     NetworkHandler *m_networkHandler;
+    QNetworkAccessManager *m_networkAccessManagerPrivate;
     QList<QNetworkRequest> m_requestQueue;
+    QList<QNetworkReply*> m_replyQueue;
 };
 
 #endif // NETWORKACCESSMANAGER_H
index 4a85519..228b1f5 100644 (file)
@@ -37,6 +37,8 @@ NetworkHandler::NetworkHandler(QObject *parent)
     dBusConnection.connect(ICD_DBUS_API_INTERFACE, ICD_DBUS_API_PATH, ICD_DBUS_API_INTERFACE,
                            ICD_DBUS_API_STATE_SIG,
                            this, SLOT(stateChanged(const QDBusMessage &)));
+
+    state();
 }
 
 void NetworkHandler::stateChanged(const QDBusMessage &message)
diff --git a/src/engine/networkreply.cpp b/src/engine/networkreply.cpp
new file mode 100644 (file)
index 0000000..539d523
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+   Situare - A location system for Facebook
+   Copyright (C) 2010  Ixonos Plc. Authors:
+
+       Jussi Laitinen - jussi.laitinen@ixonos.com
+
+   Situare is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License
+   version 2 as published by the Free Software Foundation.
+
+   Situare is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Situare; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+   USA.
+*/
+
+#include "networkreply.h"
+
+NetworkReply::NetworkReply(QObject *parent)
+    : QNetworkReply(parent)
+{
+}
+
+qint64 NetworkReply::readData(char *data, qint64 maxlen)
+{
+    if (m_offset < m_content.size()) {
+        qint64 number = qMin(maxlen, m_content.size() - m_offset);
+        memcpy(data, m_content.constData() + m_offset, number);
+        m_offset += number;
+        return number;
+    } else
+        return -1;
+}
+
+void NetworkReply::abort()
+{
+
+}
diff --git a/src/engine/networkreply.h b/src/engine/networkreply.h
new file mode 100644 (file)
index 0000000..4e94b33
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+   Situare - A location system for Facebook
+   Copyright (C) 2010  Ixonos Plc. Authors:
+
+       Jussi Laitinen - jussi.laitinen@ixonos.com
+
+   Situare is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License
+   version 2 as published by the Free Software Foundation.
+
+   Situare is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Situare; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+   USA.
+*/
+
+#ifndef NETWORKREPLY_H
+#define NETWORKREPLY_H
+
+#include <QNetworkReply>
+
+class NetworkReply : public QNetworkReply
+{
+public:
+    NetworkReply(QObject *parent = 0);
+
+protected:
+    qint64 readData(char *data, qint64 maxlen);
+    void abort();
+
+private:
+    QByteArray m_content;
+    qint64 m_offset;
+
+};
+
+#endif // NETWORKREPLY_H
index 7b0acfe..ff6fefb 100644 (file)
@@ -293,7 +293,7 @@ void MapFetcher::startNextDownload()
 
         QNetworkRequest request(url);
         request.setRawHeader("User-Agent", "Situare");
-        QNetworkReply *reply = m_manager->getti(request);
+        QNetworkReply *reply = m_manager->get(request);
 
         m_currentDownloads.append(reply);
     }
index 2c989cc..d9ed2ea 100644 (file)
@@ -44,7 +44,8 @@ SOURCES += main.cpp \
     ui/userinfo.cpp \
     engine/networkhandler.cpp \
     ui/sidepanel.cpp \
-    engine/networkaccessmanager.cpp
+    engine/networkaccessmanager.cpp \
+    engine/networkreply.cpp
 HEADERS += ui/mainwindow.h \
     map/mapengine.h \
     map/mapview.h \
@@ -87,7 +88,8 @@ HEADERS += ui/mainwindow.h \
     ui/userinfo.h \
     engine/networkhandler.h \
     ui/sidepanel.h \
-    engine/networkaccessmanager.h
+    engine/networkaccessmanager.h \
+    engine/networkreply.h
 QT += network \
     webkit