elementary: migrate Efl.Ui.List_View to use Efl.Ui.Collection_View.
authorCedric Bail <cedric.bail@free.fr>
Thu, 19 Sep 2019 18:19:56 +0000 (11:19 -0700)
committerJongmin Lee <jm105.lee@samsung.com>
Tue, 24 Sep 2019 21:49:47 +0000 (06:49 +0900)
Differential Revision: https://phab.enlightenment.org/D10035

16 files changed:
src/examples/elementary/efl_ui_list_view_example_1.c
src/examples/elementary/efl_ui_list_view_example_2.c
src/examples/elementary/efl_ui_list_view_example_3.c
src/lib/elementary/Efl_Ui.h
src/lib/elementary/efl_ui_list_view.c
src/lib/elementary/efl_ui_list_view.eo
src/lib/elementary/efl_ui_list_view_model.eo [deleted file]
src/lib/elementary/efl_ui_list_view_pan.eo [deleted file]
src/lib/elementary/efl_ui_list_view_precise_layouter.c [deleted file]
src/lib/elementary/efl_ui_list_view_precise_layouter.eo [deleted file]
src/lib/elementary/efl_ui_list_view_private.h [deleted file]
src/lib/elementary/efl_ui_list_view_relayout.eo [deleted file]
src/lib/elementary/efl_ui_list_view_seg_array.c [deleted file]
src/lib/elementary/efl_ui_list_view_seg_array.h [deleted file]
src/lib/elementary/efl_ui_list_view_types.eot [deleted file]
src/lib/elementary/meson.build

index 757082a..5c1f4f5 100644 (file)
 
 #define NUM_ITEMS 400
 
-const char *styles[] = {
-        "odd",
-        "even"
-   };
-
-char edj_path[PATH_MAX];
-
 static void
 _realized_cb(void *data EINA_UNUSED, const Efl_Event *event)
 {
-   Efl_Ui_List_View_Item_Event *ie = event->info;
-   if (!ie->layout) return;
+   Efl_Gfx_Entity *layout = event->info;
 
-   Efl_Ui_Layout *layout = ie->layout;
    elm_object_focus_allow_set(layout, EINA_TRUE);
 }
 
-/*
-static void
-_unrealized_cb(void *data EINA_UNUSED, const Efl_Event *event)
-{
-   Efl_Ui_List_View_Item_Event *ie = event->info;
-
-   efl_ui_view_model_set(ie->layout, NULL);
-   efl_del(ie->layout);
-}
-*/
 static Efl_Model*
 _make_model(Evas_Object *win)
 {
    Eina_Value vtext;
    Efl_Generic_Model *model, *child;
-   unsigned int i, s;
+   unsigned int i;
    char buf[256];
 
    model = efl_add(EFL_GENERIC_MODEL_CLASS, win);
@@ -54,10 +35,7 @@ _make_model(Evas_Object *win)
 
    for (i = 0; i < (NUM_ITEMS); i++)
      {
-        s = i%2;
         child = efl_model_child_add(model);
-        eina_value_set(&vtext, styles[s]);
-        efl_model_property_set(child, "odd_style", &vtext);
 
         snprintf(buf, sizeof(buf), "Item # %i", i);
         eina_value_set(&vtext, buf);
@@ -88,17 +66,13 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
 
    factory = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win);
    efl_ui_widget_factory_item_class_set(factory, EFL_UI_LIST_DEFAULT_ITEM_CLASS);
-   efl_ui_property_bind(factory, "signal/efl,state,%v", "odd_style");
-   efl_ui_property_bind(factory, "signal/efl,state,%{selected;unselected}", "selected");
    efl_ui_property_bind(factory, "efl.text", "title");
 
-   li = efl_add(EFL_UI_LIST_VIEW_CLASS, win
-     , efl_ui_list_view_layout_factory_set(efl_added, factory)
-     , efl_ui_view_model_set(efl_added, selmodel)
-   );
+   li = efl_add(EFL_UI_LIST_VIEW_CLASS, win,
+                efl_ui_collection_view_factory_set(efl_added, factory),
+                efl_ui_view_model_set(efl_added, selmodel));
 
-   efl_event_callback_add(li, EFL_UI_LIST_VIEW_EVENT_ITEM_REALIZED, _realized_cb, NULL);
-//   efl_event_callback_add(li, EFL_UI_LIST_VIEW_EVENT_ITEM_UNREALIZED, _unrealized_cb, NULL);
+   efl_event_callback_add(li, EFL_UI_COLLECTION_VIEW_EVENT_ITEM_REALIZED, _realized_cb, NULL);
 
    elm_win_resize_object_add(win, li);
    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
index 5a4d680..3464af5 100644 (file)
@@ -37,13 +37,12 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
    efl_ui_property_bind(factory, "efl.text", "filename");
 
    li = efl_add(EFL_UI_LIST_VIEW_CLASS, win);
-   efl_ui_list_view_layout_factory_set(li, factory);
+   efl_ui_collection_view_factory_set(li, factory);
    efl_ui_view_model_set(li, model);
 
    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
 
-
    imgf = efl_add(EFL_UI_IMAGE_FACTORY_CLASS, win);
    efl_ui_property_bind(imgf, "", "path"); //connect to "path" property
    efl_ui_factory_bind(factory, "efl.icon", imgf);
index 5a233b3..ca839bc 100644 (file)
@@ -52,17 +52,15 @@ static void
 _cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Priv_Data *priv = (Priv_Data*)data;
-   efl_unref(priv->model);
+   efl_del(priv->model);
 }
 
 static void
-_focused(void *data, const Efl_Event *event)
+_selected(void *data, const Efl_Event *event)
 {
    Priv_Data *priv = (Priv_Data*)data;
-   Evas_Object *focused = efl_ui_focus_manager_focus_get(event->object);
 
-   if (focused)
-     priv->selected = focused;
+   priv->selected = efl_ui_single_selectable_last_selected_get(event->object);
 }
 
 static void
@@ -77,7 +75,7 @@ _bt_add_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_
    child = efl_model_child_add(priv->model);
 
    eina_value_set(&vtext, elm_object_text_get(priv->e_name));
-   efl_model_property_set(child, "name", &vtext);
+   efl_model_property_set(child, "filename", &vtext);
 
    eina_value_set(&vtext, elm_object_text_get(priv->e_occ));
    efl_model_property_set(child, "occupation", &vtext);
@@ -95,7 +93,6 @@ _bt_del_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_
    Priv_Data *priv = (Priv_Data*)data;
    Eo *child = NULL;
 
-   //l = efl_ui_focus_manager_focus_get(priv->list1);
    if(priv->selected)
      {
         printf("focused %p\n", priv->selected);
@@ -113,21 +110,21 @@ static void
 _bt_none_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Evas_Object *li = data;
-   efl_ui_list_view_select_mode_set(li, ELM_OBJECT_SELECT_MODE_NONE);
+   efl_ui_multi_selectable_async_select_mode_set(li, EFL_UI_SELECT_MODE_NONE);
 }
 
 static void
-_bt_donly_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_bt_donly_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Evas_Object *li = data;
-   efl_ui_list_view_select_mode_set(li, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+   /* Evas_Object *li = data; */
+   /* efl_ui_multi_selectable_async_select_mode_set(li, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); */
 }
 
 static void
 _bt_default_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Evas_Object *li = data;
-   efl_ui_list_view_select_mode_set(li, ELM_OBJECT_SELECT_MODE_DEFAULT);
+   efl_ui_multi_selectable_async_select_mode_set(li, EFL_UI_SELECT_MODE_SINGLE);
 }
 
 static void
@@ -146,28 +143,21 @@ _bt_unset_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EIN
 static void
 _realized_1_cb(void *data EINA_UNUSED, const Efl_Event *event)
 {
-   Efl_Ui_List_View_Item_Event *ie = event->info;
+   Efl_Gfx_Entity *layout = event->info;
 
-   evas_object_size_hint_weight_set(ie->layout, EVAS_HINT_EXPAND, 0);
-   evas_object_size_hint_align_set(ie->layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   efl_ui_property_bind(ie->layout, "efl.text", "name");
-   efl_ui_property_bind(ie->layout, "signal/efl,state,%v", "odd_style");
+   efl_ui_property_bind(layout, "efl.text", "filename");
 }
 
 static void
 _realized_2_cb(void *data EINA_UNUSED, const Efl_Event *event)
 {
-   Efl_Ui_List_View_Item_Event *ie = event->info;
-   printf("relized 2\n");
+   Efl_Gfx_Entity *layout = event->info;
 
-   elm_object_focus_allow_set(ie->layout, EINA_TRUE);
-   evas_object_size_hint_weight_set(ie->layout, EVAS_HINT_EXPAND, 0);
-   evas_object_size_hint_align_set(ie->layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   efl_ui_property_bind(ie->layout, "efl.text", "occupation");
+   efl_ui_property_bind(layout, "efl.text", "occupation");
 }
 
 static Efl_Model*
-_make_model()
+_make_model(void)
 {
    Eina_Value vtext, value;
    Efl_Generic_Model *model, *child;
@@ -182,11 +172,8 @@ _make_model()
      {
         child = efl_model_child_add(model);
 
-        i%2 ? eina_value_set(&vtext, "even") : eina_value_set(&vtext, "odd");
-        efl_model_property_set(child, "odd_style", &vtext);
-
         eina_value_set(&vtext, texts[(i % len)]);
-        efl_model_property_set(child, "name", &vtext);
+        efl_model_property_set(child, "filename", &vtext);
 
         eina_value_set(&vtext, subtexts[(i % len)]);
         efl_model_property_set(child, "occupation", &vtext);
@@ -226,21 +213,20 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
    efl_ui_widget_factory_item_class_set(factory, EFL_UI_LIST_DEFAULT_ITEM_CLASS);
 
    priv->list1 = efl_add(EFL_UI_LIST_VIEW_CLASS, win, efl_ui_view_model_set(efl_added, priv->model));
-   efl_event_callback_add(priv->list1, EFL_UI_LIST_VIEW_EVENT_ITEM_REALIZED, _realized_1_cb, priv);
+   efl_event_callback_add(priv->list1, EFL_UI_COLLECTION_VIEW_EVENT_ITEM_REALIZED, _realized_1_cb, priv);
    evas_object_size_hint_weight_set(priv->list1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(priv->list1, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_box_pack_end(bx, priv->list1);
-   efl_ui_list_view_layout_factory_set(priv->list1, factory);
+   efl_ui_collection_view_factory_set(priv->list1, factory);
 
    factory = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win);
    efl_ui_property_bind(factory, "efl.text", "filename");
-   efl_ui_property_bind(factory, "signal/efl,state,%v", "selected");
    efl_ui_widget_factory_item_class_set(factory, EFL_UI_LIST_DEFAULT_ITEM_CLASS);
    priv->list2 = efl_add(EFL_UI_LIST_VIEW_CLASS, win, efl_ui_view_model_set(efl_added, priv->model));
-   efl_event_callback_add(priv->list2, EFL_UI_LIST_VIEW_EVENT_ITEM_REALIZED, _realized_2_cb, priv->list2);
+   efl_event_callback_add(priv->list2, EFL_UI_COLLECTION_VIEW_EVENT_ITEM_REALIZED, _realized_2_cb, priv->list2);
    evas_object_size_hint_weight_set(priv->list2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(priv->list2, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   efl_ui_list_view_layout_factory_set(priv->list2, factory);
+   efl_ui_collection_view_factory_set(priv->list2, factory);
 
    vbx = elm_box_add(win);
    elm_box_pack_end(bx, vbx);
@@ -313,7 +299,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
    elm_box_pack_end(vbx, bt);
 
    elm_box_pack_end(bx, priv->list2);
-   efl_event_callback_add(priv->list2, EFL_UI_FOCUS_MANAGER_EVENT_MANAGER_FOCUS_CHANGED, _focused ,priv);
+   efl_event_callback_add(priv->list2, EFL_UI_SINGLE_SELECTABLE_EVENT_SELECTION_CHANGED, _selected, priv);
 
    evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, priv);
 
index 4b82c0f..fdbedfa 100644 (file)
@@ -336,6 +336,7 @@ typedef Eo Efl_Ui_Spotlight_Indicator;
 # include <efl_ui_list_view_model.eo.h>
 # include <efl_ui_view_model.eo.h>
 # include <efl_ui_collection_view.eo.h>
+# include <efl_ui_list_view.eo.h>
 
 # include <efl_ui_scroller.eo.h>
 # include <efl_ui_pan.eo.h>
index b469868..efc3dfe 100644 (file)
 #ifdef HAVE_CONFIG_H
 # include "elementary_config.h"
 #endif
-#define EFL_ACCESS_OBJECT_PROTECTED
-#define EFL_ACCESS_SELECTION_PROTECTED
-#define EFL_UI_SCROLL_MANAGER_PROTECTED
-#define EFL_UI_SCROLLBAR_PROTECTED
-#define EFL_UI_FOCUS_COMPOSITION_PROTECTED
-#define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED
 
-#include "elm_priv.h"
-#include "efl_ui_list_view_private.h"
-#include "efl_ui_list_view_precise_layouter.eo.h"
+#include <Efl_Ui.h>
 
-#include <assert.h>
+#define MY_CLASS      EFL_UI_LIST_VIEW_CLASS
+#define MY_CLASS_PFX  efl_ui_list_view
 
-#define MY_CLASS EFL_UI_LIST_VIEW_CLASS
 #define MY_CLASS_NAME "Efl.Ui.List_View"
 
-#define MY_PAN_CLASS EFL_UI_LIST_VIEW_PAN_CLASS
-
-#define SIG_CHILD_ADDED "child,added"
-#define SIG_CHILD_REMOVED "child,removed"
-#define SELECTED_PROP "selected"
-
-static const Evas_Smart_Cb_Description _smart_callbacks[] = {
-   {SIG_CHILD_ADDED, ""},
-   {SIG_CHILD_REMOVED, ""},
-   {NULL, NULL}
-};
-
-void _efl_ui_list_view_custom_layout(Efl_Ui_List_View *);
-void _efl_ui_list_view_item_select_set(Efl_Ui_List_View_Layout_Item*, Eina_Bool);
-
-static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
-static Eina_Bool _key_action_select(Evas_Object *obj, const char *params);
-static Eina_Bool _key_action_escape(Evas_Object *obj, const char *params);
-
-static const Elm_Action key_actions[] = {
-   {"move", _key_action_move},
-   {"select", _key_action_select},
-   {"escape", _key_action_escape},
-   {NULL, NULL}
-};
-
-EOLIAN static void
-_efl_ui_list_view_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd)
-{
-   efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
-   evas_object_smart_changed(psd->wobj);
-}
-
-
-EOLIAN static void
-_efl_ui_list_view_pan_efl_ui_pan_pan_position_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd, Eina_Position2D pos)
-{
-   if ((pos.x == psd->gmt.x) && (pos.y == psd->gmt.y)) return;
-
-   psd->gmt.x = pos.x;
-   psd->gmt.y = pos.y;
-
-   efl_event_callback_call(obj, EFL_UI_PAN_EVENT_PAN_CONTENT_POSITION_CHANGED, &pos);
-   evas_object_smart_changed(psd->wobj);
-}
-
-EOLIAN static Eina_Position2D
-_efl_ui_list_view_pan_efl_ui_pan_pan_position_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd)
-{
-   return psd->gmt.pos;
-}
-
-EOLIAN static Eina_Position2D
-_efl_ui_list_view_pan_efl_ui_pan_pan_position_max_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd)
-{
-   EFL_UI_LIST_VIEW_DATA_GET(psd->wobj, pd);
-   Eina_Rect vgmt = {};
-   Eina_Size2D min = {};
-
-   vgmt = efl_ui_scrollable_viewport_geometry_get(pd->scrl_mgr);
-   min = efl_ui_list_view_model_min_size_get(psd->wobj);
-
-   min.w = min.w - vgmt.w;
-   if (min.w < 0) min.w = 0;
-   min.h = min.h - vgmt.h;
-   if (min.h < 0) min.h = 0;
-
-   return EINA_POSITION2D(min.w, min.h);
-}
-
-EOLIAN static Eina_Position2D
-_efl_ui_list_view_pan_efl_ui_pan_pan_position_min_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd EINA_UNUSED)
-{
-   return EINA_POSITION2D(0, 0);
-}
-
-EOLIAN static Eina_Size2D
-_efl_ui_list_view_pan_efl_ui_pan_content_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd)
-{
-   Eina_Size2D min = {};
-   min = efl_ui_list_view_model_min_size_get(psd->wobj);
-
-   return min;
-}
-
-EOLIAN static void
-_efl_ui_list_view_pan_efl_object_destructor(Eo *obj, Efl_Ui_List_View_Pan_Data *psd EINA_UNUSED)
-{
-   efl_destructor(efl_super(obj, MY_PAN_CLASS));
-}
-
-#include "efl_ui_list_view_pan.eo.c"
-
-static Eina_Bool
-_efl_model_properties_has(Efl_Model *model, Eina_Stringshare *propfind)
-{
-   Eina_Iterator *properties;
-   const char *property;
-   Eina_Bool ret = EINA_FALSE;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(model, EINA_FALSE);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(propfind, EINA_FALSE);
-
-   properties = efl_model_properties_get(model);
-   EINA_ITERATOR_FOREACH(properties, property)
-     {
-        if (property == propfind ||
-            !strcmp(property, propfind))
-          {
-             ret = EINA_TRUE;
-             break;
-          }
-     }
-   eina_iterator_free(properties);
-
-   return ret;
-}
-
-static void
-_list_element_focused(void *data EINA_UNUSED, const Efl_Event *ev)
-{
-   Eina_Rect geom;
-   Eina_Position2D pos;
-   Efl_Ui_Focus_Object *focused = efl_ui_focus_manager_focus_get(ev->object);
-
-   if (!focused) return;
-
-   EFL_UI_LIST_VIEW_DATA_GET(ev->object, pd);
-   geom = efl_ui_focus_object_focus_geometry_get(focused);
-   pos = efl_ui_scrollable_content_pos_get(pd->scrl_mgr);
-
-   geom.x += pos.x;
-   geom.y += pos.y;
-   efl_ui_scrollable_scroll(pd->scrl_mgr, geom, EINA_TRUE);
-}
-
-static void
-_on_item_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *o EINA_UNUSED, void *event_info)
-{
-   Evas_Event_Mouse_Down *ev = event_info;
-   Efl_Ui_List_View_Layout_Item *item = data;
-   Eina_Value *v;
-   Eina_Bool select;
-
-   if (ev->button != 1) return;
-   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-
-   v = efl_model_property_get(item->children, SELECTED_PROP);
-   if (!eina_value_get(v, &select))
-     {
-        WRN("Could not get the select value");
-        eina_value_free(v);
-        return;
-     }
-   _efl_ui_list_view_item_select_set(item, !select);
-   eina_value_free(v);
-}
-
-EOLIAN static void
-_efl_ui_list_view_select_mode_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, Elm_Object_Select_Mode mode)
-{
-   if (pd->select_mode == mode)
-     return;
-
-   pd->select_mode = mode;
-}
-
-EOLIAN static Elm_Object_Select_Mode
-_efl_ui_list_view_select_mode_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   return pd->select_mode;
-}
-
-EOLIAN static void
-_efl_ui_list_view_default_style_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, Eina_Stringshare *style)
-{
-   eina_stringshare_replace(&pd->style, style);
-}
-
-EOLIAN static Eina_Stringshare *
-_efl_ui_list_view_default_style_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   return pd->style;
-}
-
-EOLIAN static void
-_efl_ui_list_view_homogeneous_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, Eina_Bool homogeneous)
-{
-   pd->homogeneous = homogeneous;
-}
-
-EOLIAN static Eina_Bool
-_efl_ui_list_view_homogeneous_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   return pd->homogeneous;
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_List_View_Data *pd, Eina_Position2D pos)
-{
-   if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, pos.x, pos.y))
-     return;
-
-   efl_gfx_entity_position_set(efl_super(obj, MY_CLASS), pos);
-   evas_object_smart_changed(pd->obj);
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_gfx_entity_size_set(Eo *obj, Efl_Ui_List_View_Data *pd, Eina_Size2D size)
-{
-   if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, size.w, size.h))
-     return;
-
-   efl_gfx_entity_size_set(efl_super(obj, MY_CLASS), size);
-
-   evas_object_smart_changed(pd->obj);
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   if (!pd->model)
-     return;
-
-   efl_ui_list_view_relayout_layout_do(pd->relayout, pd->obj, pd->seg_array_first, pd->seg_array);
-
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_canvas_group_group_member_add(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, Evas_Object *member)
-{
-   efl_canvas_group_member_add(efl_super(obj, MY_CLASS), member);
-}
-
-//Scrollable Implement
-static void
-_efl_ui_list_view_bar_read_and_update(Eo *obj)
-{
-   EFL_UI_LIST_VIEW_DATA_GET(obj, pd);
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-   double vx, vy;
-
-   edje_object_part_drag_value_get
-      (wd->resize_obj, "efl.dragable.vbar", NULL, &vy);
-   edje_object_part_drag_value_get
-      (wd->resize_obj, "efl.dragable.hbar", &vx, NULL);
-
-   efl_ui_scrollbar_bar_position_set(pd->scrl_mgr, vx, vy);
-
-  efl_canvas_group_change(pd->pan_obj);
-}
-
-static void
-_efl_ui_list_view_reload_cb(void *data,
-                           Evas_Object *obj EINA_UNUSED,
-                           const char *emission EINA_UNUSED,
-                           const char *source EINA_UNUSED)
-{
-   EFL_UI_LIST_VIEW_DATA_GET(data, pd);
-
-   efl_ui_scrollbar_bar_visibility_update(pd->scrl_mgr);
-}
-
-static void
-_efl_ui_list_view_vbar_drag_cb(void *data,
-                              Evas_Object *obj EINA_UNUSED,
-                              const char *emission EINA_UNUSED,
-                              const char *source EINA_UNUSED)
-{
-   _efl_ui_list_view_bar_read_and_update(data);
-
-   Efl_Ui_Layout_Orientation type = EFL_UI_LAYOUT_ORIENTATION_VERTICAL;
-   efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_DRAGGED, &type);
-}
-
-static void
-_efl_ui_list_view_vbar_press_cb(void *data,
-                               Evas_Object *obj EINA_UNUSED,
-                               const char *emission EINA_UNUSED,
-                               const char *source EINA_UNUSED)
-{
-   Efl_Ui_Layout_Orientation type = EFL_UI_LAYOUT_ORIENTATION_VERTICAL;
-   efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_PRESSED, &type);
-}
-
-static void
-_efl_ui_list_view_vbar_unpress_cb(void *data,
-                                 Evas_Object *obj EINA_UNUSED,
-                                 const char *emission EINA_UNUSED,
-                                 const char *source EINA_UNUSED)
-{
-   Efl_Ui_Layout_Orientation type = EFL_UI_LAYOUT_ORIENTATION_VERTICAL;
-   efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_UNPRESSED, &type);
-}
-
-static void
-_efl_ui_list_view_edje_drag_start_cb(void *data,
-                                 Evas_Object *obj EINA_UNUSED,
-                                 const char *emission EINA_UNUSED,
-                                 const char *source EINA_UNUSED)
-{
-   EFL_UI_LIST_VIEW_DATA_GET(data, pd);
-
-   _efl_ui_list_view_bar_read_and_update(data);
-
-   pd->scrl_freeze = efl_ui_scrollable_scroll_freeze_get(pd->scrl_mgr);
-   efl_ui_scrollable_scroll_freeze_set(pd->scrl_mgr, EINA_TRUE);
-   efl_event_callback_call(data, EFL_UI_EVENT_SCROLL_DRAG_STARTED, NULL);
-}
-
-static void
-_efl_ui_list_view_edje_drag_stop_cb(void *data,
-                                Evas_Object *obj EINA_UNUSED,
-                                const char *emission EINA_UNUSED,
-                                const char *source EINA_UNUSED)
-{
-   EFL_UI_LIST_VIEW_DATA_GET(data, pd);
-
-   _efl_ui_list_view_bar_read_and_update(data);
-
-   efl_ui_scrollable_scroll_freeze_set(pd->scrl_mgr, pd->scrl_freeze);
-   efl_event_callback_call(data, EFL_UI_EVENT_SCROLL_DRAG_FINISHED, NULL);
-}
-
-static void
-_efl_ui_list_view_edje_drag_cb(void *data,
-                           Evas_Object *obj EINA_UNUSED,
-                           const char *emission EINA_UNUSED,
-                           const char *source EINA_UNUSED)
-{
-   _efl_ui_list_view_bar_read_and_update(data);
-}
-
-static void
-_efl_ui_list_view_hbar_drag_cb(void *data,
-                         Evas_Object *obj EINA_UNUSED,
-                         const char *emission EINA_UNUSED,
-                         const char *source EINA_UNUSED)
-{
-   _efl_ui_list_view_bar_read_and_update(data);
-
-   Efl_Ui_Layout_Orientation type = EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL;
-   efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_DRAGGED, &type);
-}
-
-static void
-_efl_ui_list_view_hbar_press_cb(void *data,
-                          Evas_Object *obj EINA_UNUSED,
-                          const char *emission EINA_UNUSED,
-                          const char *source EINA_UNUSED)
-{
-   Efl_Ui_Layout_Orientation type = EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL;
-   efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_PRESSED, &type);
-}
-
-static void
-_efl_ui_list_view_hbar_unpress_cb(void *data,
-                            Evas_Object *obj EINA_UNUSED,
-                            const char *emission EINA_UNUSED,
-                            const char *source EINA_UNUSED)
-{
-   Efl_Ui_Layout_Orientation type = EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL;
-   efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_UNPRESSED, &type);
-}
-
-static void
-_efl_ui_list_view_bar_size_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
-{
-   Eo *obj = data;
-   EFL_UI_LIST_VIEW_DATA_GET(obj, pd);
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   double width = 0.0, height = 0.0;
-
-   efl_ui_scrollbar_bar_size_get(pd->scrl_mgr, &width, &height);
-
-   edje_object_part_drag_size_set(wd->resize_obj, "efl.dragable.hbar", width, 1.0);
-   edje_object_part_drag_size_set(wd->resize_obj, "efl.dragable.vbar", 1.0, height);
-}
-
-static void
-_efl_ui_list_view_bar_pos_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
-{
-   Eo *obj = data;
-   EFL_UI_LIST_VIEW_DATA_GET(obj, pd);
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   double posx = 0.0, posy = 0.0;
-
-   efl_ui_scrollbar_bar_position_get(pd->scrl_mgr, &posx, &posy);
-
-   edje_object_part_drag_value_set(wd->resize_obj, "efl.dragable.hbar", posx, 0.0);
-   edje_object_part_drag_value_set(wd->resize_obj, "efl.dragable.vbar", 0.0, posy);
-}
-
-static void
-_efl_ui_list_view_bar_show_cb(void *data, const Efl_Event *event)
-{
-   Eo *obj = data;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-   Efl_Ui_Layout_Orientation type = *(Efl_Ui_Layout_Orientation *)(event->info);
-
-   if (type == EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)
-     edje_object_signal_emit(wd->resize_obj, "efl,action,show,hbar", "efl");
-   else if (type == EFL_UI_LAYOUT_ORIENTATION_VERTICAL)
-     edje_object_signal_emit(wd->resize_obj, "efl,action,show,vbar", "efl");
-}
-
-static void
-_efl_ui_list_view_bar_hide_cb(void *data, const Efl_Event *event)
-{
-   Eo *obj = data;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-   Efl_Ui_Layout_Orientation type = *(Efl_Ui_Layout_Orientation *)(event->info);
-
-   if (type == EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)
-     edje_object_signal_emit(wd->resize_obj, "efl,action,hide,hbar", "efl");
-   else if (type == EFL_UI_LAYOUT_ORIENTATION_VERTICAL)
-     edje_object_signal_emit(wd->resize_obj, "efl,action,hide,vbar", "efl");
-}
-
-static Eina_Bool
-_efl_ui_list_view_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
-{
-   Eina_Bool ok;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-
-   ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_data, func, func_free_cb);
-
-   return ok;
-}
-
-static Eina_Bool
-_efl_ui_list_view_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
-{
-   Eina_Bool ok;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-
-   ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_data, func, func_free_cb);
-
-   return ok;
-}
-
-static void
-_efl_ui_list_view_edje_object_attach(Eo *obj)
-{
-   efl_layout_signal_callback_add
-     (obj, "reload", "efl",
-      obj, _efl_ui_list_view_reload_cb, NULL);
-  //Vertical bar
-   efl_layout_signal_callback_add
-     (obj, "drag", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_vbar_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,set", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,start", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,stop", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,step", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,page", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "efl,vbar,press", "efl",
-      obj, _efl_ui_list_view_vbar_press_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "efl,vbar,unpress", "efl",
-      obj, _efl_ui_list_view_vbar_unpress_cb, NULL);
-
-   //Horizontal bar
-   efl_layout_signal_callback_add
-     (obj, "drag", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_hbar_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,set", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,start", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,stop", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,step", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "drag,page", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "efl,hbar,press", "efl",
-      obj, _efl_ui_list_view_hbar_press_cb, NULL);
-   efl_layout_signal_callback_add
-     (obj, "efl,hbar,unpress", "efl",
-      obj, _efl_ui_list_view_hbar_unpress_cb, NULL);
-}
-
-static void
-_efl_ui_list_view_edje_object_detach(Evas_Object *obj)
-{
-   efl_layout_signal_callback_del
-     (obj, "reload", "efl",
-      obj, _efl_ui_list_view_reload_cb, NULL);
-   //Vertical bar
-   efl_layout_signal_callback_del
-     (obj, "drag", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_vbar_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,set", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,start", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,stop", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,step", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,page", "efl.dragable.vbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "efl,vbar,press", "efl",
-      obj, _efl_ui_list_view_vbar_press_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "efl,vbar,unpress", "efl",
-      obj, _efl_ui_list_view_vbar_unpress_cb, NULL);
-
-   //Horizontal bar
-   efl_layout_signal_callback_del
-     (obj, "drag", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_hbar_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,set", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,start", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,stop", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,step", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "drag,page", "efl.dragable.hbar",
-      obj, _efl_ui_list_view_edje_drag_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "efl,hbar,press", "efl",
-      obj, _efl_ui_list_view_hbar_press_cb, NULL);
-   efl_layout_signal_callback_del
-     (obj, "efl,hbar,unpress", "efl",
-      obj, _efl_ui_list_view_hbar_unpress_cb, NULL);
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_canvas_group_group_add(Eo *obj, Efl_Ui_List_View_Data *pd)
-{
-   Efl_Ui_List_View_Pan_Data *pan_data;
-   Eina_Size2D min = {};
-   Eina_Bool bounce = _elm_config->thumbscroll_bounce_enable;
-   Evas_Object *o;
-
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   efl_canvas_group_add(efl_super(obj, MY_CLASS));
-
-   elm_widget_can_focus_set(obj, EINA_TRUE);
-
-   if (!elm_layout_theme_set(obj, "list_view", "base", elm_widget_style_get(obj)))
-     CRI("Failed to set layout!");
-
-   pd->scrl_mgr = efl_add(EFL_UI_SCROLL_MANAGER_CLASS, obj,
-                            efl_ui_mirrored_set(efl_added, efl_ui_mirrored_get(obj)));
-   efl_composite_attach(obj, pd->scrl_mgr);
-   pd->pan_obj = efl_add(MY_PAN_CLASS, obj);
-   pan_data = efl_data_scope_get(pd->pan_obj, MY_PAN_CLASS);
-   pan_data->wobj = obj;
-
-   efl_ui_scroll_manager_pan_set(pd->scrl_mgr, pd->pan_obj);
-   efl_ui_scrollable_bounce_enabled_set(pd->scrl_mgr, bounce, bounce);
-
-   edje_object_part_swallow(wd->resize_obj, "efl.content", pd->pan_obj);
-   edje_object_freeze(wd->resize_obj);
-   o = (Evas_Object *)edje_object_part_object_get(wd->resize_obj, "efl.dragable.vbar");
-   edje_object_thaw(wd->resize_obj);
-   efl_gfx_stack_raise_to_top((Eo *)o);
-
-   efl_gfx_entity_visible_set(pd->pan_obj, EINA_TRUE);
-
-   edje_object_size_min_calc(wd->resize_obj, &min.w, &min.h);
-   efl_gfx_hint_size_restricted_min_set(obj, min);
-
-   efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_SIZE_CHANGED,
-                         _efl_ui_list_view_bar_size_changed_cb, obj);
-   efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_POS_CHANGED,
-                         _efl_ui_list_view_bar_pos_changed_cb, obj);
-   efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_SHOW,
-                         _efl_ui_list_view_bar_show_cb, obj);
-   efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_HIDE,
-                          _efl_ui_list_view_bar_hide_cb, obj);
-
-   _efl_ui_list_view_edje_object_attach(obj);
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_canvas_group_group_del(Eo *obj, Efl_Ui_List_View_Data *pd)
-{
-   efl_ui_list_view_relayout_model_set(pd->relayout, NULL);
-
-   ELM_SAFE_FREE(pd->pan_obj, efl_del);
-   efl_canvas_group_del(efl_super(obj, MY_CLASS));
-}
-
-EOLIAN static Efl_Ui_Focus_Manager*
-_efl_ui_list_view_efl_ui_widget_focus_manager_focus_manager_create(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root)
-{
-   if (!pd->manager)
-     pd->manager = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, obj,
-                          efl_ui_focus_manager_root_set(efl_added, root));
-
-   return pd->manager;
-}
-
-EOLIAN static Eo *
-_efl_ui_list_view_efl_object_finalize(Eo *obj, Efl_Ui_List_View_Data *pd)
-{
-   if (!pd->factory)
-     {
-        pd->factory = efl_new(EFL_UI_LAYOUT_FACTORY_CLASS);
-        efl_ui_layout_factory_theme_config(pd->factory, "list_item", NULL, "default");
-     }
-
-   if(!pd->relayout)
-     {
-        pd->relayout = efl_new(EFL_UI_LIST_VIEW_PRECISE_LAYOUTER_CLASS);
-        efl_ui_list_view_relayout_model_set(pd->relayout, pd->model);
-     }
-   return obj;
-}
-
-EOLIAN static Eo *
-_efl_ui_list_view_efl_object_constructor(Eo *obj, Efl_Ui_List_View_Data *pd)
+static Eo *
+_efl_ui_list_view_efl_object_constructor(Eo *obj, void *pd EINA_UNUSED)
 {
    obj = efl_constructor(efl_super(obj, MY_CLASS));
-   pd->obj = obj;
-   efl_canvas_object_type_set(obj, MY_CLASS_NAME);
-   evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
-   efl_access_object_role_set(obj, EFL_ACCESS_ROLE_LIST);
 
-   pd->seg_array = efl_ui_list_view_seg_array_setup(32);
-
-   efl_event_callback_add(obj, EFL_UI_FOCUS_MANAGER_EVENT_MANAGER_FOCUS_CHANGED, _list_element_focused, NULL);
-
-   efl_ui_focus_composition_logical_mode_set(obj, EINA_TRUE);
-
-   pd->style = eina_stringshare_add(elm_widget_style_get(obj));
-
-   pd->factory = NULL;
-   pd->min.w = 0;
-   pd->min.h = 0;
+   efl_ui_collection_view_position_manager_set(obj, efl_new(EFL_UI_POSITION_MANAGER_LIST_CLASS));
 
    return obj;
 }
 
-EOLIAN static void
-_efl_ui_list_view_efl_object_destructor(Eo *obj, Efl_Ui_List_View_Data *pd)
-{
-   efl_event_callback_del(obj, EFL_UI_FOCUS_MANAGER_EVENT_MANAGER_FOCUS_CHANGED,
-                                            _list_element_focused, NULL);
-
-   _efl_ui_list_view_edje_object_detach(obj);
-
-   efl_replace(&pd->model, NULL);
-   efl_replace(&pd->relayout, NULL);
-   efl_replace(&pd->factory, NULL);
-
-   efl_ui_list_view_seg_array_free(pd->seg_array);
-
-   eina_stringshare_del(pd->style);
-   efl_destructor(efl_super(obj, MY_CLASS));
-}
-
-EOLIAN static void
-_efl_ui_list_view_layout_factory_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, Efl_Ui_Factory *factory)
-{
-   efl_replace(&pd->factory, factory);
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_ui_view_model_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, Efl_Model *model)
-{
-   if (!efl_replace(&pd->model, model))
-     return;
-
-   efl_ui_list_view_seg_array_flush(pd->seg_array);
-
-   if (pd->relayout)
-     efl_ui_list_view_relayout_model_set(pd->relayout, pd->model);
-
-   evas_object_smart_changed(pd->obj);
-}
-
-EOLIAN static Efl_Model *
-_efl_ui_list_view_efl_ui_view_model_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   return pd->model;
-}
-
-EOLIAN int
-_efl_ui_list_view_efl_access_selection_selected_children_count_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   return eina_list_count(pd->selected_items);
-}
-
-EOLIAN Eo*
-_efl_ui_list_view_efl_access_selection_selected_child_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, int child_index)
-{
-   if(child_index <  (int) eina_list_count(pd->selected_items))
-     {
-        Efl_Ui_List_View_Layout_Item* items = eina_list_nth(pd->selected_items, child_index);
-        return items[child_index].layout;
-     }
-   else
-     return NULL;
-}
-
-EOLIAN Eina_Bool
-_efl_ui_list_view_efl_access_selection_child_select(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-EOLIAN Eina_Bool
-_efl_ui_list_view_efl_access_selection_selected_child_deselect(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-EOLIAN Eina_Bool
-_efl_ui_list_view_efl_access_selection_is_child_selected(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-EOLIAN Eina_Bool
-_efl_ui_list_view_efl_access_selection_all_children_select(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED)
-{
-   return EINA_TRUE;
-}
-
-EOLIAN Eina_Bool
-_efl_ui_list_view_efl_access_selection_access_selection_clear(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED)
-{
-   return EINA_TRUE;
-}
-
-EOLIAN Eina_Bool
-_efl_ui_list_view_efl_access_selection_child_deselect(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_key_action_move(Evas_Object *obj EINA_UNUSED, const char *params EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_key_action_select(Evas_Object *obj EINA_UNUSED, const char *params EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_key_action_escape(Evas_Object *obj, const char *params EINA_UNUSED)
-{
-   efl_ui_focus_manager_reset_history(obj);
-   return EINA_TRUE;
-}
-
-void
-_efl_ui_list_view_item_select_set(Efl_Ui_List_View_Layout_Item *item, Eina_Bool selected)
-{
-   Eina_Stringshare *sprop;
-   assert(item != NULL);
-   assert(item->children != NULL);
-
-   selected = !!selected;
-
-   sprop = eina_stringshare_add(SELECTED_PROP);
-
-   if (_efl_model_properties_has(item->children, sprop))
-     {
-        Eina_Value v;
-        eina_value_setup(&v, EINA_VALUE_TYPE_BOOL);
-        eina_value_set(&v, selected);
-        efl_model_property_set(item->children, sprop, &v);
-        eina_value_flush(&v);
-     }
-   eina_stringshare_del(sprop);
-}
-
-static Eina_Value
-_children_slice_then(void * data, const Eina_Value v, const Eina_Future *dead_future EINA_UNUSED)
-{
-   Efl_Ui_List_View_Data *pd = data;
-
-   if (eina_value_type_get(&v) == EINA_VALUE_TYPE_ERROR)
-     goto on_error;
-
-   efl_ui_list_view_seg_array_insert_value(pd->seg_array, pd->slice.start, v);
-
-   pd->seg_array_first = pd->slice.start;
-   pd->slice.start = pd->slice.count = 0;
-   pd->slice.future = NULL;
-
-   efl_ui_list_view_relayout_layout_do(pd->relayout, pd->obj, pd->seg_array_first, pd->seg_array);
- on_error:
-   return v;
-}
-
-/* EFL UI LIST MODEL INTERFACE */
-EOLIAN static Eina_Size2D
-_efl_ui_list_view_efl_ui_list_view_model_min_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   return pd->min;
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_ui_list_view_model_min_size_set(Eo *obj, Efl_Ui_List_View_Data *pd, Eina_Size2D min)
-{
-   Eina_Size2D sz;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   pd->min.w = min.w;
-   pd->min.h = min.h;
-
-   efl_gfx_hint_size_min_set(wd->resize_obj, EINA_SIZE2D(pd->min.w, pd->min.h));
-   sz = pd->min;
-   efl_event_callback_call(pd->pan_obj, EFL_UI_PAN_EVENT_PAN_CONTENT_SIZE_CHANGED, &sz);
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_ui_focus_composition_prepare(Eo *obj, Efl_Ui_List_View_Data *pd)
-{
-   Eina_List *order = efl_ui_list_view_relayout_elements_get(pd->relayout);
-   efl_ui_focus_composition_elements_set(obj, order);
-}
-
-EOLIAN Eina_List*
-_efl_ui_list_view_efl_access_object_access_children_get(const Eo *obj, Efl_Ui_List_View_Data *pd)
-{
-   Eina_List *ret = NULL, *ret2 = NULL;
-
-   ret = efl_ui_list_view_relayout_elements_get(pd->relayout);
-
-   //TIZEN_ONLY(20181024): Fix parent-children incosistencies in atspi tree
-   Eo *it;
-   EINA_LIST_FOREACH(ret, ret2, it)
-     {
-        if (efl_isa(it, EFL_ACCESS_OBJECT_MIXIN))
-          efl_access_object_access_parent_set(it, obj);
-     }
-   //
-   ret2 = efl_access_object_access_children_get(efl_super(obj, EFL_UI_LIST_VIEW_CLASS));
-
-   return eina_list_merge(ret, ret2);
-}
-
-EOLIAN static Eina_Bool
-_efl_ui_list_view_efl_ui_widget_focus_state_apply(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, Efl_Ui_Widget_Focus_State current_state, Efl_Ui_Widget_Focus_State *configured_state, Efl_Ui_Widget *redirect EINA_UNUSED)
-{
-   return efl_ui_widget_focus_state_apply(efl_super(obj, MY_CLASS), current_state, configured_state, obj);
-}
-
-typedef struct _Efl_Ui_List_Vuew_Layout_Item_Tracking Efl_Ui_List_View_Layout_Item_Tracking;
-struct _Efl_Ui_List_Vuew_Layout_Item_Tracking
-{
-   Efl_Ui_List_View_Layout_Item *item;
-   Efl_Ui_List_View_Data *pd;
-};
-
-static Eina_Value
-_content_created(Eo *obj, void *data, const Eina_Value value)
-{
-   Efl_Ui_List_View_Layout_Item_Tracking *tracking = data;
-   Efl_Ui_List_View_Layout_Item *item = tracking->item;
-   Efl_Ui_List_View_Item_Event evt;
-
-   if (eina_value_array_count(&value) != 1) return eina_value_error_init(EINVAL);
-   eina_value_array_get(&value, 0, &item->layout);
-
-   efl_canvas_group_member_add(tracking->pd->pan_obj, item->layout);
-   evas_object_event_callback_add(item->layout, EVAS_CALLBACK_MOUSE_UP, _on_item_mouse_up, item);
-
-   if (_elm_config->atspi_mode)
-     {
-        efl_access_added(item->layout);
-        efl_access_children_changed_added_signal_emit(obj, item->layout);
-     }
-
-   evt.child = item->children;
-   evt.layout = item->layout;
-   evt.index = efl_ui_list_view_item_index_get(item);
-   efl_event_callback_call(obj, EFL_UI_LIST_VIEW_EVENT_ITEM_REALIZED, &evt);
-
-   tracking->item->layout_request = NULL;
-   efl_ui_list_view_relayout_content_created(tracking->pd->relayout, item);
-
-   efl_ui_focus_composition_dirty(obj);
-   evas_object_show(item->layout);
-
-   return value;
-}
-
-static void
-_clean_request(Eo *obj EINA_UNUSED, void *data, const Eina_Future *dead_future EINA_UNUSED)
-{
-   Efl_Ui_List_View_Layout_Item_Tracking *tracking = data;
-
-   tracking->item->layout_request = NULL;
-   free(tracking);
-}
-
-EOLIAN static Efl_Ui_List_View_Layout_Item *
-_efl_ui_list_view_efl_ui_list_view_model_realize(Eo *obj, Efl_Ui_List_View_Data *pd, Efl_Ui_List_View_Layout_Item *item)
-{
-   Efl_Ui_List_View_Layout_Item_Tracking *tracking;
-   Efl_Model *childrens[1];
-   EINA_SAFETY_ON_NULL_RETURN_VAL(item->children, item);
-
-   if (!item->children) return item;
-
-   if (item->layout_request) eina_future_cancel(item->layout_request);
-
-   tracking = calloc(1, sizeof (Efl_Ui_List_View_Layout_Item_Tracking));
-   if (!tracking) return item;
-
-   tracking->item = item;
-   tracking->pd = pd;
-   childrens[0] = item->children;
-
-   item->layout_request = efl_ui_view_factory_create_with_event(pd->factory, EINA_C_ARRAY_ITERATOR_NEW(childrens));
-   item->layout_request = efl_future_then(obj, item->layout_request,
-                                          .success = _content_created,
-                                          .success_type = EINA_VALUE_TYPE_ARRAY,
-                                          .data = tracking,
-                                          .free = _clean_request);
-
-   return item;
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_ui_list_view_model_unrealize(Eo *obj, Efl_Ui_List_View_Data *pd, Efl_Ui_List_View_Layout_Item *item)
-{
-   Efl_Ui_List_View_Item_Event evt;
-   Efl_Gfx_Entity *entities[1];
-   EINA_SAFETY_ON_NULL_RETURN(item);
-
-   if (!item->layout)
-     return;
-
-   // First check if the item has been fully realized
-   if (item->layout_request)
-     {
-        eina_future_cancel(item->layout_request);
-        return ;
-     }
-
-   evas_object_event_callback_del_full(item->layout, EVAS_CALLBACK_MOUSE_UP, _on_item_mouse_up, item);
-   if (elm_object_focus_allow_get(item->layout))
-     {
-        if (efl_ui_focus_object_focus_get(item->layout))
-          efl_ui_focus_object_focus_set(item->layout, EINA_FALSE);
-        efl_ui_focus_manager_calc_unregister(obj, item->layout);
-     }
-   evas_object_hide(item->layout);
-   evas_object_move(item->layout, -9999, -9999);
-
-   evt.child = item->children;
-   evt.layout = item->layout;
-   evt.index = efl_ui_list_view_item_index_get(item);
-   efl_event_callback_call(obj, EFL_UI_LIST_VIEW_EVENT_ITEM_UNREALIZED, &evt);
-
-   efl_canvas_group_member_remove(obj, pd->pan_obj);
-   entities[0] = item->layout;
-   efl_ui_factory_release(pd->factory, EINA_C_ARRAY_ITERATOR_NEW(entities));
-   item->layout = NULL;
-}
-
-EOLIAN static void
-_efl_ui_list_view_efl_ui_list_view_model_load_range_set(Eo* obj, Efl_Ui_List_View_Data* pd, int first, int count)
-{
-   if (pd->slice.future) return ;
-
-   pd->slice.start = first;
-   pd->slice.count = count;
-
-   if (efl_model_children_count_get(pd->model))
-     {
-        Eina_Future *f = efl_model_children_slice_get(pd->model, first, count);
-        f = eina_future_then(f, _children_slice_then, pd, NULL);
-        pd->slice.future = efl_future_then(obj, f);
-     }
-}
-
-EOLIAN static int
-_efl_ui_list_view_efl_ui_list_view_model_model_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
-{
-   return efl_model_children_count_get(pd->model);
-}
-
-ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_list_view, Efl_Ui_List_View_Data)
-
-/* Internal EO APIs and hidden overrides */
-
-#define EFL_UI_LIST_VIEW_EXTRA_OPS \
-   EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_list_view)
-
 #include "efl_ui_list_view.eo.c"
-#include "efl_ui_list_view_relayout.eo.c"
-#include "efl_ui_list_view_model.eo.c"
index d552ce4..c4de87d 100644 (file)
@@ -1,97 +1,17 @@
-import elm_general;
-
-struct @beta Efl.Ui.List_View_Item_Event
-{
-   [[Information related to item events.]] // TODO: This needs to be filled in.
-   layout: Efl.Ui.Layout; [[TBD]]
-   child: Efl.Model; [[TBD]]
-   index: int; [[TBD]]
-}
-class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements
-                Efl.Access.Widget.Action, Efl.Access.Selection,
-                Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub,
-                Efl.Ui.Container_Selectable, Efl.Ui.List_View_Model,
-                Efl.Ui.Widget_Focus_Manager
-   composites
-                Efl.Ui.Scrollable, Efl.Ui.Scrollbar
+class @beta Efl.Ui.List_View extends Efl.Ui.Collection_View
 {
-   methods {
-      @property homogeneous {
-         [[When in homogeneous mode, all items have the same height and width.
-           Otherwise, each item's size is respected.
-         ]]
-         get {
-         }
-         set {
-         }
-         values {
-            homogeneous: bool; [[Homogeneous mode setting. Default is $false.]]
-         }
-      }
-      @property select_mode {
-         [[Listview select mode.]]
-         get {}
-         set {}
-         values {
-            mode: Elm.Object.Select_Mode(Elm.Object.Select_Mode.max); [[The select mode.]]
-         }
-      }
-      @property default_style {
-         [[TBD]] // TODO: This needs to be filled in. Does not seem to be in use.
-         values {
-            style: stringshare; [[TBD]]
-         }
-      }
-      @property layout_factory {
-         [[Listview layout factory set.]]
-         set {}
-         values {
-            factory: Efl.Ui.Factory; [[The factory.]]
-         }
-      }
-   }
-   events {
-      item,realized : Efl.Ui.List_View_Item_Event;
-      item,unrealized : Efl.Ui.List_View_Item_Event;
-      item,focused : Efl.Ui.List_View_Item_Event;
-      item,unfocused : Efl.Ui.List_View_Item_Event;
-      item,highlighted : Efl.Ui.List_View_Item_Event;
-      item,unhighlighted : Efl.Ui.List_View_Item_Event;
-   }
+  [[A scrollable list of @Efl.Ui.Item objects, typically @Efl.Ui.List_Default_Item objects.
 
-   implements {
-      Efl.Object.constructor;
-      Efl.Object.finalize;
-      Efl.Object.destructor;
-      Efl.Gfx.Entity.position { set; }
-      Efl.Gfx.Entity.size { set; }
-      // Smart obj
-      Efl.Canvas.Group.group_member_add;
-      Efl.Canvas.Group.group_calculate;
-
-      Efl.Ui.List_View_Model.load_range { set;}
-      Efl.Ui.List_View_Model.realize;
-      Efl.Ui.List_View_Model.unrealize;
-      Efl.Ui.List_View_Model.model_size { get; }
-      Efl.Ui.List_View_Model.min_size { get; set; }
+    Items are added asynchronously by an @Efl.Ui.Factory from the definition of an @Efl.Model.
 
-      // Widget
-      Efl.Ui.Widget_Focus_Manager.focus_manager_create;
-      Efl.Ui.Widget.widget_input_event_handler;
-      Efl.Ui.Widget.focus_state_apply;
-      Efl.Ui.Focus.Composition.prepare;
-      Efl.Ui.View.model { get; set; }
+    The orientation (vertical or horizontal) of the list can be set with
+    @Efl.Ui.Layout_Orientable.orientation.
 
-      Efl.Layout.Signal.signal_callback_add;
-      Efl.Layout.Signal.signal_callback_del;
-      Efl.Access.Object.access_children { get; }
-      Efl.Access.Selection.selected_children_count { get; }
-      Efl.Access.Selection.selected_child { get; }
-      Efl.Access.Selection.selected_child_deselect;
-      Efl.Access.Selection.child_select;
-      Efl.Access.Selection.child_deselect;
-      Efl.Access.Selection.is_child_selected;
-      Efl.Access.Selection.all_children_select;
-      Efl.Access.Selection.access_selection_clear;
+    Items inside this widget can be selected according to the @Efl.Ui.Multi_Selectable_Async.select_mode
+    policy, and the selection can be retrieved with @Efl.Ui.Multi_Selectable_Async.selected_iterator_new.
+  ]]
+   data: null;
+   implements {
+      Efl.Object.constructor;
    }
 }
diff --git a/src/lib/elementary/efl_ui_list_view_model.eo b/src/lib/elementary/efl_ui_list_view_model.eo
deleted file mode 100644 (file)
index cf4780e..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-import efl_ui_list_view_types;
-
-interface @beta Efl.Ui.List_View_Model
-{
-   methods {
-      @property load_range {
-         set {}
-         values {
-            first: int;
-            count: int;
-         }
-      }
-      realize {
-         params {
-            item: ptr(Efl.Ui.List_View_Layout_Item);
-         }
-         return: ptr(Efl.Ui.List_View_Layout_Item);
-      }
-      unrealize {
-         params {
-            item: ptr(Efl.Ui.List_View_Layout_Item);
-         }
-      }
-      @property model_size {
-         get {}
-         values {
-            s: int;
-         }
-      }
-      @property min_size {
-         [[Minimal content size.]]
-         set {}
-         get {}
-         values {
-            min: Eina.Size2D;
-         }
-      }
-
-
-   }
-}
diff --git a/src/lib/elementary/efl_ui_list_view_pan.eo b/src/lib/elementary/efl_ui_list_view_pan.eo
deleted file mode 100644 (file)
index 1bd72a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-class @beta Efl.Ui.List_View_Pan extends Efl.Ui.Pan
-{
-   [[Elementary Efl_Ui_List_View pan class]]
-   implements {
-      Efl.Object.destructor;
-      Efl.Ui.Pan.content_size { get; }
-      Efl.Ui.Pan.pan_position { get; set; }
-      Efl.Ui.Pan.pan_position_min { get; }
-      Efl.Ui.Pan.pan_position_max { get; }
-      Efl.Canvas.Group.group_calculate;
-   }
-}
diff --git a/src/lib/elementary/efl_ui_list_view_precise_layouter.c b/src/lib/elementary/efl_ui_list_view_precise_layouter.c
deleted file mode 100644 (file)
index a7ee6ec..0000000
+++ /dev/null
@@ -1,728 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "elementary_config.h"
-#endif
-
-#include <Elementary.h>
-
-#include <assert.h>
-
-#include "elm_priv.h"
-#include "efl_ui_list_view_relayout.eo.h"
-#include "efl_ui_list_view_seg_array.h"
-
-#define MY_CLASS EFL_UI_LIST_VIEW_PRECISE_LAYOUTER_CLASS
-
-typedef struct _Efl_Ui_List_View_Precise_Layouter_Data
-{
-   Efl_Model* model;
-   Efl_Ui_List_View_Model *modeler;
-   Ecore_Job *calc_job;
-   Efl_Ui_List_View_Seg_Array *seg_array;
-
-   Eina_Size2D min;
-
-   unsigned int calc_progress;
-
-   int count_total;
-
-   Eina_Bool initialized : 1;
-   Eina_Bool recalc : 1;
-   Eina_Bool resize : 1;
-} Efl_Ui_List_View_Precise_Layouter_Data;
-
-typedef struct _Efl_Ui_List_View_Precise_Layouter_Node_Data
-{
-  Eina_Size2D min;
-  Eina_Size2D size;
-
-   Eina_Bool realized;
-} Efl_Ui_List_View_Precise_Layouter_Node_Data;
-
-typedef struct _Efl_Ui_List_View_Precise_Layouter_Callback_Data
-{
-  Efl_Ui_List_View_Precise_Layouter_Data *pd;
-  Efl_Ui_List_View_Layout_Item *item;
-} Efl_Ui_List_View_Precise_Layouter_Callback_Data;
-
-#include "efl_ui_list_view_precise_layouter.eo.h"
-
-static void _efl_ui_list_view_relayout_layout_do(Efl_Ui_List_View_Precise_Layouter_Data *);
-static Eina_Bool _initilize(Eo *, Efl_Ui_List_View_Precise_Layouter_Data*, Efl_Ui_List_View_Model*, Efl_Ui_List_View_Seg_Array*);
-static void _finalize(Eo *, Efl_Ui_List_View_Precise_Layouter_Data*);
-static void _node_realize(Efl_Ui_List_View_Precise_Layouter_Data*, Efl_Ui_List_View_Seg_Array_Node*);
-static void _node_unrealize(Efl_Ui_List_View_Precise_Layouter_Data*, Efl_Ui_List_View_Seg_Array_Node*);
-
-static void
-_item_size_calc(Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Layout_Item* item)
-{
-   int boxx, boxy, boxw, boxh, boxl, boxr, boxt, boxb, pad[4];
-   double align[2];
-   Eina_Bool fill[2];
-   Eina_Size2D max;
-
-   efl_gfx_hint_margin_get(item->layout, &pad[0], &pad[1], &pad[2], &pad[3]);
-   evas_object_geometry_get(pd->modeler, &boxx, &boxy, &boxw, &boxh);
-   efl_gfx_hint_margin_get(pd->modeler, &boxl, &boxr, &boxt, &boxb);
-   efl_gfx_hint_align_get(item->layout, &align[0], &align[1]);
-   efl_gfx_hint_fill_get(item->layout, &fill[0], &fill[1]);
-   max = efl_gfx_hint_size_combined_max_get(item->layout);
-
-   // box outer margin
-   boxw -= boxl + boxr;
-   boxh -= boxt + boxb;
-   boxx += boxl;
-   boxy += boxt;
-
-   if (EINA_DBL_EQ(align[0], -1))
-     {
-        align[0] = 0.5;
-        fill[0] = EINA_TRUE;
-     }
-   else if (align[0] < 0)
-     {
-        align[0] = 0;
-     }
-   if (EINA_DBL_EQ(align[1], -1))
-     {
-        align[1] = 0.5;
-        fill[1] = EINA_TRUE;
-     }
-   else if (align[1] < 0)
-     {
-        align[1] = 0;
-     }
-
-   if (align[0] > 1) align[0] = 1;
-   if (align[1] > 1) align[1] = 1;
-
-   if (max.w <= 0) max.w = INT_MAX;
-   if (max.h <= 0) max.h = INT_MAX;
-   if (max.w < item->min.w) max.w = item->min.w;
-   if (max.h < item->min.h) max.h = item->min.h;
-
-   // horizontally
-   if (max.w < INT_MAX)
-     {
-        item->size.w = MIN(MAX(item->min.w - pad[0] - pad[1], max.w), boxw);
-        item->pos.x = boxx + pad[0];
-     }
-   else if (fill[0])
-     {
-        // fill x
-       item->size.w = boxw - pad[0] - pad[1];
-       item->pos.x = boxx + pad[0];
-     }
-   else
-     {
-        item->size.w = item->min.w - pad[0] - pad[1];
-        item->pos.x = boxx + ((boxw - item->size.w) * align[0]) + pad[0];
-     }
-
-   // vertically
-   if (max.h < INT_MAX)
-     {
-        item->size.h = MIN(MAX(item->min.h - pad[2] - pad[3], max.h), boxh);
-        item->pos.y = boxy + pad[2];
-     }
-   else if (fill[1])
-     {
-        // fill y
-       item->size.h = item->min.h - pad[2] - pad[3];
-       item->pos.y = boxy + pad[2];
-     }
-   else
-     {
-        item->size.h = item->min.h - pad[2] - pad[3];
-        item->pos.y = boxy + ((item->min.h - item->size.h) * align[1]) + pad[2];
-     }
-}
-
-static Eina_Size2D
-_item_min_calc(Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Layout_Item* item)
-{
-   Efl_Ui_List_View_Seg_Array_Node *itemnode = item->tree_node;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata;
-   Efl_Ui_List_View_Layout_Item *layout_item;
-   int i, pad[4];
-
-   Eina_Size2D min = efl_gfx_hint_size_combined_min_get(item->layout);
-
-   efl_gfx_hint_margin_get(item->layout, &pad[0], &pad[1], &pad[2], &pad[3]);
-   min.w += pad[0] + pad[1];
-   min.h += pad[2] + pad[3];
-
-   if (item->min.h == min.h && item->min.w == min.w)
-     return min;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(itemnode, min);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(itemnode->layout_data, min);
-   nodedata = itemnode->layout_data;
-
-   pd->min.h += min.h - item->min.h;
-   nodedata->min.h += min.h - item->min.h;
-
-   if (nodedata->min.w <= min.w)
-     nodedata->min.w = min.w;
-   else if (nodedata->min.w == item->min.w)
-     {
-       nodedata->min.w = 0;
-       for (i = 0; i != itemnode->length; ++i)
-         {
-            layout_item = (Efl_Ui_List_View_Layout_Item *)itemnode->pointers[i];
-            if (nodedata->min.w < layout_item->min.w)
-              nodedata->min.w = layout_item->min.w;
-
-            if (item->min.w == layout_item->min.w)
-              break;
-         }
-     }
-
-   if (pd->min.w <= min.w)
-     pd->min.w = min.w;
-   else if (pd->min.w == item->min.w)
-     {
-        Efl_Ui_List_View_Seg_Array_Node *node2;
-        Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
-        pd->min.w = min.w;
-
-        EINA_ACCESSOR_FOREACH(nodes, i, node2)
-          {
-             Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata2 = node2->layout_data;
-             if (pd->min.w < nodedata2->min.w)
-               pd->min.w = nodedata2->min.w;
-
-             if (item->min.w == nodedata2->min.w)
-               break;
-          }
-       eina_accessor_free(nodes);
-     }
-
-   item->min.w = min.w;
-   item->min.h = min.h;
-   return item->min;
-}
-
-static void
-_on_item_size_hint_change(void *data, Evas *e EINA_UNUSED,
-                    Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
-   Efl_Ui_List_View_Precise_Layouter_Callback_Data *cb_data = data;
-   Efl_Ui_List_View_Precise_Layouter_Data *pd = cb_data->pd;
-   Efl_Ui_List_View_Layout_Item *item = cb_data->item;;
-   Efl_Ui_List_View_Seg_Array_Node *node = item->tree_node;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = node->layout_data;
-
-   _item_min_calc(pd, item);
-   if (!nodedata->realized)
-     {
-        free(evas_object_event_callback_del(item->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hint_change));
-        efl_ui_list_view_model_unrealize(pd->modeler, item);
-     }
-}
-
-static void
-_on_modeler_resize(void *data, Evas *e EINA_UNUSED,
-                    Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
-   Efl_Ui_List_View_Precise_Layouter_Data *pd = data;
-   pd->resize = EINA_TRUE;
-}
-
-typedef struct _Request Request;
-struct _Request
-{
-   Efl_Ui_List_View_Precise_Layouter_Data *pd;
-   unsigned int index;
-};
-
-static Eina_Value
-_children_get(void *data, const Eina_Value v, const Eina_Future *dead_future EINA_UNUSED)
-{
-   Request *r = data;
-
-   if (eina_value_type_get(&v) == EINA_VALUE_TYPE_ERROR)
-     goto on_error;
-
-   efl_ui_list_view_seg_array_insert_value(r->pd->seg_array, r->index, v);
-   r->pd->recalc = EINA_TRUE;
-   evas_object_smart_changed(r->pd->modeler);
-
- on_error:
-   free(r);
-   return v;
-}
-
-static void
-_child_added_cb(void *data, const Efl_Event *event)
-{
-   Efl_Model_Children_Event* evt = event->info;
-   Efl_Ui_List_View_Precise_Layouter_Data *pd = data;
-   Eina_Future *f;
-   Request *r;
-
-   r = calloc(1, sizeof (Request));
-   if (!r) return;
-
-   r->index = evt->index;
-   r->pd = pd;
-
-   f = efl_model_children_slice_get(pd->model, evt->index, 1);
-   f = eina_future_then(f, _children_get, r, NULL);
-}
-
-static void
-_child_removed_cb(void *data, const Efl_Event *event)
-{
-   Efl_Model_Children_Event* evt = event->info;
-   Efl_Ui_List_View_Precise_Layouter_Data *pd = data;
-   Efl_Ui_List_View_Layout_Item *layout_item, *litem;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata;
-   Efl_Ui_List_View_Seg_Array_Node *itemnode;
-   int i;
-
-   litem = efl_ui_list_view_seg_array_remove(pd->seg_array, evt->index);
-   if (!litem) return;
-
-   itemnode = litem->tree_node;
-   nodedata = itemnode->layout_data;
-
-   free(evas_object_event_callback_del(litem->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hint_change));
-
-   pd->min.h -= litem->min.h;
-   nodedata->min.h -= litem->min.h;
-
-   if (nodedata->min.w == litem->min.w)
-     nodedata->min.w = 0;
-
-   for (i = 0; i != itemnode->length; ++i)
-     {
-        layout_item = (Efl_Ui_List_View_Layout_Item *)itemnode->pointers[i];
-        if (nodedata->min.w < layout_item->min.w)
-          nodedata->min.w = layout_item->min.w;
-
-        if (litem->min.w == layout_item->min.w)
-          {
-             nodedata->min.w = layout_item->min.w;
-             break;
-          }
-     }
-
-   if (pd->min.w == litem->min.w)
-     {
-        Efl_Ui_List_View_Seg_Array_Node *node2;
-        Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
-        pd->min.w = 0;
-
-        EINA_ACCESSOR_FOREACH(nodes, i, node2)
-          {
-             Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata2 = node2->layout_data;
-             if (pd->min.w < nodedata2->min.w)
-               pd->min.w = nodedata2->min.w;
-
-             if (litem->min.w == nodedata2->min.w)
-               break;
-          }
-        eina_accessor_free(nodes);
-     }
-   efl_ui_list_view_model_unrealize(pd->modeler, litem);
-
-   free(litem);
-   pd->recalc = EINA_TRUE;
-   evas_object_smart_changed(pd->modeler);
-}
-
-static void
-_child_count_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
-{
-   Efl_Ui_List_View_Precise_Layouter_Data *pd = data;
-   pd->count_total = efl_model_children_count_get(pd->model);
-   if (pd->count_total)
-     efl_event_callback_del(pd->model, EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED, _child_count_changed_cb, pd);
-}
-
-static Eina_Bool
-_initilize(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Model *modeler, Efl_Ui_List_View_Seg_Array *seg_array)
-{
-   if(pd->initialized)
-     return EINA_TRUE;
-
-   efl_replace(&pd->modeler, modeler);
-
-   if(!pd->model || !pd->modeler)
-     return EINA_FALSE;
-
-   pd->recalc = EINA_TRUE;
-   pd->initialized = EINA_TRUE;
-
-   pd->seg_array = seg_array;
-
-   efl_ui_list_view_model_load_range_set(pd->modeler, 0, pd->count_total); // load all
-   efl_event_callback_add(pd->model, EFL_MODEL_EVENT_CHILD_ADDED, _child_added_cb, pd);
-   efl_event_callback_add(pd->model, EFL_MODEL_EVENT_CHILD_REMOVED, _child_removed_cb, pd);
-
-   evas_object_event_callback_add(modeler, EVAS_CALLBACK_RESIZE, _on_modeler_resize, pd);
-   pd->min.w = 0;
-   pd->min.h = 0;
-
-   return EINA_TRUE;
-}
-
-static void
-_finalize(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd)
-{
-   Efl_Ui_List_View_Seg_Array_Node* node;
-   int i = 0;
-
-   if (pd->model)
-     {
-         efl_event_callback_del(pd->model, EFL_MODEL_EVENT_CHILD_ADDED, _child_added_cb, pd);
-         efl_event_callback_del(pd->model, EFL_MODEL_EVENT_CHILD_REMOVED, _child_removed_cb, pd);
-         pd->count_total = 0;
-     }
-
-   if (pd->seg_array)
-     {
-        Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
-        EINA_ACCESSOR_FOREACH(nodes, i, node)
-          {
-             _node_unrealize(pd, node);
-             free(node->layout_data);
-          }
-
-        eina_accessor_free(nodes);
-     }
-
-   pd->min.w = 0;
-   pd->min.h = 0;
-
-   if (pd->modeler)
-     {
-        evas_object_event_callback_del_full(pd->modeler, EVAS_CALLBACK_RESIZE, _on_modeler_resize, pd);
-        efl_ui_list_view_model_min_size_set(pd->modeler, pd->min);
-     }
-
-   pd->seg_array = NULL;
-   efl_replace(&pd->modeler, NULL);
-
-   pd->initialized = EINA_FALSE;
-   pd->recalc = EINA_TRUE;
-}
-
-static void
-_node_realize(Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Seg_Array_Node *node)
-{
-   Efl_Ui_List_View_Layout_Item* layout_item;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = node->layout_data;
-   int i;
-
-   EINA_SAFETY_ON_NULL_RETURN(nodedata);
-   if (nodedata->realized)
-     return;
-
-   nodedata->realized = EINA_TRUE;
-
-   for (i = 0; i != node->length; ++i)
-     {
-       layout_item = (Efl_Ui_List_View_Layout_Item *)node->pointers[i];
-       efl_ui_list_view_model_realize(pd->modeler, layout_item);
-     }
-}
-
-static void
-_node_unrealize(Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Seg_Array_Node *node)
-{
-   Efl_Ui_List_View_Layout_Item* layout_item;
-   Efl_Ui_List_View_Precise_Layouter_Callback_Data *cb_data;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = node->layout_data;
-   int i;
-
-   EINA_SAFETY_ON_NULL_RETURN(nodedata);
-   if (!nodedata->realized)
-     return;
-
-   nodedata->realized = EINA_FALSE;
-
-   for (i = 0; i != node->length; ++i)
-     {
-       layout_item = (Efl_Ui_List_View_Layout_Item *)node->pointers[i];
-       if (layout_item->layout)
-         {
-            cb_data = evas_object_event_callback_del(layout_item->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hint_change);
-            free(cb_data);
-            efl_ui_list_view_model_unrealize(pd->modeler, layout_item);
-         }
-     }
-}
-
-static void
-_calc_range(Efl_Ui_List_View_Precise_Layouter_Data *pd)
-{
-   Efl_Ui_List_View_Seg_Array_Node *node;
-   Evas_Coord ch, ny;
-   Eina_Rect vgmt;
-   Eina_Position2D spos;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata;
-   int i;
-
-   vgmt = efl_ui_scrollable_viewport_geometry_get(pd->modeler);
-   spos = efl_ui_scrollable_content_pos_get(pd->modeler);
-
-   ny = spos.y - (vgmt.h / 2);
-   if (ny < 0) spos.y = 0;
-   else spos.y = ny;
-   vgmt.h *= 2;
-
-   ch = 0;
-   Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
-   EINA_ACCESSOR_FOREACH(nodes, i, node)
-     {
-        nodedata = node->layout_data;
-        if (!nodedata || !nodedata->min.h)
-          continue;
-
-        if ((ch > spos.y || nodedata->min.h + ch > spos.y) && (ch < (spos.y + vgmt.h) || nodedata->min.h + ch < spos.y + vgmt.h))
-          _node_realize(pd, node);
-        else
-          _node_unrealize(pd, node);
-
-        ch += nodedata->min.h;
-     }
-   eina_accessor_free(nodes);
-}
-
-static void
-_calc_size_job(void *data)
-{
-   Efl_Ui_List_View_Precise_Layouter_Data *pd;
-   Efl_Ui_List_View_Seg_Array_Node *node;
-   Efl_Ui_List_View_Layout_Item *layout_item;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata;
-   Eo *obj = data;
-   int i;
-   double start_time = ecore_time_get();
-
-   EINA_SAFETY_ON_NULL_RETURN(data);
-   pd = efl_data_scope_get(obj, MY_CLASS);
-   if (EINA_UNLIKELY(!pd)) return;
-
-   Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
-   while (eina_accessor_data_get(nodes, pd->calc_progress, (void **)&node))
-     {
-        pd->calc_progress++;
-        if (!node->layout_data)
-          node->layout_data = calloc(1, sizeof(Efl_Ui_List_View_Precise_Layouter_Node_Data));
-
-        nodedata = node->layout_data;
-        if (pd->calc_progress == 1)
-          nodedata->realized = EINA_TRUE;
-
-        for (i = 0; i != node->length; ++i)
-          {
-            layout_item = (Efl_Ui_List_View_Layout_Item *)node->pointers[i];
-            EINA_SAFETY_ON_NULL_RETURN(layout_item);
-
-            // cache size of new items
-            if ((layout_item->min.w == 0) && (layout_item->min.h == 0) && (!layout_item->layout))
-              efl_ui_list_view_model_realize(pd->modeler, layout_item);
-          }
-
-        if ( (ecore_time_get() - start_time ) > 0.01 )
-          {
-            ecore_job_del(pd->calc_job);
-            pd->calc_job = ecore_job_add(_calc_size_job, obj);
-            eina_accessor_free(nodes);
-            return;
-          }
-     }
-   eina_accessor_free(nodes);
-   pd->calc_progress = 0;
-   pd->calc_job = NULL;
-   pd->recalc = EINA_FALSE;
-}
-
-EOLIAN static Efl_Object *
-_efl_ui_list_view_precise_layouter_efl_object_constructor(Eo *obj, Efl_Ui_List_View_Precise_Layouter_Data *pd)
-{
-   obj = efl_constructor(efl_super(obj, MY_CLASS));
-   pd->initialized = EINA_FALSE;
-
-   return obj;
-}
-
-EOLIAN static void
-_efl_ui_list_view_precise_layouter_efl_ui_list_view_relayout_content_created(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Layout_Item *item)
-{
-   Efl_Ui_List_View_Precise_Layouter_Callback_Data *cb_data;
-   EINA_SAFETY_ON_NULL_RETURN(item);
-   EINA_SAFETY_ON_NULL_RETURN(item->layout);
-   Efl_Ui_List_View_Seg_Array_Node *node = item->tree_node;
-   Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = node->layout_data;
-
-   Eina_Size2D min = _item_min_calc(pd, item);
-
-   if (min.w && min.h && !nodedata->realized)
-     {
-        efl_ui_list_view_model_unrealize(pd->modeler, item);
-        return;
-     }
-
-   cb_data = calloc(1, sizeof(Efl_Ui_List_View_Precise_Layouter_Callback_Data));
-   if (!cb_data) return;
-   cb_data->pd = pd;
-   cb_data->item = item;
-   evas_object_event_callback_add(item->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hint_change, cb_data);
-
-   _item_size_calc(pd, item);
-}
-
-EOLIAN static Eina_List *
-_efl_ui_list_view_precise_layouter_efl_ui_list_view_relayout_elements_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd)
-{
-   Eina_List *elements_order = NULL;
-   Efl_Ui_List_View_Layout_Item* layout_item;
-   Efl_Ui_List_View_Seg_Array_Node *items_node;
-   int i, j = 0;
-
-   Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
-   EINA_ACCESSOR_FOREACH(nodes, i, items_node)
-     {
-        Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = items_node->layout_data;
-        if (!nodedata || !nodedata->realized)
-            continue;
-
-        for (j = 0; j != items_node->length;++j)
-          {
-             layout_item = (Efl_Ui_List_View_Layout_Item *)items_node->pointers[j];
-             if (layout_item->layout)
-               elements_order = eina_list_append(elements_order, layout_item->layout);
-          }
-     }
-
-   eina_accessor_free(nodes);
-   return elements_order;
-}
-
-EOLIAN static void
-_efl_ui_list_view_precise_layouter_efl_ui_list_view_relayout_model_set(Eo *obj, Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Model *model)
-{
-   _finalize(obj, pd);
-
-   efl_replace(&pd->model, model);
-
-   if (pd->model)
-     {
-        pd->count_total = efl_model_children_count_get(pd->model);
-        if (pd->count_total && pd->modeler)
-          efl_ui_list_view_model_load_range_set(pd->modeler, 0, pd->count_total); // load all
-        else
-          efl_event_callback_add(pd->model, EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED, _child_count_changed_cb, pd);
-     }
-}
-
-static void
-_efl_ui_list_view_relayout_layout_do(Efl_Ui_List_View_Precise_Layouter_Data *pd)
-{
-   Eina_Rect vgmt;
-   Eina_Position2D spos;
-   double cur_pos = 0;
-   Efl_Ui_List_View_Layout_Item* layout_item;
-   Efl_Ui_List_View_Seg_Array_Node *items_node;
-   int i, j = 0;
-   int boxx, boxy, boxw, boxh, extra = 0, rounding = 0;
-   int boxl = 0, boxr = 0, boxt = 0, boxb = 0;
-
-   _calc_range(pd);
-
-   evas_object_geometry_get(pd->modeler, &boxx, &boxy, &boxw, &boxh);
-   efl_gfx_hint_margin_get(pd->modeler, &boxl, &boxr, &boxt, &boxb);
-
-   // box outer margin
-   boxw -= boxl + boxr;
-   boxh -= boxt + boxb;
-   boxx += boxl;
-   boxy += boxt;
-
-   // available space. if <0 we overflow
-   extra = boxh - pd->min.h;
-   if (extra < 0) extra = 0;
-
-   efl_ui_list_view_model_min_size_set(pd->modeler, pd->min);
-
-   vgmt = efl_ui_scrollable_viewport_geometry_get(pd->modeler);
-   spos = efl_ui_scrollable_content_pos_get(pd->modeler);
-
-   Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
-   EINA_ACCESSOR_FOREACH(nodes, i, items_node)
-     {
-        Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = items_node->layout_data;
-        if (!items_node->layout_data)
-          continue;
-
-        if (!nodedata->realized)
-          {
-             cur_pos += nodedata->min.h;
-             continue;
-          }
-
-        for (j = 0; j != items_node->length;++j)
-          {
-             layout_item = (Efl_Ui_List_View_Layout_Item *)items_node->pointers[j];
-             double x, y, w, h;
-             double weight_x, weight_y;
-             if (!(layout_item->min.w && layout_item->min.h))
-               continue;
-
-             // extra rounding up (compensate cumulative error)
-             if ((i == (pd->count_total - 1)) && (cur_pos - floor(cur_pos) >= 0.5))
-               rounding = 1;
-
-             if (layout_item->layout)
-               {
-                  if (pd->resize)
-                    _item_size_calc(pd, layout_item);
-
-                  efl_gfx_hint_weight_get(layout_item->layout, &weight_x, &weight_y);
-               }
-             else
-               {
-                  cur_pos += layout_item->size.h;
-                  continue;
-               }
-
-             x = layout_item->pos.x;
-             y = layout_item->pos.y + cur_pos;
-             w = layout_item->size.w;
-             h = layout_item->size.h + rounding + weight_y * extra;
-             cur_pos += h;
-
-             if (w < pd->min.w) w = pd->min.w;
-             if (w > vgmt.w) w = vgmt.w;
-
-             evas_object_geometry_set(layout_item->layout, (x + 0 - spos.x), (y + 0 - spos.y), w, h);
-          }
-     }
-   eina_accessor_free(nodes);
-
-   pd->resize = EINA_FALSE;
-}
-
-EOLIAN static void
-_efl_ui_list_view_precise_layouter_efl_ui_list_view_relayout_layout_do
-  (Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd
-   , Efl_Ui_List_View_Model *modeler, int first EINA_UNUSED, Efl_Ui_List_View_Seg_Array *seg_array)
-{
-   if (!_initilize(obj, pd, modeler, seg_array) || !pd->seg_array)
-     return;
-
-   if (!pd->calc_job && pd->recalc && efl_ui_list_view_seg_array_count(seg_array) > 0)
-     {
-        // cache size of new items
-        pd->calc_progress = 0;
-        pd->calc_job = ecore_job_add(_calc_size_job, obj);
-        return;
-     }
-
-   _efl_ui_list_view_relayout_layout_do(pd);
-}
-
-#include "efl_ui_list_view_precise_layouter.eo.c"
diff --git a/src/lib/elementary/efl_ui_list_view_precise_layouter.eo b/src/lib/elementary/efl_ui_list_view_precise_layouter.eo
deleted file mode 100644 (file)
index 0a83c0a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-class @beta Efl.Ui.List_View_Precise_Layouter extends Efl.Object implements Efl.Ui.List_View_Relayout
-{
-   implements {
-      Efl.Object.constructor;
-      Efl.Ui.List_View_Relayout.layout_do;
-      Efl.Ui.List_View_Relayout.content_created;
-      Efl.Ui.List_View_Relayout.model { set; }
-      Efl.Ui.List_View_Relayout.elements { get; }
-   }
-}
diff --git a/src/lib/elementary/efl_ui_list_view_private.h b/src/lib/elementary/efl_ui_list_view_private.h
deleted file mode 100644 (file)
index 2443cf4..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef EFL_UI_LIST_VIEW_PRIVATE_H
-#define EFL_UI_LIST_VIEW_PRIVATE_H
-
-#ifdef HAVE_CONFIG_H
-# include "elementary_config.h"
-#endif
-
-#include <Elementary.h>
-#include "efl_ui_list_view_relayout.eo.h"
-#include "efl_ui_list_view_pan.eo.h"
-#include "elm_priv.h"
-
-typedef struct _Efl_Ui_List_View_Data Efl_Ui_List_View_Data;
-int efl_ui_list_view_item_index_get(Efl_Ui_List_View_Layout_Item *item);
-
-#include "efl_ui_list_view_seg_array.h"
-
-struct _Efl_Ui_List_View_Data
-{
-   Eo                           *obj;
-   Eo                           *scrl_mgr;
-   Efl_Ui_List_View_Pan         *pan_obj;
-   Efl_Model                    *model;
-
-   Eina_Stringshare             *style;
-
-   struct {
-      Eina_Future *future;
-
-      int start;
-      int count;
-   } slice;
-
-   Efl_Ui_Layout_Factory        *factory;
-   Eina_List                    *selected_items;
-
-   Efl_Ui_Focus_Manager         *manager;
-   Efl_Ui_List_View_Relayout    *relayout;
-   Efl_Ui_List_View_Seg_Array    *seg_array;
-   int                          seg_array_first;
-
-   Elm_Object_Select_Mode       select_mode;
-   Eina_Size2D                  min;
-
-   Eina_Bool                    homogeneous : 1;
-   Eina_Bool                    scrl_freeze : 1;
-};
-
-typedef struct _Efl_Ui_List_View_Pan_Data Efl_Ui_List_View_Pan_Data;
-
-struct _Efl_Ui_List_View_Pan_Data
-{
-   Eo                     *wobj;
-   Eina_Rect              gmt;
-};
-
-#define EFL_UI_LIST_VIEW_DATA_GET(o, ptr) \
-  Efl_Ui_List_View_Data * ptr = efl_data_scope_get(o, EFL_UI_LIST_VIEW_CLASS)
-
-#define EFL_UI_LIST_VIEW_DATA_GET_OR_RETURN(o, ptr)       \
-  EFL_UI_LIST_VIEW_DATA_GET(o, ptr);                      \
-  if (EINA_UNLIKELY(!ptr))                           \
-    {                                                \
-       ERR("No widget data for object %p (%s)",      \
-           o, evas_object_type_get(o));              \
-       return;                                       \
-    }
-
-#define EFL_UI_LIST_VIEW_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
-  EFL_UI_LIST_VIEW_DATA_GET(o, ptr);                         \
-  if (EINA_UNLIKELY(!ptr))                              \
-    {                                                   \
-       ERR("No widget data for object %p (%s)",         \
-           o, evas_object_type_get(o));                 \
-       return val;                                      \
-    }
-
-#endif
diff --git a/src/lib/elementary/efl_ui_list_view_relayout.eo b/src/lib/elementary/efl_ui_list_view_relayout.eo
deleted file mode 100644 (file)
index 07b5dc6..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-interface @beta Efl.Ui.List_View_Relayout
-{
-   methods {
-      layout_do {
-         params {
-            modeler: Efl.Ui.List_View_Model;
-            first: int;
-            children: ptr(Efl_Ui_List_View_Seg_Array);
-         }
-      }
-      content_created {
-         params {
-            item: ptr(Efl.Ui.List_View_Layout_Item);
-         }
-      }
-      @property model {
-         [[Model that is/will be ]]
-         set {}
-         values {
-            model: Efl.Model; [[Efl model]]
-         }
-      }
-      @property elements {
-         get {}
-         values {
-            elements: list<Efl.Gfx.Entity>; [[The order to use]]
-         }
-      }
-   }
-}
diff --git a/src/lib/elementary/efl_ui_list_view_seg_array.c b/src/lib/elementary/efl_ui_list_view_seg_array.c
deleted file mode 100644 (file)
index 50f33b3..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "elementary_config.h"
-#endif
-
-#include "elm_priv.h"
-#include <assert.h>
-
-#include "efl_ui_list_view_private.h"
-#include "efl_ui_list_view_seg_array.h"
-
-static int
-_search_lookup_cb(Eina_Rbtree const* rbtree, const void* key, int length EINA_UNUSED, void* data EINA_UNUSED)
-{
-  Efl_Ui_List_View_Seg_Array_Node const* node = (void const*)rbtree;
-  int index = *(int*)key;
-  if(index < node->first)
-    {
-      return 1;
-    }
-  else if(index < node->first + node->length)
-    {
-      return 0;
-    }
-  else
-    {
-      return -1;
-    }
-}
-
-static int
-_insert_lookup_cb(Eina_Rbtree const* rbtree, const void* key, int length EINA_UNUSED, void* data EINA_UNUSED)
-{
-  Efl_Ui_List_View_Seg_Array_Node const* node = (void const*)rbtree;
-  int index = *(int*)key;
-  if(index < node->first)
-    {
-      return 1;
-    }
-  else if(index < node->first + node->max)
-    {
-      return 0;
-    }
-  else
-    {
-       return -1;
-    }
-}
-
-static Eina_Rbtree_Direction
-_rbtree_compare(Efl_Ui_List_View_Seg_Array_Node const* left,
-                                             Efl_Ui_List_View_Seg_Array_Node const* right, void* data EINA_UNUSED)
-{
-  if(left->first < right->first)
-    return EINA_RBTREE_LEFT;
-  else
-    return EINA_RBTREE_RIGHT;
-}
-
-static void
-_free_node(Efl_Ui_List_View_Seg_Array_Node* node, void* data EINA_UNUSED)
-{
-   int i = 0;
-
-   while (i < node->length)
-     {
-        Efl_Ui_List_View_Layout_Item* item = node->pointers[i];
-        efl_unref(item->children);
-        free(item);
-        ++i;
-     }
-
-   free(node);
-}
-
-static Efl_Ui_List_View_Seg_Array_Node*
-_alloc_node(Efl_Ui_List_View_Seg_Array* pd, int first)
-{
-   Efl_Ui_List_View_Seg_Array_Node* node;
-   node = calloc(1, sizeof(Efl_Ui_List_View_Seg_Array_Node) + pd->step_size*sizeof(Efl_Ui_List_View_Layout_Item*));
-   if (!node) return NULL;
-   node->first = first;
-   node->max = pd->step_size;
-   pd->root = (void*)eina_rbtree_inline_insert(EINA_RBTREE_GET(pd->root), EINA_RBTREE_GET(node),
-                                                     EINA_RBTREE_CMP_NODE_CB(&_rbtree_compare), NULL);
-   pd->node_count++;
-   return node;
-}
-
-static Efl_Ui_List_View_Layout_Item*
-_create_item_partial(Efl_Model* model)
-{
-   Efl_Ui_List_View_Layout_Item* item = calloc(1, sizeof(Efl_Ui_List_View_Layout_Item));
-   if (!item) return NULL;
-   item->children = efl_ref(model);
-   return item;
-}
-
-static Efl_Ui_List_View_Layout_Item*
-_create_item(Efl_Model* model, Efl_Ui_List_View_Seg_Array_Node* node, unsigned int index)
-{
-   Efl_Ui_List_View_Layout_Item* item =  _create_item_partial(model);
-   item->index_offset = index - node->first;
-   item->tree_node = node;
-   return item;
-}
-
-static void
-_efl_ui_list_view_seg_array_insert_at_node(Efl_Ui_List_View_Seg_Array* pd, int index,
-                            Efl_Ui_List_View_Layout_Item* item, Efl_Ui_List_View_Seg_Array_Node* node)
-{
-   Eina_Iterator* iterator;
-   int pos;
-
-   if(node && node->length != node->max && (index - node->first) <= node->length)
-    {
-       pos = index - node->first;
-       item->tree_node = node;
-       item->index_offset = pos;
-       if(pos < node->length)
-         {
-            assert(node->length != node->max);
-
-            memmove(&node->pointers[pos], &node->pointers[pos+1], sizeof(node->pointers[pos])*(node->length - pos));
-            node->pointers[pos] = item;
-            node->length++;
-         }
-       else
-         {
-            assert(pos == node->length);
-
-            assert(node->length != node->max);
-            node->pointers[pos] = item;
-            node->length++;
-         }
-    }
-  else
-    {
-       node = _alloc_node(pd, index);
-       node->pointers[0] = item;
-       node->length++;
-       item->index_offset = 0;
-       item->tree_node = node;
-    }
-
-   node = (void*)EINA_RBTREE_GET(node)->son[EINA_RBTREE_LEFT];
-   iterator = eina_rbtree_iterator_infix((void*)node);
-   while(eina_iterator_next(iterator, (void**)&node))
-     {
-       node->first++;
-     }
-
-   eina_iterator_free(iterator);
-}
-
-static void
-_efl_ui_list_view_seg_array_insert_object(Efl_Ui_List_View_Seg_Array *pd, unsigned int index, Efl_Model *children)
-{
-   Efl_Ui_List_View_Seg_Array_Node *node;
-
-   node = (void*)eina_rbtree_inline_lookup(EINA_RBTREE_GET(pd->root),
-                                           &index, sizeof(index), &_insert_lookup_cb, NULL);
-   if (!node)
-     {
-        node = _alloc_node(pd, index);
-     }
-
-   assert(node->length < node->max);
-   node->pointers[node->length] = _create_item(children, node, index);
-   node->length++;
-   pd->count++;
-}
-
-typedef struct _Efl_Ui_List_View_Segarray_Eina_Accessor
-{
-   Eina_Accessor vtable;
-   Efl_Ui_List_View_Seg_Array* seg_array;
-} Efl_Ui_List_View_Segarray_Eina_Accessor;
-
-static Eina_Bool
-_efl_ui_list_view_seg_array_accessor_get_at(Efl_Ui_List_View_Segarray_Eina_Accessor* acc,
-                                      int idx, void** data)
-{
-   Efl_Ui_List_View_Seg_Array_Node* node;
-   node = (void*)eina_rbtree_inline_lookup(EINA_RBTREE_GET(acc->seg_array->root),
-                                           &idx, sizeof(idx), &_search_lookup_cb, NULL);
-   if (node && (node->first <= idx && node->first + node->length > idx))
-     {
-         int i = idx - node->first;
-         Efl_Ui_List_View_Layout_Item* item = node->pointers[i];
-         *data = item;
-         return EINA_TRUE;
-     }
-   return EINA_FALSE;
-}
-
-static void*
-_efl_ui_list_view_seg_array_accessor_get_container(Efl_Ui_List_View_Segarray_Eina_Accessor* acc EINA_UNUSED)
-{
-  return NULL;
-}
-
-static void
-_efl_ui_list_view_seg_array_accessor_free(Efl_Ui_List_View_Segarray_Eina_Accessor* acc EINA_UNUSED)
-{
-   free(acc);
-}
-
-static Eina_Bool
-_efl_ui_list_view_seg_array_accessor_lock(Efl_Ui_List_View_Segarray_Eina_Accessor* acc EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_efl_ui_list_view_seg_array_accessor_unlock(Efl_Ui_List_View_Segarray_Eina_Accessor* acc EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-static Eina_Accessor*
-_efl_ui_list_view_seg_array_accessor_clone(Efl_Ui_List_View_Segarray_Eina_Accessor* acc EINA_UNUSED)
-{
-   return &acc->vtable;
-}
-
-static void
-_efl_ui_list_view_seg_array_accessor_setup(Efl_Ui_List_View_Segarray_Eina_Accessor* acc, Efl_Ui_List_View_Seg_Array* seg_array)
-{
-   EINA_MAGIC_SET(&acc->vtable, EINA_MAGIC_ACCESSOR);
-   acc->vtable.version = EINA_ACCESSOR_VERSION;
-   acc->vtable.get_at = FUNC_ACCESSOR_GET_AT(_efl_ui_list_view_seg_array_accessor_get_at);
-   acc->vtable.get_container = FUNC_ACCESSOR_GET_CONTAINER(_efl_ui_list_view_seg_array_accessor_get_container);
-   acc->vtable.free = FUNC_ACCESSOR_FREE(_efl_ui_list_view_seg_array_accessor_free);
-   acc->vtable.lock = FUNC_ACCESSOR_LOCK(_efl_ui_list_view_seg_array_accessor_lock);
-   acc->vtable.unlock = FUNC_ACCESSOR_LOCK(_efl_ui_list_view_seg_array_accessor_unlock);
-   acc->vtable.clone = FUNC_ACCESSOR_CLONE(_efl_ui_list_view_seg_array_accessor_clone);
-   acc->seg_array = seg_array;
-}
-
-typedef struct _Efl_Ui_List_View_Segarray_Node_Accessor
-{
-   Eina_Accessor vtable;
-   Efl_Ui_List_View_Seg_Array* seg_array;
-   Eina_Iterator* pre_iterator;
-   Efl_Ui_List_View_Seg_Array_Node* current_node;
-   int current_index;
-} Efl_Ui_List_View_Segarray_Node_Accessor;
-
-static Eina_Bool
-_efl_ui_list_view_seg_array_node_accessor_get_at(Efl_Ui_List_View_Segarray_Node_Accessor* acc,
-                                      int idx, void** data)
-{
-   if(idx == acc->current_index && acc->current_node)
-     {
-        (*data) = acc->current_node;
-     }
-   else
-     {
-       if(acc->current_index >= idx || !acc->current_node)
-         {
-            eina_iterator_free(acc->pre_iterator);
-            acc->pre_iterator = NULL;
-            acc->current_node = NULL;
-            acc->current_index = -1;
-         }
-
-       if(!acc->pre_iterator)
-         acc->pre_iterator = eina_rbtree_iterator_infix((void*)acc->seg_array->root);
-
-       for(;acc->current_index != idx;++acc->current_index)
-         {
-         if(!eina_iterator_next(acc->pre_iterator, (void**)&acc->current_node))
-           {
-             --acc->current_index;
-             return EINA_FALSE;
-           }
-         }
-       (*data) = acc->current_node;
-       return EINA_TRUE;
-     }
-   return EINA_FALSE;
-}
-
-static void*
-_efl_ui_list_view_seg_array_node_accessor_get_container(Efl_Ui_List_View_Segarray_Node_Accessor* acc EINA_UNUSED)
-{
-  return NULL;
-}
-
-static void
-_efl_ui_list_view_seg_array_node_accessor_free(Efl_Ui_List_View_Segarray_Node_Accessor* acc EINA_UNUSED)
-{
-   if (acc->pre_iterator)
-     eina_iterator_free(acc->pre_iterator);
-   free(acc);
-}
-
-static Eina_Bool
-_efl_ui_list_view_seg_array_node_accessor_lock(Efl_Ui_List_View_Segarray_Node_Accessor* acc EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_efl_ui_list_view_seg_array_node_accessor_unlock(Efl_Ui_List_View_Segarray_Node_Accessor* acc EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
-static Eina_Accessor*
-_efl_ui_list_view_seg_array_node_accessor_clone(Efl_Ui_List_View_Segarray_Node_Accessor* acc EINA_UNUSED)
-{
-   return &acc->vtable;
-}
-
-static void
-_efl_ui_list_view_seg_array_node_accessor_setup(Efl_Ui_List_View_Segarray_Node_Accessor* acc, Efl_Ui_List_View_Seg_Array* seg_array)
-{
-   EINA_MAGIC_SET(&acc->vtable, EINA_MAGIC_ACCESSOR);
-   acc->vtable.version = EINA_ACCESSOR_VERSION;
-   acc->vtable.get_at = FUNC_ACCESSOR_GET_AT(_efl_ui_list_view_seg_array_node_accessor_get_at);
-   acc->vtable.get_container = FUNC_ACCESSOR_GET_CONTAINER(_efl_ui_list_view_seg_array_node_accessor_get_container);
-   acc->vtable.free = FUNC_ACCESSOR_FREE(_efl_ui_list_view_seg_array_node_accessor_free);
-   acc->vtable.lock = FUNC_ACCESSOR_LOCK(_efl_ui_list_view_seg_array_node_accessor_lock);
-   acc->vtable.unlock = FUNC_ACCESSOR_LOCK(_efl_ui_list_view_seg_array_node_accessor_unlock);
-   acc->vtable.clone = FUNC_ACCESSOR_CLONE(_efl_ui_list_view_seg_array_node_accessor_clone);
-   acc->seg_array = seg_array;
-   acc->pre_iterator = NULL;
-   acc->current_index = -1;
-   acc->current_node = NULL;
-}
-
-/* External Functions */
-
-Efl_Ui_List_View_Seg_Array *
-efl_ui_list_view_seg_array_setup(int size)
-{
-   Efl_Ui_List_View_Seg_Array *pd = calloc(1, sizeof(Efl_Ui_List_View_Seg_Array));
-   if (!pd) return NULL;
-   pd->step_size = size;
-
-   return pd;
-}
-
-void
-efl_ui_list_view_seg_array_free(Efl_Ui_List_View_Seg_Array *pd)
-{
-   if (pd->root)
-     eina_rbtree_delete(EINA_RBTREE_GET(pd->root), EINA_RBTREE_FREE_CB(_free_node), NULL);
-
-   pd->root = NULL;
-   free(pd);
-}
-
-void
-efl_ui_list_view_seg_array_flush(Efl_Ui_List_View_Seg_Array *pd)
-{
-   if (pd->root)
-     eina_rbtree_delete(EINA_RBTREE_GET(pd->root), EINA_RBTREE_FREE_CB(_free_node), NULL);
-
-   pd->root = NULL;
-   pd->node_count = 0;
-   pd->count = 0;
-}
-
-int
-efl_ui_list_view_seg_array_count(Efl_Ui_List_View_Seg_Array* pd)
-{
-   return pd->count;
-}
-
-void
-efl_ui_list_view_seg_array_insert(Efl_Ui_List_View_Seg_Array* pd, int index, Efl_Model* model)
-{
-  Efl_Ui_List_View_Seg_Array_Node* node, *next;
-  Efl_Ui_List_View_Layout_Item* item;
-
-  item = _create_item_partial(model);
-
-  node = (void*)eina_rbtree_inline_lookup(EINA_RBTREE_GET(pd->root),
-                                          &index, sizeof(index), &_insert_lookup_cb, NULL);
-  if(node)
-    {
-      next = (void*)EINA_RBTREE_GET(node)->son[EINA_RBTREE_LEFT];
-      if(next && next->first <= index)
-        _efl_ui_list_view_seg_array_insert_at_node(pd, index, item, next);
-      else
-        _efl_ui_list_view_seg_array_insert_at_node(pd, index, item, node);
-    }
-  else
-    _efl_ui_list_view_seg_array_insert_at_node(pd, index, item, NULL);
-}
-
-void
-efl_ui_list_view_seg_array_insert_value(Efl_Ui_List_View_Seg_Array *pd, int first, Eina_Value v)
-{
-   Efl_Model *children;
-   unsigned int i, len;
-
-   if (eina_value_type_get(&v) == EINA_VALUE_TYPE_OBJECT)
-     {
-        children = eina_value_object_get(&v);
-        _efl_ui_list_view_seg_array_insert_object(pd, first, children);
-     }
-   else if (eina_value_type_get(&v) == EINA_VALUE_TYPE_ARRAY)
-     {
-        EINA_VALUE_ARRAY_FOREACH(&v, len, i, children)
-          {
-             unsigned int idx = first + i;
-
-             _efl_ui_list_view_seg_array_insert_object(pd, idx, children);
-          }
-     }
-   else
-     {
-        printf("Unknow type !\n");
-     }
-}
-
-
-Efl_Ui_List_View_Layout_Item*
-efl_ui_list_view_seg_array_remove(Efl_Ui_List_View_Seg_Array *pd, int index)
-{
-   Efl_Ui_List_View_Seg_Array_Node *node;
-   Efl_Ui_List_View_Layout_Item *item, *rt;
-   Eina_Iterator* iterator;
-   int offset;
-
-   node = (void*)eina_rbtree_inline_lookup(EINA_RBTREE_GET(pd->root),
-                                        &index, sizeof(index), &_insert_lookup_cb, NULL);
-   if (!node) return NULL;
-
-   offset = index - node->first;
-   if (offset >= node->length) return NULL;
-
-   rt = node->pointers[offset];
-   pd->count--;
-   node->length--;
-
-   while (offset < node->length)
-     {
-       node->pointers[offset] = node->pointers[offset+1];
-       item = node->pointers[offset];
-       --item->index_offset;
-       ++offset;
-     }
-
-   node = (void*)EINA_RBTREE_GET(node)->son[EINA_RBTREE_LEFT];
-   iterator = eina_rbtree_iterator_infix((void*)node);
-   while(eina_iterator_next(iterator, (void**)&node))
-     node->first--;
-
-   return rt;
-}
-
-Eina_Accessor*
-efl_ui_list_view_seg_array_accessor_get(Efl_Ui_List_View_Seg_Array* pd)
-{
-   Efl_Ui_List_View_Segarray_Eina_Accessor* acc = calloc(1, sizeof(Efl_Ui_List_View_Segarray_Eina_Accessor));
-   _efl_ui_list_view_seg_array_accessor_setup(acc, pd);
-   return &acc->vtable;
-}
-
-Eina_Accessor*
-efl_ui_list_view_seg_array_node_accessor_get(Efl_Ui_List_View_Seg_Array* pd)
-{
-   Efl_Ui_List_View_Segarray_Node_Accessor* acc = calloc(1, sizeof(Efl_Ui_List_View_Segarray_Node_Accessor));
-   _efl_ui_list_view_seg_array_node_accessor_setup(acc, pd);
-   return &acc->vtable;
-}
-
-int
-efl_ui_list_view_item_index_get(Efl_Ui_List_View_Layout_Item* item)
-{
-  Efl_Ui_List_View_Seg_Array_Node* node = item->tree_node;
-  return item->index_offset + node->first;
-}
diff --git a/src/lib/elementary/efl_ui_list_view_seg_array.h b/src/lib/elementary/efl_ui_list_view_seg_array.h
deleted file mode 100644 (file)
index adbfc28..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef EFL_UI_LIST_VIEW_SEG_ARRAY_H
-#define EFL_UI_LIST_VIEW_SEG_ARRAY_H
-
-typedef struct _Efl_Ui_List_View_SegArray_Node
-{
-   EINA_RBTREE;
-
-   int length;
-   int max;
-   int first;
-
-   void* layout_data;
-
-   Efl_Ui_List_View_Layout_Item* pointers[0];
-} Efl_Ui_List_View_Seg_Array_Node;
-
-typedef struct _Efl_Ui_List_View_Seg_Array
-{
-   Efl_Ui_List_View_Seg_Array_Node *root;
-
-   int step_size;
-   int node_count;
-   int count;
-} Efl_Ui_List_View_Seg_Array;
-
-
-Efl_Ui_List_View_Seg_Array * efl_ui_list_view_seg_array_setup(int size);
-void efl_ui_list_view_seg_array_free(Efl_Ui_List_View_Seg_Array *seg_array);
-void efl_ui_list_view_seg_array_flush(Efl_Ui_List_View_Seg_Array *seg_array);
-int efl_ui_list_view_seg_array_count(Efl_Ui_List_View_Seg_Array* seg_array);
-int efl_ui_list_view_item_index_get(Efl_Ui_List_View_Layout_Item* item);
-
-
-void efl_ui_list_view_seg_array_insert(Efl_Ui_List_View_Seg_Array* seg_array, int index, Efl_Model* model);
-void efl_ui_list_view_seg_array_insert_value(Efl_Ui_List_View_Seg_Array *seg_array, int first, Eina_Value value);
-Efl_Ui_List_View_Layout_Item* efl_ui_list_view_seg_array_remove(Efl_Ui_List_View_Seg_Array *seg_array, int index);
-
-Eina_Accessor* efl_ui_list_view_seg_array_accessor_get(Efl_Ui_List_View_Seg_Array* seg_array);
-Eina_Accessor* efl_ui_list_view_seg_array_node_accessor_get(Efl_Ui_List_View_Seg_Array* seg_array);
-
-
-#endif
diff --git a/src/lib/elementary/efl_ui_list_view_types.eot b/src/lib/elementary/efl_ui_list_view_types.eot
deleted file mode 100644 (file)
index 49aca5d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-struct @beta @free(free) Efl.Ui.List_View_Layout_Item {
-   layout: Efl.Ui.Layout;
-   layout_request: future<Efl.Ui.Layout>;
-   children: Efl.Model;
-   index_offset: int;
-   tree_node: void_ptr;
-   min: Eina.Size2D;
-   size: Eina.Size2D;
-   pos: Eina.Position2D;
-}
-
-struct @beta Efl_Ui_List_View_Seg_Array; [[TBD]]
index 517db3e..a5235bd 100644 (file)
@@ -116,8 +116,6 @@ pub_eo_files = [
   'efl_ui_layout_part_bg.eo',
   'efl_ui_layout_part_legacy.eo',
   'efl_ui_list_view.eo',
-  'efl_ui_list_view_model.eo',
-  'efl_ui_list_view_pan.eo',
   'efl_ui_item.eo',
   'efl_ui_default_item.eo',
   'efl_ui_group_item.eo',
@@ -213,7 +211,6 @@ endforeach
 pub_eo_types_files = [
   'elm_general.eot',
   'efl_ui.eot',
-  'efl_ui_list_view_types.eot',
   'efl_ui_selection_types.eot',
   'efl_ui_dnd_types.eot'
 ]
@@ -241,8 +238,6 @@ priv_eo_files = [
   'efl_ui_state_model.eo',
   'efl_ui_selection_manager.eo',
   'efl_datetime_manager.eo',
-  'efl_ui_list_view_precise_layouter.eo',
-  'efl_ui_list_view_relayout.eo',
   'efl_ui_size_model.eo',
   'efl_ui_homogeneous_model.eo',
   'efl_ui_exact_model.eo',
@@ -362,8 +357,6 @@ elementary_headers_unstable = [
   'elm_widget_toolbar.h',
   'efl_ui_video_private.h',
   'efl_ui_item_private.h',
-  'efl_ui_list_view_private.h',
-  'efl_ui_list_view_seg_array.h',
   'elm_widget_web.h',
   'efl_ui_clock.h',
   'elm_code.h',
@@ -966,8 +959,6 @@ elementary_src = [
   'efl_ui_grid_default_item.c',
   'efl_ui_grid.c',
   'efl_ui_list_view.c',
-  'efl_ui_list_view_precise_layouter.c',
-  'efl_ui_list_view_seg_array.c',
   'efl_ui_layout_factory.c',
   'efl_ui_scroller.c',
   'efl_ui_scroll_manager.c',