+2008-07-30 Claudio Saavedra <csaavedra@igalia.com>
+
+ * doc/hildon-docs.sgml:
+ * doc/hildon.types:
+
+ Update documentation.
+
+ * examples/Makefile.am: Update renamed examples.
+
+ * examples/hildon-picker-button-multicolumn-example.c:
+ (create_touch_selector), (main): Update after the rename.
+
+ * examples/hildon-touch-picker-example.c: Removed.
+ * examples/hildon-touch-selector-example.c: (value_changed),
+ (create_selector), (get_visible_content), (main): Renamed from
+ hildon-touch-picker-example.c
+
+ * src/Makefile.am: Updated renamed files.
+
+ * src/hildon-date-button.c: (hildon_date_button_init),
+ (hildon_date_button_get_date), (hildon_date_button_set_date):
+ * src/hildon-date-selector.c: (hildon_date_selector_init),
+ (_custom_print_func), (_update_day_model),
+ (_manage_selector_change_cb),
+ (hildon_date_selector_select_current_date),
+ (hildon_date_selector_get_date), (hildon_date_selector_select_day):
+ * src/hildon-date-selector.h:
+ * src/hildon-picker-button.c: (hildon_picker_button_get_property),
+ (hildon_picker_button_set_property),
+ (hildon_picker_button_clicked), (hildon_picker_button_class_init),
+ (hildon_picker_button_init), (hildon_picker_button_new_text),
+ (hildon_picker_button_append_text),
+ (hildon_picker_button_prepend_text),
+ (hildon_picker_button_insert_text),
+ (hildon_picker_button_set_selector),
+ (hildon_picker_button_get_selector):
+ * src/hildon-picker-button.h:
+ * src/hildon-picker-dialog.c: (hildon_picker_dialog_class_init),
+ (hildon_picker_dialog_init), (_select_on_selector_changed_cb),
+ (_update_title_on_selector_changed_cb), (requires_done_button),
+ (_hildon_picker_dialog_set_selector),
+ (hildon_picker_dialog_set_selector),
+ (hildon_picker_dialog_get_selector):
+ * src/hildon-picker-dialog.h:
+ * src/hildon-time-button.c: (hildon_time_button_init),
+ (hildon_time_button_get_time), (hildon_time_button_set_time):
+ * src/hildon-time-selector.c: (hildon_time_selector_init),
+ (_custom_print_func), (_manage_ampm_selection_cb), (_set_pm),
+ (hildon_time_selector_set_time), (hildon_time_selector_get_time):
+ * src/hildon-time-selector.h:
+ * src/hildon.h:
+
+ Massive code updates after the rename.
+
+ * src/hildon-touch-picker.c: Removed.
+ * src/hildon-touch-picker.h: Removed.
+
+ * src/hildon-touch-selector.c: (hildon_touch_selector_class_init),
+ (hildon_touch_selector_init), (hildon_touch_selector_map),
+ (hildon_touch_selector_remove), (_default_print_func),
+ (_selection_changed_cb), (_create_new_column),
+ (hildon_touch_selector_new), (hildon_touch_selector_append_column),
+ (hildon_touch_selector_append_text_column),
+ (hildon_touch_selector_remove_column),
+ (hildon_touch_selector_set_column_attributes),
+ (hildon_touch_selector_insert_column),
+ (hildon_touch_selector_get_num_columns),
+ (hildon_touch_selector_get_column_selection_mode),
+ (hildon_touch_selector_set_column_selection_mode),
+ (hildon_touch_selector_set_print_func),
+ (hildon_touch_selector_get_print_func),
+ (hildon_touch_selector_get_active_iter),
+ (hildon_touch_selector_set_active_iter),
+ (hildon_touch_selector_get_selected_rows),
+ (hildon_touch_selector_get_model),
+ (hildon_touch_selector_set_model),
+ (hildon_touch_selector_get_current_text),
+ (_hildon_touch_selector_center_on_selected_items):
+ * src/hildon-touch-selector.h: Renamed from
+ hildon-touch-picker.[ch]
+
+ Rename HildonTouchPicker to HildonTouchSelector. Updated all the
+ references, code examples, and related documentation.
+
2008-07-30 Alberto Garcia <agarcia@igalia.com>
* doc/hildon-docs.sgml
<xi:include href="xml/hildon-weekday-picker.xml"/>
<xi:include href="xml/hildon-time-picker.xml"/>
<xi:include href="xml/hildon-app-menu.xml"/>
- <xi:include href="xml/hildon-touch-picker.xml"/>
+ <xi:include href="xml/hildon-touch-selector.xml"/>
<xi:include href="xml/hildon-date-selector.xml"/>
<xi:include href="xml/hildon-time-selector.xml"/>
<xi:include href="xml/hildon-picker-button.xml"/>
#include <src/hildon-app-menu.h>
#include <src/hildon-button.h>
#include <src/hildon-toggle-button.h>
-#include <src/hildon-touch-picker.h>
+#include <src/hildon-touch-selector.h>
#include <src/hildon-time-selector.h>
#include <src/hildon-date-selector.h>
#include <src/hildon-picker-dialog.h>
hildon_app_menu_get_type
hildon_button_get_type
hildon_toggle_button_get_type
-hildon_touch_picker_get_type
+hildon_touch_selector_get_type
hildon_time_selector_get_type
hildon_date_selector_get_type
hildon_picker_dialog_get_type
hildon-picker-button-example \
hildon-picker-button-multicolumn-example \
hildon-time-button-example \
- hildon-touch-picker-example
+ hildon-touch-selector-example
# Hildon window
hildon_window_example_LDADD = $(HILDON_OBJ_LIBS)
hildon_time_button_example_SOURCES = hildon-time-button-example.c
# Hildon touch picker with multiselection
-hildon_touch_picker_example_LDADD = $(HILDON_OBJ_LIBS)
-hildon_touch_picker_example_CFLAGS = $(HILDON_OBJ_CFLAGS)
-hildon_touch_picker_example_SOURCES = hildon-touch-picker-example.c
+hildon_touch_selector_example_LDADD = $(HILDON_OBJ_LIBS)
+hildon_touch_selector_example_CFLAGS = $(HILDON_OBJ_CFLAGS)
+hildon_touch_selector_example_SOURCES = hildon-touch-selector-example.c
endif
#include "hildon-picker-button.h"
GtkWidget *
-create_touch_picker (void)
+create_touch_selector (void)
{
- GtkWidget *picker;
+ GtkWidget *selector;
GtkListStore *model;
GtkTreeIter iter;
- picker = hildon_touch_picker_new ();
+ selector = hildon_touch_selector_new ();
model = gtk_list_store_new (1, G_TYPE_STRING);
gtk_list_store_append (model, &iter);
gtk_list_store_set (model, &iter, 0, "Mailbox", -1);
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (picker),
- GTK_TREE_MODEL (model));
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ GTK_TREE_MODEL (model));
model = gtk_list_store_new (1, G_TYPE_STRING);
gtk_list_store_append (model, &iter);
gtk_list_store_set (model, &iter, 0, "Smoke signals", -1);
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (picker),
- GTK_TREE_MODEL (model));
- return picker;
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ GTK_TREE_MODEL (model));
+ return selector;
}
static void
HildonProgram *program = NULL;
GtkWidget *window = NULL;
GtkWidget *button;
- GtkWidget *picker;
+ GtkWidget *selector;
gtk_init (&argc, &args);
window = hildon_stackable_window_new ();
gtk_window_set_default_size (GTK_WINDOW (window), 300, 200);
hildon_program_add_window (program, HILDON_WINDOW (window));
- picker = create_touch_picker ();
+ selector = create_touch_selector ();
button = hildon_picker_button_new (HILDON_BUTTON_WITH_VERTICAL_VALUE);
hildon_button_set_title (HILDON_BUTTON (button), "Protocol");
- hildon_picker_button_set_picker (HILDON_PICKER_BUTTON (button),
- HILDON_TOUCH_PICKER (picker));
+ hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
+ HILDON_TOUCH_SELECTOR (selector));
g_signal_connect (G_OBJECT (button), "value-changed",
G_CALLBACK (on_picker_value_changed), NULL);
+++ /dev/null
-/*
- * This file is a part of hildon examples
- *
- * Copyright (C) 2008 Nokia Corporation, all rights reserved.
- *
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- */
-
-#include <glib.h>
-#include <gtk/gtk.h>
-
-#include "hildon-program.h"
-#include "hildon-stackable-window.h"
-
-#include "hildon-touch-picker.h"
-#include "hildon-picker-dialog.h"
-#include "hildon-picker-button.h"
-
-static GtkWidget *create_picker ();
-static GtkWidget *get_visible_content (GtkWidget * window);
-
-static GtkWindow *parent_window = NULL;
-
-static GtkWidget *label = NULL;
-
-static void
-value_changed (HildonPickerButton * button,
- gpointer user_data)
-{
- HildonTouchPicker *picker;
- gchar *aux_string = NULL;
-
- picker = hildon_picker_button_get_picker (button);
- aux_string = hildon_touch_picker_get_current_text (picker);
- gtk_label_set_text (GTK_LABEL (label), aux_string);
- g_free (aux_string);
-}
-
-static GtkWidget *
-create_picker ()
-{
- GtkWidget *picker = NULL;
- GSList *icon_list = NULL;
- GtkListStore *store_icons = NULL;
- GSList *item = NULL;
- GtkCellRenderer *renderer = NULL;
- GValue val = { 0, };
- GValue val2 = { 0, };
-
- picker = hildon_touch_picker_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 ();
- g_value_init (&val, G_TYPE_INT);
- g_value_set_int (&val, 100);
- g_object_set_property (G_OBJECT (renderer), "height", &val);
- g_value_init (&val2, G_TYPE_STRING);
- g_value_set_string (&val2, "orange");
- g_object_set_property (G_OBJECT (renderer), "cell-background", &val2);
-
- hildon_touch_picker_append_column (HILDON_TOUCH_PICKER (picker),
- GTK_TREE_MODEL (store_icons),
- renderer, "stock-id", 0, NULL);
-
- hildon_touch_picker_set_column_selection_mode (HILDON_TOUCH_PICKER (picker),
- HILDON_TOUCH_PICKER_SELECTION_MODE_MULTIPLE);
-
- return picker;
-}
-
-static GtkWidget *
-get_visible_content (GtkWidget * window)
-{
- GtkWidget *result = NULL;
- GtkWidget *button = NULL;
- GtkWidget *picker;
-
- label = gtk_label_new ("Here we are going to put the picker selection");
-
- button = hildon_picker_button_new (HILDON_BUTTON_WITH_VERTICAL_VALUE);
- hildon_button_set_title (HILDON_BUTTON (button), "Click me..");
- picker = create_picker ();
- hildon_picker_button_set_picker (HILDON_PICKER_BUTTON (button),
- HILDON_TOUCH_PICKER (picker));
-
- g_signal_connect (G_OBJECT (button), "value-changed",
- G_CALLBACK (value_changed), window);
-
- result = gtk_vbox_new (FALSE, 6);
-
- gtk_container_add (GTK_CONTAINER (result), button);
- gtk_container_add (GTK_CONTAINER (result), label);
-
- return result;
-}
-
-int
-main (int argc, char **args)
-{
- HildonProgram *program = NULL;
- GtkWidget *window = NULL;
-
- gtk_init (&argc, &args);
-
- program = hildon_program_get_instance ();
- g_set_application_name
- ("hildon-touch-picker cell renderer example program");
-
- window = hildon_stackable_window_new ();
- parent_window = GTK_WINDOW (window);
- hildon_program_add_window (program, HILDON_WINDOW (window));
-
- gtk_container_set_border_width (GTK_CONTAINER (window), 6);
-
- gtk_rc_parse_string ("style \"fremantle-widget\" {\n"
- " GtkWidget::hildon-mode = 1 \n"
- "} widget \"*.fremantle-widget\" style \"fremantle-widget\"\n");
-
-
- GtkWidget *vbox = get_visible_content (window);
-
- gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (vbox));
-
- g_signal_connect (G_OBJECT (window), "destroy",
- G_CALLBACK (gtk_main_quit), NULL);
- gtk_widget_show_all (GTK_WIDGET (window));
-
- gtk_main ();
-
- return 0;
-}
--- /dev/null
+/*
+ * This file is a part of hildon examples
+ *
+ * Copyright (C) 2008 Nokia Corporation, all rights reserved.
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "hildon-program.h"
+#include "hildon-stackable-window.h"
+
+#include "hildon-touch-selector.h"
+#include "hildon-picker-dialog.h"
+#include "hildon-picker-button.h"
+
+static GtkWidget *create_selector ();
+static GtkWidget *get_visible_content (GtkWidget * window);
+
+static GtkWindow *parent_window = NULL;
+
+static GtkWidget *label = NULL;
+
+static void
+value_changed (HildonPickerButton * button,
+ gpointer user_data)
+{
+ HildonTouchSelector *selector;
+ gchar *aux_string = NULL;
+
+ selector = hildon_picker_button_get_selector (button);
+ aux_string = hildon_touch_selector_get_current_text (selector);
+ gtk_label_set_text (GTK_LABEL (label), aux_string);
+ g_free (aux_string);
+}
+
+static GtkWidget *
+create_selector ()
+{
+ GtkWidget *selector = NULL;
+ GSList *icon_list = NULL;
+ GtkListStore *store_icons = NULL;
+ GSList *item = NULL;
+ GtkCellRenderer *renderer = NULL;
+ GValue val = { 0, };
+ GValue val2 = { 0, };
+
+ 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 ();
+ g_value_init (&val, G_TYPE_INT);
+ g_value_set_int (&val, 100);
+ g_object_set_property (G_OBJECT (renderer), "height", &val);
+ g_value_init (&val2, G_TYPE_STRING);
+ g_value_set_string (&val2, "orange");
+ g_object_set_property (G_OBJECT (renderer), "cell-background", &val2);
+
+ hildon_touch_selector_append_column (HILDON_TOUCH_SELECTOR (selector),
+ GTK_TREE_MODEL (store_icons),
+ renderer, "stock-id", 0, NULL);
+
+ hildon_touch_selector_set_column_selection_mode (HILDON_TOUCH_SELECTOR (selector),
+ HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE);
+
+ return selector;
+}
+
+static GtkWidget *
+get_visible_content (GtkWidget * window)
+{
+ GtkWidget *result = NULL;
+ GtkWidget *button = NULL;
+ GtkWidget *selector;
+
+ label = gtk_label_new ("Here we are going to put the selection");
+
+ button = hildon_picker_button_new (HILDON_BUTTON_WITH_VERTICAL_VALUE);
+ hildon_button_set_title (HILDON_BUTTON (button), "Click me..");
+ selector = create_selector ();
+ hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
+ HILDON_TOUCH_SELECTOR (selector));
+
+ g_signal_connect (G_OBJECT (button), "value-changed",
+ G_CALLBACK (value_changed), window);
+
+ result = gtk_vbox_new (FALSE, 6);
+
+ gtk_container_add (GTK_CONTAINER (result), button);
+ gtk_container_add (GTK_CONTAINER (result), label);
+
+ return result;
+}
+
+int
+main (int argc, char **args)
+{
+ HildonProgram *program = NULL;
+ GtkWidget *window = NULL;
+
+ gtk_init (&argc, &args);
+
+ program = hildon_program_get_instance ();
+ g_set_application_name
+ ("hildon-touch-selector cell renderer example program");
+
+ window = hildon_stackable_window_new ();
+ parent_window = GTK_WINDOW (window);
+ hildon_program_add_window (program, HILDON_WINDOW (window));
+
+ gtk_container_set_border_width (GTK_CONTAINER (window), 6);
+
+ gtk_rc_parse_string ("style \"fremantle-widget\" {\n"
+ " GtkWidget::hildon-mode = 1 \n"
+ "} widget \"*.fremantle-widget\" style \"fremantle-widget\"\n");
+
+
+ GtkWidget *vbox = get_visible_content (window);
+
+ gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (vbox));
+
+ g_signal_connect (G_OBJECT (window), "destroy",
+ G_CALLBACK (gtk_main_quit), NULL);
+ gtk_widget_show_all (GTK_WIDGET (window));
+
+ gtk_main ();
+
+ return 0;
+}
hildon-time-picker.c \
hildon-date-selector.c \
hildon-time-selector.c \
- hildon-touch-picker.c \
+ hildon-touch-selector.c \
hildon-picker-dialog.c \
hildon-picker-button.c \
hildon-date-button.c \
hildon-time-picker.h \
hildon-date-selector.h \
hildon-time-selector.h \
- hildon-touch-picker.h \
+ hildon-touch-selector.h \
hildon-picker-dialog.h \
hildon-picker-button.h \
hildon-date-button.h \
*/
#include "hildon-date-selector.h"
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
#include "hildon-picker-button.h"
#include "hildon-date-button.h"
date_selector = hildon_date_selector_new ();
- hildon_picker_button_set_picker (HILDON_PICKER_BUTTON (self),
- HILDON_TOUCH_PICKER (date_selector));
+ hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (self),
+ HILDON_TOUCH_SELECTOR (date_selector));
}
GtkWidget *
hildon_date_button_get_date (HildonDateButton * button,
guint * year, guint * month, guint * day)
{
- HildonTouchPicker *picker;
+ HildonTouchSelector *selector;
g_return_if_fail (HILDON_IS_DATE_BUTTON (button));
- picker = hildon_picker_button_get_picker (HILDON_PICKER_BUTTON (button));
+ selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
- hildon_date_selector_get_date (HILDON_DATE_SELECTOR (picker), year, month, day);
+ hildon_date_selector_get_date (HILDON_DATE_SELECTOR (selector), year, month, day);
}
void
hildon_date_button_set_date (HildonDateButton * button,
guint year, guint month, guint day)
{
- HildonTouchPicker *picker;
+ HildonTouchSelector *selector;
gchar *date;
g_return_if_fail (HILDON_IS_DATE_BUTTON (button));
- picker = hildon_picker_button_get_picker (HILDON_PICKER_BUTTON (button));
+ selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
- hildon_date_selector_select_current_date (HILDON_DATE_SELECTOR (picker),
+ hildon_date_selector_select_current_date (HILDON_DATE_SELECTOR (selector),
year, month, day);
- date = hildon_touch_picker_get_current_text (HILDON_TOUCH_PICKER (picker));
+ date = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector));
hildon_button_set_value (HILDON_BUTTON (button), date);
}
#define HILDON_DATE_SELECTOR_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), HILDON_TYPE_DATE_SELECTOR, HildonDateSelectorPrivate))
-G_DEFINE_TYPE (HildonDateSelector, hildon_date_selector, HILDON_TYPE_TOUCH_PICKER)
+G_DEFINE_TYPE (HildonDateSelector, hildon_date_selector, HILDON_TYPE_TOUCH_SELECTOR)
#define INIT_YEAR 100
#define LAST_YEAR 50 /* since current year */
static void _get_real_date (gint * year, gint * month, gint * day);
static void _locales_init (HildonDateSelectorPrivate * priv);
-static void _manage_selector_change_cb (HildonTouchPicker * selector,
+static void _manage_selector_change_cb (HildonTouchSelector * selector,
gint num_column, gpointer data);
static GtkTreeModel *_update_day_model (HildonDateSelector * selector);
static gint _month_days (gint month, gint year);
static void _init_column_order (HildonDateSelector * selector);
-static gchar *_custom_print_func (HildonTouchPicker * selector);
+static gchar *_custom_print_func (HildonTouchSelector * selector);
/***************************************************************************/
/* The following date routines are taken from the lib_date package. Keep
GTK_WIDGET_SET_FLAGS (GTK_WIDGET (selector), GTK_NO_WINDOW);
gtk_widget_set_redraw_on_allocate (GTK_WIDGET (selector), FALSE);
- hildon_touch_picker_set_print_func (HILDON_TOUCH_PICKER (selector),
- _custom_print_func);
+ hildon_touch_selector_set_print_func (HILDON_TOUCH_SELECTOR (selector),
+ _custom_print_func);
_locales_init (selector->priv);
switch (current_item) {
case DAY:
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (selector),
- selector->priv->day_model);
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->day_model);
break;
case MONTH:
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (selector),
- selector->priv->month_model);
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->month_model);
break;
case YEAR:
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (selector),
- selector->priv->year_model);
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->year_model);
break;
default:
g_error ("Current column order incorrect");
/* ------------------------------ PRIVATE METHODS ---------------------------- */
static gchar *
-_custom_print_func (HildonTouchPicker * touch_picker)
+_custom_print_func (HildonTouchSelector * touch_selector)
{
HildonDateSelector *selector = NULL;
gchar *result = NULL;
static gchar string[255];
struct tm tm = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- selector = HILDON_DATE_SELECTOR (touch_picker);
+ selector = HILDON_DATE_SELECTOR (touch_selector);
hildon_date_selector_get_date (selector, &year, &month, &day);
day_of_week = _day_of_week (year, month + 1, day) % 7;
hildon_date_selector_get_date (selector, NULL, NULL, ¤t_day);
- hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->month_column, &iter);
+ hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->month_column, &iter);
gtk_tree_model_get (selector->priv->month_model,
&iter, COLUMN_INT, ¤t_month, -1);
- hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->year_column, &iter);
+ hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->year_column, &iter);
gtk_tree_model_get (selector->priv->year_model,
&iter, COLUMN_INT, ¤t_year, -1);
static void
-_manage_selector_change_cb (HildonTouchPicker * touch_picker,
+_manage_selector_change_cb (HildonTouchSelector * touch_selector,
gint num_column, gpointer data)
{
HildonDateSelector *selector = NULL;
- g_return_if_fail (HILDON_IS_DATE_SELECTOR (touch_picker));
- selector = HILDON_DATE_SELECTOR (touch_picker);
+ g_return_if_fail (HILDON_IS_DATE_SELECTOR (touch_selector));
+ selector = HILDON_DATE_SELECTOR (touch_selector);
if ((num_column == selector->priv->month_column) ||
(num_column == selector->priv->year_column)) /* it is required to check that with
gtk_tree_model_iter_nth_child (selector->priv->year_model, &iter, NULL,
year - selector->priv->creation_year +
INIT_YEAR);
- hildon_touch_picker_set_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->year_column, &iter,
- FALSE);
+ hildon_touch_selector_set_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->year_column, &iter,
+ FALSE);
gtk_tree_model_iter_nth_child (selector->priv->month_model, &iter, NULL,
month);
- hildon_touch_picker_set_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->month_column, &iter,
- FALSE);
+ hildon_touch_selector_set_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->month_column, &iter,
+ FALSE);
gtk_tree_model_iter_nth_child (selector->priv->day_model, &iter, NULL,
day - 1);
- hildon_touch_picker_set_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->day_column, &iter,
- FALSE);
+ hildon_touch_selector_set_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->day_column, &iter,
+ FALSE);
return TRUE;
}
GtkTreeIter iter;
if (year != NULL) {
- hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->year_column, &iter);
+ hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->year_column, &iter);
gtk_tree_model_get (selector->priv->year_model,
&iter, COLUMN_INT, year, -1);
}
if (month != NULL) {
- hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->month_column, &iter);
+ hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->month_column, &iter);
gtk_tree_model_get (selector->priv->month_model,
&iter, COLUMN_INT, month, -1);
}
if (day != NULL) {
- if (hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->day_column, &iter))
+ if (hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->day_column, &iter))
{
gtk_tree_model_get (selector->priv->day_model,
&iter, COLUMN_INT, day, -1);
gtk_tree_model_iter_nth_child (selector->priv->day_model, &iter, NULL,
day - 1);
- hildon_touch_picker_set_active_iter (HILDON_TOUCH_PICKER (selector),
- selector->priv->day_column, &iter,
- FALSE);
+ hildon_touch_selector_set_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->day_column, &iter,
+ FALSE);
}
#ifndef __HILDON_DATE_SELECTOR_H__
#define __HILDON_DATE_SELECTOR_H__
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
G_BEGIN_DECLS
#define HILDON_TYPE_DATE_SELECTOR (hildon_date_selector_get_type ())
struct _HildonDateSelector
{
- HildonTouchPicker parent_instance;
+ HildonTouchSelector parent_instance;
/*< private > */
HildonDateSelectorPrivate *priv;
struct _HildonDateSelectorClass
{
- HildonTouchPickerClass parent_class;
+ HildonTouchSelectorClass parent_class;
/* signals */
};
struct _HildonPickerButtonPrivate
{
- GtkWidget *picker;
+ GtkWidget *selector;
GtkWidget *dialog;
};
enum
{
- PROP_PICKER = 1,
+ PROP_SELECTOR = 1,
};
static guint picker_button_signals[LAST_SIGNAL] = { 0 };
GValue * value, GParamSpec * pspec)
{
switch (property_id) {
- case PROP_PICKER:
+ case PROP_SELECTOR:
g_value_set_object (value,
- hildon_picker_button_get_picker (HILDON_PICKER_BUTTON (object)));
+ hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (object)));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
const GValue * value, GParamSpec * pspec)
{
switch (property_id) {
- case PROP_PICKER:
- hildon_picker_button_set_picker (HILDON_PICKER_BUTTON (object),
- g_value_get_object (value));
+ case PROP_SELECTOR:
+ hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (object),
+ g_value_get_object (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
priv = GET_PRIVATE (HILDON_PICKER_BUTTON (button));
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (priv->picker));
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (priv->selector));
/* Create the dialog if it doesn't exist already. */
if (!priv->dialog) {
priv->dialog = hildon_picker_dialog_new (NULL);
}
- hildon_picker_dialog_set_picker (HILDON_PICKER_DIALOG (priv->dialog),
- HILDON_TOUCH_PICKER (priv->picker));
+ hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (priv->dialog),
+ HILDON_TOUCH_SELECTOR (priv->selector));
gtk_window_set_modal (GTK_WINDOW (priv->dialog),
gtk_window_get_modal (GTK_WINDOW (parent)));
switch (response) {
case GTK_RESPONSE_OK:
hildon_button_set_value (HILDON_BUTTON (button),
- hildon_touch_picker_get_current_text
- (HILDON_TOUCH_PICKER (priv->picker)));
+ hildon_touch_selector_get_current_text
+ (HILDON_TOUCH_SELECTOR (priv->selector)));
g_signal_emit (HILDON_PICKER_BUTTON (button),
picker_button_signals[VALUE_CHANGED], 0);
break;
button_class->clicked = hildon_picker_button_clicked;
g_object_class_install_property (object_class,
- PROP_PICKER,
- g_param_spec_object ("touch-picker",
- "HildonTouchPicker widget",
- "HildonTouchPicker widget to be launched on button clicked",
- HILDON_TYPE_TOUCH_PICKER,
+ PROP_SELECTOR,
+ g_param_spec_object ("touch-selector",
+ "HildonTouchSelector widget",
+ "HildonTouchSelector widget to be launched on button clicked",
+ HILDON_TYPE_TOUCH_SELECTOR,
G_PARAM_READWRITE));
picker_button_signals[VALUE_CHANGED] =
priv = GET_PRIVATE (self);
priv->dialog = NULL;
- priv->picker = NULL;
+ priv->selector = NULL;
}
GtkWidget *
hildon_picker_button_new_text (HildonButtonFlags flags)
{
GtkWidget *button;
- GtkWidget *picker;
+ GtkWidget *selector;
GtkListStore *store;
button = hildon_picker_button_new (flags);
- picker = hildon_touch_picker_new ();
+ selector = hildon_touch_selector_new ();
store = gtk_list_store_new (1, G_TYPE_STRING);
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (picker),
- GTK_TREE_MODEL (store));
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ GTK_TREE_MODEL (store));
- hildon_picker_button_set_picker (HILDON_PICKER_BUTTON (button),
- HILDON_TOUCH_PICKER (picker));
+ hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
+ HILDON_TOUCH_SELECTOR (selector));
return button;
}
priv = GET_PRIVATE (button);
model =
- hildon_touch_picker_get_model (HILDON_TOUCH_PICKER (priv->picker), 0);
+ hildon_touch_selector_get_model (HILDON_TOUCH_SELECTOR (priv->selector), 0);
g_return_if_fail (GTK_IS_LIST_STORE (model));
priv = GET_PRIVATE (button);
model =
- hildon_touch_picker_get_model (HILDON_TOUCH_PICKER (priv->picker), 0);
+ hildon_touch_selector_get_model (HILDON_TOUCH_SELECTOR (priv->selector), 0);
g_return_if_fail (GTK_IS_LIST_STORE (model));
priv = GET_PRIVATE (button);
model =
- hildon_touch_picker_get_model (HILDON_TOUCH_PICKER (priv->picker), 0);
+ hildon_touch_selector_get_model (HILDON_TOUCH_SELECTOR (priv->selector), 0);
g_return_if_fail (GTK_IS_LIST_STORE (model));
}
void
-hildon_picker_button_set_picker (HildonPickerButton * button,
- HildonTouchPicker * picker)
+hildon_picker_button_set_selector (HildonPickerButton * button,
+ HildonTouchSelector * selector)
{
HildonPickerButtonPrivate *priv;
g_return_if_fail (HILDON_IS_PICKER_BUTTON (button));
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (picker));
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
priv = GET_PRIVATE (button);
- priv->picker = g_object_ref (picker);
+ priv->selector = g_object_ref (selector);
}
-HildonTouchPicker *
-hildon_picker_button_get_picker (HildonPickerButton * button)
+HildonTouchSelector *
+hildon_picker_button_get_selector (HildonPickerButton * button)
{
HildonPickerButtonPrivate *priv;
priv = GET_PRIVATE (button);
- return HILDON_TOUCH_PICKER (priv->picker);
+ return HILDON_TOUCH_SELECTOR (priv->selector);
}
#include <glib-object.h>
#include "hildon-button.h"
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
G_BEGIN_DECLS
void hildon_picker_button_insert_text (HildonPickerButton * button,
gint position, const gchar * text);
-void hildon_picker_button_set_picker (HildonPickerButton * button,
- HildonTouchPicker * picker);
-HildonTouchPicker *hildon_picker_button_get_picker (HildonPickerButton * button);
+void hildon_picker_button_set_selector (HildonPickerButton * button,
+ HildonTouchSelector * selector);
+HildonTouchSelector *hildon_picker_button_get_selector (HildonPickerButton * button);
G_END_DECLS
/**
* SECTION:hildon-picker-dialog
- * @short_description: A utility widget that shows a #HildonTouchPicker widget
+ * @short_description: A utility widget that shows a #HildonTouchSelector widget
*
- * HildonPickerDialog is a utility widget that shows a #HildonTouchPicker widget in
+ * HildonPickerDialog is a utility widget that shows a #HildonTouchSelector widget in
* a new dialog (see #GtkDialog for more information about this issue)
*
*/
#include <libintl.h>
#include <gtk/gtkmarshal.h>
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
#include "hildon-picker-dialog.h"
#define _(String) dgettext("hildon-libs", String)
struct _HildonPickerDialogPrivate
{
- GtkWidget *picker;
+ GtkWidget *selector;
GtkWidget *separator;
GtkWidget *button;
static gboolean requires_done_button (HildonPickerDialog * dialog);
static void
-_select_on_picker_changed_cb (HildonTouchPicker * dialog,
- gint column, gpointer data);
+_select_on_selector_changed_cb (HildonTouchSelector * dialog,
+ gint column, gpointer data);
static gboolean
-_hildon_picker_dialog_set_picker (HildonPickerDialog * dialog,
- HildonTouchPicker * picker);
+_hildon_picker_dialog_set_selector (HildonPickerDialog * dialog,
+ HildonTouchSelector * selector);
static void
-_update_title_on_picker_changed_cb (HildonTouchPicker * picker,
- gint column, gpointer data);
+_update_title_on_selector_changed_cb (HildonTouchSelector * selector,
+ gint column, gpointer data);
static void
hildon_picker_dialog_class_init (HildonPickerDialogClass * class)
widget_class->realize = hildon_picker_dialog_realize;
/* HildonPickerDialog */
- class->set_picker = _hildon_picker_dialog_set_picker;
+ class->set_selector = _hildon_picker_dialog_set_selector;
/* signals */
dialog->priv = HILDON_PICKER_DIALOG_GET_PRIVATE (dialog);
- dialog->priv->picker = NULL;
+ dialog->priv->selector = NULL;
dialog->priv->button =
gtk_dialog_add_button (GTK_DIALOG (dialog), "", GTK_RESPONSE_OK);
/* ------------------------------ PRIVATE METHODS ---------------------------- */
static void
-_select_on_picker_changed_cb (HildonTouchPicker * picker,
- gint column, gpointer data)
+_select_on_selector_changed_cb (HildonTouchSelector * selector,
+ gint column, gpointer data)
{
HildonPickerDialog *dialog = NULL;
}
static void
-_update_title_on_picker_changed_cb (HildonTouchPicker * picker,
- gint column, gpointer data)
+_update_title_on_selector_changed_cb (HildonTouchSelector * selector,
+ gint column, gpointer data)
{
HildonPickerDialog *dialog = NULL;
gchar *new_title = NULL;
dialog = HILDON_PICKER_DIALOG (data);
- new_title = hildon_touch_picker_get_current_text (picker);
+ new_title = hildon_touch_selector_get_current_text (selector);
if (dialog->priv->title_label != NULL) {
-/* gtk_label_set_text (GTK_LABEL(picker->priv->title_label), new_title); */
+/* gtk_label_set_text (GTK_LABEL(selector->priv->title_label), new_title); */
}
gtk_window_set_title (GTK_WINDOW (dialog), new_title);
requires_done_button (HildonPickerDialog * dialog)
{
gint n_columns = 0;
- HildonTouchPickerSelectionMode mode =
- HILDON_TOUCH_PICKER_SELECTION_MODE_SINGLE;
+ HildonTouchSelectorSelectionMode mode =
+ HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE;
n_columns =
- hildon_touch_picker_get_num_columns (HILDON_TOUCH_PICKER
- (dialog->priv->picker));
+ hildon_touch_selector_get_num_columns (HILDON_TOUCH_SELECTOR
+ (dialog->priv->selector));
mode =
- hildon_touch_picker_get_column_selection_mode (HILDON_TOUCH_PICKER
- (dialog->priv->picker));
+ hildon_touch_selector_get_column_selection_mode (HILDON_TOUCH_SELECTOR
+ (dialog->priv->selector));
return ((n_columns > 1)
- || (mode == HILDON_TOUCH_PICKER_SELECTION_MODE_MULTIPLE));
+ || (mode == HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE));
}
static gboolean
-_hildon_picker_dialog_set_picker (HildonPickerDialog * dialog,
- HildonTouchPicker * picker)
+_hildon_picker_dialog_set_selector (HildonPickerDialog * dialog,
+ HildonTouchSelector * selector)
{
- if (dialog->priv->picker != NULL) {
+ if (dialog->priv->selector != NULL) {
gtk_container_remove (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox),
- dialog->priv->picker);
- g_object_unref (dialog->priv->picker);
- dialog->priv->picker = NULL;
+ dialog->priv->selector);
+ g_object_unref (dialog->priv->selector);
+ dialog->priv->selector = NULL;
}
- dialog->priv->picker = GTK_WIDGET (picker);
+ dialog->priv->selector = GTK_WIDGET (selector);
- if (dialog->priv->picker != NULL) {
+ if (dialog->priv->selector != NULL) {
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
- dialog->priv->picker, TRUE, TRUE, 0);
- gtk_widget_show (dialog->priv->picker);
- g_object_ref (dialog->priv->picker);
+ dialog->priv->selector, TRUE, TRUE, 0);
+ gtk_widget_show (dialog->priv->selector);
+ g_object_ref (dialog->priv->selector);
}
if (dialog->priv->signal_id) {
- g_signal_handler_disconnect (dialog->priv->picker,
+ g_signal_handler_disconnect (dialog->priv->selector,
dialog->priv->signal_id);
}
gtk_widget_show (GTK_DIALOG (dialog)->action_area);
/* update the title */
dialog->priv->signal_id =
- g_signal_connect (G_OBJECT (dialog->priv->picker), "changed",
- G_CALLBACK (_update_title_on_picker_changed_cb),
+ g_signal_connect (G_OBJECT (dialog->priv->selector), "changed",
+ G_CALLBACK (_update_title_on_selector_changed_cb),
dialog);
} else {
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
dialog->priv->signal_id =
- g_signal_connect (G_OBJECT (dialog->priv->picker), "changed",
- G_CALLBACK (_select_on_picker_changed_cb), dialog);
+ g_signal_connect (G_OBJECT (dialog->priv->selector), "changed",
+ G_CALLBACK (_select_on_selector_changed_cb), dialog);
}
return TRUE;
}
gboolean
-hildon_picker_dialog_set_picker (HildonPickerDialog * dialog,
- HildonTouchPicker * picker)
+hildon_picker_dialog_set_selector (HildonPickerDialog * dialog,
+ HildonTouchSelector * selector)
{
g_return_val_if_fail (HILDON_IS_PICKER_DIALOG (dialog), FALSE);
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), FALSE);
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), FALSE);
- return HILDON_PICKER_DIALOG_GET_CLASS (dialog)->set_picker (dialog, picker);
+ return HILDON_PICKER_DIALOG_GET_CLASS (dialog)->set_selector (dialog, selector);
}
-HildonTouchPicker *
-hildon_picker_dialog_get_picker (HildonPickerDialog * dialog)
+HildonTouchSelector *
+hildon_picker_dialog_get_selector (HildonPickerDialog * dialog)
{
g_return_val_if_fail (HILDON_IS_PICKER_DIALOG (dialog), NULL);
- return HILDON_TOUCH_PICKER (dialog->priv->picker);
+ return HILDON_TOUCH_SELECTOR (dialog->priv->selector);
}
{
GtkDialogClass parent_class;
- gboolean (* set_picker) (HildonPickerDialog * dialog,
- HildonTouchPicker * picker);
+ gboolean (* set_selector) (HildonPickerDialog * dialog,
+ HildonTouchSelector * selector);
};
/* construction */
-GType hildon_picker_dialog_get_type (void) G_GNUC_CONST;
-GtkWidget *hildon_picker_dialog_new (GtkWindow * parent);
+GType hildon_picker_dialog_get_type (void) G_GNUC_CONST;
+GtkWidget *hildon_picker_dialog_new (GtkWindow * parent);
-gboolean hildon_picker_dialog_set_picker (HildonPickerDialog * dialog,
- HildonTouchPicker * picker);
-void hildon_picker_dialog_set_done_label (HildonPickerDialog * dialog,
- const gchar * label);
-const gchar *hildon_picker_dialog_get_done_label (HildonPickerDialog *
- dialog);
-HildonTouchPicker *hildon_picker_dialog_get_picker (HildonPickerDialog *
- dialog);
+gboolean hildon_picker_dialog_set_selector (HildonPickerDialog * dialog,
+ HildonTouchSelector * selector);
+void hildon_picker_dialog_set_done_label (HildonPickerDialog * dialog,
+ const gchar * label);
+const gchar *hildon_picker_dialog_get_done_label (HildonPickerDialog * dialog);
+HildonTouchSelector *hildon_picker_dialog_get_selector (HildonPickerDialog * dialog);
G_END_DECLS
*/
#include "hildon-time-selector.h"
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
#include "hildon-picker-button.h"
#include "hildon-time-button.h"
G_DEFINE_TYPE (HildonTimeButton, hildon_time_button, HILDON_TYPE_PICKER_BUTTON)
#if 0
-#define GET_PRIVATE(o) \
+#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), HILDON_TYPE_TIME_BUTTON, HildonTimeButtonPrivate))
typedef struct _HildonTimeButtonPrivate HildonTimeButtonPrivate;
time_selector = hildon_time_selector_new ();
- hildon_picker_button_set_picker (HILDON_PICKER_BUTTON (self),
- HILDON_TOUCH_PICKER (time_selector));
+ hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (self),
+ HILDON_TOUCH_SELECTOR (time_selector));
}
GtkWidget *
hildon_time_button_get_time (HildonTimeButton * button,
guint * hours, guint * minutes)
{
- HildonTouchPicker *picker;
+ HildonTouchSelector *selector;
g_return_if_fail (HILDON_IS_TIME_BUTTON (button));
- picker = hildon_picker_button_get_picker (HILDON_PICKER_BUTTON (button));
+ selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
- hildon_time_selector_get_time (HILDON_TIME_SELECTOR (picker), hours, minutes);
+ hildon_time_selector_get_time (HILDON_TIME_SELECTOR (selector), hours, minutes);
}
void
hildon_time_button_set_time (HildonTimeButton * button,
guint hours, guint minutes)
{
- HildonTouchPicker *picker;
+ HildonTouchSelector *selector;
gchar *time;
g_return_if_fail (HILDON_IS_TIME_BUTTON (button));
- picker = hildon_picker_button_get_picker (HILDON_PICKER_BUTTON (button));
+ selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
- hildon_time_selector_set_time (HILDON_TIME_SELECTOR (picker), hours, minutes);
- time = hildon_touch_picker_get_current_text (HILDON_TOUCH_PICKER (picker));
+ hildon_time_selector_set_time (HILDON_TIME_SELECTOR (selector), hours, minutes);
+ time = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector));
hildon_button_set_value (HILDON_BUTTON (button), time);
}
#define HILDON_TIME_SELECTOR_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), HILDON_TYPE_TIME_SELECTOR, HildonTimeSelectorPrivate))
-G_DEFINE_TYPE (HildonTimeSelector, hildon_time_selector, HILDON_TYPE_TOUCH_PICKER)
+G_DEFINE_TYPE (HildonTimeSelector, hildon_time_selector, HILDON_TYPE_TOUCH_SELECTOR)
#define INIT_YEAR 100
#define LAST_YEAR 50 /* since current year */
static GtkTreeModel *_create_ampm_model (HildonTimeSelector * selector);
static void _get_real_time (gint * hours, gint * minutes);
-static void _manage_ampm_selection_cb (HildonTouchPicker * selector,
+static void _manage_ampm_selection_cb (HildonTouchSelector * selector,
gint num_column, gpointer data);
static void _check_ampm_format (HildonTimeSelector * selector);
static void _set_pm (HildonTimeSelector * selector, gboolean pm);
-static gchar *_custom_print_func (HildonTouchPicker * selector);
+static gchar *_custom_print_func (HildonTouchSelector * selector);
static void
hildon_time_selector_class_init (HildonTimeSelectorClass * class)
GTK_WIDGET_SET_FLAGS (GTK_WIDGET (selector), GTK_NO_WINDOW);
gtk_widget_set_redraw_on_allocate (GTK_WIDGET (selector), FALSE);
- hildon_touch_picker_set_print_func (HILDON_TOUCH_PICKER (selector),
- _custom_print_func);
+ hildon_touch_selector_set_print_func (HILDON_TOUCH_SELECTOR (selector),
+ _custom_print_func);
_get_real_time (&selector->priv->creation_hours,
&selector->priv->creation_minutes);
selector->priv->hours_model = _create_hours_model (selector);
selector->priv->minutes_model = _create_minutes_model (selector);
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (selector),
- selector->priv->hours_model);
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->hours_model);
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (selector),
- selector->priv->minutes_model);
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->minutes_model);
if (selector->priv->ampm_format) {
selector->priv->ampm_model = _create_ampm_model (selector);
- hildon_touch_picker_append_text_column (HILDON_TOUCH_PICKER (selector),
- selector->priv->ampm_model);
+ hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
+ selector->priv->ampm_model);
g_signal_connect (G_OBJECT (selector),
"changed", G_CALLBACK (_manage_ampm_selection_cb),
/* ------------------------------ PRIVATE METHODS ---------------------------- */
static gchar *
-_custom_print_func (HildonTouchPicker * touch_picker)
+_custom_print_func (HildonTouchSelector * touch_selector)
{
gchar *result = NULL;
struct tm tm = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
guint hours = 0;
guint minutes = 0;
- selector = HILDON_TIME_SELECTOR (touch_picker);
+ selector = HILDON_TIME_SELECTOR (touch_selector);
hildon_time_selector_get_time (selector, &hours, &minutes);
}
static void
-_manage_ampm_selection_cb (HildonTouchPicker * touch_picker,
+_manage_ampm_selection_cb (HildonTouchSelector * touch_selector,
gint num_column, gpointer data)
{
HildonTimeSelector *selector = NULL;
gint pm;
GtkTreeIter iter;
- g_return_if_fail (HILDON_IS_TIME_SELECTOR (touch_picker));
- selector = HILDON_TIME_SELECTOR (touch_picker);
+ g_return_if_fail (HILDON_IS_TIME_SELECTOR (touch_selector));
+ selector = HILDON_TIME_SELECTOR (touch_selector);
if (num_column == COLUMN_AMPM) {
- hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- COLUMN_AMPM, &iter);
+ hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ COLUMN_AMPM, &iter);
gtk_tree_model_get (selector->priv->ampm_model, &iter, COLUMN_INT, &pm, -1);
selector->priv->pm = pm;
gtk_tree_model_iter_nth_child (selector->priv->ampm_model, &iter, NULL, pm);
- hildon_touch_picker_set_active_iter (HILDON_TOUCH_PICKER (selector),
- COLUMN_AMPM, &iter, FALSE);
+ hildon_touch_selector_set_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ COLUMN_AMPM, &iter, FALSE);
}
/* ------------------------------ PUBLIC METHODS ---------------------------- */
gtk_tree_model_iter_nth_child (selector->priv->hours_model, &iter, NULL,
hours_item);
- hildon_touch_picker_set_active_iter (HILDON_TOUCH_PICKER (selector),
- COLUMN_HOURS, &iter, FALSE);
+ hildon_touch_selector_set_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ COLUMN_HOURS, &iter, FALSE);
gtk_tree_model_iter_nth_child (selector->priv->minutes_model, &iter, NULL,
minutes);
- hildon_touch_picker_set_active_iter (HILDON_TOUCH_PICKER (selector),
- COLUMN_MINUTES, &iter, FALSE);
+ hildon_touch_selector_set_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ COLUMN_MINUTES, &iter, FALSE);
return TRUE;
}
GtkTreeIter iter;
if (hours != NULL) {
- hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- COLUMN_HOURS, &iter);
+ hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ COLUMN_HOURS, &iter);
gtk_tree_model_get (selector->priv->hours_model,
&iter, COLUMN_INT, hours, -1);
if (selector->priv->ampm_format) {
}
if (minutes != NULL) {
- hildon_touch_picker_get_active_iter (HILDON_TOUCH_PICKER (selector),
- COLUMN_MINUTES, &iter);
+ hildon_touch_selector_get_active_iter (HILDON_TOUCH_SELECTOR (selector),
+ COLUMN_MINUTES, &iter);
gtk_tree_model_get (selector->priv->minutes_model,
&iter, COLUMN_INT, minutes, -1);
}
#ifndef __HILDON_TIME_SELECTOR_H__
#define __HILDON_TIME_SELECTOR_H__
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
G_BEGIN_DECLS
struct _HildonTimeSelector
{
- HildonTouchPicker parent_instance;
+ HildonTouchSelector parent_instance;
/*< private > */
HildonTimeSelectorPrivate *priv;
struct _HildonTimeSelectorClass
{
- HildonTouchPickerClass parent_class;
+ HildonTouchSelectorClass parent_class;
/* signals */
};
+++ /dev/null
-/*
- * This file is a part of hildon
- *
- * Copyright (C) 2005, 2008 Nokia Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version. or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * SECTION:hildon-touch-picker
- * @short_description: A picker widget with several columns
- *
- * HildonTouchPicker is a picker widget, very similar to the #GtkComboBox, but with
- * several individual pannable columns
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-#include "hildon-pannable-area.h"
-#include "hildon-touch-picker.h"
-
-#define HILDON_TOUCH_PICKER_GET_PRIVATE(obj)\
- (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HILDON_TYPE_TOUCH_PICKER, HildonTouchPickerPrivate))
-
-G_DEFINE_TYPE (HildonTouchPicker, hildon_touch_picker, GTK_TYPE_HBOX)
-
-#define CENTER_ON_SELECTED_ITEM_DELAY 50
-
-/**
- * Struct to maintain the data of each column. The columns are the elements
- * of the widget that belongs properly to the selection behaviour. As
- * the picker is a hbox, you can add more widgets, like buttons etc.
- * between the columns, but this doesn't belongs to the selection
- * logic
- */
-typedef struct _PickerColumn PickerColumn;
-struct _PickerColumn
-{
- HildonTouchPicker *parent; /* the picker that contains this column */
- GtkTreeModel *model;
- GtkTreeView *tree_view;
-
- GtkWidget *panarea; /* the pannable widget */
-};
-
-struct _HildonTouchPickerPrivate
-{
- GSList *columns; /* the selection columns */
-
- HildonTouchPickerPrintFunc print_func;
-};
-
-enum
-{
- CHANGED,
- LAST_SIGNAL
-};
-
-static gint hildon_touch_picker_signals[LAST_SIGNAL] = { 0 };
-
-/* gtkwidget */
-static void hildon_touch_picker_map (GtkWidget * widget);
-
-/* gtkcontainer */
-static void hildon_touch_picker_remove (GtkContainer * container,
- GtkWidget * widget);
-/* private functions */
-static void _selection_changed_cb (GtkTreeSelection * selection,
- gpointer user_data);
-static gchar *_default_print_func (HildonTouchPicker * picker);
-
-static PickerColumn *_create_new_column (HildonTouchPicker * picker,
- GtkTreeModel * model,
- GtkCellRenderer * renderer,
- va_list args);
-static gboolean _hildon_touch_picker_center_on_selected_items (gpointer data);
-
-static void
-hildon_touch_picker_class_init (HildonTouchPickerClass * class)
-{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- gobject_class = (GObjectClass *) class;
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
- container_class = (GtkContainerClass *) class;
-
- /* GObject */
-
- /* GtkWidget */
- widget_class->map = hildon_touch_picker_map;
-
- /* GtkContainer */
- container_class->remove = hildon_touch_picker_remove;
-
-
- /* signals */
- /**
- * HildonTouchPicker::changed:
- * @widget: the object which received the signal
- *
- * The changed signal is emitted when the active
- * item is changed. The can be due to the user selecting
- * a different item from the list, or due to a
- * call to hildon_touch_picker_set_active_iter() on
- * one of the columns
- *
- */
- hildon_touch_picker_signals[CHANGED] =
- g_signal_new ("changed",
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (HildonTouchPickerClass, changed),
- NULL, NULL,
- gtk_marshal_NONE__INT, G_TYPE_NONE, 1, G_TYPE_INT);
- /* properties */
-
- /* style properties */
- g_type_class_add_private (object_class, sizeof (HildonTouchPickerPrivate));
-}
-
-
-static void
-hildon_touch_picker_init (HildonTouchPicker * picker)
-{
- picker->priv = HILDON_TOUCH_PICKER_GET_PRIVATE (picker);
-
- GTK_WIDGET_SET_FLAGS (GTK_WIDGET (picker), GTK_NO_WINDOW);
- gtk_widget_set_redraw_on_allocate (GTK_WIDGET (picker), FALSE);
-
- picker->priv->columns = NULL;
-
- picker->priv->print_func = NULL;
-
- /* FIXME: this is the correct height? A fixed height is the correct
- implementation */
- gtk_widget_set_size_request (GTK_WIDGET (picker), -1, 320);
-}
-
-static void
-hildon_touch_picker_map (GtkWidget * widget)
-{
- GTK_WIDGET_CLASS (hildon_touch_picker_parent_class)->map (widget);
-
- g_timeout_add (CENTER_ON_SELECTED_ITEM_DELAY,
- _hildon_touch_picker_center_on_selected_items, widget);
-}
-
-/*------------------------------ GtkContainer ------------------------------ */
-
-/*
- * Required in order to free the column at the columns list
- */
-static void
-hildon_touch_picker_remove (GtkContainer * container, GtkWidget * widget)
-{
- HildonTouchPicker *picker = NULL;
- GSList *iter = NULL;
- gint position = 0;
- PickerColumn *current_column = NULL;
- gint num_columns = 0;
-
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (container));
-
- picker = HILDON_TOUCH_PICKER (container);
- num_columns = hildon_touch_picker_get_num_columns (picker);
-
- /* Check if the widget is inside a column and remove
- it from the list */
- iter = picker->priv->columns;
- position = 0;
- while (iter) {
- current_column = (PickerColumn *) iter->data;
- if (widget == current_column->panarea) {
- current_column = g_slist_nth_data (picker->priv->columns, position);
-
- picker->priv->columns = g_slist_remove (picker->priv->columns,
- current_column);
- g_free (current_column);
-
- break;
- }
-
- position++;
- iter = g_slist_next (iter);
- }
- if (position >= num_columns) {
- g_debug ("This widget was not inside the picker column");
- }
-
- GTK_CONTAINER_CLASS (hildon_touch_picker_parent_class)->remove (container, widget);
-}
-
-/* ------------------------------ PRIVATE METHODS ---------------------------- */
-/**
- * default_print_func:
- * @picker: a #HildonTouchPicker
- *
- * Default print function
- *
- * Returns: a new string that represent the selected items
- **/
-static gchar *
-_default_print_func (HildonTouchPicker * picker)
-{
- gchar *result = NULL;
- gchar *aux = NULL;
- gint num_columns = 0;
- GtkTreeIter iter;
- GtkTreeModel *model = NULL;
- gchar *current_string = NULL;
- gint i;
- HildonTouchPickerSelectionMode mode;
- GList *item = NULL;
- GtkTreePath *current_path = NULL;
- GList *selected_rows = NULL;
- gint initial_value = 0;
-
- num_columns = hildon_touch_picker_get_num_columns (picker);
-
- mode = hildon_touch_picker_get_column_selection_mode (picker);
-
- if ((mode == HILDON_TOUCH_PICKER_SELECTION_MODE_MULTIPLE)
- && (num_columns > 0)) {
- /* In this case we get the first column first */
- selected_rows = hildon_touch_picker_get_selected_rows (picker, 0);
- model = hildon_touch_picker_get_model (picker, 0);
-
- result = g_strdup_printf ("(");
- i = 0;
- for (item = selected_rows; item; item = g_list_next (item)) {
- current_path = item->data;
- gtk_tree_model_get_iter (model, &iter, current_path);
-
- gtk_tree_model_get (model, &iter, 0, ¤t_string, -1);
-
- if (i < g_list_length (selected_rows) - 1) {
- aux = g_strconcat (result, current_string, ",", NULL);
- g_free (result);
- result = aux;
- } else {
- aux = g_strconcat (result, current_string, NULL);
- g_free (result);
- result = aux;
- }
- i++;
- }
-
- aux = g_strconcat (result, ")", NULL);
- g_free (result);
- result = aux;
-
- g_list_foreach (selected_rows, (GFunc) (gtk_tree_path_free), NULL);
- g_list_free (selected_rows);
- initial_value = 1;
- } else {
- initial_value = 0;
- }
-
- for (i = initial_value; i < num_columns; i++) {
- model = hildon_touch_picker_get_model (picker, i);
- if (hildon_touch_picker_get_active_iter (picker, i, &iter)) {
-
- gtk_tree_model_get (model, &iter, 0, ¤t_string, -1);
- if (i != 0) {
- aux = g_strconcat (result, ":", current_string, NULL);
- g_free (result);
- result = aux;
- } else {
- result = g_strdup_printf ("%s", current_string);
- }
- }
- }
-
- return result;
-}
-
-static void
-_selection_changed_cb (GtkTreeSelection * selection, gpointer user_data)
-{
- HildonTouchPicker *picker = NULL;
- PickerColumn *column = NULL;
- gint num_column = -1;
-
- column = (PickerColumn *) user_data;
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (column->parent));
-
- picker = column->parent;
-
- num_column = g_slist_index (picker->priv->columns, column);
-
- g_signal_emit (picker, hildon_touch_picker_signals[CHANGED], 0, num_column);
-}
-
-
-static PickerColumn *
-_create_new_column (HildonTouchPicker * picker,
- GtkTreeModel * model,
- GtkCellRenderer * renderer, va_list args)
-{
- PickerColumn *new_column = NULL;
- GtkTreeViewColumn *tree_column = NULL;
- GValue val = { 0, };
- GtkTreeView *tv = NULL;
- GtkWidget *panarea = NULL;
- GtkTreeSelection *selection = NULL;
- GtkTreeIter iter;
- gchar *attribute;
- gint value;
-
- tree_column = gtk_tree_view_column_new ();
- gtk_tree_view_column_pack_start (tree_column, renderer, TRUE);
-
- attribute = va_arg (args, gchar *);
- while (attribute != NULL) {
- value = va_arg (args, gint);
- gtk_tree_view_column_add_attribute (tree_column, renderer, attribute,
- value);
- attribute = va_arg (args, gchar *);
- }
-
- tv = g_object_new (GTK_TYPE_TREE_VIEW, "model", model, "name", "fremantle-widget", /* FIXME: is this always this name? */
- "hildon-ui-mode", HILDON_UI_MODE_EDIT,
- "rules-hint", TRUE, NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (tv), tree_column);
-
- new_column = (PickerColumn *) g_malloc0 (sizeof (PickerColumn));
- new_column->parent = picker;
-
- panarea = hildon_pannable_area_new ();
-
- g_value_init (&val, G_TYPE_INT);
- g_value_set_int (&val, HILDON_PANNABLE_AREA_INDICATOR_MODE_HIDE);
- g_object_set_property (G_OBJECT (panarea), "vindicator-mode", &val);
-
- g_value_unset (&val);
- g_value_init (&val, G_TYPE_BOOLEAN);
- g_value_set_boolean (&val, FALSE);
- g_object_set_property (G_OBJECT (panarea), "initial-hint", &val);
-
- gtk_container_add (GTK_CONTAINER (panarea), GTK_WIDGET (tv));
-
- new_column->model = model;
- new_column->tree_view = tv;
- new_column->panarea = panarea;
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
-
- /* select the first item */
- if (gtk_tree_model_get_iter_first (model, &iter)) {
- gtk_tree_selection_select_iter (selection, &iter);
- }
-
- gtk_widget_grab_focus (GTK_WIDGET (tv));
-
- /* connect to the changed signal connection */
- g_signal_connect (G_OBJECT (selection), "changed",
- G_CALLBACK (_selection_changed_cb), new_column);
-
- return new_column;
-}
-
-/* ------------------------------ PUBLIC METHODS ---------------------------- */
-
-/**
- * hildon_touch_picker_new:
- * @:
- *
- * Creates a new empty #HildonTouchPicker
- *
- * Returns: a new #HildonTouchPicker
- **/
-GtkWidget *
-hildon_touch_picker_new ()
-{
- return g_object_new (HILDON_TYPE_TOUCH_PICKER, NULL);
-}
-
-/**
- * hildon_touch_picker_append_text_column
- * @picker: the #HildonTouchPicker widget
- * @model: the #GtkTreeModel with the data of the column
- *
- * This functions adds a new column to the widget, with the data on
- * the model. Only the widgets added in this way should used on
- * the selection logic, ie: the print function, the "changed" signal etc.
- *
- * There are a prerequisite on this model: this append
- * consideres that the text data is in the first column of the model
- *
- * Basically it adds a tree view to the widget, using the model and
- * the data received.
- *
- * Returns: TRUE if a new column were added, FALSE otherside
- **/
-gboolean
-hildon_touch_picker_append_column (HildonTouchPicker * picker,
- GtkTreeModel * model,
- GtkCellRenderer * cell_renderer, ...)
-{
- va_list args;
- PickerColumn *new_column = NULL;
-
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), FALSE);
- g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
-
- if (model != NULL) {
-
- va_start (args, cell_renderer);
- new_column = _create_new_column (picker, model, cell_renderer, args);
- va_end (args);
-
- picker->priv->columns = g_slist_append (picker->priv->columns,
- new_column);
- gtk_box_pack_start (GTK_BOX (picker), new_column->panarea, TRUE, TRUE, 6);
-
- gtk_widget_show_all (new_column->panarea);
- } else {
- return FALSE;
- }
-
- return TRUE;
-}
-
-/**
- * hildon_touch_picker_append_text_column
- * @picker: the #HildonTouchPicker widget
- * @model: the #GtkTreeModel with the data of the column
- *
- * Equivalent to hildon_touch_picker_append_column, but using a
- * default text cell renderer. This is the most common use of the
- * widget.
- *
- * Returns: TRUE if a new column were added, FALSE otherside
- **/
-gboolean
-hildon_touch_picker_append_text_column (HildonTouchPicker * picker,
- GtkTreeModel * model)
-{
- GtkCellRenderer *renderer = NULL;
- GValue val = { 0, };
-
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), FALSE);
- g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
-
- if (model != NULL) {
- renderer = gtk_cell_renderer_text_new ();
-
- g_value_init (&val, G_TYPE_FLOAT);
- g_value_set_float (&val, 0.5);
- /* FIXME: center the text, this should be configurable */
- g_object_set_property (G_OBJECT (renderer), "xalign", &val);
-
- return hildon_touch_picker_append_column (picker, model, renderer,
- "text", 0, NULL);
- } else {
- return FALSE;
- }
-}
-
-/**
- * hildon_touch_picker_remove_column
- * @picker: a #HildonTouchPicker
- * @position: the column position to remove, counting from 0 to (total column number - 1)
- *
- *
- * Returns: TRUE is the column was removed, FALSE otherwise
- **/
-gboolean
-hildon_touch_picker_remove_column (HildonTouchPicker * picker, gint position)
-{
- PickerColumn *current_column = NULL;
-
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), FALSE);
- g_return_val_if_fail (position <
- hildon_touch_picker_get_num_columns (picker), FALSE);
-
- current_column = g_slist_nth_data (picker->priv->columns, position);
-
- gtk_container_remove (GTK_CONTAINER (picker), current_column->panarea);
-
- return TRUE;
-}
-
-void
-hildon_touch_picker_set_column_attributes (HildonTouchPicker * picker,
- gint num_column,
- GtkCellRenderer * cell_renderer,
- ...)
-{
- va_list args;
- GtkTreeViewColumn *tree_column = NULL;
- PickerColumn *current_column = NULL;
- gchar *attribute = NULL;
- gint value = 0;
-
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (picker));
- g_return_if_fail (num_column <
- hildon_touch_picker_get_num_columns (picker));
-
- current_column = g_slist_nth_data (picker->priv->columns, num_column);
-
- tree_column = gtk_tree_view_get_column (current_column->tree_view, 0);
- gtk_tree_view_remove_column (current_column->tree_view, tree_column);
-
- tree_column = gtk_tree_view_column_new ();
- gtk_tree_view_column_pack_start (tree_column, cell_renderer, TRUE);
-
- va_start (args, cell_renderer);
- attribute = va_arg (args, gchar *);
-
- gtk_tree_view_column_clear_attributes (tree_column, cell_renderer);
-
- while (attribute != NULL) {
- value = va_arg (args, gint);
- gtk_tree_view_column_add_attribute (tree_column, cell_renderer,
- attribute, value);
- attribute = va_arg (args, gchar *);
- }
-
- va_end (args);
-
- gtk_tree_view_append_column (current_column->tree_view, tree_column);
-}
-
-gboolean
-hildon_touch_picker_insert_column (HildonTouchPicker * picker, gint position)
-{
- g_warning ("Un-implemented!");
-
- return TRUE;
-}
-
-gint
-hildon_touch_picker_get_num_columns (HildonTouchPicker * picker)
-{
- return g_slist_length (picker->priv->columns);
-}
-
-HildonTouchPickerSelectionMode
-hildon_touch_picker_get_column_selection_mode (HildonTouchPicker * picker)
-{
- HildonTouchPickerSelectionMode result =
- HILDON_TOUCH_PICKER_SELECTION_MODE_SINGLE;
- GtkSelectionMode treeview_mode = GTK_SELECTION_SINGLE;
- PickerColumn *column = NULL;
- GtkTreeSelection *selection = NULL;
-
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), result);
- g_return_val_if_fail (hildon_touch_picker_get_num_columns (picker) > 0,
- result);
-
- column = (PickerColumn *) picker->priv->columns->data;
-
- selection = gtk_tree_view_get_selection (column->tree_view);
- treeview_mode = gtk_tree_selection_get_mode (selection);
-
-
- if (treeview_mode == GTK_SELECTION_MULTIPLE) {
- result = HILDON_TOUCH_PICKER_SELECTION_MODE_MULTIPLE;
- } else {
- result = HILDON_TOUCH_PICKER_SELECTION_MODE_SINGLE;
- }
-
- return result;
-}
-
-void
-hildon_touch_picker_set_column_selection_mode (HildonTouchPicker * picker,
- HildonTouchPickerSelectionMode
- mode)
-{
- GtkTreeView *tv = NULL;
- PickerColumn *column = NULL;
- GtkTreeSelection *selection = NULL;
- GtkSelectionMode treeview_mode;
- GtkTreeIter iter;
-
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (picker));
- g_return_if_fail (hildon_touch_picker_get_num_columns (picker) > 0);
-
- column = (PickerColumn *) (g_slist_nth (picker->priv->columns, 0))->data;
- tv = column->tree_view;
-
- if (tv) {
- switch (mode) {
- case HILDON_TOUCH_PICKER_SELECTION_MODE_SINGLE:
- treeview_mode = GTK_SELECTION_SINGLE;
- break;
- case HILDON_TOUCH_PICKER_SELECTION_MODE_MULTIPLE:
- treeview_mode = GTK_SELECTION_MULTIPLE;
- break;
- }
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv));
- gtk_tree_selection_set_mode (selection, treeview_mode);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv));
- gtk_tree_model_get_iter_first (column->model, &iter);
- gtk_tree_selection_unselect_all (selection);
- gtk_tree_selection_select_iter (selection, &iter);
- }
-
-}
-
-void
-hildon_touch_picker_set_print_func (HildonTouchPicker * picker,
- HildonTouchPickerPrintFunc func)
-{
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (picker));
-
- picker->priv->print_func = func;
-}
-
-HildonTouchPickerPrintFunc
-hildon_touch_picker_get_print_func (HildonTouchPicker * picker)
-{
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), NULL);
-
- return picker->priv->print_func;
-}
-
-/**
- * hildon_touch_picker_get_active_iter:
- * @picker: a #HildonTouchPicker
- * @column: the column number we want to get the element
- * @iter: #GtkTreeIter currently selected
- *
- * Sets iter to the currently selected node on the nth-column, if selection is set to
- * HILDON_TOUCH_PICKER_SINGLE. iter may be NULL if you just want to test if selection
- * has any selected nodes.
- *
- * This function will not work if you use selection is HILDON_TOUCH_PICKER_MULTIPLE.
- *
- * See gtk_tree_selection_get_selected for more information
- *
- * Returns: TRUE if was posible to get the iter, FALSE otherwise
- **/
-gboolean
-hildon_touch_picker_get_active_iter (HildonTouchPicker * picker,
- gint column, GtkTreeIter * iter)
-{
- GtkTreeSelection *selection = NULL;
- PickerColumn *current_column = NULL;
-
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), FALSE);
- g_return_val_if_fail (hildon_touch_picker_get_column_selection_mode (picker)
- == HILDON_TOUCH_PICKER_SELECTION_MODE_SINGLE, FALSE);
- g_return_val_if_fail (column < hildon_touch_picker_get_num_columns (picker),
- FALSE);
-
- current_column = g_slist_nth_data (picker->priv->columns, column);
-
- selection =
- gtk_tree_view_get_selection (GTK_TREE_VIEW (current_column->tree_view));
-
- return gtk_tree_selection_get_selected (selection, NULL, iter);
-}
-
-/**
- * hildon_touch_picker_set_active_iter
- * @picker: a #HildonTouchPicker
- * @column: the column to selects
- * @iter: the #GtkTreeIter to be selected
- *
- * Sets the current iter
- *
- **/
-void
-hildon_touch_picker_set_active_iter (HildonTouchPicker * picker,
- gint column, GtkTreeIter * iter,
- gboolean scroll_to)
-{
- GtkTreePath *path;
- GtkTreeModel *model;
- GdkRectangle rect;
- PickerColumn *current_column = NULL;
- GtkTreeSelection *selection = NULL;
- gint y;
-
- g_return_if_fail (HILDON_IS_TOUCH_PICKER (picker));
- g_return_if_fail (column < hildon_touch_picker_get_num_columns (picker));
-
- current_column = g_slist_nth_data (picker->priv->columns, column);
-
- selection = gtk_tree_view_get_selection (current_column->tree_view);
-
- gtk_tree_selection_select_iter (selection, iter);
-
- if (scroll_to) {
- model = gtk_tree_view_get_model (current_column->tree_view);
- path = gtk_tree_model_get_path (model, iter);
- gtk_tree_view_get_background_area (current_column->tree_view,
- path, NULL, &rect);
- gtk_tree_view_convert_bin_window_to_tree_coords (current_column->tree_view,
- 0, rect.y, NULL, &y);
- hildon_pannable_area_scroll_to (HILDON_PANNABLE_AREA (current_column->panarea),
- -1, y);
- gtk_tree_path_free (path);
- }
-}
-
-/**
- * hildon_touch_picker_get_selected_rows:
- * @picker: a #HildonTouchPicker
- * @column:
- *
- * Creates a list of path of all selected rows at a concrete column. Additionally,
- * if you are planning on modifying the model after calling this function, you may
- * want to convert the returned list into a list of GtkTreeRowReferences. To do this,
- * you can use gtk_tree_row_reference_new().
- *
- * See #GtkTreeSelection:gtk_tree_selection_get_selected_rows for more information
- *
- * Returns: A new GList containing a GtkTreePath for each selected row in the concrete column
- *
- **/
-GList *
-hildon_touch_picker_get_selected_rows (HildonTouchPicker * picker,
- gint column)
-{
- GList *result = NULL;
- PickerColumn *current_column = NULL;
- GtkTreeSelection *selection = NULL;
-
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), NULL);
- g_return_val_if_fail (column < hildon_touch_picker_get_num_columns (picker),
- NULL);
-
- current_column = g_slist_nth_data (picker->priv->columns, column);
- selection = gtk_tree_view_get_selection (current_column->tree_view);
-
- result = gtk_tree_selection_get_selected_rows (selection, NULL);
-
-
- return result;
-}
-
-GtkTreeModel *
-hildon_touch_picker_get_model (HildonTouchPicker * picker, gint column)
-{
- PickerColumn *current_column = NULL;
-
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), NULL);
- g_return_val_if_fail (column < hildon_touch_picker_get_num_columns (picker),
- NULL);
-
- current_column = g_slist_nth_data (picker->priv->columns, column);
-
- return current_column->model;
-}
-
-void
-hildon_touch_picker_set_model (HildonTouchPicker * picker,
- gint num_column, GtkTreeModel * model)
-{
- PickerColumn *column = NULL;
-
- g_return_if_fail (HILDON_TOUCH_PICKER (picker));
- g_return_if_fail (num_column <
- hildon_touch_picker_get_num_columns (picker));
-
- column =
- (PickerColumn *) g_slist_nth_data (picker->priv->columns, num_column);
-
- column->model = model;
- gtk_tree_view_set_model (column->tree_view, column->model);
-}
-
-/**
- * hildon_touch_picker_get_active_text
- * @picker: the #HildonTouchPicker
- *
- * It return a new gchar that represents the current element(s) selected,
- * using the current print_func.
- *
- * Returns: a new allocated gchar*
- **/
-gchar *
-hildon_touch_picker_get_current_text (HildonTouchPicker * picker)
-{
- gchar *result = NULL;
- g_return_val_if_fail (HILDON_IS_TOUCH_PICKER (picker), NULL);
-
- if (picker->priv->print_func) {
- result = (*picker->priv->print_func) (picker);
- } else {
- result = _default_print_func (picker);
- }
-
- return result;
-}
-
-static gboolean
-_hildon_touch_picker_center_on_selected_items (gpointer data)
-{
- HildonTouchPicker *picker = NULL;
- PickerColumn *column = NULL;
- GSList *iter_column = NULL;
- GtkTreeIter iter;
- GtkTreePath *path;
- GdkRectangle rect;
- gint y;
- gint i;
- HildonTouchPickerSelectionMode selection_mode;
-
- /* ensure to center on the initial values */
- picker = HILDON_TOUCH_PICKER (data);
-
- selection_mode = hildon_touch_picker_get_column_selection_mode (picker);
-
- iter_column = picker->priv->columns;
- i = 0;
- while (iter_column) {
- column = (PickerColumn *) iter_column->data;
-
- if ((i == 0)
- && (selection_mode == HILDON_TOUCH_PICKER_SELECTION_MODE_MULTIPLE)) {
- break;
- }
- if (hildon_touch_picker_get_active_iter (picker, i, &iter)) {
- path = gtk_tree_model_get_path (column->model, &iter);
- gtk_tree_view_get_background_area (GTK_TREE_VIEW
- (column->tree_view), path, NULL,
- &rect);
-
- gtk_tree_view_convert_bin_window_to_tree_coords (GTK_TREE_VIEW
- (column->tree_view), 0,
- rect.y, NULL, &y);
-
- hildon_pannable_area_scroll_to (HILDON_PANNABLE_AREA
- (column->panarea), -1, y);
-
- gtk_tree_path_free (path);
- }
- iter_column = iter_column->next;
- i++;
- }
-
- return FALSE;
-}
+++ /dev/null
-/*
- * This file is a part of hildon
- *
- * Copyright (C) 2005, 2008 Nokia Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version. or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __HILDON_TOUCH_PICKER_H__
-#define __HILDON_TOUCH_PICKER_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define HILDON_TYPE_TOUCH_PICKER (hildon_touch_picker_get_type ())
-#define HILDON_TOUCH_PICKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), HILDON_TYPE_TOUCH_PICKER, HildonTouchPicker))
-#define HILDON_TOUCH_PICKER_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), HILDON_TYPE_TOUCH_PICKER, HildonTouchPickerClass))
-#define HILDON_IS_TOUCH_PICKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), HILDON_TYPE_TOUCH_PICKER))
-#define HILDON_IS_TOUCH_PICKER_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), HILDON_TYPE_TOUCH_PICKER))
-#define HILDON_TOUCH_PICKER_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), HILDON_TYPE_TOUCH_PICKER, HildonTouchPickerClass))
-
-typedef struct _HildonTouchPicker HildonTouchPicker;
-typedef struct _HildonTouchPickerClass HildonTouchPickerClass;
-typedef struct _HildonTouchPickerPrivate HildonTouchPickerPrivate;
-
-typedef gchar *(*HildonTouchPickerPrintFunc) (HildonTouchPicker * picker);
-
-struct _HildonTouchPicker
-{
- GtkHBox parent_instance;
-
- /*< private > */
- HildonTouchPickerPrivate *priv;
-};
-
-struct _HildonTouchPickerClass
-{
- GtkHBoxClass parent_class;
-
- /* signals */
- void (*changed) (HildonTouchPicker * picker, gint column);
-};
-
-typedef enum
-{
- HILDON_TOUCH_PICKER_SELECTION_MODE_SINGLE,
- HILDON_TOUCH_PICKER_SELECTION_MODE_MULTIPLE
-} HildonTouchPickerSelectionMode;
-
-/* construction */
-GType hildon_touch_picker_get_type (void) G_GNUC_CONST;
-GtkWidget *hildon_touch_picker_new (void);
-
-/* column related */
-gboolean hildon_touch_picker_append_text_column (HildonTouchPicker * picker,
- GtkTreeModel * model);
-
-gboolean hildon_touch_picker_append_column (HildonTouchPicker * picker,
- GtkTreeModel * model,
- GtkCellRenderer * cell_renderer,
- ...);
-
-void hildon_touch_picker_set_column_attributes (HildonTouchPicker * picker,
- gint column,
- GtkCellRenderer * cell_renderer,
- ...);
-
-gboolean hildon_touch_picker_remove_column (HildonTouchPicker * picker,
- gint column);
-
-gint hildon_touch_picker_get_num_columns (HildonTouchPicker * picker);
-
-void hildon_touch_picker_set_column_selection_mode (HildonTouchPicker * picker,
- HildonTouchPickerSelectionMode mode);
-
-HildonTouchPickerSelectionMode
-hildon_touch_picker_get_column_selection_mode (HildonTouchPicker * picker);
-
-/* get/set active item */
-gboolean hildon_touch_picker_get_active_iter (HildonTouchPicker * picker,
- gint column,
- GtkTreeIter * iter);
-void hildon_touch_picker_set_active_iter (HildonTouchPicker * picker,
- gint column,
- GtkTreeIter * iter,
- gboolean scroll_to);
-GList *hildon_touch_picker_get_selected_rows (HildonTouchPicker * picker,
- gint column);
-/* model */
-void hildon_touch_picker_set_model (HildonTouchPicker * picker,
- gint column, GtkTreeModel * model);
-GtkTreeModel *hildon_touch_picker_get_model (HildonTouchPicker * picker,
- gint column);
-
-/* show the current element selected */
-gchar *hildon_touch_picker_get_current_text (HildonTouchPicker * picker);
-
-void hildon_touch_picker_set_print_func (HildonTouchPicker * picker,
- HildonTouchPickerPrintFunc func);
-
-HildonTouchPickerPrintFunc
-hildon_touch_picker_get_print_func (HildonTouchPicker * picker);
-
-G_END_DECLS
-
-#endif /* __HILDON_TOUCH_PICKER_H__ */
--- /dev/null
+/*
+ * This file is a part of hildon
+ *
+ * Copyright (C) 2005, 2008 Nokia Corporation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version. or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/**
+ * SECTION:hildon-touch-selector
+ * @short_description: A selector widget with several columns
+ *
+ * HildonTouchSelector is a selector widget, very similar to the #GtkComboBox, but with
+ * several individual pannable columns
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+#include "hildon-pannable-area.h"
+#include "hildon-touch-selector.h"
+
+#define HILDON_TOUCH_SELECTOR_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HILDON_TYPE_TOUCH_SELECTOR, HildonTouchSelectorPrivate))
+
+G_DEFINE_TYPE (HildonTouchSelector, hildon_touch_selector, GTK_TYPE_HBOX)
+
+#define CENTER_ON_SELECTED_ITEM_DELAY 50
+
+/**
+ * Struct to maintain the data of each column. The columns are the elements
+ * of the widget that belongs properly to the selection behaviour. As
+ * the selector is a hbox, you can add more widgets, like buttons etc.
+ * between the columns, but this doesn't belongs to the selection
+ * logic
+ */
+typedef struct _SelectorColumn SelectorColumn;
+struct _SelectorColumn
+{
+ HildonTouchSelector *parent; /* the selector that contains this column */
+ GtkTreeModel *model;
+ GtkTreeView *tree_view;
+
+ GtkWidget *panarea; /* the pannable widget */
+};
+
+struct _HildonTouchSelectorPrivate
+{
+ GSList *columns; /* the selection columns */
+
+ HildonTouchSelectorPrintFunc print_func;
+};
+
+enum
+{
+ CHANGED,
+ LAST_SIGNAL
+};
+
+static gint hildon_touch_selector_signals[LAST_SIGNAL] = { 0 };
+
+/* gtkwidget */
+static void hildon_touch_selector_map (GtkWidget * widget);
+
+/* gtkcontainer */
+static void hildon_touch_selector_remove (GtkContainer * container,
+ GtkWidget * widget);
+/* private functions */
+static void _selection_changed_cb (GtkTreeSelection * selection,
+ gpointer user_data);
+static gchar *_default_print_func (HildonTouchSelector * selector);
+
+static SelectorColumn *_create_new_column (HildonTouchSelector * selector,
+ GtkTreeModel * model,
+ GtkCellRenderer * renderer,
+ va_list args);
+static gboolean _hildon_touch_selector_center_on_selected_items (gpointer data);
+
+static void
+hildon_touch_selector_class_init (HildonTouchSelectorClass * class)
+{
+ GObjectClass *gobject_class;
+ GtkObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+ GtkContainerClass *container_class;
+
+ gobject_class = (GObjectClass *) class;
+ object_class = (GtkObjectClass *) class;
+ widget_class = (GtkWidgetClass *) class;
+ container_class = (GtkContainerClass *) class;
+
+ /* GObject */
+
+ /* GtkWidget */
+ widget_class->map = hildon_touch_selector_map;
+
+ /* GtkContainer */
+ container_class->remove = hildon_touch_selector_remove;
+
+
+ /* signals */
+ /**
+ * HildonTouchSelector::changed:
+ * @widget: the object which received the signal
+ *
+ * The changed signal is emitted when the active
+ * item is changed. The can be due to the user selecting
+ * a different item from the list, or due to a
+ * call to hildon_touch_selector_set_active_iter() on
+ * one of the columns
+ *
+ */
+ hildon_touch_selector_signals[CHANGED] =
+ g_signal_new ("changed",
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (HildonTouchSelectorClass, changed),
+ NULL, NULL,
+ gtk_marshal_NONE__INT, G_TYPE_NONE, 1, G_TYPE_INT);
+ /* properties */
+
+ /* style properties */
+ g_type_class_add_private (object_class, sizeof (HildonTouchSelectorPrivate));
+}
+
+
+static void
+hildon_touch_selector_init (HildonTouchSelector * selector)
+{
+ selector->priv = HILDON_TOUCH_SELECTOR_GET_PRIVATE (selector);
+
+ GTK_WIDGET_SET_FLAGS (GTK_WIDGET (selector), GTK_NO_WINDOW);
+ gtk_widget_set_redraw_on_allocate (GTK_WIDGET (selector), FALSE);
+
+ selector->priv->columns = NULL;
+
+ selector->priv->print_func = NULL;
+
+ /* FIXME: this is the correct height? A fixed height is the correct
+ implementation */
+ gtk_widget_set_size_request (GTK_WIDGET (selector), -1, 320);
+}
+
+static void
+hildon_touch_selector_map (GtkWidget * widget)
+{
+ GTK_WIDGET_CLASS (hildon_touch_selector_parent_class)->map (widget);
+
+ g_timeout_add (CENTER_ON_SELECTED_ITEM_DELAY,
+ _hildon_touch_selector_center_on_selected_items, widget);
+}
+
+/*------------------------------ GtkContainer ------------------------------ */
+
+/*
+ * Required in order to free the column at the columns list
+ */
+static void
+hildon_touch_selector_remove (GtkContainer * container, GtkWidget * widget)
+{
+ HildonTouchSelector *selector = NULL;
+ GSList *iter = NULL;
+ gint position = 0;
+ SelectorColumn *current_column = NULL;
+ gint num_columns = 0;
+
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (container));
+
+ selector = HILDON_TOUCH_SELECTOR (container);
+ num_columns = hildon_touch_selector_get_num_columns (selector);
+
+ /* Check if the widget is inside a column and remove
+ it from the list */
+ iter = selector->priv->columns;
+ position = 0;
+ while (iter) {
+ current_column = (SelectorColumn *) iter->data;
+ if (widget == current_column->panarea) {
+ current_column = g_slist_nth_data (selector->priv->columns, position);
+
+ selector->priv->columns = g_slist_remove (selector->priv->columns,
+ current_column);
+ g_free (current_column);
+
+ break;
+ }
+
+ position++;
+ iter = g_slist_next (iter);
+ }
+ if (position >= num_columns) {
+ g_debug ("This widget was not inside the selector column");
+ }
+
+ GTK_CONTAINER_CLASS (hildon_touch_selector_parent_class)->remove (container, widget);
+}
+
+/* ------------------------------ PRIVATE METHODS ---------------------------- */
+/**
+ * default_print_func:
+ * @selector: a #HildonTouchSelector
+ *
+ * Default print function
+ *
+ * Returns: a new string that represent the selected items
+ **/
+static gchar *
+_default_print_func (HildonTouchSelector * selector)
+{
+ gchar *result = NULL;
+ gchar *aux = NULL;
+ gint num_columns = 0;
+ GtkTreeIter iter;
+ GtkTreeModel *model = NULL;
+ gchar *current_string = NULL;
+ gint i;
+ HildonTouchSelectorSelectionMode mode;
+ GList *item = NULL;
+ GtkTreePath *current_path = NULL;
+ GList *selected_rows = NULL;
+ gint initial_value = 0;
+
+ num_columns = hildon_touch_selector_get_num_columns (selector);
+
+ mode = hildon_touch_selector_get_column_selection_mode (selector);
+
+ if ((mode == HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE)
+ && (num_columns > 0)) {
+ /* In this case we get the first column first */
+ selected_rows = hildon_touch_selector_get_selected_rows (selector, 0);
+ model = hildon_touch_selector_get_model (selector, 0);
+
+ result = g_strdup_printf ("(");
+ i = 0;
+ for (item = selected_rows; item; item = g_list_next (item)) {
+ current_path = item->data;
+ gtk_tree_model_get_iter (model, &iter, current_path);
+
+ gtk_tree_model_get (model, &iter, 0, ¤t_string, -1);
+
+ if (i < g_list_length (selected_rows) - 1) {
+ aux = g_strconcat (result, current_string, ",", NULL);
+ g_free (result);
+ result = aux;
+ } else {
+ aux = g_strconcat (result, current_string, NULL);
+ g_free (result);
+ result = aux;
+ }
+ i++;
+ }
+
+ aux = g_strconcat (result, ")", NULL);
+ g_free (result);
+ result = aux;
+
+ g_list_foreach (selected_rows, (GFunc) (gtk_tree_path_free), NULL);
+ g_list_free (selected_rows);
+ initial_value = 1;
+ } else {
+ initial_value = 0;
+ }
+
+ for (i = initial_value; i < num_columns; i++) {
+ model = hildon_touch_selector_get_model (selector, i);
+ if (hildon_touch_selector_get_active_iter (selector, i, &iter)) {
+
+ gtk_tree_model_get (model, &iter, 0, ¤t_string, -1);
+ if (i != 0) {
+ aux = g_strconcat (result, ":", current_string, NULL);
+ g_free (result);
+ result = aux;
+ } else {
+ result = g_strdup_printf ("%s", current_string);
+ }
+ }
+ }
+
+ return result;
+}
+
+static void
+_selection_changed_cb (GtkTreeSelection * selection, gpointer user_data)
+{
+ HildonTouchSelector *selector = NULL;
+ SelectorColumn *column = NULL;
+ gint num_column = -1;
+
+ column = (SelectorColumn *) user_data;
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (column->parent));
+
+ selector = column->parent;
+
+ num_column = g_slist_index (selector->priv->columns, column);
+
+ g_signal_emit (selector, hildon_touch_selector_signals[CHANGED], 0, num_column);
+}
+
+
+static SelectorColumn *
+_create_new_column (HildonTouchSelector * selector,
+ GtkTreeModel * model,
+ GtkCellRenderer * renderer, va_list args)
+{
+ SelectorColumn *new_column = NULL;
+ GtkTreeViewColumn *tree_column = NULL;
+ GValue val = { 0, };
+ GtkTreeView *tv = NULL;
+ GtkWidget *panarea = NULL;
+ GtkTreeSelection *selection = NULL;
+ GtkTreeIter iter;
+ gchar *attribute;
+ gint value;
+
+ tree_column = gtk_tree_view_column_new ();
+ gtk_tree_view_column_pack_start (tree_column, renderer, TRUE);
+
+ attribute = va_arg (args, gchar *);
+ while (attribute != NULL) {
+ value = va_arg (args, gint);
+ gtk_tree_view_column_add_attribute (tree_column, renderer, attribute,
+ value);
+ attribute = va_arg (args, gchar *);
+ }
+
+ tv = g_object_new (GTK_TYPE_TREE_VIEW, "model", model, "name", "fremantle-widget", /* FIXME: is this always this name? */
+ "hildon-ui-mode", HILDON_UI_MODE_EDIT,
+ "rules-hint", TRUE, NULL);
+
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tv), tree_column);
+
+ new_column = (SelectorColumn *) g_malloc0 (sizeof (SelectorColumn));
+ new_column->parent = selector;
+
+ panarea = hildon_pannable_area_new ();
+
+ g_value_init (&val, G_TYPE_INT);
+ g_value_set_int (&val, HILDON_PANNABLE_AREA_INDICATOR_MODE_HIDE);
+ g_object_set_property (G_OBJECT (panarea), "vindicator-mode", &val);
+
+ g_value_unset (&val);
+ g_value_init (&val, G_TYPE_BOOLEAN);
+ g_value_set_boolean (&val, FALSE);
+ g_object_set_property (G_OBJECT (panarea), "initial-hint", &val);
+
+ gtk_container_add (GTK_CONTAINER (panarea), GTK_WIDGET (tv));
+
+ new_column->model = model;
+ new_column->tree_view = tv;
+ new_column->panarea = panarea;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
+
+ /* select the first item */
+ if (gtk_tree_model_get_iter_first (model, &iter)) {
+ gtk_tree_selection_select_iter (selection, &iter);
+ }
+
+ gtk_widget_grab_focus (GTK_WIDGET (tv));
+
+ /* connect to the changed signal connection */
+ g_signal_connect (G_OBJECT (selection), "changed",
+ G_CALLBACK (_selection_changed_cb), new_column);
+
+ return new_column;
+}
+
+/* ------------------------------ PUBLIC METHODS ---------------------------- */
+
+/**
+ * hildon_touch_selector_new:
+ * @:
+ *
+ * Creates a new empty #HildonTouchSelector
+ *
+ * Returns: a new #HildonTouchSelector
+ **/
+GtkWidget *
+hildon_touch_selector_new ()
+{
+ return g_object_new (HILDON_TYPE_TOUCH_SELECTOR, NULL);
+}
+
+/**
+ * hildon_touch_selector_append_text_column
+ * @selector: the #HildonTouchSelector widget
+ * @model: the #GtkTreeModel with the data of the column
+ *
+ * This functions adds a new column to the widget, with the data on
+ * the model. Only the widgets added in this way should used on
+ * the selection logic, ie: the print function, the "changed" signal etc.
+ *
+ * There are a prerequisite on this model: this append
+ * consideres that the text data is in the first column of the model
+ *
+ * Basically it adds a tree view to the widget, using the model and
+ * the data received.
+ *
+ * Returns: TRUE if a new column were added, FALSE otherside
+ **/
+gboolean
+hildon_touch_selector_append_column (HildonTouchSelector * selector,
+ GtkTreeModel * model,
+ GtkCellRenderer * cell_renderer, ...)
+{
+ va_list args;
+ SelectorColumn *new_column = NULL;
+
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), FALSE);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
+
+ if (model != NULL) {
+
+ va_start (args, cell_renderer);
+ new_column = _create_new_column (selector, model, cell_renderer, args);
+ va_end (args);
+
+ selector->priv->columns = g_slist_append (selector->priv->columns,
+ new_column);
+ gtk_box_pack_start (GTK_BOX (selector), new_column->panarea, TRUE, TRUE, 6);
+
+ gtk_widget_show_all (new_column->panarea);
+ } else {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**
+ * hildon_touch_selector_append_text_column
+ * @selector: the #HildonTouchSelector widget
+ * @model: the #GtkTreeModel with the data of the column
+ *
+ * Equivalent to hildon_touch_selector_append_column, but using a
+ * default text cell renderer. This is the most common use of the
+ * widget.
+ *
+ * Returns: TRUE if a new column were added, FALSE otherside
+ **/
+gboolean
+hildon_touch_selector_append_text_column (HildonTouchSelector * selector,
+ GtkTreeModel * model)
+{
+ GtkCellRenderer *renderer = NULL;
+ GValue val = { 0, };
+
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), FALSE);
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
+
+ if (model != NULL) {
+ renderer = gtk_cell_renderer_text_new ();
+
+ g_value_init (&val, G_TYPE_FLOAT);
+ g_value_set_float (&val, 0.5);
+ /* FIXME: center the text, this should be configurable */
+ g_object_set_property (G_OBJECT (renderer), "xalign", &val);
+
+ return hildon_touch_selector_append_column (selector, model, renderer,
+ "text", 0, NULL);
+ } else {
+ return FALSE;
+ }
+}
+
+/**
+ * hildon_touch_selector_remove_column
+ * @selector: a #HildonTouchSelector
+ * @position: the column position to remove, counting from 0 to (total column number - 1)
+ *
+ *
+ * Returns: TRUE is the column was removed, FALSE otherwise
+ **/
+gboolean
+hildon_touch_selector_remove_column (HildonTouchSelector * selector, gint position)
+{
+ SelectorColumn *current_column = NULL;
+
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), FALSE);
+ g_return_val_if_fail (position <
+ hildon_touch_selector_get_num_columns (selector), FALSE);
+
+ current_column = g_slist_nth_data (selector->priv->columns, position);
+
+ gtk_container_remove (GTK_CONTAINER (selector), current_column->panarea);
+
+ return TRUE;
+}
+
+void
+hildon_touch_selector_set_column_attributes (HildonTouchSelector * selector,
+ gint num_column,
+ GtkCellRenderer * cell_renderer,
+ ...)
+{
+ va_list args;
+ GtkTreeViewColumn *tree_column = NULL;
+ SelectorColumn *current_column = NULL;
+ gchar *attribute = NULL;
+ gint value = 0;
+
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
+ g_return_if_fail (num_column <
+ hildon_touch_selector_get_num_columns (selector));
+
+ current_column = g_slist_nth_data (selector->priv->columns, num_column);
+
+ tree_column = gtk_tree_view_get_column (current_column->tree_view, 0);
+ gtk_tree_view_remove_column (current_column->tree_view, tree_column);
+
+ tree_column = gtk_tree_view_column_new ();
+ gtk_tree_view_column_pack_start (tree_column, cell_renderer, TRUE);
+
+ va_start (args, cell_renderer);
+ attribute = va_arg (args, gchar *);
+
+ gtk_tree_view_column_clear_attributes (tree_column, cell_renderer);
+
+ while (attribute != NULL) {
+ value = va_arg (args, gint);
+ gtk_tree_view_column_add_attribute (tree_column, cell_renderer,
+ attribute, value);
+ attribute = va_arg (args, gchar *);
+ }
+
+ va_end (args);
+
+ gtk_tree_view_append_column (current_column->tree_view, tree_column);
+}
+
+gboolean
+hildon_touch_selector_insert_column (HildonTouchSelector * selector, gint position)
+{
+ g_warning ("Un-implemented!");
+
+ return TRUE;
+}
+
+gint
+hildon_touch_selector_get_num_columns (HildonTouchSelector * selector)
+{
+ return g_slist_length (selector->priv->columns);
+}
+
+HildonTouchSelectorSelectionMode
+hildon_touch_selector_get_column_selection_mode (HildonTouchSelector * selector)
+{
+ HildonTouchSelectorSelectionMode result =
+ HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE;
+ GtkSelectionMode treeview_mode = GTK_SELECTION_SINGLE;
+ SelectorColumn *column = NULL;
+ GtkTreeSelection *selection = NULL;
+
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), result);
+ g_return_val_if_fail (hildon_touch_selector_get_num_columns (selector) > 0,
+ result);
+
+ column = (SelectorColumn *) selector->priv->columns->data;
+
+ selection = gtk_tree_view_get_selection (column->tree_view);
+ treeview_mode = gtk_tree_selection_get_mode (selection);
+
+
+ if (treeview_mode == GTK_SELECTION_MULTIPLE) {
+ result = HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE;
+ } else {
+ result = HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE;
+ }
+
+ return result;
+}
+
+void
+hildon_touch_selector_set_column_selection_mode (HildonTouchSelector * selector,
+ HildonTouchSelectorSelectionMode
+ mode)
+{
+ GtkTreeView *tv = NULL;
+ SelectorColumn *column = NULL;
+ GtkTreeSelection *selection = NULL;
+ GtkSelectionMode treeview_mode;
+ GtkTreeIter iter;
+
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
+ g_return_if_fail (hildon_touch_selector_get_num_columns (selector) > 0);
+
+ column = (SelectorColumn *) (g_slist_nth (selector->priv->columns, 0))->data;
+ tv = column->tree_view;
+
+ if (tv) {
+ switch (mode) {
+ case HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE:
+ treeview_mode = GTK_SELECTION_SINGLE;
+ break;
+ case HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE:
+ treeview_mode = GTK_SELECTION_MULTIPLE;
+ break;
+ }
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv));
+ gtk_tree_selection_set_mode (selection, treeview_mode);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv));
+ gtk_tree_model_get_iter_first (column->model, &iter);
+ gtk_tree_selection_unselect_all (selection);
+ gtk_tree_selection_select_iter (selection, &iter);
+ }
+
+}
+
+void
+hildon_touch_selector_set_print_func (HildonTouchSelector * selector,
+ HildonTouchSelectorPrintFunc func)
+{
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
+
+ selector->priv->print_func = func;
+}
+
+HildonTouchSelectorPrintFunc
+hildon_touch_selector_get_print_func (HildonTouchSelector * selector)
+{
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), NULL);
+
+ return selector->priv->print_func;
+}
+
+/**
+ * hildon_touch_selector_get_active_iter:
+ * @selector: a #HildonTouchSelector
+ * @column: the column number we want to get the element
+ * @iter: #GtkTreeIter currently selected
+ *
+ * Sets iter to the currently selected node on the nth-column, if selection is set to
+ * HILDON_TOUCH_SELECTOR_SINGLE. iter may be NULL if you just want to test if selection
+ * has any selected nodes.
+ *
+ * This function will not work if you use selection is HILDON_TOUCH_SELECTOR_MULTIPLE.
+ *
+ * See gtk_tree_selection_get_selected for more information
+ *
+ * Returns: TRUE if was posible to get the iter, FALSE otherwise
+ **/
+gboolean
+hildon_touch_selector_get_active_iter (HildonTouchSelector * selector,
+ gint column, GtkTreeIter * iter)
+{
+ GtkTreeSelection *selection = NULL;
+ SelectorColumn *current_column = NULL;
+
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), FALSE);
+ g_return_val_if_fail (hildon_touch_selector_get_column_selection_mode (selector)
+ == HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE, FALSE);
+ g_return_val_if_fail (column < hildon_touch_selector_get_num_columns (selector),
+ FALSE);
+
+ current_column = g_slist_nth_data (selector->priv->columns, column);
+
+ selection =
+ gtk_tree_view_get_selection (GTK_TREE_VIEW (current_column->tree_view));
+
+ return gtk_tree_selection_get_selected (selection, NULL, iter);
+}
+
+/**
+ * hildon_touch_selector_set_active_iter
+ * @selector: a #HildonTouchSelector
+ * @column: the column to selects
+ * @iter: the #GtkTreeIter to be selected
+ *
+ * Sets the current iter
+ *
+ **/
+void
+hildon_touch_selector_set_active_iter (HildonTouchSelector * selector,
+ gint column, GtkTreeIter * iter,
+ gboolean scroll_to)
+{
+ GtkTreePath *path;
+ GtkTreeModel *model;
+ GdkRectangle rect;
+ SelectorColumn *current_column = NULL;
+ GtkTreeSelection *selection = NULL;
+ gint y;
+
+ g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
+ g_return_if_fail (column < hildon_touch_selector_get_num_columns (selector));
+
+ current_column = g_slist_nth_data (selector->priv->columns, column);
+
+ selection = gtk_tree_view_get_selection (current_column->tree_view);
+
+ gtk_tree_selection_select_iter (selection, iter);
+
+ if (scroll_to) {
+ model = gtk_tree_view_get_model (current_column->tree_view);
+ path = gtk_tree_model_get_path (model, iter);
+ gtk_tree_view_get_background_area (current_column->tree_view,
+ path, NULL, &rect);
+ gtk_tree_view_convert_bin_window_to_tree_coords (current_column->tree_view,
+ 0, rect.y, NULL, &y);
+ hildon_pannable_area_scroll_to (HILDON_PANNABLE_AREA (current_column->panarea),
+ -1, y);
+ gtk_tree_path_free (path);
+ }
+}
+
+/**
+ * hildon_touch_selector_get_selected_rows:
+ * @selector: a #HildonTouchSelector
+ * @column:
+ *
+ * Creates a list of path of all selected rows at a concrete column. Additionally,
+ * if you are planning on modifying the model after calling this function, you may
+ * want to convert the returned list into a list of GtkTreeRowReferences. To do this,
+ * you can use gtk_tree_row_reference_new().
+ *
+ * See #GtkTreeSelection:gtk_tree_selection_get_selected_rows for more information
+ *
+ * Returns: A new GList containing a GtkTreePath for each selected row in the concrete column
+ *
+ **/
+GList *
+hildon_touch_selector_get_selected_rows (HildonTouchSelector * selector,
+ gint column)
+{
+ GList *result = NULL;
+ SelectorColumn *current_column = NULL;
+ GtkTreeSelection *selection = NULL;
+
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), NULL);
+ g_return_val_if_fail (column < hildon_touch_selector_get_num_columns (selector),
+ NULL);
+
+ current_column = g_slist_nth_data (selector->priv->columns, column);
+ selection = gtk_tree_view_get_selection (current_column->tree_view);
+
+ result = gtk_tree_selection_get_selected_rows (selection, NULL);
+
+
+ return result;
+}
+
+GtkTreeModel *
+hildon_touch_selector_get_model (HildonTouchSelector * selector, gint column)
+{
+ SelectorColumn *current_column = NULL;
+
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), NULL);
+ g_return_val_if_fail (column < hildon_touch_selector_get_num_columns (selector),
+ NULL);
+
+ current_column = g_slist_nth_data (selector->priv->columns, column);
+
+ return current_column->model;
+}
+
+void
+hildon_touch_selector_set_model (HildonTouchSelector * selector,
+ gint num_column, GtkTreeModel * model)
+{
+ SelectorColumn *column = NULL;
+
+ g_return_if_fail (HILDON_TOUCH_SELECTOR (selector));
+ g_return_if_fail (num_column <
+ hildon_touch_selector_get_num_columns (selector));
+
+ column =
+ (SelectorColumn *) g_slist_nth_data (selector->priv->columns, num_column);
+
+ column->model = model;
+ gtk_tree_view_set_model (column->tree_view, column->model);
+}
+
+/**
+ * hildon_touch_selector_get_active_text
+ * @selector: the #HildonTouchSelector
+ *
+ * It return a new gchar that represents the current element(s) selected,
+ * using the current print_func.
+ *
+ * Returns: a new allocated gchar*
+ **/
+gchar *
+hildon_touch_selector_get_current_text (HildonTouchSelector * selector)
+{
+ gchar *result = NULL;
+ g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), NULL);
+
+ if (selector->priv->print_func) {
+ result = (*selector->priv->print_func) (selector);
+ } else {
+ result = _default_print_func (selector);
+ }
+
+ return result;
+}
+
+static gboolean
+_hildon_touch_selector_center_on_selected_items (gpointer data)
+{
+ HildonTouchSelector *selector = NULL;
+ SelectorColumn *column = NULL;
+ GSList *iter_column = NULL;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+ GdkRectangle rect;
+ gint y;
+ gint i;
+ HildonTouchSelectorSelectionMode selection_mode;
+
+ /* ensure to center on the initial values */
+ selector = HILDON_TOUCH_SELECTOR (data);
+
+ selection_mode = hildon_touch_selector_get_column_selection_mode (selector);
+
+ iter_column = selector->priv->columns;
+ i = 0;
+ while (iter_column) {
+ column = (SelectorColumn *) iter_column->data;
+
+ if ((i == 0)
+ && (selection_mode == HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE)) {
+ break;
+ }
+ if (hildon_touch_selector_get_active_iter (selector, i, &iter)) {
+ path = gtk_tree_model_get_path (column->model, &iter);
+ gtk_tree_view_get_background_area (GTK_TREE_VIEW
+ (column->tree_view), path, NULL,
+ &rect);
+
+ gtk_tree_view_convert_bin_window_to_tree_coords (GTK_TREE_VIEW
+ (column->tree_view), 0,
+ rect.y, NULL, &y);
+
+ hildon_pannable_area_scroll_to (HILDON_PANNABLE_AREA
+ (column->panarea), -1, y);
+
+ gtk_tree_path_free (path);
+ }
+ iter_column = iter_column->next;
+ i++;
+ }
+
+ return FALSE;
+}
--- /dev/null
+/*
+ * This file is a part of hildon
+ *
+ * Copyright (C) 2005, 2008 Nokia Corporation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version. or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __HILDON_TOUCH_SELECTOR_H__
+#define __HILDON_TOUCH_SELECTOR_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define HILDON_TYPE_TOUCH_SELECTOR (hildon_touch_selector_get_type ())
+#define HILDON_TOUCH_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), HILDON_TYPE_TOUCH_SELECTOR, HildonTouchSelector))
+#define HILDON_TOUCH_SELECTOR_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), HILDON_TYPE_TOUCH_SELECTOR, HildonTouchSelectorClass))
+#define HILDON_IS_TOUCH_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), HILDON_TYPE_TOUCH_SELECTOR))
+#define HILDON_IS_TOUCH_SELECTOR_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), HILDON_TYPE_TOUCH_SELECTOR))
+#define HILDON_TOUCH_SELECTOR_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), HILDON_TYPE_TOUCH_SELECTOR, HildonTouchSelectorClass))
+
+typedef struct _HildonTouchSelector HildonTouchSelector;
+typedef struct _HildonTouchSelectorClass HildonTouchSelectorClass;
+typedef struct _HildonTouchSelectorPrivate HildonTouchSelectorPrivate;
+
+typedef gchar *(*HildonTouchSelectorPrintFunc) (HildonTouchSelector * selector);
+
+struct _HildonTouchSelector
+{
+ GtkHBox parent_instance;
+
+ /*< private > */
+ HildonTouchSelectorPrivate *priv;
+};
+
+struct _HildonTouchSelectorClass
+{
+ GtkHBoxClass parent_class;
+
+ /* signals */
+ void (*changed) (HildonTouchSelector * selector, gint column);
+};
+
+typedef enum
+{
+ HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE,
+ HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE
+} HildonTouchSelectorSelectionMode;
+
+/* construction */
+GType hildon_touch_selector_get_type (void) G_GNUC_CONST;
+GtkWidget *hildon_touch_selector_new (void);
+
+/* column related */
+gboolean hildon_touch_selector_append_text_column (HildonTouchSelector * selector,
+ GtkTreeModel * model);
+
+gboolean hildon_touch_selector_append_column (HildonTouchSelector * selector,
+ GtkTreeModel * model,
+ GtkCellRenderer * cell_renderer,
+ ...);
+
+void hildon_touch_selector_set_column_attributes (HildonTouchSelector * selector,
+ gint column,
+ GtkCellRenderer * cell_renderer,
+ ...);
+
+gboolean hildon_touch_selector_remove_column (HildonTouchSelector * selector,
+ gint column);
+
+gint hildon_touch_selector_get_num_columns (HildonTouchSelector * selector);
+
+void hildon_touch_selector_set_column_selection_mode (HildonTouchSelector * selector,
+ HildonTouchSelectorSelectionMode mode);
+
+HildonTouchSelectorSelectionMode
+hildon_touch_selector_get_column_selection_mode (HildonTouchSelector * selector);
+
+/* get/set active item */
+gboolean hildon_touch_selector_get_active_iter (HildonTouchSelector * selector,
+ gint column,
+ GtkTreeIter * iter);
+void hildon_touch_selector_set_active_iter (HildonTouchSelector * selector,
+ gint column,
+ GtkTreeIter * iter,
+ gboolean scroll_to);
+GList *hildon_touch_selector_get_selected_rows (HildonTouchSelector * selector,
+ gint column);
+/* model */
+void hildon_touch_selector_set_model (HildonTouchSelector * selector,
+ gint column, GtkTreeModel * model);
+GtkTreeModel *hildon_touch_selector_get_model (HildonTouchSelector * selector,
+ gint column);
+
+/* show the current element selected */
+gchar *hildon_touch_selector_get_current_text (HildonTouchSelector * selector);
+
+void hildon_touch_selector_set_print_func (HildonTouchSelector * selector,
+ HildonTouchSelectorPrintFunc func);
+
+HildonTouchSelectorPrintFunc
+hildon_touch_selector_get_print_func (HildonTouchSelector * selector);
+
+G_END_DECLS
+
+#endif /* __HILDON_TOUCH_SELECTOR_H__ */
#include "hildon-time-picker.h"
#include "hildon-date-selector.h"
#include "hildon-time-selector.h"
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
#include "hildon-picker-dialog.h"
#include "hildon-picker-button.h"
#include "hildon-date-button.h"