Diff of /trunk/src/map-tool.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 129 by harbaum, Tue Sep 29 14:30:16 2009 UTC revision 133 by harbaum, Mon Oct 12 20:27:55 2009 UTC
# Line 438  on_map_button_release_event(GtkWidget *w Line 438  on_map_button_release_event(GtkWidget *w
438                              GdkEventButton *event, map_context_t *context) {                              GdkEventButton *event, map_context_t *context) {
439    OsmGpsMap *map = OSM_GPS_MAP(context->widget);    OsmGpsMap *map = OSM_GPS_MAP(context->widget);
440    
441    if(context->press_on) {    /* in "MAP_CACHE" state only one cache is visible */
442      /* and the map is in navigation mode. the balloon is */
443      /* pretty useless there */
444      if(context->press_on && (context->state != MAP_CACHE)) {
445    
446      coord_t coo;      coord_t coo;
447      coo = osm_gps_map_get_co_ordinates(map, event->x, event->y);      coo = osm_gps_map_get_co_ordinates(map, event->x, event->y);
448    
# Line 454  on_map_button_release_event(GtkWidget *w Line 458  on_map_button_release_event(GtkWidget *w
458    
459          osm_gps_map_osd_draw_balloon(map, cpos.lat, cpos.lon,          osm_gps_map_osd_draw_balloon(map, cpos.lat, cpos.lon,
460                                       balloon_draw_cb, nearest);                                       balloon_draw_cb, nearest);
   
         osm_gps_map_osd_draw_nav (map, cpos.lat, cpos.lon, nearest->name);  
   
461        }        }
462      }      }
463      context->press_on = NULL;      context->press_on = NULL;
# Line 525  on_window_realize(GtkWidget *widget, gpo Line 526  on_window_realize(GtkWidget *widget, gpo
526  static void map_setup(map_context_t *context) {  static void map_setup(map_context_t *context) {
527    char *name = NULL;    char *name = NULL;
528    
   /* clear all existing ccahe images */  
   osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));  
   
529    if(!context->appdata->cur_gpx && !context->appdata->cur_cache) {    if(!context->appdata->cur_gpx && !context->appdata->cur_cache) {
530      /* draw all geocaches */      if(context->state != MAP_ALL) {
531      gpx_t *gpx = context->appdata->gpx;        printf("map_setp(ALL)\n");
532      while(gpx) {  
533        map_draw_gpx(context->appdata, context->widget, gpx);        /* no navigation in this mode */
534        gpx = gpx->next;        osm_gps_map_osd_clear_nav (OSM_GPS_MAP(context->widget));
535    
536          /* clear all existing ccahe images */
537          osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));
538    
539          /* draw all geocaches */
540          gpx_t *gpx = context->appdata->gpx;
541          while(gpx) {
542            map_draw_gpx(context->appdata, context->widget, gpx);
543            gpx = gpx->next;
544          }
545          name = g_strdup(_("all"));
546          context->state = MAP_ALL;
547      }      }
     name = g_strdup(_("all"));  
     context->state = MAP_ALL;  
     context->gpx = context->appdata->gpx;  
548    } else if(!context->appdata->cur_cache) {    } else if(!context->appdata->cur_cache) {
549      map_draw_gpx(context->appdata, context->widget, context->appdata->cur_gpx);      if(context->state != MAP_GPX) {
550      name = g_strdup(context->appdata->cur_gpx->name);        printf("map_setp(GPX)\n");
551      context->state = MAP_GPX;  
552      context->gpx = context->appdata->cur_gpx;        /* no navigation in this mode */
553          osm_gps_map_osd_clear_nav (OSM_GPS_MAP(context->widget));
554    
555          /* clear all existing ccahe images */
556          osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));
557    
558          map_draw_gpx(context->appdata, context->widget,
559                       context->appdata->cur_gpx);
560          name = g_strdup(context->appdata->cur_gpx->name);
561          context->state = MAP_GPX;
562        }
563    } else {    } else {
564      map_draw_cache(context->widget, context->appdata->cur_cache);      cache_t *cache = context->appdata->cur_cache;
565      name = g_strdup(context->appdata->cur_cache->name);  
566        printf("map_setp(CACHE)\n");
567    
568        /* no balloons in this mode */
569        osm_gps_map_osd_clear_balloon (OSM_GPS_MAP(context->widget));
570    
571        /* clear all existing ccahe images */
572        osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));
573    
574        map_draw_cache(context->widget, cache);
575        name = g_strdup(cache->name);
576      context->state = MAP_CACHE;      context->state = MAP_CACHE;
577      context->cache = context->appdata->cur_cache;  
578        /* navigation in this mode! */
579        pos_t cpos = gpx_cache_pos(cache);
580        osm_gps_map_osd_draw_nav (OSM_GPS_MAP(context->widget),
581                                  context->appdata->imperial,
582                                  cpos.lat, cpos.lon, cache->name);
583    }    }
584    
585    char *title = g_strdup_printf(_("Map - %s"), name);    if(name) {
586    g_free(name);      char *title = g_strdup_printf(_("Map - %s"), name);
587        g_free(name);
588    gtk_window_set_title(GTK_WINDOW(context->window), title);  
589        gtk_window_set_title(GTK_WINDOW(context->window), title);
590    g_free(title);  
591        g_free(title);
592      } else
593        printf("map_setup(keep)\n");
594  }  }
595    
596  /* on maemo a window is either on top or completely invisible. this means that */  /* on maemo a window is either on top or completely invisible. this means that */
# Line 563  static void map_setup(map_context_t *con Line 598  static void map_setup(map_context_t *con
598  /* is different and we always update */  /* is different and we always update */
599  static gboolean on_focus_in(GtkWidget *widget, GdkEventFocus *event,  static gboolean on_focus_in(GtkWidget *widget, GdkEventFocus *event,
600                           gpointer data) {                           gpointer data) {
601    map_context_t *context = (map_context_t*)data;    printf("map got focus\n");
602      map_setup((map_context_t*)data);
   printf("map focus in!\n");  
   
603    return FALSE;    return FALSE;
604  }  }
605    
606  void map_update(appdata_t *appdata) {  void map_update(appdata_t *appdata) {
607    if(appdata->map.context) {  #ifndef USE_MAEMO
608      printf("map update\n");    if(appdata->map.context)
609    }      map_setup(appdata->map.context);
610    #endif
611  }  }
612    
613  void map(appdata_t *appdata) {  void map(appdata_t *appdata) {
# Line 590  void map(appdata_t *appdata) { Line 624  void map(appdata_t *appdata) {
624    context = appdata->map.context = g_new0(map_context_t, 1);    context = appdata->map.context = g_new0(map_context_t, 1);
625    context->appdata = appdata;    context->appdata = appdata;
626    context->map_complete = FALSE;    context->map_complete = FALSE;
627      context->state = MAP_NONE;
628    
629    /* cleanup old (pre 0.8.7) path if it exists */    /* cleanup old (pre 0.8.7) path if it exists */
630    char *old_path = g_strdup_printf("%s/map/", appdata->image_path);    char *old_path = g_strdup_printf("%s/map/", appdata->image_path);

Legend:
Removed from v.129  
changed lines
  Added in v.133