--- trunk/src/cache.c 2009/10/19 13:02:41 136 +++ trunk/src/cache.c 2009/10/19 18:21:20 137 @@ -100,13 +100,6 @@ gtk_widget_show_all(context->bearing_hbox); } -#ifdef ENABLE_BROWSER_INTERFACE -static void on_www_clicked(GtkButton *button, gpointer data) { - cache_context_t *context = (cache_context_t*)data; - browser_url(context->appdata, context->cache->url); -} -#endif - static GtkWidget *cache_overview(cache_context_t *context) { GtkWidget *vbox, *ivbox; GtkWidget *table, *tip; @@ -122,8 +115,9 @@ table = gtk_table_new(3,4, FALSE); if(cache->type != CACHE_TYPE_UNKNOWN) { - gtk_table_attach_defaults(GTK_TABLE(table), - tip = icon_get_widget(ICON_CACHE_TYPE, cache->type), 0,1,0,1); + gtk_table_attach(GTK_TABLE(table), + tip = icon_get_widget(ICON_CACHE_TYPE, cache->type), 0,1,0,1, + GTK_FILL, 0, GTK_FILL, 0); #ifndef USE_MAEMO gtk_tooltips_set_tip(tips, tip, _(cache_type_tip[cache->type]), NULL); #endif @@ -133,10 +127,13 @@ if(cache->container != CACHE_CONT_UNKNOWN) { ivbox = gtk_vbox_new(FALSE, 0); sprintf(str, _("Size: %s"), _(cache_size_name[cache->container])); - gtk_box_pack_start_defaults(GTK_BOX(ivbox), GTK_LABEL_SMALL(str)); - gtk_box_pack_start_defaults(GTK_BOX(ivbox), - icon_get_widget(ICON_CACHE_SIZE, cache->container)); - gtk_table_attach_defaults(GTK_TABLE(table), ivbox, 0,1,1,2); + gtk_box_pack_start(GTK_BOX(ivbox), GTK_LABEL_SMALL(str), + FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(ivbox), + icon_get_widget(ICON_CACHE_SIZE, cache->container), + FALSE, FALSE, 0); + gtk_table_attach(GTK_TABLE(table), ivbox, 0,1,1,2, + GTK_EXPAND | GTK_FILL, 0, GTK_FILL, 0); #ifndef USE_MAEMO gtk_tooltips_set_tip(tips, ivbox, _(cache_size_tip[cache->container]), NULL); #endif @@ -146,21 +143,9 @@ if(cache->id) { int strike = cache->archived?STRIKETHROUGH_RED: (!cache->available?STRIKETHROUGH:STRIKETHROUGH_NONE); - GtkWidget *lbl = NULL; - -#ifdef ENABLE_BROWSER_INTERFACE - if(!cache->url) -#endif - lbl = gtk_label_attrib(cache->id, SIZE_BIG, strike); -#ifdef ENABLE_BROWSER_INTERFACE - else { - /* add Go button */ - lbl = gtk_button_attrib(cache->id, SIZE_BIG, strike); - gtk_signal_connect(GTK_OBJECT(lbl), "clicked", - (GtkSignalFunc)on_www_clicked, context); - } -#endif - + GtkWidget *lbl = link_button_attrib(context->appdata, + cache->id, context->cache->url, + SIZE_BIG, strike); gtk_table_attach(GTK_TABLE(table), lbl, 1,2,0,1, FALSE, FALSE, 0, 0); } @@ -168,18 +153,26 @@ if(cache->owner) { ivbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start_defaults(GTK_BOX(ivbox), GTK_LABEL_SMALL(_("by"))); - gtk_box_pack_start_defaults(GTK_BOX(ivbox), GTK_LABEL_SMALL(cache->owner->name)); - gtk_table_attach_defaults(GTK_TABLE(table), ivbox, 1,2,1,2); + + static const char *owner_type = "profile/"; + /* todo: small!!! */ + gtk_box_pack_start_defaults(GTK_BOX(ivbox), + link_button_by_id(appdata, cache->owner->name, + owner_type, cache->owner->id)); + gtk_table_attach(GTK_TABLE(table), ivbox, 1,2,1,2, FALSE,FALSE,0,0); } /* ----------- box containing difficulty rating ---------- */ if(cache->difficulty != 0) { ivbox = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start_defaults(GTK_BOX(ivbox), - GTK_LABEL_SMALL(_("Difficulty:"))); - gtk_box_pack_start_defaults(GTK_BOX(ivbox), - icon_get_widget(ICON_STARS, (int)(cache->difficulty*2-2))); - gtk_table_attach_defaults(GTK_TABLE(table), ivbox, 2,3,0,1); + gtk_box_pack_start(GTK_BOX(ivbox), + GTK_LABEL_SMALL(_("Difficulty:")), + FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(ivbox), + icon_get_widget(ICON_STARS, (int)(cache->difficulty*2-2)), + FALSE, FALSE, 0); + gtk_table_attach(GTK_TABLE(table), ivbox, 2,3,0,1, + GTK_EXPAND | GTK_FILL, 0, GTK_FILL, 0); #ifndef USE_MAEMO sprintf(str, _("Difficulty: %.1f"), cache->difficulty); gtk_tooltips_set_tip(tips, ivbox, str, NULL); @@ -189,10 +182,13 @@ /* ------------ box containing terrain rating ------------ */ if(cache->terrain != 0) { ivbox = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start_defaults(GTK_BOX(ivbox), GTK_LABEL_SMALL(_("Terrain:"))); - gtk_box_pack_start_defaults(GTK_BOX(ivbox), - icon_get_widget(ICON_STARS, (int)(cache->terrain*2-2))); - gtk_table_attach_defaults(GTK_TABLE(table), ivbox, 2,3,1,2); + gtk_box_pack_start(GTK_BOX(ivbox), GTK_LABEL_SMALL(_("Terrain:")), + FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(ivbox), + icon_get_widget(ICON_STARS, (int)(cache->terrain*2-2)), + FALSE, FALSE, 0); + gtk_table_attach(GTK_TABLE(table), ivbox, 2,3,1,2, + GTK_EXPAND | GTK_FILL, 0, GTK_FILL, 0); #ifndef USE_MAEMO sprintf(str, _("Terrain: %.1f"), cache->terrain); gtk_tooltips_set_tip(tips, ivbox, str, NULL); @@ -421,21 +417,6 @@ #endif } -#ifdef ENABLE_BROWSER_INTERFACE -static void on_tbref_clicked(GtkButton *button, gpointer data) { - appdata_t *appdata = (appdata_t *)data; - - unsigned int id = (unsigned int)g_object_get_data(G_OBJECT(button), "id"); - if(id) { - printf("clicked tb id %u\n", id); - char *url = - g_strdup_printf("http://www.geocaching.com/track/details.aspx?id=%u", id); - browser_url(appdata, url); - g_free(url); - } -} -#endif - static GtkWidget *cache_tbs(appdata_t *appdata, tb_t *tb) { pos_t *refpos = NULL; @@ -456,23 +437,15 @@ int tb_row=0; while(tb) { + static const char *tb_type = "track/details.aspx"; + /* --------------------- icon/ref/name -------------------------*/ gtk_table_attach_defaults(GTK_TABLE(table), icon_get_widget(ICON_TB, 0), 0, 1, tb_row+0, tb_row+1); + if(tb->ref) { -#ifdef ENABLE_BROWSER_INTERFACE - GtkWidget *ref = gtk_button_new_with_label(tb->ref); -#if defined(USE_MAEMO) && (MAEMO_VERSION_MAJOR == 5) - hildon_gtk_widget_set_theme_size(ref, - (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH)); -#endif - g_object_set_data(G_OBJECT(ref), "id", (gpointer)tb->id); - gtk_signal_connect(GTK_OBJECT(ref), "clicked", - GTK_SIGNAL_FUNC(on_tbref_clicked), appdata); -#else - GtkWidget *ref = GTK_LABEL_BIG(tb->ref); -#endif + GtkWidget *ref = link_button_by_id(appdata, tb->ref, tb_type, tb->id); gtk_table_attach_defaults(GTK_TABLE(table), ref, 1, 2, tb_row+0, tb_row+1); } @@ -564,8 +537,13 @@ gtk_table_attach_defaults(GTK_TABLE(table), gtk_label_new(date_str), 1, 2, cnt+1, cnt+2); - gtk_table_attach_defaults(GTK_TABLE(table), gtk_label_new(log->finder), - 2, 3, cnt+1, cnt+2); + static const char *finder_type = "profile/"; + GtkWidget *finder = link_button_by_id(appdata, log->finder->name, + finder_type, log->finder->id); + + gtk_table_attach(GTK_TABLE(table), finder, + 2, 3, cnt+1, cnt+2, FALSE, FALSE, 0, 0); + gtk_table_attach_defaults(GTK_TABLE(table), gtk_hseparator_new(), 0, 3, cnt+2, cnt+3);