efl_ui_format: remove supporting default TM format in interface.

Summary:
efl_ui_format printed ERR log in calendar use case.

calendar only accept format as "B,b,h,m,y,Y"

But it doesn't cover that and not supporting TM type.

If there is other widget which one using format interface, It also has own accpeted format.

So i think it should impelment on widget side.

Test Plan: elementary_test -> efl_ui_calendar.

Reviewers: Hermet, singh.amitesh, Jaehyun, zmike, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6871
This commit is contained in:
Woochanlee 2018-11-20 09:59:18 +01:00 committed by Xavi Artigas
parent 4b5304d7f2
commit a1478261b5
4 changed files with 44 additions and 9 deletions

View File

@ -92,18 +92,9 @@ _format_string_check(const char *fmt)
static void
_default_format_cb(void *data, Eina_Strbuf *str, const Eina_Value value)
{
const Eina_Value_Type *type = eina_value_type_get(&value);
Efl_Ui_Format_Data *sd = data;
Eina_Value copy;
if (type == EINA_VALUE_TYPE_TM)
{
struct tm v;
eina_value_get(&value, &v);
eina_strbuf_append_strftime(str, sd->template, &v);
return;
}
if (sd->format_type == FORMAT_TYPE_DOUBLE)
{
double v = 0.0;

View File

@ -1164,6 +1164,48 @@ _efl_ui_calendar_efl_ui_format_format_cb_set(Eo *obj, Efl_Ui_Calendar_Data *sd,
evas_object_smart_changed(obj);
}
static void
_calendar_format_cb(void *data, Eina_Strbuf *str, const Eina_Value value)
{
Efl_Ui_Calendar_Data *sd = data;
const Eina_Value_Type *type = eina_value_type_get(&value);
struct tm v;
if (type == EINA_VALUE_TYPE_TM)
{
eina_value_get(&value, &v);
eina_strbuf_append_strftime(str, sd->format_template, &v);
}
}
static void
_calendar_format_free_cb(void *data)
{
Efl_Ui_Calendar_Data *sd = data;
if (sd && sd->format_template)
{
eina_stringshare_del(sd->format_template);
sd->format_template = NULL;
}
}
EOLIAN static void
_efl_ui_calendar_efl_ui_format_format_string_set(Eo *obj, Efl_Ui_Calendar_Data *sd, const char *template)
{
if (!template) return;
eina_stringshare_replace(&sd->format_template, template);
efl_ui_format_cb_set(obj, sd, _calendar_format_cb, _calendar_format_free_cb);
}
EOLIAN static const char *
_efl_ui_calendar_efl_ui_format_format_string_get(const Eo *obj EINA_UNUSED, Efl_Ui_Calendar_Data *sd)
{
return sd->format_template;
}
EOLIAN static void
_efl_ui_calendar_first_day_of_week_set(Eo *obj, Efl_Ui_Calendar_Data *sd, Efl_Ui_Calendar_Weekday day)
{

View File

@ -112,6 +112,7 @@ class Efl.Ui.Calendar (Efl.Ui.Layout, Efl.Ui.Focus.Composition, Efl.Access.Widge
Efl.Ui.Widget.widget_event;
Efl.Access.Widget.Action.elm_actions { get; }
Efl.Ui.Format.format_cb { set; }
Efl.Ui.Format.format_string { set; get;}
}
events {
changed: void; [[Emitted when the selected date in the calendar is changed]]

View File

@ -42,6 +42,7 @@ struct _Efl_Ui_Calendar_Data
Efl_Ui_Calendar_Weekday first_week_day;
unsigned char first_day_it;
const char *format_template;
Efl_Ui_Format_Func_Cb format_cb;
Eina_Free_Cb format_free_cb;
void *format_cb_data;