summaryrefslogtreecommitdiff
path: root/navit/android.c
diff options
context:
space:
mode:
Diffstat (limited to 'navit/android.c')
-rw-r--r--navit/android.c1317
1 files changed, 643 insertions, 674 deletions
diff --git a/navit/android.c b/navit/android.c
index 6e62da1b3..dc506ffb0 100644
--- a/navit/android.c
+++ b/navit/android.c
@@ -22,755 +22,724 @@
#include "track.h"
JNIEnv *jnienv;
-jobject *android_activity;
+jobject *android_activity = NULL;
+jobject *android_application = NULL;
int android_version;
-struct android_search_priv
-{
- struct jni_object search_result_obj;
- struct event_idle *idle_ev;
- struct callback *idle_clb;
- struct search_list *search_list;
- struct attr search_attr;
- gchar **phrases;
- int current_phrase_per_level[4];
- int partial;
- int found;
+struct android_search_priv {
+ struct jni_object search_result_obj;
+ struct event_idle *idle_ev;
+ struct callback *idle_clb;
+ struct search_list *search_list;
+ struct attr search_attr;
+ gchar **phrases;
+ int current_phrase_per_level[4];
+ int partial;
+ int found;
};
-int
-android_find_class_global(char *name, jclass *ret)
-{
- *ret=(*jnienv)->FindClass(jnienv, name);
- if (! *ret) {
- dbg(lvl_error,"Failed to get Class %s\n",name);
- return 0;
- }
- *ret = (*jnienv)->NewGlobalRef(jnienv, *ret);
- return 1;
+int android_find_class_global(char *name, jclass *ret) {
+ *ret=(*jnienv)->FindClass(jnienv, name);
+ if (! *ret) {
+ dbg(lvl_error,"Failed to get Class %s",name);
+ return 0;
+ }
+ *ret = (*jnienv)->NewGlobalRef(jnienv, *ret);
+ return 1;
}
-int
-android_find_method(jclass class, char *name, char *args, jmethodID *ret)
-{
- *ret = (*jnienv)->GetMethodID(jnienv, class, name, args);
- if (*ret == NULL) {
- dbg(lvl_error,"Failed to get Method %s with signature %s\n",name,args);
- return 0;
- }
- return 1;
+int android_find_method(jclass class, char *name, char *args, jmethodID *ret) {
+ *ret = (*jnienv)->GetMethodID(jnienv, class, name, args);
+ if (*ret == NULL) {
+ dbg(lvl_error,"Failed to get Method %s with signature %s",name,args);
+ return 0;
+ }
+ return 1;
}
-int
-android_find_static_method(jclass class, char *name, char *args, jmethodID *ret)
-{
- *ret = (*jnienv)->GetStaticMethodID(jnienv, class, name, args);
- if (*ret == NULL) {
- dbg(lvl_error,"Failed to get static Method %s with signature %s\n",name,args);
- return 0;
- }
- return 1;
+int android_find_static_method(jclass class, char *name, char *args, jmethodID *ret) {
+ *ret = (*jnienv)->GetStaticMethodID(jnienv, class, name, args);
+ if (*ret == NULL) {
+ dbg(lvl_error,"Failed to get static Method %s with signature %s",name,args);
+ return 0;
+ }
+ return 1;
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject activity, jobject lang, int version, jobject display_density_string, jobject path, jobject map_path)
-{
- const char *langstr;
- const char *displaydensitystr;
- const char *map_file_path;
- android_version=version;
- __android_log_print(ANDROID_LOG_ERROR,"test","called");
- jnienv=env;
- android_activity = (*jnienv)->NewGlobalRef(jnienv, activity);
- langstr=(*env)->GetStringUTFChars(env, lang, NULL);
- dbg(lvl_debug,"enter env=%p thiz=%p activity=%p lang=%s version=%d\n",env,thiz,android_activity,langstr,version);
- setenv("LANG",langstr,1);
- (*env)->ReleaseStringUTFChars(env, lang, langstr);
-
- displaydensitystr=(*env)->GetStringUTFChars(env, display_density_string, NULL);
- dbg(lvl_debug,"*****displaydensity=%s\n",displaydensitystr);
- setenv("ANDROID_DENSITY",displaydensitystr,1);
- (*env)->ReleaseStringUTFChars(env, display_density_string, displaydensitystr);
-
- map_file_path=(*env)->GetStringUTFChars(env, map_path, NULL);
- setenv("NAVIT_USER_DATADIR",map_file_path,1);
- (*env)->ReleaseStringUTFChars(env, display_density_string, map_file_path);
-
- const char *strings=(*env)->GetStringUTFChars(env, path, NULL);
- main_real(1, &strings);
- (*env)->ReleaseStringUTFChars(env, path, strings);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject activity,
+ jobject application, jobject lang, int version, jobject display_density_string, jobject path, jobject map_path,
+ jboolean isLaunch) {
+ const char *langstr;
+ const char *displaydensitystr;
+ const char *map_file_path;
+ android_version=version;
+ __android_log_print(ANDROID_LOG_ERROR,"test","called");
+ jnienv=env;
+ if (android_activity)
+ (*jnienv)->DeleteGlobalRef(jnienv, android_activity);
+ android_activity = (*jnienv)->NewGlobalRef(jnienv, activity);
+ if (android_application)
+ (*jnienv)->DeleteGlobalRef(jnienv, android_application);
+ android_application = (*jnienv)->NewGlobalRef(jnienv, application);
+ langstr=(*env)->GetStringUTFChars(env, lang, NULL);
+ dbg(lvl_debug,"enter env=%p thiz=%p activity=%p lang=%s version=%d",env,thiz,android_activity,langstr,version);
+ setenv("LANG",langstr,1);
+ (*env)->ReleaseStringUTFChars(env, lang, langstr);
+
+ displaydensitystr=(*env)->GetStringUTFChars(env, display_density_string, NULL);
+ dbg(lvl_debug,"*****displaydensity=%s",displaydensitystr);
+ setenv("ANDROID_DENSITY",displaydensitystr,1);
+ (*env)->ReleaseStringUTFChars(env, display_density_string, displaydensitystr);
+
+ map_file_path=(*env)->GetStringUTFChars(env, map_path, NULL);
+ setenv("NAVIT_USER_DATADIR",map_file_path,1);
+ (*env)->ReleaseStringUTFChars(env, display_density_string, map_file_path);
+
+ if (isLaunch) {
+ const char *strings=(*env)->GetStringUTFChars(env, path, NULL);
+ main_real(1, &strings);
+ (*env)->ReleaseStringUTFChars(env, path, strings);
+ }
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_Navit_NavitDestroy( JNIEnv* env)
-{
- dbg(lvl_debug, "shutdown navit\n");
- exit(0);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_Navit_NavitDestroy( JNIEnv* env) {
+ dbg(lvl_debug, "shutdown navit");
+ exit(0);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_SizeChangedCallback( JNIEnv* env, jobject thiz, int id, int w, int h)
-{
- dbg(lvl_debug,"enter %p %d %d\n",(struct callback *)id,w,h);
- if (id)
- callback_call_2((struct callback *)id,w,h);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_SizeChangedCallback( JNIEnv* env, jobject thiz, int id,
+ int w, int h) {
+ dbg(lvl_debug,"enter %p %d %d",(struct callback *)id,w,h);
+ if (id)
+ callback_call_2((struct callback *)id,w,h);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_PaddingChangedCallback(JNIEnv* env, jobject thiz, int id, int left, int top, int right, int bottom)
-{
- dbg(lvl_debug,"enter %p %d %d %d %d\n",(struct callback *)id, left, top, right, bottom);
- if (id)
- callback_call_4((struct callback *)id, left, top, right, bottom);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_PaddingChangedCallback(JNIEnv* env, jobject thiz,
+ int id, int left, int top, int right, int bottom) {
+ dbg(lvl_debug,"enter %p %d %d %d %d",(struct callback *)id, left, top, right, bottom);
+ if (id)
+ callback_call_4((struct callback *)id, left, top, right, bottom);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject thiz, int id, int pressed, int button, int x, int y)
-{
- dbg(lvl_debug,"enter %p %d %d\n",(struct callback *)id,pressed,button);
- if (id)
- callback_call_4((struct callback *)id,pressed,button,x,y);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject thiz, int id,
+ int pressed, int button, int x, int y) {
+ dbg(lvl_debug,"enter %p %d %d",(struct callback *)id,pressed,button);
+ if (id)
+ callback_call_4((struct callback *)id,pressed,button,x,y);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_MotionCallback( JNIEnv* env, jobject thiz, int id, int x, int y)
-{
- dbg(lvl_debug,"enter %p %d %d\n",(struct callback *)id,x,y);
- if (id)
- callback_call_2((struct callback *)id,x,y);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_MotionCallback( JNIEnv* env, jobject thiz, int id,
+ int x, int y) {
+ dbg(lvl_debug,"enter %p %d %d",(struct callback *)id,x,y);
+ if (id)
+ callback_call_2((struct callback *)id,x,y);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_KeypressCallback( JNIEnv* env, jobject thiz, int id, jobject str)
-{
- const char *s;
- dbg(lvl_debug,"enter %p %p\n",(struct callback *)id,str);
- s=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"key=%d",s);
- if (id)
- callback_call_1((struct callback *)id,s);
- (*env)->ReleaseStringUTFChars(env, str, s);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_KeypressCallback( JNIEnv* env, jobject thiz, int id,
+ jobject str) {
+ const char *s;
+ dbg(lvl_debug,"enter %p %p",(struct callback *)id,str);
+ s=(*env)->GetStringUTFChars(env, str, NULL);
+ dbg(lvl_debug,"key=%d",s);
+ if (id)
+ callback_call_1((struct callback *)id,s);
+ (*env)->ReleaseStringUTFChars(env, str, s);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int id)
-{
- void (*event_handler)(void *) = *(void **)id;
- dbg(lvl_debug,"enter %p %p\n",thiz, (void *)id);
- event_handler((void*)id);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int id) {
+ void (*event_handler)(void *) = *(void **)id;
+ dbg(lvl_debug,"enter %p %p",thiz, (void *)id);
+ event_handler((void*)id);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitVehicle_VehicleCallback( JNIEnv * env, jobject thiz, int id, jobject location)
-{
- callback_call_1((struct callback *)id, (void *)location);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitVehicle_VehicleCallback( JNIEnv * env, jobject thiz, int id,
+ jobject location) {
+ callback_call_1((struct callback *)id, (void *)location);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitIdle_IdleCallback( JNIEnv* env, jobject thiz, int id)
-{
- dbg(lvl_debug,"enter %p %p\n",thiz, (void *)id);
- callback_call_0((struct callback *)id);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitIdle_IdleCallback( JNIEnv* env, jobject thiz, int id) {
+ dbg(lvl_debug,"enter %p %p",thiz, (void *)id);
+ callback_call_0((struct callback *)id);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitWatch_poll( JNIEnv* env, jobject thiz, int func, int fd, int cond)
-{
- void (*pollfunc)(JNIEnv *env, int fd, int cond)=(void *)func;
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitWatch_poll( JNIEnv* env, jobject thiz, int func, int fd,
+ int cond) {
+ void (*pollfunc)(JNIEnv *env, int fd, int cond)=(void *)func;
- pollfunc(env, fd, cond);
+ pollfunc(env, fd, cond);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitWatch_WatchCallback( JNIEnv* env, jobject thiz, int id)
-{
- dbg(lvl_debug,"enter %p %p\n",thiz, (void *)id);
- callback_call_0((struct callback *)id);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitWatch_WatchCallback( JNIEnv* env, jobject thiz, int id) {
+ dbg(lvl_debug,"enter %p %p",thiz, (void *)id);
+ callback_call_0((struct callback *)id);
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitSensors_SensorCallback( JNIEnv* env, jobject thiz, int id, int sensor, float x, float y, float z)
-{
- dbg(lvl_debug,"enter %p %p %f %f %f\n",thiz, (void *)id,x,y,z);
- callback_call_4((struct callback *)id, sensor, &x, &y, &z);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitSensors_SensorCallback( JNIEnv* env, jobject thiz, int id,
+ int sensor, float x, float y, float z) {
+ dbg(lvl_debug,"enter %p %p %f %f %f",thiz, (void *)id,x,y,z);
+ callback_call_4((struct callback *)id, sensor, &x, &y, &z);
}
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitTraff_onFeedReceived(JNIEnv * env, jobject thiz, int id,
+ jstring feed) {
+ const char *s;
+ s = (*env)->GetStringUTFChars(env, feed, NULL);
+ if (id)
+ callback_call_1((struct callback *) id, s);
+ (*env)->ReleaseStringUTFChars(env, feed, s);
+}
+
+
+
// type: 0=town, 1=street, 2=House#
-void
-android_return_search_result(struct jni_object *jni_o, int type, struct pcoord *location, const char *address)
-{
- struct coord_geo geo_location;
- struct coord c;
- jstring jaddress = NULL;
- JNIEnv* env;
- env=jni_o->env;
- jaddress = (*env)->NewStringUTF(jni_o->env,address);
-
- c.x=location->x;
- c.y=location->y;
- transform_to_geo(location->pro, &c, &geo_location);
-
- (*env)->CallVoidMethod(jni_o->env, jni_o->jo, jni_o->jm, type, geo_location.lat, geo_location.lng, jaddress);
- (*env)->DeleteLocalRef(jni_o->env, jaddress);
+void android_return_search_result(struct jni_object *jni_o, int type, struct pcoord *location, const char *address) {
+ struct coord_geo geo_location;
+ struct coord c;
+ jstring jaddress = NULL;
+ JNIEnv* env;
+ env=jni_o->env;
+ jaddress = (*env)->NewStringUTF(jni_o->env,address);
+
+ c.x=location->x;
+ c.y=location->y;
+ transform_to_geo(location->pro, &c, &geo_location);
+
+ (*env)->CallVoidMethod(jni_o->env, jni_o->jo, jni_o->jm, type, geo_location.lat, geo_location.lng, jaddress);
+ (*env)->DeleteLocalRef(jni_o->env, jaddress);
}
-JNIEXPORT jstring JNICALL
-Java_org_navitproject_navit_NavitGraphics_CallbackLocalizedString( JNIEnv* env, jobject thiz, jobject str)
-{
- const char *s;
- const char *localized_str;
+JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackLocalizedString( JNIEnv* env, jobject thiz,
+ jobject str) {
+ const char *s;
+ const char *localized_str;
- s=(*env)->GetStringUTFChars(env, str, NULL);
- //dbg(lvl_debug,"*****string=%s\n",s);
+ s=(*env)->GetStringUTFChars(env, str, NULL);
+ //dbg(lvl_debug,"*****string=%s",s);
- localized_str=navit_nls_gettext(s);
- //dbg(lvl_debug,"localized string=%s",localized_str);
+ localized_str=navit_nls_gettext(s);
+ //dbg(lvl_debug,"localized string=%s",localized_str);
- // jstring dataStringValue = (jstring) localized_str;
- jstring js = (*env)->NewStringUTF(env,localized_str);
+ // jstring dataStringValue = (jstring) localized_str;
+ jstring js = (*env)->NewStringUTF(env,localized_str);
- (*env)->ReleaseStringUTFChars(env, str, s);
+ (*env)->ReleaseStringUTFChars(env, str, s);
- return js;
+ return js;
}
-JNIEXPORT jint JNICALL
-Java_org_navitproject_navit_NavitGraphics_CallbackMessageChannel( JNIEnv* env, jobject thiz, int channel, jobject str)
-{
- struct attr attr;
- const char *s;
- jint ret = 0;
- dbg(lvl_debug,"enter %d %p\n",channel,str);
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- switch(channel)
- {
- case 1:
- // zoom in
- navit_zoom_in_cursor(attr.u.navit, 2);
- navit_draw(attr.u.navit);
- break;
- case 2:
- // zoom out
- navit_zoom_out_cursor(attr.u.navit, 2);
- navit_draw(attr.u.navit);
- break;
- case 6: // add a map to the current mapset, return 1 on success
- {
- struct mapset *ms = navit_get_mapset(attr.u.navit);
- struct attr type, name, data, *attrs[4];
- const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"*****string=%s\n",map_location);
- type.type=attr_type;
- type.u.str="binfile";
-
- data.type=attr_data;
- data.u.str=g_strdup(map_location);
-
- name.type=attr_name;
- name.u.str=g_strdup(map_location);
-
- attrs[0]=&type; attrs[1]=&data; attrs[2]=&name; attrs[3]=NULL;
-
- struct map * new_map = map_new(NULL, attrs);
- if (new_map) {
- struct attr map_a;
- map_a.type=attr_map;
- map_a.u.map=new_map;
- ret = mapset_add_attr(ms, &map_a);
- navit_draw(attr.u.navit);
- }
- (*env)->ReleaseStringUTFChars(env, str, map_location);
- }
- break;
- case 7: // remove a map to the current mapset, return 1 on success
- {
- struct mapset *ms = navit_get_mapset(attr.u.navit);
- struct attr map_r;
- const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
- struct map * delete_map = mapset_get_map_by_name(ms, map_location);
-
- if (delete_map)
- {
- dbg(lvl_debug,"delete map %s (%p)", map_location, delete_map);
- map_r.type=attr_map;
- map_r.u.map=delete_map;
- ret = mapset_remove_attr(ms, &map_r);
- navit_draw(attr.u.navit);
- }
- (*env)->ReleaseStringUTFChars(env, str, map_location);
- }
- break;
- case 5:
- // call a command (like in gui)
- s=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"*****string=%s\n",s);
- command_evaluate(&attr,s);
- (*env)->ReleaseStringUTFChars(env, str, s);
- break;
- case 4:
- {
- // navigate to display position
- char *pstr;
- struct point p;
- struct coord c;
- struct pcoord pc;
-
- struct transformation *transform=navit_get_trans(attr.u.navit);
-
- s=(*env)->GetStringUTFChars(env, str, NULL);
- char parse_str[strlen(s) + 1];
- strcpy(parse_str, s);
- (*env)->ReleaseStringUTFChars(env, str, s);
- dbg(lvl_debug,"*****string=%s\n",parse_str);
-
- // set destination to (pixel-x#pixel-y)
- // pixel-x
- pstr = strtok (parse_str,"#");
- p.x = atoi(pstr);
- // pixel-y
- pstr = strtok (NULL, "#");
- p.y = atoi(pstr);
-
- dbg(lvl_debug,"11x=%d\n",p.x);
- dbg(lvl_debug,"11y=%d\n",p.y);
-
- transform_reverse(transform, &p, &c);
-
-
- pc.x = c.x;
- pc.y = c.y;
- pc.pro = transform_get_projection(transform);
-
- dbg(lvl_debug,"22x=%d\n",pc.x);
- dbg(lvl_debug,"22y=%d\n",pc.y);
-
- // start navigation asynchronous
- navit_set_destination(attr.u.navit, &pc, parse_str, 1);
- }
- break;
- case 3:
- {
- // navigate to geo position
- char *name;
- s=(*env)->GetStringUTFChars(env, str, NULL);
- char parse_str[strlen(s) + 1];
- strcpy(parse_str, s);
- (*env)->ReleaseStringUTFChars(env, str, s);
- dbg(lvl_debug,"*****string=%s\n",s);
-
- // set destination to (lat#lon#title)
- struct coord_geo g;
- char *p;
- char *stopstring;
-
- // lat
- p = strtok (parse_str,"#");
- g.lat = strtof(p, &stopstring);
- // lon
- p = strtok (NULL, "#");
- g.lng = strtof(p, &stopstring);
- // description
- name = strtok (NULL, "#");
-
- dbg(lvl_debug,"lat=%f\n",g.lat);
- dbg(lvl_debug,"lng=%f\n",g.lng);
- dbg(lvl_debug,"str1=%s\n",name);
-
- struct coord c;
- transform_from_geo(projection_mg, &g, &c);
-
- struct pcoord pc;
- pc.x=c.x;
- pc.y=c.y;
- pc.pro=projection_mg;
-
- // start navigation asynchronous
- navit_set_destination(attr.u.navit, &pc, name, 1);
-
- }
- break;
- default:
- dbg(lvl_error, "Unknown command: %d", channel);
- }
-
- return ret;
+JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackMessageChannel( JNIEnv* env, jobject thiz,
+ int channel, jobject str) {
+ struct attr attr;
+ const char *s;
+ jint ret = 0;
+ dbg(lvl_debug,"enter %d %p",channel,str);
+
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ switch(channel) {
+ case 1:
+ // zoom in
+ navit_zoom_in_cursor(attr.u.navit, 2);
+ navit_draw(attr.u.navit);
+ break;
+ case 2:
+ // zoom out
+ navit_zoom_out_cursor(attr.u.navit, 2);
+ navit_draw(attr.u.navit);
+ break;
+ case 6: { // add a map to the current mapset, return 1 on success
+ struct mapset *ms = navit_get_mapset(attr.u.navit);
+ struct attr type, name, data, *attrs[4];
+ const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
+ dbg(lvl_debug,"*****string=%s",map_location);
+ type.type=attr_type;
+ type.u.str="binfile";
+
+ data.type=attr_data;
+ data.u.str=g_strdup(map_location);
+
+ name.type=attr_name;
+ name.u.str=g_strdup(map_location);
+
+ attrs[0]=&type;
+ attrs[1]=&data;
+ attrs[2]=&name;
+ attrs[3]=NULL;
+
+ struct map * new_map = map_new(NULL, attrs);
+ if (new_map) {
+ struct attr map_a;
+ map_a.type=attr_map;
+ map_a.u.map=new_map;
+ ret = mapset_add_attr(ms, &map_a);
+ navit_draw(attr.u.navit);
+ }
+ (*env)->ReleaseStringUTFChars(env, str, map_location);
+ }
+ break;
+ case 7: { // remove a map to the current mapset, return 1 on success
+ struct mapset *ms = navit_get_mapset(attr.u.navit);
+ struct attr map_r;
+ const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
+ struct map * delete_map = mapset_get_map_by_name(ms, map_location);
+
+ if (delete_map) {
+ dbg(lvl_debug,"delete map %s (%p)", map_location, delete_map);
+ map_r.type=attr_map;
+ map_r.u.map=delete_map;
+ ret = mapset_remove_attr(ms, &map_r);
+ navit_draw(attr.u.navit);
+ }
+ (*env)->ReleaseStringUTFChars(env, str, map_location);
+ }
+ break;
+ case 5:
+ // call a command (like in gui)
+ s=(*env)->GetStringUTFChars(env, str, NULL);
+ dbg(lvl_debug,"*****string=%s",s);
+ command_evaluate(&attr,s);
+ (*env)->ReleaseStringUTFChars(env, str, s);
+ break;
+ case 4: {
+ // navigate to display position
+ char *pstr;
+ struct point p;
+ struct coord c;
+ struct pcoord pc;
+
+ struct transformation *transform=navit_get_trans(attr.u.navit);
+
+ s=(*env)->GetStringUTFChars(env, str, NULL);
+ char parse_str[strlen(s) + 1];
+ strcpy(parse_str, s);
+ (*env)->ReleaseStringUTFChars(env, str, s);
+ dbg(lvl_debug,"*****string=%s",parse_str);
+
+ // set destination to (pixel-x#pixel-y)
+ // pixel-x
+ pstr = strtok (parse_str,"#");
+ p.x = atoi(pstr);
+ // pixel-y
+ pstr = strtok (NULL, "#");
+ p.y = atoi(pstr);
+
+ dbg(lvl_debug,"11x=%d",p.x);
+ dbg(lvl_debug,"11y=%d",p.y);
+
+ transform_reverse(transform, &p, &c);
+
+
+ pc.x = c.x;
+ pc.y = c.y;
+ pc.pro = transform_get_projection(transform);
+
+ dbg(lvl_debug,"22x=%d",pc.x);
+ dbg(lvl_debug,"22y=%d",pc.y);
+
+ // start navigation asynchronous
+ navit_set_destination(attr.u.navit, &pc, parse_str, 1);
+ }
+ break;
+ case 3: {
+ // navigate to geo position
+ char *name;
+ s=(*env)->GetStringUTFChars(env, str, NULL);
+ char parse_str[strlen(s) + 1];
+ strcpy(parse_str, s);
+ (*env)->ReleaseStringUTFChars(env, str, s);
+ dbg(lvl_debug,"*****string=%s",s);
+
+ // set destination to (lat#lon#title)
+ struct coord_geo g;
+ char *p;
+ char *stopstring;
+
+ // lat
+ p = strtok (parse_str,"#");
+ g.lat = strtof(p, &stopstring);
+ // lon
+ p = strtok (NULL, "#");
+ g.lng = strtof(p, &stopstring);
+ // description
+ name = strtok (NULL, "#");
+
+ dbg(lvl_debug,"lat=%f",g.lat);
+ dbg(lvl_debug,"lng=%f",g.lng);
+ dbg(lvl_debug,"str1=%s",name);
+
+ struct coord c;
+ transform_from_geo(projection_mg, &g, &c);
+
+ struct pcoord pc;
+ pc.x=c.x;
+ pc.y=c.y;
+ pc.pro=projection_mg;
+
+ // start navigation asynchronous
+ navit_set_destination(attr.u.navit, &pc, name, 1);
+
+ }
+ break;
+ default:
+ dbg(lvl_error, "Unknown command: %d", channel);
+ }
+
+ return ret;
}
-JNIEXPORT jstring JNICALL
-Java_org_navitproject_navit_NavitGraphics_GetDefaultCountry( JNIEnv* env, jobject thiz, int channel, jobject str)
-{
- struct attr search_attr, country_name, country_iso2, *country_attr;
- struct tracking *tracking;
- struct search_list_result *res;
- jstring return_string = NULL;
-
- struct attr attr;
- dbg(lvl_debug,"enter %d %p\n",channel,str);
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- country_attr=country_default();
- tracking=navit_get_tracking(attr.u.navit);
- if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL))
- country_attr=&search_attr;
- if (country_attr) {
- struct country_search *cs=country_search_new(country_attr, 0);
- struct item *item=country_search_get_item(cs);
- if (item && item_attr_get(item, attr_country_name, &country_name)) {
- struct mapset *ms=navit_get_mapset(attr.u.navit);
- struct search_list *search_list = search_list_new(ms);
- search_attr.type=attr_country_all;
- dbg(lvl_debug,"country %s\n", country_name.u.str);
- search_attr.u.str=country_name.u.str;
- search_list_search(search_list, &search_attr, 0);
- while((res=search_list_get_result(search_list)))
- {
- dbg(lvl_debug,"Get result: %s\n", res->country->iso2);
- }
- if (item_attr_get(item, attr_country_iso2, &country_iso2))
- return_string = (*env)->NewStringUTF(env,country_iso2.u.str);
- }
- country_search_destroy(cs);
- }
-
- return return_string;
+JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_GetDefaultCountry( JNIEnv* env, jobject thiz,
+ int channel, jobject str) {
+ struct attr search_attr, country_name, country_iso2, *country_attr;
+ struct tracking *tracking;
+ struct search_list_result *res;
+ jstring return_string = NULL;
+
+ struct attr attr;
+ dbg(lvl_debug,"enter %d %p",channel,str);
+
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ country_attr=country_default();
+ tracking=navit_get_tracking(attr.u.navit);
+ if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL))
+ country_attr=&search_attr;
+ if (country_attr) {
+ struct country_search *cs=country_search_new(country_attr, 0);
+ struct item *item=country_search_get_item(cs);
+ if (item && item_attr_get(item, attr_country_name, &country_name)) {
+ struct mapset *ms=navit_get_mapset(attr.u.navit);
+ struct search_list *search_list = search_list_new(ms);
+ search_attr.type=attr_country_all;
+ dbg(lvl_debug,"country %s", country_name.u.str);
+ search_attr.u.str=country_name.u.str;
+ search_list_search(search_list, &search_attr, 0);
+ while((res=search_list_get_result(search_list))) {
+ dbg(lvl_debug,"Get result: %s", res->country->iso2);
+ }
+ if (item_attr_get(item, attr_country_iso2, &country_iso2))
+ return_string = (*env)->NewStringUTF(env,country_iso2.u.str);
+ }
+ country_search_destroy(cs);
+ }
+
+ return return_string;
}
-JNIEXPORT jobjectArray JNICALL
-Java_org_navitproject_navit_NavitGraphics_GetAllCountries( JNIEnv* env, jobject thiz)
-{
- struct attr search_attr;
- struct search_list_result *res;
- GList* countries = NULL;
- int country_count = 0;
- jobjectArray all_countries;
-
- struct attr attr;
- dbg(lvl_debug,"enter\n");
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- struct mapset *ms=navit_get_mapset(attr.u.navit);
- struct search_list *search_list = search_list_new(ms);
- jobjectArray current_country = NULL;
- search_attr.type=attr_country_all;
- //dbg(lvl_debug,"country %s\n", country_name.u.str);
- search_attr.u.str=g_strdup("");//country_name.u.str;
- search_list_search(search_list, &search_attr, 1);
- while((res=search_list_get_result(search_list)))
- {
- dbg(lvl_debug,"Get result: %s\n", res->country->iso2);
-
- if (strlen(res->country->iso2)==2)
- {
- jstring j_iso2 = (*env)->NewStringUTF(env, res->country->iso2);
- jstring j_name = (*env)->NewStringUTF(env, navit_nls_gettext(res->country->name));
-
- current_country = (jobjectArray)(*env)->NewObjectArray(env, 2, (*env)->FindClass(env, "java/lang/String"), NULL);
-
- (*env)->SetObjectArrayElement(env, current_country, 0, j_iso2);
- (*env)->SetObjectArrayElement(env, current_country, 1, j_name);
-
- (*env)->DeleteLocalRef(env, j_iso2);
- (*env)->DeleteLocalRef(env, j_name);
-
- countries = g_list_prepend(countries, current_country);
- country_count++;
- }
- }
-
- search_list_destroy(search_list);
- all_countries = (jobjectArray)(*env)->NewObjectArray(env, country_count, (*env)->GetObjectClass(env, current_country), NULL);
-
- while(countries)
- {
- (*env)->SetObjectArrayElement(env, all_countries, --country_count, countries->data);
- countries = g_list_delete_link( countries, countries);
- }
- return all_countries;
+JNIEXPORT jobjectArray JNICALL Java_org_navitproject_navit_NavitGraphics_GetAllCountries( JNIEnv* env, jobject thiz) {
+ struct attr search_attr;
+ struct search_list_result *res;
+ GList* countries = NULL;
+ int country_count = 0;
+ jobjectArray all_countries;
+
+ struct attr attr;
+ dbg(lvl_debug,"enter");
+
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ struct mapset *ms=navit_get_mapset(attr.u.navit);
+ struct search_list *search_list = search_list_new(ms);
+ jobjectArray current_country = NULL;
+ search_attr.type=attr_country_all;
+ //dbg(lvl_debug,"country %s", country_name.u.str);
+ search_attr.u.str=g_strdup("");//country_name.u.str;
+ search_list_search(search_list, &search_attr, 1);
+ while((res=search_list_get_result(search_list))) {
+ dbg(lvl_debug,"Get result: %s", res->country->iso2);
+
+ if (strlen(res->country->iso2)==2) {
+ jstring j_iso2 = (*env)->NewStringUTF(env, res->country->iso2);
+ jstring j_name = (*env)->NewStringUTF(env, navit_nls_gettext(res->country->name));
+
+ current_country = (jobjectArray)(*env)->NewObjectArray(env, 2, (*env)->FindClass(env, "java/lang/String"), NULL);
+
+ (*env)->SetObjectArrayElement(env, current_country, 0, j_iso2);
+ (*env)->SetObjectArrayElement(env, current_country, 1, j_name);
+
+ (*env)->DeleteLocalRef(env, j_iso2);
+ (*env)->DeleteLocalRef(env, j_name);
+
+ countries = g_list_prepend(countries, current_country);
+ country_count++;
+ }
+ }
+
+ search_list_destroy(search_list);
+ all_countries = (jobjectArray)(*env)->NewObjectArray(env, country_count, (*env)->GetObjectClass(env, current_country),
+ NULL);
+
+ while(countries) {
+ (*env)->SetObjectArrayElement(env, all_countries, --country_count, countries->data);
+ countries = g_list_delete_link( countries, countries);
+ }
+ return all_countries;
}
-static char *
-postal_str(struct search_list_result *res, int level)
-{
- char *ret=NULL;
- if (res->town->common.postal)
- ret=res->town->common.postal;
- if (res->town->common.postal_mask)
- ret=res->town->common.postal_mask;
- if (level == 1)
- return ret;
- if (res->street->common.postal)
- ret=res->street->common.postal;
- if (res->street->common.postal_mask)
- ret=res->street->common.postal_mask;
- if (level == 2)
- return ret;
- if (res->house_number->common.postal)
- ret=res->house_number->common.postal;
- if (res->house_number->common.postal_mask)
- ret=res->house_number->common.postal_mask;
- return ret;
+static char *postal_str(struct search_list_result *res, int level) {
+ char *ret=NULL;
+ if (res->town->common.postal)
+ ret=res->town->common.postal;
+ if (res->town->common.postal_mask)
+ ret=res->town->common.postal_mask;
+ if (level == 1)
+ return ret;
+ if (res->street->common.postal)
+ ret=res->street->common.postal;
+ if (res->street->common.postal_mask)
+ ret=res->street->common.postal_mask;
+ if (level == 2)
+ return ret;
+ if (res->house_number->common.postal)
+ ret=res->house_number->common.postal;
+ if (res->house_number->common.postal_mask)
+ ret=res->house_number->common.postal_mask;
+ return ret;
}
-static char *
-district_str(struct search_list_result *res, int level)
-{
- char *ret=NULL;
- if (res->town->common.district_name)
- ret=res->town->common.district_name;
- if (level == 1)
- return ret;
- if (res->street->common.district_name)
- ret=res->street->common.district_name;
- if (level == 2)
- return ret;
- if (res->house_number->common.district_name)
- ret=res->house_number->common.district_name;
- return ret;
+static char *district_str(struct search_list_result *res, int level) {
+ char *ret=NULL;
+ if (res->town->common.district_name)
+ ret=res->town->common.district_name;
+ if (level == 1)
+ return ret;
+ if (res->street->common.district_name)
+ ret=res->street->common.district_name;
+ if (level == 2)
+ return ret;
+ if (res->house_number->common.district_name)
+ ret=res->house_number->common.district_name;
+ return ret;
}
-static char *
-town_str(struct search_list_result *res, int level)
-{
- char *town=res->town->common.town_name;
- char *district=district_str(res, level);
- char *postal=postal_str(res, level);
- char *postal_sep=" ";
- char *district_begin=" (";
- char *district_end=")";
- char *county_sep = ", Co. ";
- char *county = res->town->common.county_name;
- if (!postal)
- postal_sep=postal="";
- if (!district)
- district_begin=district_end=district="";
- if (!county)
- county_sep=county="";
-
- return g_strdup_printf("%s%s%s%s%s%s%s%s", postal, postal_sep, town, district_begin, district, district_end, county_sep, county);
+static char *town_str(struct search_list_result *res, int level) {
+ char *town=res->town->common.town_name;
+ char *district=district_str(res, level);
+ char *postal=postal_str(res, level);
+ char *postal_sep=" ";
+ char *district_begin=" (";
+ char *district_end=")";
+ char *county_sep = ", Co. ";
+ char *county = res->town->common.county_name;
+ if (!postal)
+ postal_sep=postal="";
+ if (!district)
+ district_begin=district_end=district="";
+ if (!county)
+ county_sep=county="";
+
+ return g_strdup_printf("%s%s%s%s%s%s%s%s", postal, postal_sep, town, district_begin, district, district_end, county_sep,
+ county);
}
-static void
-android_search_end(struct android_search_priv *search_priv)
-{
- dbg(lvl_debug, "End search");
- JNIEnv* env = search_priv->search_result_obj.env;
- if (search_priv->idle_ev) {
- event_remove_idle(search_priv->idle_ev);
- search_priv->idle_ev=NULL;
- }
- if (search_priv->idle_clb) {
- callback_destroy(search_priv->idle_clb);
- search_priv->idle_clb=NULL;
- }
- jclass cls = (*env)->GetObjectClass(env,search_priv->search_result_obj.jo);
- jmethodID finish_MethodID = (*env)->GetMethodID(env, cls, "finishAddressSearch", "()V");
- if(finish_MethodID != 0) {
- (*env)->CallVoidMethod(env, search_priv->search_result_obj.jo, finish_MethodID);
- } else {
- dbg(lvl_error, "Error method finishAddressSearch not found");
- }
-
- search_list_destroy(search_priv->search_list);
- g_strfreev(search_priv->phrases);
- g_free(search_priv);
+static void android_search_end(struct android_search_priv *search_priv) {
+ dbg(lvl_debug, "End search");
+ JNIEnv* env = search_priv->search_result_obj.env;
+ if (search_priv->idle_ev) {
+ event_remove_idle(search_priv->idle_ev);
+ search_priv->idle_ev=NULL;
+ }
+ if (search_priv->idle_clb) {
+ callback_destroy(search_priv->idle_clb);
+ search_priv->idle_clb=NULL;
+ }
+ jclass cls = (*env)->GetObjectClass(env,search_priv->search_result_obj.jo);
+ jmethodID finish_MethodID = (*env)->GetMethodID(env, cls, "finishAddressSearch", "()V");
+ if(finish_MethodID != 0) {
+ (*env)->CallVoidMethod(env, search_priv->search_result_obj.jo, finish_MethodID);
+ } else {
+ dbg(lvl_error, "Error method finishAddressSearch not found");
+ }
+
+ search_list_destroy(search_priv->search_list);
+ g_strfreev(search_priv->phrases);
+ g_free(search_priv);
}
static enum attr_type android_search_level[] = {
- attr_town_or_district_name,
- attr_street_name,
- attr_house_number
+ attr_town_or_district_name,
+ attr_street_name,
+ attr_house_number
};
-static void
-android_search_idle(struct android_search_priv *search_priv)
-{
- dbg(lvl_debug, "enter android_search_idle");
-
- struct search_list_result *res = search_list_get_result(search_priv->search_list);
- if (res) {
- dbg(lvl_debug, "Town: %s, Street: %s\n",res->town ? res->town->common.town_name : "no town", res->street ? res->street->name : "no street");
- search_priv->found = 1;
- switch (search_priv->search_attr.type)
- {
- case attr_town_or_district_name:
- {
- gchar *town = town_str(res, 1);
- android_return_search_result(&search_priv->search_result_obj, 0, res->town->common.c, town);
- g_free(town);
- break;
- }
- case attr_street_name:
- {
- gchar *town = town_str(res, 2);
- gchar *address = g_strdup_printf("%.101s,%.101s, %.101s", res->country->name, town, res->street->name);
- android_return_search_result(&search_priv->search_result_obj, 1, res->street->common.c, address);
- g_free(address);
- g_free(town);
- break;
- }
- case attr_house_number:
- {
- gchar *town = town_str(res, 3);
- gchar *address = g_strdup_printf("%.101s, %.101s, %.101s %.15s", res->country->name, town, res->street->name, res->house_number->house_number);
- android_return_search_result(&search_priv->search_result_obj, 2, res->house_number->common.c, address);
- g_free(address);
- g_free(town);
- break;
- }
- default:
- dbg(lvl_error, "Unhandled search type %d", search_priv->search_attr.type);
- }
- } else {
- int level = search_list_level(search_priv->search_attr.type) - 1;
-
- if (search_priv->found) {
- search_priv->found = 0;
- if (search_priv->search_attr.type != attr_house_number) {
- level++;
- }
- }
- dbg(lvl_info, "test phrase: %d,%d, %d, level %d", search_priv->current_phrase_per_level[0], search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2] , level)
- do {
- while (!search_priv->phrases[++search_priv->current_phrase_per_level[level]]) {
- dbg(lvl_info, "next phrase: %d,%d, %d, level %d", search_priv->current_phrase_per_level[0], search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2] , level)
- if (level > 0) {
- search_priv->current_phrase_per_level[level] = -1;
- level--;
- } else {
- android_search_end(search_priv);
- return;
- }
- }
- } while (level > 0 ? search_priv->current_phrase_per_level[level] == search_priv->current_phrase_per_level[level-1] : 0);
- dbg(lvl_info, "used phrase: %d,%d, %d, level %d, '%s'", search_priv->current_phrase_per_level[0], search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2] , level, attr_to_name(android_search_level[level]))
- dbg(lvl_debug, "Search for '%s'", search_priv->phrases[search_priv->current_phrase_per_level[level]]);
- search_priv->search_attr.type = android_search_level[level];
- search_priv->search_attr.u.str = search_priv->phrases[search_priv->current_phrase_per_level[level]];
- struct attr test;
- test.type = android_search_level[level];
- test.u.str = search_priv->phrases[search_priv->current_phrase_per_level[level]];
- search_list_search(search_priv->search_list, &test, search_priv->partial);
- }
- dbg(lvl_info, "leave");
+static void android_search_idle(struct android_search_priv *search_priv) {
+ dbg(lvl_debug, "enter android_search_idle");
+
+ struct search_list_result *res = search_list_get_result(search_priv->search_list);
+ if (res) {
+ dbg(lvl_debug, "Town: %s, Street: %s",res->town ? res->town->common.town_name : "no town",
+ res->street ? res->street->name : "no street");
+ search_priv->found = 1;
+ switch (search_priv->search_attr.type) {
+ case attr_town_or_district_name: {
+ gchar *town = town_str(res, 1);
+ android_return_search_result(&search_priv->search_result_obj, 0, res->town->common.c, town);
+ g_free(town);
+ break;
+ }
+ case attr_street_name: {
+ gchar *town = town_str(res, 2);
+ gchar *address = g_strdup_printf("%.101s,%.101s, %.101s", res->country->name, town, res->street->name);
+ android_return_search_result(&search_priv->search_result_obj, 1, res->street->common.c, address);
+ g_free(address);
+ g_free(town);
+ break;
+ }
+ case attr_house_number: {
+ gchar *town = town_str(res, 3);
+ gchar *address = g_strdup_printf("%.101s, %.101s, %.101s %.15s", res->country->name, town, res->street->name,
+ res->house_number->house_number);
+ android_return_search_result(&search_priv->search_result_obj, 2, res->house_number->common.c, address);
+ g_free(address);
+ g_free(town);
+ break;
+ }
+ default:
+ dbg(lvl_error, "Unhandled search type %d", search_priv->search_attr.type);
+ }
+ } else {
+ int level = search_list_level(search_priv->search_attr.type) - 1;
+
+ if (search_priv->found) {
+ search_priv->found = 0;
+ if (search_priv->search_attr.type != attr_house_number) {
+ level++;
+ }
+ }
+ dbg(lvl_info, "test phrase: %d,%d, %d, level %d", search_priv->current_phrase_per_level[0],
+ search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2], level)
+ do {
+ while (!search_priv->phrases[++search_priv->current_phrase_per_level[level]]) {
+ dbg(lvl_info, "next phrase: %d,%d, %d, level %d", search_priv->current_phrase_per_level[0],
+ search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2], level)
+ if (level > 0) {
+ search_priv->current_phrase_per_level[level] = -1;
+ level--;
+ } else {
+ android_search_end(search_priv);
+ return;
+ }
+ }
+ } while (level > 0 ? search_priv->current_phrase_per_level[level] == search_priv->current_phrase_per_level[level-1] :
+ 0);
+ dbg(lvl_info, "used phrase: %d,%d, %d, level %d, '%s'", search_priv->current_phrase_per_level[0],
+ search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2], level,
+ attr_to_name(android_search_level[level]))
+ dbg(lvl_debug, "Search for '%s'", search_priv->phrases[search_priv->current_phrase_per_level[level]]);
+ search_priv->search_attr.type = android_search_level[level];
+ search_priv->search_attr.u.str = search_priv->phrases[search_priv->current_phrase_per_level[level]];
+ struct attr test;
+ test.type = android_search_level[level];
+ test.u.str = search_priv->phrases[search_priv->current_phrase_per_level[level]];
+ search_list_search(search_priv->search_list, &test, search_priv->partial);
+ }
+ dbg(lvl_info, "leave");
}
-static char *
-search_fix_spaces(const char *str)
-{
- int i;
- int len=strlen(str);
- char c,*s,*d,*ret=g_strdup(str);
-
- for (i = 0 ; i < len ; i++) {
- if (ret[i] == ',' || ret[i] == ',' || ret[i] == '/')
- ret[i]=' ';
- }
- s=ret;
- d=ret;
- len=0;
- do {
- c=*s++;
- if (c != ' ' || len != 0) {
- *d++=c;
- len++;
- }
- while (c == ' ' && *s == ' ')
- s++;
- if (c == ' ' && *s == '\0') {
- d--;
- len--;
- }
- } while (c);
- return ret;
+static char *search_fix_spaces(const char *str) {
+ int i;
+ int len=strlen(str);
+ char c,*s,*d,*ret=g_strdup(str);
+
+ for (i = 0 ; i < len ; i++) {
+ if (ret[i] == ',' || ret[i] == ',' || ret[i] == '/')
+ ret[i]=' ';
+ }
+ s=ret;
+ d=ret;
+ len=0;
+ do {
+ c=*s++;
+ if (c != ' ' || len != 0) {
+ *d++=c;
+ len++;
+ }
+ while (c == ' ' && *s == ' ')
+ s++;
+ if (c == ' ' && *s == '\0') {
+ d--;
+ len--;
+ }
+ } while (c);
+ return ret;
}
-static void start_search(struct android_search_priv *search_priv, const char *search_string)
-{
- dbg(lvl_debug,"enter %s\n", search_string);
- char *str=search_fix_spaces(search_string);
- search_priv->phrases = g_strsplit(str, " ", 0);
- //ret=search_address_town(ret, sl, phrases, NULL, partial, jni);
+static void start_search(struct android_search_priv *search_priv, const char *search_string) {
+ dbg(lvl_debug,"enter %s", search_string);
+ char *str=search_fix_spaces(search_string);
+ search_priv->phrases = g_strsplit(str, " ", 0);
+ //ret=search_address_town(ret, sl, phrases, NULL, partial, jni);
- dbg(lvl_debug,"First search phrase %s", search_priv->phrases[0]);
- search_priv->search_attr.u.str= search_priv->phrases[0];
- search_priv->search_attr.type=attr_town_or_district_name;
- search_list_search(search_priv->search_list, &search_priv->search_attr, search_priv->partial);
+ dbg(lvl_debug,"First search phrase %s", search_priv->phrases[0]);
+ search_priv->search_attr.u.str= search_priv->phrases[0];
+ search_priv->search_attr.type=attr_town_or_district_name;
+ search_list_search(search_priv->search_list, &search_priv->search_attr, search_priv->partial);
- search_priv->idle_clb = callback_new_1(callback_cast(android_search_idle), search_priv);
- search_priv->idle_ev = event_add_idle(50,search_priv->idle_clb);
- //callback_call_0(search_priv->idle_clb);
+ search_priv->idle_clb = callback_new_1(callback_cast(android_search_idle), search_priv);
+ search_priv->idle_ev = event_add_idle(50,search_priv->idle_clb);
+ //callback_call_0(search_priv->idle_clb);
- g_free(str);
- dbg(lvl_debug,"leave\n");
+ g_free(str);
+ dbg(lvl_debug,"leave");
}
-JNIEXPORT jlong JNICALL
-Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackStartAddressSearch( JNIEnv* env, jobject thiz, int partial, jobject country, jobject str)
-{
- struct attr attr;
- const char *search_string =(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"search '%s'\n", search_string);
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- jclass cls = (*env)->GetObjectClass(env,thiz);
- jmethodID aMethodID = (*env)->GetMethodID(env, cls, "receiveAddress", "(IFFLjava/lang/String;)V");
- struct android_search_priv *search_priv = NULL;
-
- if(aMethodID != 0)
- {
- struct mapset *ms4=navit_get_mapset(attr.u.navit);
- struct attr country_attr;
- const char *str_country=(*env)->GetStringUTFChars(env, country, NULL);
- struct search_list_result *slr;
- int count = 0;
-
- search_priv = g_new0( struct android_search_priv, 1);
- search_priv->search_list = search_list_new(ms4);
- search_priv->partial = partial;
- search_priv->current_phrase_per_level[1] = -1;
- search_priv->current_phrase_per_level[2] = -1;
-
- country_attr.type=attr_country_iso2;
- country_attr.u.str=g_strdup(str_country);
- search_list_search(search_priv->search_list, &country_attr, 0);
-
- while ((slr=search_list_get_result(search_priv->search_list)))
- {
- count++;
- }
- if (!count)
- dbg(lvl_error,"Country not found");
-
- dbg(lvl_debug,"search in country '%s'\n", str_country);
- (*env)->ReleaseStringUTFChars(env, country, str_country);
-
- search_priv->search_result_obj.env = env;
- search_priv->search_result_obj.jo = (*env)->NewGlobalRef(env, thiz);
- search_priv->search_result_obj.jm = aMethodID;
-
- start_search(search_priv, search_string);
- }
- else
- dbg(lvl_error,"**** Unable to get methodID: fillStringArray");
-
- (*env)->ReleaseStringUTFChars(env, str, search_string);
-
- return (jlong)(long)search_priv;
+JNIEXPORT jlong JNICALL Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackStartAddressSearch( JNIEnv* env,
+ jobject thiz, int partial, jobject country, jobject str) {
+ struct attr attr;
+ const char *search_string =(*env)->GetStringUTFChars(env, str, NULL);
+ dbg(lvl_debug,"search '%s'", search_string);
+
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ jclass cls = (*env)->GetObjectClass(env,thiz);
+ jmethodID aMethodID = (*env)->GetMethodID(env, cls, "receiveAddress", "(IFFLjava/lang/String;)V");
+ struct android_search_priv *search_priv = NULL;
+
+ if(aMethodID != 0) {
+ struct mapset *ms4=navit_get_mapset(attr.u.navit);
+ struct attr country_attr;
+ const char *str_country=(*env)->GetStringUTFChars(env, country, NULL);
+ struct search_list_result *slr;
+ int count = 0;
+
+ search_priv = g_new0( struct android_search_priv, 1);
+ search_priv->search_list = search_list_new(ms4);
+ search_priv->partial = partial;
+ search_priv->current_phrase_per_level[1] = -1;
+ search_priv->current_phrase_per_level[2] = -1;
+
+ country_attr.type=attr_country_iso2;
+ country_attr.u.str=g_strdup(str_country);
+ search_list_search(search_priv->search_list, &country_attr, 0);
+
+ while ((slr=search_list_get_result(search_priv->search_list))) {
+ count++;
+ }
+ if (!count)
+ dbg(lvl_error,"Country not found");
+
+ dbg(lvl_debug,"search in country '%s'", str_country);
+ (*env)->ReleaseStringUTFChars(env, country, str_country);
+
+ search_priv->search_result_obj.env = env;
+ search_priv->search_result_obj.jo = (*env)->NewGlobalRef(env, thiz);
+ search_priv->search_result_obj.jm = aMethodID;
+
+ start_search(search_priv, search_string);
+ } else
+ dbg(lvl_error,"**** Unable to get methodID: fillStringArray");
+
+ (*env)->ReleaseStringUTFChars(env, str, search_string);
+
+ return (jlong)(long)search_priv;
}
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackCancelAddressSearch( JNIEnv* env, jobject thiz, jlong handle)
-{
- struct android_search_priv *priv = (void*)(long)handle;
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackCancelAddressSearch( JNIEnv* env,
+ jobject thiz, jlong handle) {
+ struct android_search_priv *priv = (void*)(long)handle;
- if (priv)
- android_search_end(priv);
- else
- dbg(lvl_error, "Error: Cancel search failed");
+ if (priv)
+ android_search_end(priv);
+ else
+ dbg(lvl_error, "Error: Cancel search failed");
}