Elm Dayselector Item: Migrate to Eo
authorDaniel Zaoui <daniel.zaoui@samsung.com>
Sun, 28 Sep 2014 05:13:49 +0000 (08:13 +0300)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Wed, 12 Nov 2014 10:03:54 +0000 (12:03 +0200)
src/lib/Makefile.am
src/lib/elm_dayselector.c
src/lib/elm_dayselector_item.eo [new file with mode: 0644]
src/lib/elm_widget_dayselector.h

index db95c40..fa8a3c0 100644 (file)
@@ -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}
 
index b002922..4cafaed 100644 (file)
@@ -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/src/lib/elm_dayselector_item.eo b/src/lib/elm_dayselector_item.eo
new file mode 100644 (file)
index 0000000..a45f06d
--- /dev/null
@@ -0,0 +1,8 @@
+class Elm_Dayselector_Item(Elm_Widget_Item)
+{
+   legacy_prefix: null;
+   eo_prefix: elm_dayselector_item;
+   implements {
+        Eo.Base.constructor;
+   }
+}
index 77bcb72..6ce0d7d 100644 (file)
@@ -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