From 49e4e8c95d2a1f5f9c48814f894495cbe8dabad2 Mon Sep 17 00:00:00 2001 From: Jussi Laitinen Date: Wed, 26 May 2010 15:55:34 +0300 Subject: [PATCH] Changed NetworkAccessManager to use Singleton. --- src/engine/networkaccessmanager.cpp | 12 ++++++++++++ src/engine/networkaccessmanager.h | 8 +++++--- src/map/mapengine.cpp | 2 +- src/situareservice/situareservice.cpp | 4 ++-- src/src.pro | 3 ++- tests/map/mapengine/mapengine.pro | 15 +++++++++++---- tests/map/ownlocationitem/ownlocationitem.pro | 15 +++++++++++---- 7 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/engine/networkaccessmanager.cpp b/src/engine/networkaccessmanager.cpp index 8470bb1..63de236 100644 --- a/src/engine/networkaccessmanager.cpp +++ b/src/engine/networkaccessmanager.cpp @@ -26,6 +26,8 @@ #include "networkaccessmanager.h" #include "networkreply.h" +NetworkAccessManager *NetworkAccessManager::m_instance = 0; + NetworkAccessManager::NetworkAccessManager(QObject *parent) : QObject(parent), m_networkHandler(0), @@ -41,6 +43,16 @@ NetworkAccessManager::NetworkAccessManager(QObject *parent) this, SLOT(downloadFinished(QNetworkReply*))); } +NetworkAccessManager *NetworkAccessManager::instance(QObject *parent) +{ + qDebug() << __PRETTY_FUNCTION__; + + if (!m_instance) + m_instance = new NetworkAccessManager(parent); + + return m_instance; +} + void NetworkAccessManager::setCache(QAbstractNetworkCache *cache) { qDebug() << __PRETTY_FUNCTION__; diff --git a/src/engine/networkaccessmanager.h b/src/engine/networkaccessmanager.h index 89ca041..4eed37c 100644 --- a/src/engine/networkaccessmanager.h +++ b/src/engine/networkaccessmanager.h @@ -28,8 +28,6 @@ #include #include - - class NetworkHandler; class QNetworkAccessManager; @@ -38,7 +36,7 @@ class NetworkAccessManager : public QObject Q_OBJECT public: - NetworkAccessManager(QObject *parent = 0); + static NetworkAccessManager *instance(QObject *parent = 0); QNetworkReply *get(const QNetworkRequest &request); @@ -46,6 +44,9 @@ public: QAbstractNetworkCache *cache() const; +protected: + NetworkAccessManager(QObject *parent = 0); + private slots: void connected(); void downloadFinished(QNetworkReply *reply); @@ -54,6 +55,7 @@ signals: void finished(QNetworkReply *reply); private: + static NetworkAccessManager *m_instance; NetworkHandler *m_networkHandler; QNetworkAccessManager *m_networkAccessManagerPrivate; QList m_requestQueue; diff --git a/src/map/mapengine.cpp b/src/map/mapengine.cpp index ffca1fa..a481e24 100644 --- a/src/map/mapengine.cpp +++ b/src/map/mapengine.cpp @@ -56,7 +56,7 @@ MapEngine::MapEngine(QObject *parent) m_mapScene = new MapScene(this); - m_mapFetcher = new MapFetcher(new NetworkAccessManager(this), this); + m_mapFetcher = new MapFetcher(NetworkAccessManager::instance(this), this); connect(this, SIGNAL(fetchImage(int, int, int)), m_mapFetcher, SLOT(enqueueFetchMapImage(int, int, int))); connect(m_mapFetcher, SIGNAL(mapImageReceived(int, int, int, QPixmap)), diff --git a/src/situareservice/situareservice.cpp b/src/situareservice/situareservice.cpp index 1b8928d..285fd4d 100644 --- a/src/situareservice/situareservice.cpp +++ b/src/situareservice/situareservice.cpp @@ -37,10 +37,10 @@ SituareService::SituareService(QObject *parent) { qDebug() << __PRETTY_FUNCTION__; - m_networkManager = new NetworkAccessManager(this); + m_networkManager = NetworkAccessManager::instance(this); connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(requestFinished(QNetworkReply*))); - m_imageFetcher = new ImageFetcher(new NetworkAccessManager(this), this); + m_imageFetcher = new ImageFetcher(NetworkAccessManager::instance(this), this); connect(this, SIGNAL(fetchImage(QUrl)), m_imageFetcher, SLOT(fetchImage(QUrl))); connect(m_imageFetcher, SIGNAL(imageReceived(QUrl,QPixmap)), this, SLOT(imageReceived(QUrl, QPixmap))); diff --git a/src/src.pro b/src/src.pro index e59eeab..d6fe687 100644 --- a/src/src.pro +++ b/src/src.pro @@ -5,7 +5,8 @@ TARGET = ../situare TEMPLATE = app INCLUDEPATH += /usr/include/qjson /usr/include/glib-2.0 /usr/lib/glib-2.0/include LIBS += -lqjson -CONFIG += icd2 qdbus +CONFIG += icd2 +QT += dbus RESOURCES += ../images.qrc SOURCES += main.cpp \ ui/mainwindow.cpp \ diff --git a/tests/map/mapengine/mapengine.pro b/tests/map/mapengine/mapengine.pro index db044cf..a1b6bb3 100644 --- a/tests/map/mapengine/mapengine.pro +++ b/tests/map/mapengine/mapengine.pro @@ -2,11 +2,12 @@ # Automatically generated by qmake (2.01a) Fri Mar 26 15:09:16 2010 # ##################################################################### CONFIG += qtestlib -QT += network +QT += network dbus TEMPLATE = app DEPENDPATH += . INCLUDEPATH += . \ - ../../../src/ + ../../../src/ \ + /usr/include/glib-2.0 /usr/lib/glib-2.0/include # Input SOURCES += testmapengine.cpp \ @@ -22,7 +23,10 @@ SOURCES += testmapengine.cpp \ ../../../src/map/baselocationitem.cpp \ ../../../src/user/user.cpp \ ../../../src/map/friendlocationitem.cpp \ - ../../../src/map/gpslocationitem.cpp + ../../../src/map/gpslocationitem.cpp \ + ../../../src/engine/networkaccessmanager.cpp \ + ../../../src/engine/networkhandler.cpp \ + ../../../src/engine/networkreply.cpp HEADERS += ../../../src/map/mapengine.h \ ../../../src/map/mapscene.h \ ../../../src/map/maptile.h \ @@ -36,5 +40,8 @@ HEADERS += ../../../src/map/mapengine.h \ ../../../src/map/baselocationitem.h \ ../../../src/user/user.h \ ../../../src/map/friendlocationitem.h \ - ../../../src/map/gpslocationitem.h + ../../../src/map/gpslocationitem.h \ + ../../../src/engine/networkaccessmanager.h \ + ../../../src/engine/networkhandler.h \ + ../../../src/engine/networkreply.h DEFINES += QT_NO_DEBUG_OUTPUT diff --git a/tests/map/ownlocationitem/ownlocationitem.pro b/tests/map/ownlocationitem/ownlocationitem.pro index 79f2237..97e42d8 100644 --- a/tests/map/ownlocationitem/ownlocationitem.pro +++ b/tests/map/ownlocationitem/ownlocationitem.pro @@ -2,11 +2,12 @@ # Automatically generated by qmake (2.01a) Tue Apr 27 14:52:31 2010 # ##################################################################### CONFIG += qtestlib -QT += network +QT += network dbus TEMPLATE = app DEPENDPATH += . INCLUDEPATH += . \ - ../../../src/ + ../../../src/ \ + /usr/include/glib-2.0 /usr/lib/glib-2.0/include RESOURCES += ../../../images.qrc # Input @@ -23,7 +24,10 @@ SOURCES += testownlocationitem.cpp \ ../../../src/map/maptilerequest.cpp \ ../../../src/map/frienditemshandler.cpp \ ../../../src/map/friendgroupitem.cpp \ - ../../../src/map/gpslocationitem.cpp + ../../../src/map/gpslocationitem.cpp \ + ../../../src/engine/networkaccessmanager.cpp \ + ../../../src/engine/networkhandler.cpp \ + ../../../src/engine/networkreply.cpp HEADERS += ../../../src/map/ownlocationitem.h \ ../../../src/map/mapscene.h \ ../../../src/map/maptile.h \ @@ -37,5 +41,8 @@ HEADERS += ../../../src/map/ownlocationitem.h \ ../../../src/map/maptilerequest.h \ ../../../src/map/frienditemshandler.h \ ../../../src/map/friendgroupitem.h \ - ../../../src/map/gpslocationitem.h + ../../../src/map/gpslocationitem.h \ + ../../../src/engine/networkaccessmanager.h \ + ../../../src/engine/networkhandler.h \ + ../../../src/engine/networkreply.h DEFINES += QT_NO_DEBUG_OUTPUT -- 1.7.9.5