2 * This file is a part of hildon
4 * Copyright (C) 2008 Nokia Corporation, all rights reserved.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser Public License as published by
8 * the Free Software Foundation; version 2 of the license.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser Public License for more details.
19 #include "hildon-date-button.h"
20 #include "hildon-date-selector.h"
21 #include "hildon-touch-selector.h"
22 #include "hildon-picker-button-private.h"
25 dgettext("hildon-libs", String)
28 dgettext("hildon-common-strings", String)
31 * SECTION:hildon-date-button
32 * @Short_Description: Button displaying and allowing selection of a date.
33 * @See_Also: #HildonPickerButton, #HildonTimeButton
35 * #HildonDateButton is a widget that shows a text label and a date, and allows
36 * the user to select a different date. Visually, it's a button that, once clicked,
37 * presents a #HildonPickerDialog containing a #HildonDateSelector. Once the user selects
38 * a different date from the selector, this will be shown in the button.
41 G_DEFINE_TYPE (HildonDateButton, hildon_date_button, HILDON_TYPE_PICKER_BUTTON)
44 #define GET_PRIVATE(o) \
45 (G_TYPE_INSTANCE_GET_PRIVATE ((o), HILDON_TYPE_DATE_BUTTON, HildonDateButtonPrivate))
47 typedef struct _HildonDateButtonPrivate HildonDateButtonPrivate;
49 struct _HildonDateButtonPrivate
56 hildon_date_button_get_property (GObject * object, guint property_id,
57 GValue * value, GParamSpec * pspec)
59 switch (property_id) {
61 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
66 hildon_date_button_set_property (GObject * object, guint property_id,
67 const GValue * value, GParamSpec * pspec)
69 switch (property_id) {
71 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
77 hildon_date_button_class_init (HildonDateButtonClass * klass)
80 GObjectClass *object_class = G_OBJECT_CLASS (klass);
82 g_type_class_add_private (klass, sizeof (HildonDateButtonPrivate));
84 object_class->get_property = hildon_date_button_get_property;
85 object_class->set_property = hildon_date_button_set_property;
90 hildon_date_button_init (HildonDateButton * self)
92 GtkWidget *date_selector;
94 date_selector = hildon_date_selector_new ();
96 hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (self),
97 HILDON_TOUCH_SELECTOR (date_selector));
101 hildon_date_button_new_full (HildonSizeType size,
102 HildonButtonArrangement arrangement,
105 return g_object_new (HILDON_TYPE_DATE_BUTTON,
106 "title", _("wdgt_ti_date"),
107 "arrangement", arrangement,
109 "touch-selector", selector,
114 * hildon_date_button_new:
115 * @size: One of #HildonSizeType
116 * @arrangement: one of #HildonButtonArrangement
118 * Creates a new #HildonDateButton. See hildon_button_new() for details on the
121 * Returns: a new #HildonDateButton
126 hildon_date_button_new (HildonSizeType size,
127 HildonButtonArrangement arrangement)
129 GtkWidget *selector = hildon_date_selector_new ();
130 return hildon_date_button_new_full (size, arrangement, selector);
134 * hildon_date_button_new_with_year_range:
135 * @size: One of #HildonSizeType
136 * @arrangement: one of #HildonButtonArrangement
137 * @min_year: the minimum available year or -1 to ignore
138 * @max_year: the maximum available year or -1 to ignore
140 * Creates a new #HildonDateButton with a specific valid range of years.
141 * See hildon_date_selector_new_with_year_range() for details on the range.
143 * Returns: a new #HildonDateButton
148 hildon_date_button_new_with_year_range (HildonSizeType size,
149 HildonButtonArrangement arrangement,
154 selector = hildon_date_selector_new_with_year_range (min_year, max_year);
155 return hildon_date_button_new_full (size, arrangement, selector);
159 * hildon_date_button_get_date:
160 * @button: a #HildonDateButton
161 * @year: return location for the selected year
162 * @month: return location for the selected month
163 * @day: return location for the selected day
165 * Retrieves currently selected date from @button.
170 hildon_date_button_get_date (HildonDateButton * button,
171 guint * year, guint * month, guint * day)
173 HildonTouchSelector *selector;
175 g_return_if_fail (HILDON_IS_DATE_BUTTON (button));
177 selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
179 g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
181 hildon_date_selector_get_date (HILDON_DATE_SELECTOR (selector), year, month, day);
185 * hildon_date_button_set_date:
186 * @button: a #HildonDateButton
187 * @year: the year to set.
188 * @month: the month number to set.
189 * @day: the day of the month to set.
191 * Sets the date in @button. The date set will be displayed
192 * and will be the default selected option on the shown #HildonDateSelector.
197 hildon_date_button_set_date (HildonDateButton * button,
198 guint year, guint month, guint day)
200 HildonTouchSelector *selector;
203 g_return_if_fail (HILDON_IS_DATE_BUTTON (button));
205 selector = hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (button));
207 g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector));
209 hildon_picker_button_disable_value_changed (HILDON_PICKER_BUTTON (button), TRUE);
210 hildon_date_selector_select_current_date (HILDON_DATE_SELECTOR (selector),
212 hildon_picker_button_disable_value_changed (HILDON_PICKER_BUTTON (button), FALSE);
214 date = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector));
216 hildon_button_set_value (HILDON_BUTTON (button), date);
220 hildon_picker_button_value_changed (HILDON_PICKER_BUTTON (button));