From: sumanth Date: Thu, 13 Oct 2011 09:39:53 +0000 (+0900) Subject: [edje_externals/elm_datefield.c] Datefield widget external file is updated as per... X-Git-Tag: REL_F_I9500_20111202_1~4^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=76bc3471a097338d4f2aa447c94d8b830f43bd3b;p=framework%2Fuifw%2Felementary.git [edje_externals/elm_datefield.c] Datefield widget external file is updated as per the new design. Change-Id: I46a082a4b488e6e1412576610a69d7e918e35f06 --- diff --git a/src/edje_externals/elm_datefield.c b/src/edje_externals/elm_datefield.c index f89250a..4e1abd4 100644 --- a/src/edje_externals/elm_datefield.c +++ b/src/edje_externals/elm_datefield.c @@ -1,148 +1,169 @@ #include "private.h" +#define ITEM_COUNT 6 + +char *item_value_param[] = { "year", "month", "date", "hour", "minute", "ampm"}; +char *item_max_param[] = { "year_max", "month_max", "date_max", + "hour_max", "minute_max", "ampm_max" }; +char *item_min_param[] = { "year_min", "month_min", "date_min", + "hour_min", "minute_min", "ampm_min" }; +char *item_enable_param[] = { "year_enable", "month_enable", "date_enable", + "hour_enable", "minute_enable", "ampm_enable" }; +char *item_max_absolute_param[] = { "year_max_abs", "month_max_abs", "date_max_abs", + "hour_max_abs", "minute_max_abs", "ampm_max_abs" }; +char *item_min_absolute_param[] = { "year_min_abs", "month_min_abs", "date_min_abs", + "hour_min_abs", "minute_min_abs", "ampm_min_abs" }; + typedef struct _Elm_Params_Datefield { - const char *layout; + Elm_Params base; const char *format; - Eina_Bool mode:1; - Eina_Bool mode_exists:1; - int year; - Eina_Bool year_exists:1; - int mon; - Eina_Bool mon_exists:1; - int day; - Eina_Bool day_exists:1; - int hour; - Eina_Bool hour_exists:1; - int min; - Eina_Bool min_exists:1; + int item_value[ITEM_COUNT]; + int item_max[ITEM_COUNT]; + int item_min[ITEM_COUNT]; + Eina_Bool item_enable[ITEM_COUNT]; + Eina_Bool item_max_absolute[ITEM_COUNT]; + Eina_Bool item_min_absolute[ITEM_COUNT]; + Eina_Bool item_value_set[ITEM_COUNT]; + Eina_Bool item_max_set[ITEM_COUNT]; + Eina_Bool item_min_set[ITEM_COUNT]; + Eina_Bool item_enable_set[ITEM_COUNT]; + Eina_Bool item_max_absolute_set[ITEM_COUNT]; + Eina_Bool item_min_absolute_set[ITEM_COUNT]; } Elm_Params_Datefield; -static const char *datefield_layout_choices[] = {"time", "date", "dateandtime", NULL}; - -static Elm_Datefield_Layout -_datefield_layout_setting_get(const char *layout_str) -{ - unsigned int i; - - for (i = 0; i < sizeof(datefield_layout_choices)/sizeof(datefield_layout_choices[0]); i++) - { - if (!strcmp(layout_str, datefield_layout_choices[i])) - return i; - } - return ELM_DATEFIELD_LAYOUT_DATEANDTIME; -} - static void external_datefield_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) { const Elm_Params_Datefield *p; + int i; if (to_params) p = to_params; else if (from_params) p = from_params; else return; - if (p->layout) + if (p->format) + elm_datefield_format_set(obj, p->format); + for (i = 0; i < ITEM_COUNT; i++) { - Elm_Datefield_Layout layout = _datefield_layout_setting_get(p->layout); - elm_datefield_layout_set(obj, layout); + if (p->item_value_set[i]) + elm_datefield_item_value_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_value[i]); } - if (p->format) - elm_datefield_date_format_set(obj, p->format); - if (p->mode_exists) - elm_datefield_time_mode_set(obj, p->mode); - if ((p->year_exists) || (p->mon_exists) || (p->day_exists) || (p->hour_exists) || (p->min_exists)) + for (i = 0; i < ITEM_COUNT; i++) { - int year, mon, day, hour, min; - elm_datefield_date_get(obj, &year, &mon, &day, &hour, &min); - - if (p->year_exists) year = p->year; - if (p->mon_exists) mon = p->mon; - if (p->day_exists) day = p->day; - if (p->hour_exists) hour = p->hour; - if (p->min_exists) min = p->min; - elm_datefield_date_set(obj, year, mon, day, hour, min); + if (p->item_enable_set[i]) + elm_datefield_item_enabled_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_enable[i]); + } + for (i = 0; i < ITEM_COUNT; i++) + { + if ((p->item_max_set[i]) && (p->item_max_absolute_set[i])) + elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_max[i], p->item_max_absolute[i]); + else if ((p->item_max_set[i]) && !(p->item_max_absolute_set[i])) + elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_max[i], + elm_datefield_item_max_is_absolute(obj,(ELM_DATEFIELD_YEAR+i))); + else if (!(p->item_max_set[i]) && (p->item_max_absolute_set[i])) + elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), elm_datefield_item_max_get + (obj, (ELM_DATEFIELD_YEAR+i)), p->item_max_absolute[i]); + } + for (i = 0; i < ITEM_COUNT; i++) + { + if ((p->item_min_set[i]) && (p->item_min_absolute_set[i])) + elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_min[i], p->item_min_absolute[i]); + else if ((p->item_min_set[i]) && !(p->item_min_absolute_set[i])) + elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), p->item_min[i], + elm_datefield_item_min_is_absolute(obj,(ELM_DATEFIELD_YEAR+i))); + else if (!(p->item_min_set[i]) && (p->item_min_absolute_set[i])) + elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), elm_datefield_item_min_get + (obj, (ELM_DATEFIELD_YEAR+i)), p->item_min_absolute[i]); } } static Eina_Bool external_datefield_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) { - if (!strcmp(param->name, "layout")) - { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) - { - Elm_Datefield_Layout layout = _datefield_layout_setting_get(param->s); - elm_datefield_layout_set(obj, layout); - return EINA_TRUE; - } - } - else if (!strcmp(param->name, "date_format")) + int i; + if (!strcmp(param->name, "format")) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) - { - elm_datefield_date_format_set(obj, param->s); - return EINA_TRUE; - } + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + elm_datefield_format_set(obj, param->s); + return EINA_TRUE; + } } - else if (!strcmp(param->name, "time_mode")) + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) - { - elm_datefield_time_mode_set(obj, param->i); - return EINA_TRUE; - } - } - else if (!strcmp(param->name, "years")) + if (!strcmp(param->name, item_value_param[i])) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + elm_datefield_item_value_set(obj, (ELM_DATEFIELD_YEAR+i), param->i); + return EINA_TRUE; + } + } + } + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - int mon, day, hour, min; - elm_datefield_date_get(obj, NULL, &mon, &day, &hour, &min); - elm_datefield_date_set(obj, param->i, mon, day, hour, min); - return EINA_TRUE; - } - } - else if (!strcmp(param->name, "months")) + if (!strcmp(param->name, item_max_param[i])) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + Eina_Bool max_abs; + max_abs = elm_datefield_item_max_is_absolute(obj, (ELM_DATEFIELD_YEAR+i)); + elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), param->i, max_abs); + return EINA_TRUE; + } + } + } + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - int year, day, hour, min; - elm_datefield_date_get(obj, &year, NULL, &day, &hour, &min); - elm_datefield_date_set(obj, year, param->i, day, hour, min); - return EINA_TRUE; - } - } - else if (!strcmp(param->name, "days")) + if (!strcmp(param->name, item_min_param[i])) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + Eina_Bool min_abs; + min_abs = elm_datefield_item_min_is_absolute(obj, (ELM_DATEFIELD_YEAR+i)); + elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), param->i, min_abs); + return EINA_TRUE; + } + } + } + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - int year, mon, hour, min; - elm_datefield_date_get(obj, &year, &mon, NULL, &hour, &min); - elm_datefield_date_set(obj, year, mon, param->i, hour, min); - return EINA_TRUE; - } - } - else if (!strcmp(param->name, "hours")) + if (!strcmp(param->name, item_enable_param[i])) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + elm_datefield_item_enabled_set(obj, (ELM_DATEFIELD_YEAR+i), param->i); + return EINA_TRUE; + } + } + } + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - int year, mon, day, min; - elm_datefield_date_get(obj, &year, &mon, &day, NULL, &min); - elm_datefield_date_set(obj, year, mon, day, param->i, min); - return EINA_TRUE; - } - } - else if (!strcmp(param->name, "days")) + if (!strcmp(param->name, item_max_absolute_param[i])) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + int max; + max = elm_datefield_item_max_get(obj, (ELM_DATEFIELD_YEAR+i)); + elm_datefield_item_max_set(obj, (ELM_DATEFIELD_YEAR+i), max, param->i); + return EINA_TRUE; + } + } + } + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - int year, mon, day, hour; - elm_datefield_date_get(obj, &year, &mon, &day, &hour, NULL); - elm_datefield_date_set(obj, year, mon, day, hour, param->i); - return EINA_TRUE; - } - } + if (!strcmp(param->name, item_min_absolute_param[i])) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + int min; + min = elm_datefield_item_min_get(obj, (ELM_DATEFIELD_YEAR+i)); + elm_datefield_item_min_set(obj, (ELM_DATEFIELD_YEAR+i), min, param->i); + return EINA_TRUE; + } + } + } ERR("unknown parameter '%s' of type '%s'", param->name, edje_external_param_type_str(param->type)); @@ -153,73 +174,63 @@ external_datefield_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje static Eina_Bool external_datefield_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param) { - if (!strcmp(param->name, "layout")) - { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) - { - Elm_Datefield_Layout layout = elm_datefield_layout_get(obj); - if (layout > ELM_DATEFIELD_LAYOUT_DATEANDTIME) - return EINA_FALSE; + int i; - param->s = datefield_layout_choices[layout]; - return EINA_TRUE; - } - } - else if (!strcmp(param->name, "date_format")) + if (!strcmp(param->name, "format")) { if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) { - param->s = elm_datefield_date_format_get(obj); - return EINA_TRUE; + param->s = elm_datefield_format_get(obj); + return EINA_TRUE; } } - else if (!strcmp(param->name, "time_mode")) + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + if (!strcmp(param->name, item_value_param[i])) { - param->i = elm_datefield_time_mode_get(obj); - return EINA_TRUE; + param->i = elm_datefield_item_value_get(obj, (ELM_DATEFIELD_YEAR+i)); + return EINA_TRUE; } } - else if (!strcmp(param->name, "years")) + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - elm_datefield_date_get(obj, &(param->i), NULL, NULL, NULL, NULL); - return EINA_TRUE; - } + if (!strcmp(param->name, item_max_param[i])) + { + param->i = elm_datefield_item_max_get(obj, (ELM_DATEFIELD_YEAR+i)); + return EINA_TRUE; + } } - else if (!strcmp(param->name, "months")) + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - elm_datefield_date_get(obj, NULL, &(param->i), NULL, NULL, NULL); - return EINA_TRUE; - } + if (!strcmp(param->name, item_min_param[i])) + { + param->i = elm_datefield_item_min_get(obj, (ELM_DATEFIELD_YEAR+i)); + return EINA_TRUE; + } } - else if (!strcmp(param->name, "days")) + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - elm_datefield_date_get(obj, NULL, NULL, &(param->i),NULL, NULL); - return EINA_TRUE; - } + if (!strcmp(param->name, item_enable_param[i])) + { + param->i = elm_datefield_item_enabled_get(obj, (ELM_DATEFIELD_YEAR+i)); + return EINA_TRUE; + } } - else if (!strcmp(param->name, "hours")) + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - elm_datefield_date_get(obj, NULL, NULL, NULL, &(param->i), NULL); - return EINA_TRUE; - } + if (!strcmp(param->name, item_max_absolute_param[i])) + { + param->i = elm_datefield_item_max_is_absolute(obj, (ELM_DATEFIELD_YEAR+i)); + return EINA_TRUE; + } } - else if (!strcmp(param->name, "minutes")) + for (i =0 ; i < ITEM_COUNT; i++) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - elm_datefield_date_get(obj, NULL, NULL, NULL, NULL, &(param->i)); - return EINA_TRUE; - } + if (!strcmp(param->name, item_min_absolute_param[i])) + { + param->i = elm_datefield_item_min_is_absolute(obj, (ELM_DATEFIELD_YEAR+i)); + return EINA_TRUE; + } } ERR("unknown parameter '%s' of type '%s'", @@ -234,6 +245,7 @@ external_datefield_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED Elm_Params_Datefield *mem; Edje_External_Param *param; const Eina_List *l; + int i; mem = calloc(1, sizeof(Elm_Params_Datefield)); if (!mem) @@ -241,50 +253,66 @@ external_datefield_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED EINA_LIST_FOREACH(params, l, param) { - if (!strcmp(param->name, "layout")) - mem->layout = eina_stringshare_add(param->s); - else if (!strcmp(param->name, "date_format")) - mem->format = eina_stringshare_add(param->s); - else if (!strcmp(param->name, "time_mode")) - { - mem->mode = !!param->i; - mem->mode_exists = EINA_TRUE; - } - else if (!strcmp(param->name, "years")) - { - mem->year = param->i; - mem->year_exists = EINA_TRUE; - } - else if (!strcmp(param->name, "months")) - { - mem->mon = param->i; - mem->mon_exists = EINA_TRUE; - } - else if (!strcmp(param->name, "days")) - { - mem->day = param->i; - mem->day_exists = EINA_TRUE; - } - else if (!strcmp(param->name, "hours")) - { - mem->hour = param->i; - mem->hour_exists = EINA_TRUE; - } - else if (!strcmp(param->name, "minutes")) - { - mem->min = param->i; - mem->min_exists = EINA_TRUE; - } + if (!strcmp(param->name, "format")) + mem->format = eina_stringshare_add(param->s); + for (i = 0; i < ITEM_COUNT; i ++) + { + if (!strcmp(param->name, item_value_param[i])) + { + mem->item_value[i] = param->i; + mem->item_value_set[i] = EINA_TRUE; + } + } + for (i = 0; i < ITEM_COUNT; i ++) + { + if (!strcmp(param->name, item_max_param[i])) + { + mem->item_max[i] = param->i; + mem->item_max_set[i] = EINA_TRUE; + } + } + for (i = 0; i < ITEM_COUNT; i ++) + { + if (!strcmp(param->name, item_min_param[i])) + { + mem->item_min[i] = param->i; + mem->item_min_set[i] = EINA_TRUE; + } + } + for (i = 0; i < ITEM_COUNT; i ++) + { + if (!strcmp(param->name, item_enable_param[i])) + { + mem->item_enable[i] = param->i; + mem->item_enable_set[i] = EINA_TRUE; + } + } + for (i = 0; i < ITEM_COUNT; i ++) + { + if (!strcmp(param->name, item_max_absolute_param[i])) + { + mem->item_max_absolute[i] = param->i; + mem->item_max_absolute_set[i] = EINA_TRUE; + } + } + for (i = 0; i < ITEM_COUNT; i ++) + { + if (!strcmp(param->name, item_min_absolute_param[i])) + { + mem->item_min_absolute[i] = param->i; + mem->item_min_absolute_set[i] = EINA_TRUE; + } + } } return mem; } static Evas_Object *external_datefield_content_get(void *data __UNUSED__, - const Evas_Object *obj __UNUSED__, const char *content __UNUSED__) + const Evas_Object *obj __UNUSED__, const char *content __UNUSED__) { - ERR("so content"); - return NULL; + ERR("so content"); + return NULL; } static void @@ -292,8 +320,6 @@ external_datefield_params_free(void *params) { Elm_Params_Datefield *mem = params; - if (mem->layout) - eina_stringshare_del(mem->layout); if (mem->format) eina_stringshare_del(mem->format); @@ -301,17 +327,46 @@ external_datefield_params_free(void *params) } static Edje_External_Param_Info external_datefield_params[] = { - EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("layout", "dateandtime", datefield_layout_choices), - EDJE_EXTERNAL_PARAM_INFO_STRING("date_format"), - EDJE_EXTERNAL_PARAM_INFO_BOOL("time_mode"), - EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT("years", 1900), - EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT("months", 1), - EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT("days", 1), - EDJE_EXTERNAL_PARAM_INFO_INT("hours"), - EDJE_EXTERNAL_PARAM_INFO_INT("minutes"), + DEFINE_EXTERNAL_COMMON_PARAMS, + EDJE_EXTERNAL_PARAM_INFO_STRING("format"), + EDJE_EXTERNAL_PARAM_INFO_INT("year"), + EDJE_EXTERNAL_PARAM_INFO_INT("month"), + EDJE_EXTERNAL_PARAM_INFO_INT("date"), + EDJE_EXTERNAL_PARAM_INFO_INT("hour"), + EDJE_EXTERNAL_PARAM_INFO_INT("minute"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm"), + EDJE_EXTERNAL_PARAM_INFO_INT("year_max"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("year_max_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("month_max"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("month_max_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("date_max"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("date_max_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("hour_max"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("hour_max_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("minute_max"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("minute_max_abs"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_max"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_max_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("year_min"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("year_min_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("month_min"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("month_min_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("date_min"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("date_min_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("hour_min"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("hour_min_abs"), + EDJE_EXTERNAL_PARAM_INFO_INT("minute_min"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("minute_min_abs"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_min"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_min_abs"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("year_enable"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("month_enable"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("date_enable"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("hour_enable"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("minute_enable"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("ampm_enable"), EDJE_EXTERNAL_PARAM_INFO_SENTINEL }; DEFINE_EXTERNAL_ICON_ADD(datefield, "datefield"); DEFINE_EXTERNAL_TYPE_SIMPLE(datefield, "Datefield"); -