--- trunk/src/misc.c 2009/10/19 13:02:41 136 +++ trunk/src/misc.c 2009/10/19 18:21:20 137 @@ -412,3 +412,66 @@ g_rmdir(path); } +#ifdef ENABLE_BROWSER_INTERFACE +static void on_link_clicked(GtkButton *button, gpointer data) { + appdata_t *appdata = (appdata_t*)data; + char *url = g_object_get_data(G_OBJECT(button), "url"); + if(url) browser_url(appdata, url); +} +#endif + +/* a button containing a weblink */ +GtkWidget *link_button_attrib(appdata_t *appdata, char *str, char *url, + int size, int strikethrough) { + +#ifdef ENABLE_BROWSER_INTERFACE + if(url) { + GtkWidget *button = gtk_button_attrib(str, size, strikethrough); + g_object_set_data(G_OBJECT(button), "url", url); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc)on_link_clicked, appdata); + + return button; + } +#endif + return gtk_label_attrib(str, size, strikethrough); +} + +#ifdef ENABLE_BROWSER_INTERFACE +static void on_link_id_clicked(GtkButton *button, gpointer data) { + appdata_t *appdata = (appdata_t*)data; + + unsigned int id = (unsigned int)g_object_get_data(G_OBJECT(button), "id"); + char *type = g_object_get_data(G_OBJECT(button), "type"); + + char *url = g_strdup_printf("http://www.geocaching.com/%s?id=%u", + type, id); + + if(url) { + browser_url(appdata, url); + g_free(url); + } +} +#endif + +GtkWidget *link_button_by_id(appdata_t *appdata, char *str, + const char *type, int id) { + +#ifdef ENABLE_BROWSER_INTERFACE + if(id) { + GtkWidget *ref = gtk_button_new_with_label(str); +#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)id); + g_object_set_data(G_OBJECT(ref), "type", (gpointer)type); + gtk_signal_connect(GTK_OBJECT(ref), "clicked", + GTK_SIGNAL_FUNC(on_link_id_clicked), appdata); + + return ref; + } +#endif + return gtk_label_new(str); +} +