efl_ui : change efl_ui_view_list to efl_ui_list_view.

Summary:
  View is not a namespace, but an interface,
  So, View_List cannot be under the view namespace for now.
  it looks more suite to be end as View than List on this widget name.
  Firstly, it follows our common naming rules of class.
  Also, List_View is commonly presentable name on most UI frameworks,
  so it is very easy to understand what this widget can do for the user.

Test Plan:
Make works.
           Example is not works for now til stable model interface.

Reviewers: felipealmeida, woohyun, cedric, Hermet

Reviewed By: Hermet

Subscribers: larryolj, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7234
This commit is contained in:
SangHyeon Jade Lee 2018-11-05 14:27:05 +09:00 committed by Hermet Park
parent c4e0d3f69d
commit e97b6b72be
23 changed files with 524 additions and 524 deletions

View File

@ -2,7 +2,7 @@ group { "efl/list";
inherit: "efl/scroller";
}
group { "efl/view_list";
group { "efl/list_view";
inherit: "efl/list";
}
@ -468,4 +468,4 @@ group { "efl/list_item:empty";
target: "event_block";
}
}
}
}

View File

@ -78,11 +78,11 @@ elm_public_eolian_files = \
lib/elementary/efl_ui_layout_part_table.eo \
lib/elementary/efl_ui_layout_part_bg.eo \
lib/elementary/efl_ui_layout_part_legacy.eo \
lib/elementary/efl_ui_view_list.eo \
lib/elementary/efl_ui_view_list_model.eo \
lib/elementary/efl_ui_view_list_pan.eo \
lib/elementary/efl_ui_view_list_segarray.eo \
lib/elementary/efl_ui_view_list_relayout.eo \
lib/elementary/efl_ui_list_view.eo \
lib/elementary/efl_ui_list_view_model.eo \
lib/elementary/efl_ui_list_view_pan.eo \
lib/elementary/efl_ui_list_view_seg_array.eo \
lib/elementary/efl_ui_list_view_relayout.eo \
lib/elementary/efl_ui_item.eo \
lib/elementary/efl_ui_list_item.eo \
lib/elementary/efl_ui_list_default_item_part_icon.eo \
@ -276,13 +276,13 @@ elm_legacy_eolian_files = \
lib/elementary/elm_slideshow_item.eo \
lib/elementary/elm_table.eo \
lib/elementary/elm_thumb.eo \
lib/elementary/efl_ui_view_list_precise_layouter.eo \
lib/elementary/efl_ui_list_view_precise_layouter.eo \
$(NULL)
elm_eolian_type_files = \
lib/elementary/elm_general.eot \
lib/elementary/efl_ui.eot \
lib/elementary/efl_ui_view_list_types.eot \
lib/elementary/efl_ui_list_view_types.eot \
lib/elementary/efl_selection_types.eot \
lib/elementary/efl_ui_dnd_types.eot
@ -414,8 +414,8 @@ includesunstable_HEADERS = \
lib/elementary/efl_ui_item_private.h \
lib/elementary/efl_ui_list_item_private.h \
lib/elementary/efl_ui_list_private.h \
lib/elementary/efl_ui_view_list_private.h \
lib/elementary/efl_ui_view_list_segarray.h \
lib/elementary/efl_ui_list_view_private.h \
lib/elementary/efl_ui_list_view_seg_array.h \
lib/elementary/elm_widget_web.h \
lib/elementary/efl_ui_clock.h \
lib/elementary/elm_code.h \
@ -842,9 +842,9 @@ lib_elementary_libelementary_la_SOURCES = \
lib/elementary/efl_ui_list_default_item.c \
lib/elementary/efl_ui_list_empty_item.c \
lib/elementary/efl_ui_list.c \
lib/elementary/efl_ui_view_list.c \
lib/elementary/efl_ui_view_list_precise_layouter.c \
lib/elementary/efl_ui_view_list_segarray.c \
lib/elementary/efl_ui_list_view.c \
lib/elementary/efl_ui_list_view_precise_layouter.c \
lib/elementary/efl_ui_list_view_seg_array.c \
lib/elementary/efl_ui_layout_factory.c \
lib/elementary/efl_ui_scroller.c \
lib/elementary/efl_ui_scroll_manager.c \

View File

@ -120,9 +120,9 @@ elementary/efl_thread_4.c \
elementary/efl_thread_5.c \
elementary/efl_thread_6.c \
elementary/efl_ui_list_example_1.c \
elementary/efl_ui_view_list_example_1.c \
elementary/efl_ui_view_list_example_2.c \
elementary/efl_ui_view_list_example_3.c
elementary/efl_ui_list_view_example_1.c \
elementary/efl_ui_list_view_example_2.c \
elementary/efl_ui_list_view_example_3.c
ELM_SRCS += \
elementary/bg_cxx_example_01.cc \
@ -153,7 +153,7 @@ elementary/evas3d_map_example.edc \
elementary/theme_example.edc \
elementary/layout_example.edc \
elementary/codegen_example.edc \
elementary/efl_ui_view_list_example.edc \
elementary/efl_ui_list_view_example.edc \
elementary/prefs_example_03.edc
ELM_EPCS = \
@ -334,9 +334,9 @@ elementary/efl_thread_4 \
elementary/efl_thread_5 \
elementary/efl_thread_6 \
elementary/efl_ui_list_example_1 \
elementary/efl_ui_view_list_example_1 \
elementary/efl_ui_view_list_example_2 \
elementary/efl_ui_view_list_example_3
elementary/efl_ui_list_view_example_1 \
elementary/efl_ui_list_view_example_2 \
elementary/efl_ui_list_view_example_3
#benchmark3d
#sphere-hunter

View File

@ -1,4 +1,4 @@
// gcc -o efl_ui_view_list_example_1 efl_ui_view_list_example_1.c `pkg-config --cflags --libs elementary`
// gcc -o efl_ui_list_view_example_1 efl_ui_list_view_example_1.c `pkg-config --cflags --libs elementary`
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
@ -24,7 +24,7 @@ char edj_path[PATH_MAX];
static void
_realized_cb(void *data, const Efl_Event *event)
{
Efl_Ui_View_List_Item_Event *ie = event->info;
Efl_Ui_List_View_Item_Event *ie = event->info;
if (!ie->layout) return;
Efl_Ui_Layout_Object *layout = ie->layout;
@ -35,7 +35,7 @@ _realized_cb(void *data, const Efl_Event *event)
static void
_unrealized_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Ui_View_List_Item_Event *ie = event->info;
Efl_Ui_List_View_Item_Event *ie = event->info;
efl_ui_view_model_set(ie->layout, NULL);
efl_del(ie->layout);
@ -75,7 +75,7 @@ elm_main(int argc, char **argv)
Evas_Object *win, *li;
Eo *model;
win = elm_win_util_standard_add("viewlist", "Viewlist");
win = elm_win_util_standard_add("list_view", "List_View");
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
elm_win_autodel_set(win, EINA_TRUE);
@ -87,12 +87,12 @@ elm_main(int argc, char **argv)
efl_ui_model_connect(factory, "efl.text", "name");
efl_ui_layout_factory_theme_config(factory, "list_item", NULL, "default");
li = efl_add(EFL_UI_VIEW_LIST_CLASS, win);
efl_ui_view_list_layout_factory_set(li, factory);
li = efl_add(EFL_UI_LIST_VIEW_CLASS, win);
efl_ui_list_view_layout_factory_set(li, factory);
efl_ui_view_model_set(li, model);
efl_event_callback_add(li, EFL_UI_VIEW_LIST_EVENT_ITEM_REALIZED, _realized_cb, NULL);
// efl_event_callback_add(li, EFL_UI_VIEW_LIST_EVENT_ITEM_UNREALIZED, _unrealized_cb, NULL);
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);
elm_win_resize_object_add(win, li);
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);

View File

@ -1,4 +1,4 @@
// gcc -o efl_ui_view_list_example_2 efl_ui_view_list_example_2.c `pkg-config --cflags --libs elementary`
// gcc -o efl_ui_list_view_example_2 efl_ui_list_view_example_2.c `pkg-config --cflags --libs elementary`
#ifdef HAVE_CONFIG_H
# include "config.h"
@ -23,7 +23,7 @@ elm_main(int argc, char **argv)
Eo *model, *li;
char *dirname;
win = elm_win_util_standard_add("viewlist", "Viewlist");
win = elm_win_util_standard_add("list_view2", "List_View2");
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
elm_win_autodel_set(win, EINA_TRUE);
@ -36,8 +36,8 @@ elm_main(int argc, char **argv)
efl_ui_model_connect(factory, "efl.text", "filename");
efl_ui_layout_factory_theme_config(factory, "list_item", NULL, "default");
li = efl_add(EFL_UI_VIEW_LIST_CLASS, win);
efl_ui_view_list_layout_factory_set(li, factory);
li = efl_add(EFL_UI_LIST_VIEW_CLASS, win);
efl_ui_list_view_layout_factory_set(li, factory);
efl_ui_view_model_set(li, model);
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);

View File

@ -1,4 +1,4 @@
// gcc -o efl_ui_view_list_example_3 efl_ui_view_list_example_3.c `pkg-config --cflags --libs elementary`
// gcc -o efl_ui_list_view_example_3 efl_ui_list_view_example_3.c `pkg-config --cflags --libs elementary`
#ifdef HAVE_CONFIG_H
# include "config.h"
@ -113,21 +113,21 @@ static void
_bt_none_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Evas_Object *li = data;
efl_ui_view_list_select_mode_set(li, ELM_OBJECT_SELECT_MODE_NONE);
efl_ui_list_view_select_mode_set(li, ELM_OBJECT_SELECT_MODE_NONE);
}
static void
_bt_donly_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Evas_Object *li = data;
efl_ui_view_list_select_mode_set(li, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
efl_ui_list_view_select_mode_set(li, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
static void
_bt_default_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Evas_Object *li = data;
efl_ui_view_list_select_mode_set(li, ELM_OBJECT_SELECT_MODE_DEFAULT);
efl_ui_list_view_select_mode_set(li, ELM_OBJECT_SELECT_MODE_DEFAULT);
}
static void
@ -146,7 +146,7 @@ _bt_unset_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
static void
_realized_1_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Ui_View_List_Item_Event *ie = event->info;
Efl_Ui_List_View_Item_Event *ie = 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);
@ -157,7 +157,7 @@ _realized_1_cb(void *data EINA_UNUSED, const Efl_Event *event)
static void
_realized_2_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Ui_View_List_Item_Event *ie = event->info;
Efl_Ui_List_View_Item_Event *ie = event->info;
printf("relized 2\n");
elm_object_focus_allow_set(ie->layout, EINA_TRUE);
@ -210,7 +210,7 @@ elm_main(int argc, char **argv)
priv = alloca(sizeof(Priv_Data));
memset(priv, 0, sizeof(Priv_Data));
win = elm_win_util_standard_add("viewlist", "Viewlist");
win = elm_win_util_standard_add("list_view3", "List_View3");
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
elm_win_autodel_set(win, EINA_TRUE);
@ -225,22 +225,22 @@ elm_main(int argc, char **argv)
efl_ui_model_connect(factory, "efl.text", "filename");
efl_ui_layout_factory_theme_config(factory, "list_item", NULL, "default");
priv->list1 = efl_add(EFL_UI_VIEW_LIST_CLASS, win, efl_ui_view_model_set(efl_added, priv->model));
efl_event_callback_add(priv->list1, EFL_UI_VIEW_LIST_EVENT_ITEM_REALIZED, _realized_1_cb, priv);
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);
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_view_list_layout_factory_set(priv->list1, factory);
efl_ui_list_view_layout_factory_set(priv->list1, factory);
factory = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win);
efl_ui_model_connect(factory, "efl.text", "filename");
efl_ui_model_connect(factory, "signal/efl,state,%v", "selected");
efl_ui_layout_factory_theme_config(factory, "list_item", NULL, "default");
priv->list2 = efl_add(EFL_UI_VIEW_LIST_CLASS, win, efl_ui_view_model_set(efl_added, priv->model));
efl_event_callback_add(priv->list2, EFL_UI_VIEW_LIST_EVENT_ITEM_REALIZED, _realized_2_cb, priv->list2);
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);
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_view_list_layout_factory_set(priv->list2, factory);
efl_ui_list_view_layout_factory_set(priv->list2, factory);
vbx = elm_box_add(win);
elm_box_pack_end(bx, vbx);

View File

@ -334,13 +334,13 @@ typedef Eo Efl_Ui_Focus_Manager;
# include <efl_ui_list_default_item.eo.h>
# include <efl_ui_list_empty_item.eo.h>
# include <efl_ui_list.eo.h>
# include <efl_ui_view_list_types.eot.h>
# include <efl_ui_view_list_segarray.h>
# include <efl_ui_view_list_segarray.eo.h>
# include <efl_ui_view_list_model.eo.h>
# include <efl_ui_view_list_relayout.eo.h>
# include <efl_ui_view_list.eo.h>
# include <efl_ui_view_list_pan.eo.h>
# include <efl_ui_list_view_types.eot.h>
# include <efl_ui_list_view_seg_array.h>
# include <efl_ui_list_view_seg_array.eo.h>
# include <efl_ui_list_view_model.eo.h>
# include <efl_ui_list_view_relayout.eo.h>
# include <efl_ui_list_view.eo.h>
# include <efl_ui_list_view_pan.eo.h>
# include <efl_ui_pan.eo.h>
# include <efl_ui_scroll_manager.eo.h>
# include <efl_ui_scroller.eo.h>

View File

@ -10,15 +10,15 @@
#define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED
#include <Elementary.h>
#include "efl_ui_view_list_private.h"
#include "efl_ui_view_list_precise_layouter.eo.h"
#include "efl_ui_list_view_private.h"
#include "efl_ui_list_view_precise_layouter.eo.h"
#include <assert.h>
#define MY_CLASS EFL_UI_VIEW_LIST_CLASS
#define MY_CLASS_NAME "Efl.Ui.View.List"
#define MY_CLASS EFL_UI_LIST_VIEW_CLASS
#define MY_CLASS_NAME "Efl.Ui.List_View"
#define MY_PAN_CLASS EFL_UI_VIEW_LIST_PAN_CLASS
#define MY_PAN_CLASS EFL_UI_LIST_VIEW_PAN_CLASS
#define SIG_CHILD_ADDED "child,added"
#define SIG_CHILD_REMOVED "child,removed"
@ -30,9 +30,9 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{NULL, NULL}
};
void _efl_ui_view_list_custom_layout(Efl_Ui_View_List *);
void _efl_ui_view_list_item_select_set(Efl_Ui_View_List_LayoutItem*, Eina_Bool);
static void _layout(Efl_Ui_View_List_Data* pd);
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 void _layout(Efl_Ui_List_View_Data* pd);
static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
static Eina_Bool _key_action_select(Evas_Object *obj, const char *params);
@ -46,14 +46,14 @@ static const Elm_Action key_actions[] = {
};
EOLIAN static void
_efl_ui_view_list_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Pan_Data *psd)
_efl_ui_list_view_pan_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Pan_Data *psd)
{
evas_object_smart_changed(psd->wobj);
}
EOLIAN static void
_efl_ui_view_list_pan_efl_ui_pan_pan_position_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Pan_Data *psd, Eina_Position2D pos)
_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;
@ -65,20 +65,20 @@ _efl_ui_view_list_pan_efl_ui_pan_pan_position_set(Eo *obj EINA_UNUSED, Efl_Ui_Vi
}
EOLIAN static Eina_Position2D
_efl_ui_view_list_pan_efl_ui_pan_pan_position_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Pan_Data *psd)
_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_view_list_pan_efl_ui_pan_pan_position_max_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Pan_Data *psd)
_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_VIEW_LIST_DATA_GET(psd->wobj, pd);
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_view_list_model_min_size_get(psd->wobj);
min = efl_ui_list_view_model_min_size_get(psd->wobj);
min.w = min.w - vgmt.w;
if (min.w < 0) min.w = 0;
@ -89,50 +89,50 @@ _efl_ui_view_list_pan_efl_ui_pan_pan_position_max_get(const Eo *obj EINA_UNUSED,
}
EOLIAN static Eina_Position2D
_efl_ui_view_list_pan_efl_ui_pan_pan_position_min_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Pan_Data *psd EINA_UNUSED)
_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_view_list_pan_efl_ui_pan_content_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Pan_Data *psd)
_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_view_list_model_min_size_get(psd->wobj);
min = efl_ui_list_view_model_min_size_get(psd->wobj);
return min;
}
EOLIAN static void
_efl_ui_view_list_pan_efl_object_destructor(Eo *obj, Efl_Ui_View_List_Pan_Data *psd EINA_UNUSED)
_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_view_list_pan.eo.c"
#include "efl_ui_list_view_pan.eo.c"
EOLIAN static void
_efl_ui_view_list_efl_ui_scrollable_interactive_content_pos_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *psd, Eina_Position2D pos)
_efl_ui_list_view_efl_ui_scrollable_interactive_content_pos_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd, Eina_Position2D pos)
{
efl_ui_scrollable_content_pos_set(psd->scrl_mgr, pos);
}
EOLIAN static Eina_Position2D
_efl_ui_view_list_efl_ui_scrollable_interactive_content_pos_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *psd)
_efl_ui_list_view_efl_ui_scrollable_interactive_content_pos_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd)
{
Eina_Position2D pos = efl_ui_scrollable_content_pos_get(psd->scrl_mgr);
return pos;
}
EOLIAN static Eina_Size2D
_efl_ui_view_list_efl_ui_scrollable_interactive_content_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *psd)
_efl_ui_list_view_efl_ui_scrollable_interactive_content_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd)
{
Eina_Size2D size = efl_ui_scrollable_content_size_get(psd->scrl_mgr);
return size;
}
EOLIAN static Eina_Rect
_efl_ui_view_list_efl_ui_scrollable_interactive_viewport_geometry_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *psd)
_efl_ui_list_view_efl_ui_scrollable_interactive_viewport_geometry_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *psd)
{
Eina_Rect gmt = efl_ui_scrollable_viewport_geometry_get(psd->scrl_mgr);
return gmt;
@ -172,7 +172,7 @@ _list_element_focused(void *data EINA_UNUSED, const Efl_Event *ev)
if (!focused) return;
EFL_UI_VIEW_LIST_DATA_GET(ev->object, pd);
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);
@ -185,16 +185,16 @@ 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_View_List_LayoutItem *item = data;
Efl_Ui_List_View_Layout_Item *item = data;
if (ev->button != 1) return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
_efl_ui_view_list_item_select_set(item, EINA_TRUE);
_efl_ui_list_view_item_select_set(item, EINA_TRUE);
}
EOLIAN static void
_efl_ui_view_list_select_mode_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd, Elm_Object_Select_Mode mode)
_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;
@ -203,37 +203,37 @@ _efl_ui_view_list_select_mode_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd
}
EOLIAN static Elm_Object_Select_Mode
_efl_ui_view_list_select_mode_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_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_view_list_default_style_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd, Eina_Stringshare *style)
_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_view_list_default_style_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_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_view_list_homogeneous_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd, Eina_Bool homogeneous)
_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_view_list_homogeneous_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_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_view_list_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_View_List_Data *pd, Eina_Position2D pos)
_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;
@ -243,7 +243,7 @@ _efl_ui_view_list_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_View_List_Data *pd
}
EOLIAN static void
_efl_ui_view_list_efl_gfx_entity_size_set(Eo *obj, Efl_Ui_View_List_Data *pd, Eina_Size2D size)
_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;
@ -254,22 +254,22 @@ _efl_ui_view_list_efl_gfx_entity_size_set(Eo *obj, Efl_Ui_View_List_Data *pd, Ei
}
EOLIAN static void
_efl_ui_view_list_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_efl_ui_list_view_efl_canvas_group_group_calculate(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd)
{
_layout(pd);
}
EOLIAN static void
_efl_ui_view_list_efl_canvas_group_group_member_add(Eo *obj, Efl_Ui_View_List_Data *pd EINA_UNUSED, Evas_Object *member)
_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_view_list_bar_read_and_update(Eo *obj)
_efl_ui_list_view_bar_read_and_update(Eo *obj)
{
EFL_UI_VIEW_LIST_DATA_GET(obj, pd);
EFL_UI_LIST_VIEW_DATA_GET(obj, pd);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
double vx, vy;
@ -284,30 +284,30 @@ _efl_ui_view_list_bar_read_and_update(Eo *obj)
}
static void
_efl_ui_view_list_reload_cb(void *data,
_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_VIEW_LIST_DATA_GET(data, pd);
EFL_UI_LIST_VIEW_DATA_GET(data, pd);
efl_ui_scrollbar_bar_visibility_update(pd->scrl_mgr);
}
static void
_efl_ui_view_list_vbar_drag_cb(void *data,
_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_view_list_bar_read_and_update(data);
_efl_ui_list_view_bar_read_and_update(data);
Efl_Ui_Scrollbar_Direction type = EFL_UI_SCROLLBAR_DIRECTION_VERTICAL;
efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_DRAG, &type);
}
static void
_efl_ui_view_list_vbar_press_cb(void *data,
_efl_ui_list_view_vbar_press_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
@ -317,7 +317,7 @@ _efl_ui_view_list_vbar_press_cb(void *data,
}
static void
_efl_ui_view_list_vbar_unpress_cb(void *data,
_efl_ui_list_view_vbar_unpress_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
@ -327,14 +327,14 @@ _efl_ui_view_list_vbar_unpress_cb(void *data,
}
static void
_efl_ui_view_list_edje_drag_start_cb(void *data,
_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_VIEW_LIST_DATA_GET(data, pd);
EFL_UI_LIST_VIEW_DATA_GET(data, pd);
_efl_ui_view_list_bar_read_and_update(data);
_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);
@ -342,42 +342,42 @@ _efl_ui_view_list_edje_drag_start_cb(void *data,
}
static void
_efl_ui_view_list_edje_drag_stop_cb(void *data,
_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_VIEW_LIST_DATA_GET(data, pd);
EFL_UI_LIST_VIEW_DATA_GET(data, pd);
_efl_ui_view_list_bar_read_and_update(data);
_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_STOP, NULL);
}
static void
_efl_ui_view_list_edje_drag_cb(void *data,
_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_view_list_bar_read_and_update(data);
_efl_ui_list_view_bar_read_and_update(data);
}
static void
_efl_ui_view_list_hbar_drag_cb(void *data,
_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_view_list_bar_read_and_update(data);
_efl_ui_list_view_bar_read_and_update(data);
Efl_Ui_Scrollbar_Direction type = EFL_UI_SCROLLBAR_DIRECTION_HORIZONTAL;
efl_event_callback_call(data, EFL_UI_SCROLLBAR_EVENT_BAR_DRAG, &type);
}
static void
_efl_ui_view_list_hbar_press_cb(void *data,
_efl_ui_list_view_hbar_press_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
@ -387,7 +387,7 @@ _efl_ui_view_list_hbar_press_cb(void *data,
}
static void
_efl_ui_view_list_hbar_unpress_cb(void *data,
_efl_ui_list_view_hbar_unpress_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
@ -397,10 +397,10 @@ _efl_ui_view_list_hbar_unpress_cb(void *data,
}
static void
_efl_ui_view_list_bar_size_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
_efl_ui_list_view_bar_size_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
Eo *obj = data;
EFL_UI_VIEW_LIST_DATA_GET(obj, pd);
EFL_UI_LIST_VIEW_DATA_GET(obj, pd);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
double width = 0.0, height = 0.0;
@ -412,10 +412,10 @@ _efl_ui_view_list_bar_size_changed_cb(void *data, const Efl_Event *event EINA_UN
}
static void
_efl_ui_view_list_bar_pos_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
_efl_ui_list_view_bar_pos_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
Eo *obj = data;
EFL_UI_VIEW_LIST_DATA_GET(obj, pd);
EFL_UI_LIST_VIEW_DATA_GET(obj, pd);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
double posx = 0.0, posy = 0.0;
@ -427,7 +427,7 @@ _efl_ui_view_list_bar_pos_changed_cb(void *data, const Efl_Event *event EINA_UNU
}
static void
_efl_ui_view_list_bar_show_cb(void *data, const Efl_Event *event)
_efl_ui_list_view_bar_show_cb(void *data, const Efl_Event *event)
{
Eo *obj = data;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
@ -440,7 +440,7 @@ _efl_ui_view_list_bar_show_cb(void *data, const Efl_Event *event)
}
static void
_efl_ui_view_list_bar_hide_cb(void *data, const Efl_Event *event)
_efl_ui_list_view_bar_hide_cb(void *data, const Efl_Event *event)
{
Eo *obj = data;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
@ -453,7 +453,7 @@ _efl_ui_view_list_bar_hide_cb(void *data, const Efl_Event *event)
}
EOLIAN static Eina_Bool
_efl_ui_view_list_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
_efl_ui_list_view_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
Eina_Bool ok;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -464,7 +464,7 @@ _efl_ui_view_list_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl
}
EOLIAN static Eina_Bool
_efl_ui_view_list_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
_efl_ui_list_view_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
Eina_Bool ok;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -475,125 +475,125 @@ _efl_ui_view_list_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl
}
static void
_efl_ui_view_list_edje_object_attach(Eo *obj)
_efl_ui_list_view_edje_object_attach(Eo *obj)
{
efl_layout_signal_callback_add
(obj, "reload", "efl", _efl_ui_view_list_reload_cb, obj);
(obj, "reload", "efl", _efl_ui_list_view_reload_cb, obj);
//Vertical bar
efl_layout_signal_callback_add
(obj, "drag", "efl.dragable.vbar",
_efl_ui_view_list_vbar_drag_cb, obj);
_efl_ui_list_view_vbar_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,set", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,start", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_start_cb, obj);
_efl_ui_list_view_edje_drag_start_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,stop", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_stop_cb, obj);
_efl_ui_list_view_edje_drag_stop_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,step", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,page", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "efl,vbar,press", "efl",
_efl_ui_view_list_vbar_press_cb, obj);
_efl_ui_list_view_vbar_press_cb, obj);
efl_layout_signal_callback_add
(obj, "efl,vbar,unpress", "efl",
_efl_ui_view_list_vbar_unpress_cb, obj);
_efl_ui_list_view_vbar_unpress_cb, obj);
//Horizontal bar
efl_layout_signal_callback_add
(obj, "drag", "efl.dragable.hbar",
_efl_ui_view_list_hbar_drag_cb, obj);
_efl_ui_list_view_hbar_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,set", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,start", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_start_cb, obj);
_efl_ui_list_view_edje_drag_start_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,stop", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_stop_cb, obj);
_efl_ui_list_view_edje_drag_stop_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,step", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "drag,page", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_add
(obj, "efl,hbar,press", "efl",
_efl_ui_view_list_hbar_press_cb, obj);
_efl_ui_list_view_hbar_press_cb, obj);
efl_layout_signal_callback_add
(obj, "efl,hbar,unpress", "efl",
_efl_ui_view_list_hbar_unpress_cb, obj);
_efl_ui_list_view_hbar_unpress_cb, obj);
}
static void
_efl_ui_view_list_edje_object_detach(Evas_Object *obj)
_efl_ui_list_view_edje_object_detach(Evas_Object *obj)
{
efl_layout_signal_callback_del
(obj, "reload", "efl", _efl_ui_view_list_reload_cb, obj);
(obj, "reload", "efl", _efl_ui_list_view_reload_cb, obj);
//Vertical bar
efl_layout_signal_callback_del
(obj, "drag", "efl.dragable.vbar", _efl_ui_view_list_vbar_drag_cb,
(obj, "drag", "efl.dragable.vbar", _efl_ui_list_view_vbar_drag_cb,
obj);
efl_layout_signal_callback_del
(obj, "drag,set", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,start", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_start_cb, obj);
_efl_ui_list_view_edje_drag_start_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,stop", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_stop_cb, obj);
_efl_ui_list_view_edje_drag_stop_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,step", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,page", "efl.dragable.vbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_del
(obj, "efl,vbar,press", "efl",
_efl_ui_view_list_vbar_press_cb, obj);
_efl_ui_list_view_vbar_press_cb, obj);
efl_layout_signal_callback_del
(obj, "efl,vbar,unpress", "efl",
_efl_ui_view_list_vbar_unpress_cb, obj);
_efl_ui_list_view_vbar_unpress_cb, obj);
//Horizontal bar
efl_layout_signal_callback_del
(obj, "drag", "efl.dragable.hbar",
_efl_ui_view_list_hbar_drag_cb, obj);
_efl_ui_list_view_hbar_drag_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,set", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,start", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_start_cb, obj);
_efl_ui_list_view_edje_drag_start_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,stop", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_stop_cb, obj);
_efl_ui_list_view_edje_drag_stop_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,step", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_del
(obj, "drag,page", "efl.dragable.hbar",
_efl_ui_view_list_edje_drag_cb, obj);
_efl_ui_list_view_edje_drag_cb, obj);
efl_layout_signal_callback_del
(obj, "efl,hbar,press", "efl",
_efl_ui_view_list_hbar_press_cb, obj);
_efl_ui_list_view_hbar_press_cb, obj);
efl_layout_signal_callback_del
(obj, "efl,hbar,unpress", "efl",
_efl_ui_view_list_hbar_unpress_cb, obj);
_efl_ui_list_view_hbar_unpress_cb, obj);
}
EOLIAN static void
_efl_ui_view_list_efl_canvas_group_group_add(Eo *obj, Efl_Ui_View_List_Data *pd)
_efl_ui_list_view_efl_canvas_group_group_add(Eo *obj, Efl_Ui_List_View_Data *pd)
{
Efl_Ui_View_List_Pan_Data *pan_data;
Efl_Ui_List_View_Pan_Data *pan_data;
Eina_Size2D min = {};
Eina_Bool bounce = _elm_config->thumbscroll_bounce_enable;
Evas_Object *o;
@ -605,7 +605,7 @@ _efl_ui_view_list_efl_canvas_group_group_add(Eo *obj, Efl_Ui_View_List_Data *pd)
elm_widget_can_focus_set(obj, EINA_TRUE);
if (!elm_layout_theme_set(obj, "view_list", "base", elm_widget_style_get(obj)))
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,
@ -630,28 +630,28 @@ _efl_ui_view_list_efl_canvas_group_group_add(Eo *obj, Efl_Ui_View_List_Data *pd)
efl_gfx_size_hint_restricted_min_set(obj, min);
efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_SIZE_CHANGED,
_efl_ui_view_list_bar_size_changed_cb, obj);
_efl_ui_list_view_bar_size_changed_cb, obj);
efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_POS_CHANGED,
_efl_ui_view_list_bar_pos_changed_cb, obj);
_efl_ui_list_view_bar_pos_changed_cb, obj);
efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_SHOW,
_efl_ui_view_list_bar_show_cb, obj);
_efl_ui_list_view_bar_show_cb, obj);
efl_event_callback_add(obj, EFL_UI_SCROLLBAR_EVENT_BAR_HIDE,
_efl_ui_view_list_bar_hide_cb, obj);
_efl_ui_list_view_bar_hide_cb, obj);
_efl_ui_view_list_edje_object_attach(obj);
_efl_ui_list_view_edje_object_attach(obj);
elm_layout_sizing_eval(obj);
}
EOLIAN static void
_efl_ui_view_list_efl_canvas_group_group_del(Eo *obj, Efl_Ui_View_List_Data *pd)
_efl_ui_list_view_efl_canvas_group_group_del(Eo *obj, Efl_Ui_List_View_Data *pd)
{
ELM_SAFE_FREE(pd->pan_obj, evas_object_del);
efl_canvas_group_del(efl_super(obj, MY_CLASS));
}
EOLIAN static Efl_Ui_Focus_Manager*
_efl_ui_view_list_efl_ui_widget_focus_manager_focus_manager_create(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root)
_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,
@ -661,7 +661,7 @@ _efl_ui_view_list_efl_ui_widget_focus_manager_focus_manager_create(Eo *obj EINA_
}
EOLIAN static Eo *
_efl_ui_view_list_efl_object_finalize(Eo *obj, Efl_Ui_View_List_Data *pd)
_efl_ui_list_view_efl_object_finalize(Eo *obj, Efl_Ui_List_View_Data *pd)
{
if (!pd->factory)
@ -669,15 +669,15 @@ _efl_ui_view_list_efl_object_finalize(Eo *obj, Efl_Ui_View_List_Data *pd)
if(!pd->relayout)
{
pd->relayout = efl_add(EFL_UI_VIEW_LIST_PRECISE_LAYOUTER_CLASS, obj);
pd->relayout = efl_add(EFL_UI_LIST_VIEW_PRECISE_LAYOUTER_CLASS, obj);
if (pd->model)
efl_ui_view_list_relayout_model_set(pd->relayout, pd->model);
efl_ui_list_view_relayout_model_set(pd->relayout, pd->model);
}
return obj;
}
EOLIAN static Eo *
_efl_ui_view_list_efl_object_constructor(Eo *obj, Efl_Ui_View_List_Data *pd)
_efl_ui_list_view_efl_object_constructor(Eo *obj, Efl_Ui_List_View_Data *pd)
{
obj = efl_constructor(efl_super(obj, MY_CLASS));
pd->obj = obj;
@ -685,7 +685,7 @@ _efl_ui_view_list_efl_object_constructor(Eo *obj, Efl_Ui_View_List_Data *pd)
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
efl_access_object_role_set(obj, EFL_ACCESS_ROLE_LIST);
pd->segarray = efl_add(EFL_UI_VIEW_LIST_SEGARRAY_CLASS, obj, efl_ui_view_list_segarray_setup(efl_added, 32));
pd->seg_array = efl_add(EFL_UI_LIST_VIEW_SEG_ARRAY_CLASS, obj, efl_ui_list_view_seg_array_setup(efl_added, 32));
efl_event_callback_add(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUS_CHANGED, _list_element_focused, NULL);
@ -702,14 +702,14 @@ _efl_ui_view_list_efl_object_constructor(Eo *obj, Efl_Ui_View_List_Data *pd)
}
EOLIAN static void
_efl_ui_view_list_efl_object_destructor(Eo *obj, Efl_Ui_View_List_Data *pd)
_efl_ui_list_view_efl_object_destructor(Eo *obj, Efl_Ui_List_View_Data *pd)
{
efl_ui_view_list_relayout_model_set(pd->relayout, NULL);
efl_ui_list_view_relayout_model_set(pd->relayout, NULL);
efl_unref(pd->model);
eina_stringshare_del(pd->style);
_efl_ui_view_list_edje_object_detach(obj);
_efl_ui_list_view_edje_object_detach(obj);
ELM_SAFE_FREE(pd->pan_obj, evas_object_del);
efl_canvas_group_del(efl_super(obj, MY_CLASS));
@ -718,7 +718,7 @@ _efl_ui_view_list_efl_object_destructor(Eo *obj, Efl_Ui_View_List_Data *pd)
}
EOLIAN static void
_efl_ui_view_list_layout_factory_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd, Efl_Ui_Factory *factory)
_efl_ui_list_view_layout_factory_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, Efl_Ui_Factory *factory)
{
if (pd->factory)
efl_unref(pd->factory);
@ -728,7 +728,7 @@ _efl_ui_view_list_layout_factory_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data
}
EOLIAN static void
_efl_ui_view_list_efl_ui_view_model_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd, Efl_Model *model)
_efl_ui_list_view_efl_ui_view_model_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd, Efl_Model *model)
{
if (pd->model == model)
return;
@ -736,36 +736,36 @@ _efl_ui_view_list_efl_ui_view_model_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Da
if (pd->model)
{
if (pd->relayout)
efl_ui_view_list_relayout_model_set(pd->relayout, NULL);
efl_ui_view_list_segarray_flush(pd->segarray);
efl_ui_list_view_relayout_model_set(pd->relayout, NULL);
efl_ui_list_view_seg_array_flush(pd->seg_array);
}
efl_replace(&pd->model, model);
if (pd->model && pd->relayout)
efl_ui_view_list_relayout_model_set(pd->relayout, pd->model);
efl_ui_list_view_relayout_model_set(pd->relayout, pd->model);
evas_object_smart_changed(pd->obj);
}
EOLIAN static Efl_Model *
_efl_ui_view_list_efl_ui_view_model_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_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_view_list_efl_access_selection_selected_children_count_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_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_view_list_efl_access_selection_selected_child_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd, int child_index)
_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_View_List_LayoutItem* items = eina_list_nth(pd->selected_items, child_index);
Efl_Ui_List_View_Layout_Item* items = eina_list_nth(pd->selected_items, child_index);
return items[child_index].layout;
}
else
@ -773,37 +773,37 @@ _efl_ui_view_list_efl_access_selection_selected_child_get(const Eo *obj EINA_UNU
}
EOLIAN Eina_Bool
_efl_ui_view_list_efl_access_selection_child_select(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
_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_view_list_efl_access_selection_selected_child_deselect(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
_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_view_list_efl_access_selection_is_child_selected(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
_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_view_list_efl_access_selection_all_children_select(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED)
_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_view_list_efl_access_selection_access_selection_clear(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED)
_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_view_list_efl_access_selection_child_deselect(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED, int child_index EINA_UNUSED)
_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;
}
@ -828,7 +828,7 @@ _key_action_escape(Evas_Object *obj, const char *params EINA_UNUSED)
}
void
_efl_ui_view_list_item_select_set(Efl_Ui_View_List_LayoutItem *item, Eina_Bool selected)
_efl_ui_list_view_item_select_set(Efl_Ui_List_View_Layout_Item *item, Eina_Bool selected)
{
Eina_Stringshare *sprop;
assert(item != NULL);
@ -850,56 +850,56 @@ _efl_ui_view_list_item_select_set(Efl_Ui_View_List_LayoutItem *item, Eina_Bool s
}
static void
_efl_ui_view_list_relayout_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED, Efl_Ui_View_List_Relayout *object)
_efl_ui_list_view_relayout_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED, Efl_Ui_List_View_Relayout *object)
{
efl_replace(&pd->relayout, object);
if (pd->model && pd->relayout)
efl_ui_view_list_relayout_model_set(pd->relayout, pd->model);
efl_ui_list_view_relayout_model_set(pd->relayout, pd->model);
}
static Efl_Ui_View_List_Relayout *
_efl_ui_view_list_relayout_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd EINA_UNUSED)
static Efl_Ui_List_View_Relayout *
_efl_ui_list_view_relayout_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *pd EINA_UNUSED)
{
return pd->relayout;
}
static void
_layout(Efl_Ui_View_List_Data *pd)
_layout(Efl_Ui_List_View_Data *pd)
{
if (!pd->model)
return;
efl_ui_view_list_relayout_layout_do(pd->relayout, pd->obj, pd->segarray_first, pd->segarray);
efl_ui_list_view_relayout_layout_do(pd->relayout, pd->obj, pd->seg_array_first, pd->seg_array);
}
static Eina_Value
_children_slice_then(void * data, const Eina_Value v, const Eina_Future *dead_future EINA_UNUSED)
{
Efl_Ui_View_List_Data *pd = data;
Efl_Ui_List_View_Data *pd = data;
if (eina_value_type_get(&v) == EINA_VALUE_TYPE_ERROR)
goto on_error;
efl_ui_view_list_segarray_insert_value(pd->segarray, pd->slice.start, v);
efl_ui_list_view_seg_array_insert_value(pd->seg_array, pd->slice.start, v);
pd->segarray_first = pd->slice.start;
pd->seg_array_first = pd->slice.start;
pd->slice.start = pd->slice.count = 0;
pd->slice.future = NULL;
efl_ui_view_list_relayout_layout_do(pd->relayout, pd->obj, pd->segarray_first, pd->segarray);
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_view_list_efl_ui_view_list_model_min_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_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_view_list_efl_ui_view_list_model_min_size_set(Eo *obj, Efl_Ui_View_List_Data *pd, Eina_Size2D min)
_efl_ui_list_view_efl_ui_list_view_model_min_size_set(Eo *obj, Efl_Ui_List_View_Data *pd, Eina_Size2D min)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
@ -911,33 +911,33 @@ _efl_ui_view_list_efl_ui_view_list_model_min_size_set(Eo *obj, Efl_Ui_View_List_
}
EOLIAN static void
_efl_ui_view_list_efl_ui_focus_composition_prepare(Eo *obj, Efl_Ui_View_List_Data *pd)
_efl_ui_list_view_efl_ui_focus_composition_prepare(Eo *obj, Efl_Ui_List_View_Data *pd)
{
Eina_List *order = efl_ui_view_list_relayout_elements_get(pd->relayout);
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_view_list_efl_access_object_access_children_get(const Eo *obj, Efl_Ui_View_List_Data *pd)
_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_view_list_relayout_elements_get(pd->relayout);
ret2 = efl_access_object_access_children_get(efl_super(obj, EFL_UI_VIEW_LIST_CLASS));
ret = efl_ui_list_view_relayout_elements_get(pd->relayout);
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_view_list_efl_ui_widget_focus_state_apply(Eo *obj, Efl_Ui_View_List_Data *pd EINA_UNUSED, Efl_Ui_Widget_Focus_State current_state, Efl_Ui_Widget_Focus_State *configured_state, Efl_Ui_Widget *redirect EINA_UNUSED)
_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);
}
EOLIAN static Efl_Ui_View_List_LayoutItem *
_efl_ui_view_list_efl_ui_view_list_model_realize(Eo *obj, Efl_Ui_View_List_Data *pd, Efl_Ui_View_List_LayoutItem *item)
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_View_List_Item_Event evt;
Efl_Ui_List_View_Item_Event evt;
EINA_SAFETY_ON_NULL_RETURN_VAL(item->children, item);
item->layout = efl_ui_factory_create(pd->factory, item->children, obj);
@ -952,8 +952,8 @@ _efl_ui_view_list_efl_ui_view_list_model_realize(Eo *obj, Efl_Ui_View_List_Data
evt.child = item->children;
evt.layout = item->layout;
evt.index = efl_ui_view_list_item_index_get(item);
efl_event_callback_call(obj, EFL_UI_VIEW_LIST_EVENT_ITEM_REALIZED, &evt);
evt.index = efl_ui_list_view_item_index_get(item);
efl_event_callback_call(obj, EFL_UI_LIST_VIEW_EVENT_ITEM_REALIZED, &evt);
efl_ui_focus_composition_dirty(obj);
evas_object_show(item->layout);
@ -961,9 +961,9 @@ _efl_ui_view_list_efl_ui_view_list_model_realize(Eo *obj, Efl_Ui_View_List_Data
}
EOLIAN static void
_efl_ui_view_list_efl_ui_view_list_model_unrealize(Eo *obj, Efl_Ui_View_List_Data *pd, Efl_Ui_View_List_LayoutItem *item)
_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_View_List_Item_Event evt;
Efl_Ui_List_View_Item_Event evt;
EINA_SAFETY_ON_NULL_RETURN(item->layout);
evas_object_event_callback_del_full(item->layout, EVAS_CALLBACK_MOUSE_UP, _on_item_mouse_up, item);
@ -978,8 +978,8 @@ _efl_ui_view_list_efl_ui_view_list_model_unrealize(Eo *obj, Efl_Ui_View_List_Dat
evt.child = item->children;
evt.layout = item->layout;
evt.index = efl_ui_view_list_item_index_get(item);
efl_event_callback_call(obj, EFL_UI_VIEW_LIST_EVENT_ITEM_UNREALIZED, &evt);
evt.index = efl_ui_list_view_item_index_get(item);
efl_event_callback_call(obj, EFL_UI_LIST_VIEW_EVENT_ITEM_UNREALIZED, &evt);
evas_object_smart_member_del(item->layout);
efl_ui_factory_release(pd->factory, item->layout);
@ -987,7 +987,7 @@ _efl_ui_view_list_efl_ui_view_list_model_unrealize(Eo *obj, Efl_Ui_View_List_Dat
}
EOLIAN static void
_efl_ui_view_list_efl_ui_view_list_model_load_range_set(Eo* obj, Efl_Ui_View_List_Data* pd, int first, int count)
_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 ;
@ -1003,18 +1003,18 @@ _efl_ui_view_list_efl_ui_view_list_model_load_range_set(Eo* obj, Efl_Ui_View_Lis
}
EOLIAN static int
_efl_ui_view_list_efl_ui_view_list_model_model_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Data *pd)
_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_view_list, Efl_Ui_View_List_Data)
ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_list_view, Efl_Ui_List_View_Data)
/* Internal EO APIs and hidden overrides */
#define EFL_UI_VIEW_LIST_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_view_list)
#define EFL_UI_LIST_VIEW_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_list_view)
#include "efl_ui_view_list.eo.c"
#include "efl_ui_view_list_relayout.eo.c"
#include "efl_ui_view_list_model.eo.c"
#include "efl_ui_list_view.eo.c"
#include "efl_ui_list_view_relayout.eo.c"
#include "efl_ui_list_view_model.eo.c"

View File

@ -1,19 +1,19 @@
import elm_general;
struct Efl.Ui.View_List_Item_Event
struct Efl.Ui.List_View_Item_Event
{
layout: Efl.Ui.Layout.Object;
child: Efl.Model;
index: int;
}
class Efl.Ui.View_List (Efl.Ui.Layout.Object, Efl.Ui.View, Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar,
class Efl.Ui.List_View (Efl.Ui.Layout.Object, Efl.Ui.View, Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar,
Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub,
Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.View_List_Model, Efl.Ui.Widget_Focus_Manager)
Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager)
{
methods {
@property relayout {
values {
object: Efl.Ui.View_List_Relayout;
object: Efl.Ui.List_View_Relayout;
}
}
@property homogeneous {
@ -50,14 +50,14 @@ class Efl.Ui.View_List (Efl.Ui.Layout.Object, Efl.Ui.View, Efl.Ui.Scrollable_Int
}
}
events {
item,realized : Efl.Ui.View_List_Item_Event;
item,unrealized : Efl.Ui.View_List_Item_Event;
item,focused : Efl.Ui.View_List_Item_Event;
item,unfocused : Efl.Ui.View_List_Item_Event;
item,highlighted : Efl.Ui.View_List_Item_Event;
item,unhighlighted : Efl.Ui.View_List_Item_Event;
item,selected : Efl.Ui.View_List_Item_Event;
item,unselected : Efl.Ui.View_List_Item_Event;
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;
item,selected : Efl.Ui.List_View_Item_Event;
item,unselected : Efl.Ui.List_View_Item_Event;
}
implements {
@ -70,11 +70,11 @@ class Efl.Ui.View_List (Efl.Ui.Layout.Object, Efl.Ui.View, Efl.Ui.Scrollable_Int
Efl.Canvas.Group.group_member_add;
Efl.Canvas.Group.group_calculate;
Efl.Ui.View_List_Model.load_range { set;}
Efl.Ui.View_List_Model.realize;
Efl.Ui.View_List_Model.unrealize;
Efl.Ui.View_List_Model.model_size { get; }
Efl.Ui.View_List_Model.min_size { get; set; }
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; }
// Widget
Efl.Ui.Widget_Focus_Manager.focus_manager_create;

View File

@ -1,6 +1,6 @@
import efl_ui_view_list_types;
import efl_ui_list_view_types;
interface Efl.Ui.View_List_Model (Efl.Interface)
interface Efl.Ui.List_View_Model (Efl.Interface)
{
methods {
@property load_range {
@ -12,13 +12,13 @@ interface Efl.Ui.View_List_Model (Efl.Interface)
}
realize {
params {
item: ptr(Efl.Ui.View.List.LayoutItem);
item: ptr(Efl.Ui.List_View_Layout_Item);
}
return: ptr(Efl.Ui.View.List.LayoutItem);
return: ptr(Efl.Ui.List_View_Layout_Item);
}
unrealize {
params {
item: ptr(Efl.Ui.View.List.LayoutItem);
item: ptr(Efl.Ui.List_View_Layout_Item);
}
}
// @property visible_range {

View File

@ -1,6 +1,6 @@
class Efl.Ui.View_List_Pan (Efl.Ui.Pan)
class Efl.Ui.List_View_Pan (Efl.Ui.Pan)
{
[[Elementary Efl_Ui_View_List pan class]]
[[Elementary Efl_Ui_List_View pan class]]
implements {
Efl.Object.destructor;
Efl.Ui.Pan.content_size { get; }

View File

@ -7,16 +7,16 @@
#include <assert.h>
#include "elm_priv.h"
#include "efl_ui_view_list_segarray.h"
#include "efl_ui_list_view_seg_array.h"
#define MY_CLASS EFL_UI_VIEW_LIST_PRECISE_LAYOUTER_CLASS
#define MY_CLASS EFL_UI_LIST_VIEW_PRECISE_LAYOUTER_CLASS
typedef struct _Efl_Ui_View_List_Precise_Layouter_Data
typedef struct _Efl_Ui_List_View_Precise_Layouter_Data
{
Efl_Model* model;
Efl_Ui_View_List_Model *modeler;
Efl_Ui_List_View_Model *modeler;
Ecore_Job *calc_job;
Efl_Ui_View_List_SegArray *segarray;
Efl_Ui_List_View_Seg_Array *seg_array;
Eina_Size2D min;
@ -28,32 +28,32 @@ typedef struct _Efl_Ui_View_List_Precise_Layouter_Data
Eina_Bool initialized : 1;
Eina_Bool recalc : 1;
Eina_Bool resize : 1;
} Efl_Ui_View_List_Precise_Layouter_Data;
} Efl_Ui_List_View_Precise_Layouter_Data;
typedef struct _Efl_Ui_View_List_Precise_Layouter_Node_Data
typedef struct _Efl_Ui_List_View_Precise_Layouter_Node_Data
{
Eina_Size2D min;
Eina_Size2D size;
Eina_Bool realized;
} Efl_Ui_View_List_Precise_Layouter_Node_Data;
} Efl_Ui_List_View_Precise_Layouter_Node_Data;
typedef struct _Efl_Ui_View_List_Precise_Layouter_Callback_Data
typedef struct _Efl_Ui_List_View_Precise_Layouter_Callback_Data
{
Efl_Ui_View_List_Precise_Layouter_Data *pd;
Efl_Ui_View_List_LayoutItem *item;
} Efl_Ui_View_List_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_view_list_precise_layouter.eo.h"
#include "efl_ui_list_view_precise_layouter.eo.h"
static void _efl_ui_view_list_relayout_layout_do(Efl_Ui_View_List_Precise_Layouter_Data *);
static Eina_Bool _initilize(Eo *, Efl_Ui_View_List_Precise_Layouter_Data*, Efl_Ui_View_List_Model*, Efl_Ui_View_List_SegArray*);
static void _finalize(Eo *, Efl_Ui_View_List_Precise_Layouter_Data*);
static void _node_realize(Efl_Ui_View_List_Precise_Layouter_Data*, Efl_Ui_View_List_SegArray_Node*);
static void _node_unrealize(Efl_Ui_View_List_Precise_Layouter_Data*, Efl_Ui_View_List_SegArray_Node*);
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_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_LayoutItem* item)
_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];
@ -119,11 +119,11 @@ _item_size_calc(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_Lay
}
static void
_item_min_calc(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_LayoutItem* item
, Eina_Size2D min, Efl_Ui_View_List_SegArray_Node *itemnode)
_item_min_calc(Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Layout_Item* item
, Eina_Size2D min, Efl_Ui_List_View_Seg_Array_Node *itemnode)
{
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata = itemnode->layout_data;
Efl_Ui_View_List_LayoutItem *layout_item;
Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = itemnode->layout_data;
Efl_Ui_List_View_Layout_Item *layout_item;
int i, pad[4];
efl_gfx_size_hint_margin_get(item->layout, &pad[0], &pad[1], &pad[2], &pad[3]);
@ -144,7 +144,7 @@ _item_min_calc(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_Layo
nodedata->min.w = 0;
for (i = 0; i != itemnode->length; ++i)
{
layout_item = (Efl_Ui_View_List_LayoutItem *)itemnode->pointers[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;
@ -157,13 +157,13 @@ _item_min_calc(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_Layo
pd->min.w = min.w;
else if (pd->min.w == item->min.w)
{
Efl_Ui_View_List_SegArray_Node *node2;
Eina_Accessor *nodes = efl_ui_view_list_segarray_node_accessor_get(pd->segarray);
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_View_List_Precise_Layouter_Node_Data *nodedata2 = node2->layout_data;
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;
@ -183,18 +183,18 @@ static void
_on_item_size_hint_change(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj, void *event_info EINA_UNUSED)
{
Efl_Ui_View_List_Precise_Layouter_Callback_Data *cb_data = data;
Efl_Ui_View_List_Precise_Layouter_Data *pd = cb_data->pd;
Efl_Ui_View_List_LayoutItem *item = cb_data->item;;
Efl_Ui_View_List_SegArray_Node *node = item->tree_node;
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata = node->layout_data;
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;
Eina_Size2D min = efl_gfx_size_hint_combined_min_get(obj);
_item_min_calc(pd, item, min, node);
if (!nodedata->realized)
{
free(evas_object_event_callback_del(item->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hint_change));
efl_ui_view_list_model_unrealize(pd->modeler, item);
efl_ui_list_view_model_unrealize(pd->modeler, item);
}
}
@ -202,14 +202,14 @@ static void
_on_modeler_resize(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Efl_Ui_View_List_Precise_Layouter_Data *pd = data;
Efl_Ui_List_View_Precise_Layouter_Data *pd = data;
pd->resize = EINA_TRUE;
}
typedef struct _Request Request;
struct _Request
{
Efl_Ui_View_List_Precise_Layouter_Data *pd;
Efl_Ui_List_View_Precise_Layouter_Data *pd;
unsigned int index;
};
@ -221,7 +221,7 @@ _children_get(void *data, const Eina_Value v, const Eina_Future *dead_future EIN
if (eina_value_type_get(&v) == EINA_VALUE_TYPE_ERROR)
goto on_error;
efl_ui_view_list_segarray_insert_value(r->pd->segarray, r->index, v);
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);
@ -234,7 +234,7 @@ static void
_child_added_cb(void *data, const Efl_Event *event)
{
Efl_Model_Children_Event* evt = event->info;
Efl_Ui_View_List_Precise_Layouter_Data *pd = data;
Efl_Ui_List_View_Precise_Layouter_Data *pd = data;
Eina_Future *f;
Request *r;
@ -252,13 +252,13 @@ static void
_child_removed_cb(void *data, const Efl_Event *event)
{
Efl_Model_Children_Event* evt = event->info;
Efl_Ui_View_List_Precise_Layouter_Data *pd = data;
Efl_Ui_View_List_LayoutItem *layout_item, *litem;
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata;
Efl_Ui_View_List_SegArray_Node *itemnode;
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_view_list_segarray_remove(pd->segarray, evt->index);
litem = efl_ui_list_view_seg_array_remove(pd->seg_array, evt->index);
if (!litem) return;
itemnode = litem->tree_node;
@ -274,7 +274,7 @@ _child_removed_cb(void *data, const Efl_Event *event)
for (i = 0; i != itemnode->length; ++i)
{
layout_item = (Efl_Ui_View_List_LayoutItem *)itemnode->pointers[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;
@ -287,13 +287,13 @@ _child_removed_cb(void *data, const Efl_Event *event)
if (pd->min.w == litem->min.w)
{
Efl_Ui_View_List_SegArray_Node *node2;
Eina_Accessor *nodes = efl_ui_view_list_segarray_node_accessor_get(pd->segarray);
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_View_List_Precise_Layouter_Node_Data *nodedata2 = node2->layout_data;
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;
@ -303,7 +303,7 @@ _child_removed_cb(void *data, const Efl_Event *event)
eina_accessor_free(nodes);
}
efl_ui_view_list_model_unrealize(pd->modeler, litem);
efl_ui_list_view_model_unrealize(pd->modeler, litem);
free(litem);
pd->recalc = EINA_TRUE;
@ -313,14 +313,14 @@ _child_removed_cb(void *data, const Efl_Event *event)
static void
_child_count_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
Efl_Ui_View_List_Precise_Layouter_Data *pd = data;
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_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_Model *modeler, Efl_Ui_View_List_SegArray *segarray)
_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;
@ -332,9 +332,9 @@ _initilize(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_
pd->initialized = EINA_TRUE;
pd->modeler = modeler;
pd->segarray = segarray;
pd->seg_array = seg_array;
efl_ui_view_list_model_load_range_set(pd->modeler, 0, pd->count_total); // load all
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);
@ -346,9 +346,9 @@ _initilize(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_
}
static void
_finalize(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd)
_finalize(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd)
{
Efl_Ui_View_List_SegArray_Node* node;
Efl_Ui_List_View_Seg_Array_Node* node;
int i = 0;
evas_object_event_callback_del_full(pd->modeler, EVAS_CALLBACK_RESIZE, _on_modeler_resize, pd);
@ -356,7 +356,7 @@ _finalize(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd)
efl_event_callback_del(pd->model, EFL_MODEL_EVENT_CHILD_REMOVED, _child_removed_cb, pd);
pd->count_total = 0;
Eina_Accessor *nodes = efl_ui_view_list_segarray_node_accessor_get(pd->segarray);
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);
@ -368,9 +368,9 @@ _finalize(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd)
pd->min.w = 0;
pd->min.h = 0;
efl_ui_view_list_model_min_size_set(pd->modeler, pd->min);
efl_ui_list_view_model_min_size_set(pd->modeler, pd->min);
pd->segarray = NULL;
pd->seg_array = NULL;
pd->modeler = NULL;
pd->initialized = EINA_FALSE;
@ -378,11 +378,11 @@ _finalize(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd)
}
static void
_node_realize(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_SegArray_Node *node)
_node_realize(Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Seg_Array_Node *node)
{
Efl_Ui_View_List_LayoutItem* layout_item;
Efl_Ui_View_List_Precise_Layouter_Callback_Data *cb_data;
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata = node->layout_data;
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);
@ -393,12 +393,12 @@ _node_realize(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_SegAr
for (i = 0; i != node->length; ++i)
{
layout_item = (Efl_Ui_View_List_LayoutItem *)node->pointers[i];
efl_ui_view_list_model_realize(pd->modeler, layout_item);
layout_item = (Efl_Ui_List_View_Layout_Item *)node->pointers[i];
efl_ui_list_view_model_realize(pd->modeler, layout_item);
if (layout_item->layout)
{
cb_data = calloc(1, sizeof(Efl_Ui_View_List_Precise_Layouter_Callback_Data));
cb_data = calloc(1, sizeof(Efl_Ui_List_View_Precise_Layouter_Callback_Data));
cb_data->pd = pd;
cb_data->item = layout_item;
evas_object_event_callback_add(layout_item->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hint_change, cb_data);
@ -408,11 +408,11 @@ _node_realize(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_SegAr
}
static void
_node_unrealize(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_SegArray_Node *node)
_node_unrealize(Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Ui_List_View_Seg_Array_Node *node)
{
Efl_Ui_View_List_LayoutItem* layout_item;
Efl_Ui_View_List_Precise_Layouter_Callback_Data *cb_data;
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata = node->layout_data;
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);
@ -423,24 +423,24 @@ _node_unrealize(Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Ui_View_List_Seg
for (i = 0; i != node->length; ++i)
{
layout_item = (Efl_Ui_View_List_LayoutItem *)node->pointers[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_view_list_model_unrealize(pd->modeler, layout_item);
efl_ui_list_view_model_unrealize(pd->modeler, layout_item);
}
}
static void
_calc_range(Efl_Ui_View_List_Precise_Layouter_Data *pd)
_calc_range(Efl_Ui_List_View_Precise_Layouter_Data *pd)
{
Efl_Ui_View_List_SegArray_Node *node;
Efl_Ui_List_View_Seg_Array_Node *node;
Evas_Coord ch, ny;
Eina_Rect vgmt;
Eina_Position2D spos;
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata;
Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata;
int i;
vgmt = efl_ui_scrollable_viewport_geometry_get(pd->modeler);
@ -452,7 +452,7 @@ _calc_range(Efl_Ui_View_List_Precise_Layouter_Data *pd)
vgmt.h *= 2;
ch = 0;
Eina_Accessor *nodes = efl_ui_view_list_segarray_node_accessor_get(pd->segarray);
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;
@ -472,9 +472,9 @@ _calc_range(Efl_Ui_View_List_Precise_Layouter_Data *pd)
static void
_calc_size_job(void *data)
{
Efl_Ui_View_List_Precise_Layouter_Data *pd;
Efl_Ui_View_List_SegArray_Node *node;
Efl_Ui_View_List_LayoutItem *layout_item;
Efl_Ui_List_View_Precise_Layouter_Data *pd;
Efl_Ui_List_View_Seg_Array_Node *node;
Efl_Ui_List_View_Layout_Item *layout_item;
Eo *obj = data;
Eina_Size2D min;
int i;
@ -484,16 +484,16 @@ _calc_size_job(void *data)
pd = efl_data_scope_get(obj, MY_CLASS);
if (EINA_UNLIKELY(!pd)) return;
Eina_Accessor *nodes = efl_ui_view_list_segarray_node_accessor_get(pd->segarray);
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_View_List_Precise_Layouter_Node_Data));
node->layout_data = calloc(1, sizeof(Efl_Ui_List_View_Precise_Layouter_Node_Data));
for (i = 0; i != node->length; ++i)
{
layout_item = (Efl_Ui_View_List_LayoutItem *)node->pointers[i];
layout_item = (Efl_Ui_List_View_Layout_Item *)node->pointers[i];
EINA_SAFETY_ON_NULL_RETURN(layout_item);
// cache size of new items
@ -501,18 +501,18 @@ _calc_size_job(void *data)
{
if (!layout_item->layout)
{
efl_ui_view_list_model_realize(pd->modeler, layout_item);
efl_ui_list_view_model_realize(pd->modeler, layout_item);
}
min = efl_gfx_size_hint_combined_min_get(layout_item->layout);
if (min.w && min.h)
{
_item_min_calc(pd, layout_item, min, node);
efl_ui_view_list_model_unrealize(pd->modeler, layout_item);
efl_ui_list_view_model_unrealize(pd->modeler, layout_item);
}
else
{
Efl_Ui_View_List_Precise_Layouter_Callback_Data *cb_data = calloc(1, sizeof(Efl_Ui_View_List_Precise_Layouter_Callback_Data));
Efl_Ui_List_View_Precise_Layouter_Callback_Data *cb_data = calloc(1, sizeof(Efl_Ui_List_View_Precise_Layouter_Callback_Data));
cb_data->pd = pd;
cb_data->item = layout_item;
evas_object_event_callback_add(layout_item->layout, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hint_change, cb_data);
@ -536,7 +536,7 @@ _calc_size_job(void *data)
}
EOLIAN static Efl_Object *
_efl_ui_view_list_precise_layouter_efl_object_constructor(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd)
_efl_ui_list_view_precise_layouter_efl_object_constructor(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd)
{
obj = efl_constructor(efl_super(obj, MY_CLASS));
pd->initialized = EINA_FALSE;
@ -545,23 +545,23 @@ _efl_ui_view_list_precise_layouter_efl_object_constructor(Eo *obj EINA_UNUSED, E
}
EOLIAN static Eina_List *
_efl_ui_view_list_precise_layouter_efl_ui_view_list_relayout_elements_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd)
_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_View_List_LayoutItem* layout_item;
Efl_Ui_View_List_SegArray_Node *items_node;
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_view_list_segarray_node_accessor_get(pd->segarray);
Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
EINA_ACCESSOR_FOREACH(nodes, i, items_node)
{
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata = items_node->layout_data;
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_View_List_LayoutItem *)items_node->pointers[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);
}
@ -571,7 +571,7 @@ _efl_ui_view_list_precise_layouter_efl_ui_view_list_relayout_elements_get(const
}
EOLIAN static void
_efl_ui_view_list_precise_layouter_efl_ui_view_list_relayout_model_set(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd, Efl_Model *model)
_efl_ui_list_view_precise_layouter_efl_ui_list_view_relayout_model_set(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Precise_Layouter_Data *pd, Efl_Model *model)
{
_finalize(obj, pd);
@ -581,20 +581,20 @@ _efl_ui_view_list_precise_layouter_efl_ui_view_list_relayout_model_set(Eo *obj E
{
pd->count_total = efl_model_children_count_get(pd->model);
if (pd->count_total && pd->modeler)
efl_ui_view_list_model_load_range_set(pd->modeler, 0, pd->count_total); // load all
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_view_list_relayout_layout_do(Efl_Ui_View_List_Precise_Layouter_Data *pd)
_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_View_List_LayoutItem* layout_item;
Efl_Ui_View_List_SegArray_Node *items_node;
Efl_Ui_List_View_Layout_Item* layout_item;
Efl_Ui_List_View_Seg_Array_Node *items_node;
int i, j = 0;
_calc_range(pd);
@ -621,15 +621,15 @@ _efl_ui_view_list_relayout_layout_do(Efl_Ui_View_List_Precise_Layouter_Data *pd)
extra = boxh - pd->min.h;
if (extra < 0) extra = 0;
efl_ui_view_list_model_min_size_set(pd->modeler, pd->min);
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_view_list_segarray_node_accessor_get(pd->segarray);
Eina_Accessor *nodes = efl_ui_list_view_seg_array_node_accessor_get(pd->seg_array);
EINA_ACCESSOR_FOREACH(nodes, i, items_node)
{
Efl_Ui_View_List_Precise_Layouter_Node_Data *nodedata = items_node->layout_data;
Efl_Ui_List_View_Precise_Layouter_Node_Data *nodedata = items_node->layout_data;
if (!nodedata)
{
continue;
@ -639,7 +639,7 @@ _efl_ui_view_list_relayout_layout_do(Efl_Ui_View_List_Precise_Layouter_Data *pd)
{
for(j = 0; j != items_node->length;++j)
{
layout_item = (Efl_Ui_View_List_LayoutItem *)items_node->pointers[j];
layout_item = (Efl_Ui_List_View_Layout_Item *)items_node->pointers[j];
double x, y, w, h;
double weight_x, weight_y;
@ -678,16 +678,16 @@ _efl_ui_view_list_relayout_layout_do(Efl_Ui_View_List_Precise_Layouter_Data *pd)
}
EOLIAN static void
_efl_ui_view_list_precise_layouter_efl_ui_view_list_relayout_layout_do
(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Precise_Layouter_Data *pd
, Efl_Ui_View_List_Model *modeler, int first, Efl_Ui_View_List_SegArray *segarray)
_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, Efl_Ui_List_View_Seg_Array *seg_array)
{
if (!_initilize(obj, pd, modeler, segarray))
if (!_initilize(obj, pd, modeler, seg_array))
return;
pd->first = first;
if (pd->recalc && efl_ui_view_list_segarray_count(segarray) > 0)
if (pd->recalc && efl_ui_list_view_seg_array_count(seg_array) > 0)
{
// cache size of new items
pd->calc_progress = 0;
@ -696,7 +696,7 @@ _efl_ui_view_list_precise_layouter_efl_ui_view_list_relayout_layout_do
return;
}
_efl_ui_view_list_relayout_layout_do(pd);
_efl_ui_list_view_relayout_layout_do(pd);
}
#include "efl_ui_view_list_precise_layouter.eo.c"
#include "efl_ui_list_view_precise_layouter.eo.c"

View File

@ -0,0 +1,9 @@
class Efl.Ui.List_View_Precise_Layouter (Efl.Object, Efl.Ui.List_View_Relayout)
{
implements {
Efl.Object.constructor;
Efl.Ui.List_View_Relayout.layout_do;
Efl.Ui.List_View_Relayout.model { set; }
Efl.Ui.List_View_Relayout.elements { get; }
}
}

View File

@ -1,5 +1,5 @@
#ifndef EFL_UI_VIEW_LIST_PRIVATE_H
#define EFL_UI_VIEW_LIST_PRIVATE_H
#ifndef EFL_UI_LIST_VIEW_PRIVATE_H
#define EFL_UI_LIST_VIEW_PRIVATE_H
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
@ -8,16 +8,16 @@
#include <Elementary.h>
#include "elm_priv.h"
typedef struct _Efl_Ui_View_List_Data Efl_Ui_View_List_Data;
int efl_ui_view_list_item_index_get(Efl_Ui_View_List_LayoutItem *item);
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_view_list_segarray.h"
#include "efl_ui_list_view_seg_array.h"
struct _Efl_Ui_View_List_Data
struct _Efl_Ui_List_View_Data
{
Eo *obj;
Eo *scrl_mgr;
Efl_Ui_View_List_Pan *pan_obj;
Efl_Ui_List_View_Pan *pan_obj;
Efl_Model *model;
Eina_Stringshare *style;
@ -33,9 +33,9 @@ struct _Efl_Ui_View_List_Data
Eina_List *selected_items;
Efl_Ui_Focus_Manager *manager;
Efl_Ui_View_List_Relayout *relayout;
Efl_Ui_View_List_SegArray *segarray;
int segarray_first;
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;
@ -44,19 +44,19 @@ struct _Efl_Ui_View_List_Data
Eina_Bool scrl_freeze : 1;
};
typedef struct _Efl_Ui_View_List_Pan_Data Efl_Ui_View_List_Pan_Data;
typedef struct _Efl_Ui_List_View_Pan_Data Efl_Ui_List_View_Pan_Data;
struct _Efl_Ui_View_List_Pan_Data
struct _Efl_Ui_List_View_Pan_Data
{
Eo *wobj;
Eina_Rect gmt;
};
#define EFL_UI_VIEW_LIST_DATA_GET(o, ptr) \
Efl_Ui_View_List_Data * ptr = efl_data_scope_get(o, EFL_UI_VIEW_LIST_CLASS)
#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_VIEW_LIST_DATA_GET_OR_RETURN(o, ptr) \
EFL_UI_VIEW_LIST_DATA_GET(o, ptr); \
#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)", \
@ -64,8 +64,8 @@ struct _Efl_Ui_View_List_Pan_Data
return; \
}
#define EFL_UI_VIEW_LIST_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
EFL_UI_VIEW_LIST_DATA_GET(o, ptr); \
#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)", \

View File

@ -1,11 +1,11 @@
interface Efl.Ui.View_List_Relayout (Efl.Interface)
interface Efl.Ui.List_View_Relayout (Efl.Interface)
{
methods {
layout_do {
params {
modeler: Efl.Ui.View_List_Model;
modeler: Efl.Ui.List_View_Model;
first: int;
children: Efl.Ui.View_List_SegArray;
children: Efl.Ui.List_View_Seg_Array;
}
}
@property model {

View File

@ -5,15 +5,15 @@
#include <Efl.h>
#include <assert.h>
#define MY_CLASS EFL_UI_VIEW_LIST_SEGARRAY_CLASS
#define MY_CLASS_NAME "Efl.Ui.View.List.SegArray"
#define MY_CLASS EFL_UI_LIST_VIEW_SEG_ARRAY_CLASS
#define MY_CLASS_NAME "Efl.Ui.List_View_Seg_Array"
#include "efl_ui_view_list_private.h"
#include "efl_ui_view_list_segarray.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_View_List_SegArray_Node const* node = (void const*)rbtree;
Efl_Ui_List_View_Seg_Array_Node const* node = (void const*)rbtree;
int index = *(int*)key;
if(index < node->first)
{
@ -31,7 +31,7 @@ static int _search_lookup_cb(Eina_Rbtree const* rbtree, const void* key, int len
static int _insert_lookup_cb(Eina_Rbtree const* rbtree, const void* key, int length EINA_UNUSED, void* data EINA_UNUSED)
{
Efl_Ui_View_List_SegArray_Node const* node = (void const*)rbtree;
Efl_Ui_List_View_Seg_Array_Node const* node = (void const*)rbtree;
int index = *(int*)key;
if(index < node->first)
{
@ -47,8 +47,8 @@ static int _insert_lookup_cb(Eina_Rbtree const* rbtree, const void* key, int len
}
}
static Eina_Rbtree_Direction _rbtree_compare(Efl_Ui_View_List_SegArray_Node const* left,
Efl_Ui_View_List_SegArray_Node const* right, void* data EINA_UNUSED)
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;
@ -58,7 +58,7 @@ static Eina_Rbtree_Direction _rbtree_compare(Efl_Ui_View_List_SegArray_Node cons
static void
_free_node(Efl_Ui_View_List_SegArray_Node* node, void* data EINA_UNUSED)
_free_node(Efl_Ui_List_View_Seg_Array_Node* node, void* data EINA_UNUSED)
{
int i = 0;
@ -71,11 +71,11 @@ _free_node(Efl_Ui_View_List_SegArray_Node* node, void* data EINA_UNUSED)
free(node);
}
static Efl_Ui_View_List_SegArray_Node*
_alloc_node(Efl_Ui_View_List_SegArray_Data* pd, int first)
static Efl_Ui_List_View_Seg_Array_Node*
_alloc_node(Efl_Ui_List_View_Seg_Array_Data* pd, int first)
{
Efl_Ui_View_List_SegArray_Node* node;
node = calloc(1, sizeof(Efl_Ui_View_List_SegArray_Node) + pd->step_size*sizeof(Efl_Ui_View_List_LayoutItem*));
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*));
node->first = first;
node->max = pd->step_size;
pd->root = (void*)eina_rbtree_inline_insert(EINA_RBTREE_GET(pd->root), EINA_RBTREE_GET(node),
@ -85,7 +85,7 @@ _alloc_node(Efl_Ui_View_List_SegArray_Data* pd, int first)
}
EOLIAN static void
_efl_ui_view_list_segarray_flush(Eo* obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data *pd)
_efl_ui_list_view_seg_array_flush(Eo* obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data *pd)
{
if (pd->root)
eina_rbtree_delete(EINA_RBTREE_GET(pd->root), EINA_RBTREE_FREE_CB(_free_node), NULL);
@ -95,26 +95,26 @@ _efl_ui_view_list_segarray_flush(Eo* obj EINA_UNUSED, Efl_Ui_View_List_SegArray_
pd->count = 0;
}
static Efl_Ui_View_List_LayoutItem* _create_item_partial(Efl_Model* model)
static Efl_Ui_List_View_Layout_Item* _create_item_partial(Efl_Model* model)
{
Efl_Ui_View_List_LayoutItem* item = calloc(1, sizeof(Efl_Ui_View_List_LayoutItem));
Efl_Ui_List_View_Layout_Item* item = calloc(1, sizeof(Efl_Ui_List_View_Layout_Item));
item->children = model;
return item;
}
static Efl_Ui_View_List_LayoutItem* _create_item(Efl_Model* model, Efl_Ui_View_List_SegArray_Node* node, unsigned int index)
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_View_List_LayoutItem* item = _create_item_partial(model);
Efl_Ui_List_View_Layout_Item* item = _create_item_partial(model);
item->index_offset = index - node->first;
item->tree_node = node;
return item;
}
EOLIAN static Efl_Ui_View_List_LayoutItem*
_efl_ui_view_list_segarray_remove(Eo* obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data *pd, int index)
EOLIAN static Efl_Ui_List_View_Layout_Item*
_efl_ui_list_view_seg_array_remove(Eo* obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data *pd, int index)
{
Efl_Ui_View_List_SegArray_Node *node;
Efl_Ui_View_List_LayoutItem *item, *rt;
Efl_Ui_List_View_Seg_Array_Node *node;
Efl_Ui_List_View_Layout_Item *item, *rt;
Eina_Iterator* iterator;
int offset;
@ -146,7 +146,7 @@ _efl_ui_view_list_segarray_remove(Eo* obj EINA_UNUSED, Efl_Ui_View_List_SegArray
}
static void
_efl_ui_view_list_segarray_insert_at_node(Efl_Ui_View_List_SegArray_Data* pd, int index, Efl_Ui_View_List_LayoutItem* item, Efl_Ui_View_List_SegArray_Node* node)
_efl_ui_list_view_seg_array_insert_at_node(Efl_Ui_List_View_Seg_Array_Data* pd, int index, Efl_Ui_List_View_Layout_Item* item, Efl_Ui_List_View_Seg_Array_Node* node)
{
Eina_Iterator* iterator;
int pos;
@ -194,10 +194,10 @@ _efl_ui_view_list_segarray_insert_at_node(Efl_Ui_View_List_SegArray_Data* pd, in
EOLIAN static void
_efl_ui_view_list_segarray_insert(Eo *obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data* pd, int index, Efl_Model* model)
_efl_ui_list_view_seg_array_insert(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data* pd, int index, Efl_Model* model)
{
Efl_Ui_View_List_SegArray_Node* node, *next;
Efl_Ui_View_List_LayoutItem* item;
Efl_Ui_List_View_Seg_Array_Node* node, *next;
Efl_Ui_List_View_Layout_Item* item;
item = _create_item_partial(model);
@ -207,34 +207,34 @@ _efl_ui_view_list_segarray_insert(Eo *obj EINA_UNUSED, Efl_Ui_View_List_SegArray
{
next = (void*)EINA_RBTREE_GET(node)->son[EINA_RBTREE_LEFT];
if(next && next->first <= index)
_efl_ui_view_list_segarray_insert_at_node(pd, index, item, next);
_efl_ui_list_view_seg_array_insert_at_node(pd, index, item, next);
else
_efl_ui_view_list_segarray_insert_at_node(pd, index, item, node);
_efl_ui_list_view_seg_array_insert_at_node(pd, index, item, node);
}
else
_efl_ui_view_list_segarray_insert_at_node(pd, index, item, NULL);
_efl_ui_list_view_seg_array_insert_at_node(pd, index, item, NULL);
}
static void
efl_ui_view_list_segarray_insert_object(Efl_Ui_View_List_SegArray_Data *segarray, unsigned int index, Efl_Model *children)
efl_ui_list_view_seg_array_insert_object(Efl_Ui_List_View_Seg_Array_Data *seg_array, unsigned int index, Efl_Model *children)
{
Efl_Ui_View_List_SegArray_Node *node;
Efl_Ui_List_View_Seg_Array_Node *node;
node = (void*)eina_rbtree_inline_lookup(EINA_RBTREE_GET(segarray->root),
node = (void*)eina_rbtree_inline_lookup(EINA_RBTREE_GET(seg_array->root),
&index, sizeof(index), &_insert_lookup_cb, NULL);
if (!node)
{
node = _alloc_node(segarray, index);
node = _alloc_node(seg_array, index);
}
assert(node->length < node->max);
node->pointers[node->length] = _create_item(children, node, index);
node->length++;
segarray->count++;
seg_array->count++;
}
EOLIAN static void
_efl_ui_view_list_segarray_insert_value(Eo *obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data *segarray, int first, Eina_Value v)
_efl_ui_list_view_seg_array_insert_value(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data *seg_array, int first, Eina_Value v)
{
Efl_Model *children;
unsigned int i, len;
@ -242,7 +242,7 @@ _efl_ui_view_list_segarray_insert_value(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Se
if (eina_value_type_get(&v) == EINA_VALUE_TYPE_OBJECT)
{
children = eina_value_object_get(&v);
efl_ui_view_list_segarray_insert_object(segarray, first, children);
efl_ui_list_view_seg_array_insert_object(seg_array, first, children);
}
else if (eina_value_type_get(&v) == EINA_VALUE_TYPE_ARRAY)
{
@ -250,7 +250,7 @@ _efl_ui_view_list_segarray_insert_value(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Se
{
unsigned int idx = first + i;
efl_ui_view_list_segarray_insert_object(segarray, idx, children);
efl_ui_list_view_seg_array_insert_object(seg_array, idx, children);
}
}
else
@ -260,28 +260,28 @@ _efl_ui_view_list_segarray_insert_value(Eo *obj EINA_UNUSED, Efl_Ui_View_List_Se
}
EOLIAN static int
_efl_ui_view_list_segarray_count(Eo *obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data* pd)
_efl_ui_list_view_seg_array_count(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data* pd)
{
return pd->count;
}
typedef struct _Efl_Ui_View_List_Segarray_Eina_Accessor
typedef struct _Efl_Ui_List_View_Segarray_Eina_Accessor
{
Eina_Accessor vtable;
Efl_Ui_View_List_SegArray_Data* segarray;
} Efl_Ui_View_List_Segarray_Eina_Accessor;
Efl_Ui_List_View_Seg_Array_Data* seg_array;
} Efl_Ui_List_View_Segarray_Eina_Accessor;
static Eina_Bool
_efl_ui_view_list_segarray_accessor_get_at(Efl_Ui_View_List_Segarray_Eina_Accessor* acc,
_efl_ui_list_view_seg_array_accessor_get_at(Efl_Ui_List_View_Segarray_Eina_Accessor* acc,
int idx, void** data)
{
Efl_Ui_View_List_SegArray_Node* node;
node = (void*)eina_rbtree_inline_lookup(EINA_RBTREE_GET(acc->segarray->root),
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_View_List_LayoutItem* item = node->pointers[i];
Efl_Ui_List_View_Layout_Item* item = node->pointers[i];
*data = item;
return EINA_TRUE;
}
@ -289,13 +289,13 @@ _efl_ui_view_list_segarray_accessor_get_at(Efl_Ui_View_List_Segarray_Eina_Access
}
EOLIAN static void
_efl_ui_view_list_segarray_setup(Eo *obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data *pd, int size)
_efl_ui_list_view_seg_array_setup(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data *pd, int size)
{
pd->step_size = size;
}
EOLIAN static Eo *
_efl_ui_view_list_segarray_efl_object_constructor(Eo *obj, Efl_Ui_View_List_SegArray_Data *pd EINA_UNUSED)
_efl_ui_list_view_seg_array_efl_object_constructor(Eo *obj, Efl_Ui_List_View_Seg_Array_Data *pd EINA_UNUSED)
{
obj = efl_constructor(efl_super(obj, MY_CLASS));
@ -303,7 +303,7 @@ _efl_ui_view_list_segarray_efl_object_constructor(Eo *obj, Efl_Ui_View_List_SegA
}
EOLIAN static void
_efl_ui_view_list_segarray_efl_object_destructor(Eo *obj, Efl_Ui_View_List_SegArray_Data *pd)
_efl_ui_list_view_seg_array_efl_object_destructor(Eo *obj, Efl_Ui_List_View_Seg_Array_Data *pd)
{
if (pd->root)
eina_rbtree_delete(EINA_RBTREE_GET(pd->root), EINA_RBTREE_FREE_CB(_free_node), NULL);
@ -313,68 +313,68 @@ _efl_ui_view_list_segarray_efl_object_destructor(Eo *obj, Efl_Ui_View_List_SegAr
}
static void*
_efl_ui_view_list_segarray_accessor_get_container(Efl_Ui_View_List_Segarray_Eina_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_accessor_free(Efl_Ui_View_List_Segarray_Eina_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_accessor_lock(Efl_Ui_View_List_Segarray_Eina_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_accessor_unlock(Efl_Ui_View_List_Segarray_Eina_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_accessor_clone(Efl_Ui_View_List_Segarray_Eina_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_accessor_setup(Efl_Ui_View_List_Segarray_Eina_Accessor* acc, Efl_Ui_View_List_SegArray_Data* segarray)
_efl_ui_list_view_seg_array_accessor_setup(Efl_Ui_List_View_Segarray_Eina_Accessor* acc, Efl_Ui_List_View_Seg_Array_Data* 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_view_list_segarray_accessor_get_at);
acc->vtable.get_container = FUNC_ACCESSOR_GET_CONTAINER(_efl_ui_view_list_segarray_accessor_get_container);
acc->vtable.free = FUNC_ACCESSOR_FREE(_efl_ui_view_list_segarray_accessor_free);
acc->vtable.lock = FUNC_ACCESSOR_LOCK(_efl_ui_view_list_segarray_accessor_lock);
acc->vtable.unlock = FUNC_ACCESSOR_LOCK(_efl_ui_view_list_segarray_accessor_unlock);
acc->vtable.clone = FUNC_ACCESSOR_CLONE(_efl_ui_view_list_segarray_accessor_clone);
acc->segarray = segarray;
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;
}
EOLIAN static Eina_Accessor*
_efl_ui_view_list_segarray_accessor_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data* pd)
_efl_ui_list_view_seg_array_accessor_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data* pd)
{
Efl_Ui_View_List_Segarray_Eina_Accessor* acc = calloc(1, sizeof(Efl_Ui_View_List_Segarray_Eina_Accessor));
_efl_ui_view_list_segarray_accessor_setup(acc, 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;
}
typedef struct _Efl_Ui_View_List_Segarray_Node_Accessor
typedef struct _Efl_Ui_List_View_Segarray_Node_Accessor
{
Eina_Accessor vtable;
Efl_Ui_View_List_SegArray_Data* segarray;
Efl_Ui_List_View_Seg_Array_Data* seg_array;
Eina_Iterator* pre_iterator;
Efl_Ui_View_List_SegArray_Node* current_node;
Efl_Ui_List_View_Seg_Array_Node* current_node;
int current_index;
} Efl_Ui_View_List_Segarray_Node_Accessor;
} Efl_Ui_List_View_Segarray_Node_Accessor;
static Eina_Bool
_efl_ui_view_list_segarray_node_accessor_get_at(Efl_Ui_View_List_Segarray_Node_Accessor* acc,
_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)
@ -392,7 +392,7 @@ _efl_ui_view_list_segarray_node_accessor_get_at(Efl_Ui_View_List_Segarray_Node_A
}
if(!acc->pre_iterator)
acc->pre_iterator = eina_rbtree_iterator_infix((void*)acc->segarray->root);
acc->pre_iterator = eina_rbtree_iterator_infix((void*)acc->seg_array->root);
for(;acc->current_index != idx;++acc->current_index)
{
@ -409,13 +409,13 @@ _efl_ui_view_list_segarray_node_accessor_get_at(Efl_Ui_View_List_Segarray_Node_A
}
static void*
_efl_ui_view_list_segarray_node_accessor_get_container(Efl_Ui_View_List_Segarray_Node_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_node_accessor_free(Efl_Ui_View_List_Segarray_Node_Accessor* acc EINA_UNUSED)
_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);
@ -423,52 +423,52 @@ _efl_ui_view_list_segarray_node_accessor_free(Efl_Ui_View_List_Segarray_Node_Acc
}
static Eina_Bool
_efl_ui_view_list_segarray_node_accessor_lock(Efl_Ui_View_List_Segarray_Node_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_node_accessor_unlock(Efl_Ui_View_List_Segarray_Node_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_node_accessor_clone(Efl_Ui_View_List_Segarray_Node_Accessor* acc EINA_UNUSED)
_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_view_list_segarray_node_accessor_setup(Efl_Ui_View_List_Segarray_Node_Accessor* acc, Efl_Ui_View_List_SegArray_Data* segarray)
_efl_ui_list_view_seg_array_node_accessor_setup(Efl_Ui_List_View_Segarray_Node_Accessor* acc, Efl_Ui_List_View_Seg_Array_Data* 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_view_list_segarray_node_accessor_get_at);
acc->vtable.get_container = FUNC_ACCESSOR_GET_CONTAINER(_efl_ui_view_list_segarray_node_accessor_get_container);
acc->vtable.free = FUNC_ACCESSOR_FREE(_efl_ui_view_list_segarray_node_accessor_free);
acc->vtable.lock = FUNC_ACCESSOR_LOCK(_efl_ui_view_list_segarray_node_accessor_lock);
acc->vtable.unlock = FUNC_ACCESSOR_LOCK(_efl_ui_view_list_segarray_node_accessor_unlock);
acc->vtable.clone = FUNC_ACCESSOR_CLONE(_efl_ui_view_list_segarray_node_accessor_clone);
acc->segarray = segarray;
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;
}
EOLIAN static Eina_Accessor*
_efl_ui_view_list_segarray_node_accessor_get(const Eo *obj EINA_UNUSED, Efl_Ui_View_List_SegArray_Data* pd)
_efl_ui_list_view_seg_array_node_accessor_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_View_Seg_Array_Data* pd)
{
Efl_Ui_View_List_Segarray_Node_Accessor* acc = calloc(1, sizeof(Efl_Ui_View_List_Segarray_Node_Accessor));
_efl_ui_view_list_segarray_node_accessor_setup(acc, 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_view_list_item_index_get(Efl_Ui_View_List_LayoutItem* item)
int efl_ui_list_view_item_index_get(Efl_Ui_List_View_Layout_Item* item)
{
Efl_Ui_View_List_SegArray_Node* node = item->tree_node;
Efl_Ui_List_View_Seg_Array_Node* node = item->tree_node;
return item->index_offset + node->first;
}
#include "efl_ui_view_list_segarray.eo.c"
#include "efl_ui_list_view_seg_array.eo.c"

View File

@ -1,22 +1,22 @@
import efl_ui_view_list_types;
import efl_ui_list_view_types;
class Efl.Ui.View_List_SegArray (Efl.Object)
class Efl.Ui.List_View_Seg_Array (Efl.Object)
{
methods {
@property accessor {
get {
[[ Get a SegArray List items accessor ]]
[[ Get a Seg_Array List items accessor ]]
}
values {
acc: accessor<ptr(Efl.Ui.View.List.LayoutItem)>;
acc: accessor<ptr(Efl.Ui.List_View_Layout_Item)>;
}
}
@property node_accessor {
get {
[[ Get a SegArray node accessor ]]
[[ Get a Seg_Array node accessor ]]
}
values {
acc: accessor<ptr(Efl.Ui.View.List.SegArray.Node)>;
acc: accessor<ptr(Efl.Ui.List_View_Seg_Array_Node)>;
}
}
insert_value {
@ -27,31 +27,31 @@ class Efl.Ui.View_List_SegArray (Efl.Object)
}
}
count {
[[ Get the number of items in SegArray tree ]]
[[ Get the number of items in Seg_Array tree ]]
return: int;
}
setup {
[[ Configure a step of SegArray tree, this is the max node size ]]
[[ Configure a step of Seg_Array tree, this is the max node size ]]
params {
@in initial_step_size: int;
}
}
flush {
[[ flush the SegArray tree ]]
[[ flush the Seg_Array tree ]]
}
insert {
[[ Insert a new model in SegArray tree at index position ]]
[[ Insert a new model in Seg_Array tree at index position ]]
params {
@in index: int;
@in model: Efl.Model;
}
}
remove {
[[ Remove the item at index position in SegArray tree ]]
[[ Remove the item at index position in Seg_Array tree ]]
params {
@in index: int;
}
return: ptr(Efl.Ui.View.List.LayoutItem) @owned;
return: ptr(Efl.Ui.List_View_Layout_Item) @owned;
}
}
implements {

View File

@ -0,0 +1,28 @@
#ifndef EFL_UI_LIST_VIEW_SEG_ARRAY_H
#define EFL_UI_LIST_VIEW_SEG_ARRAY_H
typedef struct _Efl_Ui_List_View_Item Efl_Ui_List_View_Item;
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_Data
{
Efl_Ui_List_View_Seg_Array_Node *root;
int step_size;
int node_count;
int count;
} Efl_Ui_List_View_Seg_Array_Data;
#endif

View File

@ -1,4 +1,4 @@
struct Efl.Ui.View.List.LayoutItem {
struct Efl.Ui.List_View_Layout_Item {
layout: Efl.Ui.Layout.Object;
children: Efl.Model;
index_offset: int;
@ -8,4 +8,4 @@ struct Efl.Ui.View.List.LayoutItem {
pos: Eina.Position2D;
}
struct @extern Efl.Ui.View.List.SegArray.Node; [[ ]]
struct @extern Efl.Ui.List_View_Seg_Array_Node; [[ ]]

View File

@ -1,9 +0,0 @@
class Efl.Ui.View_List_Precise_Layouter (Efl.Object, Efl.Ui.View_List_Relayout)
{
implements {
Efl.Object.constructor;
Efl.Ui.View_List_Relayout.layout_do;
Efl.Ui.View_List_Relayout.model { set; }
Efl.Ui.View_List_Relayout.elements { get; }
}
}

View File

@ -1,28 +0,0 @@
#ifndef EFL_UI_LIST_SEGARRAY_H
#define EFL_UI_LIST_SEGARRAY_H
typedef struct _Efl_Ui_View_List_Item Efl_Ui_View_List_Item;
typedef struct _Efl_Ui_View_List_SegArray_Node
{
EINA_RBTREE;
int length;
int max;
int first;
void* layout_data;
Efl_Ui_View_List_LayoutItem* pointers[0];
} Efl_Ui_View_List_SegArray_Node;
typedef struct _Efl_Ui_View_List_SegArray_Data
{
Efl_Ui_View_List_SegArray_Node *root;
int step_size;
int node_count;
int count;
} Efl_Ui_View_List_SegArray_Data;
#endif

View File

@ -106,7 +106,7 @@ pub_legacy_eo_files = [
'elm_table.eo',
'elm_thumb.eo',
'efl_ui_textpath_legacy.eo',
'efl_ui_view_list_precise_layouter.eo'
'efl_ui_list_view_precise_layouter.eo'
]
pub_eo_file_target = []
@ -205,11 +205,11 @@ pub_eo_files = [
'efl_ui_layout_part_table.eo',
'efl_ui_layout_part_bg.eo',
'efl_ui_layout_part_legacy.eo',
'efl_ui_view_list.eo',
'efl_ui_view_list_model.eo',
'efl_ui_view_list_pan.eo',
'efl_ui_view_list_segarray.eo',
'efl_ui_view_list_relayout.eo',
'efl_ui_list_view.eo',
'efl_ui_list_view_model.eo',
'efl_ui_list_view_pan.eo',
'efl_ui_list_view_seg_array.eo',
'efl_ui_list_view_relayout.eo',
'efl_ui_item.eo',
'efl_ui_list_item.eo',
'efl_ui_list_default_item_part_icon.eo',
@ -304,7 +304,7 @@ endforeach
pub_eo_types_files = [
'elm_general.eot',
'efl_ui.eot',
'efl_ui_view_list_types.eot',
'efl_ui_list_view_types.eot',
'efl_selection_types.eot',
'efl_ui_dnd_types.eot'
]
@ -440,8 +440,8 @@ elementary_headers_unstable = [
'efl_ui_item_private.h',
'efl_ui_list_item_private.h',
'efl_ui_list_private.h',
'efl_ui_view_list_private.h',
'efl_ui_view_list_segarray.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',
@ -864,9 +864,9 @@ elementary_src = [
'efl_ui_list_default_item.c',
'efl_ui_list_empty_item.c',
'efl_ui_list.c',
'efl_ui_view_list.c',
'efl_ui_view_list_precise_layouter.c',
'efl_ui_view_list_segarray.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',