2 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
21 * @file eail_datetime.c
23 * @brief EailDatetime implementation
26 #include <Elementary.h>
28 #include "eail_datetime.h"
29 #include "eail_utils.h"
31 static void atk_value_interface_init(AtkValueIface *iface);
34 * @brief Define EailDatetime GObject type
36 G_DEFINE_TYPE_WITH_CODE(EailDatetime,
39 G_IMPLEMENT_INTERFACE(ATK_TYPE_VALUE,
40 atk_value_interface_init));
43 * @brief handler for changed event
45 * @param data passed to callback
46 * @param obj object that raised event
47 * @param event_info additional event info
51 _eail_datetime_handle_changed_event(void *data,
56 (ATK_OBJECT(data), "visible-data-changed", ATK_TYPE_OBJECT);
60 * @brief EailDatetime object initialization
62 * @param obj EailDatetime instance
63 * @param data additional initialization data
66 eail_datetime_initialize(AtkObject *obj, gpointer data)
68 Evas_Object *nested_widget = NULL;
69 ATK_OBJECT_CLASS(eail_datetime_parent_class)->initialize(obj, data);
71 obj->role = ATK_ROLE_DATE_EDITOR;
72 g_return_if_fail(EAIL_IS_WIDGET(obj));
74 nested_widget = eail_widget_get_widget(EAIL_WIDGET(obj));
75 evas_object_smart_callback_add(nested_widget, "changed",
76 _eail_datetime_handle_changed_event, obj);
80 * @brief EailDatetime instance initialization
82 * @param datetime EailDatetime instance
85 eail_datetime_init(EailDatetime *datetime)
90 * @brief GObject type initialization function
92 * @param klass EailDatetimeClass instance
95 eail_datetime_class_init(EailDatetimeClass *klass)
97 AtkObjectClass *atk_class = ATK_OBJECT_CLASS(klass);
99 atk_class->initialize = eail_datetime_initialize;
103 * @brief Gets obj's current value
111 * //get current datetime value
112 * atk_value_get_minimum_value(obj, &value);
115 * time = g_value_get_int(&value);
117 * //convert time to time structure (struct tm)
118 * t = localtime(&time);
121 * @param obj EailDatetime instance
122 * @param [out] value obj's current value
125 eail_datetime_get_current_value(AtkValue *obj,
131 widget = eail_widget_get_widget(EAIL_WIDGET(obj));
134 elm_datetime_value_get(widget, &datetime);
136 memset(value, 0, sizeof(GValue));
137 g_value_init(value, G_TYPE_INT);
138 g_value_set_int(value, mktime(&datetime));
142 * @brief Gets obj's maxiumum value
144 * @param obj EailDatetime instance
145 * @param [out] value obj's maximum value
148 eail_datetime_get_maximum_value(AtkValue *obj,
154 widget = eail_widget_get_widget(EAIL_WIDGET(obj));
157 elm_datetime_value_max_get(widget, &datetime);
159 memset(value, 0, sizeof(GValue));
160 g_value_init(value, G_TYPE_INT);
161 g_value_set_int(value, mktime(&datetime));
165 * @brief Gets obj's minimum value
167 * @param obj EailDatetime instance
168 * @param [out] value obj's minimum value
171 eail_datetime_get_minimum_value(AtkValue *obj,
177 widget = eail_widget_get_widget(EAIL_WIDGET(obj));
180 elm_datetime_value_min_get(widget, &datetime);
182 memset(value, 0, sizeof(GValue));
183 g_value_init(value, G_TYPE_INT);
184 g_value_set_int(value, mktime(&datetime));
188 * @brief Sets obj's value
196 * //Fill time structure with desired values(struct tm)
197 * memset(&t, 0, sizeof(t));
202 * //convert to int representation
205 * //copy time to value
206 * memset(&value, 0, sizeof(value));
207 * g_value_init(&value, G_TYPE_INT);
208 * g_value_set_int(&value, time);
210 * //set time using atk
211 * atk_value_set_current_value(obj, &value);
214 * @param obj EailDatetime instance
215 * @param value EailDatetime new value
216 * @return TRUE if new value was set successfully, FALSE otherwise
219 eail_datetime_set_current_value(AtkValue *obj,
226 widget = eail_widget_get_widget(EAIL_WIDGET(obj));
227 if (!widget) return FALSE;
229 time = g_value_get_int(value);
230 localtime_r(&time, &datetime);
232 if (EINA_TRUE == elm_datetime_value_set(widget, &datetime))
239 * @brief Gets obj's minimum increment
241 * @param obj EailDatetime instance
242 * @param [out] value obj's minimum increment
245 eail_datetime_get_minimum_increment(AtkValue *obj,
250 widget = eail_widget_get_widget(EAIL_WIDGET(obj));
253 memset(value, 0, sizeof(GValue));
254 g_value_init(value, G_TYPE_INT);
255 g_value_set_int(value, 1);
259 * @brief AtkValue interface initializer
261 * @param iface AtkValueIface instance
264 atk_value_interface_init(AtkValueIface *iface)
266 g_return_if_fail(iface != NULL);
268 iface->get_current_value = eail_datetime_get_current_value;
269 iface->get_maximum_value = eail_datetime_get_maximum_value;
270 iface->get_minimum_value = eail_datetime_get_minimum_value;
271 iface->set_current_value = eail_datetime_set_current_value;
272 iface->get_minimum_increment = eail_datetime_get_minimum_increment;