diff options
author | Jaeun Choi <jaeun12.choi@samsung.com> | 2018-03-22 16:10:58 +0900 |
---|---|---|
committer | Jaeun Choi <jaeun12.choi@samsung.com> | 2018-04-23 16:28:41 +0900 |
commit | c24c1434766d859ca41021245ef89ca21ce66215 (patch) | |
tree | d93fbca5d8b30eed36a7ad42b4f713a44fcbd86f | |
parent | 859d183c875e518c006763ae96ed68156a5476a9 (diff) | |
download | efl-c24c1434766d859ca41021245ef89ca21ce66215.tar.gz |
efl_page_indicator
-rw-r--r-- | src/lib/elementary/efl_page_indicator.c | 46 | ||||
-rw-r--r-- | src/lib/elementary/efl_page_indicator_icon.c | 133 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_pager.c | 10 | ||||
-rw-r--r-- | src/lib/elementary/elm_priv.h | 5 |
4 files changed, 47 insertions, 147 deletions
diff --git a/src/lib/elementary/efl_page_indicator.c b/src/lib/elementary/efl_page_indicator.c index 0262027784..7f5456af11 100644 --- a/src/lib/elementary/efl_page_indicator.c +++ b/src/lib/elementary/efl_page_indicator.c @@ -21,32 +21,11 @@ _efl_page_indicator_update(Eo *obj EINA_UNUSED, } EOLIAN static void -_efl_page_indicator_pack_begin(Eo *obj EINA_UNUSED, - Efl_Page_Indicator_Data *pd) -{ - pd->cnt++; -} - -EOLIAN static void -_efl_page_indicator_pack_end(Eo *obj EINA_UNUSED, - Efl_Page_Indicator_Data *pd) -{ - pd->cnt++; -} - -EOLIAN static void -_efl_page_indicator_pack_before(Eo *obj EINA_UNUSED, - Efl_Page_Indicator_Data *pd, - int index EINA_UNUSED) -{ - pd->cnt++; -} - -EOLIAN static void -_efl_page_indicator_pack_after(Eo *obj EINA_UNUSED, - Efl_Page_Indicator_Data *pd, - int index EINA_UNUSED) +_efl_page_indicator_pack(Eo *obj EINA_UNUSED, + Efl_Page_Indicator_Data *pd, + int index EINA_UNUSED) { + ERR("called"); pd->cnt++; } @@ -68,24 +47,13 @@ _efl_page_indicator_efl_object_constructor(Eo *obj, EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_update, EFL_FUNC_CALL(pos), double pos) -EOAPI EFL_VOID_FUNC_BODY(efl_page_indicator_pack_begin) -EOAPI EFL_VOID_FUNC_BODY(efl_page_indicator_pack_end) -EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_pack_before, +EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_pack, EFL_FUNC_CALL(index), int index) -EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_pack_after, - EFL_FUNC_CALL(index), int index) - #define EFL_PAGE_INDICATOR_EXTRA_OPS \ EFL_OBJECT_OP_FUNC(efl_page_indicator_update, \ _efl_page_indicator_update), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_begin, \ - _efl_page_indicator_pack_begin), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_end, \ - _efl_page_indicator_pack_end), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_before, \ - _efl_page_indicator_pack_before), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_after, \ - _efl_page_indicator_pack_after) + EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \ + _efl_page_indicator_pack) #include "efl_page_indicator.eo.c" diff --git a/src/lib/elementary/efl_page_indicator_icon.c b/src/lib/elementary/efl_page_indicator_icon.c index 14dda4211e..31fe53e2b8 100644 --- a/src/lib/elementary/efl_page_indicator_icon.c +++ b/src/lib/elementary/efl_page_indicator_icon.c @@ -21,119 +21,60 @@ _efl_page_indicator_icon_update(Eo *obj, EFL_PAGE_INDICATOR_DATA_GET(obj, spd); Eo *item; int page = efl_ui_pager_current_page_get(spd->pager.obj); + double delta = fabs(pos); - if (pos < 0) - { - item = eina_list_nth(pd->items, page); - eina_value_set(pd->v, (1.0 + pos)); - efl_layout_signal_message_send(item, 1, *(pd->v)); + item = eina_list_nth(pd->items, page); + eina_value_set(pd->v, (1.0 - delta)); + efl_layout_signal_message_send(item, 1, *(pd->v)); - item = eina_list_nth(pd->items, - (page - 1 + spd->cnt) % spd->cnt); - eina_value_set(pd->v, (pos * -1.0)); - efl_layout_signal_message_send(item, 1, *(pd->v)); - } + if (pos < 0) + item = eina_list_nth(pd->items, (page - 1 + spd->cnt) % spd->cnt); else - { - item = eina_list_nth(pd->items, page); - eina_value_set(pd->v, (1.0 - pos)); - efl_layout_signal_message_send(item, 1, *(pd->v)); + item = eina_list_nth(pd->items, (page + 1 + spd->cnt) % spd->cnt); - item = eina_list_nth(pd->items, - (page + 1 + spd->cnt) % spd->cnt); - eina_value_set(pd->v, pos); - efl_layout_signal_message_send(item, 1, *(pd->v)); - } + eina_value_set(pd->v, delta); + efl_layout_signal_message_send(item, 1, *(pd->v)); } EOLIAN static void -_efl_page_indicator_icon_pack_begin(Eo *obj, - Efl_Page_Indicator_Icon_Data *pd) -{ - EFL_PAGE_INDICATOR_DATA_GET(obj, spd); - Eo *item; - - efl_page_indicator_pack_begin(efl_super(obj, MY_CLASS)); - - item = efl_add(EFL_CANVAS_LAYOUT_CLASS, spd->idbox); - pd->items = eina_list_prepend(pd->items, item); - - elm_widget_theme_object_set(spd->idbox, item, - "pager", "indicator", "default"); - efl_gfx_size_hint_align_set(item, 0.5, 0.5); - efl_gfx_size_hint_weight_set(item, 0, 0); - efl_pack_begin(spd->idbox, item); -} - -EOLIAN static void -_efl_page_indicator_icon_pack_end(Eo *obj, - Efl_Page_Indicator_Icon_Data *pd) -{ - EFL_PAGE_INDICATOR_DATA_GET(obj, spd); - Eo *item; - - efl_page_indicator_pack_end(efl_super(obj, MY_CLASS)); - - item = efl_add(EFL_CANVAS_LAYOUT_CLASS, spd->idbox); - pd->items = eina_list_append(pd->items, item); - - elm_widget_theme_object_set(spd->idbox, item, - "pager", "indicator", "default"); - efl_gfx_size_hint_align_set(item, 0.5, 0.5); - efl_gfx_size_hint_weight_set(item, 0, 0); - efl_pack_end(spd->idbox, item); -} - -EOLIAN static void -_efl_page_indicator_icon_pack_before(Eo *obj, - Efl_Page_Indicator_Icon_Data *pd, - int index) -{ - EFL_PAGE_INDICATOR_DATA_GET(obj, spd); - Eo *item, *existing; - - efl_page_indicator_pack_before(efl_super(obj, MY_CLASS), index); - - existing = eina_list_nth(pd->items, index); - - item = efl_add(EFL_CANVAS_LAYOUT_CLASS, spd->idbox); - pd->items = eina_list_prepend_relative(pd->items, item, existing); - - elm_widget_theme_object_set(spd->idbox, item, - "pager", "indicator", "default"); - efl_gfx_size_hint_align_set(item, 0.5, 0.5); - efl_gfx_size_hint_weight_set(item, 0, 0); - - efl_pack_before(spd->idbox, item, existing); -} - -EOLIAN static void -_efl_page_indicator_icon_pack_after(Eo *obj, - Efl_Page_Indicator_Icon_Data *pd, - int index) +_efl_page_indicator_icon_pack(Eo *obj, + Efl_Page_Indicator_Icon_Data *pd, + int index) { EFL_PAGE_INDICATOR_DATA_GET(obj, spd); Eo *item, *existing; - efl_page_indicator_pack_after(efl_super(obj, MY_CLASS), index); - - existing = eina_list_nth(pd->items, index); + efl_page_indicator_pack(efl_super(obj, MY_CLASS), index); item = efl_add(EFL_CANVAS_LAYOUT_CLASS, spd->idbox); - pd->items = eina_list_append_relative(pd->items, item, existing); - elm_widget_theme_object_set(spd->idbox, item, "pager", "indicator", "default"); efl_gfx_size_hint_align_set(item, 0.5, 0.5); efl_gfx_size_hint_weight_set(item, 0, 0); - efl_pack_after(spd->idbox, item, existing); + if (index == 0) + { + pd->items = eina_list_prepend(pd->items, item); + efl_pack_begin(spd->idbox, item); + } + else if (index == (spd->cnt - 1)) + { + pd->items = eina_list_append(pd->items, item); + efl_pack_end(spd->idbox, item); + } + else + { + existing = eina_list_nth(pd->items, index); + pd->items = eina_list_prepend_relative(pd->items, item, existing); + efl_pack_before(spd->idbox, item, existing); + } } EOLIAN static Eo * _efl_page_indicator_icon_efl_object_constructor(Eo *obj, Efl_Page_Indicator_Icon_Data *pd) { + ERR("call"); EFL_PAGE_INDICATOR_DATA_GET(obj, spd); Eo *item; int i, page; @@ -174,23 +115,17 @@ _efl_page_indicator_icon_efl_object_destructor(Eo *obj, { Eo *item; - efl_destructor(efl_super(obj, MY_CLASS)); - EINA_LIST_FREE(pd->items, item) efl_del(item); + + efl_destructor(efl_super(obj, MY_CLASS)); } #define EFL_PAGE_INDICATOR_ICON_EXTRA_OPS \ EFL_OBJECT_OP_FUNC(efl_page_indicator_update, \ _efl_page_indicator_icon_update), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_begin, \ - _efl_page_indicator_icon_pack_begin), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_end, \ - _efl_page_indicator_icon_pack_end), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_before, \ - _efl_page_indicator_icon_pack_before), \ - EFL_OBJECT_OP_FUNC(efl_page_indicator_pack_after, \ - _efl_page_indicator_icon_pack_after) + EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \ + _efl_page_indicator_icon_pack) #include "efl_page_indicator_icon.eo.c" diff --git a/src/lib/elementary/efl_ui_pager.c b/src/lib/elementary/efl_ui_pager.c index 88873fd834..2b6e2d90a8 100644 --- a/src/lib/elementary/efl_ui_pager.c +++ b/src/lib/elementary/efl_ui_pager.c @@ -347,7 +347,7 @@ _efl_ui_pager_efl_pack_linear_pack_begin(Eo *obj, if (pd->indicator) { - efl_page_indicator_pack_begin(pd->indicator); + efl_page_indicator_pack(pd->indicator, 0); efl_page_indicator_update(pd->indicator, pd->curr.pos); } @@ -370,7 +370,7 @@ _efl_ui_pager_efl_pack_linear_pack_end(Eo *obj, if (pd->indicator) { - efl_page_indicator_pack_end(pd->indicator); + efl_page_indicator_pack(pd->indicator, (pd->cnt - 1)); efl_page_indicator_update(pd->indicator, pd->curr.pos); } @@ -398,7 +398,7 @@ _efl_ui_pager_efl_pack_linear_pack_before(Eo *obj, if (pd->indicator) { - efl_page_indicator_pack_before(pd->indicator, index); + efl_page_indicator_pack(pd->indicator, index); efl_page_indicator_update(pd->indicator, pd->curr.pos); } @@ -426,7 +426,7 @@ _efl_ui_pager_efl_pack_linear_pack_after(Eo *obj, if (pd->indicator) { - efl_page_indicator_pack_after(pd->indicator, index); + efl_page_indicator_pack(pd->indicator, (index + 1)); efl_page_indicator_update(pd->indicator, pd->curr.pos); } @@ -454,7 +454,7 @@ _efl_ui_pager_efl_pack_linear_pack_at(Eo *obj, if (pd->indicator) { - efl_page_indicator_pack_before(pd->indicator, index); + efl_page_indicator_pack(pd->indicator, index); efl_page_indicator_update(pd->indicator, pd->curr.pos); } diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index d07b433334..faf1e52a0d 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -739,10 +739,7 @@ EOAPI void efl_page_transition_pack_end(Eo *obj, Efl_Gfx *subobj); EOAPI void 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_begin(Eo *obj); -EOAPI void efl_page_indicator_pack_end(Eo *obj); -EOAPI void efl_page_indicator_pack_before(Eo *obj, int index); -EOAPI void efl_page_indicator_pack_after(Eo *obj, int index); +EOAPI void efl_page_indicator_pack(Eo *obj, int index); Eina_Bool _elm_config_accel_preference_parse(const char *pref, Eina_Stringshare **accel, int *gl_depth, int *gl_stencil, int *gl_msaa); |