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

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

revision 240 by harbaum, Sat Dec 12 20:56:23 2009 UTC revision 255 by harbaum, Tue Feb 9 19:25:36 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 435  static void map_setup(map_context_t *con Line 442  static void map_setup(map_context_t *con
442    }    }
443    
444    if(name) {    if(name) {
445      char *title = g_strdup_printf(_("Map - %s"), name);      gtk_window_set_title(GTK_WINDOW(context->window), name);
446      g_free(name);      g_free(name);
   
     gtk_window_set_title(GTK_WINDOW(context->window), title);  
   
     g_free(title);  
447    } else    } else
448      printf("map_setup(keep)\n");      printf("map_setup(keep)\n");
449  }  }
# Line 488  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 712  balloon_cb(osm_gps_map_balloon_event_t * Line 716  balloon_cb(osm_gps_map_balloon_event_t *
716      printf("click %s event at %d %d\n",      printf("click %s event at %d %d\n",
717             event->data.click.down?"down":"up",             event->data.click.down?"down":"up",
718             event->data.click.x, event->data.click.y);             event->data.click.x, event->data.click.y);
719    
720      /* make the main screen jump to that cache */      /* make the main screen jump to that cache */
721      if(!event->data.click.down) {      if(!event->data.click.down) {
722        if(context->appdata->cur_cache) {        if(context->appdata->cur_cache) {
723          printf("ERROR: no current cache should be visible!\n");          printf("ERROR: no current cache should be visible!\n");
724        } else {        } else {
725          gpx_t *is_in = NULL;          gpx_t *is_in = NULL;
726    
727            if(context->appdata->search_results) {
728              printf("click while in \"search results\" view\n");
729    
730          if(!context->appdata->cur_gpx) {            is_in = context->appdata->search_results;
731            } else if(!context->appdata->cur_gpx) {
732            printf("click while in \"all\" view\n");            printf("click while in \"all\" view\n");
733    
734            /* we first need to figure out which gpx file this cache */            /* we first need to figure out which gpx file this cache */
735            /* is in so we can open it first */            /* is in so we can open it first */
736            gpx_t *gpx = context->appdata->gpx;            gpx_t *gpx = context->appdata->gpx;
# Line 738  balloon_cb(osm_gps_map_balloon_event_t * Line 746  balloon_cb(osm_gps_map_balloon_event_t *
746    
747            if(is_in)            if(is_in)
748              gpxlist_goto_cachelist(context->appdata, is_in);              gpxlist_goto_cachelist(context->appdata, is_in);
749    
750          } else          } else {
751              printf("click while in \"cachelist\" view\n");
752    
753            /* the simple case: there already is an open gpx file and */            /* the simple case: there already is an open gpx file and */
754            /* we just jump into the "cache" view */            /* we just jump into the "cache" view */
755            is_in = context->appdata->cur_gpx;            is_in = context->appdata->cur_gpx;
756            }
757    
758          if(is_in) {          if(is_in) {
759            printf("selecting %s in %s\n",            printf("selecting %s in %s\n",
760                   cache->id,                   cache->id,
761                     context->appdata->search_results?
762                     context->appdata->search_results->name:
763                   context->appdata->cur_gpx->name);                   context->appdata->cur_gpx->name);
764    
765            cachelist_goto_cache(context->appdata, cache);            cachelist_goto_cache(context->appdata, cache);
766    
767            /* give focus to main screen (important for maemo) */            /* give focus to main screen (important for maemo) */
768            printf("raising main window\n");            printf("raising main window\n");
769            gtk_window_present(GTK_WINDOW(context->appdata->window));            gtk_window_present(GTK_WINDOW(context->appdata->window));

Legend:
Removed from v.240  
changed lines
  Added in v.255