summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Verebelyi <vviktor2@gmail.com>2020-10-09 12:59:54 +0100
committerViktor Verebelyi <vviktor2@gmail.com>2020-10-09 12:59:54 +0100
commit6eeb51250dea9d42dfa32d51a445d8f7548ac387 (patch)
tree4041239983c80cc5258707104e21ff5aea6bd2bc
parentdd09e93ca86135e8f8e75be0036c8b83312e823b (diff)
downloadnavit-6eeb51250dea9d42dfa32d51a445d8f7548ac387.tar.gz
Fix:qt5_gui:Levy add proper call back handler for status update
-rw-r--r--navit/gui/qt5_qml/navitroute.cpp18
-rw-r--r--navit/gui/qt5_qml/navitroute.h1
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();