diff options
author | Viktor Verebelyi <vviktor2@gmail.com> | 2020-10-09 12:59:54 +0100 |
---|---|---|
committer | Viktor Verebelyi <vviktor2@gmail.com> | 2020-10-09 12:59:54 +0100 |
commit | 6eeb51250dea9d42dfa32d51a445d8f7548ac387 (patch) | |
tree | 4041239983c80cc5258707104e21ff5aea6bd2bc | |
parent | dd09e93ca86135e8f8e75be0036c8b83312e823b (diff) | |
download | navit-6eeb51250dea9d42dfa32d51a445d8f7548ac387.tar.gz |
Fix:qt5_gui:Levy add proper call back handler for status update
-rw-r--r-- | navit/gui/qt5_qml/navitroute.cpp | 18 | ||||
-rw-r--r-- | navit/gui/qt5_qml/navitroute.h | 1 |
2 files changed, 15 insertions, 4 deletions
diff --git a/navit/gui/qt5_qml/navitroute.cpp b/navit/gui/qt5_qml/navitroute.cpp index 243976f74..7661be54c 100644 --- a/navit/gui/qt5_qml/navitroute.cpp +++ b/navit/gui/qt5_qml/navitroute.cpp @@ -51,6 +51,16 @@ void NavitRoute::setNavit(NavitInstance * navit){ navit_add_callback(m_navitInstance->getNavit(),cb); navit_add_callback(m_navitInstance->getNavit(),cb2); + + struct attr route_attr; + + if (navit_get_attr(m_navitInstance->getNavit(),attr_route,&route_attr,nullptr)) { + struct attr callback; + callback.type=attr_callback; + callback.u.callback=callback_new_attr_1(callback_cast(NavitRoute::statusCallbackHandler), attr_route_status, this); + route_add_attr(route_attr.u.route, &callback); + } + statusUpdate(); } @@ -112,8 +122,6 @@ void NavitRoute::routeUpdate(){ emit propertiesChanged(); } map_rect_destroy(mr); - - statusUpdate(); } QString NavitRoute::getLastDestination(struct pcoord *pc) { @@ -156,8 +164,6 @@ void NavitRoute::destinationUpdate(){ struct route * route = navit_get_route(m_navitInstance->getNavit()); int destCount = route_get_destination_count(route); - statusUpdate(); - if(destCount > m_destCount){ QString destination = getLastDestination(&m_lastDestinationCoord); @@ -183,6 +189,7 @@ void NavitRoute::statusUpdate(){ navigation_get_attr(nav, attr_nav_status, &attr,nullptr); if(m_status != attr.u.num){ m_status = static_cast<Status>(attr.u.num); + qDebug() << "status : " << nav_status_to_text(attr.u.num); emit statusChanged(); } } @@ -193,6 +200,9 @@ void NavitRoute::destinationCallbackHandler(NavitRoute * navitRoute){ navitRoute->destinationUpdate(); } +void NavitRoute::statusCallbackHandler(NavitRoute * navitRoute){ + navitRoute->statusUpdate(); +} void NavitRoute::cancelNavigation(){ if(m_navitInstance){ navit_set_destination(m_navitInstance->getNavit(), nullptr, nullptr, 0); diff --git a/navit/gui/qt5_qml/navitroute.h b/navit/gui/qt5_qml/navitroute.h index 00f6f5ff1..28810c46c 100644 --- a/navit/gui/qt5_qml/navitroute.h +++ b/navit/gui/qt5_qml/navitroute.h @@ -47,6 +47,7 @@ public: void setNavit(NavitInstance * navit); static void routeCallbackHandler(NavitRoute * navitRoute); static void destinationCallbackHandler(NavitRoute * navitRoute); + static void statusCallbackHandler(NavitRoute * navitRoute); void routeUpdate(); void destinationUpdate(); void statusUpdate(); |