diff options
author | Alberto Garcia <agarcia@igalia.com> | 2009-04-30 13:10:26 +0200 |
---|---|---|
committer | Alberto Garcia <agarcia@igalia.com> | 2009-04-30 13:33:58 +0200 |
commit | 69a11338fe0cc36a868e5812b590f5437622988a (patch) | |
tree | abd1efc835e7e30f7799eac64ff45405f1624528 /hildon/hildon-date-button.c | |
parent | 8a970bcc0a22925ed90b869c8f7c1ba521e189ac (diff) |
Renamed src/ to hildon/
* src/
* Makefile.am
* configure.ac
* doc/Makefile.am
* doc/hildon.types
* po/POTFILES.in:
Renamed src/ to hildon/
* examples/*.c
* debian/changelog
* debian/rules:
Include <hildon/hildon.h> directly in all examples.
Diffstat (limited to 'hildon/hildon-date-button.c')
-rw-r--r-- | hildon/hildon-date-button.c | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/hildon/hildon-date-button.c b/hildon/hildon-date-button.c new file mode 100644 index 0000000..a27b996 --- /dev/null +++ b/hildon/hildon-date-button.c @@ -0,0 +1,221 @@ +/* + * This file is a part of hildon + * + * Copyright (C) 2008 Nokia Corporation, all rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser Public License as published by + * the Free Software Foundation; version 2 of the license. + * + * This program 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 Public License for more details. + * + */ + +#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 + * @Short_Description: Button displaying and allowing selection of a date. + * @See_Also: #HildonPickerButton, #HildonTimeButton + * + * #HildonDateButton is a widget that shows a text label and a date, and allows + * the user to select a different date. Visually, it's a button that, once clicked, + * presents a #HildonPickerDialog containing a #HildonDateSelector. Once the user selects + * a different date from the selector, this will be shown in the button. + */ + +G_DEFINE_TYPE (HildonDateButton, hildon_date_button, HILDON_TYPE_PICKER_BUTTON) + +#if 0 +#define GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), HILDON_TYPE_DATE_BUTTON, HildonDateButtonPrivate)) + +typedef struct _HildonDateButtonPrivate HildonDateButtonPrivate; + +struct _HildonDateButtonPrivate +{ +}; +#endif + +#if 0 +static void +hildon_date_button_get_property (GObject * object, guint property_id, + GValue * value, GParamSpec * pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +hildon_date_button_set_property (GObject * object, guint property_id, + const GValue * value, GParamSpec * pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} +#endif + +static void +hildon_date_button_class_init (HildonDateButtonClass * klass) +{ +#if 0 + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (HildonDateButtonPrivate)); + + object_class->get_property = hildon_date_button_get_property; + object_class->set_property = hildon_date_button_set_property; +#endif +} + +static void +hildon_date_button_init (HildonDateButton * self) +{ + GtkWidget *date_selector; + + date_selector = hildon_date_selector_new (); + + hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (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 + * @arrangement: one of #HildonButtonArrangement + * + * Creates a new #HildonDateButton. See hildon_button_new() for details on the + * parameters. + * + * Returns: a new #HildonDateButton + * + * Since: 2.2 + **/ +GtkWidget * +hildon_date_button_new (HildonSizeType size, + HildonButtonArrangement arrangement) +{ + GtkWidget *selector = hildon_date_selector_new (); + return hildon_date_button_new_full (size, arrangement, selector); +} + +/** + * hildon_date_button_new_with_year_range: + * @size: One of #HildonSizeType + * @arrangement: one of #HildonButtonArrangement + * @min_year: the minimum available year or -1 to ignore + * @max_year: the maximum available year or -1 to ignore + * + * Creates a new #HildonDateButton with a specific valid range of years. + * See hildon_date_selector_new_with_year_range() for details on the range. + * + * Returns: a new #HildonDateButton + * + * Since: 2.2 + **/ +GtkWidget * +hildon_date_button_new_with_year_range (HildonSizeType size, + HildonButtonArrangement arrangement, + gint min_year, + gint max_year) +{ + GtkWidget *selector; + selector = hildon_date_selector_new_with_year_range (min_year, max_year); + return hildon_date_button_new_full (size, arrangement, selector); +} + +/** + * hildon_date_button_get_date: + * @button: a #HildonDateButton + * @year: return location for the selected year + * @month: return location for the selected month + * @day: return location for the selected day + * + * Retrieves currently selected date from @button. + * + * Since: 2.2 + **/ +void +hildon_date_button_get_date (HildonDateButton * button, + guint * year, guint * month, guint * day) +{ + HildonTouchSelector *selector; + + g_return_if_fail (HILDON_IS_DATE_BUTTON (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); +} + +/** + * hildon_date_button_set_date: + * @button: a #HildonDateButton + * @year: the year to set. + * @month: the month number to set. + * @day: the day of the month to set. + * + * Sets the date in @button. The date set will be displayed + * and will be the default selected option on the shown #HildonDateSelector. + * + * Since: 2.2 + **/ +void +hildon_date_button_set_date (HildonDateButton * button, + guint year, guint month, guint day) +{ + HildonTouchSelector *selector; + gchar *date; + + g_return_if_fail (HILDON_IS_DATE_BUTTON (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)); +} |