forked from enlightenment/efl
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:
parent
4b5304d7f2
commit
a1478261b5
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue