From 55b27d9c8d711a0656f5ed7e61ffed10a9ed5dc5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sami=20R=C3=A4m=C3=B6?= Date: Thu, 15 Jul 2010 16:53:06 +0300 Subject: [PATCH] Re-factored the source to use the new coordinate classes - Reading the initial coordinate from the settings file is not yet working - Implemented stream operators << and >> overloading for GeoCoordinate to enable saving and reading the values by using QSettings --- src/coordinates/geocoordinate.cpp | 14 ++- src/coordinates/geocoordinate.h | 11 +- src/coordinates/scenecoordinate.cpp | 26 +++-- src/coordinates/scenecoordinate.h | 4 +- src/engine/engine.cpp | 57 +++++----- src/engine/engine.h | 12 +- src/gps/gpsposition.cpp | 6 +- src/gps/gpsposition.h | 11 +- src/gps/gpspositionprivatestub.cpp | 8 +- src/gps/gpspositionprivatestub.h | 9 +- src/map/frienditemshandler.cpp | 9 +- src/map/gpslocationitem.cpp | 5 +- src/map/gpslocationitem.h | 4 +- src/map/mapcommon.h | 2 +- src/map/mapengine.cpp | 196 ++++++++++++++++++--------------- src/map/mapengine.h | 78 ++++++------- src/map/mapscene.cpp | 2 +- src/map/mapscene.h | 4 +- src/map/mapscroller.cpp | 8 +- src/map/mapscroller.h | 7 +- src/map/maptile.cpp | 2 +- src/map/mapview.cpp | 14 +-- src/map/mapview.h | 6 +- src/situareservice/situareservice.cpp | 24 ++-- src/situareservice/situareservice.h | 8 +- src/src.pro | 8 +- src/ui/friendlistitem.h | 4 +- src/ui/friendlistpanel.cpp | 8 +- src/ui/friendlistpanel.h | 10 +- src/ui/mainwindow.cpp | 26 ++--- src/ui/mainwindow.h | 19 ++-- src/ui/userinfo.cpp | 4 +- src/ui/userinfo.h | 14 ++- src/ui/userinfopanel.cpp | 4 +- src/ui/userinfopanel.h | 2 +- src/user/user.cpp | 6 +- src/user/user.h | 13 ++- 37 files changed, 363 insertions(+), 282 deletions(-) diff --git a/src/coordinates/geocoordinate.cpp b/src/coordinates/geocoordinate.cpp index 63179e5..54cd63e 100644 --- a/src/coordinates/geocoordinate.cpp +++ b/src/coordinates/geocoordinate.cpp @@ -43,7 +43,7 @@ GeoCoordinate::GeoCoordinate(double latitude, double longitude) : qDebug() << __PRETTY_FUNCTION__; } -GeoCoordinate::GeoCoordinate(SceneCoordinate &coordinate) +GeoCoordinate::GeoCoordinate(const SceneCoordinate &coordinate) { qDebug() << __PRETTY_FUNCTION__; @@ -120,6 +120,18 @@ void GeoCoordinate::setLongitude(double longitude) m_longitude = longitude; } +QDataStream &operator<<(QDataStream &out, const GeoCoordinate &coordinate) +{ + out << coordinate.m_latitude << coordinate.m_longitude; + return out; +} + +QDataStream &operator>>(QDataStream &in, GeoCoordinate &coordinate) +{ + in >> coordinate.m_latitude >> coordinate.m_longitude; + return in; +} + QDebug operator<<(QDebug dbg, const GeoCoordinate &coordinate) { dbg.nospace() << "(" << coordinate.latitude() << ", " << coordinate.longitude() << ")"; diff --git a/src/coordinates/geocoordinate.h b/src/coordinates/geocoordinate.h index 6ac8d3f..87ce516 100644 --- a/src/coordinates/geocoordinate.h +++ b/src/coordinates/geocoordinate.h @@ -56,7 +56,7 @@ public: * * @param coordinate Scene coordinate */ - GeoCoordinate(SceneCoordinate &coordinate); + GeoCoordinate(const SceneCoordinate &coordinate); /******************************************************************************* * MEMBER FUNCTIONS AND SLOTS @@ -120,9 +120,16 @@ private: private: double m_latitude; ///< Latitude value double m_longitude; ///< Longitude value + +/******************************************************************************* + * OPERATORS + ******************************************************************************/ +public: + friend QDataStream &operator<<(QDataStream &out, const GeoCoordinate &coordinate); + friend QDataStream &operator>>(QDataStream &in, GeoCoordinate &coordinate); }; -QDebug operator<<(QDebug dbg, const GeoCoordinate &c); +QDebug operator<<(QDebug dbg, const GeoCoordinate &coordinate); Q_DECLARE_METATYPE(GeoCoordinate) diff --git a/src/coordinates/scenecoordinate.cpp b/src/coordinates/scenecoordinate.cpp index 14965e6..4618eb7 100644 --- a/src/coordinates/scenecoordinate.cpp +++ b/src/coordinates/scenecoordinate.cpp @@ -22,6 +22,7 @@ #include #include +#include #include "geocoordinate.h" #include "map/osm.h" @@ -42,7 +43,7 @@ SceneCoordinate::SceneCoordinate(double x, double y) : qDebug() << __PRETTY_FUNCTION__; } -SceneCoordinate::SceneCoordinate(GeoCoordinate &coordinate) +SceneCoordinate::SceneCoordinate(const GeoCoordinate &coordinate) { qDebug() << __PRETTY_FUNCTION__; @@ -86,32 +87,39 @@ void SceneCoordinate::normalize(double &value, int min, int max) value -= max - min + 1; } -double SceneCoordinate::x() const +void SceneCoordinate::setX(double x) { qDebug() << __PRETTY_FUNCTION__; - return m_x; + m_x = x; } -double SceneCoordinate::y() const +void SceneCoordinate::setY(double y) { qDebug() << __PRETTY_FUNCTION__; - return m_y; + m_y = y; } -void SceneCoordinate::setX(double x) +QPointF SceneCoordinate::toPointF() const { qDebug() << __PRETTY_FUNCTION__; - m_x = x; + return QPointF(m_x, m_y); } -void SceneCoordinate::setY(double y) +double SceneCoordinate::x() const { qDebug() << __PRETTY_FUNCTION__; - m_y = y; + return m_x; +} + +double SceneCoordinate::y() const +{ + qDebug() << __PRETTY_FUNCTION__; + + return m_y; } QDebug operator<<(QDebug dbg, const SceneCoordinate &coordinate) diff --git a/src/coordinates/scenecoordinate.h b/src/coordinates/scenecoordinate.h index 3d06728..1caf745 100644 --- a/src/coordinates/scenecoordinate.h +++ b/src/coordinates/scenecoordinate.h @@ -56,7 +56,7 @@ public: * * @param coordinate Geological coordinate */ - SceneCoordinate(GeoCoordinate &coordinate); + SceneCoordinate(const GeoCoordinate &coordinate); /******************************************************************************* * MEMBER FUNCTIONS AND SLOTS @@ -83,6 +83,8 @@ public: */ void setY(double y); + QPointF toPointF() const; + /** * @brief Returns the x value * diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 1fe7989..23c3a25 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -22,21 +22,23 @@ USA. */ +#include + #include #include #ifdef Q_WS_MAEMO_5 #include "application.h" #endif + #include "common.h" #include "facebookservice/facebookauthentication.h" #include "gps/gpsposition.h" #include "map/mapengine.h" +#include "mce.h" +#include "network/networkaccessmanager.h" #include "situareservice/situareservice.h" #include "ui/mainwindow.h" -#include "network/networkaccessmanager.h" -#include "mce.h" -#include #include "engine.h" @@ -53,7 +55,7 @@ SituareEngine::SituareEngine() m_automaticUpdateRequest(false), m_userMoved(false), m_automaticUpdateIntervalTimer(0), - m_lastUpdatedGPSPosition(QPointF()) + m_lastUpdatedGPSPosition(GeoCoordinate()) { qDebug() << __PRETTY_FUNCTION__; @@ -214,14 +216,14 @@ void SituareEngine::enableAutomaticLocationUpdate(bool enabled, int updateInterv else m_automaticUpdateIntervalTimer->setInterval(updateIntervalMsecs); - connect(m_gps, SIGNAL(position(QPointF,qreal)), - this, SLOT(requestAutomaticUpdateIfMoved(QPointF))); + connect(m_gps, SIGNAL(position(GeoCoordinate, qreal)), + this, SLOT(requestAutomaticUpdateIfMoved(GeoCoordinate))); m_automaticUpdateIntervalTimer->start(); } else { - disconnect(m_gps, SIGNAL(position(QPointF,qreal)), - this, SLOT(requestAutomaticUpdateIfMoved(QPointF))); + disconnect(m_gps, SIGNAL(position(GeoCoordinate, qreal)), + this, SLOT(requestAutomaticUpdateIfMoved(GeoCoordinate))); m_automaticUpdateIntervalTimer->stop(); } @@ -367,8 +369,8 @@ void SituareEngine::initializeGpsAndAutocentering() if (gpsEnabled.toString().isEmpty()) { // First start. Situare.conf file does not exists - connect(m_gps, SIGNAL(position(QPointF,qreal)), - this, SLOT(setFirstStartZoomLevel(QPointF,qreal))); + connect(m_gps, SIGNAL(position(GeoCoordinate, qreal)), + this, SLOT(setFirstStartZoomLevel())); changeAutoCenteringSetting(true); enableGPS(true); @@ -489,13 +491,13 @@ void SituareEngine::requestUpdateLocation(const QString &status, bool publish) } } -void SituareEngine::requestAutomaticUpdateIfMoved(QPointF position) +void SituareEngine::requestAutomaticUpdateIfMoved(GeoCoordinate position) { qDebug() << __PRETTY_FUNCTION__; - if ((fabs(m_lastUpdatedGPSPosition.x() - position.x()) > + if ((fabs(m_lastUpdatedGPSPosition.longitude() - position.longitude()) > USER_MOVEMENT_MINIMUM_LONGITUDE_DIFFERENCE) || - (fabs(m_lastUpdatedGPSPosition.y() - position.y()) > + (fabs(m_lastUpdatedGPSPosition.latitude() - position.latitude()) > USER_MOVEMENT_MINIMUM_LATITUDE_DIFFERENCE)) { m_lastUpdatedGPSPosition = position; @@ -509,18 +511,15 @@ void SituareEngine::requestAutomaticUpdateIfMoved(QPointF position) } } -void SituareEngine::setFirstStartZoomLevel(QPointF latLonCoordinate, qreal accuracy) +void SituareEngine::setFirstStartZoomLevel() { qDebug() << __PRETTY_FUNCTION__; - Q_UNUSED(latLonCoordinate); - Q_UNUSED(accuracy); - if (m_autoCenteringEnabled) // autocentering is disabled when map is scrolled m_mapEngine->setZoomLevel(DEFAULT_ZOOM_LEVEL_WHEN_GPS_IS_AVAILABLE); - disconnect(m_gps, SIGNAL(position(QPointF,qreal)), - this, SLOT(setFirstStartZoomLevel(QPointF,qreal))); + disconnect(m_gps, SIGNAL(position(GeoCoordinate, qreal)), + this, SLOT(setFirstStartZoomLevel())); } void SituareEngine::signalsFromFacebookAuthenticator() @@ -550,8 +549,8 @@ void SituareEngine::signalsFromGPS() { qDebug() << __PRETTY_FUNCTION__; - connect(m_gps, SIGNAL(position(QPointF,qreal)), - m_mapEngine, SLOT(gpsPositionUpdate(QPointF,qreal))); + connect(m_gps, SIGNAL(position(GeoCoordinate, qreal)), + m_mapEngine, SLOT(gpsPositionUpdate(GeoCoordinate, qreal))); connect(m_gps, SIGNAL(timeout()), m_ui, SLOT(gpsTimeout())); @@ -580,8 +579,8 @@ void SituareEngine::signalsFromMainWindow() m_facebookAuthenticator, SLOT(updateCredentials(QUrl))); // signals from map view - connect(m_ui, SIGNAL(mapViewScrolled(QPoint)), - m_mapEngine, SLOT(setCenterPosition(QPoint))); + connect(m_ui, SIGNAL(mapViewScrolled(SceneCoordinate)), + m_mapEngine, SLOT(setCenterPosition(SceneCoordinate))); connect(m_ui, SIGNAL(mapViewResized(QSize)), m_mapEngine, SLOT(viewResized(QSize))); @@ -620,12 +619,12 @@ void SituareEngine::signalsFromMainWindow() connect(m_ui, SIGNAL(refreshUserData()), this, SLOT(refreshUserData())); - connect(m_ui, SIGNAL(findUser(QPointF)), - m_mapEngine, SLOT(centerToCoordinates(QPointF))); + connect(m_ui, SIGNAL(findUser(GeoCoordinate)), + m_mapEngine, SLOT(centerToCoordinates(GeoCoordinate))); // signals from friend list tab - connect(m_ui, SIGNAL(findFriend(QPointF)), - m_mapEngine, SLOT(centerToCoordinates(QPointF))); + connect(m_ui, SIGNAL(findFriend(GeoCoordinate)), + m_mapEngine, SLOT(centerToCoordinates(GeoCoordinate))); } void SituareEngine::signalsFromMapEngine() @@ -635,8 +634,8 @@ void SituareEngine::signalsFromMapEngine() connect(m_mapEngine, SIGNAL(error(int, int)), this, SLOT(error(int, int))); - connect(m_mapEngine, SIGNAL(locationChanged(QPoint)), - m_ui, SIGNAL(centerToSceneCoordinates(QPoint))); + connect(m_mapEngine, SIGNAL(locationChanged(SceneCoordinate)), + m_ui, SIGNAL(centerToSceneCoordinates(SceneCoordinate))); connect(m_mapEngine, SIGNAL(zoomLevelChanged(int)), m_ui, SIGNAL(zoomLevelChanged(int))); diff --git a/src/engine/engine.h b/src/engine/engine.h index 9abeab1..a347bb5 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -28,7 +28,8 @@ #include #include -#include + +#include "coordinates/geocoordinate.h" #ifdef Q_WS_MAEMO_5 class Application; @@ -238,16 +239,13 @@ private slots: * * @param position geo coordinates */ - void requestAutomaticUpdateIfMoved(QPointF position); + void requestAutomaticUpdateIfMoved(GeoCoordinate position); /** * @brief Sets zoom level to default when first GPS location is received if autocentering * is enabled. - * - * @param latLonCoordinate own location - * @param accuracy accuracy of GPS location */ - void setFirstStartZoomLevel(QPointF latLonCoordinate, qreal accuracy); + void setFirstStartZoomLevel(); /** * @brief Automatic update interval timer timeout. @@ -315,7 +313,7 @@ private: MCE *m_mce; ///< Instance of the MCE QTimer *m_automaticUpdateIntervalTimer; ///< Automatic update interval timer - QPointF m_lastUpdatedGPSPosition; ///< Last updated GPS position + GeoCoordinate m_lastUpdatedGPSPosition; ///< Last updated GPS position }; diff --git a/src/gps/gpsposition.cpp b/src/gps/gpsposition.cpp index 282c6cb..f1d0dfd 100644 --- a/src/gps/gpsposition.cpp +++ b/src/gps/gpsposition.cpp @@ -47,21 +47,21 @@ void GPSPosition::enablePowerSave(bool enabled) m_gpsPositionPrivate->setPowerSave(enabled); } -bool GPSPosition::isInitialized() +bool GPSPosition::isInitialized() const { qDebug() << __PRETTY_FUNCTION__; return m_gpsPositionPrivate->isInitialized(); } -bool GPSPosition::isRunning() +bool GPSPosition::isRunning() const { qDebug() << __PRETTY_FUNCTION__; return m_gpsPositionPrivate->isRunning(); } -QPointF GPSPosition::lastPosition() +GeoCoordinate GPSPosition::lastPosition() const { qDebug() << __PRETTY_FUNCTION__; diff --git a/src/gps/gpsposition.h b/src/gps/gpsposition.h index f311991..b140fbc 100644 --- a/src/gps/gpsposition.h +++ b/src/gps/gpsposition.h @@ -23,7 +23,8 @@ #define GPSPOSITION_H #include -#include + +#include "coordinates/geocoordinate.h" class GPSPositionPrivate; @@ -68,19 +69,19 @@ public: * * @return true if initialized, false otherwise */ - bool isInitialized(); + bool isInitialized() const; /** * @brief Checks if GPS is running. * * @return true if GPS running, false otherwise */ - bool isRunning(); + bool isRunning() const; /** * @brief Return last known position. */ - QPointF lastPosition(); + GeoCoordinate lastPosition() const; /** * @brief Informs gps to emit last known position. @@ -138,7 +139,7 @@ signals: * @param latLonCoordinate latitude and longitude values * @param accuracy accuracy in metres */ - void position(QPointF latLonCoordinate, qreal accuracy); + void position(GeoCoordinate coordinate, qreal accuracy); /** * @brief Signal for timeout. diff --git a/src/gps/gpspositionprivatestub.cpp b/src/gps/gpspositionprivatestub.cpp index ca31fcf..86f5a0a 100644 --- a/src/gps/gpspositionprivatestub.cpp +++ b/src/gps/gpspositionprivatestub.cpp @@ -33,14 +33,14 @@ GPSPositionPrivate::GPSPositionPrivate(QObject *parent) m_parent = static_cast(parent); } -bool GPSPositionPrivate::isInitialized() +bool GPSPositionPrivate::isInitialized() const { qDebug() << __PRETTY_FUNCTION__; return false; } -bool GPSPositionPrivate::isRunning() +bool GPSPositionPrivate::isRunning() const { qDebug() << __PRETTY_FUNCTION__; @@ -81,11 +81,11 @@ void GPSPositionPrivate::stop() qDebug() << __PRETTY_FUNCTION__; } -QPointF GPSPositionPrivate::lastPosition() +GeoCoordinate GPSPositionPrivate::lastPosition() const { qDebug() << __PRETTY_FUNCTION__; - return QPointF(0, 0); + return GeoCoordinate(0, 0); } void GPSPositionPrivate::requestLastPosition() diff --git a/src/gps/gpspositionprivatestub.h b/src/gps/gpspositionprivatestub.h index 7207efc..60cf2ef 100644 --- a/src/gps/gpspositionprivatestub.h +++ b/src/gps/gpspositionprivatestub.h @@ -26,9 +26,10 @@ #include "gpsposition.h" -class QPointF; class QString; +class GeoCoordinate; + /** * @brief GPSPositionPrivate class does nothing. * @@ -56,7 +57,7 @@ public: * RETURNS FALSE * @return true if initialized, false otherwise */ - bool isInitialized(); + bool isInitialized() const; /** * @brief Checks if GPS is running. @@ -64,12 +65,12 @@ public: * RETURNS FALSE. * @return true if GPS running, false otherwise */ - bool isRunning(); + bool isRunning() const; /** * @brief Return last known position. */ - QPointF lastPosition(); + GeoCoordinate lastPosition() const; /** * @brief Informs gps to emit last known position. diff --git a/src/map/frienditemshandler.cpp b/src/map/frienditemshandler.cpp index cfc10b2..7dd20e5 100644 --- a/src/map/frienditemshandler.cpp +++ b/src/map/frienditemshandler.cpp @@ -23,10 +23,11 @@ #include +#include "coordinates/scenecoordinate.h" #include "friendgroupitem.h" #include "friendlocationitem.h" #include "mapcommon.h" -#include "mapengine.h" +/// @todo remove #include "mapengine.h" #include "mapscene.h" #include "user/user.h" @@ -47,7 +48,7 @@ void FriendItemsHandler::addFriendItem(User *friendData) FriendLocationItem *item = new FriendLocationItem(friendData->userId()); item->setProfileImage(friendData->profileImage(), friendData->profileImageUrl()); - item->setPos(MapEngine::convertLatLonToSceneCoordinate(friendData->coordinates())); + item->setPos(SceneCoordinate(friendData->coordinates()).toPointF()); m_friendItems.append(item); m_mapScene->addItem(item); @@ -212,9 +213,7 @@ void FriendItemsHandler::updateFriendItem(FriendLocationItem *friendItem, User * qDebug() << __PRETTY_FUNCTION__; // update position - QPoint newPosition = MapEngine::convertLatLonToSceneCoordinate(friendData->coordinates()); - if (friendItem->pos().toPoint() != newPosition) - friendItem->setPos(newPosition); + friendItem->setPos(SceneCoordinate(friendData->coordinates()).toPointF()); // update image if (friendItem->profileImageUrl() != friendData->profileImageUrl()) diff --git a/src/map/gpslocationitem.cpp b/src/map/gpslocationitem.cpp index 2585513..df9293c 100644 --- a/src/map/gpslocationitem.cpp +++ b/src/map/gpslocationitem.cpp @@ -22,6 +22,7 @@ #include #include +#include "coordinates/scenecoordinate.h" #include "../gps/gpscommon.h" #include "mapcommon.h" @@ -55,11 +56,11 @@ void GPSLocationItem::setEnabled(bool enable) } -void GPSLocationItem::updatePosition(QPoint scenePosition, qreal accuracy) +void GPSLocationItem::updatePosition(SceneCoordinate scenePosition, qreal accuracy) { qDebug() << __PRETTY_FUNCTION__; - setPos(scenePosition); + setPos(scenePosition.toPointF()); if (accuracy == GPS_ACCURACY_UNDEFINED) { // fix is NOT accurate if (m_currentAccuracy != COARSE) { // coarse pixmap not yet set diff --git a/src/map/gpslocationitem.h b/src/map/gpslocationitem.h index e191573..8093291 100644 --- a/src/map/gpslocationitem.h +++ b/src/map/gpslocationitem.h @@ -24,6 +24,8 @@ #include +class SceneCoordinate; + /** * @brief Class for indicating current position accuired from GPS on the map. * @@ -57,7 +59,7 @@ public: * @param scenePosition Scene coordinate * @param accuracy Accuracy of the GPS fix */ - void updatePosition(QPoint scenePosition, qreal accuracy); + void updatePosition(SceneCoordinate scenePosition, qreal accuracy); /******************************************************************************* * DATA MEMBERS diff --git a/src/map/mapcommon.h b/src/map/mapcommon.h index 71f3819..da2c98c 100644 --- a/src/map/mapcommon.h +++ b/src/map/mapcommon.h @@ -25,6 +25,7 @@ #include +#include "coordinates/geocoordinate.h" #include "osm.h" const int MAP_TILE_MIN_INDEX = 0; ///< First index number of map tiles @@ -59,7 +60,6 @@ const int MAP_SCENE_MAX_PIXEL_X = OMS_MAP_PIXELS_X * (1 + MAP_SCENE_VERTICAL_OVE * @brief Maps Default zoom level, used when latest zoom level is not available. */ const int MAP_DEFAULT_ZOOM_LEVEL = MAP_VIEW_MIN_ZOOM_LEVEL; - const qreal MAP_DEFAULT_LONGITUDE = 0.0000; ///< Default longitude value const qreal MAP_DEFAULT_LATITUDE = 0.0000; ///< Default latitude value diff --git a/src/map/mapengine.cpp b/src/map/mapengine.cpp index ced4e52..8b2f972 100644 --- a/src/map/mapengine.cpp +++ b/src/map/mapengine.cpp @@ -56,7 +56,8 @@ MapEngine::MapEngine(QObject *parent) m_zoomedIn(false), m_zoomLevel(MAP_DEFAULT_ZOOM_LEVEL), m_centerTile(QPoint(UNDEFINED, UNDEFINED)), - m_lastAutomaticPosition(QPoint(0, 0)), + /// @todo remove, automatic init to zero // m_lastAutomaticPosition(QPoint(0, 0)), + m_sceneCoordinate(SceneCoordinate(GeoCoordinate(MAP_DEFAULT_LATITUDE, MAP_DEFAULT_LONGITUDE))), m_tilesGridSize(QSize(0, 0)), m_viewSize(QSize(DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT)) { @@ -97,8 +98,8 @@ MapEngine::MapEngine(QObject *parent) m_scroller = &MapScroller::getInstance(); - connect(m_scroller, SIGNAL(coordinateUpdated(QPoint)), - this, SLOT(setCenterPosition(QPoint))); + connect(m_scroller, SIGNAL(coordinateUpdated(SceneCoordinate)), + this, SLOT(setCenterPosition(SceneCoordinate))); connect(m_scroller, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), this, SLOT(scrollerStateChanged(QAbstractAnimation::State))); @@ -109,12 +110,16 @@ MapEngine::~MapEngine() qDebug() << __PRETTY_FUNCTION__; QSettings settings(DIRECTORY_NAME, FILE_NAME); - settings.setValue(MAP_LAST_POSITION, - convertSceneCoordinateToLatLon(m_zoomLevel, m_sceneCoordinate)); + + // register meta type for custom GeoCoordinate class so that saving the settings does work + qRegisterMetaType("GeoCoordinate"); + qRegisterMetaTypeStreamOperators("GeoCoordinate"); + + settings.setValue(MAP_LAST_POSITION, QVariant::fromValue(centerGeoCoordinate())); settings.setValue(MAP_LAST_ZOOMLEVEL, m_zoomLevel); } -QRect MapEngine::calculateTileGrid(QPoint sceneCoordinate) +QRect MapEngine::calculateTileGrid(SceneCoordinate sceneCoordinate) { qDebug() << __PRETTY_FUNCTION__; @@ -127,59 +132,60 @@ QRect MapEngine::calculateTileGrid(QPoint sceneCoordinate) return QRect(topLeft, m_tilesGridSize); } -QPointF MapEngine::centerGeoCoordinate() +GeoCoordinate MapEngine::centerGeoCoordinate() { qDebug() << __PRETTY_FUNCTION__; - return convertSceneCoordinateToLatLon(m_zoomLevel, m_sceneCoordinate); + return GeoCoordinate(m_sceneCoordinate); } -void MapEngine::centerToCoordinates(QPointF latLonCoordinate) +void MapEngine::centerToCoordinates(GeoCoordinate latLonCoordinate) { qDebug() << __PRETTY_FUNCTION__; - scrollToPosition(convertLatLonToSceneCoordinate(latLonCoordinate)); + scrollToPosition(SceneCoordinate(latLonCoordinate)); } -QPoint MapEngine::convertLatLonToSceneCoordinate(QPointF latLonCoordinate) -{ - qDebug() << __PRETTY_FUNCTION__; +/// @todo remove +//QPoint MapEngine::convertLatLonToSceneCoordinate(QPointF latLonCoordinate) +//{ +// qDebug() << __PRETTY_FUNCTION__; - qreal longitude = latLonCoordinate.x(); - qreal latitude = latLonCoordinate.y(); +// qreal longitude = latLonCoordinate.x(); +// qreal latitude = latLonCoordinate.y(); - if ((longitude > MAX_LONGITUDE) || (longitude < MIN_LONGITUDE)) - return QPoint(UNDEFINED, UNDEFINED); - if ((latitude > OSM_MAX_LATITUDE) || (latitude < OSM_MIN_LATITUDE)) - return QPoint(UNDEFINED, UNDEFINED); +// if ((longitude > MAX_LONGITUDE) || (longitude < MIN_LONGITUDE)) +// return QPoint(UNDEFINED, UNDEFINED); +// if ((latitude > OSM_MAX_LATITUDE) || (latitude < OSM_MIN_LATITUDE)) +// return QPoint(UNDEFINED, UNDEFINED); - qreal z = static_cast(MapEngine::tilesPerSide(OSM_MAX_ZOOM_LEVEL)); +// qreal z = static_cast(MapEngine::tilesPerSide(OSM_MAX_ZOOM_LEVEL)); - qreal x = static_cast((longitude + 180.0) / 360.0); - qreal y = static_cast((1.0 - log(tan(latitude * M_PI / 180.0) + 1.0 - / cos(latitude * M_PI / 180.0)) / M_PI) / 2.0); +// qreal x = static_cast((longitude + 180.0) / 360.0); +// qreal y = static_cast((1.0 - log(tan(latitude * M_PI / 180.0) + 1.0 +// / cos(latitude * M_PI / 180.0)) / M_PI) / 2.0); - return QPointF(x * z * OSM_TILE_SIZE_X, y * z * OSM_TILE_SIZE_Y).toPoint(); -} +// return QPointF(x * z * OSM_TILE_SIZE_X, y * z * OSM_TILE_SIZE_Y).toPoint(); +//} -QPointF MapEngine::convertSceneCoordinateToLatLon(int zoomLevel, QPoint sceneCoordinate) -{ - qDebug() << __PRETTY_FUNCTION__; +//QPointF MapEngine::convertSceneCoordinateToLatLon(int zoomLevel, QPoint sceneCoordinate) +//{ +// qDebug() << __PRETTY_FUNCTION__; - double tileFactor = 1 << (OSM_MAX_ZOOM_LEVEL - zoomLevel); - double xFactor = (sceneCoordinate.x() / (OSM_TILE_SIZE_X*tileFactor)); - double yFactor = (sceneCoordinate.y() / (OSM_TILE_SIZE_Y*tileFactor)); +// double tileFactor = 1 << (OSM_MAX_ZOOM_LEVEL - zoomLevel); +// double xFactor = (sceneCoordinate.x() / (OSM_TILE_SIZE_X*tileFactor)); +// double yFactor = (sceneCoordinate.y() / (OSM_TILE_SIZE_Y*tileFactor)); - tileFactor = 1 << zoomLevel; - double longitude = xFactor / tileFactor * 360.0 - 180; +// tileFactor = 1 << zoomLevel; +// double longitude = xFactor / tileFactor * 360.0 - 180; - double n = M_PI - 2.0 * M_PI * yFactor / tileFactor; - double latitude = 180.0 / M_PI * atan(0.5 * (exp(n) - exp(-n))); +// double n = M_PI - 2.0 * M_PI * yFactor / tileFactor; +// double latitude = 180.0 / M_PI * atan(0.5 * (exp(n) - exp(-n))); - return QPointF(longitude, latitude); -} +// return QPointF(longitude, latitude); +//} -QPoint MapEngine::convertSceneCoordinateToTileNumber(int zoomLevel, QPoint sceneCoordinate) +QPoint MapEngine::convertSceneCoordinateToTileNumber(int zoomLevel, SceneCoordinate sceneCoordinate) { qDebug() << __PRETTY_FUNCTION__; @@ -190,7 +196,7 @@ QPoint MapEngine::convertSceneCoordinateToTileNumber(int zoomLevel, QPoint scene return QPoint(x, y); } -QPoint MapEngine::convertTileNumberToSceneCoordinate(int zoomLevel, QPoint tileNumber) +SceneCoordinate MapEngine::convertTileNumberToSceneCoordinate(int zoomLevel, QPoint tileNumber) { qDebug() << __PRETTY_FUNCTION__; @@ -198,18 +204,18 @@ QPoint MapEngine::convertTileNumberToSceneCoordinate(int zoomLevel, QPoint tileN int x = tileNumber.x() * OSM_TILE_SIZE_X * pow; int y = tileNumber.y() * OSM_TILE_SIZE_Y * pow; - return QPoint(x, y); + return SceneCoordinate(x, y); } -void MapEngine::disableAutoCenteringIfRequired(QPoint sceneCoordinate) +void MapEngine::disableAutoCenteringIfRequired(SceneCoordinate sceneCoordinate) { if (isAutoCenteringEnabled()) { int zoomFactor = (1 << (OSM_MAX_ZOOM_LEVEL - m_zoomLevel)); - QPoint oldPixelValue = QPoint(m_lastAutomaticPosition.x() / zoomFactor, + SceneCoordinate oldPixelValue(m_lastAutomaticPosition.x() / zoomFactor, m_lastAutomaticPosition.y() / zoomFactor); - QPoint newPixelValue = QPoint(sceneCoordinate.x() / zoomFactor, + SceneCoordinate newPixelValue(sceneCoordinate.x() / zoomFactor, sceneCoordinate.y() / zoomFactor); if ((abs(oldPixelValue.x() - newPixelValue.x()) > AUTO_CENTERING_DISABLE_DISTANCE) @@ -227,7 +233,7 @@ void MapEngine::friendsPositionsUpdated() m_mapScene->spanItems(m_zoomLevel, m_sceneCoordinate, m_viewSize); } -void MapEngine::getTiles(QPoint sceneCoordinate) +void MapEngine::getTiles(SceneCoordinate sceneCoordinate) { qDebug() << __PRETTY_FUNCTION__; @@ -254,31 +260,33 @@ void MapEngine::getTiles(QPoint sceneCoordinate) } } -void MapEngine::gpsPositionUpdate(QPointF position, qreal accuracy) +void MapEngine::gpsPositionUpdate(GeoCoordinate position, qreal accuracy) { qDebug() << __PRETTY_FUNCTION__; - m_gpsLocationItem->updatePosition(convertLatLonToSceneCoordinate(position), accuracy); + m_gpsLocationItem->updatePosition(SceneCoordinate(position), accuracy); m_mapScene->spanItems(m_zoomLevel, m_sceneCoordinate, m_viewSize); if (m_autoCenteringEnabled) { - m_lastAutomaticPosition = convertLatLonToSceneCoordinate(position); + m_lastAutomaticPosition = SceneCoordinate(position); m_scrollStartedByGps = true; scrollToPosition(m_lastAutomaticPosition); } } -qreal MapEngine::greatCircleDistance(QPointF firstLocation, QPointF secondLocation) +qreal MapEngine::greatCircleDistance(GeoCoordinate firstLocation, GeoCoordinate secondLocation) { qDebug() << __PRETTY_FUNCTION__; - const qreal TORAD = (M_PI/180); + const qreal TO_RAD = (M_PI / 180); - qreal dLat = (secondLocation.y() - firstLocation.y())*TORAD; - qreal dLon = (secondLocation.x() - firstLocation.x())*TORAD; - qreal a = pow(sin(dLat/2),2) + cos(firstLocation.y()*TORAD) * cos(secondLocation.y()*TORAD) - * pow(sin(dLon/2),2); - qreal c = 2 * atan2(sqrt(a), sqrt(1-a)); + qreal dLat = (secondLocation.latitude() - firstLocation.latitude()) * TO_RAD; + qreal dLon = (secondLocation.longitude() - firstLocation.longitude()) * TO_RAD; + qreal a = pow(sin(dLat / 2), 2) + + cos(firstLocation.latitude() * TO_RAD) + * cos(secondLocation.latitude() * TO_RAD) + * pow(sin(dLon / 2), 2); + qreal c = 2 * atan2(sqrt(a), sqrt(1 - a)); return (EARTH_RADIUS * c); } @@ -287,23 +295,36 @@ void MapEngine::init() { qDebug() << __PRETTY_FUNCTION__; - QPointF startLocation; QSettings settings(DIRECTORY_NAME, FILE_NAME); - if (settings.value(MAP_LAST_POSITION, ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toString() - == ERROR_VALUE_NOT_FOUND_ON_SETTINGS || settings.value(MAP_LAST_ZOOMLEVEL, - ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toString() == ERROR_VALUE_NOT_FOUND_ON_SETTINGS) { - - startLocation = QPointF(MAP_DEFAULT_LONGITUDE, MAP_DEFAULT_LATITUDE); - m_zoomLevel = qBound(MAP_VIEW_MIN_ZOOM_LEVEL, MAP_DEFAULT_ZOOM_LEVEL, OSM_MAX_ZOOM_LEVEL); - } else { - m_zoomLevel = settings.value(MAP_LAST_ZOOMLEVEL, ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toInt(); - startLocation = settings.value(MAP_LAST_POSITION, - ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toPointF(); + /// @todo remove +// if (settings.value(MAP_LAST_POSITION, ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toString() +// == ERROR_VALUE_NOT_FOUND_ON_SETTINGS || settings.value(MAP_LAST_ZOOMLEVEL, +// ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toString() == ERROR_VALUE_NOT_FOUND_ON_SETTINGS) { + +// startLocation = GeoCoordinate(MAP_DEFAULT_LATITUDE, MAP_DEFAULT_LONGITUDE); +// m_zoomLevel = qBound(MAP_VIEW_MIN_ZOOM_LEVEL, MAP_DEFAULT_ZOOM_LEVEL, OSM_MAX_ZOOM_LEVEL); +// } else { +// m_zoomLevel = settings.value(MAP_LAST_ZOOMLEVEL, ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toInt(); +// startLocation = settings.value(MAP_LAST_POSITION, +// ERROR_VALUE_NOT_FOUND_ON_SETTINGS).toPointF(); +// } + + // init can be only done if both values exists in the settings + if (settings.contains(MAP_LAST_POSITION) && settings.contains(MAP_LAST_ZOOMLEVEL)) { + qWarning() << __PRETTY_FUNCTION__ << "both settings found"; + QVariant zoomLevel = settings.value(MAP_LAST_ZOOMLEVEL); + QVariant location = settings.value(MAP_LAST_POSITION); + // init can be only done if we are able to convert variants into target data types + if (zoomLevel.canConvert() && location.canConvert()) { + qWarning() << __PRETTY_FUNCTION__ << "both settings can be converted"; + m_zoomLevel = zoomLevel.toInt(); + m_sceneCoordinate = SceneCoordinate(location.value()); + } } emit zoomLevelChanged(m_zoomLevel); - centerToCoordinates(QPointF(startLocation.x(), startLocation.y())); + scrollToPosition(m_sceneCoordinate); } bool MapEngine::isAutoCenteringEnabled() @@ -311,7 +332,7 @@ bool MapEngine::isAutoCenteringEnabled() return m_autoCenteringEnabled; } -bool MapEngine::isCenterTileChanged(QPoint sceneCoordinate) +bool MapEngine::isCenterTileChanged(SceneCoordinate sceneCoordinate) { qDebug() << __PRETTY_FUNCTION__; @@ -329,10 +350,10 @@ qreal MapEngine::sceneResolution() const int SHIFT = 200; const int KM_TO_M = 1000; qreal scale = (1 << (OSM_MAX_ZOOM_LEVEL - m_zoomLevel)); - QPointF centerCoordinate = centerGeoCoordinate(); - QPoint shiftedSceneCoordinate = QPoint(m_sceneCoordinate.x() + SHIFT*scale - , m_sceneCoordinate.y()); - QPointF shiftedCoordinate = convertSceneCoordinateToLatLon(m_zoomLevel, shiftedSceneCoordinate); + GeoCoordinate centerCoordinate = centerGeoCoordinate(); + SceneCoordinate shiftedSceneCoordinate(m_sceneCoordinate.x() + SHIFT * scale, + m_sceneCoordinate.y()); + GeoCoordinate shiftedCoordinate(shiftedSceneCoordinate); qreal dist = greatCircleDistance(centerCoordinate, shiftedCoordinate) * KM_TO_M; return (dist / SHIFT); } @@ -380,11 +401,7 @@ void MapEngine::receiveOwnLocation(User *user) qDebug() << __PRETTY_FUNCTION__; if(user) { - QPoint newPosition = convertLatLonToSceneCoordinate(user->coordinates()); - if (m_ownLocation->pos().toPoint() != newPosition) { - m_ownLocation->setPos(newPosition); - } - + m_ownLocation->setPos(SceneCoordinate(user->coordinates()).toPointF()); if (!m_ownLocation->isVisible()) m_ownLocation->show(); } else { @@ -417,15 +434,15 @@ void MapEngine::scrollerStateChanged(QAbstractAnimation::State newState) m_scrollStartedByGps = false; } -void MapEngine::scrollToPosition(QPoint scenePosition) +void MapEngine::scrollToPosition(SceneCoordinate scenePosition) { qDebug() << __PRETTY_FUNCTION__; m_scroller->stop(); m_scroller->setEasingCurve(QEasingCurve::InOutQuart); m_scroller->setDuration(SMOOTH_CENTERING_TIME_MS); - m_scroller->setStartValue(m_sceneCoordinate); - m_scroller->setEndValue(scenePosition); + m_scroller->setStartValue(m_sceneCoordinate.toPointF()); + m_scroller->setEndValue(scenePosition.toPointF()); m_smoothScrollRunning = true; m_scroller->start(); } @@ -437,7 +454,7 @@ void MapEngine::setAutoCentering(bool enabled) m_autoCenteringEnabled = enabled; } -void MapEngine::setCenterPosition(QPoint scenePosition) +void MapEngine::setCenterPosition(SceneCoordinate scenePosition) { qDebug() << __PRETTY_FUNCTION__; @@ -445,7 +462,9 @@ void MapEngine::setCenterPosition(QPoint scenePosition) scenePosition.setX(normalize(scenePosition.x(), OSM_MAP_MIN_PIXEL_X, OSM_MAP_MAX_PIXEL_X)); // don't allow vertical scene coordinates go out of the map - scenePosition.setY(qBound(OSM_MAP_MIN_PIXEL_Y, scenePosition.y(), OSM_MAP_MAX_PIXEL_Y)); + scenePosition.setY(qBound(double(OSM_MAP_MIN_PIXEL_Y), + scenePosition.y(), + double(OSM_MAP_MAX_PIXEL_Y))); if (!m_smoothScrollRunning) disableAutoCenteringIfRequired(scenePosition); @@ -528,16 +547,21 @@ void MapEngine::updateViewTilesSceneRect() qDebug() << __PRETTY_FUNCTION__; const QPoint ONE_TILE = QPoint(1, 1); - const QPoint ONE_PIXEL = QPoint(1, 1); + const double ONE_PIXEL = 1; + + SceneCoordinate topLeft = convertTileNumberToSceneCoordinate(m_zoomLevel, + m_viewTilesGrid.topLeft()); - QPoint topLeft = convertTileNumberToSceneCoordinate(m_zoomLevel, m_viewTilesGrid.topLeft()); // one tile - one pixel is added because returned coordinates are pointing to upper left corner // of the last tile. - QPoint bottomRight = convertTileNumberToSceneCoordinate(m_zoomLevel, + SceneCoordinate bottomRight = convertTileNumberToSceneCoordinate(m_zoomLevel, m_viewTilesGrid.bottomRight() - + ONE_TILE) - ONE_PIXEL; + + ONE_TILE); + bottomRight.setX(bottomRight.x() - ONE_PIXEL); + bottomRight.setY(bottomRight.y() - ONE_PIXEL); - m_mapScene->tilesSceneRectUpdated(QRect(topLeft, bottomRight)); + m_mapScene->tilesSceneRectUpdated(QRect(topLeft.toPointF().toPoint(), + bottomRight.toPointF().toPoint())); } void MapEngine::viewResized(const QSize &size) diff --git a/src/map/mapengine.h b/src/map/mapengine.h index 8f676c9..393102a 100644 --- a/src/map/mapengine.h +++ b/src/map/mapengine.h @@ -28,6 +28,9 @@ #include +#include "coordinates/geocoordinate.h" +#include "coordinates/scenecoordinate.h" + class QGraphicsScene; class FriendItemsHandler; @@ -73,45 +76,46 @@ public: ******************************************************************************/ public: /** - * @brief Coordinates of the current center point + * @brief Coordinates of the current center point * - * @return Current coordinates (latitude & longitude) + * @return Current coordinates */ - QPointF centerGeoCoordinate(); + GeoCoordinate centerGeoCoordinate(); - /** - * @brief Convert latitude and longitude to scene coordinates. - * - * @param latLonCoordinate latitude and longitude values - * @return scene coordinate - */ - static QPoint convertLatLonToSceneCoordinate(QPointF latLonCoordinate); + /// @todo remove +// /** +// * @brief Convert latitude and longitude to scene coordinates. +// * +// * @param latLonCoordinate latitude and longitude values +// * @return scene coordinate +// */ +// static QPoint convertLatLonToSceneCoordinate(GeoCoordinate latLonCoordinate); - /** - * @brief converts scene coordinates to latitude and longitude - * - * @param zoomLevel current zoom level - * @param sceneCoordinate that will be converted - */ - QPointF convertSceneCoordinateToLatLon(int zoomLevel, QPoint sceneCoordinate); +// /** +// * @brief converts scene coordinates to latitude and longitude +// * +// * @param zoomLevel current zoom level +// * @param sceneCoordinate that will be converted +// */ +// GeoCoordinate convertSceneCoordinateToLatLon(int zoomLevel, QPoint sceneCoordinate); /** * @brief Convert MapScene coordinate to tile x & y numbers. * * @param zoomLevel ZoomLevel * @param sceneCoordinate MapScene coordinate - * @return QPoint tile x & y numbers + * @return tile x & y numbers */ - static QPoint convertSceneCoordinateToTileNumber(int zoomLevel, QPoint sceneCoordinate); + static QPoint convertSceneCoordinateToTileNumber(int zoomLevel, SceneCoordinate sceneCoordinate); /** * @brief Convert tile x & y numbers to MapScene coordinates * * @param zoomLevel Zoom level * @param tileNumber x & y numbers of the tile - * @return QPoint MapScene coordinate + * @return Scene coordinate */ - static QPoint convertTileNumberToSceneCoordinate(int zoomLevel, QPoint tileNumber); + static SceneCoordinate convertTileNumberToSceneCoordinate(int zoomLevel, QPoint tileNumber); /** * @brief Calculate great-circle distance between two geographic coordinates @@ -123,14 +127,14 @@ public: * @param secondLocation Coordinates of the second location * @return qreal Distance in kilometers */ - qreal greatCircleDistance(QPointF firstLocation, QPointF secondLocation); + qreal greatCircleDistance(GeoCoordinate firstLocation, GeoCoordinate secondLocation); /** - * @brief MapEngine initializer + * @brief Set initial values for the map * - * Set initial location and zoom level for the engine. locationChanged and - * zoomLevelChanged signals are emitted, so init should be called after - * those signals are connected to MapView. + * Set initial location and zoom level from the settings, if available, or use the default + * values set in the constructor. Signals locationChanged() and zoomLevelChanged() are emitted, + * so init should be called after those signals are connected. */ void init(); @@ -185,7 +189,7 @@ public slots: * * @param latLonCoordinate Latitude & longitude coordinates for location */ - void centerToCoordinates(QPointF latLonCoordinate); + void centerToCoordinates(GeoCoordinate latLonCoordinate); /** * @brief Slot to catch user own location data @@ -234,14 +238,14 @@ private: * @param sceneCoordinate scene's current center coordinate * @return QRect grid of tile coordinates */ - QRect calculateTileGrid(QPoint sceneCoordinate); + QRect calculateTileGrid(SceneCoordinate sceneCoordinate); /** * @brief Request disabling of auto centering if centered too far from the real location. * * @param sceneCoordinate scene's center coordinate */ - void disableAutoCenteringIfRequired(QPoint sceneCoordinate); + void disableAutoCenteringIfRequired(SceneCoordinate sceneCoordinate); /** * @brief Get new tiles. @@ -250,7 +254,7 @@ private: * aren't already in the scene. * @param sceneCoordinate scene's center coordinate */ - void getTiles(QPoint sceneCoordinate); + void getTiles(SceneCoordinate sceneCoordinate); /** * @brief Check if auto centering is enabled @@ -265,7 +269,7 @@ private: * @param sceneCoordinate scene's center coordinate * @return bool true if center tile changed, false otherwise */ - bool isCenterTileChanged(QPoint sceneCoordinate); + bool isCenterTileChanged(SceneCoordinate sceneCoordinate); /** * @brief Calculate scale at the map center of the map in meters/pixel @@ -313,7 +317,7 @@ private slots: * @param position New coordinates from GPS * @param accuracy Accuracy of the GPS fix */ - void gpsPositionUpdate(QPointF position, qreal accuracy); + void gpsPositionUpdate(GeoCoordinate position, qreal accuracy); /** * @brief Slot for received map tile images @@ -345,7 +349,7 @@ private slots: * * @param scenePosition Target position in the scene */ - void scrollToPosition(QPoint scenePosition); + void scrollToPosition(SceneCoordinate scenePosition); /** * @brief Set center point in the scene @@ -353,7 +357,7 @@ private slots: * Does emit locationChanged signal. * @param scenePosition Scene coordinates for new position */ - void setCenterPosition(QPoint scenePosition); + void setCenterPosition(SceneCoordinate scenePosition); /** * @brief Slot for actions after view zoom is finished @@ -412,7 +416,7 @@ signals: * * @param sceneCoordinate New scene coordinates */ - void locationChanged(QPoint sceneCoordinate); + void locationChanged(SceneCoordinate sceneCoordinate); /** * @brief Signal is emitted when location item is clicked. @@ -460,8 +464,8 @@ private: int m_zoomLevel; ///< Current zoom level QPoint m_centerTile; ///< Current center tile - QPoint m_lastAutomaticPosition; ///< Last automatically set position in scene coordinate - QPoint m_sceneCoordinate; ///< Current center coordinate + SceneCoordinate m_lastAutomaticPosition; ///< Last automatically set position in scene coordinate + SceneCoordinate m_sceneCoordinate; ///< Current center coordinate QRect m_viewTilesGrid; ///< Current grid of tiles in view (includes margin) diff --git a/src/map/mapscene.cpp b/src/map/mapscene.cpp index 556ac85..1a1e7ca 100644 --- a/src/map/mapscene.cpp +++ b/src/map/mapscene.cpp @@ -244,7 +244,7 @@ void MapScene::setZoomLevel(int zoomLevel) m_zoomLevel = zoomLevel; } -void MapScene::spanItems(int zoomLevel, QPoint sceneCoordinate, QSize viewSize) +void MapScene::spanItems(int zoomLevel, SceneCoordinate sceneCoordinate, QSize viewSize) { qDebug() << __PRETTY_FUNCTION__; diff --git a/src/map/mapscene.h b/src/map/mapscene.h index 41144c3..6ee3d1f 100644 --- a/src/map/mapscene.h +++ b/src/map/mapscene.h @@ -26,6 +26,8 @@ #include "maptile.h" +class SceneCoordinate; + /** * @brief Map scene for storing MapTile items * @@ -150,7 +152,7 @@ public: * @param sceneCoordinate Scene coordinates of the current center point * @param viewSize Current size of the view */ - void spanItems(int zoomLevel, QPoint sceneCoordinate, QSize viewSize); + void spanItems(int zoomLevel, SceneCoordinate sceneCoordinate, QSize viewSize); /** * @brief Save new tiles scene rect diff --git a/src/map/mapscroller.cpp b/src/map/mapscroller.cpp index 8b8f554..30e54c6 100644 --- a/src/map/mapscroller.cpp +++ b/src/map/mapscroller.cpp @@ -36,8 +36,10 @@ void MapScroller::updateCurrentValue(const QVariant &value) { qDebug() << __PRETTY_FUNCTION__; - Q_ASSERT(value.type() == QVariant::Point); + Q_ASSERT(value.type() == QVariant::PointF); - if (state() == QAbstractAnimation::Running) - emit coordinateUpdated(value.toPoint()); + if (state() == QAbstractAnimation::Running) { + QPointF point = value.toPointF(); + emit coordinateUpdated(SceneCoordinate(point.x(), point.y())); + } } diff --git a/src/map/mapscroller.h b/src/map/mapscroller.h index 1bb1ec6..f28c570 100644 --- a/src/map/mapscroller.h +++ b/src/map/mapscroller.h @@ -23,15 +23,18 @@ #ifndef MAPSCROLLER_H #define MAPSCROLLER_H -#include #include +#include "coordinates/scenecoordinate.h" + /** * @brief Map scroller * * Used for kinetic and smooth scroll effects. Class implementation is following the singleton * desing pattern. * +* Use QPointF datatype for startValue and endValue. Emitted datatype is SceneCoordinate. +* * @author Sami Rämö - sami.ramo@ixonos.com */ class MapScroller : public QVariantAnimation @@ -93,7 +96,7 @@ signals: * * @param coordinate New coordinate value */ - void coordinateUpdated(QPoint coordinate); + void coordinateUpdated(SceneCoordinate coordinate); }; #endif // MAPSCROLLER_H diff --git a/src/map/maptile.cpp b/src/map/maptile.cpp index 290f4f6..4aafb14 100644 --- a/src/map/maptile.cpp +++ b/src/map/maptile.cpp @@ -101,7 +101,7 @@ void MapTile::setPosition() if ((m_zoomLevel >= OSM_MIN_ZOOM_LEVEL) && (m_zoomLevel <= OSM_MAX_ZOOM_LEVEL) && (m_tileNumber.x() >= MIN_TILE_NUMBER_X) && (m_tileNumber.x() <= MAX_TILE_NUMBER_X) && (m_tileNumber.y() >= 0) && (m_tileNumber.y() <= MAX_TILE_NUMBER)) { - setPos(MapEngine::convertTileNumberToSceneCoordinate(m_zoomLevel, m_tileNumber)); + setPos(MapEngine::convertTileNumberToSceneCoordinate(m_zoomLevel, m_tileNumber).toPointF()); } else { setPos(UNDEFINED, UNDEFINED); } diff --git a/src/map/mapview.cpp b/src/map/mapview.cpp index 9e45304..b93c34d 100644 --- a/src/map/mapview.cpp +++ b/src/map/mapview.cpp @@ -65,11 +65,11 @@ MapView::MapView(QWidget *parent) this, SLOT(doubleTapZoomFinished())); } -void MapView::centerToSceneCoordinates(QPoint sceneCoordinate) +void MapView::centerToSceneCoordinates(const SceneCoordinate &sceneCoordinate) { qDebug() << __PRETTY_FUNCTION__ << "sceneCoordinate" << sceneCoordinate; - centerOn(sceneCoordinate); + centerOn(sceneCoordinate.toPointF()); } void MapView::doubleTapZoomFinished() @@ -94,8 +94,8 @@ void MapView::mouseDoubleClickEvent(QMouseEvent *event) m_scroller->setEasingCurve(QEasingCurve::Linear); m_scroller->setDuration(ZOOM_TIME_MS); - m_scroller->setStartValue(m_scenePosition); - m_scroller->setEndValue(zoomPosition); + m_scroller->setStartValue(QPointF(m_scenePosition)); + m_scroller->setEndValue(QPointF(zoomPosition)); m_zoomAnimation->setEasingCurve(QEasingCurve::InQuad); m_zoomAnimation->setDuration(ZOOM_TIME_MS); @@ -123,7 +123,7 @@ void MapView::mouseMoveEvent(QMouseEvent *event) m_time.start(); m_index++; - emit viewScrolled(m_scenePosition); + emit viewScrolled(SceneCoordinate(m_scenePosition.x(), m_scenePosition.y())); m_mouseLastScenePosition = mapToScene(event->pos()).toPoint(); m_mouseLastViewPosition = event->pos(); @@ -191,8 +191,8 @@ void MapView::mouseReleaseEvent(QMouseEvent *event) m_scroller->setEasingCurve(QEasingCurve::OutCirc); m_scroller->setDuration(KINETIC_SCROLL_TIME_MS); - m_scroller->setStartValue(m_scenePosition); - m_scroller->setEndValue(m_scenePosition + effectSceneDistance.toPoint()); + m_scroller->setStartValue(QPointF(m_scenePosition)); + m_scroller->setEndValue(QPointF(m_scenePosition) + effectSceneDistance); m_scroller->start(); } } diff --git a/src/map/mapview.h b/src/map/mapview.h index 8790e75..ac9adfc 100644 --- a/src/map/mapview.h +++ b/src/map/mapview.h @@ -31,6 +31,8 @@ class QParallelAnimationGroup; class MapScroller; +class SceneCoordinate; + #define VALUES 4 /** @@ -132,7 +134,7 @@ public slots: * * @param sceneCoordinate Scene coordinates of the new center point */ - void centerToSceneCoordinates(QPoint sceneCoordinate); + void centerToSceneCoordinates(const SceneCoordinate &sceneCoordinate); /** * @brief Set zoom level of the view @@ -182,7 +184,7 @@ signals: * Signal is emitted when view is scrolled. * @param sceneCoordinate Scene coordinates of the new center point of the view */ - void viewScrolled(QPoint sceneCoordinate); + void viewScrolled(const SceneCoordinate &sceneCoordinate); /** * @brief Signal for informing that zooming animation is finished diff --git a/src/situareservice/situareservice.cpp b/src/situareservice/situareservice.cpp index c046ebb..5a497d4 100644 --- a/src/situareservice/situareservice.cpp +++ b/src/situareservice/situareservice.cpp @@ -76,7 +76,7 @@ void SituareService::fetchLocations() sendRequest(url, COOKIE, cookie); } -void SituareService::reverseGeo(const QPointF &coordinates) +void SituareService::reverseGeo(const GeoCoordinate &coordinates) { qDebug() << __PRETTY_FUNCTION__; @@ -91,7 +91,7 @@ void SituareService::reverseGeo(const QPointF &coordinates) sendRequest(url, COOKIE, cookie); } -void SituareService::updateLocation(const QPointF &coordinates, const QString &status, +void SituareService::updateLocation(const GeoCoordinate &coordinates, const QString &status, const bool &publish) { qDebug() << __PRETTY_FUNCTION__; @@ -188,7 +188,7 @@ QUrl SituareService::formUrl(const QString &baseUrl, const QString &phpScript, return url; } -QString SituareService::formUrlParameters(const QPointF &coordinates, QString status, +QString SituareService::formUrlParameters(const GeoCoordinate &coordinates, QString status, QString publish) { QString parameters; @@ -196,11 +196,11 @@ QString SituareService::formUrlParameters(const QPointF &coordinates, QString st parameters.append(QUESTION_MARK); parameters.append(LATITUDE); parameters.append(EQUAL_MARK); - parameters.append(QString::number(coordinates.y())); + parameters.append(QString::number(coordinates.latitude())); parameters.append(AMBERSAND_MARK); parameters.append(LONGTITUDE); parameters.append(EQUAL_MARK); - parameters.append(QString::number(coordinates.x())); + parameters.append(QString::number(coordinates.longitude())); if(publish.compare(PUBLISH_TRUE) == 0) { parameters.append(AMBERSAND_MARK); @@ -287,7 +287,7 @@ void SituareService::credentialsReady(const FacebookCredentials &credentials) { qDebug() << __PRETTY_FUNCTION__; - m_credentials = credentials; + m_credentials = credentials; } void SituareService::parseUserData(const QByteArray &jsonReply) @@ -314,7 +314,7 @@ void SituareService::parseUserData(const QByteArray &jsonReply) QVariant userVariant = result.value("user"); QMap userMap = userVariant.toMap(); - QPointF coordinates(userMap["longitude"].toReal(), userMap["latitude"].toReal()); + GeoCoordinate coordinates(userMap["latitude"].toReal(), userMap["longitude"].toReal()); QUrl imageUrl = userMap[NORMAL_SIZE_PROFILE_IMAGE].toUrl(); @@ -326,8 +326,8 @@ void SituareService::parseUserData(const QByteArray &jsonReply) QString address = userMap["address"].toString(); if(address.isEmpty()) { QStringList location; - location.append(QString::number(coordinates.y())); - location.append(QString::number(coordinates.x())); + location.append(QString::number(coordinates.latitude())); + location.append(QString::number(coordinates.longitude())); address = location.join(", "); } @@ -342,7 +342,7 @@ void SituareService::parseUserData(const QByteArray &jsonReply) QVariant distance = friendMap["distance"]; QMap distanceMap = distance.toMap(); - QPointF coordinates(friendMap["longitude"].toReal(), friendMap["latitude"].toReal()); + GeoCoordinate coordinates(friendMap["latitude"].toReal(),friendMap["longitude"].toReal()); QUrl imageUrl = friendMap["profile_pic"].toUrl(); @@ -354,8 +354,8 @@ void SituareService::parseUserData(const QByteArray &jsonReply) QString address = friendMap["address"].toString(); if(address.isEmpty()) { QStringList location; - location.append(QString::number(coordinates.y())); - location.append(QString::number(coordinates.x())); + location.append(QString::number(coordinates.latitude())); + location.append(QString::number(coordinates.longitude())); address = location.join(", "); } diff --git a/src/situareservice/situareservice.h b/src/situareservice/situareservice.h index bca22dc..370cd61 100644 --- a/src/situareservice/situareservice.h +++ b/src/situareservice/situareservice.h @@ -31,7 +31,7 @@ class NetworkAccessManager; class QNetworkReply; class QNetworkRequest; -class QPointF; +class GeoCoordinate; class QUrl; /** @@ -74,7 +74,7 @@ public: * * @param coordinates coordinates to be translated */ - void reverseGeo(const QPointF &coordinates); + void reverseGeo(const GeoCoordinate &coordinates); /** * @brief Updates location to the Situare server @@ -83,7 +83,7 @@ public: * @param status message * @param publish publish location on Facebook wall (true/false) */ - void updateLocation(const QPointF &coordinates, const QString &status, const bool &publish); + void updateLocation(const GeoCoordinate &coordinates, const QString &status, const bool &publish); public slots: @@ -152,7 +152,7 @@ private: * @param publish optional publish location on Facebook wall (true/false) * @return QString */ - QString formUrlParameters(const QPointF &coordinates, QString status = QString(), + QString formUrlParameters(const GeoCoordinate &coordinates, QString status = QString(), QString publish = QString()); /** diff --git a/src/src.pro b/src/src.pro index 5d45003..51c6ca0 100644 --- a/src/src.pro +++ b/src/src.pro @@ -54,7 +54,9 @@ SOURCES += main.cpp \ ui/zoombuttonpanel.cpp \ user/user.cpp \ ui/fullscreenbutton.cpp \ - engine/mce.cpp + engine/mce.cpp \ + coordinates/scenecoordinate.cpp \ + coordinates/geocoordinate.cpp HEADERS += application.h \ common.h \ engine/engine.h \ @@ -107,7 +109,9 @@ HEADERS += application.h \ user/user.h \ ui/fullscreenbutton.h \ engine/mce.h \ - map/osm.h + map/osm.h \ + coordinates/scenecoordinate.h \ + coordinates/geocoordinate.h QT += network \ webkit diff --git a/src/ui/friendlistitem.h b/src/ui/friendlistitem.h index 53c402f..8f19226 100644 --- a/src/ui/friendlistitem.h +++ b/src/ui/friendlistitem.h @@ -132,9 +132,9 @@ signals: /** * @brief Signal for finding friend. * - * @param coordinates friend's geo coordinates + * @param coordinates friend's coordinates */ - void findFriend(const QPointF &coordinates); + void findFriend(const GeoCoordinate &coordinates); /****************************************************************************** * DATA MEMBERS diff --git a/src/ui/friendlistpanel.cpp b/src/ui/friendlistpanel.cpp index 6ce3037..bd99202 100644 --- a/src/ui/friendlistpanel.cpp +++ b/src/ui/friendlistpanel.cpp @@ -20,12 +20,14 @@ USA. */ -#include "friendlistpanel.h" +#include "coordinates/geocoordinate.h" #include "friendlistview.h" #include "friendlistitem.h" #include "panelcommon.h" #include "sidepanel.h" +#include "friendlistpanel.h" + FriendListPanel::FriendListPanel(QWidget *parent) : SidePanel(parent) { @@ -87,8 +89,8 @@ void FriendListPanel::friendInfoReceived(QList &friendList) item->setData(user); m_friendListView->addWidget(user->userId(), item); - connect(item, SIGNAL(findFriend(QPointF)), - this, SIGNAL(findFriend(QPointF))); + connect(item, SIGNAL(findFriend(GeoCoordinate)), + this, SIGNAL(findFriend(GeoCoordinate))); } else { item = m_friendListView->takeWidgetFromView(user->userId()); diff --git a/src/ui/friendlistpanel.h b/src/ui/friendlistpanel.h index 4411422..36342d9 100644 --- a/src/ui/friendlistpanel.h +++ b/src/ui/friendlistpanel.h @@ -27,11 +27,13 @@ #include "sidepanel.h" -class FriendListView; -class User; class QLabel; class QWidget; +class FriendListView; +class GeoCoordinate; +class User; + /** * @brief Class for sliding friends list panel * @@ -89,9 +91,9 @@ signals: /** * @brief Signal for friend finding. * - * @param coordinates longitude and latitude values + * @param coordinates Target coordinate */ - void findFriend(const QPointF &coordinates); + void findFriend(const GeoCoordinate &coordinates); /******************************************************************************* * DATA MEMBERS diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 16d0b35..b197454 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -57,7 +57,7 @@ MainWindow::MainWindow(QWidget *parent) m_refresh(false), m_progressIndicatorCount(0), m_ownLocationCrosshair(0), - m_email(), + m_email(), m_password(), m_fullScreenButton(0), m_webView(0), @@ -167,8 +167,8 @@ void MainWindow::buildFriendListPanel() connect(m_mapView, SIGNAL(viewResized(QSize)), m_friendsListPanelSidebar, SLOT(resizeSideBar(QSize))); - connect(m_friendsListPanel, SIGNAL(findFriend(QPointF)), - this, SIGNAL(findFriend(QPointF))); + connect(m_friendsListPanel, SIGNAL(findFriend(GeoCoordinate)), + this, SIGNAL(findFriend(GeoCoordinate))); connect(this, SIGNAL(friendImageReady(User*)), m_friendsListPanel, SLOT(friendImageReady(User*))); @@ -233,11 +233,11 @@ void MainWindow::buildMap() buildFullScreenButton(); buildMapScale(); - connect(m_mapView, SIGNAL(viewScrolled(QPoint)), - this, SIGNAL(mapViewScrolled(QPoint))); + connect(m_mapView, SIGNAL(viewScrolled(SceneCoordinate)), + this, SIGNAL(mapViewScrolled(SceneCoordinate))); - connect(this, SIGNAL(centerToSceneCoordinates(QPoint)), - m_mapView, SLOT(centerToSceneCoordinates(QPoint))); + connect(this, SIGNAL(centerToSceneCoordinates(SceneCoordinate)), + m_mapView, SLOT(centerToSceneCoordinates(SceneCoordinate))); connect(m_mapView, SIGNAL(viewResized(QSize)), this, SIGNAL(mapViewResized(QSize))); @@ -310,8 +310,8 @@ void MainWindow::buildUserInfoPanel() connect(m_mapView, SIGNAL(viewResized(QSize)), m_userPanelSidebar, SLOT(resizeSideBar(QSize))); - connect(m_userPanel, SIGNAL(findUser(QPointF)), - this, SIGNAL(findUser(QPointF))); + connect(m_userPanel, SIGNAL(findUser(GeoCoordinate)), + this, SIGNAL(findUser(GeoCoordinate))); connect(m_userPanel, SIGNAL(requestReverseGeo()), this, SIGNAL(requestReverseGeo())); @@ -689,7 +689,7 @@ void MainWindow::loginUsingCookies() buildWebView(); loadCookies(); - + QStringList urlParts; urlParts.append(FACEBOOK_LOGINBASE); urlParts.append(SITUARE_PUBLIC_FACEBOOKAPI_KEY); @@ -937,8 +937,8 @@ void MainWindow::toggleProgressIndicator(bool value) void MainWindow::updateItemVisibility() { qDebug() << __PRETTY_FUNCTION__; - - if(m_loggedIn) { + + if(m_loggedIn) { if(!m_gpsToggleAct->isChecked()) setOwnLocationCrosshairVisibility(true); @@ -956,7 +956,7 @@ void MainWindow::updateItemVisibility() const QString MainWindow::username() { qDebug() << __PRETTY_FUNCTION__; - + return m_email; } diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index b2d005b..810c130 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -32,22 +32,25 @@ class QGraphicsScene; class QLabel; -class QWebView; +class QMessageBox; class QNetworkReply; +class QToolButton; +class QWebView; class FacebookAuthentication; class FullScreenButton; class FriendListPanel; +class GeoCoordinate; class MapScale; class MapScene; class MapView; +class SettingsDialog; +class SceneCoordinate; class SituareService; class User; class UserInfoPanel; class ZoomButtonPanel; -class SettingsDialog; -class QToolButton; -class QMessageBox; + /** * @brief Main Window Class @@ -412,7 +415,7 @@ signals: * * @param sceneCoordinate Scene coordinates of the new center point */ - void centerToSceneCoordinates(QPoint sceneCoordinate); + void centerToSceneCoordinates(const SceneCoordinate &sceneCoordinate); /** * @brief Signal for enabling automatic location update. @@ -441,7 +444,7 @@ signals: * * @param coordinates user geo coordinates */ - void findUser(const QPointF &coordinates); + void findUser(const GeoCoordinate &coordinates); /** * @brief Signals when friend's profile image is ready @@ -462,7 +465,7 @@ signals: * * @param coordinates friend's geo coordinates */ - void findFriend(const QPointF &coordinates); + void findFriend(const GeoCoordinate &coordinates); /** * @brief Signal for friend location ready. @@ -496,7 +499,7 @@ signals: * * @param sceneCoordinate */ - void mapViewScrolled(QPoint sceneCoordinate); + void mapViewScrolled(const SceneCoordinate &sceneCoordinate); /** * @brief Forwarding signal from MapEngine to MapView diff --git a/src/ui/userinfo.cpp b/src/ui/userinfo.cpp index 311e7c5..c6f11ae 100644 --- a/src/ui/userinfo.cpp +++ b/src/ui/userinfo.cpp @@ -140,7 +140,7 @@ UserInfo::~UserInfo() QSettings settings(DIRECTORY_NAME, FILE_NAME); - if (!m_backupMessage.isEmpty()) { + if (!m_backupMessage.isEmpty()) { settings.setValue(USER_UNSEND_MESSAGE, m_backupMessage.toAscii()); settings.setValue(USER_UNSEND_MESSAGE_PUBLISH, m_backupFacebookPublishPolicity); } else { @@ -156,7 +156,7 @@ void UserInfo::setAddress(const QString &address) m_locationLabel->setText(address); } -void UserInfo::setCoordinates(const QPointF &coordinates) +void UserInfo::setCoordinates(const GeoCoordinate &coordinates) { qDebug() << __PRETTY_FUNCTION__; diff --git a/src/ui/userinfo.h b/src/ui/userinfo.h index 2d0070c..23f436b 100644 --- a/src/ui/userinfo.h +++ b/src/ui/userinfo.h @@ -27,6 +27,8 @@ #define USERINFO_H #include + +#include "coordinates/geocoordinate.h" #include "updatelocation/updatelocationdialog.h" class ImageButton; @@ -96,7 +98,7 @@ public: * * @param coordinates Reference to users current coordinates */ - void setCoordinates(const QPointF &coordinates); + void setCoordinates(const GeoCoordinate &coordinates); /** * @brief Sets the user picture @@ -174,7 +176,7 @@ private slots: * @brief Slot function to forward messageUpdate launch signal * */ - void messageUpdate(); + void messageUpdate(); /** * @brief Slot function to get indication when dialog is finished @@ -191,7 +193,7 @@ signals: * * @param coordinates user geo coordinates */ - void findUser(const QPointF &coordinates); + void findUser(const GeoCoordinate &coordinates); /** * @brief Signal that used to inform user that his message/location update tp Situare server @@ -234,7 +236,7 @@ signals: ******************************************************************************/ private: bool m_backupFacebookPublishPolicity; ///< Backup of publish on Facebook checkbox value - bool m_expanded; ///< Item expanded state + bool m_expanded; ///< Item expanded state QLabel *m_locationLabel; ///< Location label QLabel *m_nameLabel; ///< Name label QLabel *m_statusTextLabel; ///< Status text label @@ -243,14 +245,14 @@ private: QPixmap m_backgroundMiddleImage; ///< Middle background image QPixmap m_backgroundTopImage; ///< Top background image QPoint m_mousePosition; ///< Current mouse press position - QPointF m_coordinates; ///< User current coordinates + GeoCoordinate m_coordinates; ///< User current coordinates QString m_address; ///< Address from where the new message was sent QString m_backupMessage; ///< Backup of users message QString m_expandedMessageText; ///< Expanded message text QString m_messageText; ///< User's message QString m_time; ///< Time when the new message was sent QString m_userName; ///< User's name - ImageButton *m_findButton; ///< User find button + ImageButton *m_findButton; ///< User find button UpdateLocationDialog *m_updateLocation; ///< Update location dialog }; diff --git a/src/ui/userinfopanel.cpp b/src/ui/userinfopanel.cpp index 59ddfa8..ff41cef 100644 --- a/src/ui/userinfopanel.cpp +++ b/src/ui/userinfopanel.cpp @@ -51,8 +51,8 @@ UserInfoPanel::UserInfoPanel(QWidget *parent) m_panelVBox->addWidget(userInfoScroll); m_panelVBox->setContentsMargins(USERPANEL_MARGIN_LEFT, 0, USERPANEL_MARGIN_RIGHT, 0); - connect(m_userInfo, SIGNAL(findUser(QPointF)), - this, SIGNAL(findUser(QPointF))); + connect(m_userInfo, SIGNAL(findUser(GeoCoordinate)), + this, SIGNAL(findUser(GeoCoordinate))); connect(m_userInfo,SIGNAL(requestReverseGeo()), this, SIGNAL(requestReverseGeo())); diff --git a/src/ui/userinfopanel.h b/src/ui/userinfopanel.h index 1309d09..b83f806 100644 --- a/src/ui/userinfopanel.h +++ b/src/ui/userinfopanel.h @@ -67,7 +67,7 @@ signals: * * @param coordinates user geo coordinates */ - void findUser(const QPointF &coordinates); + void findUser(const GeoCoordinate &coordinates); /** * @brief Signal that used to inform user that his message/location update tp Situare server diff --git a/src/user/user.cpp b/src/user/user.cpp index 9c8ca08..03142d0 100644 --- a/src/user/user.cpp +++ b/src/user/user.cpp @@ -21,7 +21,7 @@ #include "user.h" -User::User(const QString &address, const QPointF &coordinates, const QString &name, +User::User(const QString &address, const GeoCoordinate &coordinates, const QString &name, const QString ¬e, const QUrl &imageUrl, const QString ×tamp, const bool &type, const QString &userId, const QString &units, const double &value) : m_address(address) @@ -58,7 +58,7 @@ void User::setAddress(const QString &address) m_address = address; } -void User::setCoordinates(const QPointF &coordinates) +void User::setCoordinates(const GeoCoordinate &coordinates) { m_coordinates = coordinates; } @@ -94,7 +94,7 @@ const QString& User::address() const return m_address; } -const QPointF& User::coordinates() const +const GeoCoordinate& User::coordinates() const { return m_coordinates; } diff --git a/src/user/user.h b/src/user/user.h index 35d4cf3..ba37a28 100644 --- a/src/user/user.h +++ b/src/user/user.h @@ -23,10 +23,11 @@ #define USER_H #include -#include #include #include +#include "coordinates/geocoordinate.h" + /** * @brief Class to store user information (applies to friends also) * @@ -41,7 +42,7 @@ public: * @brief Constructor, initializes member data * */ - User(const QString &address, const QPointF &coordinates, const QString &name, + User(const QString &address, const GeoCoordinate &coordinates, const QString &name, const QString ¬e, const QUrl &imageUrl, const QString ×tamp, const bool &type, const QString &userId, const QString &units = 0, const double &value = 0); @@ -68,7 +69,7 @@ public: * * @param coordinates coordinates */ - void setCoordinates(const QPointF &coordinates); + void setCoordinates(const GeoCoordinate &coordinates); /** * @brief Set distance @@ -116,9 +117,9 @@ public: /** * @brief Get coordinates * - * @return QPointF coordinates + * @return GeoCoordinate coordinates */ - const QPointF &coordinates() const; + const GeoCoordinate &coordinates() const; /** * @brief Get distance and units @@ -183,7 +184,7 @@ public: private: QString m_address; ///< placeholder for address information - QPointF m_coordinates; ///< placeholder for coordinates + GeoCoordinate m_coordinates; ///< placeholder for coordinates QString m_name; ///< placeholder for name QString m_note; ///< placeholder for note QUrl m_profileImageUrl; ///< placeholder for image url -- 1.7.9.5