From 78e0b0365f4fc37b016b1c352afffb34123f5375 Mon Sep 17 00:00:00 2001 From: Jussi Laitinen Date: Fri, 7 May 2010 11:48:50 +0300 Subject: [PATCH] Integrated gps to map view. --- src/engine/engine.cpp | 9 ++++++++- src/engine/engine.h | 6 +++++- src/gps/gpsposition.cpp | 8 +++++--- src/gps/gpsposition.h | 1 + src/map/mapengine.cpp | 12 ------------ src/map/mapengine.h | 6 ------ src/ui/mainwindow.cpp | 3 +++ src/ui/mainwindow.h | 7 +++++++ src/ui/mapviewscreen.cpp | 22 +++++----------------- src/ui/mapviewscreen.h | 7 +++++++ 10 files changed, 41 insertions(+), 40 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 605bc33..6905077 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -23,6 +23,7 @@ #include "engine.h" #include "ui/mainwindow.h" +#include "gps/gpsposition.h" SituareEngine::SituareEngine(QMainWindow *parent) : QObject(parent) @@ -34,6 +35,8 @@ SituareEngine::SituareEngine(QMainWindow *parent) m_facebookAuthenticator = new FacebookAuthentication(); + m_gps = new GPSPosition(this); + connect(m_facebookAuthenticator, SIGNAL(credentialsReady(FacebookCredentials)), m_situareService, SLOT(credentialsReady(FacebookCredentials))); connect(m_facebookAuthenticator, SIGNAL(credentialsReady(FacebookCredentials)), @@ -51,7 +54,10 @@ SituareEngine::SituareEngine(QMainWindow *parent) connect(m_ui, SIGNAL(refreshUserData()), this, SLOT(refreshUserData())); - m_facebookAuthenticator->start(); + connect(m_gps, SIGNAL(position(QPointF)), + m_ui, SIGNAL(positionReceived(QPointF))); + + m_facebookAuthenticator->start(); } SituareEngine::~SituareEngine() @@ -74,6 +80,7 @@ void SituareEngine::loginOk() m_facebookAuthenticator->hide(); m_ui->show(); m_situareService->fetchLocations(); // request user locations + m_gps->start(); } void SituareEngine::requestAddress() diff --git a/src/engine/engine.h b/src/engine/engine.h index d1d2103..55ef07c 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -4,6 +4,7 @@ Kaj Wallin - kaj.wallin@ixonos.com Henri Lampela - henri.lampela@ixonos.com + 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 @@ -30,6 +31,8 @@ #include "situareservice/situareservice.h" #include "ui/mainwindow.h" +class GPSPosition; + /** * @brief Engine class for Situare Application * @@ -129,8 +132,9 @@ signals: * DATA MEMBERS ******************************************************************************/ private: - MainWindow *m_ui; ///< Instance of the MainWindow UI FacebookAuthentication *m_facebookAuthenticator; ///< Instance for facebook authenticator + GPSPosition *m_gps; ///< Instance of the gps position + MainWindow *m_ui; ///< Instance of the MainWindow UI SituareService *m_situareService; ///< Instance of the situare server communication service }; diff --git a/src/gps/gpsposition.cpp b/src/gps/gpsposition.cpp index 3afae1b..08ecfce 100644 --- a/src/gps/gpsposition.cpp +++ b/src/gps/gpsposition.cpp @@ -31,14 +31,14 @@ GPSPosition::GPSPosition(QObject *parent) : QObject(parent) { - m_gpsSource = 0; //QGeoPositionInfoSource::createDefaultSource(this); + m_gpsSource = QGeoPositionInfoSource::createDefaultSource(this); -// if (!m_gpsSource) { + if (!m_gpsSource) { QNmeaPositionInfoSource *nmeaSource = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::SimulationMode, this); QFile *logFile = new QFile(":/res/dummy/nmealog.txt", this); nmeaSource->setDevice(logFile); m_gpsSource = nmeaSource; -// } + } m_gpsSource->setUpdateInterval(5000); @@ -80,4 +80,6 @@ void GPSPosition::positionUpdated(QGeoPositionInfo positionInfo) void GPSPosition::updateTimeout() { qDebug() << __PRETTY_FUNCTION__; + + emit timeout(); } diff --git a/src/gps/gpsposition.h b/src/gps/gpsposition.h index 890dce5..a4cfb0e 100644 --- a/src/gps/gpsposition.h +++ b/src/gps/gpsposition.h @@ -46,6 +46,7 @@ private slots: signals: void position(QPointF latLonCoordinate); + void timeout(); private: QGeoPositionInfoSource *m_gpsSource; diff --git a/src/map/mapengine.cpp b/src/map/mapengine.cpp index 5671a11..3c55ff3 100644 --- a/src/map/mapengine.cpp +++ b/src/map/mapengine.cpp @@ -59,11 +59,6 @@ MapEngine::MapEngine(QObject *parent) connect(m_mapZoomPanel, SIGNAL(zoomOutPressed()), this, SLOT(zoomOut())); m_ownLocation = new OwnLocationItem(QPointF()); - - //GPS - m_gps = new GPSPosition(this); - m_gps->start(); - connect(m_gps, SIGNAL(position(QPointF)), this, SLOT(positionReceived(QPointF))); } MapEngine::~MapEngine() @@ -421,10 +416,3 @@ void MapEngine::cleanOldFriendData(const QList &friendsList) friendGone = true; } } - -void MapEngine::positionReceived(QPointF position) -{ - qDebug() << __PRETTY_FUNCTION__; - - setViewLocation(position); -} diff --git a/src/map/mapengine.h b/src/map/mapengine.h index 6c8a9d2..60814d0 100644 --- a/src/map/mapengine.h +++ b/src/map/mapengine.h @@ -36,8 +36,6 @@ #include "friendlocationitem.h" #include "user/user.h" -class GPSPosition; - /** * @brief Map engine * @@ -259,8 +257,6 @@ private slots: */ void zoomOut(); - void positionReceived(QPointF position); - /******************************************************************************* * SIGNALS ******************************************************************************/ @@ -303,8 +299,6 @@ private: bool m_zoomedIn; ///< Flag for checking if zoomed in when zoom is finished int m_zoomLevel; ///< Current zoom level QList m_friendItems; ///< List of friendLocationItems - - GPSPosition *m_gps; }; #endif // MAPENGINE_H diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index a2e2aac..d95a1f2 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -60,6 +60,9 @@ MainWindow::MainWindow(QWidget *parent) connect(m_listViewScreen, SIGNAL(updateFriendsData()), this, SIGNAL(refreshUserData())); + connect(this, SIGNAL(positionReceived(QPointF)), + m_mapViewScreen, SLOT(positionReceived(QPointF))); + this->toggleProgressIndicator(true); } diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 61565cb..0aa6cc0 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -157,6 +157,13 @@ signals: */ void refreshUserData(); + /** + * @brief Signal for gps position. + * + * @param position longitude and latitude values + */ + void positionReceived(QPointF position); + /******************************************************************************* * DATA MEMBERS ******************************************************************************/ diff --git a/src/ui/mapviewscreen.cpp b/src/ui/mapviewscreen.cpp index fc54e3f..1c55bf5 100644 --- a/src/ui/mapviewscreen.cpp +++ b/src/ui/mapviewscreen.cpp @@ -45,23 +45,6 @@ MapViewScreen::MapViewScreen(QWidget *parent) QHBoxLayout *mapViewLayout = new QHBoxLayout; - //DEBUG -// QVBoxLayout *mapControlLayout = new QVBoxLayout; -// QWidget *mapControl = new QWidget(this); -// mapControl->setLayout(mapControlLayout); -// search = new QPushButton("Search", this); -// zoomOut = new QPushButton("-", this); -// zoomIn = new QPushButton("+", this); -// mapControlLayout->addWidget(&latLine); -// mapControlLayout->addWidget(&lonLine); -// mapControlLayout->addWidget(search); -// mapControlLayout->addWidget(zoomIn); -// mapControlLayout->addWidget(zoomOut); -// mapViewLayout->addWidget(mapControl); -// connect(search, SIGNAL(clicked()), this, SLOT(searchMap())); -// connect(zoomIn, SIGNAL(clicked()), mapEngine, SLOT(zoomIn())); -// connect(zoomOut, SIGNAL(clicked()), mapEngine, SLOT(zoomOut())); - //DEBUG osmLicense = new QLabel(this); osmLicense->setAttribute(Qt::WA_TranslucentBackground, true); @@ -110,3 +93,8 @@ void MapViewScreen::drawOsmLicense(int width, int height) osmLicense->move(width-osmLicense->fontMetrics().width(OSM_LICENSE), height-osmLicense->fontMetrics().height()); } + +void MapViewScreen::positionReceived(QPointF position) +{ + mapEngine->setViewLocation(position); +} diff --git a/src/ui/mapviewscreen.h b/src/ui/mapviewscreen.h index c52b04e..586299c 100644 --- a/src/ui/mapviewscreen.h +++ b/src/ui/mapviewscreen.h @@ -75,6 +75,13 @@ private slots: */ void drawOsmLicense(int width, int height); + /** + * @brief Slot for gps position. + * + * @param position longitude and latitude values + */ + void positionReceived(QPointF position); + /******************************************************************************* * DATA MEMBERS ******************************************************************************/ -- 1.7.9.5