Diff of /trunk/src/cache.c

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

revision 3 by harbaum, Mon Jun 22 13:05:30 2009 UTC revision 66 by harbaum, Wed Aug 19 20:03:28 2009 UTC
# Line 53  void bearing_fill_hbox(GtkWidget *hbox, Line 53  void bearing_fill_hbox(GtkWidget *hbox,
53      gtk_box_pack_start(GTK_BOX(hbox), gtk_image_new_from_pixbuf(      gtk_box_pack_start(GTK_BOX(hbox), gtk_image_new_from_pixbuf(
54                                          icon_bearing(refpos, pos)),1,0,0);                                          icon_bearing(refpos, pos)),1,0,0);
55    
56      if(refpos.lat && refpos.lon) {      if(!isnan(refpos.lat) && !isnan(refpos.lon)) {
57        gtk_box_pack_start_defaults(GTK_BOX(hbox),        gtk_box_pack_start_defaults(GTK_BOX(hbox),
58                     GTK_LABEL_SMALL((char*)pos_get_bearing_str(refpos, pos)));                     GTK_LABEL_SMALL((char*)pos_get_bearing_str(refpos, pos)));
59        snprintf(str, sizeof(str), _("%.1f°"),        snprintf(str, sizeof(str), _("%.1f°"),
# Line 92  void overview_coordinate_update(cache_co Line 92  void overview_coordinate_update(cache_co
92                          (GtkCallback)gtk_widget_destroy, NULL);                          (GtkCallback)gtk_widget_destroy, NULL);
93    
94    /* update distance/etc */    /* update distance/etc */
95    bearing_fill_hbox(context->bearing_hbox, context->appdata,    if(!isnan(context->cache->pos.lat) &&
96                      *get_pos(context->appdata), notes_get_pos(context));       !isnan(context->cache->pos.lon))
97        bearing_fill_hbox(context->bearing_hbox, context->appdata,
98                          *get_pos(context->appdata), notes_get_pos(context));
99    
100    gtk_widget_show_all(context->bearing_hbox);    gtk_widget_show_all(context->bearing_hbox);
101  }  }
102    
# Line 212  static GtkWidget *cache_overview(cache_c Line 215  static GtkWidget *cache_overview(cache_c
215         context->pos_lon_label = pos_lon(cache->pos.lon, SIZE_BIG, strike));         context->pos_lon_label = pos_lon(cache->pos.lon, SIZE_BIG, strike));
216    
217    /* but calculations may be done with respect to the overriden one */    /* but calculations may be done with respect to the overriden one */
218    context->bearing_hbox = gtk_hbox_new(FALSE, 0);    if(!isnan(cache->pos.lat) && !isnan(cache->pos.lon)) {
219    bearing_fill_hbox(context->bearing_hbox, appdata, *refpos,      context->bearing_hbox = gtk_hbox_new(FALSE, 0);
220                      gpx_cache_pos(cache));      bearing_fill_hbox(context->bearing_hbox, appdata, *refpos,
221    gtk_box_pack_start_defaults(GTK_BOX(ivbox), context->bearing_hbox);                        gpx_cache_pos(cache));
222        gtk_box_pack_start_defaults(GTK_BOX(ivbox), context->bearing_hbox);
223      }
224    
225    gtk_table_attach_defaults(GTK_TABLE(table), ivbox, 3,4,0,2);    gtk_table_attach_defaults(GTK_TABLE(table), ivbox, 3,4,0,2);
226    
# Line 234  static GtkWidget *cache_overview(cache_c Line 239  static GtkWidget *cache_overview(cache_c
239    
240  /* slow but short, we don't need performance here ... */  /* slow but short, we don't need performance here ... */
241  static void rot13(char *t) {  static void rot13(char *t) {
242      int braces = 0;
243    
244    while(*t) {    while(*t) {
245      if(((*t >= 'a') && (*t < 'n')) ||      if(!braces) {
246         ((*t >= 'A') && (*t < 'N'))) *t += 13;        if(*t == '[')
247      else if(((*t >= 'n') && (*t <= 'z')) ||          braces++;
248              ((*t >= 'N') && (*t <= 'Z'))) *t -= 13;        else if(((*t >= 'a') && (*t < 'n')) ||
249                  ((*t >= 'A') && (*t < 'N'))) *t += 13;
250          else if(((*t >= 'n') && (*t <= 'z')) ||
251                  ((*t >= 'N') && (*t <= 'Z'))) *t -= 13;
252        } else {
253          if(braces > 0 && *t == ']')
254            braces--;
255        }
256    
257      t++;      t++;
258    }    }
# Line 276  static GtkWidget *cache_hint(appdata_t * Line 290  static GtkWidget *cache_hint(appdata_t *
290    free(hint);    free(hint);
291    
292    GtkWidget *button = gtk_button_new_with_label(_("Encrypt/Decrypt"));    GtkWidget *button = gtk_button_new_with_label(_("Encrypt/Decrypt"));
293    #if defined(USE_MAEMO) && (MAEMO_VERSION_MAJOR == 5)
294      hildon_gtk_widget_set_theme_size(button,
295               (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH));
296    #endif
297    gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);    gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
298    gtk_signal_connect(GTK_OBJECT(button), "clicked",    gtk_signal_connect(GTK_OBJECT(button), "clicked",
299             GTK_SIGNAL_FUNC(on_decrypt), gtk_bin_get_child(GTK_BIN(view)));             GTK_SIGNAL_FUNC(on_decrypt), gtk_bin_get_child(GTK_BIN(view)));
# Line 349  static GtkWidget *cache_wpts(appdata_t * Line 366  static GtkWidget *cache_wpts(appdata_t *
366        GtkTextBuffer *buffer = gtk_text_buffer_new(NULL);        GtkTextBuffer *buffer = gtk_text_buffer_new(NULL);
367        gtk_text_buffer_set_text(buffer, wpt->desc, strlen(wpt->desc));        gtk_text_buffer_set_text(buffer, wpt->desc, strlen(wpt->desc));
368    
369  #ifndef USE_MAEMO  #ifndef USE_HILDON_TEXT_VIEW
370        GtkWidget *textview = gtk_text_view_new_with_buffer(buffer);        GtkWidget *textview = gtk_text_view_new_with_buffer(buffer);
371  #else  #else
372        GtkWidget *textview = hildon_text_view_new();        GtkWidget *textview = hildon_text_view_new();
# Line 368  static GtkWidget *cache_wpts(appdata_t * Line 385  static GtkWidget *cache_wpts(appdata_t *
385      if(wpt->cmt) {      if(wpt->cmt) {
386        GtkTextBuffer *buffer = gtk_text_buffer_new(NULL);        GtkTextBuffer *buffer = gtk_text_buffer_new(NULL);
387        gtk_text_buffer_set_text(buffer, wpt->cmt, strlen(wpt->cmt));        gtk_text_buffer_set_text(buffer, wpt->cmt, strlen(wpt->cmt));
388  #ifndef USE_MAEMO  #ifndef USE_HILDON_TEXT_VIEW
389        GtkWidget *textview = gtk_text_view_new_with_buffer(buffer);        GtkWidget *textview = gtk_text_view_new_with_buffer(buffer);
390  #else  #else
391        GtkWidget *textview = hildon_text_view_new();        GtkWidget *textview = hildon_text_view_new();
# Line 456  static GtkWidget *cache_tbs(appdata_t *a Line 473  static GtkWidget *cache_tbs(appdata_t *a
473  #endif  #endif
474  }  }
475    
476  static GtkWidget *cache_logs(appdata_t *appdata, log_t *log, int is_html) {  #ifdef ENABLE_BROWSER_INTERFACE
477    static void on_gclink_clicked(GtkButton *button, gpointer data) {
478      cache_context_t *context = (cache_context_t*)data;
479      char *url = g_strdup_printf("http://www.geocaching.com/seek/log.aspx?wp=%s", context->cache->id);
480      browser_url(context->appdata, url);
481      g_free(url);
482    }
483    #endif
484    
485    static GtkWidget *cache_logs(appdata_t *appdata, cache_context_t *context, log_t *log, int is_html) {
486  #ifndef  USE_PANNABLE_AREA  #ifndef  USE_PANNABLE_AREA
487    /* put this inside a scrolled view */    /* put this inside a scrolled view */
488    GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);    GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);
# Line 466  static GtkWidget *cache_logs(appdata_t * Line 492  static GtkWidget *cache_logs(appdata_t *
492    GtkWidget *pannable_area = hildon_pannable_area_new();    GtkWidget *pannable_area = hildon_pannable_area_new();
493  #endif  #endif
494    
495    GtkWidget *table = gtk_table_new(4*gpx_number_of_logs(log), 3, FALSE);  #ifdef ENABLE_BROWSER_INTERFACE
496      gboolean gc_link = strncmp(context->cache->id, "GC", 2) == 0;
497    #else
498    #define gc_link (FALSE)
499    #endif
500    
501      GtkWidget *table = gtk_table_new(4*gpx_number_of_logs(log)+(gc_link?1:0), 3, FALSE);
502    int cnt = 0;    int cnt = 0;
503    
504    #ifdef ENABLE_BROWSER_INTERFACE
505      if(gc_link) {
506        GtkWidget *but = gtk_button_new_with_label(_("Post a new log entry for this geocache"));
507    #if defined(USE_MAEMO) && (MAEMO_VERSION_MAJOR == 5)
508      hildon_gtk_widget_set_theme_size(but,
509               (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH));
510    #endif
511        gtk_signal_connect(GTK_OBJECT(but), "clicked",
512                           GTK_SIGNAL_FUNC(on_gclink_clicked), context);
513    
514        gtk_table_attach_defaults(GTK_TABLE(table), but, 0, 3, 0, 1);
515        cnt++;
516      }
517    #endif
518    
519    /* add all logs to the vbox */    /* add all logs to the vbox */
520    while(log) {    while(log) {
# Line 617  GtkWidget *cache_view(appdata_t *appdata Line 664  GtkWidget *cache_view(appdata_t *appdata
664    
665    if(cache->log)    if(cache->log)
666      gtk_notebook_append_page(GTK_NOTEBOOK(notebook),      gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
667             cache_logs(appdata, cache->log, cache->logs_are_html),       cache_logs(appdata, cache_context, cache->log, cache->logs_are_html),
668             gtk_label_new(_("Logs")));             gtk_label_new(_("Logs")));
669    
670    if(cache->wpt)    if(cache->wpt)
# Line 665  void cache_dialog(appdata_t *appdata, ca Line 712  void cache_dialog(appdata_t *appdata, ca
712    
713  #else  #else
714  #ifdef USE_STACKABLE_WINDOW  #ifdef USE_STACKABLE_WINDOW
715    static void on_cache_destroy (GtkWidget *widget, appdata_t *appdata) {
716      appdata->cur_cache = NULL;
717    
718      /* restore cur_view */
719      appdata->cur_view = g_object_get_data(G_OBJECT(widget), "cur_view");
720    }
721    
722  void cache_dialog(appdata_t *appdata, cache_t *cache) {  void cache_dialog(appdata_t *appdata, cache_t *cache) {
723    GtkWidget *window = hildon_stackable_window_new();    GtkWidget *window = hildon_stackable_window_new();
724    
725    gtk_window_set_title(GTK_WINDOW(window), cache->name);    /* store last "cur_view" in window */
726      g_object_set_data(G_OBJECT(window), "cur_view", appdata->cur_view);
727    
728      appdata->cur_cache = cache;
729      char *title = g_strdup_printf("%s - GPXView", cache->name);
730      gtk_window_set_title(GTK_WINDOW(window), title);
731      g_free(title);
732    
733    /* create cache visualization widget */    /* create cache visualization widget */
734    gtk_container_add(GTK_CONTAINER(window),    appdata->cur_view = cache_view(appdata, cache);
735                      cache_view(appdata, cache));    gtk_container_add(GTK_CONTAINER(window), appdata->cur_view);
736    
737    hildon_window_set_app_menu(HILDON_WINDOW(window),    hildon_window_set_app_menu(HILDON_WINDOW(window),
738                               menu_create(appdata, MENU_CACHE));                               menu_create(appdata, MENU_CACHE));
739    
740      g_signal_connect(G_OBJECT(window), "destroy",
741                       G_CALLBACK(on_cache_destroy), appdata);
742    
743    gtk_widget_show_all(window);    gtk_widget_show_all(window);
744  }  }
745  #endif // USE_STACKABLE_WINDOW  #endif // USE_STACKABLE_WINDOW

Legend:
Removed from v.3  
changed lines
  Added in v.66