Elm DiskSelector Item: Migrate to Eo
authorDaniel Zaoui <daniel.zaoui@samsung.com>
Sun, 28 Sep 2014 05:16:04 +0000 (08:16 +0300)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Wed, 12 Nov 2014 10:03:56 +0000 (12:03 +0200)
src/lib/Makefile.am
src/lib/elm_diskselector.c
src/lib/elm_diskselector_common.h
src/lib/elm_diskselector_item.eo [new file with mode: 0644]
src/lib/elm_widget_diskselector.h

index 0938cb9..bd6d451 100644 (file)
@@ -619,7 +619,8 @@ elm_naviframe_item.eo \
 elm_genlist_item.eo \
 elm_gengrid_item.eo \
 elm_list_item.eo \
-elm_toolbar_item.eo
+elm_toolbar_item.eo \
+elm_diskselector_item.eo
 
 elm_eolian_c = $(elm_eolian_files:%.eo=%.eo.c)
 elm_eolian_h = $(elm_eolian_files:%.eo=%.eo.h)
@@ -746,7 +747,8 @@ elementaryeolianfiles_DATA = \
             elm_genlist_item.eo \
             elm_gengrid_item.eo \
             elm_list_item.eo \
-            elm_toolbar_item.eo
+            elm_toolbar_item.eo \
+            elm_diskselector_item.eo
 
 EXTRA_DIST += ${elementaryeolianfiles_DATA}
 
index 0e38e13..3976430 100644 (file)
@@ -4,11 +4,13 @@
 
 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
 #define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
+#define ELM_WIDGET_ITEM_PROTECTED
 
 #include <Elementary.h>
 #include "elm_priv.h"
 #include "elm_widget_diskselector.h"
 #include "elm_interface_scrollable.h"
+#include "elm_diskselector_item.eo.h"
 
 #define DISPLAY_ITEM_NUM_MIN 3
 
@@ -48,20 +50,20 @@ static const Elm_Action key_actions[] = {
 EOLIAN static Eina_Bool
 _elm_diskselector_elm_widget_translate(Eo *obj EINA_UNUSED, Elm_Diskselector_Data *sd)
 {
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
    Eina_List *l;
 
    EINA_LIST_FOREACH(sd->items, l, it)
-     elm_widget_item_translate(it);
+     eo_do((Eo *)EO_OBJ(it), elm_wdg_item_translate());
 
    return EINA_TRUE;
 }
 
 static void
-_selected_item_indicate(Elm_Diskselector_Item *item)
+_selected_item_indicate(Elm_Diskselector_Item_Data *item)
 {
    Eina_List *l;
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
 
    ELM_DISKSELECTOR_DATA_GET(WIDGET(item), sd);
 
@@ -77,7 +79,7 @@ _selected_item_indicate(Elm_Diskselector_Item *item)
 }
 
 static void
-_item_select(Elm_Diskselector_Item *it)
+_item_select(Elm_Diskselector_Item_Data *it)
 {
    if (!it) return;
 
@@ -86,8 +88,8 @@ _item_select(Elm_Diskselector_Item *it)
    sd->selected_item = it;
    _selected_item_indicate(sd->selected_item);
 
-   if (it->func) it->func((void *)it->base.data, WIDGET(it), it);
-   evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
+   if (it->func) it->func((void *)it->base->data, WIDGET(it), EO_OBJ(it));
+   evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, EO_OBJ(it));
 }
 
 static int
@@ -122,7 +124,7 @@ _letters_check(const char *str,
    return pos;
 }
 static void
-_item_signal_emit(Elm_Diskselector_Item *it)
+_item_signal_emit(Elm_Diskselector_Item_Data *it)
 {
    if ((it->icon) && (!it->label))
      edje_object_signal_emit(VIEW(it), "elm,state,icon,only", "elm");
@@ -139,7 +141,7 @@ _string_check_idle_enterer_cb(void *data)
    ELM_DISKSELECTOR_DATA_GET(obj, sd);
 
    int mid, steps, length, diff;
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
    Eina_List *list, *l;
    Evas_Coord ox, ow;
    char buf[1024];
@@ -236,7 +238,7 @@ static Eina_Bool
 _scroller_move(void *data)
 {
    Evas_Object *obj = data;
-   Elm_Diskselector_Item *dit;
+   Elm_Diskselector_Item_Data *dit;
    Eina_List *list, *l;
    Evas_Coord y, w, h;
    int i;
@@ -265,8 +267,7 @@ _scroller_move(void *data)
 
    if (!dit)
      {
-        sd->selected_item =
-          (Elm_Diskselector_Item *)eina_list_nth(sd->items, 0);
+        sd->selected_item = eina_list_nth(sd->items, 0);
         goto end;
      }
 
@@ -299,7 +300,7 @@ _resize_cb(void *data EINA_UNUSED,
          (NULL, NULL, &vw, &vh));
    if (sd->items)
      {
-        Elm_Diskselector_Item *it = sd->items->data;
+        Elm_Diskselector_Item_Data *it = sd->items->data;
         evas_object_size_hint_min_get(VIEW(it), &mw, &mh);
      }
    if (sd->minh < mh) sd->minh = mh;
@@ -327,7 +328,7 @@ _resize_cb(void *data EINA_UNUSED,
 }
 
 static void
-_item_del(Elm_Diskselector_Item *item)
+_item_del(Elm_Diskselector_Item_Data *item)
 {
    if (!item) return;
 
@@ -343,14 +344,13 @@ _sizing_eval(Evas_Object *obj)
    _resize_cb(NULL, NULL, obj, NULL);
 }
 
-static Eina_Bool
-_item_del_pre_hook(Elm_Object_Item *item)
+EOLIAN static Eina_Bool
+_elm_diskselector_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it)
 {
-   Elm_Diskselector_Item *it, *item2, *dit;
+   Elm_Diskselector_Item_Data *item2, *dit;
    Eina_List *l;
    int i = 0;
 
-   it = (Elm_Diskselector_Item *)item;
    Evas_Object *obj = WIDGET(it);
 
    ELM_DISKSELECTOR_DATA_GET(obj, sd);
@@ -366,7 +366,7 @@ _item_del_pre_hook(Elm_Object_Item *item)
      {
         if (sd->items)
           {
-             sd->selected_item = (Elm_Diskselector_Item *)eina_list_nth(sd->items, 0);
+             sd->selected_item = eina_list_nth(sd->items, 0);
              _selected_item_indicate(sd->selected_item);
           }
         else
@@ -453,17 +453,15 @@ _item_del_pre_hook(Elm_Object_Item *item)
    return EINA_TRUE;
 }
 
-static void
-_item_text_set_hook(Elm_Object_Item *item,
+EOLIAN static void
+_elm_diskselector_item_elm_widget_item_part_text_set(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it,
                     const char *part,
                     const char *label)
 {
-   Elm_Diskselector_Item *it;
    Evas_Coord mw, mh;
 
    if (part && strcmp(part, "default")) return;
 
-   it = (Elm_Diskselector_Item *)item;
    eina_stringshare_replace(&it->label, label);
    edje_object_part_text_escaped_set(VIEW(it), "elm.text", it->label);
    _item_signal_emit(it);
@@ -471,17 +469,17 @@ _item_text_set_hook(Elm_Object_Item *item,
    evas_object_size_hint_min_set(VIEW(it), 0, mh);
 }
 
-static const char *
-_item_text_get_hook(const Elm_Object_Item *it,
+EOLIAN static const char *
+_elm_diskselector_item_elm_widget_item_part_text_get(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it,
                     const char *part)
 {
    if (part && strcmp(part, "default")) return NULL;
 
-   return ((Elm_Diskselector_Item *)it)->label;
+   return it->label;
 }
 
 static void
-_item_icon_set(Elm_Diskselector_Item *it,
+_item_icon_set(Elm_Diskselector_Item_Data *it,
                Evas_Object *icon)
 {
    if (it->icon == icon) return;
@@ -502,10 +500,10 @@ _item_icon_set(Elm_Diskselector_Item *it,
 }
 
 static void
-_identical_item_check(Elm_Diskselector_Item *it,
+_identical_item_check(Elm_Diskselector_Item_Data *it,
                       Evas_Object *icon)
 {
-   Elm_Diskselector_Item *dit;
+   Elm_Diskselector_Item_Data *dit;
    Eina_List *l;
    int idx = 0;
    int ic = 0;
@@ -551,24 +549,24 @@ _identical_item_check(Elm_Diskselector_Item *it,
      }
 }
 
-static void
-_item_content_set_hook(Elm_Object_Item *it,
+EOLIAN static void
+_elm_diskselector_item_elm_widget_item_part_content_set(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it,
                        const char *part,
                        Evas_Object *content)
 {
    if (part && strcmp(part, "icon")) return;
 
-   _item_icon_set((Elm_Diskselector_Item *)it, content);
-   _identical_item_check((Elm_Diskselector_Item *)it, content);
+   _item_icon_set(it, content);
+   _identical_item_check(it, content);
 }
 
-static Evas_Object *
-_item_content_get_hook(const Elm_Object_Item *it,
+EOLIAN static Evas_Object *
+_elm_diskselector_item_elm_widget_item_part_content_get(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it,
                        const char *part)
 {
    if (part && strcmp(part, "icon")) return NULL;
 
-   return ((Elm_Diskselector_Item *)it)->icon;
+   return it->icon;
 }
 
 static void
@@ -577,7 +575,7 @@ _item_click_cb(void *data,
                const char *emission EINA_UNUSED,
                const char *source EINA_UNUSED)
 {
-   Elm_Diskselector_Item *it = data;
+   Elm_Diskselector_Item_Data *it = data;
 
    if (!it) return;
    ELM_DISKSELECTOR_DATA_GET(WIDGET(it), sd);
@@ -588,14 +586,14 @@ _item_click_cb(void *data,
         _selected_item_indicate(sd->selected_item);
      }
 
-   if (it->func) it->func((void *)it->base.data, WIDGET(it), it);
-   evas_object_smart_callback_call(WIDGET(it), SIG_CLICKED, it);
+   if (it->func) it->func((void *)it->base->data, WIDGET(it), EO_OBJ(it));
+   evas_object_smart_callback_call(WIDGET(it), SIG_CLICKED, EO_OBJ(it));
 }
 
 static char *
 _access_info_cb(void *data, Evas_Object *obj EINA_UNUSED)
 {
-   Elm_Diskselector_Item *it = (Elm_Diskselector_Item *)data;
+   Elm_Diskselector_Item_Data *it = (Elm_Diskselector_Item_Data *)data;
    const char *txt = NULL;
    if (!it) return NULL;
 
@@ -611,7 +609,7 @@ _access_on_highlight_cb(void *data)
    Evas_Coord bx, by, bw, bh;
    Evas_Coord x, y, w, h;
 
-   Elm_Diskselector_Item *it = (Elm_Diskselector_Item *)data;
+   Elm_Diskselector_Item_Data *it = (Elm_Diskselector_Item_Data *)data;
 
    ELM_DISKSELECTOR_ITEM_CHECK_OR_RETURN(it);
    ELM_DISKSELECTOR_DATA_GET(WIDGET(it), sd);
@@ -626,27 +624,27 @@ _access_on_highlight_cb(void *data)
    eo_do(WIDGET(it), elm_interface_scrollable_region_bring_in(x, y, w, h));
 }
 
-static Elm_Diskselector_Item *
+EOLIAN static void
+_elm_diskselector_item_eo_base_constructor(Eo *eo_it, Elm_Diskselector_Item_Data *it)
+{
+   eo_do_super(eo_it, ELM_DISKSELECTOR_ITEM_CLASS, eo_constructor());
+   it->base = eo_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
+}
+
+static Elm_Diskselector_Item_Data *
 _item_new(Evas_Object *obj,
           Evas_Object *icon,
           const char *label,
           Evas_Smart_Cb func,
           const void *data)
 {
-   Elm_Diskselector_Item *it;
-
-   it = elm_widget_item_new(obj, Elm_Diskselector_Item);
-   if (!it) return NULL;
-
-   elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
-   elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
-   elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
-   elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
-   elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
+   Eo *eo_it = eo_add(ELM_DISKSELECTOR_ITEM_CLASS, obj);
+   if (!eo_it) return NULL;
+   ELM_DISKSELECTOR_ITEM_DATA_GET(eo_it, it);
 
    it->label = eina_stringshare_add(label);
    it->func = func;
-   it->base.data = data;
+   it->base->data = data;
    VIEW(it) = edje_object_add(evas_object_evas_get(obj));
    elm_widget_theme_object_set(obj, VIEW(it), "diskselector", "item",
                                elm_widget_style_get(obj));
@@ -657,11 +655,11 @@ _item_new(Evas_Object *obj,
    evas_object_show(VIEW(it));
 
    if (icon)
-     _item_content_set_hook((Elm_Object_Item *)it, "icon", icon);
+     eo_do(eo_it, elm_wdg_item_part_content_set("icon", icon));
 
    if (it->label)
      {
-        _item_text_set_hook((Elm_Object_Item *)it, "default", it->label);
+        eo_do(eo_it, elm_wdg_item_part_text_set("default", it->label));
         edje_object_signal_callback_add
           (VIEW(it), "elm,action,click", "*", _item_click_cb, it);
      }
@@ -669,15 +667,15 @@ _item_new(Evas_Object *obj,
    //XXX: ACCESS
    if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
      {
-        _elm_access_widget_item_register((Elm_Widget_Item_Data *)it);
+        _elm_access_widget_item_register(it->base);
 
-        _elm_access_text_set(_elm_access_info_get(it->base.access_obj),
+        _elm_access_text_set(_elm_access_info_get(it->base->access_obj),
                              ELM_ACCESS_TYPE, E_("diskselector item"));
-        _elm_access_callback_set(_elm_access_info_get(it->base.access_obj),
+        _elm_access_callback_set(_elm_access_info_get(it->base->access_obj),
                                  ELM_ACCESS_INFO,
                                  _access_info_cb, it);
         _elm_access_on_highlight_hook_set(
-           _elm_access_info_get(it->base.access_obj), _access_on_highlight_cb,
+           _elm_access_info_get(it->base->access_obj), _access_on_highlight_cb,
            it);
      }
 
@@ -789,7 +787,7 @@ EOLIAN static Eina_Bool
 _elm_diskselector_elm_widget_theme_apply(Eo *obj, Elm_Diskselector_Data *sd)
 {
    Eina_List *l;
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
    Evas_Object *blank;
    Eina_Bool int_ret = EINA_FALSE;
    Evas *evas;
@@ -850,7 +848,7 @@ _elm_diskselector_elm_widget_sub_object_del(Eo *obj, Elm_Diskselector_Data *sd,
 {
    Eina_Bool int_ret = EINA_FALSE;
 
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
    const Eina_List *l;
 
    eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_sub_object_del(sobj));
@@ -908,10 +906,10 @@ _elm_diskselector_elm_widget_focus_next(Eo *obj, Elm_Diskselector_Data *sd, Elm_
 {
    Eina_List *items = NULL;
    Eina_List *elist = NULL;
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
 
    EINA_LIST_FOREACH(sd->items, elist, it)
-     items = eina_list_append(items, it->base.access_obj);
+     items = eina_list_append(items, it->base->access_obj);
 
    if (!sd->round)
      {
@@ -933,7 +931,7 @@ static Eina_Bool
 _key_action_move(Evas_Object *obj, const char *params)
 {
    ELM_DISKSELECTOR_DATA_GET(obj, sd);
-   Elm_Diskselector_Item *it = NULL;
+   Elm_Diskselector_Item_Data *it = NULL;
    Eina_List *l = NULL;
    const char *dir = params;
 
@@ -1051,7 +1049,7 @@ static void
 _scroll_animate_stop_cb(Evas_Object *obj,
                         void *data EINA_UNUSED)
 {
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
    Evas_Coord x, w, ox, ow;
    Eina_List *l, *list;
 
@@ -1073,7 +1071,7 @@ _scroll_animate_stop_cb(Evas_Object *obj,
 
    if (!it) return;
    _item_select(it);
-   evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_STOP, it);
+   evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_STOP, EO_OBJ(it));
 }
 
 static void
@@ -1102,21 +1100,21 @@ _scroll_drag_stop_cb(Evas_Object *obj,
 
 static void
 _round_item_del(Elm_Diskselector_Data *sd,
-                Elm_Diskselector_Item *it)
+                Elm_Diskselector_Item_Data *it)
 {
    if (!it) return;
 
    elm_box_unpack(sd->main_box, VIEW(it));
    sd->r_items = eina_list_remove(sd->r_items, it);
    eina_stringshare_del(it->label);
-   elm_widget_item_free(it);
+   eo_del((Eo *)EO_OBJ(it));
 }
 
 static void
 _round_items_del(Elm_Diskselector_Data *sd)
 {
    Eina_List *l;
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
 
    _round_item_del(sd, sd->last);
    sd->last = NULL;
@@ -1160,9 +1158,9 @@ _icon_duplicate(Evas_Object *icon)
 static void
 _round_items_add(Elm_Diskselector_Data *sd)
 {
-   Elm_Diskselector_Item *temp_it;
-   Elm_Diskselector_Item *dit;
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *temp_it;
+   Elm_Diskselector_Item_Data *dit;
+   Elm_Diskselector_Item_Data *it;
    int i = 0;
 
    dit = it = eina_list_nth(sd->items, 0);
@@ -1172,7 +1170,7 @@ _round_items_add(Elm_Diskselector_Data *sd)
      {
         sd->first = _item_new
             (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func,
-            it->base.data);
+            it->base->data);
         sd->first->node = it->node;
         sd->r_items = eina_list_append(sd->r_items, sd->first);
      }
@@ -1185,7 +1183,7 @@ _round_items_add(Elm_Diskselector_Data *sd)
      {
         sd->second = _item_new
             (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func,
-            it->base.data);
+            it->base->data);
         sd->second->node = it->node;
         sd->r_items = eina_list_append(sd->r_items, sd->second);
      }
@@ -1198,7 +1196,7 @@ _round_items_add(Elm_Diskselector_Data *sd)
         if (!it) it = dit;
         temp_it = _item_new
             (WIDGET(it), _icon_duplicate
-              (it->icon), it->label, it->func, it->base.data);
+              (it->icon), it->label, it->func, it->base->data);
         sd->over_items = eina_list_append(sd->over_items, temp_it);
         sd->r_items = eina_list_append(sd->r_items, temp_it);
      }
@@ -1210,7 +1208,7 @@ _round_items_add(Elm_Diskselector_Data *sd)
      {
         sd->last = _item_new
             (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func,
-            it->base.data);
+            it->base->data);
         sd->last->node = it->node;
         sd->r_items = eina_list_prepend(sd->r_items, sd->last);
      }
@@ -1222,7 +1220,7 @@ _round_items_add(Elm_Diskselector_Data *sd)
      {
         sd->s_last = _item_new
             (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func,
-            it->base.data);
+            it->base->data);
         sd->s_last->node = it->node;
         sd->r_items = eina_list_prepend(sd->r_items, sd->s_last);
      }
@@ -1234,7 +1232,7 @@ _round_items_add(Elm_Diskselector_Data *sd)
         if (!it) it = dit;
         temp_it = _item_new
             (WIDGET(it), _icon_duplicate
-              (it->icon), it->label, it->func, it->base.data);
+              (it->icon), it->label, it->func, it->base->data);
         sd->under_items = eina_list_append(sd->under_items, temp_it);
         sd->r_items = eina_list_prepend(sd->r_items, temp_it);
      }
@@ -1320,7 +1318,7 @@ _elm_diskselector_evas_object_smart_add(Eo *obj, Elm_Diskselector_Data *priv)
 EOLIAN static void
 _elm_diskselector_evas_object_smart_del(Eo *obj, Elm_Diskselector_Data *sd)
 {
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
    Eina_List *l;
    Evas_Object *blank;
 
@@ -1336,28 +1334,28 @@ _elm_diskselector_evas_object_smart_del(Eo *obj, Elm_Diskselector_Data *sd)
      {
         eina_stringshare_del(sd->last->label);
         evas_object_del(sd->VIEW(last));
-        free(sd->last);
+        eo_del((Eo *)EO_OBJ(sd->last));
      }
 
    if (sd->s_last)
      {
         eina_stringshare_del(sd->s_last->label);
         evas_object_del(sd->VIEW(s_last));
-        free(sd->s_last);
+        eo_del((Eo *)EO_OBJ(sd->s_last));
      }
 
    if (sd->second)
      {
         eina_stringshare_del(sd->second->label);
         evas_object_del(sd->VIEW(second));
-        free(sd->second);
+        eo_del((Eo *)EO_OBJ(sd->second));
      }
 
    if (sd->first)
      {
         eina_stringshare_del(sd->first->label);
         evas_object_del(sd->VIEW(first));
-        free(sd->first);
+        eo_del((Eo *)EO_OBJ(sd->first));
      }
 
    EINA_LIST_FOREACH(sd->under_items, l, it)
@@ -1366,7 +1364,7 @@ _elm_diskselector_evas_object_smart_del(Eo *obj, Elm_Diskselector_Data *sd)
           {
              eina_stringshare_del(it->label);
              evas_object_del(VIEW(it));
-             free(it);
+             eo_del((Eo *)EO_OBJ(it));
           }
      }
 
@@ -1376,14 +1374,14 @@ _elm_diskselector_evas_object_smart_del(Eo *obj, Elm_Diskselector_Data *sd)
           {
              eina_stringshare_del(it->label);
              evas_object_del(VIEW(it));
-             free(it);
+             eo_del((Eo *)EO_OBJ(it));
           }
      }
 
    EINA_LIST_FREE(sd->items, it)
      {
         _item_del(it);
-        elm_widget_item_free(it);
+        eo_del((Eo *)EO_OBJ(it));
      }
    sd->r_items = eina_list_free(sd->r_items);
 
@@ -1452,7 +1450,7 @@ EOLIAN static void
 _elm_diskselector_round_enabled_set(Eo *obj, Elm_Diskselector_Data *sd, Eina_Bool enabled)
 {
    Eina_List *elist;
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
    Evas_Object *blank;
 
    if (sd->round == enabled)
@@ -1601,7 +1599,7 @@ _elm_diskselector_elm_interface_scrollable_policy_set(Eo *obj, Elm_Diskselector_
 EOLIAN static void
 _elm_diskselector_clear(Eo *obj, Elm_Diskselector_Data *sd)
 {
-   Elm_Diskselector_Item *it;
+   Elm_Diskselector_Item_Data *it;
 
    if (!sd->items) return;
 
@@ -1609,7 +1607,7 @@ _elm_diskselector_clear(Eo *obj, Elm_Diskselector_Data *sd)
    EINA_LIST_FREE(sd->items, it)
      {
         _item_del(it);
-        elm_widget_item_free(it);
+        eo_del((Eo *)EO_OBJ(it));
      }
 
    _round_items_del(sd);
@@ -1626,7 +1624,7 @@ _elm_diskselector_items_get(Eo *obj EINA_UNUSED, Elm_Diskselector_Data *sd)
 EOLIAN static Elm_Object_Item*
 _elm_diskselector_item_append(Eo *obj, Elm_Diskselector_Data *sd, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
 {
-   Elm_Diskselector_Item *it, *dit;
+   Elm_Diskselector_Item_Data *it, *dit;
    Eina_List *elist;
 
    Evas *evas;
@@ -1682,21 +1680,26 @@ _elm_diskselector_item_append(Eo *obj, Elm_Diskselector_Data *sd, const char *la
    evas_event_thaw(evas);
    evas_event_thaw_eval(evas);
 
-   return (Elm_Object_Item *)it;
+   return EO_OBJ(it);
 }
 
 EOLIAN static Elm_Object_Item*
 _elm_diskselector_selected_item_get(Eo *obj EINA_UNUSED, Elm_Diskselector_Data *sd)
 {
-   return (Elm_Object_Item *)sd->selected_item;
+   return EO_OBJ(sd->selected_item);
 }
 
 EAPI void
 elm_diskselector_item_selected_set(Elm_Object_Item *item,
                                    Eina_Bool selected)
 {
-   Elm_Diskselector_Item *it = (Elm_Diskselector_Item *)item;
+   eo_do((Eo *)item, elm_obj_diskselector_item_selected_set(selected));
+}
 
+EOLIAN static void
+_elm_diskselector_item_selected_set(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it,
+                               Eina_Bool selected)
+{
    ELM_DISKSELECTOR_ITEM_CHECK_OR_RETURN(it);
    ELM_DISKSELECTOR_DATA_GET(WIDGET(it), sd);
 
@@ -1712,37 +1715,55 @@ elm_diskselector_item_selected_set(Elm_Object_Item *item,
      }
 
    if (!sd->scroller_move_idle_enterer)
-     sd->scroller_move_idle_enterer = ecore_idle_enterer_before_add(_scroller_move, WIDGET(item));
+     sd->scroller_move_idle_enterer = ecore_idle_enterer_before_add(_scroller_move, WIDGET(it));
 }
 
 EAPI Eina_Bool
 elm_diskselector_item_selected_get(const Elm_Object_Item *it)
 {
+   return eo_do((Eo *)it, elm_obj_diskselector_item_selected_get());
+}
+
+EOLIAN static Eina_Bool
+_elm_diskselector_item_selected_get(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it)
+{
    ELM_DISKSELECTOR_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
    ELM_DISKSELECTOR_DATA_GET(WIDGET(it), sd);
 
-   return sd->selected_item == ((Elm_Diskselector_Item *)it);
+   return sd->selected_item == it;
 }
 
 EAPI Elm_Object_Item *
 elm_diskselector_item_prev_get(const Elm_Object_Item *item)
 {
-   Elm_Diskselector_Item *it = (Elm_Diskselector_Item *)item;
+   return eo_do((Eo *)item, elm_obj_diskselector_item_prev_get());
+}
 
+EOLIAN static Elm_Object_Item *
+_elm_diskselector_item_prev_get(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it)
+{
    ELM_DISKSELECTOR_ITEM_CHECK_OR_RETURN(it, NULL);
+   Elm_Diskselector_Item_Data *prev_it = NULL;
 
-   if (it->node->prev) return it->node->prev->data;
+   if (it->node->prev) prev_it = it->node->prev->data;
+   if (prev_it) return EO_OBJ(prev_it);
    else return NULL;
 }
 
 EAPI Elm_Object_Item *
 elm_diskselector_item_next_get(const Elm_Object_Item *item)
 {
-   Elm_Diskselector_Item *it = (Elm_Diskselector_Item *)item;
+   return eo_do((Eo *)item, elm_obj_diskselector_item_next_get());
+}
 
+EOLIAN static Elm_Object_Item *
+_elm_diskselector_item_next_get(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it)
+{
    ELM_DISKSELECTOR_ITEM_CHECK_OR_RETURN(it, NULL);
+   Elm_Diskselector_Item_Data *next_it = NULL;
 
-   if (it->node->next) return it->node->next->data;
+   if (it->node->next) next_it = it->node->next->data;
+   if (next_it) return EO_OBJ(next_it);
    else return NULL;
 }
 
@@ -1750,14 +1771,18 @@ EOLIAN static Elm_Object_Item*
 _elm_diskselector_first_item_get(Eo *obj EINA_UNUSED, Elm_Diskselector_Data *sd)
 {
    if (!sd || !sd->items) return NULL;
-   else return eina_list_data_get(sd->items);
+   Elm_Diskselector_Item_Data *it = eina_list_data_get(sd->items);
+   if (it) return EO_OBJ(it);
+   else return NULL;
 }
 
 EOLIAN static Elm_Object_Item*
 _elm_diskselector_last_item_get(Eo *obj EINA_UNUSED, Elm_Diskselector_Data *sd)
 {
    if (!sd->items) return NULL;
-   else return eina_list_data_get(eina_list_last(sd->items));
+   Elm_Diskselector_Item_Data *it = eina_list_data_get(eina_list_last(sd->items));
+   if (it) return EO_OBJ(it);
+   else return NULL;
 }
 
 EOLIAN static void
@@ -1799,3 +1824,4 @@ _elm_diskselector_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA
 }
 
 #include "elm_diskselector.eo.c"
+#include "elm_diskselector_item.eo.c"
index 9467d01..a280e4c 100644 (file)
@@ -1,80 +1,8 @@
-/**
- * Set the selected state of an item.
- *
- * @param it The diskselector item
- * @param selected The selected state
- *
- * This sets the selected state of the given item @p it.
- * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
- *
- * If a new item is selected the previously selected will be unselected.
- * Previously selected item can be get with function
- * elm_diskselector_selected_item_get().
- *
- * If the item @p it is unselected, the first item of diskselector will
- * be selected.
- *
- * Selected items will be visible on center position of diskselector.
- * So if it was on another position before selected, or was invisible,
- * diskselector will animate items until the selected item reaches center
- * position.
- *
- * @see elm_diskselector_item_selected_get()
- * @see elm_diskselector_selected_item_get()
- *
- * @ingroup Diskselector
- */
 EAPI void                   elm_diskselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
 
-/*
- * Get whether the @p item is selected or not.
- *
- * @param it The diskselector item.
- * @return @c EINA_TRUE means item is selected. @c EINA_FALSE indicates
- * it's not. If @p obj is @c NULL, @c EINA_FALSE is returned.
- *
- * @see elm_diskselector_selected_item_set() for details.
- * @see elm_diskselector_item_selected_get()
- *
- * @ingroup Diskselector
- */
 EAPI Eina_Bool              elm_diskselector_item_selected_get(const Elm_Object_Item *it);
 
-/**
- * Get the item before @p item in diskselector.
- *
- * @param it The diskselector item.
- * @return The item before @p item, or @c NULL if none or on failure.
- *
- * The list of items follows append order. So it will return item appended
- * just before @p item and that wasn't deleted.
- *
- * If it is the first item, @c NULL will be returned.
- * First item can be get by elm_diskselector_first_item_get().
- *
- * @see elm_diskselector_item_append()
- * @see elm_diskselector_items_get()
- *
- * @ingroup Diskselector
- */
 EAPI Elm_Object_Item *elm_diskselector_item_prev_get(const Elm_Object_Item *it);
 
-/**
- * Get the item after @p item in diskselector.
- *
- * @param it The diskselector item.
- * @return The item after @p item, or @c NULL if none or on failure.
- *
- * The list of items follows append order. So it will return item appended
- * just after @p item and that wasn't deleted.
- *
- * If it is the last item, @c NULL will be returned.
- * Last item can be get by elm_diskselector_last_item_get().
- *
- * @see elm_diskselector_item_append()
- * @see elm_diskselector_items_get()
- *
- * @ingroup Diskselector
- */
 EAPI Elm_Object_Item *elm_diskselector_item_next_get(const Elm_Object_Item *it);
 
diff --git a/src/lib/elm_diskselector_item.eo b/src/lib/elm_diskselector_item.eo
new file mode 100644 (file)
index 0000000..71173d3
--- /dev/null
@@ -0,0 +1,105 @@
+class Elm_Diskselector_Item(Elm_Widget_Item)
+{
+      legacy_prefix: null;
+      eo_prefix: elm_obj_diskselector_item;
+      properties {
+           prev {
+                get {
+                     /*@
+                      Get the item before @p item in diskselector.
+
+                      The list of items follows append order. So it will return item appended
+                      just before @p item and that wasn't deleted.
+
+                      If it is the first item, @c NULL will be returned.
+                      First item can be get by elm_diskselector_first_item_get().
+
+                      @see elm_diskselector_item_append()
+                      @see elm_diskselector_items_get()
+
+                      @ingroup Diskselector
+                      */
+                }
+                values {
+                     Elm_Object_Item *item; /*@ The item before @p item, or @c NULL if none or on failure. */
+                }
+           }
+           next {
+                get {
+                     /*@
+                      Get the item after @p item in diskselector.
+
+                      The list of items follows append order. So it will return item appended
+                      just after @p item and that wasn't deleted.
+
+                      If it is the last item, @c NULL will be returned.
+                      Last item can be get by elm_diskselector_last_item_get().
+
+                      @see elm_diskselector_item_append()
+                      @see elm_diskselector_items_get()
+
+                      @ingroup Diskselector
+                      */
+                }
+                values {
+                     Elm_Object_Item *item; /*@ The item after @p item, or @c NULL if none or on failure. */
+                }
+           }
+           selected {
+                get {
+                     /*@
+                      Get whether the @p item is selected or not.
+
+                      @see elm_diskselector_selected_item_set() for details.
+                      @see elm_diskselector_item_selected_get()
+
+                      @ingroup Diskselector
+                      */
+                }
+                set {
+                     /*@
+                      Set the selected state of an item.
+
+                      This sets the selected state of the given item @p it.
+                      @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+
+                      If a new item is selected the previously selected will be unselected.
+                      Previously selected item can be get with function
+                      elm_diskselector_selected_item_get().
+
+                      If the item @p it is unselected, the first item of diskselector will
+                      be selected.
+
+                      Selected items will be visible on center position of diskselector.
+                      So if it was on another position before selected, or was invisible,
+                      diskselector will animate items until the selected item reaches center
+                      position.
+
+                      @see elm_diskselector_item_selected_get()
+                      @see elm_diskselector_selected_item_get()
+
+                      @ingroup Diskselector
+                      */
+                }
+                values {
+                     Eina_Bool selected; /*@ The selected state */
+                }
+           }
+      }
+      methods {
+           /*      init { FIXME
+                   params {
+                   Evas_Smart_Cb func;
+                   const(void)* data;
+                   }
+                   }*/
+      }
+      implements {
+           Eo.Base.constructor;
+           Elm_Widget_Item.del_pre;
+           Elm_Widget_Item.part_text.get;
+           Elm_Widget_Item.part_text.set;
+           Elm_Widget_Item.part_content.get;
+           Elm_Widget_Item.part_content.set;
+      }
+}
index 1f8f408..b2e816a 100644 (file)
@@ -9,6 +9,7 @@
  * IT AT RUNTIME.
  */
 
+#include "elm_object_item_migration_temp.h"
 /**
  * @addtogroup Widget
  * @{
  * Base widget smart data extended with diskselector instance data.
  */
 typedef struct _Elm_Diskselector_Data Elm_Diskselector_Data;
-typedef struct _Elm_Diskselector_Item       Elm_Diskselector_Item;
+typedef struct _Elm_Diskselector_Item_Data       Elm_Diskselector_Item_Data;
 
 struct _Elm_Diskselector_Data
 {
    Evas_Object                          *hit_rect;
 
    Evas_Object                          *main_box;
-   Elm_Diskselector_Item                *selected_item;
-   Elm_Diskselector_Item                *first;
-   Elm_Diskselector_Item                *second;
-   Elm_Diskselector_Item                *s_last;
-   Elm_Diskselector_Item                *last;
+   Elm_Diskselector_Item_Data           *selected_item;
+   Elm_Diskselector_Item_Data           *first;
+   Elm_Diskselector_Item_Data           *second;
+   Elm_Diskselector_Item_Data           *s_last;
+   Elm_Diskselector_Item_Data           *last;
    Eina_List                            *items;
    Eina_List                            *r_items;
    Eina_List                            *over_items;
@@ -56,9 +57,9 @@ struct _Elm_Diskselector_Data
    Eina_Bool                             right_boundary_reached:1;
 };
 
-struct _Elm_Diskselector_Item
+struct _Elm_Diskselector_Item_Data
 {
-   ELM_WIDGET_ITEM;
+   Elm_Widget_Item_Data     *base;
 
    Eina_List    *node;
    Evas_Object  *icon;
@@ -96,16 +97,19 @@ struct _Elm_Diskselector_Item
     return
 
 #define ELM_DISKSELECTOR_ITEM_CHECK(it)                     \
-  ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item_Data *)it, ); \
-  ELM_DISKSELECTOR_CHECK(it->base.widget);
+  ELM_WIDGET_ITEM_CHECK_OR_RETURN(it->base, ); \
+  ELM_DISKSELECTOR_CHECK(it->base->widget);
 
 #define ELM_DISKSELECTOR_ITEM_CHECK_OR_RETURN(it, ...)                 \
-  ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item_Data *)it, __VA_ARGS__); \
-  ELM_DISKSELECTOR_CHECK(it->base.widget) __VA_ARGS__;
+  ELM_WIDGET_ITEM_CHECK_OR_RETURN(it->base, __VA_ARGS__); \
+  ELM_DISKSELECTOR_CHECK(it->base->widget) __VA_ARGS__;
 
 #define ELM_DISKSELECTOR_ITEM_CHECK_OR_GOTO(it, label)         \
-  ELM_WIDGET_ITEM_CHECK_OR_GOTO((Elm_Widget_Item_Data *)it, label); \
-  if (!it->base.widget || !eo_isa((it->base.widget), ELM_DISKSELECTOR_CLASS)) \
+  ELM_WIDGET_ITEM_CHECK_OR_GOTO(it->base, label); \
+  if (!it->base->widget || !eo_isa((it->base->widget), ELM_DISKSELECTOR_CLASS)) \
            goto label;
 
+#define ELM_DISKSELECTOR_ITEM_DATA_GET(o, sd) \
+  Elm_Diskselector_Item_Data* sd = eo_data_scope_get((Eo *)o, ELM_DISKSELECTOR_ITEM_CLASS)
+
 #endif