diff options
author | Jaeun Choi <jaeun12.choi@samsung.com> | 2018-01-16 11:45:54 +0900 |
---|---|---|
committer | Jaeun Choi <jaeun12.choi@samsung.com> | 2018-04-23 16:28:41 +0900 |
commit | c293320c843cae277d11903f42ac0a714b7d751e (patch) | |
tree | ea7fc8a791d27db3e06767fc9ab64004bd0908b5 | |
parent | 33d9f91d975a56b71feebb47dabd6c58b000cc8d (diff) | |
download | efl-c293320c843cae277d11903f42ac0a714b7d751e.tar.gz |
efl_ui_pager: inherit efl_ui_layout
-rw-r--r-- | data/elementary/themes/Makefile.am | 3 | ||||
-rw-r--r-- | data/elementary/themes/default.edc | 1 | ||||
-rw-r--r-- | data/elementary/themes/edc/efl/pager.edc | 7 | ||||
-rw-r--r-- | data/elementary/themes/edc/elm/pager.edc | 39 | ||||
-rw-r--r-- | src/lib/elementary/efl_page_transition.c | 4 | ||||
-rw-r--r-- | src/lib/elementary/efl_page_transition.eo | 1 | ||||
-rw-r--r-- | src/lib/elementary/efl_page_transition.h | 1 | ||||
-rw-r--r-- | src/lib/elementary/efl_page_transition_scroll.c | 8 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_pager.c | 49 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_pager.eo | 3 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_widget_pager.h | 1 |
11 files changed, 88 insertions, 29 deletions
diff --git a/data/elementary/themes/Makefile.am b/data/elementary/themes/Makefile.am index e53c1cfe4c..b8906b3603 100644 --- a/data/elementary/themes/Makefile.am +++ b/data/elementary/themes/Makefile.am @@ -1041,7 +1041,8 @@ elementary/themes/edc/efl/textpath.edc \ elementary/themes/edc/efl/tooltip.edc \ elementary/themes/edc/efl/video.edc \ elementary/themes/edc/efl/list.edc \ -elementary/themes/edc/efl/win.edc +elementary/themes/edc/efl/win.edc \ +elementary/themes/edc/efl/pager.edc elementary_fdo_actions_128_files = \ elementary/themes/fdo/actions/128/address-book-new.png \ diff --git a/data/elementary/themes/default.edc b/data/elementary/themes/default.edc index e7a15fd56f..801fdaf0d1 100644 --- a/data/elementary/themes/default.edc +++ b/data/elementary/themes/default.edc @@ -197,4 +197,5 @@ collections { #include "edc/efl/textpath.edc" #include "edc/efl/win.edc" #include "edc/efl/uiclock.edc" +#include "edc/efl/pager.edc" } diff --git a/data/elementary/themes/edc/efl/pager.edc b/data/elementary/themes/edc/efl/pager.edc new file mode 100644 index 0000000000..a93a3565ef --- /dev/null +++ b/data/elementary/themes/edc/efl/pager.edc @@ -0,0 +1,7 @@ +group { "efl/pager"; + inherit: "elm/pager/base/default"; +} + +group { "efl/pager/indicator"; + inherit: "elm/pager/indicator/default"; +} diff --git a/data/elementary/themes/edc/elm/pager.edc b/data/elementary/themes/edc/elm/pager.edc index 0ab35d41e6..db816a5d14 100644 --- a/data/elementary/themes/edc/elm/pager.edc +++ b/data/elementary/themes/edc/elm/pager.edc @@ -1,12 +1,45 @@ - group { name: "efl/pager/indicator"; + group { name: "elm/pager/base/default"; + parts { + spacer { "base"; + scale; + desc { "default"; + } + } + swallow { "elm.swallow.background"; + scale; + desc { "default"; + } + } + swallow { "page_root"; + scale; + desc { "default"; + } + } + swallow { "indicator"; + scale; + desc { "default"; + rel2.relative: 1.0 0.0; + align: 0.5 0.0; + min: 0 50; + } + } + swallow { "event"; + scale; + repeat_events: 1; + desc { "default"; + } + } + } + } + + group { name: "elm/pager/indicator/default"; images { image: "ring_white_middle.png" COMP; } parts { - rect { "base"; + spacer { "base"; scale; desc { "default"; - color: 0 0 0 0; } } image { "icon"; diff --git a/src/lib/elementary/efl_page_transition.c b/src/lib/elementary/efl_page_transition.c index bef727802f..ef862a73e0 100644 --- a/src/lib/elementary/efl_page_transition.c +++ b/src/lib/elementary/efl_page_transition.c @@ -30,11 +30,13 @@ _efl_page_transition_padding_size_set(Eo *obj EINA_UNUSED, EOLIAN static void _efl_page_transition_bind(Eo *obj EINA_UNUSED, Efl_Page_Transition_Data *pd, - Eo *pager) + Eo *pager, + Efl_Canvas_Group *group) { EFL_UI_PAGER_DATA_GET(pager, ppd); pd->pager.obj = pager; + pd->pager.group = group; pd->pager.x = ppd->x; pd->pager.y = ppd->y; diff --git a/src/lib/elementary/efl_page_transition.eo b/src/lib/elementary/efl_page_transition.eo index a1212d65a6..47cfb4fc04 100644 --- a/src/lib/elementary/efl_page_transition.eo +++ b/src/lib/elementary/efl_page_transition.eo @@ -6,6 +6,7 @@ class Efl.Page.Transition (Efl.Object) [[set object]] params { @in pager: Efl.Ui.Pager; [[pager object]] + @in group: Efl.Canvas.Group; [[a dummy object for layer adjustment]] } } } diff --git a/src/lib/elementary/efl_page_transition.h b/src/lib/elementary/efl_page_transition.h index 8e388ca11a..38d4e6b9ab 100644 --- a/src/lib/elementary/efl_page_transition.h +++ b/src/lib/elementary/efl_page_transition.h @@ -8,6 +8,7 @@ struct _Efl_Page_Transition_Data { struct { Efl_Object *obj; + Efl_Canvas_Group *group; Evas_Coord x, y, w, h; } pager; diff --git a/src/lib/elementary/efl_page_transition_scroll.c b/src/lib/elementary/efl_page_transition_scroll.c index b84021453b..2a539ddb52 100644 --- a/src/lib/elementary/efl_page_transition_scroll.c +++ b/src/lib/elementary/efl_page_transition_scroll.c @@ -37,6 +37,7 @@ _page_info_allocate(Efl_Page_Transition_Scroll_Data *pd, pi->temp = eina_rectangle_new(0, 0, 0, 0); pi->obj = efl_add(EFL_UI_BOX_CLASS, spd->pager.obj); + efl_canvas_group_member_add(spd->pager.group, pi->obj); pd->page_infos = eina_list_append(pd->page_infos, pi); } @@ -212,11 +213,12 @@ _move_cb(void *data, const Efl_Event *ev) EOLIAN static void _efl_page_transition_scroll_efl_page_transition_bind(Eo *obj, Efl_Page_Transition_Scroll_Data *pd, - Eo *pager) + Eo *pager, + Efl_Canvas_Group *group) { EFL_PAGE_TRANSITION_DATA_GET(obj, spd); - efl_page_transition_bind(efl_super(obj, MY_CLASS), pager); + efl_page_transition_bind(efl_super(obj, MY_CLASS), pager, group); efl_event_callback_add(spd->pager.obj, EFL_GFX_EVENT_RESIZE, _resize_cb, obj); efl_event_callback_add(spd->pager.obj, EFL_GFX_EVENT_MOVE, _move_cb, obj); @@ -473,6 +475,7 @@ _efl_page_transition_scroll_side_page_num_set(Eo *obj, { pi = calloc(1, sizeof(*pi)); pi->obj = efl_add(EFL_UI_BOX_CLASS, spd->pager.obj); + efl_canvas_group_member_add(spd->pager.group, pi->obj); pi->content_num = -1; pi->content = NULL; pi->geometry = eina_rectangle_new(0, 0, 0, 0); @@ -489,6 +492,7 @@ _efl_page_transition_scroll_side_page_num_set(Eo *obj, pi = calloc(1, sizeof(*pi)); pi->obj = efl_add(EFL_UI_BOX_CLASS, spd->pager.obj); + efl_canvas_group_member_add(spd->pager.group, pi->obj); pi->content_num = -1; pi->content = NULL; pi->geometry = eina_rectangle_new(0, 0, 0, 0); diff --git a/src/lib/elementary/efl_ui_pager.c b/src/lib/elementary/efl_ui_pager.c index 3165e33877..8d0a9ed29b 100644 --- a/src/lib/elementary/efl_ui_pager.c +++ b/src/lib/elementary/efl_ui_pager.c @@ -238,6 +238,8 @@ _event_handler_create(Eo *obj, Efl_Ui_Pager_Data *pd) evas_object_color_set(pd->event, 0, 0, 0, 0); evas_object_repeat_events_set(pd->event, EINA_TRUE); + efl_content_set(efl_part(obj, "event"), pd->event); + efl_event_callback_add(pd->event, EFL_EVENT_POINTER_DOWN, _mouse_down_cb, obj); efl_event_callback_add(pd->event, EFL_EVENT_POINTER_UP, @@ -260,13 +262,35 @@ _efl_ui_pager_efl_object_constructor(Eo *obj, pd->curr.page = 0; pd->curr.pos = 0.0; - _event_handler_create(obj, pd); - elm_widget_can_focus_set(obj, EINA_TRUE); return obj; } +EOLIAN static Eo * +_efl_ui_pager_efl_object_finalize(Eo *obj, + Efl_Ui_Pager_Data *pd) +{ + Efl_Ui_Theme_Apply theme_apply; + Eo *page_root; + + obj = efl_finalize(efl_super(obj, MY_CLASS)); + + theme_apply = efl_ui_layout_theme_set(obj, "pager", "base", + efl_ui_widget_style_get(obj)); + + if (theme_apply == EFL_UI_THEME_APPLY_FAILED) + CRI("Failed to set layout!"); + + page_root = efl_add(EFL_CANVAS_GROUP_CLASS, evas_object_evas_get(obj)); + pd->page_root = page_root; + efl_content_set(efl_part(obj, "page_root"), page_root); + + _event_handler_create(obj, pd); + + return obj; +} + EOLIAN static void _efl_ui_pager_efl_gfx_size_set(Eo *obj, Efl_Ui_Pager_Data *pd, @@ -281,9 +305,6 @@ _efl_ui_pager_efl_gfx_size_set(Eo *obj, pd->w = sz.w; pd->h = sz.h; - - efl_gfx_size_set(pd->event, sz); - efl_gfx_size_set(pd->idbox, EINA_SIZE2D(sz.w, 50)); } EOLIAN static void @@ -300,9 +321,6 @@ _efl_ui_pager_efl_gfx_position_set(Eo *obj, pd->x = pos.x; pd->y = pos.y; - - efl_gfx_position_set(pd->event, pos); - efl_gfx_position_set(pd->idbox, pos); } EOLIAN static int @@ -321,8 +339,6 @@ _efl_ui_pager_efl_pack_linear_pack_begin(Eo *obj, elm_widget_sub_object_add(obj, subobj); pd->content_list = eina_list_prepend(pd->content_list, subobj); - efl_gfx_stack_above(pd->event, subobj); - efl_gfx_stack_above(pd->idbox, subobj); pd->cnt += 1; pd->curr.page += 1; @@ -347,8 +363,6 @@ _efl_ui_pager_efl_pack_linear_pack_end(Eo *obj, elm_widget_sub_object_add(obj, subobj); pd->content_list = eina_list_append(pd->content_list, subobj); - efl_gfx_stack_above(pd->event, subobj); - efl_gfx_stack_above(pd->idbox, subobj); pd->cnt += 1; @@ -376,8 +390,6 @@ _efl_ui_pager_efl_pack_linear_pack_before(Eo *obj, index = eina_list_data_idx(pd->content_list, (void *)existing); pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing); - efl_gfx_stack_above(pd->event, subobj); - efl_gfx_stack_above(pd->idbox, subobj); pd->cnt += 1; if (pd->curr.page >= index) pd->curr.page += 1; @@ -406,8 +418,6 @@ _efl_ui_pager_efl_pack_linear_pack_after(Eo *obj, index = eina_list_data_idx(pd->content_list, (void *)existing); pd->content_list = eina_list_append_relative(pd->content_list, subobj, existing); - efl_gfx_stack_above(pd->event, subobj); - efl_gfx_stack_above(pd->idbox, subobj); pd->cnt += 1; if (pd->curr.page > index) pd->curr.page += 1; @@ -436,8 +446,6 @@ _efl_ui_pager_efl_pack_linear_pack_at(Eo *obj, existing = eina_list_nth(pd->content_list, index); pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing); - efl_gfx_stack_above(pd->event, subobj); - efl_gfx_stack_above(pd->idbox, subobj); pd->cnt += 1; if (pd->curr.page >= index) pd->curr.page += 1; @@ -558,7 +566,7 @@ _efl_ui_pager_transition_set(Eo *obj EINA_UNUSED, Efl_Ui_Pager_Data *pd, Efl_Page_Transition *transition) { - efl_page_transition_bind(transition, obj); + efl_page_transition_bind(transition, obj, pd->page_root); pd->transition = transition; } @@ -583,8 +591,7 @@ _efl_ui_pager_indicator_set(Eo *obj EINA_UNUSED, if (!pd->idbox) { pd->idbox = efl_add(EFL_UI_BOX_CLASS, obj); - efl_gfx_size_set(pd->idbox, EINA_SIZE2D(pd->w, 50)); - efl_gfx_position_set(pd->idbox, EINA_POSITION2D(pd->x, pd->y)); + efl_content_set(efl_part(obj, "indicator"), pd->idbox); } pd->indicator = efl_add(klass, pd->idbox); diff --git a/src/lib/elementary/efl_ui_pager.eo b/src/lib/elementary/efl_ui_pager.eo index 9c6dea66be..53664fba27 100644 --- a/src/lib/elementary/efl_ui_pager.eo +++ b/src/lib/elementary/efl_ui_pager.eo @@ -5,7 +5,7 @@ enum Efl.Ui.Pager.Loop enabled } -class Efl.Ui.Pager (Elm.Widget, Efl.Pack.Linear) +class Efl.Ui.Pager (Efl.Ui.Layout, Efl.Pack.Linear) { [[Efl ui pager class]] event_prefix: efl_ui_pager; @@ -57,6 +57,7 @@ class Efl.Ui.Pager (Elm.Widget, Efl.Pack.Linear) } implements { Efl.Object.constructor; + Efl.Object.finalize; Efl.Gfx.size { set; } Efl.Gfx.position { set; } Efl.Container.content_count; diff --git a/src/lib/elementary/efl_ui_widget_pager.h b/src/lib/elementary/efl_ui_widget_pager.h index 5f42133ce8..264787ade7 100644 --- a/src/lib/elementary/efl_ui_widget_pager.h +++ b/src/lib/elementary/efl_ui_widget_pager.h @@ -11,6 +11,7 @@ typedef struct _Efl_Ui_Pager_Data Eina_List *page_infos; Eina_List *content_list; + Eo *page_root; Eo *event; Efl_Ui_Box *idbox; Ecore_Animator *animator; |