summaryrefslogtreecommitdiff
path: root/src/location/labs/qdeclarativenavigator.cpp
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2019-05-09 20:18:20 +0200
committerpaolo <paolo.angelelli@qt.io>2019-07-09 11:40:00 +0200
commit93fcae54d5f8cebf2e8988a5bc50ecb7a4f6b60c (patch)
treead0709a15cf1ded0aba780bdb6a1cbde9e40cedb /src/location/labs/qdeclarativenavigator.cpp
parenteefb728271ac436221a7a81aff8d7a29ac6ed936 (diff)
downloadqtlocation-93fcae54d5f8cebf2e8988a5bc50ecb7a4f6b60c.tar.gz
Expose alternativeRoutes in QDeclarativeNavigationBasicDirections
So that they can be also visualized in list views or details can be presented. Change-Id: Ib8bb48e73624d8bb50073312e7834c3c609c561b Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/location/labs/qdeclarativenavigator.cpp')
-rw-r--r--src/location/labs/qdeclarativenavigator.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/location/labs/qdeclarativenavigator.cpp b/src/location/labs/qdeclarativenavigator.cpp
index 71e01ccb..ae273774 100644
--- a/src/location/labs/qdeclarativenavigator.cpp
+++ b/src/location/labs/qdeclarativenavigator.cpp
@@ -516,6 +516,8 @@ bool QDeclarativeNavigator::ensureEngine()
&d_ptr->m_basicDirections, &QDeclarativeNavigationBasicDirections::progressInformationChanged);
connect(d_ptr->m_navigator.get(), &QAbstractNavigator::isOnRouteChanged,
this, &QDeclarativeNavigator::isOnRouteChanged);
+ connect(d_ptr->m_navigator.get(), &QAbstractNavigator::alternativeRoutesChanged,
+ &d_ptr->m_basicDirections, &QDeclarativeNavigationBasicDirections::onAlternativeRoutesChanged);
emit navigatorReadyChanged(true);
return true;
@@ -540,7 +542,7 @@ void QDeclarativeNavigator::setError(QDeclarativeNavigator::NavigationError erro
}
QDeclarativeNavigationBasicDirections::QDeclarativeNavigationBasicDirections(QDeclarativeNavigator *parent)
-: QObject(parent), m_navigator(parent)
+: QObject(parent), m_navigator(parent), m_routes(QByteArrayLiteral("routeData"), this)
{
if (m_navigator)
m_navigatorPrivate = m_navigator->d_ptr.data();
@@ -710,6 +712,11 @@ int QDeclarativeNavigationBasicDirections::currentSegment() const
return m_navigatorPrivate->m_navigator->currentSegment();
}
+QAbstractItemModel *QDeclarativeNavigationBasicDirections::alternativeRoutes()
+{
+ return &m_routes;
+}
+
void QDeclarativeNavigationBasicDirections::onCurrentRouteChanged()
{
if (m_currentRoute)
@@ -726,5 +733,17 @@ void QDeclarativeNavigationBasicDirections::onCurrentRouteLegChanged()
emit currentRouteLegChanged();
}
+void QDeclarativeNavigationBasicDirections::onAlternativeRoutesChanged()
+{
+ const QList<QGeoRoute> &routes = m_navigatorPrivate->m_navigator->alternativeRoutes();
+ QList<QDeclarativeGeoRoute *> declarativeRoutes;
+ for (int i = 0; i < routes.size(); ++i) {
+ QDeclarativeGeoRoute *route = new QDeclarativeGeoRoute(routes.at(i), &m_routes);
+ QQmlEngine::setContextForObject(route, QQmlEngine::contextForObject(this));
+ declarativeRoutes.append(route);
+ }
+ m_routes.updateData(declarativeRoutes);
+}
+
QT_END_NAMESPACE