Revert "Revert "efl_ui_pager: implement unpack_all/clear function""

This reverts commit b28f1e034b.

To restore 74c48f0296 which implements
features during feature freeze period, the revert commit is reverted.
This commit is contained in:
Jaehyun Cho 2019-04-17 10:41:38 +09:00
parent cf029754eb
commit b5c078bebb
6 changed files with 109 additions and 8 deletions

View File

@ -42,6 +42,14 @@ _efl_page_indicator_unpack(Eo *obj EINA_UNUSED,
pd->curr_idx--;
}
EOLIAN static void
_efl_page_indicator_unpack_all(Eo *obj EINA_UNUSED,
Efl_Page_Indicator_Data *pd)
{
pd->cnt = 0;
pd->curr_idx = -1;
}
EOLIAN static void
_efl_page_indicator_bind(Eo *obj EINA_UNUSED,
Efl_Page_Indicator_Data *pd,
@ -72,6 +80,7 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_pack,
EFL_FUNC_CALL(index), int index)
EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_unpack,
EFL_FUNC_CALL(index), int index)
EOAPI EFL_VOID_FUNC_BODY(efl_page_indicator_unpack_all)
#define EFL_PAGE_INDICATOR_EXTRA_OPS \
EFL_OBJECT_OP_FUNC(efl_page_indicator_update, \
@ -79,6 +88,8 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_unpack,
EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \
_efl_page_indicator_pack), \
EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack, \
_efl_page_indicator_unpack)
_efl_page_indicator_unpack), \
EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack_all, \
_efl_page_indicator_unpack_all)
#include "efl_page_indicator.eo.c"

View File

@ -109,6 +109,22 @@ _efl_page_indicator_icon_unpack(Eo *obj,
}
}
EOLIAN static void
_efl_page_indicator_icon_unpack_all(Eo *obj,
Efl_Page_Indicator_Icon_Data *pd)
{
Eo *item;
EINA_LIST_FREE(pd->items, item)
{
efl_del(item);
}
pd->curr = NULL;
efl_page_indicator_unpack_all(efl_super(obj, MY_CLASS));
}
EOLIAN static void
_efl_page_indicator_icon_efl_page_indicator_bind(Eo *obj,
Efl_Page_Indicator_Icon_Data *pd,
@ -168,6 +184,8 @@ _efl_page_indicator_icon_efl_page_indicator_bind(Eo *obj,
EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \
_efl_page_indicator_icon_pack), \
EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack, \
_efl_page_indicator_icon_unpack)
_efl_page_indicator_icon_unpack), \
EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack_all, \
_efl_page_indicator_icon_unpack_all)
#include "efl_page_indicator_icon.eo.c"

View File

@ -71,6 +71,14 @@ _efl_page_transition_pack(Eo *obj EINA_UNUSED,
}
EOLIAN static void
_efl_page_transition_unpack_all(Eo *obj EINA_UNUSED,
Efl_Page_Transition_Data *pd EINA_UNUSED,
int index EINA_UNUSED)
{
}
EOLIAN static void
_efl_page_transition_curr_page_change(Eo *obj EINA_UNUSED,
Efl_Page_Transition_Data *pd EINA_UNUSED,
@ -94,6 +102,7 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_update,
EFL_FUNC_CALL(move), double move)
EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_pack,
EFL_FUNC_CALL(index), int index)
EOAPI EFL_VOID_FUNC_BODY(efl_page_transition_unpack_all)
EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_curr_page_change,
EFL_FUNC_CALL(diff), int diff)
EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_page_size_set,
@ -109,6 +118,8 @@ EOAPI EFL_FUNC_BODYV(efl_page_transition_loop_set, Eina_Bool, 0,
_efl_page_transition_update), \
EFL_OBJECT_OP_FUNC(efl_page_transition_pack, \
_efl_page_transition_pack), \
EFL_OBJECT_OP_FUNC(efl_page_transition_unpack_all, \
_efl_page_transition_unpack_all), \
EFL_OBJECT_OP_FUNC(efl_page_transition_curr_page_change, \
_efl_page_transition_curr_page_change), \
EFL_OBJECT_OP_FUNC(efl_page_transition_page_size_set, \

View File

@ -412,6 +412,24 @@ _efl_page_transition_scroll_pack(Eo *obj,
_efl_page_transition_scroll_update(obj, pd, 0.0);
}
EOLIAN static void
_efl_page_transition_scroll_unpack_all(Eo *obj EINA_UNUSED,
Efl_Page_Transition_Scroll_Data *pd)
{
Eina_List *list;
Page_Info *pi;
EINA_LIST_FOREACH(pd->page_infos, list, pi)
{
efl_pack_unpack(pi->obj, pi->content);
pi->content_num = -1;
pi->content = NULL;
pi->visible = EINA_FALSE;
}
return EINA_TRUE;
}
EOLIAN static void
_efl_page_transition_scroll_curr_page_change(Eo *obj EINA_UNUSED,
Efl_Page_Transition_Scroll_Data *pd,
@ -656,6 +674,8 @@ _efl_page_transition_scroll_efl_object_invalidate(Eo *obj,
_efl_page_transition_scroll_update), \
EFL_OBJECT_OP_FUNC(efl_page_transition_pack, \
_efl_page_transition_scroll_pack), \
EFL_OBJECT_OP_FUNC(efl_page_transition_unpack_all, \
_efl_page_transition_scroll_unpack_all), \
EFL_OBJECT_OP_FUNC(efl_page_transition_curr_page_change, \
_efl_page_transition_scroll_curr_page_change), \
EFL_OBJECT_OP_FUNC(efl_page_transition_page_size_set, \

View File

@ -784,20 +784,59 @@ _efl_ui_pager_loop_mode_get(const Eo *obj EINA_UNUSED,
return pd->loop;
}
static void
_unpack_all(Efl_Ui_Pager_Data *pd,
Eina_Bool clear)
{
Eo *subobj;
pd->cnt = 0;
pd->curr.page = -1;
pd->curr.pos = 0.0;
if (pd->transition)
{
efl_page_transition_unpack_all(pd->transition);
}
else
{
subobj = eina_list_nth(pd->content_list, pd->curr.page);
efl_pack_unpack(pd->page_box, subobj);
}
if (clear)
{
EINA_LIST_FREE(pd->content_list, subobj)
evas_object_del(subobj);
}
else
{
EINA_LIST_FREE(pd->content_list, subobj)
efl_canvas_object_clipper_set(subobj, NULL);
}
if (pd->indicator)
{
efl_page_indicator_unpack_all(pd->indicator);
}
}
EOLIAN static Eina_Bool
_efl_ui_pager_efl_pack_pack_clear(Eo *obj EINA_UNUSED,
Efl_Ui_Pager_Data *pd EINA_UNUSED)
Efl_Ui_Pager_Data *pd)
{
ERR("Soon to be implemented");
return EINA_FALSE;
_unpack_all(pd, EINA_TRUE);
return EINA_TRUE;
}
EOLIAN static Eina_Bool
_efl_ui_pager_efl_pack_unpack_all(Eo *obj EINA_UNUSED,
Efl_Ui_Pager_Data *pd EINA_UNUSED)
Efl_Ui_Pager_Data *pd)
{
ERR("Soon to be implemented");
return EINA_FALSE;
_unpack_all(pd, EINA_FALSE);
return EINA_TRUE;
}
static void

View File

@ -875,12 +875,14 @@ EOAPI void efl_page_transition_page_size_set(Eo *obj, Eina_Size2D sz);
EOAPI void efl_page_transition_padding_size_set(Eo *obj, int padding);
EOAPI void efl_page_transition_update(Eo *obj, double pos);
EOAPI void efl_page_transition_pack(Eo *obj, int index);
EOAPI void efl_page_transition_unpack_all(Eo *obj);
EOAPI void efl_page_transition_curr_page_change(Eo *obj, int diff);
EOAPI Eina_Bool efl_page_transition_loop_set(Eo *obj, Efl_Ui_Pager_Loop loop);
EOAPI void efl_page_indicator_update(Eo *obj, double pos);
EOAPI void efl_page_indicator_pack(Eo *obj, int index);
EOAPI void efl_page_indicator_unpack(Eo *obj, int index);
EOAPI void efl_page_indicator_unpack_all(Eo *obj);
Eina_Bool _elm_config_accel_preference_parse(const char *pref, Eina_Stringshare **accel, int *gl_depth, int *gl_stencil, int *gl_msaa);