2009-03-19 Alejandro G. Castro <alex@igalia.com>
[hildon] / src / hildon-date-button.c
index 2a7044e..a27b996 100644 (file)
  *
  */
 
+#include <libintl.h>
+
 #include "hildon-date-button.h"
 #include "hildon-date-selector.h"
 #include "hildon-touch-selector.h"
+#include "hildon-picker-button-private.h"
+
+#define                                         _(String) \
+                                                dgettext("hildon-libs", String)
+
+#define                                         c_(String) \
+                                                dgettext("hildon-common-strings", String)
 
 /**
  * SECTION:hildon-date-button
@@ -88,6 +97,19 @@ hildon_date_button_init (HildonDateButton * self)
                                      HILDON_TOUCH_SELECTOR (date_selector));
 }
 
+static GtkWidget *
+hildon_date_button_new_full (HildonSizeType           size,
+                             HildonButtonArrangement  arrangement,
+                             GtkWidget               *selector)
+{
+  return g_object_new (HILDON_TYPE_DATE_BUTTON,
+                       "title", _("wdgt_ti_date"),
+                       "arrangement", arrangement,
+                       "size", size,
+                       "touch-selector", selector,
+                       NULL);
+}
+
 /**
  * hildon_date_button_new:
  * @size: One of #HildonSizeType
@@ -104,11 +126,8 @@ GtkWidget *
 hildon_date_button_new (HildonSizeType          size,
                         HildonButtonArrangement arrangement)
 {
-  return g_object_new (HILDON_TYPE_DATE_BUTTON,
-                       "title", _("wdgt_ti_date"),
-                       "arrangement", arrangement,
-                       "size", size,
-                       NULL);
+  GtkWidget *selector = hildon_date_selector_new ();
+  return hildon_date_button_new_full (size, arrangement, selector);
 }
 
 /**
@@ -131,15 +150,9 @@ hildon_date_button_new_with_year_range (HildonSizeType size,
                                         gint min_year,
                                         gint max_year)
 {
-  GtkWidget *button;
   GtkWidget *selector;
-
-  button = hildon_date_button_new (size, arrangement);
   selector = hildon_date_selector_new_with_year_range (min_year, max_year);
-  hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
-                                     HILDON_TOUCH_SELECTOR (selector));
-
-  return button;
+  return hildon_date_button_new_full (size, arrangement, selector);
 }
 
 /**
@@ -163,6 +176,8 @@ hildon_date_button_get_date (HildonDateButton * button,
 
   selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
 
+  g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
+
   hildon_date_selector_get_date (HILDON_DATE_SELECTOR (selector), year, month, day);
 }
 
@@ -189,11 +204,18 @@ hildon_date_button_set_date (HildonDateButton * button,
 
   selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
 
+  g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
+
+  hildon_picker_button_disable_value_changed (HILDON_PICKER_BUTTON (button), TRUE);
   hildon_date_selector_select_current_date (HILDON_DATE_SELECTOR (selector),
                                             year, month, day);
+  hildon_picker_button_disable_value_changed (HILDON_PICKER_BUTTON (button), FALSE);
+
   date = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector));
 
   hildon_button_set_value (HILDON_BUTTON (button), date);
 
   g_free (date);
+
+  hildon_picker_button_value_changed (HILDON_PICKER_BUTTON (button));
 }