5 char *item_value_param[] = { "year", "month", "date", "hour", "minute", "ampm"};
6 char *item_max_param[] = { "year_max", "month_max", "date_max",
7 "hour_max", "minute_max", "ampm_max" };
8 char *item_min_param[] = { "year_min", "month_min", "date_min",
9 "hour_min", "minute_min", "ampm_min" };
10 char *item_enable_param[] = { "year_enable", "month_enable", "date_enable",
11 "hour_enable", "minute_enable", "ampm_enable" };
12 char *item_max_absolute_param[] = { "year_max_abs", "month_max_abs", "date_max_abs",
13 "hour_max_abs", "minute_max_abs", "ampm_max_abs" };
14 char *item_min_absolute_param[] = { "year_min_abs", "month_min_abs", "date_min_abs",
15 "hour_min_abs", "minute_min_abs", "ampm_min_abs" };
17 typedef struct _Elm_Params_Datefield
21 int item_value[ITEM_COUNT];
22 int item_max[ITEM_COUNT];
23 int item_min[ITEM_COUNT];
24 Eina_Bool item_enable[ITEM_COUNT];
25 Eina_Bool item_max_absolute[ITEM_COUNT];
26 Eina_Bool item_min_absolute[ITEM_COUNT];
27 Eina_Bool item_value_set[ITEM_COUNT];
28 Eina_Bool item_max_set[ITEM_COUNT];
29 Eina_Bool item_min_set[ITEM_COUNT];
30 Eina_Bool item_enable_set[ITEM_COUNT];
31 Eina_Bool item_max_absolute_set[ITEM_COUNT];
32 Eina_Bool item_min_absolute_set[ITEM_COUNT];
33 } Elm_Params_Datefield;
36 external_datefield_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
38 const Elm_Params_Datefield *p;
41 if (to_params) p = to_params;
42 else if (from_params) p = from_params;
46 elm_datefield_format_set(obj, p->format);
47 for (i = 0; i < ITEM_COUNT; i++)
49 if (p->item_value_set[i])
50 elm_datefield_item_value_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_value[i]);
52 for (i = 0; i < ITEM_COUNT; i++)
54 if (p->item_enable_set[i])
55 elm_datefield_item_enabled_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_enable[i]);
57 for (i = 0; i < ITEM_COUNT; i++)
59 if ((p->item_max_set[i]) && (p->item_max_absolute_set[i]))
60 elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_max[i], p->item_max_absolute[i]);
61 else if ((p->item_max_set[i]) && !(p->item_max_absolute_set[i]))
62 elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_max[i],
63 elm_datefield_item_max_is_absolute(obj,(ELM_DATEFIELD_YEAR+i)));
64 else if (!(p->item_max_set[i]) && (p->item_max_absolute_set[i]))
65 elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), elm_datefield_item_max_get
66 (obj, (ELM_DATEFIELD_YEAR+i)), p->item_max_absolute[i]);
68 for (i = 0; i < ITEM_COUNT; i++)
70 if ((p->item_min_set[i]) && (p->item_min_absolute_set[i]))
71 elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_min[i], p->item_min_absolute[i]);
72 else if ((p->item_min_set[i]) && !(p->item_min_absolute_set[i]))
73 elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_min[i],
74 elm_datefield_item_min_is_absolute(obj,(ELM_DATEFIELD_YEAR+i)));
75 else if (!(p->item_min_set[i]) && (p->item_min_absolute_set[i]))
76 elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), elm_datefield_item_min_get
77 (obj, (ELM_DATEFIELD_YEAR+i)), p->item_min_absolute[i]);
82 external_datefield_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
85 if (!strcmp(param->name, "format"))
87 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
89 elm_datefield_format_set(obj, param->s);
93 for (i =0 ; i < ITEM_COUNT; i++)
95 if (!strcmp(param->name, item_value_param[i]))
97 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
99 elm_datefield_item_value_set(obj, (ELM_DATEFIELD_YEAR+i), param->i);
104 for (i =0 ; i < ITEM_COUNT; i++)
106 if (!strcmp(param->name, item_max_param[i]))
108 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
111 max_abs = elm_datefield_item_max_is_absolute(obj, (ELM_DATEFIELD_YEAR+i));
112 elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), param->i, max_abs);
117 for (i =0 ; i < ITEM_COUNT; i++)
119 if (!strcmp(param->name, item_min_param[i]))
121 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
124 min_abs = elm_datefield_item_min_is_absolute(obj, (ELM_DATEFIELD_YEAR+i));
125 elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), param->i, min_abs);
130 for (i =0 ; i < ITEM_COUNT; i++)
132 if (!strcmp(param->name, item_enable_param[i]))
134 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
136 elm_datefield_item_enabled_set(obj, (ELM_DATEFIELD_YEAR+i), param->i);
141 for (i =0 ; i < ITEM_COUNT; i++)
143 if (!strcmp(param->name, item_max_absolute_param[i]))
145 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
148 max = elm_datefield_item_max_get(obj, (ELM_DATEFIELD_YEAR+i));
149 elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), max, param->i);
154 for (i =0 ; i < ITEM_COUNT; i++)
156 if (!strcmp(param->name, item_min_absolute_param[i]))
158 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
161 min = elm_datefield_item_min_get(obj, (ELM_DATEFIELD_YEAR+i));
162 elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), min, param->i);
168 ERR("unknown parameter '%s' of type '%s'",
169 param->name, edje_external_param_type_str(param->type));
175 external_datefield_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
179 if (!strcmp(param->name, "format"))
181 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
183 param->s = elm_datefield_format_get(obj);
187 for (i =0 ; i < ITEM_COUNT; i++)
189 if (!strcmp(param->name, item_value_param[i]))
191 param->i = elm_datefield_item_value_get(obj, (ELM_DATEFIELD_YEAR+i));
195 for (i =0 ; i < ITEM_COUNT; i++)
197 if (!strcmp(param->name, item_max_param[i]))
199 param->i = elm_datefield_item_max_get(obj, (ELM_DATEFIELD_YEAR+i));
203 for (i =0 ; i < ITEM_COUNT; i++)
205 if (!strcmp(param->name, item_min_param[i]))
207 param->i = elm_datefield_item_min_get(obj, (ELM_DATEFIELD_YEAR+i));
211 for (i =0 ; i < ITEM_COUNT; i++)
213 if (!strcmp(param->name, item_enable_param[i]))
215 param->i = elm_datefield_item_enabled_get(obj, (ELM_DATEFIELD_YEAR+i));
219 for (i =0 ; i < ITEM_COUNT; i++)
221 if (!strcmp(param->name, item_max_absolute_param[i]))
223 param->i = elm_datefield_item_max_is_absolute(obj, (ELM_DATEFIELD_YEAR+i));
227 for (i =0 ; i < ITEM_COUNT; i++)
229 if (!strcmp(param->name, item_min_absolute_param[i]))
231 param->i = elm_datefield_item_min_is_absolute(obj, (ELM_DATEFIELD_YEAR+i));
236 ERR("unknown parameter '%s' of type '%s'",
237 param->name, edje_external_param_type_str(param->type));
243 external_datefield_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
245 Elm_Params_Datefield *mem;
246 Edje_External_Param *param;
250 mem = calloc(1, sizeof(Elm_Params_Datefield));
254 EINA_LIST_FOREACH(params, l, param)
256 if (!strcmp(param->name, "format"))
257 mem->format = eina_stringshare_add(param->s);
258 for (i = 0; i < ITEM_COUNT; i ++)
260 if (!strcmp(param->name, item_value_param[i]))
262 mem->item_value[i] = param->i;
263 mem->item_value_set[i] = EINA_TRUE;
266 for (i = 0; i < ITEM_COUNT; i ++)
268 if (!strcmp(param->name, item_max_param[i]))
270 mem->item_max[i] = param->i;
271 mem->item_max_set[i] = EINA_TRUE;
274 for (i = 0; i < ITEM_COUNT; i ++)
276 if (!strcmp(param->name, item_min_param[i]))
278 mem->item_min[i] = param->i;
279 mem->item_min_set[i] = EINA_TRUE;
282 for (i = 0; i < ITEM_COUNT; i ++)
284 if (!strcmp(param->name, item_enable_param[i]))
286 mem->item_enable[i] = param->i;
287 mem->item_enable_set[i] = EINA_TRUE;
290 for (i = 0; i < ITEM_COUNT; i ++)
292 if (!strcmp(param->name, item_max_absolute_param[i]))
294 mem->item_max_absolute[i] = param->i;
295 mem->item_max_absolute_set[i] = EINA_TRUE;
298 for (i = 0; i < ITEM_COUNT; i ++)
300 if (!strcmp(param->name, item_min_absolute_param[i]))
302 mem->item_min_absolute[i] = param->i;
303 mem->item_min_absolute_set[i] = EINA_TRUE;
311 static Evas_Object *external_datefield_content_get(void *data __UNUSED__,
312 const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
319 external_datefield_params_free(void *params)
321 Elm_Params_Datefield *mem = params;
324 eina_stringshare_del(mem->format);
329 static Edje_External_Param_Info external_datefield_params[] = {
330 DEFINE_EXTERNAL_COMMON_PARAMS,
331 EDJE_EXTERNAL_PARAM_INFO_STRING("format"),
332 EDJE_EXTERNAL_PARAM_INFO_INT("year"),
333 EDJE_EXTERNAL_PARAM_INFO_INT("month"),
334 EDJE_EXTERNAL_PARAM_INFO_INT("date"),
335 EDJE_EXTERNAL_PARAM_INFO_INT("hour"),
336 EDJE_EXTERNAL_PARAM_INFO_INT("minute"),
337 EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm"),
338 EDJE_EXTERNAL_PARAM_INFO_INT("year_max"),
339 EDJE_EXTERNAL_PARAM_INFO_BOOL("year_max_abs"),
340 EDJE_EXTERNAL_PARAM_INFO_INT("month_max"),
341 EDJE_EXTERNAL_PARAM_INFO_BOOL("month_max_abs"),
342 EDJE_EXTERNAL_PARAM_INFO_INT("date_max"),
343 EDJE_EXTERNAL_PARAM_INFO_BOOL("date_max_abs"),
344 EDJE_EXTERNAL_PARAM_INFO_INT("hour_max"),
345 EDJE_EXTERNAL_PARAM_INFO_BOOL("hour_max_abs"),
346 EDJE_EXTERNAL_PARAM_INFO_INT("minute_max"),
347 EDJE_EXTERNAL_PARAM_INFO_BOOL("minute_max_abs"),
348 EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_max"),
349 EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_max_abs"),
350 EDJE_EXTERNAL_PARAM_INFO_INT("year_min"),
351 EDJE_EXTERNAL_PARAM_INFO_BOOL("year_min_abs"),
352 EDJE_EXTERNAL_PARAM_INFO_INT("month_min"),
353 EDJE_EXTERNAL_PARAM_INFO_BOOL("month_min_abs"),
354 EDJE_EXTERNAL_PARAM_INFO_INT("date_min"),
355 EDJE_EXTERNAL_PARAM_INFO_BOOL("date_min_abs"),
356 EDJE_EXTERNAL_PARAM_INFO_INT("hour_min"),
357 EDJE_EXTERNAL_PARAM_INFO_BOOL("hour_min_abs"),
358 EDJE_EXTERNAL_PARAM_INFO_INT("minute_min"),
359 EDJE_EXTERNAL_PARAM_INFO_BOOL("minute_min_abs"),
360 EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_min"),
361 EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_min_abs"),
362 EDJE_EXTERNAL_PARAM_INFO_BOOL("year_enable"),
363 EDJE_EXTERNAL_PARAM_INFO_BOOL("month_enable"),
364 EDJE_EXTERNAL_PARAM_INFO_BOOL("date_enable"),
365 EDJE_EXTERNAL_PARAM_INFO_BOOL("hour_enable"),
366 EDJE_EXTERNAL_PARAM_INFO_BOOL("minute_enable"),
367 EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_enable"),
368 EDJE_EXTERNAL_PARAM_INFO_SENTINEL
371 DEFINE_EXTERNAL_ICON_ADD(datefield, "datefield");
372 DEFINE_EXTERNAL_TYPE_SIMPLE(datefield, "Datefield");