summaryrefslogtreecommitdiff
path: root/src/location/maps
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2018-12-05 08:43:49 +0100
committerPaolo Angelelli <paolo.angelelli@qt.io>2019-02-01 14:09:46 +0000
commit8e923d801b460ccc6fdc92d4a7bc8750410ad042 (patch)
tree83a8adb0dc109b9784191dad5bab00e12bbb9aa3 /src/location/maps
parent1ac41150501d3c5cc4a9a6ed9c93729687666553 (diff)
downloadqtlocation-8e923d801b460ccc6fdc92d4a7bc8750410ad042.tar.gz
Provide additional navigation information via Navigator
With this patch, Navigator becomes able to expose additional running navigation information such as distance to next maneuver, traveled distance, and so on. This information must be made available by the engines by emitting the related signals and implement the related methods, in QAbstractNavigator subclasses. This patch also groups all navigation read-only progress information into a property group inside Navigator, called directions. Change-Id: I00baf64bafe88cd21d4fef06dae0e7331a40ff70 Fixes: QTBUG-70238 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
Diffstat (limited to 'src/location/maps')
-rw-r--r--src/location/maps/qnavigationmanagerengine.cpp60
-rw-r--r--src/location/maps/qnavigationmanagerengine_p.h24
2 files changed, 81 insertions, 3 deletions
diff --git a/src/location/maps/qnavigationmanagerengine.cpp b/src/location/maps/qnavigationmanagerengine.cpp
index d0f8418e..8837e5c6 100644
--- a/src/location/maps/qnavigationmanagerengine.cpp
+++ b/src/location/maps/qnavigationmanagerengine.cpp
@@ -86,6 +86,66 @@ QLocale::MeasurementSystem QAbstractNavigator::measurementSystem() const
return d->measurementSystem;
}
+QVariant QAbstractNavigator::nextManeuverIcon() const
+{
+ return QVariant();
+}
+
+double QAbstractNavigator::distanceToNextManeuver() const
+{
+ return qQNaN();
+}
+
+int QAbstractNavigator::timeToNextManeuver() const
+{
+ return -1;
+}
+
+int QAbstractNavigator::remainingTravelTime() const
+{
+ return -1;
+}
+
+double QAbstractNavigator::remainingTravelDistance() const
+{
+ return qQNaN();
+}
+
+int QAbstractNavigator::remainingTravelTimeToNextWaypoint() const
+{
+ return -1;
+}
+
+double QAbstractNavigator::remainingTravelDistanceToNextWaypoint() const
+{
+ return qQNaN();
+}
+
+double QAbstractNavigator::traveledDistance() const
+{
+ return 0;
+}
+
+int QAbstractNavigator::traveledTime() const
+{
+ return 0;
+}
+
+QGeoRoute QAbstractNavigator::currentRoute() const
+{
+ return QGeoRoute();
+}
+
+QGeoRouteLeg QAbstractNavigator::currentRouteLeg() const
+{
+ return QGeoRouteLeg();
+}
+
+int QAbstractNavigator::currentSegment() const
+{
+ return 0;
+}
+
QNavigationManagerEngine::QNavigationManagerEngine(const QVariantMap &parameters, QObject *parent)
: QObject(parent)
, d(new QNavigationManagerEnginePrivate)
diff --git a/src/location/maps/qnavigationmanagerengine_p.h b/src/location/maps/qnavigationmanagerengine_p.h
index e7b3876c..331df64f 100644
--- a/src/location/maps/qnavigationmanagerengine_p.h
+++ b/src/location/maps/qnavigationmanagerengine_p.h
@@ -65,6 +65,8 @@ class QNavigationManager;
class QNavigationManagerEnginePrivate;
class QDeclarativeNavigatorParams;
class QDeclarativeGeoWaypoint;
+class QDeclarativeGeoRouteLeg;
+class QDeclarativeGeoRoute;
/*
This class is not supposed to react on QDeclarativeNavigator properties changes.
@@ -85,6 +87,19 @@ public:
virtual bool active() const = 0;
virtual bool ready() const = 0;
+ virtual QVariant nextManeuverIcon() const;
+ virtual double distanceToNextManeuver() const;
+ virtual int timeToNextManeuver() const;
+ virtual int remainingTravelTime() const;
+ virtual double remainingTravelDistance() const;
+ virtual int remainingTravelTimeToNextWaypoint() const;
+ virtual double remainingTravelDistanceToNextWaypoint() const;
+ virtual double traveledDistance() const;
+ virtual int traveledTime() const;
+ virtual QGeoRoute currentRoute() const;
+ virtual QGeoRouteLeg currentRouteLeg() const;
+ virtual int currentSegment() const;
+
public slots:
virtual bool start() = 0;
virtual bool stop() = 0;
@@ -95,9 +110,12 @@ signals:
void activeChanged(bool active);
void waypointReached(const QDeclarativeGeoWaypoint *pos);
void destinationReached();
- void currentRouteChanged(const QGeoRoute &route);
- void currentRouteLegChanged(const QGeoRouteLeg &route);
- void currentSegmentChanged(int segment);
+ void currentRouteChanged();
+ void currentRouteLegChanged();
+ void currentSegmentChanged();
+
+ void nextManeuverIconChanged();
+ void progressInformationChanged();
private:
QScopedPointer<QAbstractNavigatorPrivate> d;