summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaeun Choi <jaeun12.choi@samsung.com>2018-01-16 11:45:54 +0900
committerJaeun Choi <jaeun12.choi@samsung.com>2018-04-23 16:28:41 +0900
commitc293320c843cae277d11903f42ac0a714b7d751e (patch)
treeea7fc8a791d27db3e06767fc9ab64004bd0908b5
parent33d9f91d975a56b71feebb47dabd6c58b000cc8d (diff)
downloadefl-c293320c843cae277d11903f42ac0a714b7d751e.tar.gz
efl_ui_pager: inherit efl_ui_layout
-rw-r--r--data/elementary/themes/Makefile.am3
-rw-r--r--data/elementary/themes/default.edc1
-rw-r--r--data/elementary/themes/edc/efl/pager.edc7
-rw-r--r--data/elementary/themes/edc/elm/pager.edc39
-rw-r--r--src/lib/elementary/efl_page_transition.c4
-rw-r--r--src/lib/elementary/efl_page_transition.eo1
-rw-r--r--src/lib/elementary/efl_page_transition.h1
-rw-r--r--src/lib/elementary/efl_page_transition_scroll.c8
-rw-r--r--src/lib/elementary/efl_ui_pager.c49
-rw-r--r--src/lib/elementary/efl_ui_pager.eo3
-rw-r--r--src/lib/elementary/efl_ui_widget_pager.h1
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;