2008-07-30 Claudio Saavedra <csaavedra@igalia.com>
authorClaudio Saavedra <csaavedra@igalia.com>
Wed, 30 Jul 2008 23:43:07 +0000 (23:43 +0000)
committerClaudio Saavedra <csaavedra@igalia.com>
Wed, 30 Jul 2008 23:43:07 +0000 (23:43 +0000)
* 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.

23 files changed:
ChangeLog
doc/hildon-docs.sgml
doc/hildon.types
examples/Makefile.am
examples/hildon-picker-button-multicolumn-example.c
examples/hildon-touch-picker-example.c [deleted file]
examples/hildon-touch-selector-example.c [new file with mode: 0644]
src/Makefile.am
src/hildon-date-button.c
src/hildon-date-selector.c
src/hildon-date-selector.h
src/hildon-picker-button.c
src/hildon-picker-button.h
src/hildon-picker-dialog.c
src/hildon-picker-dialog.h
src/hildon-time-button.c
src/hildon-time-selector.c
src/hildon-time-selector.h
src/hildon-touch-picker.c [deleted file]
src/hildon-touch-picker.h [deleted file]
src/hildon-touch-selector.c [new file with mode: 0644]
src/hildon-touch-selector.h [new file with mode: 0644]
src/hildon.h

index fb229a6..1ecab6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,87 @@
+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
index 56c5cdc..30c9a7a 100644 (file)
@@ -43,7 +43,7 @@
     <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"/>
index c5a848f..c680ff8 100644 (file)
@@ -39,7 +39,7 @@
 #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>
@@ -84,7 +84,7 @@ hildon_stackable_window_get_type
 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
index fd79497..f99ceab 100644 (file)
@@ -54,7 +54,7 @@ noinst_PROGRAMS                               = hildon-window-example                         \
                                          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)
@@ -322,8 +322,8 @@ hildon_time_button_example_CFLAGS   = $(HILDON_OBJ_CFLAGS)
 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
index 179a41b..01ce000 100644 (file)
 #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);
 
@@ -45,8 +45,8 @@ create_touch_picker (void)
   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);
 
@@ -59,9 +59,9 @@ create_touch_picker (void)
   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
@@ -77,7 +77,7 @@ main (int argc, char **args)
   HildonProgram *program = NULL;
   GtkWidget *window = NULL;
   GtkWidget *button;
-  GtkWidget *picker;
+  GtkWidget *selector;
 
   gtk_init (&argc, &args);
 
@@ -87,12 +87,12 @@ main (int argc, char **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);
 
diff --git a/examples/hildon-touch-picker-example.c b/examples/hildon-touch-picker-example.c
deleted file mode 100644 (file)
index 2dbc60f..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * 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;
-}
diff --git a/examples/hildon-touch-selector-example.c b/examples/hildon-touch-selector-example.c
new file mode 100644 (file)
index 0000000..29e558a
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * 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;
+}
index aeaf189..46d41be 100644 (file)
@@ -38,7 +38,7 @@ libhildon_@API_VERSION_MAJOR@_la_SOURCES              = hildon-private.c                              \
                                                          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                          \
@@ -110,7 +110,7 @@ libhildon_@API_VERSION_MAJOR@_public_headers                = hildon-banner.h                               \
                                                          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                          \
index be09eff..0252bfe 100644 (file)
@@ -15,7 +15,7 @@
  */
 
 #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"
 
@@ -74,8 +74,8 @@ hildon_date_button_init (HildonDateButton * self)
 
   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 *
@@ -91,29 +91,29 @@ void
 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);
 }
index df70519..a27ef38 100644 (file)
@@ -48,7 +48,7 @@
 #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 */
@@ -101,7 +101,7 @@ static GtkTreeModel *_create_month_model (HildonDateSelector * selector);
 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);
@@ -109,7 +109,7 @@ 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
@@ -222,8 +222,8 @@ hildon_date_selector_init (HildonDateSelector * selector)
   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);
 
@@ -243,16 +243,16 @@ hildon_date_selector_init (HildonDateSelector * selector)
 
     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");
@@ -290,7 +290,7 @@ hildon_date_selector_finalize (GObject * object)
 
 /* ------------------------------ PRIVATE METHODS ---------------------------- */
 static gchar *
-_custom_print_func (HildonTouchPicker * touch_picker)
+_custom_print_func (HildonTouchSelector * touch_selector)
 {
   HildonDateSelector *selector = NULL;
   gchar *result = NULL;
@@ -299,7 +299,7 @@ _custom_print_func (HildonTouchPicker * touch_picker)
   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;
@@ -514,13 +514,13 @@ _update_day_model (HildonDateSelector * selector)
 
   hildon_date_selector_get_date (selector, NULL, NULL, &current_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, &current_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, &current_year, -1);
 
@@ -573,13 +573,13 @@ _get_real_date (gint * year, gint * month, gint * day)
 
 
 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
@@ -654,21 +654,21 @@ hildon_date_selector_select_current_date (HildonDateSelector * selector,
   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;
 }
@@ -692,23 +692,23 @@ hildon_date_selector_get_date (HildonDateSelector * selector,
   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);
@@ -726,7 +726,7 @@ hildon_date_selector_select_day (HildonDateSelector * selector, guint day)
 
   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);
 }
index b0a3255..d92d29a 100644 (file)
@@ -21,7 +21,7 @@
 #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 ())
@@ -37,7 +37,7 @@ typedef struct _HildonDateSelectorPrivate HildonDateSelectorPrivate;
 
 struct _HildonDateSelector
 {
-  HildonTouchPicker parent_instance;
+  HildonTouchSelector parent_instance;
 
   /*< private > */
   HildonDateSelectorPrivate *priv;
@@ -45,7 +45,7 @@ struct _HildonDateSelector
 
 struct _HildonDateSelectorClass
 {
-  HildonTouchPickerClass parent_class;
+  HildonTouchSelectorClass parent_class;
 
   /* signals */
 };
index 6c8dd18..ffdc4f2 100644 (file)
@@ -26,7 +26,7 @@ typedef struct _HildonPickerButtonPrivate HildonPickerButtonPrivate;
 
 struct _HildonPickerButtonPrivate
 {
-  GtkWidget *picker;
+  GtkWidget *selector;
   GtkWidget *dialog;
 };
 
@@ -39,7 +39,7 @@ enum
 
 enum
 {
-  PROP_PICKER = 1,
+  PROP_SELECTOR = 1,
 };
 
 static guint picker_button_signals[LAST_SIGNAL] = { 0 };
@@ -49,9 +49,9 @@ hildon_picker_button_get_property (GObject * object, guint property_id,
                                    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);
@@ -63,9 +63,9 @@ hildon_picker_button_set_property (GObject * object, guint property_id,
                                    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);
@@ -81,7 +81,7 @@ hildon_picker_button_clicked (GtkButton * button)
 
   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) {
@@ -92,8 +92,8 @@ hildon_picker_button_clicked (GtkButton * button)
       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)));
@@ -105,8 +105,8 @@ hildon_picker_button_clicked (GtkButton * button)
   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;
@@ -128,11 +128,11 @@ hildon_picker_button_class_init (HildonPickerButtonClass * klass)
   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] =
@@ -152,7 +152,7 @@ hildon_picker_button_init (HildonPickerButton * self)
   priv = GET_PRIVATE (self);
 
   priv->dialog = NULL;
-  priv->picker = NULL;
+  priv->selector = NULL;
 }
 
 GtkWidget *
@@ -170,19 +170,19 @@ 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;
 }
@@ -201,7 +201,7 @@ hildon_picker_button_append_text (HildonPickerButton * 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));
 
@@ -223,7 +223,7 @@ hildon_picker_button_prepend_text (HildonPickerButton * 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));
 
@@ -246,7 +246,7 @@ hildon_picker_button_insert_text (HildonPickerButton * 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));
 
@@ -255,21 +255,21 @@ hildon_picker_button_insert_text (HildonPickerButton * button,
 }
 
 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;
 
@@ -277,5 +277,5 @@ hildon_picker_button_get_picker (HildonPickerButton * button)
 
   priv = GET_PRIVATE (button);
 
-  return HILDON_TOUCH_PICKER (priv->picker);
+  return HILDON_TOUCH_SELECTOR (priv->selector);
 }
index ef3d82f..650e41a 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <glib-object.h>
 #include "hildon-button.h"
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
 
 G_BEGIN_DECLS
 
@@ -51,9 +51,9 @@ void hildon_picker_button_prepend_text   (HildonPickerButton * button,
 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
 
index 0df3d54..4b90066 100644 (file)
@@ -20,9 +20,9 @@
 
 /**
  * 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)
  *
  */
@@ -37,7 +37,7 @@
 #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)
@@ -48,7 +48,7 @@ G_DEFINE_TYPE (HildonPickerDialog, hildon_picker_dialog, GTK_TYPE_DIALOG)
 
 struct _HildonPickerDialogPrivate
 {
-  GtkWidget *picker;
+  GtkWidget *selector;
   GtkWidget *separator;
   GtkWidget *button;
 
@@ -90,16 +90,16 @@ static void hildon_picker_dialog_realize (GtkWidget * widget);
 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)
@@ -122,7 +122,7 @@ 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 */
 
@@ -153,7 +153,7 @@ hildon_picker_dialog_init (HildonPickerDialog * dialog)
 
   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);
 
@@ -222,8 +222,8 @@ hildon_picker_dialog_realize (GtkWidget * widget)
 
 /* ------------------------------ 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;
 
@@ -235,8 +235,8 @@ _select_on_picker_changed_cb (HildonTouchPicker * picker,
 }
 
 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;
@@ -245,10 +245,10 @@ _update_title_on_picker_changed_cb (HildonTouchPicker * picker,
 
   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);
 
@@ -286,18 +286,18 @@ static gboolean
 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));
 }
 
 
@@ -327,27 +327,27 @@ hildon_picker_dialog_new (GtkWindow * parent)
 
 
 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);
   }
 
@@ -356,34 +356,34 @@ _hildon_picker_dialog_set_picker (HildonPickerDialog * dialog,
     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);
 }
index 79cf3c8..e108f7d 100644 (file)
@@ -48,22 +48,20 @@ struct _HildonPickerDialogClass
 {
   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
 
index 227a385..b2926cf 100644 (file)
  */
 
 #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;
 
@@ -73,8 +73,8 @@ hildon_time_button_init (HildonTimeButton * self)
 
   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 *
@@ -88,28 +88,28 @@ void
 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);
 }
index bf5de06..3d60531 100644 (file)
@@ -49,7 +49,7 @@
 #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 */
@@ -98,12 +98,12 @@ static GtkTreeModel *_create_minutes_model (HildonTimeSelector * selector);
 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)
@@ -139,8 +139,8 @@ hildon_time_selector_init (HildonTimeSelector * selector)
   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);
@@ -150,17 +150,17 @@ hildon_time_selector_init (HildonTimeSelector * selector)
   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),
@@ -189,7 +189,7 @@ hildon_time_selector_finalize (GObject * object)
 /* ------------------------------ 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 };
@@ -198,7 +198,7 @@ _custom_print_func (HildonTouchPicker * touch_picker)
   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);
 
@@ -307,19 +307,19 @@ _get_real_time (gint * hours, gint * 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;
@@ -355,8 +355,8 @@ _set_pm (HildonTimeSelector * selector, gboolean 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 ---------------------------- */
@@ -403,13 +403,13 @@ hildon_time_selector_set_time (HildonTimeSelector * selector,
 
   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;
 }
@@ -421,8 +421,8 @@ hildon_time_selector_get_time (HildonTimeSelector * selector,
   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) {
@@ -431,8 +431,8 @@ hildon_time_selector_get_time (HildonTimeSelector * selector,
   }
 
   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);
   }
index dedb095..9e37e0c 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef __HILDON_TIME_SELECTOR_H__
 #define __HILDON_TIME_SELECTOR_H__
 
-#include "hildon-touch-picker.h"
+#include "hildon-touch-selector.h"
 
 G_BEGIN_DECLS
 
@@ -38,7 +38,7 @@ typedef struct _HildonTimeSelectorPrivate HildonTimeSelectorPrivate;
 
 struct _HildonTimeSelector
 {
-  HildonTouchPicker parent_instance;
+  HildonTouchSelector parent_instance;
 
   /*< private > */
   HildonTimeSelectorPrivate *priv;
@@ -46,7 +46,7 @@ struct _HildonTimeSelector
 
 struct _HildonTimeSelectorClass
 {
-  HildonTouchPickerClass parent_class;
+  HildonTouchSelectorClass parent_class;
 
   /* signals */
 };
diff --git a/src/hildon-touch-picker.c b/src/hildon-touch-picker.c
deleted file mode 100644 (file)
index 61162a3..0000000
+++ /dev/null
@@ -1,863 +0,0 @@
-/*
- * 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, &current_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, &current_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;
-}
diff --git a/src/hildon-touch-picker.h b/src/hildon-touch-picker.h
deleted file mode 100644 (file)
index d8fab57..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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__ */
diff --git a/src/hildon-touch-selector.c b/src/hildon-touch-selector.c
new file mode 100644 (file)
index 0000000..10a1c36
--- /dev/null
@@ -0,0 +1,863 @@
+/*
+ * 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, &current_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, &current_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;
+}
diff --git a/src/hildon-touch-selector.h b/src/hildon-touch-selector.h
new file mode 100644 (file)
index 0000000..0306fcb
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * 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__ */
index 363b826..30a7941 100644 (file)
@@ -56,7 +56,7 @@
 #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"