cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cd6c0ab2c7dbaf3d0c3812f200bc6fe4735576e8
commit cd6c0ab2c7dbaf3d0c3812f200bc6fe4735576e8 Author: Subhransu Mohanty <[email protected]> Date: Mon Jun 6 16:50:26 2016 -0700 efl_ui_flip: renamed elm_flip to efl_ui_flip and updated the eo class Reviewers: woohyun, raster, jpeg, cedric Reviewed By: jpeg, cedric Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D3933 Signed-off-by: Cedric BAIL <[email protected]> --- src/Makefile_Elementary.am | 11 +- src/lib/elementary/Makefile.am | 12 +- src/lib/elementary/{elm_flip.c => efl_ui_flip.c} | 391 ++++++++++++++++----- src/lib/elementary/{elm_flip.eo => efl_ui_flip.eo} | 49 +-- src/lib/elementary/efl_ui_flip_internal_part.eo | 10 + src/lib/elementary/efl_ui_flip_legacy.h | 124 +++++++ .../{elm_widget_flip.h => efl_ui_widget_flip.h} | 26 +- src/lib/elementary/elm_flip.h | 4 +- src/lib/elementary/elm_flip_eo.h | 1 - src/lib/elementary/elm_flip_legacy.h | 25 -- 10 files changed, 502 insertions(+), 151 deletions(-) diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index db805c7..a08dab0 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -27,7 +27,8 @@ elm_public_eolian_files = \ lib/elementary/elm_fileselector.eo \ lib/elementary/elm_fileselector_button.eo \ lib/elementary/elm_fileselector_entry.eo \ - lib/elementary/elm_flip.eo \ + lib/elementary/efl_ui_flip.eo \ + lib/elementary/efl_ui_flip_internal_part.eo \ lib/elementary/elm_flipselector.eo \ lib/elementary/elm_frame.eo \ lib/elementary/elm_gengrid.eo \ @@ -210,7 +211,7 @@ includesunstable_HEADERS = \ lib/elementary/elm_widget_fileselector.h \ lib/elementary/elm_widget_fileselector_button.h \ lib/elementary/elm_widget_fileselector_entry.h \ - lib/elementary/elm_widget_flip.h \ + lib/elementary/efl_ui_widget_flip.h \ lib/elementary/elm_widget_flipselector.h \ lib/elementary/elm_widget_frame.h \ lib/elementary/elm_widget_gengrid.h \ @@ -369,8 +370,8 @@ includesub_HEADERS = \ lib/elementary/elm_entry_legacy.h \ lib/elementary/elm_finger.h \ lib/elementary/elm_flip.h \ - lib/elementary/elm_flip_eo.h \ - lib/elementary/elm_flip_legacy.h \ + lib/elementary/efl_ui_flip.eo.h \ + lib/elementary/efl_ui_flip_legacy.h \ lib/elementary/elm_flipselector.h \ lib/elementary/elm_flipselector_eo.h \ lib/elementary/elm_flipselector_legacy.h \ @@ -592,7 +593,7 @@ lib_elementary_libelementary_la_SOURCES = \ lib/elementary/elm_dbus_menu.c \ lib/elementary/elm_diskselector.c \ lib/elementary/elm_entry.c \ - lib/elementary/elm_flip.c \ + lib/elementary/efl_ui_flip.c \ lib/elementary/elm_flipselector.c \ lib/elementary/elm_font.c \ lib/elementary/elm_frame.c \ diff --git a/src/lib/elementary/Makefile.am b/src/lib/elementary/Makefile.am index 51ccc88..364bc85 100644 --- a/src/lib/elementary/Makefile.am +++ b/src/lib/elementary/Makefile.am @@ -31,7 +31,8 @@ elm_eolian_files = \ elm_fileselector.eo \ elm_fileselector_button.eo \ elm_fileselector_entry.eo \ - elm_flip.eo \ + efl_ui_flip.eo \ + efl_ui_flip_internal_part.eo \ elm_flipselector.eo \ elm_frame.eo \ elm_gengrid.eo \ @@ -181,7 +182,7 @@ includesunstable_HEADERS = \ elm_widget_fileselector.h \ elm_widget_fileselector_button.h \ elm_widget_fileselector_entry.h \ - elm_widget_flip.h \ + efl_ui_widget_flip.h \ elm_widget_flipselector.h \ elm_widget_frame.h \ elm_widget_gengrid.h \ @@ -329,8 +330,9 @@ includesub_HEADERS = \ elm_entry_legacy.h \ elm_finger.h \ elm_flip.h \ - elm_flip_eo.h \ - elm_flip_legacy.h \ + efl_ui_flip_legacy.h\ + efl_ui_flip.eo.h \ + efl_ui_flip_internal_part.eo.h \ elm_flipselector.h \ elm_flipselector_eo.h \ elm_flipselector_legacy.h \ @@ -541,7 +543,7 @@ libelementary_la_SOURCES = \ elm_dbus_menu.c \ elm_diskselector.c \ elm_entry.c \ - elm_flip.c \ + efl_ui_flip.c \ elm_flipselector.c \ elm_font.c \ elm_frame.c \ diff --git a/src/lib/elementary/elm_flip.c b/src/lib/elementary/efl_ui_flip.c similarity index 82% rename from src/lib/elementary/elm_flip.c rename to src/lib/elementary/efl_ui_flip.c index adeddd5..748397a 100644 --- a/src/lib/elementary/elm_flip.c +++ b/src/lib/elementary/efl_ui_flip.c @@ -6,15 +6,15 @@ #include <Elementary.h> #include "elm_priv.h" -#include "elm_widget_flip.h" +#include "efl_ui_widget_flip.h" #include "elm_widget_container.h" -#include "elm_flip_internal_part.eo.h" +#include "efl_ui_flip_internal_part.eo.h" #include "elm_part_helper.h" -#define MY_CLASS ELM_FLIP_CLASS +#define MY_CLASS EFL_UI_FLIP_CLASS -#define MY_CLASS_NAME "Elm_Flip" +#define MY_CLASS_NAME "Efl_Ui_Flip" #define MY_CLASS_NAME_LEGACY "elm_flip" static const char SIG_ANIMATE_BEGIN[] = "animate,begin"; @@ -27,6 +27,8 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { static Eina_Bool _flip(Evas_Object *obj); +static void _update_front_back(Eo *obj, Efl_Ui_Flip_Data *sd); + static void _slice_free(Slice *sl) { @@ -35,7 +37,7 @@ _slice_free(Slice *sl) } static void -_state_slices_clear(Elm_Flip_Data *sd) +_state_slices_clear(Efl_Ui_Flip_Data *sd) { int i, j, num; @@ -69,7 +71,7 @@ _sizing_eval(Evas_Object *obj) Evas_Coord maxw = -1, maxh = -1, maxw2 = -1, maxh2 = -1; int fingx = 0, fingy = 0; - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); if (sd->front.content) evas_object_size_hint_min_get(sd->front.content, &minw, &minh); @@ -97,7 +99,7 @@ _sizing_eval(Evas_Object *obj) } EOLIAN static Eina_Bool -_elm_flip_elm_widget_theme_apply(Eo *obj, Elm_Flip_Data *sd EINA_UNUSED) +_efl_ui_flip_elm_widget_theme_apply(Eo *obj, Efl_Ui_Flip_Data *sd EINA_UNUSED) { Eina_Bool int_ret = EINA_FALSE; int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS)); @@ -109,13 +111,13 @@ _elm_flip_elm_widget_theme_apply(Eo *obj, Elm_Flip_Data *sd EINA_UNUSED) } EOLIAN static Eina_Bool -_elm_flip_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Flip_Data *_pd EINA_UNUSED) +_efl_ui_flip_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *_pd EINA_UNUSED) { return EINA_TRUE; } EOLIAN static Eina_Bool -_elm_flip_elm_widget_focus_next(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item) +_efl_ui_flip_elm_widget_focus_next(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *sd, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item) { /* attempt to cycle focus on in sub-items */ @@ -126,7 +128,7 @@ _elm_flip_elm_widget_focus_next(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, Elm_Focu } EOLIAN static Eina_Bool -_elm_flip_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Flip_Data *_pd EINA_UNUSED) +_efl_ui_flip_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *_pd EINA_UNUSED) { if (!elm_widget_can_focus_get(obj)) return EINA_TRUE; @@ -135,7 +137,7 @@ _elm_flip_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Flip_Da } EOLIAN static Eina_Bool -_elm_flip_elm_widget_focus_direction(Eo *obj, Elm_Flip_Data *sd, const Evas_Object *base, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight) +_efl_ui_flip_elm_widget_focus_direction(Eo *obj, Efl_Ui_Flip_Data *sd, const Evas_Object *base, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight) { Eina_Bool ret; @@ -167,7 +169,7 @@ _changed_size_hints_cb(void *data, } EOLIAN static Eina_Bool -_elm_flip_elm_widget_sub_object_add(Eo *obj, Elm_Flip_Data *_pd EINA_UNUSED, Evas_Object *sobj) +_efl_ui_flip_elm_widget_sub_object_add(Eo *obj, Efl_Ui_Flip_Data *_pd EINA_UNUSED, Evas_Object *sobj) { Eina_Bool int_ret = EINA_FALSE; @@ -186,7 +188,7 @@ _elm_flip_elm_widget_sub_object_add(Eo *obj, Elm_Flip_Data *_pd EINA_UNUSED, Eva } EOLIAN static Eina_Bool -_elm_flip_elm_widget_sub_object_del(Eo *obj, Elm_Flip_Data *sd, Evas_Object *sobj) +_efl_ui_flip_elm_widget_sub_object_del(Eo *obj, Efl_Ui_Flip_Data *sd, Evas_Object *sobj) { Eina_Bool int_ret = EINA_FALSE; @@ -238,7 +240,7 @@ _slice_new(Evas_Object *container_obj, } static void -_slice_apply(Elm_Flip_Data *sd, +_slice_apply(Efl_Ui_Flip_Data *sd, Slice *sl, Evas_Coord x EINA_UNUSED, Evas_Coord y EINA_UNUSED, @@ -295,7 +297,7 @@ _slice_apply(Elm_Flip_Data *sd, } static void -_slice_3d(Elm_Flip_Data *sd EINA_UNUSED, +_slice_3d(Efl_Ui_Flip_Data *sd EINA_UNUSED, Slice *sl, Evas_Coord x, Evas_Coord y, @@ -323,7 +325,7 @@ _slice_3d(Elm_Flip_Data *sd EINA_UNUSED, } static void -_slice_light(Elm_Flip_Data *sd EINA_UNUSED, +_slice_light(Efl_Ui_Flip_Data *sd EINA_UNUSED, Slice *sl, Evas_Coord x, Evas_Coord y, @@ -359,7 +361,7 @@ _slice_light(Elm_Flip_Data *sd EINA_UNUSED, } static void -_slice_xyz(Elm_Flip_Data *sd EINA_UNUSED, +_slice_xyz(Efl_Ui_Flip_Data *sd EINA_UNUSED, Slice *sl, double xx1, double yy1, @@ -381,7 +383,7 @@ _slice_xyz(Elm_Flip_Data *sd EINA_UNUSED, } static void -_slice_uv(Elm_Flip_Data *sd EINA_UNUSED, +_slice_uv(Efl_Ui_Flip_Data *sd EINA_UNUSED, Slice *sl, double u1, double v1, @@ -509,7 +511,7 @@ _slice_obj_vert_color_merge(Slice *s1, static int _state_update(Evas_Object *obj) { - Elm_Flip_Data *sd = eo_data_scope_get(obj, MY_CLASS); + Efl_Ui_Flip_Data *sd = eo_data_scope_get(obj, MY_CLASS); Slice *sl; Vertex3 *tvo, *tvol; Evas_Object *front, *back; @@ -871,7 +873,7 @@ _state_update(Evas_Object *obj) } static void -_state_end(Elm_Flip_Data *sd) +_state_end(Efl_Ui_Flip_Data *sd) { _state_slices_clear(sd); } @@ -879,7 +881,7 @@ _state_end(Elm_Flip_Data *sd) static void _flip_show_hide(Evas_Object *obj) { - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); if (elm_flip_front_visible_get(obj)) { if (sd->pageflip) @@ -970,7 +972,7 @@ _flip_do(Evas_Object *obj, Evas_Coord cx, cy, px, py, foc; int lx, ly, lz, lr, lg, lb, lar, lag, lab; - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); mf = evas_map_new(4); evas_map_smooth_set(mf, EINA_FALSE); @@ -1166,7 +1168,7 @@ _flip_do(Evas_Object *obj, static void _show_hide(Evas_Object *obj) { - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); Evas_Coord x, y, w, h; if (!sd) return; @@ -1205,7 +1207,7 @@ _configure(Evas_Object *obj) Evas_Coord x, y, w, h; Evas_Coord fsize; - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); _show_hide(obj); evas_object_geometry_get(obj, &x, &y, &w, &h); // FIXME: manual flip wont get fixed @@ -1247,7 +1249,7 @@ _flip(Evas_Object *obj) double t; Evas_Coord w, h; - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); t = ecore_loop_time_get() - sd->start; @@ -1335,7 +1337,10 @@ _flip(Evas_Object *obj) sd->state = sd->next_state; _configure(obj); _flip_show_hide(obj); - eo_event_callback_call(obj, ELM_FLIP_EVENT_ANIMATE_DONE, NULL); + eo_event_callback_call(obj, EFL_UI_FLIP_EVENT_ANIMATE_DONE, NULL); + + // update the new front and back object. + _update_front_back(obj, sd); return ECORE_CALLBACK_CANCEL; } @@ -1372,7 +1377,7 @@ _animate(void *data) static double _pos_get(Evas_Object *obj, - Elm_Flip_Data *sd, + Efl_Ui_Flip_Data *sd, int *rev, Elm_Flip_Mode *m) { @@ -1382,8 +1387,8 @@ _pos_get(Evas_Object *obj, evas_object_geometry_get(obj, &x, &y, &w, &h); switch (sd->intmode) { - case ELM_FLIP_INTERACTION_ROTATE: - case ELM_FLIP_INTERACTION_CUBE: + case EFL_UI_FLIP_INTERACTION_ROTATE: + case EFL_UI_FLIP_INTERACTION_CUBE: { if (sd->dir == ELM_FLIP_DIRECTION_LEFT) { @@ -1415,9 +1420,9 @@ _pos_get(Evas_Object *obj, if ((sd->dir == ELM_FLIP_DIRECTION_LEFT) || (sd->dir == ELM_FLIP_DIRECTION_RIGHT)) { - if (sd->intmode == ELM_FLIP_INTERACTION_ROTATE) + if (sd->intmode == EFL_UI_FLIP_INTERACTION_ROTATE) *m = ELM_FLIP_ROTATE_Y_CENTER_AXIS; - else if (sd->intmode == ELM_FLIP_INTERACTION_CUBE) + else if (sd->intmode == EFL_UI_FLIP_INTERACTION_CUBE) { if (*rev) *m = ELM_FLIP_CUBE_LEFT; @@ -1427,9 +1432,9 @@ _pos_get(Evas_Object *obj, } else { - if (sd->intmode == ELM_FLIP_INTERACTION_ROTATE) + if (sd->intmode == EFL_UI_FLIP_INTERACTION_ROTATE) *m = ELM_FLIP_ROTATE_X_CENTER_AXIS; - else if (sd->intmode == ELM_FLIP_INTERACTION_CUBE) + else if (sd->intmode == EFL_UI_FLIP_INTERACTION_CUBE) { if (*rev) *m = ELM_FLIP_CUBE_UP; @@ -1449,7 +1454,7 @@ static Eina_Bool _event_anim(void *data, double pos) { - Elm_Flip_Data *sd = data; + Efl_Ui_Flip_Data *sd = data; double p; p = ecore_animator_pos_map(pos, ECORE_POS_MAP_ACCELERATE, 0.0, 0.0); @@ -1477,11 +1482,11 @@ _event_anim(void *data, } switch (sd->intmode) { - case ELM_FLIP_INTERACTION_NONE: + case EFL_UI_FLIP_INTERACTION_NONE: break; - case ELM_FLIP_INTERACTION_ROTATE: - case ELM_FLIP_INTERACTION_CUBE: + case EFL_UI_FLIP_INTERACTION_ROTATE: + case EFL_UI_FLIP_INTERACTION_CUBE: { Elm_Flip_Mode m = ELM_FLIP_ROTATE_X_CENTER_AXIS; int rev = 0; @@ -1490,7 +1495,7 @@ _event_anim(void *data, } break; - case ELM_FLIP_INTERACTION_PAGE: + case EFL_UI_FLIP_INTERACTION_PAGE: sd->pageflip = EINA_TRUE; _configure(sd->obj); _state_update(sd->obj); @@ -1517,7 +1522,7 @@ _event_anim(void *data, _configure(sd->obj); sd->animator = NULL; eo_event_callback_call - (sd->obj, ELM_FLIP_EVENT_ANIMATE_DONE, NULL); + (sd->obj, EFL_UI_FLIP_EVENT_ANIMATE_DONE, NULL); return ECORE_CALLBACK_CANCEL; } @@ -1527,20 +1532,20 @@ _update_job(void *data) { Elm_Flip_Mode m = ELM_FLIP_ROTATE_X_CENTER_AXIS; Evas_Object *obj = data; - Elm_Flip_Data *sd = eo_data_scope_get(obj, MY_CLASS); + Efl_Ui_Flip_Data *sd = eo_data_scope_get(obj, MY_CLASS); int rev = 0; double p; sd->job = NULL; switch (sd->intmode) { - case ELM_FLIP_INTERACTION_ROTATE: - case ELM_FLIP_INTERACTION_CUBE: + case EFL_UI_FLIP_INTERACTION_ROTATE: + case EFL_UI_FLIP_INTERACTION_CUBE: p = _pos_get(obj, sd, &rev, &m); _flip_do(obj, p, m, 1, rev); break; - case ELM_FLIP_INTERACTION_PAGE: + case EFL_UI_FLIP_INTERACTION_PAGE: sd->pageflip = EINA_TRUE; _configure(obj); _state_update(obj); @@ -1561,7 +1566,7 @@ _down_cb(void *data, Evas_Object *fl = data; Evas_Coord x, y, w, h; - ELM_FLIP_DATA_GET(fl, sd); + EFL_UI_FLIP_DATA_GET(fl, sd); if (ev->button != 1) return; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; @@ -1588,7 +1593,7 @@ _up_cb(void *data, Evas_Coord x, y, w, h; double tm = 0.5; - ELM_FLIP_DATA_GET(fl, sd); + EFL_UI_FLIP_DATA_GET(fl, sd); if (ev->button != 1) return; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; @@ -1646,7 +1651,7 @@ _move_cb(void *data, Evas_Object *fl = data; Evas_Coord x, y, w, h; - ELM_FLIP_DATA_GET(fl, sd); + EFL_UI_FLIP_DATA_GET(fl, sd); if (!sd->mouse_down) return; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; evas_object_geometry_get(data, &x, &y, &w, &h); @@ -1688,7 +1693,7 @@ _move_cb(void *data, else return; sd->started = EINA_TRUE; - if (sd->intmode == ELM_FLIP_INTERACTION_PAGE) + if (sd->intmode == EFL_UI_FLIP_INTERACTION_PAGE) sd->pageflip = EINA_TRUE; _flip_show_hide(data); evas_smart_objects_calculate(evas_object_evas_get(data)); @@ -1703,7 +1708,7 @@ _move_cb(void *data, evas_smart_objects_calculate(evas_object_evas_get(data)); _configure(fl); // FIXME: end hack - eo_event_callback_call(fl, ELM_FLIP_EVENT_ANIMATE_BEGIN, NULL); + eo_event_callback_call(fl, EFL_UI_FLIP_EVENT_ANIMATE_BEGIN, NULL); } else return; } @@ -1721,7 +1726,7 @@ _flip_content_set(Evas_Object *obj, int i; Evas_Object **cont; - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); cont = front ? &(sd->front.content) : &(sd->back.content); @@ -1745,7 +1750,7 @@ _flip_content_set(Evas_Object *obj, _configure(obj); _sizing_eval(obj); - if (sd->intmode != ELM_FLIP_INTERACTION_NONE) + if (sd->intmode != EFL_UI_FLIP_INTERACTION_NONE) { for (i = 0; i < 4; i++) evas_object_raise(sd->event[i]); @@ -1761,7 +1766,7 @@ _flip_content_unset(Evas_Object *obj, Evas_Object *content; Evas_Object **cont; - ELM_FLIP_DATA_GET(obj, sd); + EFL_UI_FLIP_DATA_GET(obj, sd); cont = front ? &(sd->front.content) : &(sd->back.content); @@ -1774,7 +1779,7 @@ _flip_content_unset(Evas_Object *obj, } static Eina_Bool -_elm_flip_content_set(Eo *obj, Elm_Flip_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) +_efl_ui_flip_content_set(Eo *obj, Efl_Ui_Flip_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) { if (!part || !strcmp(part, "front")) return _flip_content_set(obj, content, EINA_TRUE); @@ -1784,7 +1789,7 @@ _elm_flip_content_set(Eo *obj, Elm_Flip_Data *_pd EINA_UNUSED, const char *part, } static Evas_Object* -_elm_flip_content_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, const char *part) +_efl_ui_flip_content_get(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *sd, const char *part) { if (!part || !strcmp(part, "front")) return sd->front.content; @@ -1794,7 +1799,7 @@ _elm_flip_content_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, const char *part) } static Evas_Object* -_elm_flip_content_unset(Eo *obj EINA_UNUSED, Elm_Flip_Data *_pd EINA_UNUSED, const char *part) +_efl_ui_flip_content_unset(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *_pd EINA_UNUSED, const char *part) { if (!part || !strcmp(part, "front")) return _flip_content_unset(obj, EINA_TRUE); @@ -1804,7 +1809,7 @@ _elm_flip_content_unset(Eo *obj EINA_UNUSED, Elm_Flip_Data *_pd EINA_UNUSED, con } EOLIAN static void -_elm_flip_evas_object_smart_add(Eo *obj, Elm_Flip_Data *priv) +_efl_ui_flip_evas_object_smart_add(Eo *obj, Efl_Ui_Flip_Data *priv) { evas_obj_smart_add(eo_super(obj, MY_CLASS)); elm_widget_sub_object_parent_add(obj); @@ -1839,7 +1844,7 @@ _elm_flip_evas_object_smart_add(Eo *obj, Elm_Flip_Data *priv) priv->state = EINA_TRUE; priv->next_state = EINA_TRUE; - priv->intmode = ELM_FLIP_INTERACTION_NONE; + priv->intmode = EFL_UI_FLIP_INTERACTION_NONE; elm_widget_can_focus_set(obj, EINA_FALSE); @@ -1847,7 +1852,7 @@ _elm_flip_evas_object_smart_add(Eo *obj, Elm_Flip_Data *priv) } EOLIAN static void -_elm_flip_evas_object_smart_del(Eo *obj, Elm_Flip_Data *sd) +_efl_ui_flip_evas_object_smart_del(Eo *obj, Efl_Ui_Flip_Data *sd) { ecore_animator_del(sd->animator); _state_slices_clear(sd); @@ -1864,7 +1869,7 @@ elm_flip_add(Evas_Object *parent) } EOLIAN static Eo * -_elm_flip_eo_base_constructor(Eo *obj, Elm_Flip_Data *sd) +_efl_ui_flip_eo_base_constructor(Eo *obj, Efl_Ui_Flip_Data *sd) { obj = eo_constructor(eo_super(obj, MY_CLASS)); sd->obj = obj; @@ -1877,7 +1882,7 @@ _elm_flip_eo_base_constructor(Eo *obj, Elm_Flip_Data *sd) } EOLIAN static Eina_Bool -_elm_flip_front_visible_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd) +_efl_ui_flip_front_visible_get(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *sd) { return sd->state; } @@ -1895,7 +1900,7 @@ elm_flip_perspective_set(Evas_Object *obj, static void _internal_elm_flip_go_to(Evas_Object *obj, - Elm_Flip_Data *sd, + Efl_Ui_Flip_Data *sd, Eina_Bool front, Elm_Flip_Mode mode) { @@ -1923,7 +1928,7 @@ _internal_elm_flip_go_to(Evas_Object *obj, evas_smart_objects_calculate(evas_object_evas_get(obj)); _configure(obj); // FIXME: end hack - eo_event_callback_call(obj, ELM_FLIP_EVENT_ANIMATE_BEGIN, NULL); + eo_event_callback_call(obj, EFL_UI_FLIP_EVENT_ANIMATE_BEGIN, NULL); // set focus to the content object when flip go to is called if (elm_object_focus_get(obj)) @@ -1934,7 +1939,7 @@ _internal_elm_flip_go_to(Evas_Object *obj, } EOLIAN static void -_elm_flip_go_to(Eo *obj, Elm_Flip_Data *sd, Eina_Bool front, Elm_Flip_Mode mode) +_efl_ui_flip_go_to(Eo *obj, Efl_Ui_Flip_Data *sd, Eina_Bool front, Elm_Flip_Mode mode) { if (sd->next_state == front) return; @@ -1942,13 +1947,13 @@ _elm_flip_go_to(Eo *obj, Elm_Flip_Data *sd, Eina_Bool front, Elm_Flip_Mode mode) } EOLIAN static void -_elm_flip_go(Eo *obj, Elm_Flip_Data *sd, Elm_Flip_Mode mode) +_efl_ui_flip_go(Eo *obj, Efl_Ui_Flip_Data *sd, Elm_Flip_Mode mode) { _internal_elm_flip_go_to(obj, sd, !sd->state, mode); } static void -_event_rect_create(Eo *obj, Elm_Flip_Data *sd, int i) +_event_rect_create(Eo *obj, Efl_Ui_Flip_Data *sd, int i) { Evas_Object *clip; Evas *e; @@ -1973,7 +1978,7 @@ _event_rect_create(Eo *obj, Elm_Flip_Data *sd, int i) } EOLIAN static void -_elm_flip_interaction_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip_Interaction mode) +_efl_ui_flip_interaction_set(Eo *obj, Efl_Ui_Flip_Data *sd, Efl_Ui_Flip_Interaction mode) { int i; @@ -1983,7 +1988,7 @@ _elm_flip_interaction_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip_Interaction mode) for (i = 0; i < 4; i++) { - if (sd->intmode == ELM_FLIP_INTERACTION_NONE) + if (sd->intmode == EFL_UI_FLIP_INTERACTION_NONE) ELM_SAFE_FREE(sd->event[i], evas_object_del); else if (sd->dir_enabled[i]) { @@ -1997,14 +2002,14 @@ _elm_flip_interaction_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip_Interaction mode) _configure(obj); } -EOLIAN static Elm_Flip_Interaction -_elm_flip_interaction_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd) +EOLIAN static Efl_Ui_Flip_Interaction +_efl_ui_flip_interaction_get(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *sd) { return sd->intmode; } EOLIAN static void -_elm_flip_interaction_direction_enabled_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip_Direction dir, Eina_Bool enabled) +_efl_ui_flip_interaction_direction_enabled_set(Eo *obj, Efl_Ui_Flip_Data *sd, Efl_Orient dir, Eina_Bool enabled) { int i = (int) dir; int area; @@ -2013,7 +2018,7 @@ _elm_flip_interaction_direction_enabled_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip enabled = !!enabled; if (sd->dir_enabled[i] == enabled) return; sd->dir_enabled[i] = enabled; - if (sd->intmode == ELM_FLIP_INTERACTION_NONE) return; + if (sd->intmode == EFL_UI_FLIP_INTERACTION_NONE) return; area = (i & 0x2) | (i ^ 0x1); // up <-> down, left <-> right if (enabled && (sd->dir_hitsize[area] >= 0.0)) @@ -2027,13 +2032,13 @@ _elm_flip_interaction_direction_enabled_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip } EOLIAN static Eina_Bool -_elm_flip_interaction_direction_enabled_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, Elm_Flip_Direction dir) +_efl_ui_flip_interaction_direction_enabled_get(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *sd, Efl_Orient dir) { return sd->dir_enabled[(int) dir]; } EOLIAN static void -_elm_flip_interaction_direction_hitsize_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip_Direction dir, double hitsize) +_efl_ui_flip_interaction_direction_hitsize_set(Eo *obj, Efl_Ui_Flip_Data *sd, Efl_Orient dir, double hitsize) { int i = (int) dir; @@ -2055,28 +2060,254 @@ _elm_flip_interaction_direction_hitsize_set(Eo *obj, Elm_Flip_Data *sd, Elm_Flip _configure(obj); } +static void +_update_front_back(Eo *obj, Efl_Ui_Flip_Data *pd) +{ + int count, index; + Efl_Gfx *content; + + count = eina_list_count(pd->content_list); + if (count <= 2) return; + + // update the next state object + content = _flip_content_unset(obj, !pd->state); + evas_object_hide(content); + content = pd->state ? pd->front.content : pd->back.content; + index = eina_list_data_idx(pd->content_list, content); + index = (index == count-1) ? 0 : index + 1; + content = eina_list_nth(pd->content_list, index); + evas_object_show(content); + _flip_content_set(obj, content, !pd->state); +} + +static void +_content_added(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *content) +{ + evas_object_smart_member_add(content, obj); + + if (!pd->front.content) + { + _flip_content_set(obj, content, EINA_TRUE); + return; + } + if (!pd->back.content) + { + _flip_content_set(obj, content, EINA_FALSE); + return; + } +} + +static void +_content_removed(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *content) +{ + Efl_Gfx *back_face, *cur_face, *face; + int index, count; + Eina_Bool state; + + evas_object_smart_member_del(content); + // if its not the front or back object just return. + if ((pd->front.content != content) || + (pd->back.content != content)) + return; + + cur_face = pd->state ? pd->front.content : pd->back.content; + back_face = pd->state ? pd->back.content : pd->front.content; + + if (cur_face == content) + { + face = back_face; + state = EINA_TRUE; + } + else + { + face = cur_face; + state = EINA_FALSE; + } + + _flip_content_unset(obj, state); + + count = eina_list_count(pd->content_list); + if (count == 1) return; + + _flip_content_unset(obj, state); + index = eina_list_data_idx(pd->content_list, face); + index = (index == count-1) ? 0 : index + 1; + _flip_content_set(obj, eina_list_nth(pd->content_list, index), state); +} + EOLIAN static double -_elm_flip_interaction_direction_hitsize_get(Eo *obj EINA_UNUSED, Elm_Flip_Data *sd, Elm_Flip_Direction dir) +_efl_ui_flip_interaction_direction_hitsize_get(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *sd, Efl_Orient dir) { int i = (int) dir; return sd->dir_hitsize[i]; } +EOLIAN static Eina_Iterator * +_efl_ui_flip_efl_container_content_iterate(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *pd) +{ + return eina_list_iterator_new(pd->content_list); +} + +EOLIAN static int +_efl_ui_flip_efl_container_content_count(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *pd) +{ + return eina_list_count(pd->content_list); +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_container_content_remove(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *content) +{ + pd->content_list = eina_list_remove(pd->content_list, content); + _content_removed(obj, pd, content); + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_pack_unpack(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *subobj) +{ + pd->content_list = eina_list_remove(pd->content_list, subobj); + _content_removed(obj, pd, subobj); + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_pack_pack(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *subobj) +{ + pd->content_list = eina_list_append(pd->content_list, subobj); + _content_added(obj, pd, subobj); + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_pack_linear_pack_begin(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *subobj) +{ + pd->content_list = eina_list_prepend(pd->content_list, subobj); + _content_added(obj, pd, subobj); + + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_pack_linear_pack_end(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *subobj) +{ + pd->content_list = eina_list_append(pd->content_list, subobj); + _content_added(obj, pd, subobj); + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *subobj, const Efl_Gfx *existing) +{ + pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing); + _content_added(obj, pd, subobj); + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_pack_linear_pack_after(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *subobj, const Efl_Gfx *existing) +{ + pd->content_list = eina_list_append_relative(pd->content_list, subobj, existing); + _content_added(obj, pd, subobj); + return EINA_TRUE; +} + +EOLIAN static Eina_Bool +_efl_ui_flip_efl_pack_linear_pack_at(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx *subobj, int index) +{ + Efl_Gfx *existing = NULL; + existing = eina_list_nth(pd->content_list, index); + pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing); + _content_added(obj, pd, subobj); + return EINA_TRUE; +} + +EOLIAN static Efl_Gfx * +_efl_ui_flip_efl_pack_linear_pack_content_get(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *pd, int index) +{ + return eina_list_nth(pd->content_list, index); +} + +EOLIAN static Efl_Gfx * +_efl_ui_flip_efl_pack_linear_pack_unpack_at(Eo *obj, Efl_Ui_Flip_Data *pd, int index) +{ + Efl_Gfx *content = eina_list_nth(pd->content_list ,index); + + pd->content_list = eina_list_remove(pd->content_list, content); + _content_removed(obj, pd, content); + return content; +} + +EOLIAN static int +_efl_ui_flip_efl_pack_linear_pack_index_get(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data *pd, const Efl_Gfx *subobj) +{ + return eina_list_data_idx(pd->content_list, (void *)subobj); +} + static void -_elm_flip_class_constructor(Eo_Class *klass) +_efl_ui_flip_class_constructor(Eo_Class *klass) { evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +static Efl_Orient +_to_efl_orientation(Elm_Flip_Direction dir) +{ + Efl_Orient res; + switch (dir) + { + case ELM_FLIP_DIRECTION_RIGHT: + res = EFL_ORIENT_RIGHT; + break; + case ELM_FLIP_DIRECTION_DOWN: + res = EFL_ORIENT_DOWN; + break; + case ELM_FLIP_DIRECTION_LEFT: + res = EFL_ORIENT_LEFT; + break; + default: + res = EFL_ORIENT_UP; + break; + } + return res; +} + +EAPI void +elm_flip_interaction_direction_hitsize_set(Efl_Ui_Flip *obj, Elm_Flip_Direction dir, double hitsize) +{ + Efl_Orient orient = _to_efl_orientation(dir); + efl_ui_flip_interaction_direction_hitsize_set((Efl_Ui_Flip *)obj, orient, hitsize); +} + +EAPI double +elm_flip_interaction_direction_hitsize_get(Efl_Ui_Flip *obj, Elm_Flip_Direction dir) +{ + Efl_Orient orient = _to_efl_orientation(dir); + return efl_ui_flip_interaction_direction_hitsize_get((Efl_Ui_Flip *)obj, orient); +} + +EOAPI void +elm_flip_interaction_direction_enabled_set(Efl_Ui_Flip *obj, Elm_Flip_Direction dir, Eina_Bool enabled) +{ + Efl_Orient orient = _to_efl_orientation(dir); + efl_ui_flip_interaction_direction_enabled_set((Efl_Ui_Flip *)obj, orient, enabled); +} + +EOAPI Eina_Bool +elm_flip_interaction_direction_enabled_get(Efl_Ui_Flip *obj, Elm_Flip_Direction dir) +{ + Efl_Orient orient = _to_efl_orientation(dir); + return efl_ui_flip_interaction_direction_enabled_get((Efl_Ui_Flip *)obj, orient); +} + /* Efl.Part begin */ -ELM_PART_IMPLEMENT(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_SET(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_GET(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) -ELM_PART_IMPLEMENT_CONTENT_UNSET(elm_flip, ELM_FLIP, Elm_Flip_Data, Elm_Part_Data) -#include "elm_flip_internal_part.eo.c" +ELM_PART_IMPLEMENT(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_SET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_GET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) +ELM_PART_IMPLEMENT_CONTENT_UNSET(efl_ui_flip, EFL_UI_FLIP, Efl_Ui_Flip_Data, Elm_Part_Data) +#include "efl_ui_flip_internal_part.eo.c" /* Efl.Part end */ -#include "elm_flip.eo.c" +#include "efl_ui_flip.eo.c" diff --git a/src/lib/elementary/elm_flip.eo b/src/lib/elementary/efl_ui_flip.eo similarity index 90% rename from src/lib/elementary/elm_flip.eo rename to src/lib/elementary/efl_ui_flip.eo index 9edc6de..cd9b972 100644 --- a/src/lib/elementary/elm_flip.eo +++ b/src/lib/elementary/efl_ui_flip.eo @@ -1,7 +1,7 @@ -enum Elm.Flip.Mode +enum Efl.Ui.Flip.Mode { [[]] - legacy: elm_flip; + legacy: efl_ui_flip; rotate_y_center_axis, rotate_x_center_axis, rotate_xz_center_axis, @@ -16,7 +16,7 @@ enum Elm.Flip.Mode page_down } -enum Elm.Flip.Interaction +enum Efl.Ui.Flip.Interaction { [[]] none, @@ -25,19 +25,9 @@ enum Elm.Flip.Interaction page } -enum Elm.Flip.Direction -{ - up = 0, [[Allows interaction with the top of the widget]] - down, [[Allows interaction with the bottom of the widget]] - left, [[Allows interaction with the left portion of the widget]] - right [[Allows interaction with the right portion of the widget]] -} - -class Elm.Flip (Elm.Widget, Efl.Part) +class Efl.Ui.Flip (Elm.Widget, Efl.Pack.Linear, Efl.Part) { legacy_prefix: elm_flip; - eo_prefix: elm_obj_flip; - event_prefix: elm_flip; methods { @property interaction { set { @@ -64,7 +54,7 @@ class Elm.Flip (Elm.Widget, Efl.Part) [[Get the interactive flip mode.]] } values { - mode: Elm.Flip.Interaction; [[The interactive flip mode to use.]] + mode: Efl.Ui.Flip.Interaction; [[The interactive flip mode to use.]] } } @property front_visible { @@ -93,16 +83,18 @@ class Elm.Flip (Elm.Widget, Efl.Part) See also @.interaction.set. ]] + legacy: null; params { - @in dir: Elm.Flip.Direction; [[The hit area to set.]] + @in dir: Efl.Orient; [[The hit area to set.]] @in hitsize: double; [[The amount of that dimension (0.0 to 1.0) to use.]] } } interaction_direction_hitsize_get { [[Get the amount of the flip that is sensitive to interactive flip.]] return: double; [[The size set for that direction.]] + legacy: null; params { - @in dir: Elm.Flip.Direction; [[The direction to check.]] + @in dir: Efl.Orient; [[The direction to check.]] } } interaction_direction_enabled_set { @@ -117,16 +109,18 @@ class Elm.Flip (Elm.Widget, Efl.Part) @.interaction_direction_hitsize_set. By default, a minimum hit area will be created on the opposite edge of the flip. ]] + legacy: null; params { - @in dir: Elm.Flip.Direction; [[The direction to change.]] + @in dir: Efl.Orient; [[The direction to change.]] @in enabled: bool; [[If that direction is enabled or not.]] } } interaction_direction_enabled_get { [[Get the enabled state of that flip direction.]] return: bool; [[If that direction is enabled or not.]] + legacy: null; params { - @in dir: Elm.Flip.Direction; [[The direction to check.]] + @in dir: Efl.Orient; [[The direction to check.]] } } go { @@ -174,7 +168,7 @@ class Elm.Flip (Elm.Widget, Efl.Part) * @image latex elm_flip.eps width=\textwidth */ params { - @in mode: Elm.Flip.Mode; [[The mode type.]] + @in mode: Efl.Ui.Flip.Mode; [[The mode type.]] } } go_to { @@ -224,7 +218,7 @@ class Elm.Flip (Elm.Widget, Efl.Part) params { @in front: bool; [[If $true, makes front visible, otherwise makes back.]] - @in mode: Elm.Flip.Mode; [[The mode type.]] + @in mode: Efl.Ui.Flip.Mode; [[The mode type.]] } } } @@ -240,7 +234,20 @@ class Elm.Flip (Elm.Widget, Efl.Part) Elm.Widget.focus_next_manager_is; Elm.Widget.focus_next; Elm.Widget.sub_object_del; + Efl.Container.content_iterate; + Efl.Container.content_count; + Efl.Container.content_remove; Efl.Part.part; + Efl.Pack.unpack; + Efl.Pack.pack; + Efl.Pack.Linear.pack_begin; + Efl.Pack.Linear.pack_end; + Efl.Pack.Linear.pack_before; + Efl.Pack.Linear.pack_after; + Efl.Pack.Linear.pack_at; + Efl.Pack.Linear.pack_content_get; + Efl.Pack.Linear.pack_unpack_at; + Efl.Pack.Linear.pack_index_get; } events { animate,begin; diff --git a/src/lib/elementary/efl_ui_flip_internal_part.eo b/src/lib/elementary/efl_ui_flip_internal_part.eo new file mode 100644 index 0000000..3f95d5f --- /dev/null +++ b/src/lib/elementary/efl_ui_flip_internal_part.eo @@ -0,0 +1,10 @@ +class Efl.Ui.Flip.Internal.Part (Eo.Base, Efl.Container) +{ + data: Elm_Part_Data; + implements { + Eo.Base.destructor; + Efl.Container.content.set; + Efl.Container.content.get; + Efl.Container.content_unset; + } +} \ No newline at end of file diff --git a/src/lib/elementary/efl_ui_flip_legacy.h b/src/lib/elementary/efl_ui_flip_legacy.h new file mode 100644 index 0000000..4e76e49 --- /dev/null +++ b/src/lib/elementary/efl_ui_flip_legacy.h @@ -0,0 +1,124 @@ + +typedef Efl_Ui_Flip_Interaction Elm_Flip_Interaction; + +#define ELM_FLIP_INTERACTION_NONE EFL_UI_FLIP_INTERACTION_NONE +#define ELM_FLIP_INTERACTION_ROTATE EFL_UI_FLIP_INTERACTION_ROTATE +#define ELM_FLIP_INTERACTION_CUBE EFL_UI_FLIP_INTERACTION_CUBE +#define ELM_FLIP_INTERACTION_PAGE EFL_UI_FLIP_INTERACTION_PAGE + + +typedef Efl_Ui_Flip_Mode Elm_Flip_Mode; + +#define ELM_FLIP_ROTATE_Y_CENTER_AXIS EFL_UI_FLIP_ROTATE_Y_CENTER_AXIS +#define ELM_FLIP_ROTATE_X_CENTER_AXIS EFL_UI_FLIP_ROTATE_X_CENTER_AXIS +#define ELM_FLIP_ROTATE_XZ_CENTER_AXIS EFL_UI_FLIP_ROTATE_XZ_CENTER_AXIS +#define ELM_FLIP_ROTATE_YZ_CENTER_AXIS EFL_UI_FLIP_ROTATE_YZ_CENTER_AXIS +#define ELM_FLIP_CUBE_LEFT EFL_UI_FLIP_CUBE_LEFT +#define ELM_FLIP_CUBE_RIGHT EFL_UI_FLIP_CUBE_RIGHT +#define ELM_FLIP_CUBE_UP EFL_UI_FLIP_CUBE_UP +#define ELM_FLIP_CUBE_DOWN EFL_UI_FLIP_CUBE_DOWN +#define ELM_FLIP_PAGE_LEFT EFL_UI_FLIP_PAGE_LEFT +#define ELM_FLIP_PAGE_RIGHT EFL_UI_FLIP_PAGE_RIGHT +#define ELM_FLIP_PAGE_UP EFL_UI_FLIP_PAGE_UP +#define ELM_FLIP_PAGE_DOWN EFL_UI_FLIP_PAGE_DOWN + +typedef enum +{ + ELM_FLIP_DIRECTION_UP = 0, /** Allows interaction with the top of the widget + */ + ELM_FLIP_DIRECTION_DOWN, /** Allows interaction with the bottom of the widget + */ + ELM_FLIP_DIRECTION_LEFT, /** Allows interaction with the left portion of the + * widget */ + ELM_FLIP_DIRECTION_RIGHT /** Allows interaction with the right portion of the + * widget */ +} Elm_Flip_Direction; + +/** + * @brief Set the amount of the flip that is sensitive to interactive flip. + * + * Set the amount of the flip that is sensitive to interactive flip, with 0 + * representing no area in the flip and 1 representing the entire flip. There + * is however a consideration to be made in that the area will never be smaller + * than the finger size set (as set in your Elementary configuration), and + * dragging must always start from the opposite half of the flip (eg. right + * half of the flip when dragging to the left). + * + * @note The @c dir parameter is not actually related to the direction of the + * drag, it only refers to the area in the flip where interaction can occur + * (top, bottom, left, right). + * + * Negative values of @c hitsize will disable this hit area. + * + * See also @ref elm_flip_interaction_set. + * + * @param[in] hitsize The amount of that dimension (0.0 to 1.0) to use. + * + * @ingroup Efl_Ui_Flip + */ +EAPI void elm_flip_interaction_direction_hitsize_set(Efl_Ui_Flip *obj, Elm_Flip_Direction dir, double hitsize); + +/** + * @brief Get the amount of the flip that is sensitive to interactive flip. + * + * @param[in] dir The direction to check. + * + * @return The size set for that direction. + * + * @ingroup Efl_Ui_Flip + */ +EAPI double elm_flip_interaction_direction_hitsize_get(Efl_Ui_Flip *obj, Elm_Flip_Direction dir); + +/** + * @brief Set which directions of the flip respond to interactive flip + * + * By default all directions are disabled, so you may want to enable the + * desired directions for flipping if you need interactive flipping. You must + * call this function once for each direction that should be enabled. + * + * You can also set the appropriate hit area size by calling + * @ref efl_ui_flip_interaction_direction_hitsize_set. By default, a minimum + * hit area will be created on the opposite edge of the flip. + * + * @param[in] enabled If that direction is enabled or not. + * + * @ingroup Efl_Ui_Flip + */ +EOAPI void elm_flip_interaction_direction_enabled_set(Efl_Ui_Flip *obj, Elm_Flip_Direction dir, Eina_Bool enabled); + +/** + * @brief Get the enabled state of that flip direction. + * + * @param[in] dir The direction to check. + * + * @return If that direction is enabled or not. + * + * @ingroup Efl_Ui_Flip + */ +EOAPI Eina_Bool elm_flip_interaction_direction_enabled_get(Efl_Ui_Flip *obj, Elm_Flip_Direction dir); + +/** + * @brief Add a new flip to the parent + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Elm_Flip + */ +EAPI Evas_Object *elm_flip_add(Evas_Object *parent); + +/** + * @brief Set flip perspective + * + * @param obj The flip object + * @param foc The coordinate to set the focus on + * @param x The X coordinate + * @param y The Y coordinate + * + * @warning This function currently does nothing. + * + * @ingroup Elm_Flip + */ +EAPI void elm_flip_perspective_set(Evas_Object *obj, Evas_Coord foc, Evas_Coord x, Evas_Coord y); + +#include "efl_ui_flip.eo.legacy.h" diff --git a/src/lib/elementary/elm_widget_flip.h b/src/lib/elementary/efl_ui_widget_flip.h similarity index 80% rename from src/lib/elementary/elm_widget_flip.h rename to src/lib/elementary/efl_ui_widget_flip.h index c1140c7..616214f 100644 --- a/src/lib/elementary/elm_widget_flip.h +++ b/src/lib/elementary/efl_ui_widget_flip.h @@ -1,5 +1,5 @@ -#ifndef ELM_WIDGET_FLIP_H -#define ELM_WIDGET_FLIP_H +#ifndef EFL_UI_WIDGET_FLIP_H +#define EFL_UI_WIDGET_FLIP_H #include "Elementary.h" @@ -25,8 +25,8 @@ typedef struct _Slice Slice; /** * Base widget smart data extended with flip instance data. */ -typedef struct _Elm_Flip_Data Elm_Flip_Data; -struct _Elm_Flip_Data +typedef struct _Efl_Ui_Flip_Data Efl_Ui_Flip_Data; +struct _Efl_Ui_Flip_Data { Evas_Object *obj; Evas_Object *clip; @@ -36,11 +36,13 @@ struct _Elm_Flip_Data Evas_Object *content, *clip; } front, back; + Eina_List *content_list; + Ecore_Animator *animator; double start, len; Ecore_Job *job; Evas_Coord down_x, down_y, x, y, ox, oy, w, h; - Elm_Flip_Interaction intmode; + Efl_Ui_Flip_Interaction intmode; Elm_Flip_Mode mode; int dir; double dir_hitsize[4]; @@ -81,11 +83,11 @@ struct _Vertex3 * @} */ -#define ELM_FLIP_DATA_GET(o, sd) \ - Elm_Flip_Data * sd = eo_data_scope_get(o, ELM_FLIP_CLASS) +#define EFL_UI_FLIP_DATA_GET(o, sd) \ + Efl_Ui_Flip_Data * sd = eo_data_scope_get(o, EFL_UI_FLIP_CLASS) -#define ELM_FLIP_DATA_GET_OR_RETURN(o, ptr) \ - ELM_FLIP_DATA_GET(o, ptr); \ +#define EFL_UI_FLIP_DATA_GET_OR_RETURN(o, ptr) \ + EFL_UI_FLIP_DATA_GET(o, ptr); \ if (EINA_UNLIKELY(!ptr)) \ { \ CRI("No widget data for object %p (%s)", \ @@ -93,8 +95,8 @@ struct _Vertex3 return; \ } -#define ELM_FLIP_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ - ELM_FLIP_DATA_GET(o, ptr); \ +#define EFL_UI_FLIP_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ + EFL_UI_FLIP_DATA_GET(o, ptr); \ if (EINA_UNLIKELY(!ptr)) \ { \ CRI("No widget data for object %p (%s)", \ @@ -103,7 +105,7 @@ struct _Vertex3 } #define ELM_FLIP_CHECK(obj) \ - if (EINA_UNLIKELY(!eo_isa((obj), ELM_FLIP_CLASS))) \ + if (EINA_UNLIKELY(!eo_isa((obj), EFL_UI_FLIP_CLASS))) \ return #endif diff --git a/src/lib/elementary/elm_flip.h b/src/lib/elementary/elm_flip.h index 3bdbdd8..2e20296 100644 --- a/src/lib/elementary/elm_flip.h +++ b/src/lib/elementary/elm_flip.h @@ -39,10 +39,10 @@ */ #ifdef EFL_EO_API_SUPPORT -#include "elm_flip_eo.h" +#include "efl_ui_flip.eo.h" #endif #ifndef EFL_NOLEGACY_API_SUPPORT -#include "elm_flip_legacy.h" +#include "efl_ui_flip_legacy.h" #endif /** * @} diff --git a/src/lib/elementary/elm_flip_eo.h b/src/lib/elementary/elm_flip_eo.h deleted file mode 100644 index 171f8ad..0000000 --- a/src/lib/elementary/elm_flip_eo.h +++ /dev/null @@ -1 +0,0 @@ -#include "elm_flip.eo.h" \ No newline at end of file diff --git a/src/lib/elementary/elm_flip_legacy.h b/src/lib/elementary/elm_flip_legacy.h deleted file mode 100644 index 23f3b78..0000000 --- a/src/lib/elementary/elm_flip_legacy.h +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @brief Add a new flip to the parent - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - * - * @ingroup Elm_Flip - */ -EAPI Evas_Object *elm_flip_add(Evas_Object *parent); - -/** - * @brief Set flip perspective - * - * @param obj The flip object - * @param foc The coordinate to set the focus on - * @param x The X coordinate - * @param y The Y coordinate - * - * @warning This function currently does nothing. - * - * @ingroup Elm_Flip - */ -EAPI void elm_flip_perspective_set(Evas_Object *obj, Evas_Coord foc, Evas_Coord x, Evas_Coord y); - -#include "elm_flip.eo.legacy.h" --
