2009-03-12 Alberto Garcia <agarcia@igalia.com>
authorAlberto Garcia <agarcia@igalia.com>
Thu, 12 Mar 2009 16:13:08 +0000 (16:13 +0000)
committerAlberto Garcia <agarcia@igalia.com>
Thu, 12 Mar 2009 16:13:08 +0000 (16:13 +0000)
* src/hildon-button.c (hildon_button_class_init): Don't make
"title" and "value" construction properties, to prevent them from
overwriting labels set from derived classes.

* src/hildon-picker-button.c
(hildon_picker_button_set_selector): Allow setting a NULL selector.
(hildon_picker_button_class_init): Make touch-selector a
construction property.

* src/hildon-date-button.c (hildon_date_button_class_init)
(+hildon_date_button_constructed): Add a default date selector if
none is provided.

ChangeLog
src/hildon-button.c
src/hildon-date-button.c
src/hildon-picker-button.c

index 091f451..9c2fbbc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2009-03-12  Alberto Garcia  <agarcia@igalia.com>
+
+       * src/hildon-button.c (hildon_button_class_init): Don't make
+       "title" and "value" construction properties, to prevent them from
+       overwriting labels set from derived classes.
+
+       * src/hildon-picker-button.c
+       (hildon_picker_button_set_selector): Allow setting a NULL selector.
+       (hildon_picker_button_class_init): Make touch-selector a
+       construction property.
+
+       * src/hildon-date-button.c (hildon_date_button_class_init)
+       (+hildon_date_button_constructed): Add a default date selector if
+       none is provided.
+
 2009-03-12  Claudio Saavedra  <csaavedra@igalia.com>
 
        * src/hildon-touch-selector.c: Small documentation fixes.
index 72509c1..25a1678 100644 (file)
@@ -243,7 +243,7 @@ hildon_button_class_init                        (HildonButtonClass *klass)
             "Title",
             "Text of the title label inside the button",
             NULL,
-            G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+            G_PARAM_READWRITE));
 
     g_object_class_install_property (
         gobject_class,
@@ -253,7 +253,7 @@ hildon_button_class_init                        (HildonButtonClass *klass)
             "Value",
             "Text of the value label inside the button",
             NULL,
-            G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+            G_PARAM_READWRITE));
 
     g_object_class_install_property (
         gobject_class,
index 75fb137..b205789 100644 (file)
@@ -74,11 +74,26 @@ hildon_date_button_set_property (GObject * object, guint property_id,
 #endif
 
 static void
+hildon_date_button_constructed (GObject *object)
+{
+  HildonPickerButton *button = HILDON_PICKER_BUTTON (object);
+
+  if (G_OBJECT_CLASS (hildon_date_button_parent_class)->constructed)
+      G_OBJECT_CLASS (hildon_date_button_parent_class)->constructed (object);
+
+  if (hildon_picker_button_get_selector (button) == NULL) {
+      GtkWidget *selector = hildon_date_selector_new ();
+      hildon_picker_button_set_selector (button, HILDON_TOUCH_SELECTOR (selector));
+  }
+}
+
+static void
 hildon_date_button_class_init (HildonDateButtonClass * klass)
 {
-#if 0
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
+  object_class->constructed = hildon_date_button_constructed;
+#if 0
   g_type_class_add_private (klass, sizeof (HildonDateButtonPrivate));
 
   object_class->get_property = hildon_date_button_get_property;
index 6f89f39..6b02e2d 100644 (file)
@@ -330,7 +330,7 @@ hildon_picker_button_class_init (HildonPickerButtonClass * klass)
                                                         "HildonTouchSelector widget",
                                                         "HildonTouchSelector widget to be launched on button clicked",
                                                         HILDON_TYPE_TOUCH_SELECTOR,
-                                                        G_PARAM_READWRITE));
+                                                        G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
   g_object_class_install_property (object_class,
                                    PROP_DONE_BUTTON_TEXT,
                                    g_param_spec_string ("done-button-text",
@@ -442,10 +442,10 @@ hildon_picker_button_set_selector (HildonPickerButton * button,
                                    HildonTouchSelector * selector)
 {
   HildonPickerButtonPrivate *priv;
-  gchar *value;
+  gchar *value = NULL;
 
   g_return_if_fail (HILDON_IS_PICKER_BUTTON (button));
-  g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
+  g_return_if_fail (!selector || HILDON_IS_TOUCH_SELECTOR (selector));
 
   priv = GET_PRIVATE (button);
 
@@ -459,22 +459,29 @@ hildon_picker_button_set_selector (HildonPickerButton * button,
     g_object_unref (priv->selector);
   }
 
-  priv->selector = g_object_ref (selector);
+  priv->selector = GTK_WIDGET (selector);
 
-  g_signal_connect (G_OBJECT (selector), "changed",
-                    G_CALLBACK (hildon_picker_button_selector_selection_changed),
-                    button);
+  if (selector) {
+    g_object_ref (selector);
 
-  g_signal_connect (G_OBJECT (selector), "columns-changed",
-                    G_CALLBACK (hildon_picker_button_selector_columns_changed),
-                    button);
+    g_signal_connect (G_OBJECT (selector), "changed",
+                      G_CALLBACK (hildon_picker_button_selector_selection_changed),
+                      button);
 
-  value = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (priv->selector));
-  if (value) {
-    hildon_button_set_value (HILDON_BUTTON (button), value);
-    g_free (value);
-    hildon_picker_button_value_changed (button);
+    g_signal_connect (G_OBJECT (selector), "columns-changed",
+                      G_CALLBACK (hildon_picker_button_selector_columns_changed),
+                      button);
+
+    value = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (priv->selector));
   }
+
+  if (!value)
+    value = g_strdup ("");
+
+  hildon_button_set_value (HILDON_BUTTON (button), value);
+  hildon_picker_button_value_changed (button);
+
+  g_free (value);
 }
 
 /**