From c0fb93bd58c00997b73a05663cb519674b80929e Mon Sep 17 00:00:00 2001 From: Viktor Verebelyi Date: Tue, 22 Jun 2021 17:36:18 +0000 Subject: Fix:graphicst_qt5:Fix helper functions --- navit/graphics/qt5/navithelper.cpp | 93 +++++++++++++++++++++++--------------- navit/graphics/qt5/navithelper.h | 13 ++---- 2 files changed, 62 insertions(+), 44 deletions(-) diff --git a/navit/graphics/qt5/navithelper.cpp b/navit/graphics/qt5/navithelper.cpp index 11923b382..8240cb624 100644 --- a/navit/graphics/qt5/navithelper.cpp +++ b/navit/graphics/qt5/navithelper.cpp @@ -269,31 +269,31 @@ QString NavitHelper::getAddress(NavitInstance *navitInstance, struct coord cente if(!town.isEmpty()) address.append(town); - return address.join(", ");; + return address.join(", "); } return QString(); } -coord NavitHelper::positionToCoord (NavitInstance *navitInstance, int x, int y){ +coord NavitHelper::positionToCoord (struct navit *navit, int x, int y){ struct coord co; - if(navitInstance){ + if(navit){ struct point p; p.x = x; p.y = y; - struct transformation * trans = navit_get_trans(navitInstance->getNavit()); + struct transformation * trans = navit_get_trans(navit); transform_reverse(trans, &p, &co); } return co; } -pcoord NavitHelper::positionToPcoord (NavitInstance *navitInstance, int x, int y){ +pcoord NavitHelper::positionToPcoord (struct navit *navit, int x, int y){ struct pcoord c; - if(navitInstance){ - struct coord co = positionToCoord(navitInstance, x, y); - struct transformation * trans = navit_get_trans(navitInstance->getNavit()); + if(navit){ + struct coord co = positionToCoord(navit, x, y); + struct transformation * trans = navit_get_trans(navit); c.pro = transform_get_projection(trans); c.x = co.x; @@ -302,10 +302,10 @@ pcoord NavitHelper::positionToPcoord (NavitInstance *navitInstance, int x, int y } return c; } -pcoord NavitHelper::coordToPcoord (NavitInstance *navitInstance, int x, int y){ +pcoord NavitHelper::coordToPcoord (struct navit *navit, int x, int y){ struct pcoord c; - if(navitInstance){ - struct transformation * trans = navit_get_trans(navitInstance->getNavit()); + if(navit){ + struct transformation * trans = navit_get_trans(navit); c.pro = transform_get_projection(trans); c.x = x; @@ -314,49 +314,70 @@ pcoord NavitHelper::coordToPcoord (NavitInstance *navitInstance, int x, int y){ return c; } +static void setDestinationStatic(struct navit *navit, char * label, int x, int y) { + if(navit){ + navit_set_destination(navit, nullptr, nullptr, 0); + struct pcoord c = NavitHelper::coordToPcoord(navit, x, y); + navit_set_destination(navit, &c, label, 1); + } +} void NavitHelper::setDestination(NavitInstance *navitInstance, QString label, int x, int y){ if(navitInstance){ - navit_set_destination(navitInstance->getNavit(), nullptr, nullptr, 0); - struct pcoord c = coordToPcoord(navitInstance, x, y); - navit_set_destination(navitInstance->getNavit(), &c, label.toUtf8().data(), 1); + event_add_timeout(0, 0, callback_new_4(callback_cast(setDestinationStatic), navitInstance->getNavit(), label.toUtf8().data(), x ,y)); + } +} + +static void setPositionStatic(struct navit *navit, int x, int y) { + if(navit){ + struct pcoord c = NavitHelper::coordToPcoord(navit, x, y); + navit_set_position(navit, &c); } } void NavitHelper::setPosition(NavitInstance *navitInstance, int x, int y){ if(navitInstance){ - struct pcoord c = NavitHelper::coordToPcoord(navitInstance, x, y); - - navit_set_position(navitInstance->getNavit(), &c); + event_add_timeout(0, 0, callback_new_3(callback_cast(setPositionStatic), navitInstance->getNavit(), x ,y)); } } -void NavitHelper::addStop(NavitInstance *navitInstance, int position, QString label, int x, int y) { - struct pcoord c = coordToPcoord(navitInstance, x, y); - - int dstcount=navit_get_destination_count(navitInstance->getNavit())+1; - int pos,i; - struct pcoord *dst=(pcoord *)g_alloca(dstcount*sizeof(struct pcoord)); - dstcount=navit_get_destinations(navitInstance->getNavit(),dst,dstcount); +static void addStopStatic(struct navit *navit, int position, char *label, pcoord *c) { + if(navit){ + int dstcount=navit_get_destination_count(navit)+1; + int pos,i; + struct pcoord *dst=(pcoord *)g_alloca(dstcount*sizeof(struct pcoord)); + dstcount=navit_get_destinations(navit,dst,dstcount); - pos=position; - if(pos<0) - pos=0; + pos=position; + if(pos<0) + pos=0; - for(i=dstcount; i>pos; i--) - dst[i]=dst[i-1]; + for(i=dstcount; i>pos; i--) + dst[i]=dst[i-1]; - dst[pos]=c; + dst[pos]=*c; - navit_add_destination_description(navitInstance->getNavit(),&c,label.toUtf8().data()); - navit_set_destinations(navitInstance->getNavit(),dst,dstcount+1,label.toUtf8().data(),1); + navit_add_destination_description(navit,c,label); + navit_set_destinations(navit,dst,dstcount+1,label,1); + } } -void NavitHelper::addBookmark(NavitInstance *navitInstance, QString label, int x, int y){ - if(navitInstance){ +void NavitHelper::addStop(NavitInstance *navitInstance, int position, QString label, int x, int y) { + if(navitInstance){ + struct pcoord c = NavitHelper::coordToPcoord(navitInstance->getNavit(), x, y); + event_add_timeout(0, 0, callback_new_4(callback_cast(addStopStatic), navitInstance->getNavit(), position, label.toUtf8().data(), &c)); + } +} +void addBookmarkStatic(struct navit *navit, QString label, int x, int y){ + if(navit){ struct attr attr; - struct pcoord c = NavitHelper::positionToPcoord(navitInstance, x ,y); - navit_get_attr(navitInstance->getNavit(), attr_bookmarks, &attr, nullptr); + struct pcoord c = NavitHelper::positionToPcoord(navit, x ,y); + navit_get_attr(navit, attr_bookmarks, &attr, nullptr); bookmarks_add_bookmark(attr.u.bookmarks, &c, label.toUtf8().data()); } } +void NavitHelper::addBookmark(NavitInstance *navitInstance, QString label, int x, int y){ + if(navitInstance){ + event_add_timeout(0, 0, callback_new_4(callback_cast(addBookmarkStatic), navitInstance->getNavit(), label.toUtf8().data(), x, y)); + } +} diff --git a/navit/graphics/qt5/navithelper.h b/navit/graphics/qt5/navithelper.h index 07716d1b5..803fd5e89 100644 --- a/navit/graphics/qt5/navithelper.h +++ b/navit/graphics/qt5/navithelper.h @@ -25,11 +25,8 @@ extern "C" { #include "proxy.h" -#include "layout.h" - -#include "debug.h" - -#include "search.h" +#include "event.h" +#include "callback.h" } class NavitHelper @@ -41,9 +38,9 @@ class NavitHelper static QVariantMap getPOI(NavitInstance *navitInstance, struct coord center, int distance = 2); static QString getClosest(QList items, int maxDistance = -1); static QString formatDist(int dist); - static pcoord positionToPcoord (NavitInstance *navitInstance, int x, int y); - static coord positionToCoord (NavitInstance *navitInstance, int x, int y); - static pcoord coordToPcoord(NavitInstance *navitInstance, int x, int y); + static pcoord positionToPcoord (navit *navit, int x, int y); + static coord positionToCoord (navit *navit, int x, int y); + static pcoord coordToPcoord(navit *navit, int x, int y); static void setDestination(NavitInstance *navitInstance, QString label, int x, int y); static void setPosition(NavitInstance *navitInstance, int x, int y); static void addBookmark(NavitInstance *navitInstance, QString label, int x, int y); -- cgit v1.2.1