Date Widgets

Date Bar — How to migrate Date widgets

Migrating Date Widgets

Being deprecated since Hildon 2.2, the calendar popup and date editor can be substituded by a HildonDateButton.

Examples of a typical calendar popup and a date editor are presented bellow.

Example 34. A Typical Calendar Popup


guint y = 2009, m = 4, d = 25;
GtkWidget *parent, *popup;
popup = hildon_calendar_popup_new (GTK_WINDOW (parent), y, m, d);
gtk_dialog_run (GTK_DIALOG (popup));
hildon_calendar_popup_get_date (HILDON_CALENDAR_POPUP (popup),
                                        &y, &m, &d);

        

Example 35. A Typical Date Editor


gboolean
on_error (GtkWidget *widget, HildonDateTimeError error_type);

gboolean
on_error (GtkWidget *widget, HildonDateTimeError error_type)
{
    g_debug ("Error: %d", error_type);
    return FALSE;
}

GtkDialog *dialog = GTK_DIALOG (gtk_dialog_new ());
HildonDateEditor *date_editor = HILDON_DATE_EDITOR (hildon_date_editor_new ());

gtk_box_pack_start (GTK_BOX (dialog->vbox), gtk_label_new ("Choose a date"), FALSE, FALSE, 10);
gtk_box_pack_start (GTK_BOX (dialog->vbox), GTK_WIDGET (date_editor), FALSE, FALSE, 10);
gtk_dialog_add_button (dialog, "Close", GTK_RESPONSE_CANCEL);

g_signal_connect (G_OBJECT (date_editor), "date_error", G_CALLBACK (on_error), NULL);

gtk_widget_show_all (GTK_WIDGET (dialog));
gtk_dialog_run (dialog);

hildon_date_editor_get_date (date_editor, &y, &m, &d);

        

The following example accomplishes equivalent functionality using a HildonDateButton.

Example 36. A Replacement for the Calendar Popup


GtkDialog *dialog = GTK_DIALOG (gtk_dialog_new ());
guint y = 2009, m = 3, d = 25;
HildonDateButton *date_button = HILDON_DATE_BUTTON (hildon_date_button_new (
            HILDON_SIZE_THUMB_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL));
hildon_date_button_set_date (date_button, y, m, d);
gtk_box_pack_end (GTK_BOX (dialog->vbox), GTK_WIDGET (date_button), FALSE, FALSE, 0);
gtk_widget_show_all (GTK_WIDGET (dialog));
gtk_dialog_run (dialog);
hildon_date_button_get_date (date_button, &y, &m, &d);

        

Weekday Picker

A weekday picker (deprecated since Hildon 2.2) can be easily replaced by a HildonPickerButton.

The following example presents the deprecated weekday picker in a dialog.

Example 37. A Typical Weekday Picker


GtkDialog *dialog = GTK_DIALOG (gtk_dialog_new ());
GtkWidget *picker = hildon_weekday_picker_new ();
gtk_box_pack_start (GTK_BOX (dialog->vbox), picker, TRUE, TRUE, 0);
gtk_dialog_add_button (dialog, "Close", GTK_RESPONSE_CLOSE);
gtk_widget_show_all (GTK_WIDGET (dialog));
gtk_dialog_run (dialog);

        

With a HildonPickerButton it is easy to add the weekdays to its TouchSelector and thus having the same functionality.

Example 38. A Replacement for the Weekday Picker


GtkDialog *dialog = GTK_DIALOG (gtk_dialog_new ());
GtkWidget *picker = hildon_picker_button_new (HILDON_SIZE_THUMB_HEIGHT,
                                HILDON_BUTTON_ARRANGEMENT_VERTICAL);
hildon_button_set_title (HILDON_BUTTON (picker), "Weekday:");
HildonTouchSelector *selector = HILDON_TOUCH_SELECTOR (
                                hildon_touch_selector_new_text ());
hildon_touch_selector_append_text (selector, "Sunday");
hildon_touch_selector_append_text (selector, "Monday");
hildon_touch_selector_append_text (selector, "Tuesday");
hildon_touch_selector_append_text (selector, "Thursday");
hildon_touch_selector_append_text (selector, "Friday");
hildon_touch_selector_append_text (selector, "Saturday");
hildon_touch_selector_set_column_selection_mode (selector,
                    HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE);
                    
hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (picker), selector);
hildon_picker_button_set_active (HILDON_PICKER_BUTTON (picker), 0);
gtk_box_pack_start (GTK_BOX (dialog->vbox), picker, TRUE, TRUE, 0);
gtk_widget_show_all (GTK_WIDGET (dialog));
gtk_dialog_run (dialog);