#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));
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'",
Elm_Params_Datefield *mem;
Edje_External_Param *param;
const Eina_List *l;
+ int i;
mem = calloc(1, sizeof(Elm_Params_Datefield));
if (!mem)
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
{
Elm_Params_Datefield *mem = params;
- if (mem->layout)
- eina_stringshare_del(mem->layout);
if (mem->format)
eina_stringshare_del(mem->format);
}
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");
-