desc { "default";
}
}
- swallow { "efl.page_root";
- scale;
- desc { "default";
- }
- }
swallow { "efl.indicator";
scale;
desc { "default";
typedef struct _Efl_Ui_Spotlight_Container_Data
{
Eina_List *content_list;
- Eo *page_root, *event;
+ Eo *event;
struct {
Eina_Size2D sz;
} page_spec;
elm_widget_can_focus_set(obj, EINA_FALSE);
- pd->page_root = efl_add(EFL_CANVAS_GROUP_CLASS, evas_object_evas_get(obj));
- efl_content_set(efl_part(obj, "efl.page_root"), pd->page_root);
-
- efl_event_callback_add(pd->page_root, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, pd);
+ efl_event_callback_add(obj, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, pd);
pd->event = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
evas_object_evas_get(obj));
if (pd->transition)
{
- efl_ui_spotlight_manager_bind(pd->transition, NULL, NULL);
+ efl_ui_spotlight_manager_bind(pd->transition, NULL);
efl_del(pd->transition);
}
//disable animation when not finalized yet, this help reducing the overhead of scheduling a animation that will not be displayed
_animated_transition_manager_eval(obj, pd);
efl_ui_spotlight_manager_animated_transition_set(pd->transition, efl_finalized_get(obj));
- efl_ui_spotlight_manager_bind(pd->transition, obj,
- pd->page_root);
+ efl_ui_spotlight_manager_bind(pd->transition, obj);
efl_ui_spotlight_manager_size_set(pd->transition, pd->page_spec.sz);
efl_event_callback_add(pd->transition, EFL_UI_SPOTLIGHT_MANAGER_EVENT_POS_UPDATE, _pos_updated, obj);
}
]]
params {
spotlight : Efl.Ui.Spotlight.Container; [[The container to bind the manager to.]]
- group : Efl.Canvas.Group; [[The graphical group where the views should be added with
- @Efl.Canvas.Group.group_member_add and removed with
- @Efl.Canvas.Group.group_member_remove.]]
}
}
content_add @pure_virtual {
typedef struct {
Efl_Ui_Spotlight_Container * container;
- Efl_Gfx_Entity *group;
Eina_Size2D page_size;
Efl_Ui_Widget *current_content;
Eina_Bool animation;
_geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Plain_Data *pd)
{
Efl_Gfx_Entity *entity = pd->current_content;
- Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->group);
+ Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->container);
Eina_Rect goal = EINA_RECT_EMPTY();
goal.size = pd->page_size;
)
EOLIAN static void
-_efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Plain_Data *pd, Efl_Ui_Spotlight_Container *spotlight, Efl_Canvas_Group *group)
+_efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Plain_Data *pd, Efl_Ui_Spotlight_Container *spotlight)
{
- if (spotlight && group)
+ if (spotlight)
{
Efl_Ui_Widget *index;
pd->container = spotlight;
- pd->group = group;
-
- efl_event_callback_array_add(pd->group, group_callback(), obj);
+ efl_event_callback_array_add(pd->container, group_callback(), obj);
for (int i = 0; i < efl_content_count(spotlight) ; ++i) {
Efl_Gfx_Entity *elem = efl_pack_content_get(spotlight, i);
{
efl_destructor(efl_super(obj, MY_CLASS));
- efl_event_callback_array_del(pd->group, group_callback(), obj);
+ efl_event_callback_array_del(pd->container, group_callback(), obj);
for (int i = 0; i < efl_content_count(pd->container); ++i)
{
typedef struct {
Efl_Ui_Spotlight_Container * container;
- Efl_Gfx_Entity *group, *foreclip, *backclip;
+ Efl_Gfx_Entity *foreclip, *backclip;
Eina_Size2D page_size;
struct {
Eina_Bool active;
_apply_box_properties(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd)
{
Eina_Rect geometry = EINA_RECT_EMPTY();
- Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->group);
+ Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->container);
double current_pos;
if (pd->transition.active)
);
EOLIAN static void
-_efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd, Efl_Ui_Spotlight_Container *spotlight, Efl_Canvas_Group *group)
+_efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd, Efl_Ui_Spotlight_Container *spotlight)
{
- if (spotlight && group)
+ if (spotlight)
{
pd->container = spotlight;
- pd->group = group;
- efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
- efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
+ efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
+ efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
pd->foreclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
- evas_object_evas_get(group));
+ evas_object_evas_get(pd->container));
evas_object_static_clip_set(pd->foreclip, EINA_TRUE);
efl_canvas_group_member_add(spotlight, pd->foreclip);
pd->backclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS,
- evas_object_evas_get(group));
+ evas_object_evas_get(pd->container));
evas_object_static_clip_set(pd->backclip, EINA_TRUE);
efl_gfx_entity_visible_set(pd->backclip, EINA_FALSE);
efl_canvas_group_member_add(spotlight, pd->backclip);
for (int i = 0; i < efl_content_count(spotlight) ; ++i) {
Efl_Gfx_Entity *elem = efl_pack_content_get(spotlight, i);
efl_canvas_object_clipper_set(elem, pd->backclip);
- efl_canvas_group_member_add(pd->group, elem);
+ efl_canvas_group_member_add(pd->container, elem);
efl_gfx_entity_visible_set(elem, EINA_TRUE);
}
_apply_box_properties(obj, pd);
{
efl_gfx_entity_visible_set(subobj, EINA_TRUE);
efl_canvas_object_clipper_set(subobj, pd->backclip);
- efl_canvas_group_member_add(pd->group, subobj);
+ efl_canvas_group_member_add(pd->container, subobj);
if (!pd->transition.active)
_apply_box_properties(obj, pd);
_efl_ui_spotlight_manager_scroll_efl_ui_spotlight_manager_content_del(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Scroll_Data *pd, Efl_Gfx_Entity *subobj, int index EINA_UNUSED)
{
efl_canvas_object_clipper_set(subobj, NULL);
- efl_canvas_group_member_remove(pd->group, subobj);
+ efl_canvas_group_member_remove(pd->container, subobj);
if (!pd->transition.active)
_apply_box_properties(obj, pd);
EOLIAN static void
_efl_ui_spotlight_manager_scroll_efl_object_invalidate(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd EINA_UNUSED)
{
- efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
- efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
+ efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
+ efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
efl_event_callback_array_del(efl_content_get(efl_part(pd->container, "efl.event")), mouse_listeners(), obj);
efl_del(pd->backclip);
efl_del(pd->foreclip);
typedef struct {
Efl_Ui_Spotlight_Container * container;
- Efl_Gfx_Entity *group;
Efl_Canvas_Animation_Player *alpha_anim;
Efl_Gfx_Entity *content[2];
int ids[2]; //only used when in animation
static void
_geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Stack_Data *pd)
{
- Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->group);
+ Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->container);
Eina_Rect goal = EINA_RECT_EMPTY();
goal.size = pd->page_size;
goal.y = (group_pos.y + group_pos.h/2)-pd->page_size.h/2;
}
EOLIAN static void
-_efl_ui_spotlight_manager_stack_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Stack_Data *pd, Efl_Ui_Spotlight_Container *spotlight, Efl_Canvas_Group *group)
+_efl_ui_spotlight_manager_stack_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Spotlight_Manager_Stack_Data *pd, Efl_Ui_Spotlight_Container *spotlight)
{
- if (spotlight && group)
+ if (spotlight)
{
pd->container = spotlight;
- pd->group = group;
- efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
- efl_event_callback_add(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
+ efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
+ efl_event_callback_add(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
pd->alpha_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, obj);
efl_animation_alpha_set(pd->alpha_anim, 0.0, 1.0);
EOLIAN static void
_efl_ui_spotlight_manager_stack_efl_object_invalidate(Eo *obj, Efl_Ui_Spotlight_Manager_Stack_Data *pd EINA_UNUSED)
{
- efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
- efl_event_callback_del(pd->group, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
+ efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _resize_cb, obj);
+ efl_event_callback_del(pd->container, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, obj);
efl_invalidate(efl_super(obj, MY_CLASS));