summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Verebelyi <vviktor2@gmail.com>2021-06-22 17:36:18 +0000
committerViktor Verebelyi <vviktor2@gmail.com>2021-06-22 17:36:18 +0000
commitc0fb93bd58c00997b73a05663cb519674b80929e (patch)
tree6accc36da33fbcd9ccb6d9e9962acb2c3192d7bf
parent58efe26f48b02583985a4a46449ce1570cbaad7d (diff)
downloadnavit-threaded.tar.gz
Fix:graphicst_qt5:Fix helper functionsthreaded
-rw-r--r--navit/graphics/qt5/navithelper.cpp93
-rw-r--r--navit/graphics/qt5/navithelper.h13
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<QVariantMap> 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);