3 * Copyright 2012 Samsung Electronics Co., Ltd
5 * Licensed under the Flora License, Version 1.1 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 #include "gi-timepicker.h"
27 Time_Changed_Callback time_changed_callback;
29 Evas_Object *datetime;
30 } __cal_genlist_item_timepicker_info;
32 static void __cal_genlist_item_timepicker_time_changed_callback(void *data, Evas_Object* obj, void *ei)
36 c_retm_if(data == NULL, "data is null");
37 c_retm_if(obj == NULL, "datetime is null");
39 __cal_genlist_item_timepicker_info* info = (__cal_genlist_item_timepicker_info*)data;
42 time_t t = time(NULL);
43 localtime_r(&t, &value); // to fill hidden field
45 elm_datetime_value_get(obj, &value);
49 if (info->time_changed_callback != NULL)
50 info->time_changed_callback(info->data, &value);
53 static Evas_Object *__cal_genlist_item_timepicker_get_icon(void* data, Evas_Object* obj, const char* part)
57 c_retvm_if(data == NULL, NULL, "data is null");
59 if (!CAL_STRCMP(part, "elm.icon")) {
61 __cal_genlist_item_timepicker_info* info = (__cal_genlist_item_timepicker_info*)data;
63 Evas_Object* icon_obj = cal_util_add_datetime(obj, info->title, info->value);
64 c_retvm_if(!icon_obj, NULL, "icon_obj is null");
66 Evas_Object* dt = elm_object_part_content_get(icon_obj, "elm.icon");
69 evas_object_del(icon_obj);
76 elm_datetime_format_set(dt, "%b %d , %Y %H : %M");
78 elm_datetime_format_set(dt, "%b %d , %Y %I : %M %p");
82 elm_datetime_field_visible_set(dt, ELM_DATETIME_HOUR, EINA_TRUE);
83 elm_datetime_field_visible_set(dt, ELM_DATETIME_MINUTE, EINA_TRUE);
85 elm_datetime_field_visible_set(dt, ELM_DATETIME_AMPM, EINA_FALSE);
87 elm_datetime_field_visible_set(dt, ELM_DATETIME_AMPM, EINA_TRUE);
91 elm_datetime_field_visible_set(dt, ELM_DATETIME_HOUR, EINA_FALSE);
92 elm_datetime_field_visible_set(dt, ELM_DATETIME_MINUTE, EINA_FALSE);
93 elm_datetime_field_visible_set(dt, ELM_DATETIME_AMPM, EINA_FALSE);
96 evas_object_smart_callback_add(dt, "changed",
97 __cal_genlist_item_timepicker_time_changed_callback, info);
105 static void __cal_genlist_item_timepicker_delete(void *data, Evas_Object *obj)
109 __cal_genlist_item_timepicker_info* info = (__cal_genlist_item_timepicker_info*)data;
113 static void __cal_add_genlist_item_timepicker_select_callback(void* data, Evas_Object *obj, void *event_info)
117 c_retm_if(obj == NULL, "obj is null");
119 Elm_Object_Item* item = elm_genlist_selected_item_get(obj);
120 c_retm_if(item == NULL, "elm_genlist_selected_item_get() returned null");
122 __cal_genlist_item_timepicker_info* info = (__cal_genlist_item_timepicker_info*)data;
123 c_retm_if(info == NULL, "info is null");
125 elm_object_focus_set(info->datetime, EINA_TRUE);
127 elm_genlist_item_selected_set(item, EINA_FALSE);
130 Elm_Object_Item* cal_genlist_item_timepicker_add(Evas_Object *genlist,
131 const char* title, struct tm* value, Eina_Bool allday,
132 Time_Changed_Callback time_changed_callback, void* data)
136 c_retvm_if(genlist == NULL, NULL, "genlist is null");
137 c_retvm_if(time == NULL, NULL, "time is null");
139 static Elm_Genlist_Item_Class* itc = NULL;
141 itc = malloc(sizeof(Elm_Genlist_Item_Class));
142 itc->item_style = "dialogue/1icon";
143 itc->func.text_get = NULL;
144 itc->func.del = __cal_genlist_item_timepicker_delete;
145 itc->func.content_get = __cal_genlist_item_timepicker_get_icon;
148 __cal_genlist_item_timepicker_info* info =
149 (__cal_genlist_item_timepicker_info*)calloc(1, sizeof(__cal_genlist_item_timepicker_info));
153 info->allday = allday;
154 info->time_changed_callback = time_changed_callback;
157 Elm_Object_Item* item =
158 elm_genlist_item_append(genlist, itc, info, NULL, ELM_GENLIST_ITEM_NONE,
159 __cal_add_genlist_item_timepicker_select_callback, info);
161 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
166 void cal_genlist_item_timepicker_update_value(Elm_Object_Item* item)
170 c_retm_if(item == NULL, "item is null");
172 __cal_genlist_item_timepicker_info* info =
173 (__cal_genlist_item_timepicker_info*)elm_object_item_data_get(item);
175 elm_datetime_value_set(info->datetime, info->value);
180 void cal_genlist_item_timepicker_update_mode(
181 Elm_Object_Item* item, Eina_Bool allday)
185 c_retm_if(item == NULL, "item is null");
186 __cal_genlist_item_timepicker_info* info =
187 (__cal_genlist_item_timepicker_info*)elm_object_item_data_get(item);
189 info->allday = allday;
192 elm_datetime_field_visible_set(info->datetime, ELM_DATETIME_HOUR, EINA_TRUE);
193 elm_datetime_field_visible_set(info->datetime, ELM_DATETIME_MINUTE, EINA_TRUE);
195 elm_datetime_field_visible_set(info->datetime, ELM_DATETIME_AMPM, EINA_TRUE);
197 elm_datetime_field_visible_set(info->datetime, ELM_DATETIME_HOUR, EINA_FALSE);
198 elm_datetime_field_visible_set(info->datetime, ELM_DATETIME_MINUTE, EINA_FALSE);
199 elm_datetime_field_visible_set(info->datetime, ELM_DATETIME_AMPM, EINA_FALSE);
203 void cal_genlist_item_timepicker_disabled_set(Elm_Object_Item* item, Eina_Bool disabled)
205 c_ret_if(item == NULL);
206 __cal_genlist_item_timepicker_info* info =
207 (__cal_genlist_item_timepicker_info*)elm_object_item_data_get(item);
209 elm_object_disabled_set(info->datetime, disabled);
212 void cal_genlist_item_radio_timepicker_get_value(Elm_Object_Item* timepicker, struct tm* datetime)
214 c_retm_if(timepicker == NULL, "timepicker is null");
216 __cal_genlist_item_timepicker_info* info =
217 (__cal_genlist_item_timepicker_info*)elm_object_item_data_get(timepicker);
219 elm_datetime_value_get(info->datetime, datetime);
222 void cal_genlist_item_radio_timepicker_set_value(Elm_Object_Item* timepicker, const struct tm* datetime)
224 c_retm_if(timepicker == NULL, "timepicker is null");
226 __cal_genlist_item_timepicker_info* info =
227 (__cal_genlist_item_timepicker_info*)elm_object_item_data_get(timepicker);
229 elm_datetime_value_set(info->datetime, datetime);