diff --git a/legacy/elementary/src/lib/Makefile.am b/legacy/elementary/src/lib/Makefile.am index db95c403ef..fa8a3c0c7b 100644 --- a/legacy/elementary/src/lib/Makefile.am +++ b/legacy/elementary/src/lib/Makefile.am @@ -605,7 +605,8 @@ elm_web.eo \ elm_widget.eo \ elm_win.eo \ elm_widget_item.eo \ -elm_color_item.eo +elm_color_item.eo \ +elm_dayselector_item.eo elm_eolian_c = $(elm_eolian_files:%.eo=%.eo.c) elm_eolian_h = $(elm_eolian_files:%.eo=%.eo.h) @@ -718,7 +719,8 @@ elementaryeolianfiles_DATA = \ elm_web.eo \ elm_win.eo \ elm_widget_item.eo \ - elm_color_item.eo + elm_color_item.eo \ + elm_dayselector_item.eo EXTRA_DIST += ${elementaryeolianfiles_DATA} diff --git a/legacy/elementary/src/lib/elm_dayselector.c b/legacy/elementary/src/lib/elm_dayselector.c index b002922c0f..4cafaed353 100644 --- a/legacy/elementary/src/lib/elm_dayselector.c +++ b/legacy/elementary/src/lib/elm_dayselector.c @@ -60,7 +60,7 @@ _elm_dayselector_elm_widget_translate(Eo *obj EINA_UNUSED, Elm_Dayselector_Data Eina_List *l; char buf[1024]; struct tm time_daysel; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; if (sd->weekdays_names_set) return EINA_TRUE; @@ -85,7 +85,7 @@ _update_items(Evas_Object *obj) Eina_List *l; Eina_Bool rtl; unsigned int last_day; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; ELM_DAYSELECTOR_DATA_GET(obj, sd); @@ -115,7 +115,7 @@ _update_items(Evas_Object *obj) static inline unsigned int _item_location_get(Elm_Dayselector_Data *sd, - Elm_Dayselector_Item *it) + Elm_Dayselector_Item_Data *it) { return (ELM_DAYSELECTOR_MAX - sd->week_start + it->day) % ELM_DAYSELECTOR_MAX; @@ -128,7 +128,7 @@ _elm_dayselector_elm_widget_theme_apply(Eo *obj, Elm_Dayselector_Data *sd) Eina_List *l; char buf[1024]; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_theme_apply()); if (!int_ret) return EINA_FALSE; @@ -158,7 +158,7 @@ _item_del_cb(void *data, { Eina_List *l; char buf[1024]; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; ELM_DAYSELECTOR_DATA_GET(data, sd); @@ -173,7 +173,7 @@ _item_del_cb(void *data, elm_layout_signal_emit(obj, buf, "elm"); VIEW(it) = NULL; - elm_widget_item_free(it); + eo_del((Eo *)EO_OBJ(it)); elm_layout_sizing_eval(obj); break; @@ -187,7 +187,7 @@ _item_signal_emit_cb(void *data, const char *emission, const char *source EINA_UNUSED) { - Elm_Dayselector_Item *it = data; + Elm_Dayselector_Item_Data *it = data; eina_stringshare_replace(&it->day_style, emission); } @@ -197,17 +197,17 @@ _item_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Elm_Dayselector_Item *it = data; + Elm_Dayselector_Item_Data *it = data; evas_object_smart_callback_call(WIDGET(it), SIG_CHANGED, (void *)it->day); } -static Elm_Dayselector_Item * +static Elm_Dayselector_Item_Data * _item_find(const Evas_Object *obj, Elm_Dayselector_Day day) { Eina_List *l; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; ELM_DAYSELECTOR_DATA_GET(obj, sd); @@ -224,7 +224,7 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co int day; char buf[1024]; - Elm_Dayselector_Item *it = NULL; + Elm_Dayselector_Item_Data *it = NULL; if (strcmp(elm_object_widget_type_get(content), "Elm_Check")) return EINA_FALSE; @@ -249,7 +249,8 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co } else { - it = elm_widget_item_new(obj, Elm_Dayselector_Item); + Eo *eo_it = eo_add(ELM_DAYSELECTOR_ITEM_CLASS, obj); + it = eo_data_scope_get(eo_it, ELM_DAYSELECTOR_ITEM_CLASS); it->day = day; snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, it)); @@ -257,7 +258,7 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co eo_do_super(obj, MY_CLASS, int_ret = elm_obj_container_content_set(buf, content)); if (!int_ret) { - elm_widget_item_free(it); + eo_del(eo_it); return EINA_FALSE; } @@ -287,13 +288,20 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co return EINA_TRUE; } +EOLIAN static void +_elm_dayselector_item_eo_base_constructor(Eo *eo_item, Elm_Dayselector_Item_Data *item) +{ + eo_do_super(eo_item, ELM_DAYSELECTOR_ITEM_CLASS, eo_constructor()); + item->base = eo_data_scope_get(eo_item, ELM_WIDGET_ITEM_CLASS); +} + EOLIAN static Evas_Object* _elm_dayselector_elm_container_content_unset(Eo *obj, Elm_Dayselector_Data *sd, const char *item) { int day; char buf[1024]; Evas_Object *content; - Elm_Dayselector_Item *it = NULL; + Elm_Dayselector_Item_Data *it = NULL; day = atoi(item + (strlen(item) - 1)); if (day < 0 || day > ELM_DAYSELECTOR_MAX) return NULL; @@ -323,7 +331,7 @@ _elm_dayselector_elm_container_content_unset(Eo *obj, Elm_Dayselector_Data *sd, elm_layout_signal_emit(obj, buf, "elm"); VIEW(it) = NULL; - elm_widget_item_free(it); + eo_del((Eo *)EO_OBJ(it)); elm_layout_sizing_eval(obj); @@ -334,7 +342,7 @@ static void _items_style_set(Evas_Object *obj) { Eina_List *l; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; unsigned int weekend_last; ELM_DAYSELECTOR_DATA_GET(obj, sd); @@ -424,13 +432,13 @@ _elm_dayselector_evas_object_smart_add(Eo *obj, Elm_Dayselector_Data *priv) EOLIAN static void _elm_dayselector_evas_object_smart_del(Eo *obj, Elm_Dayselector_Data *sd) { - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; EINA_LIST_FREE(sd->items, it) { sd->items = eina_list_remove(sd->items, it); eina_stringshare_del(it->day_style); - elm_widget_item_free(it); + eo_del((Eo *)EO_OBJ(it)); } /* handles freeing sd */ @@ -473,7 +481,7 @@ _elm_dayselector_week_start_set(Eo *obj, Elm_Dayselector_Data *sd, Elm_Dayselect ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); Eina_List *l; char buf[1024]; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; /* just shuffling items, so swalling them directly */ sd->week_start = day; @@ -529,7 +537,7 @@ _elm_dayselector_weekdays_names_set(Eo *obj, Elm_Dayselector_Data *sd, const cha int idx; time_t now; struct tm time_daysel; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; char buf[1024]; if (weekdays) @@ -561,7 +569,7 @@ _elm_dayselector_weekdays_names_get(Eo *obj, Elm_Dayselector_Data *sd EINA_UNUSE { int idx; const char *weekday; - Elm_Dayselector_Item *it; + Elm_Dayselector_Item_Data *it; Eina_List *weekdays = NULL; for (idx = 0; idx < ELM_DAYSELECTOR_MAX; idx++) @@ -586,3 +594,5 @@ _elm_dayselector_class_constructor(Eo_Class *klass) } #include "elm_dayselector.eo.c" +#include "elm_dayselector_item.eo.c" + diff --git a/legacy/elementary/src/lib/elm_dayselector_item.eo b/legacy/elementary/src/lib/elm_dayselector_item.eo new file mode 100644 index 0000000000..a45f06d998 --- /dev/null +++ b/legacy/elementary/src/lib/elm_dayselector_item.eo @@ -0,0 +1,8 @@ +class Elm_Dayselector_Item(Elm_Widget_Item) +{ + legacy_prefix: null; + eo_prefix: elm_dayselector_item; + implements { + Eo.Base.constructor; + } +} diff --git a/legacy/elementary/src/lib/elm_widget_dayselector.h b/legacy/elementary/src/lib/elm_widget_dayselector.h index 77bcb72f66..6ce0d7d9c5 100644 --- a/legacy/elementary/src/lib/elm_widget_dayselector.h +++ b/legacy/elementary/src/lib/elm_widget_dayselector.h @@ -2,6 +2,9 @@ #define ELM_WIDGET_DAYSELECTOR_H #include "Elementary.h" +#include "elm_dayselector_item.eo.h" + +#include "elm_object_item_migration_temp.h" /* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR * CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT @@ -33,10 +36,10 @@ struct _Elm_Dayselector_Data Eina_Bool weekdays_names_set : 1; }; -typedef struct _Elm_Dayselector_Item Elm_Dayselector_Item; -struct _Elm_Dayselector_Item +typedef struct _Elm_Dayselector_Item_Data Elm_Dayselector_Item_Data; +struct _Elm_Dayselector_Item_Data { - ELM_WIDGET_ITEM; + Elm_Widget_Item_Data *base; Elm_Dayselector_Day day; const char *day_style; }; @@ -70,4 +73,7 @@ struct _Elm_Dayselector_Item if (EINA_UNLIKELY(!eo_isa((obj), ELM_DAYSELECTOR_CLASS))) \ return +#define ELM_DAYSELECTOR_ITEM_DATA_GET(o, sd) \ + Elm_Dayselector_Item_Data * sd = eo_data_scope_get((Eo *)o, ELM_DAYSELECTOR_ITEM_CLASS) + #endif