Merge branch 'master' into new_panels_with_context_buttons
[situare] / src / routing / routingservice.cpp
index ed0842c..1da2b8a 100644 (file)
@@ -34,7 +34,7 @@
 #endif
 
 #include "coordinates/geocoordinate.h"
-#include "error.h"
+#include "../error.h"
 #include "location.h"
 #include "network/networkaccessmanager.h"
 #include "route.h"
@@ -76,44 +76,45 @@ void RoutingService::parseRouteData(const QByteArray &jsonReply)
     bool ok;
     QVariantMap result = parser.parse (jsonReply, &ok).toMap();
     if (!ok) {
-        emit error(ErrorContext::SITUARE, SituareError::INVALID_JSON);
+        emit error(ErrorContext::SITUARE, SituareError::ERROR_ROUTING_FAILED);
         return;
-    } else {
-        if(result.value("status").toInt() == NO_ERROR) {
-            QVariant routeSummary = result.value("route_summary");
-            QMap<QString, QVariant> routeSummaryMap = routeSummary.toMap();
-
-            Route route;
-            route.setEndPointName(routeSummaryMap["end_point"].toString());
-            route.setStartPointName(routeSummaryMap["start_point"].toString());
-            route.setTotalDistance(routeSummaryMap["total_distance"].toInt());
-            route.setTotalTime(routeSummaryMap["total_time"].toInt());
-
-            foreach(QVariant routeGeometry, result["route_geometry"].toList()) {
-                QStringList list = routeGeometry.toStringList();
-                route.appendGeometryPoint(GeoCoordinate(list.at(0).toDouble(),
-                                                        list.at(1).toDouble()));
-            }
+    } else if(result.value("status").toInt() == NO_ERROR) {
+        QVariant routeSummary = result.value("route_summary");
+        QMap<QString, QVariant> routeSummaryMap = routeSummary.toMap();
+
+        Route route;
+        route.setEndPointName(routeSummaryMap["end_point"].toString());
+        route.setStartPointName(routeSummaryMap["start_point"].toString());
+        route.setTotalDistance(routeSummaryMap["total_distance"].toInt());
+        route.setTotalTime(routeSummaryMap["total_time"].toInt());
+
+        foreach(QVariant routeGeometry, result["route_geometry"].toList()) {
+            QStringList list = routeGeometry.toStringList();
+            route.appendGeometryPoint(GeoCoordinate(list.at(0).toDouble(), list.at(1).toDouble()));
+        }
 
-            foreach(QVariant routeInstructions, result["route_instructions"].toList()) {
-                QStringList list = routeInstructions.toStringList();
-                RouteSegment segment;
-                segment.setInstruction(list.at(0));
-                segment.setLength(list.at(1).toDouble());
-                segment.setPositionIndex(list.at(2).toInt());
-                segment.setTime(list.at(3).toInt());
-                segment.setLengthCaption(list.at(4));
-                segment.setEarthDirection(list.at(5));
-                segment.setAzimuth(list.at(6).toDouble());
-                if (list.count() == 9) {
-                    segment.setTurnType(list.at(7));
-                    segment.setTurnAngle(list.at(8).toDouble());
-                }
-                route.appendSegment(segment);
+        foreach(QVariant routeInstructions, result["route_instructions"].toList()) {
+            QStringList list = routeInstructions.toStringList();
+            RouteSegment segment;
+            segment.setInstruction(list.at(0));
+            segment.setLength(list.at(1).toDouble());
+            segment.setPositionIndex(list.at(2).toInt());
+            segment.setTime(list.at(3).toInt());
+            segment.setLengthCaption(list.at(4));
+            segment.setEarthDirection(list.at(5));
+            segment.setAzimuth(list.at(6).toDouble());
+            if (list.count() == 9) {
+                segment.setTurnType(list.at(7));
+                segment.setTurnAngle(list.at(8).toDouble());
             }
-
-            emit routeParsed(route);
+            route.appendSegment(segment);
         }
+
+        emit routeParsed(route);
+    } else {
+        emit error(ErrorContext::SITUARE, SituareError::ERROR_ROUTING_FAILED);
+        qCritical() << __PRETTY_FUNCTION__ << "routing failed, json status_message:"
+                                           << result.value("status_message").toString();
     }
 }