--- trunk/src/misc.c 2009/11/26 10:30:50 215 +++ trunk/src/misc.c 2009/11/26 14:32:41 216 @@ -28,6 +28,9 @@ #if defined(USE_MAEMO) && (MAEMO_VERSION_MAJOR >= 5) #include +#include +#include +#include #endif char strlastchr(char *str) { @@ -724,3 +727,100 @@ return((lat1 != lat2) || (lon1 != lon2)); } + +#ifdef FREMANTLE +void selection_changed (HildonTouchSelector * selector, + gpointer *user_data) { + gchar *current_selection = NULL; + + current_selection = hildon_touch_selector_get_current_text (selector); + g_debug ("Current selection : %s", current_selection); +} + +static GtkWidget *create_customized_selector() { + GtkWidget *selector = NULL; + GSList *icon_list = NULL; + GtkListStore *store_icons = NULL; + GSList *item = NULL; + GtkCellRenderer *renderer = NULL; + HildonTouchSelectorColumn *column = NULL; + + selector = hildon_touch_selector_new (); + + icon_list = gtk_stock_list_ids (); + + store_icons = gtk_list_store_new (1, G_TYPE_STRING); + for (item = icon_list; item; item = g_slist_next (item)) { + GtkTreeIter iter; + gchar *label = item->data; + + gtk_list_store_append (store_icons, &iter); + gtk_list_store_set (store_icons, &iter, 0, label, -1); + g_free (label); + } + g_slist_free (icon_list); + + renderer = gtk_cell_renderer_pixbuf_new (); + gtk_cell_renderer_set_fixed_size (renderer, -1, 100); + + column = hildon_touch_selector_append_column (HILDON_TOUCH_SELECTOR (selector), + GTK_TREE_MODEL (store_icons), + renderer, "stock-id", 0, NULL); + + g_object_set (G_OBJECT (column), "text-column", 0, NULL); + + hildon_touch_selector_set_column_selection_mode (HILDON_TOUCH_SELECTOR (selector), + HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE); + + + g_signal_connect (G_OBJECT (selector), "changed", + G_CALLBACK (selection_changed), NULL); + + return selector; +} + +static gint on_picker_request(GtkWidget *button, GdkEventButton *event, + gpointer data) { + + if(event->type == GDK_BUTTON_PRESS) { + GtkWidget *dialog = hildon_picker_dialog_new(NULL); + GtkWidget *selector = create_customized_selector(); + hildon_picker_dialog_set_selector(HILDON_PICKER_DIALOG(dialog), + HILDON_TOUCH_SELECTOR(selector)); + + hildon_touch_selector_set_active(HILDON_TOUCH_SELECTOR (selector), 1, -1); + + gtk_widget_show_all(dialog); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + + return TRUE; + } + return FALSE; +} + +GtkWidget *picker_button_new(void) { + GtkWidget *button; + +#if 1 + button = gtk_button_new(); + hildon_gtk_widget_set_theme_size(button, + (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH)); + + gtk_button_set_image(GTK_BUTTON(button), icon_get_widget(ICON_POS, 17)); + + gtk_signal_connect(GTK_OBJECT(button), "button-press-event", + (GtkSignalFunc)on_picker_request, NULL); + +#else + button = hildon_picker_button_new(HILDON_SIZE_AUTO, + HILDON_BUTTON_ARRANGEMENT_VERTICAL); + + hildon_button_set_title(HILDON_BUTTON(button), "Test"); + hildon_picker_button_set_selector(HILDON_PICKER_BUTTON(button), + HILDON_TOUCH_SELECTOR(create_customized_selector())); +#endif + + return button; +} +#endif