merged with use_last_location
[situare] / src / map / mapengine.cpp
index 00ed232..ca2e42d 100644 (file)
@@ -32,6 +32,7 @@
 #include <QHashIterator>
 #include <QRect>
 
+#include "common.h"
 #include "frienditemshandler.h"
 #include "gpslocationitem.h"
 #include "mapcommon.h"
@@ -79,6 +80,16 @@ MapEngine::MapEngine(QObject *parent)
             this, SIGNAL(locationItemClicked(QList<QString>)));
 }
 
+MapEngine::~MapEngine()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    QSettings settings(DIRECTORY_NAME, FILE_NAME);
+    settings.setValue(MAP_LAST_POSITION,
+                      convertSceneCoordinateToLatLon(m_zoomLevel, m_sceneCoordinate));
+    settings.setValue(MAP_LAST_ZOOMLEVEL, m_zoomLevel);
+}
+
 QRect MapEngine::calculateTileGrid(QPoint sceneCoordinate)
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -230,8 +241,26 @@ 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(DEFAULT_LONGITUDE, DEFAULT_LATITUDE);
+        m_zoomLevel = DEFAULT_START_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();
+    }
+
     emit zoomLevelChanged(m_zoomLevel);
-    setViewLocation(QPointF(DEFAULT_LONGITUDE, DEFAULT_LATITUDE));
+    setViewLocation(QPointF(startLocation.x(), startLocation.y()));
 }
 
 bool MapEngine::isAutoCenteringEnabled()