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

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

revision 242 by harbaum, Sun Dec 13 19:57:02 2009 UTC revision 280 by harbaum, Fri May 21 19:28:16 2010 UTC
# Line 290  static void map_setup(map_context_t *con Line 290  static void map_setup(map_context_t *con
290    
291        /* clear all existing cache images */        /* clear all existing cache images */
292        osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));        osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));
       memset(context->caches_displayed, 0,  
              (cache_num+1) * sizeof(cache_display_t));  
293    
294        /* draw search results and all other gpx files are semi-transparent */        if(context->caches_displayed) {
295        map_draw_gpx(context->appdata, context->caches_displayed,          memset(context->caches_displayed, 0,
296                     context->widget, context->appdata->search_results,                 (cache_num+1) * sizeof(cache_display_t));
                    NULL, FALSE);  
297    
298        gpx_t *gpx = context->appdata->gpx;          /* draw search results and all other gpx files are semi-transparent */
       while(gpx) {  
299          map_draw_gpx(context->appdata, context->caches_displayed,          map_draw_gpx(context->appdata, context->caches_displayed,
300                       context->widget, gpx, NULL, TRUE);                       context->widget, context->appdata->search_results,
301                         NULL, FALSE);
302    
303          gpx = gpx->next;          gpx_t *gpx = context->appdata->gpx;
304        }          while(gpx) {
305              map_draw_gpx(context->appdata, context->caches_displayed,
306                           context->widget, gpx, NULL, TRUE);
307    
308              gpx = gpx->next;
309            }
310          }
311        name = g_strdup(_("Search results"));        name = g_strdup(_("Search results"));
312        context->state = MAP_SEARCH;        context->state = MAP_SEARCH;
313      }      }
# Line 324  static void map_setup(map_context_t *con Line 326  static void map_setup(map_context_t *con
326    
327        /* clear all existing cache images */        /* clear all existing cache images */
328        osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));        osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));
329        memset(context->caches_displayed, 0,        if(context->caches_displayed) {
330               (cache_num+1) * sizeof(cache_display_t));          memset(context->caches_displayed, 0,
331                   (cache_num+1) * sizeof(cache_display_t));
332        /* draw all geocaches and none is semi-transparent */  
333        gpx_t *gpx = context->appdata->gpx;          /* draw all geocaches and none is semi-transparent */
334        while(gpx) {          gpx_t *gpx = context->appdata->gpx;
335          map_draw_gpx(context->appdata, context->caches_displayed,          while(gpx) {
336                       context->widget, gpx, NULL, FALSE);            map_draw_gpx(context->appdata, context->caches_displayed,
337          gpx = gpx->next;                         context->widget, gpx, NULL, FALSE);
338        }            gpx = gpx->next;
339            }
340        {  
341          int i=0;          {
342          while(context->caches_displayed[i].id) i++;            int i=0;
343          printf("number of caches actually displayed: %d\n", i);            while(context->caches_displayed[i].id) i++;
344              printf("number of caches actually displayed: %d\n", i);
345            }
346        }        }
   
347        name = g_strdup(_("all"));        name = g_strdup(_("all"));
348        context->state = MAP_ALL;        context->state = MAP_ALL;
349      }      }
# Line 359  static void map_setup(map_context_t *con Line 362  static void map_setup(map_context_t *con
362    
363        /* clear all existing cache images */        /* clear all existing cache images */
364        osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));        osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));
365        memset(context->caches_displayed, 0,        if(context->caches_displayed) {
366               (cache_num+1) * sizeof(cache_display_t));          memset(context->caches_displayed, 0,
367                   (cache_num+1) * sizeof(cache_display_t));
368        /* draw all geocaches and all other gpx files are semi-transparent */  
369        map_draw_gpx(context->appdata, context->caches_displayed,          /* draw all geocaches and all other gpx files are semi-transparent */
370                     context->widget, context->appdata->cur_gpx, NULL, FALSE);          map_draw_gpx(context->appdata, context->caches_displayed,
371                         context->widget, context->appdata->cur_gpx, NULL, FALSE);
372        gpx_t *gpx = context->appdata->gpx;  
373        while(gpx) {          gpx_t *gpx = context->appdata->gpx;
374          if(gpx != context->appdata->cur_gpx)          while(gpx) {
375            map_draw_gpx(context->appdata, context->caches_displayed,            if(gpx != context->appdata->cur_gpx)
376                         context->widget, gpx, NULL, TRUE);              map_draw_gpx(context->appdata, context->caches_displayed,
377                             context->widget, gpx, NULL, TRUE);
378          gpx = gpx->next;  
379              gpx = gpx->next;
380            }
381        }        }
382    
383        name = g_strdup(context->appdata->cur_gpx->name);        name = g_strdup(context->appdata->cur_gpx->name);
# Line 389  static void map_setup(map_context_t *con Line 394  static void map_setup(map_context_t *con
394    
395      /* clear all existing ccahe images */      /* clear all existing ccahe images */
396      osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));      osm_gps_map_clear_images (OSM_GPS_MAP(context->widget));
397      memset(context->caches_displayed, 0,      if(context->caches_displayed) {
398             (cache_num+1) * sizeof(cache_display_t));        memset(context->caches_displayed, 0,
399                 (cache_num+1) * sizeof(cache_display_t));
400      /* Make sure we really work on the first copy in the list as */  
401      /* only this is being used if duplicates exist */        /* Make sure we really work on the first copy in the list as */
402      cache = cache_search_first(context->appdata->gpx, cache);        /* only this is being used if duplicates exist */
403          cache = cache_search_first(context->appdata->gpx, cache);
404      /* draw all geocaches and all but selected one are semi-transparent */  
405      gpx_t *gpx = context->appdata->gpx;        /* draw all geocaches and all but selected one are semi-transparent */
406      while(gpx) {        gpx_t *gpx = context->appdata->gpx;
407        map_draw_gpx(context->appdata, context->caches_displayed,        while(gpx) {
408                     context->widget, gpx, cache, FALSE);          map_draw_gpx(context->appdata, context->caches_displayed,
409        gpx = gpx->next;                       context->widget, gpx, cache, FALSE);
410            gpx = gpx->next;
411          }
412      }      }
413    
414      name = g_strdup(cache->name);      name = g_strdup(cache->name);
# Line 484  static cache_t *map_closest(map_context_ Line 491  static cache_t *map_closest(map_context_
491      result = context->appdata->cur_cache;      result = context->appdata->cur_cache;
492    
493    /* make sure this is the first hit */    /* make sure this is the first hit */
494    result = cache_search_first(context->appdata->gpx, result);    if(context->caches_displayed)
495        result = cache_search_first(context->appdata->gpx, result);
496    
497    return result;    return result;
498  }  }
# Line 505  on_map_button_press_event(GtkWidget *wid Line 513  on_map_button_press_event(GtkWidget *wid
513    
514    OsmGpsMap *map = OSM_GPS_MAP(context->widget);    OsmGpsMap *map = OSM_GPS_MAP(context->widget);
515    
516      puts("press event");
517    
518    /* check if we actually clicked parts of the OSD */    /* check if we actually clicked parts of the OSD */
519    if(osm_gps_map_osd_check(map, event->x, event->y) != OSD_NONE)    if(osm_gps_map_osd_check(map, event->x, event->y) != OSD_NONE)
520      return FALSE;      return FALSE;
# Line 708  balloon_cb(osm_gps_map_balloon_event_t * Line 718  balloon_cb(osm_gps_map_balloon_event_t *
718      printf("click %s event at %d %d\n",      printf("click %s event at %d %d\n",
719             event->data.click.down?"down":"up",             event->data.click.down?"down":"up",
720             event->data.click.x, event->data.click.y);             event->data.click.x, event->data.click.y);
721    
722      /* make the main screen jump to that cache */      /* make the main screen jump to that cache */
723      if(!event->data.click.down) {      if(!event->data.click.down) {
724        if(context->appdata->cur_cache) {        if(context->appdata->cur_cache) {
725          printf("ERROR: no current cache should be visible!\n");          printf("ERROR: no current cache should be visible!\n");
726        } else {        } else {
727          gpx_t *is_in = NULL;          gpx_t *is_in = NULL;
728    
729            if(context->appdata->search_results) {
730              printf("click while in \"search results\" view\n");
731    
732          if(!context->appdata->cur_gpx) {            is_in = context->appdata->search_results;
733            } else if(!context->appdata->cur_gpx) {
734            printf("click while in \"all\" view\n");            printf("click while in \"all\" view\n");
735    
736            /* we first need to figure out which gpx file this cache */            /* we first need to figure out which gpx file this cache */
737            /* is in so we can open it first */            /* is in so we can open it first */
738            gpx_t *gpx = context->appdata->gpx;            gpx_t *gpx = context->appdata->gpx;
# Line 734  balloon_cb(osm_gps_map_balloon_event_t * Line 748  balloon_cb(osm_gps_map_balloon_event_t *
748    
749            if(is_in)            if(is_in)
750              gpxlist_goto_cachelist(context->appdata, is_in);              gpxlist_goto_cachelist(context->appdata, is_in);
751    
752          } else          } else {
753              printf("click while in \"cachelist\" view\n");
754    
755            /* the simple case: there already is an open gpx file and */            /* the simple case: there already is an open gpx file and */
756            /* we just jump into the "cache" view */            /* we just jump into the "cache" view */
757            is_in = context->appdata->cur_gpx;            is_in = context->appdata->cur_gpx;
758            }
759    
760          if(is_in) {          if(is_in) {
761            printf("selecting %s in %s\n",            printf("selecting %s in %s\n",
762                   cache->id,                   cache->id,
763                     context->appdata->search_results?
764                     context->appdata->search_results->name:
765                   context->appdata->cur_gpx->name);                   context->appdata->cur_gpx->name);
766    
767            cachelist_goto_cache(context->appdata, cache);            cachelist_goto_cache(context->appdata, cache);
768    
769            /* give focus to main screen (important for maemo) */            /* give focus to main screen (important for maemo) */
770            printf("raising main window\n");            printf("raising main window\n");
771            gtk_window_present(GTK_WINDOW(context->appdata->window));            gtk_window_present(GTK_WINDOW(context->appdata->window));
# Line 764  on_map_button_release_event(GtkWidget *w Line 783  on_map_button_release_event(GtkWidget *w
783                              GdkEventButton *event, map_context_t *context) {                              GdkEventButton *event, map_context_t *context) {
784    OsmGpsMap *map = OSM_GPS_MAP(context->widget);    OsmGpsMap *map = OSM_GPS_MAP(context->widget);
785    
786      puts("release event");
787    
788    /* in "MAP_CACHE" state only one cache is visible */    /* in "MAP_CACHE" state only one cache is visible */
789    /* and the map is in navigation mode. the balloon is */    /* and the map is in navigation mode. the balloon is */
790    /* pretty useless there */    /* pretty useless there */
# Line 808  static void on_window_destroy(GtkWidget Line 829  static void on_window_destroy(GtkWidget
829    g_object_get(map, "zoom", &zoom, NULL);    g_object_get(map, "zoom", &zoom, NULL);
830    context->appdata->map.zoom = zoom;    context->appdata->map.zoom = zoom;
831    
832      gboolean dpix;
833      g_object_get(map, "double-pixel", &dpix, NULL);
834      context->appdata->map.dpix = dpix;
835    
836    gfloat lat, lon;    gfloat lat, lon;
837    g_object_get(map, "latitude", &lat, "longitude", &lon, NULL);    g_object_get(map, "latitude", &lat, "longitude", &lon, NULL);
838    context->appdata->map.pos.lat = lat;    context->appdata->map.pos.lat = lat;
# Line 961  void map(appdata_t *appdata) { Line 986  void map(appdata_t *appdata) {
986                   "auto-center",              FALSE,                   "auto-center",              FALSE,
987                   "record-trip-history",      FALSE,                   "record-trip-history",      FALSE,
988                   "show-trip-history",        FALSE,                   "show-trip-history",        FALSE,
989                     "double-pixel",             context->appdata->map.dpix,
990                   proxy?"proxy-uri":NULL,     proxy,                   proxy?"proxy-uri":NULL,     proxy,
991                   NULL);                   NULL);
992    

Legend:
Removed from v.242  
changed lines
  Added in v.280