Re-factored the source to use the new coordinate classes
authorSami Rämö <sami.ramo@ixonos.com>
Thu, 15 Jul 2010 13:53:06 +0000 (16:53 +0300)
committerSami Rämö <sami.ramo@ixonos.com>
Thu, 15 Jul 2010 13:53:06 +0000 (16:53 +0300)
 - 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

37 files changed:
src/coordinates/geocoordinate.cpp
src/coordinates/geocoordinate.h
src/coordinates/scenecoordinate.cpp
src/coordinates/scenecoordinate.h
src/engine/engine.cpp
src/engine/engine.h
src/gps/gpsposition.cpp
src/gps/gpsposition.h
src/gps/gpspositionprivatestub.cpp
src/gps/gpspositionprivatestub.h
src/map/frienditemshandler.cpp
src/map/gpslocationitem.cpp
src/map/gpslocationitem.h
src/map/mapcommon.h
src/map/mapengine.cpp
src/map/mapengine.h
src/map/mapscene.cpp
src/map/mapscene.h
src/map/mapscroller.cpp
src/map/mapscroller.h
src/map/maptile.cpp
src/map/mapview.cpp
src/map/mapview.h
src/situareservice/situareservice.cpp
src/situareservice/situareservice.h
src/src.pro
src/ui/friendlistitem.h
src/ui/friendlistpanel.cpp
src/ui/friendlistpanel.h
src/ui/mainwindow.cpp
src/ui/mainwindow.h
src/ui/userinfo.cpp
src/ui/userinfo.h
src/ui/userinfopanel.cpp
src/ui/userinfopanel.h
src/user/user.cpp
src/user/user.h

index 63179e5..54cd63e 100644 (file)
@@ -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() << ")";
index 6ac8d3f..87ce516 100644 (file)
@@ -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)
 
index 14965e6..4618eb7 100644 (file)
@@ -22,6 +22,7 @@
 #include <cmath>
 
 #include <QDebug>
+#include <QPointF>
 
 #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)
index 3d06728..1caf745 100644 (file)
@@ -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
     *
index 1fe7989..23c3a25 100644 (file)
     USA.
  */
 
+#include <cmath>
+
 #include <QMessageBox>
 #include <QNetworkReply>
 
 #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 <cmath>
 
 #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)));
index 9abeab1..a347bb5 100644 (file)
@@ -28,7 +28,8 @@
 
 #include <QObject>
 #include <QTime>
-#include <QPointF>
+
+#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
 
 };
 
index 282c6cb..f1d0dfd 100644 (file)
@@ -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__;
 
index f311991..b140fbc 100644 (file)
@@ -23,7 +23,8 @@
 #define GPSPOSITION_H
 
 #include <QObject>
-#include <QPointF>
+
+#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.
index ca31fcf..86f5a0a 100644 (file)
@@ -33,14 +33,14 @@ GPSPositionPrivate::GPSPositionPrivate(QObject *parent)
     m_parent = static_cast<GPSPosition*>(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()
index 7207efc..60cf2ef 100644 (file)
 
 #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.
index cfc10b2..7dd20e5 100644 (file)
 
 #include <QDebug>
 
+#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())
index 2585513..df9293c 100644 (file)
@@ -22,6 +22,7 @@
 #include <QDebug>
 #include <QGraphicsPixmapItem>
 
+#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
index e191573..8093291 100644 (file)
@@ -24,6 +24,8 @@
 
 #include <QGraphicsPixmapItem>
 
+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
index 71f3819..da2c98c 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <QtCore>
 
+#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
 
index ced4e52..8b2f972 100644 (file)
@@ -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>("GeoCoordinate");
+    qRegisterMetaTypeStreamOperators<GeoCoordinate>("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<qreal>(MapEngine::tilesPerSide(OSM_MAX_ZOOM_LEVEL));
+//    qreal z = static_cast<qreal>(MapEngine::tilesPerSide(OSM_MAX_ZOOM_LEVEL));
 
-    qreal x = static_cast<qreal>((longitude + 180.0) / 360.0);
-    qreal y = static_cast<qreal>((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<qreal>((longitude + 180.0) / 360.0);
+//    qreal y = static_cast<qreal>((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<int>() && location.canConvert<GeoCoordinate>()) {
+            qWarning() << __PRETTY_FUNCTION__ << "both settings can be converted";
+            m_zoomLevel = zoomLevel.toInt();
+            m_sceneCoordinate = SceneCoordinate(location.value<GeoCoordinate>());
+        }
     }
 
     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)
index 8f676c9..393102a 100644 (file)
@@ -28,6 +28,9 @@
 
 #include <QtCore>
 
+#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)
 
index 556ac85..1a1e7ca 100644 (file)
@@ -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__;
 
index 41144c3..6ee3d1f 100644 (file)
@@ -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
index 8b8f554..30e54c6 100644 (file)
@@ -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()));
+    }
 }
index 1bb1ec6..f28c570 100644 (file)
 #ifndef MAPSCROLLER_H
 #define MAPSCROLLER_H
 
-#include <QPoint>
 #include <QVariantAnimation>
 
+#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
index 290f4f6..4aafb14 100644 (file)
@@ -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);
     }
index 9e45304..b93c34d 100644 (file)
@@ -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();
         }
     }
index 8790e75..ac9adfc 100644 (file)
@@ -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
index c046ebb..5a497d4 100644 (file)
@@ -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<QString, QVariant> 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<QString, QVariant> 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(", ");
               }
 
index bca22dc..370cd61 100644 (file)
@@ -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());
 
     /**
index 5d45003..51c6ca0 100644 (file)
@@ -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
 
index 53c402f..8f19226 100644 (file)
@@ -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
index 6ce3037..bd99202 100644 (file)
     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<User *> &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());
index 4411422..36342d9 100644 (file)
 
 #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
index 16d0b35..b197454 100644 (file)
@@ -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;
 }
 
index b2d005b..810c130 100644 (file)
 
 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
index 311e7c5..c6f11ae 100644 (file)
@@ -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__;
 
index 2d0070c..23f436b 100644 (file)
@@ -27,6 +27,8 @@
 #define USERINFO_H
 
 #include <QWidget>
+
+#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
 };
 
index 59ddfa8..ff41cef 100644 (file)
@@ -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()));
index 1309d09..b83f806 100644 (file)
@@ -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
index 9c8ca08..03142d0 100644 (file)
@@ -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 &note, const QUrl &imageUrl, const QString &timestamp, 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;
 }
index 35d4cf3..ba37a28 100644 (file)
 #define USER_H
 
 #include <QPixmap>
-#include <QPointF>
 #include <QString>
 #include <QUrl>
 
+#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 &note, const QUrl &imageUrl, const QString &timestamp,
          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