EOLIAN static Eo * _efl_ui_pager_efl_object_constructor(Eo *obj, Efl_Ui_Pager_Data *pd) { ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); if (!elm_widget_theme_klass_get(obj)) elm_widget_theme_klass_set(obj, "pager"); obj = efl_constructor(efl_super(obj, MY_CLASS)); if (elm_widget_theme_object_set(obj, wd->resize_obj, elm_widget_theme_klass_get(obj), elm_widget_theme_element_get(obj), elm_widget_theme_style_get(obj)) == EFL_UI_THEME_APPLY_ERROR_GENERIC) CRI("Failed to set layout!"); pd->cnt = 0; pd->loop = EFL_UI_PAGER_LOOP_DISABLED; pd->curr.page = -1; pd->curr.pos = 0.0; pd->transition = NULL; pd->indicator = NULL; pd->fill_width = EINA_TRUE; pd->fill_height = EINA_TRUE; pd->page_spec.sz.w = -1; pd->page_spec.sz.h = -1; elm_widget_can_focus_set(obj, EINA_TRUE); 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(pd->page_root, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _move_cb, pd); pd->page_box = efl_add(EFL_UI_BOX_CLASS, obj); efl_ui_widget_internal_set(pd->page_box, EINA_TRUE); efl_canvas_group_member_add(pd->page_root, pd->page_box); pd->foreclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS, evas_object_evas_get(obj)); efl_canvas_group_member_add(pd->page_root, pd->foreclip); evas_object_static_clip_set(pd->foreclip, EINA_TRUE); efl_canvas_object_clipper_set(pd->page_box, pd->foreclip); pd->backclip = efl_add(EFL_CANVAS_RECTANGLE_CLASS, evas_object_evas_get(obj)); efl_canvas_group_member_add(pd->page_root, pd->backclip); evas_object_static_clip_set(pd->backclip, EINA_TRUE); efl_gfx_entity_visible_set(pd->backclip, EINA_FALSE); return obj; }
//FIXME sub_object_parent_add? destruction static void _event_handler_create(Eo *obj, Efl_Ui_Pager_Data *pd) { pd->event = efl_add(EFL_CANVAS_RECTANGLE_CLASS, evas_object_evas_get(obj)); 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, "efl.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, _mouse_up_cb, obj); efl_event_callback_add(pd->event, EFL_EVENT_POINTER_MOVE, _mouse_move_cb, obj); }
static void _file_add(void *data, const Efl_Event *event) { View_Common *common = data; Efm_File *file = event->info; void *res; res = common->add(common, file); eina_hash_add(common->files, &file, res); efl_event_callback_add(file, EFM_FILE_EVENT_INVALID, _file_del, data); }
static void _mouse_up_cb(void *data, const Efl_Event *event) { Efl_Input_Pointer *ev = event->info; Eo *obj = data; EFL_UI_PAGER_DATA_GET(obj, pd); if (efl_input_event_flags_get(ev) & EFL_INPUT_FLAGS_PROCESSED) return; if (!pd->down.enabled) return; pd->down.enabled = EINA_FALSE; ELM_SAFE_FREE(pd->job, ecore_job_del); if (EINA_DBL_EQ(pd->curr.pos, 0.0)) return; pd->mouse_up_time = ecore_loop_time_get(); efl_event_callback_add(obj, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _mouse_up_animation, pd); }