From 685299c952bc14e76deab9d2301c32b24fae65eb Mon Sep 17 00:00:00 2001 From: Daniel Zaoui Date: Sun, 30 Mar 2014 11:51:39 +0300 Subject: Eolian: Integration of Naviframe --- src/lib/Makefile.am | 4 + src/lib/elc_naviframe.c | 575 +++++++++-------------------------------- src/lib/elc_naviframe.eo | 289 +++++++++++++++++++++ src/lib/elc_naviframe_eo.h | 3 + src/lib/elm_widget_naviframe.h | 6 +- 5 files changed, 422 insertions(+), 455 deletions(-) create mode 100644 src/lib/elc_naviframe.eo diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index de387b8e4..6dab80314 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -623,6 +623,8 @@ BUILT_SOURCES = \ elm_menu.eo.h \ elc_multibuttonentry.eo.c \ elc_multibuttonentry.eo.h \ + elc_naviframe.eo.c \ + elc_naviframe.eo.h \ elm_panel.eo.c \ elm_panel.eo.h \ elm_mapbuf.eo.c \ @@ -730,6 +732,7 @@ EXTRA_DIST += \ elm_map.eo \ elm_menu.eo \ elc_multibuttonentry.eo \ + elc_naviframe.eo \ elm_panel.eo \ elm_mapbuf.eo \ elm_notify.eo \ @@ -809,6 +812,7 @@ nodist_includesunstable_HEADERS = \ elm_map.eo.h \ elm_menu.eo.h \ elc_multibuttonentry.eo.h \ + elc_naviframe.eo.h \ elm_panel.eo.h \ elm_mapbuf.eo.h \ elm_notify.eo.h \ diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index ce09955c2..e422306a8 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -7,8 +7,6 @@ #include "elm_widget_naviframe.h" #include "elm_widget_container.h" -EAPI Eo_Op ELM_OBJ_NAVIFRAME_BASE_ID = EO_NOOP; - #define MY_CLASS ELM_OBJ_NAVIFRAME_CLASS #define MY_CLASS_NAME "Elm_Naviframe" @@ -69,11 +67,9 @@ _prev_page_focus_recover(Elm_Naviframe_Item *it) } } -static void -_elm_naviframe_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_widget_translate(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Elm_Naviframe_Smart_Data *sd = _pd; Elm_Naviframe_Item *it; EINA_INLIST_FOREACH(sd->stack, it) @@ -81,7 +77,7 @@ _elm_naviframe_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list) eo_do_super(obj, MY_CLASS, elm_obj_widget_translate(NULL)); - if (ret) *ret = EINA_TRUE; + return EINA_TRUE; } static void @@ -336,12 +332,10 @@ _item_title_enabled_update(Elm_Naviframe_Item *nit, Eina_Bool transition) } } -static void -_elm_naviframe_smart_theme(Eo *obj, void *_pd, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_widget_theme_apply(Eo *obj, Elc_Naviframe_Data *sd) { Elm_Naviframe_Item *it; - Elm_Naviframe_Smart_Data *sd = _pd; - Eina_Bool *ret = va_arg(*list, Eina_Bool *); const char *style, *sstyle; eo_do(obj, elm_obj_widget_style_get(&style)); @@ -356,7 +350,7 @@ _elm_naviframe_smart_theme(Eo *obj, void *_pd, va_list *list) } elm_layout_sizing_eval(obj); - if (ret) *ret = EINA_TRUE; + return EINA_TRUE; } static char * @@ -869,15 +863,13 @@ _item_signal_emit_hook(Elm_Object_Item *it, elm_object_signal_emit(VIEW(it), emission, source); } -static void -_elm_naviframe_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elc_naviframe_elm_layout_sizing_eval(Eo *obj, Elc_Naviframe_Data *sd) { Evas_Coord minw = -1, minh = -1; Elm_Naviframe_Item *it, *top; Evas_Coord x, y, w, h; - Elm_Naviframe_Smart_Data *sd = _pd; - if (sd->on_deletion) return; if (!sd->stack) return; @@ -954,14 +946,9 @@ _back_btn_new(Evas_Object *obj, const char *title_label) return btn; } -static void -_elm_naviframe_smart_signal_emit(Eo *obj, void *_pd, va_list *list) +EOLIAN static void +_elc_naviframe_elm_layout_signal_emit(Eo *obj, Elc_Naviframe_Data *sd, const char *emission, const char *source) { - Elm_Naviframe_Smart_Data *sd = _pd; - - const char *emission = va_arg(*list, const char *); - const char *source = va_arg(*list, const char *); - if (!sd->stack) return; eo_do_super(obj, MY_CLASS, elm_obj_layout_signal_emit(emission, source)); @@ -969,85 +956,63 @@ _elm_naviframe_smart_signal_emit(Eo *obj, void *_pd, va_list *list) /* content/text smart functions proxying things to the top item, which * is the resize object of the layout */ -static void -_elm_naviframe_smart_text_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_layout_text_set(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part, const char *label) { Elm_Object_Item *it; - const char *part = va_arg(*list, const char *); - const char *label = va_arg(*list, const char *); - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Eina_Bool int_ret = EINA_FALSE; - if (ret) *ret = EINA_FALSE; - it = elm_naviframe_top_item_get(obj); - if (!it) return; + if (!it) return EINA_FALSE; elm_object_item_part_text_set(it, part, label); - int_ret = !strcmp(elm_object_item_part_text_get(it, part), label); - - if (ret) *ret = int_ret; + return !strcmp(elm_object_item_part_text_get(it, part), label); } -static void -_elm_naviframe_smart_text_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static const char* +_elc_naviframe_elm_layout_text_get(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part) { Elm_Object_Item *it = elm_naviframe_top_item_get(obj); - const char *part = va_arg(*list, const char *); - const char **text = va_arg(*list, const char **); - *text = NULL; + if (!it) return NULL; - if (!it) return; - - *text = elm_object_item_part_text_get(it, part); + return elm_object_item_part_text_get(it, part); } /* we have to keep a "manual" set here because of the callbacks on the * children */ -static void -_elm_naviframe_smart_content_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_container_content_set(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part, Evas_Object *content) { Elm_Object_Item *it; - const char *part = va_arg(*list, const char *); - Evas_Object *content = va_arg(*list, Evas_Object *); - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - if (ret) *ret = EINA_FALSE; - it = elm_naviframe_top_item_get(obj); - if (!it) return; + if (!it) return EINA_FALSE; elm_object_item_part_content_set(it, part, content); if(content == elm_object_item_part_content_get(it, part)) - if (ret) *ret = EINA_TRUE; + return EINA_TRUE; + + return EINA_FALSE; } -static void -_elm_naviframe_smart_content_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Evas_Object* +_elc_naviframe_elm_container_content_get(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part) { Elm_Object_Item *it = elm_naviframe_top_item_get(obj); - const char *part = va_arg(*list, const char *); - Evas_Object **content = va_arg(*list, Evas_Object **); - *content = NULL; - - if (!it) return; + if (!it) return NULL; - *content = elm_object_item_part_content_get(it, part); + return elm_object_item_part_content_get(it, part); } -static void -_elm_naviframe_smart_content_unset(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Evas_Object* +_elc_naviframe_elm_container_content_unset(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part) { Elm_Object_Item *it = elm_naviframe_top_item_get(obj); - const char *part = va_arg(*list, const char *); - Evas_Object **content = va_arg(*list, Evas_Object **); - *content = NULL; - if (!it) return; + if (!it) return NULL; - *content = elm_object_item_part_content_unset(it, part); + return elm_object_item_part_content_unset(it, part); } static void @@ -1261,8 +1226,8 @@ _on_obj_size_hints_changed(void *data EINA_UNUSED, Evas *e EINA_UNUSED, _item_dispmode_set(it, dispmode); } -static void -_elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_widget_focus_next(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, Elm_Focus_Direction dir, Evas_Object **next) { Evas_Object *ao; @@ -1270,10 +1235,6 @@ _elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list) Elm_Naviframe_Item *top_it; void *(*list_data_get)(const Eina_List *list); - Elm_Focus_Direction dir = va_arg(*list, Elm_Focus_Direction); - Evas_Object **next = va_arg(*list, Evas_Object **); - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - if (ret) *ret = EINA_FALSE; Eina_Bool int_ret; top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj); @@ -1292,32 +1253,26 @@ _elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list) int_ret = elm_widget_focus_list_next_get(obj, l, list_data_get, dir, next); eina_list_free(l); - if (ret) *ret = int_ret; end: - if (ret && !*ret) + if (!int_ret) { *next = obj; - *ret = !elm_widget_focus_get(obj); + int_ret = !elm_widget_focus_get(obj); } + + return int_ret; } -static void -_elm_naviframe_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd EINA_UNUSED) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - *ret = EINA_TRUE; + return EINA_TRUE; } -static void -_elm_naviframe_smart_focus_direction(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) -{ - Evas_Object *base = va_arg(*list, Evas_Object *); - double degree = va_arg(*list, double); - Evas_Object **direction = va_arg(*list, Evas_Object **); - double *weight = va_arg(*list, double *); - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - if (ret) *ret = EINA_FALSE; +EOLIAN static Eina_Bool +_elc_naviframe_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd EINA_UNUSED, const Evas_Object *base, double degree, Evas_Object **direction, double *weight) +{ Eina_Bool int_ret; Eina_List *l = NULL; @@ -1325,7 +1280,7 @@ _elm_naviframe_smart_focus_direction(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, void *(*list_data_get)(const Eina_List *list); top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj); - if (!top_it) return; + if (!top_it) return EINA_FALSE; list_data_get = eina_list_data_get; @@ -1334,14 +1289,14 @@ _elm_naviframe_smart_focus_direction(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, int_ret = elm_widget_focus_list_direction_get (obj, base, l, list_data_get, degree, direction, weight); - if (ret) *ret = int_ret; eina_list_free(l); + + return int_ret; } -static void -_elm_naviframe_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elc_naviframe_evas_smart_add(Eo *obj, Elc_Naviframe_Data *priv) { - Elm_Naviframe_Smart_Data *priv = _pd; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); @@ -1379,13 +1334,11 @@ _pop_transition_cb(void *data) return ECORE_CALLBACK_CANCEL; } -static void -_elm_naviframe_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elc_naviframe_evas_smart_del(Eo *obj, Elc_Naviframe_Data *sd) { Elm_Naviframe_Item *it; - Elm_Naviframe_Smart_Data *sd = _pd; - sd->on_deletion = EINA_TRUE; while (sd->stack) @@ -1407,8 +1360,8 @@ _elm_naviframe_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) } //Show only the top item view -static void -_elm_naviframe_smart_show(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) +EOLIAN static void +_elc_naviframe_evas_smart_show(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED) { Elm_Naviframe_Item *top; @@ -1417,42 +1370,36 @@ _elm_naviframe_smart_show(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNU evas_object_show(VIEW(top)); } -static void -_elm_naviframe_smart_event(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_widget_event(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, Evas_Object *src, Evas_Callback_Type type, void *event_info) { - Evas_Object *src = va_arg(*list, Evas_Object *); - Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type); - Evas_Event_Key_Down *ev = va_arg(*list, Evas_Event_Key_Down *); - Eina_Bool *ret = va_arg(*list, Eina_Bool *); Elm_Naviframe_Item *it; - - if (ret) *ret = EINA_FALSE; (void)src; + Evas_Event_Key_Down *ev = event_info; - if (elm_widget_disabled_get(obj)) return; - if (type != EVAS_CALLBACK_KEY_DOWN) return; - if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; - if (strcmp(ev->key, "BackSpace")) return; + if (elm_widget_disabled_get(obj)) return EINA_FALSE; + if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE; + if (strcmp(ev->key, "BackSpace")) return EINA_FALSE; eo_do(obj, elm_obj_naviframe_top_item_get((Elm_Object_Item **)&it)); - if (!it) return; + if (!it) return EINA_FALSE; ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - if (ret) *ret = EINA_TRUE; //FIXME: Replace this below code to elm_naviframe_item_pop() at elm 2.0. ///Leave for compatibility. if (it->title_prev_btn) evas_object_smart_callback_call(it->title_prev_btn, SIG_CLICKED, NULL); + + return EINA_TRUE; } -static void -_elm_naviframe_smart_access(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static void +_elc_naviframe_elm_widget_access(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool is_access) { - Elm_Naviframe_Smart_Data *sd = _pd; Elm_Naviframe_Item *it; - Eina_Bool is_access = va_arg(*list, int); EINA_INLIST_FOREACH(sd->stack, it) _access_obj_process(it, is_access); } @@ -1532,8 +1479,8 @@ elm_naviframe_add(Evas_Object *parent) return obj; } -static void -_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) +EOLIAN static void +_elc_naviframe_eo_base_constructor(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED) { eo_do_super(obj, MY_CLASS, eo_constructor()); eo_do(obj, @@ -1541,71 +1488,25 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL)); } -EAPI Elm_Object_Item * -elm_naviframe_item_push(Evas_Object *obj, - const char *title_label, - Evas_Object *prev_btn, - Evas_Object *next_btn, - Evas_Object *content, - const char *item_style) -{ - ELM_NAVIFRAME_CHECK(obj) NULL; - Elm_Object_Item *ret = NULL; - eo_do(obj, elm_obj_naviframe_item_push(title_label, prev_btn, next_btn, content, item_style, &ret)); - return ret; -} - -static void -_item_push(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Elm_Object_Item* +_elc_naviframe_item_push(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) { Elm_Naviframe_Item *top_item, *item; - const char *title_label = va_arg(*list, const char *); - Evas_Object *prev_btn = va_arg(*list, Evas_Object *); - Evas_Object *next_btn = va_arg(*list, Evas_Object *); - Evas_Object *content = va_arg(*list, Evas_Object *); - const char *item_style = va_arg(*list, const char *); - Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **); - *ret = NULL; top_item = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj); item = _item_new(obj, top_item, title_label, prev_btn, next_btn, content, item_style); - if (!item) return; + if (!item) return NULL; _item_push_helper(item); - *ret = (Elm_Object_Item *)item; + return (Elm_Object_Item *)item; } -EAPI Elm_Object_Item * -elm_naviframe_item_insert_before(Evas_Object *obj, - Elm_Object_Item *before, - const char *title_label, - Evas_Object *prev_btn, - Evas_Object *next_btn, - Evas_Object *content, - const char *item_style) -{ - ELM_NAVIFRAME_CHECK(obj) NULL; - Elm_Object_Item *ret = NULL; - eo_do(obj, elm_obj_naviframe_item_insert_before(before, title_label, prev_btn, next_btn, content, item_style, &ret)); - return ret; -} - -static void -_item_insert_before(Eo *obj, void *_pd, va_list *list) +EOLIAN static Elm_Object_Item* +_elc_naviframe_item_insert_before(Eo *obj, Elc_Naviframe_Data *sd, Elm_Object_Item *before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) { Elm_Naviframe_Item *it, *prev_it = NULL; - Elm_Object_Item *before = va_arg(*list, Elm_Object_Item *); - const char *title_label = va_arg(*list, const char *); - Evas_Object *prev_btn = va_arg(*list, Evas_Object *); - Evas_Object *next_btn = va_arg(*list, Evas_Object *); - Evas_Object *content = va_arg(*list, Evas_Object *); - const char *item_style = va_arg(*list, const char *); - Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **); - *ret = NULL; - - ELM_NAVIFRAME_ITEM_CHECK(before); - Elm_Naviframe_Smart_Data *sd = _pd; + ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(before, NULL); it = (Elm_Naviframe_Item *)before; if (EINA_INLIST_GET(it)->prev) @@ -1613,7 +1514,7 @@ _item_insert_before(Eo *obj, void *_pd, va_list *list) Elm_Naviframe_Item); it = _item_new(obj, prev_it, title_label, prev_btn, next_btn, content, item_style); - if (!it) return; + if (!it) return NULL; sd->stack = eina_inlist_prepend_relative (sd->stack, EINA_INLIST_GET(it), @@ -1623,45 +1524,20 @@ _item_insert_before(Eo *obj, void *_pd, va_list *list) elm_layout_sizing_eval(obj); - *ret = (Elm_Object_Item *)it; + return (Elm_Object_Item *)it; } -EAPI Elm_Object_Item * -elm_naviframe_item_insert_after(Evas_Object *obj, - Elm_Object_Item *after, - const char *title_label, - Evas_Object *prev_btn, - Evas_Object *next_btn, - Evas_Object *content, - const char *item_style) -{ - ELM_NAVIFRAME_CHECK(obj) NULL; - Elm_Object_Item *ret = NULL; - eo_do(obj, elm_obj_naviframe_item_insert_after(after, title_label, prev_btn, next_btn, content, item_style, &ret)); - return ret; -} - -static void -_item_insert_after(Eo *obj, void *_pd, va_list *list) +EOLIAN static Elm_Object_Item* +_elc_naviframe_item_insert_after(Eo *obj, Elc_Naviframe_Data *sd, Elm_Object_Item *after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) { Elm_Naviframe_Item *it; Eina_Bool top_inserted = EINA_FALSE; - Elm_Object_Item *after = va_arg(*list, Elm_Object_Item *); - const char *title_label = va_arg(*list, const char *); - Evas_Object *prev_btn = va_arg(*list, Evas_Object *); - Evas_Object *next_btn = va_arg(*list, Evas_Object *); - Evas_Object *content = va_arg(*list, Evas_Object *); - const char *item_style = va_arg(*list, const char *); - Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **); - *ret = NULL; - - ELM_NAVIFRAME_ITEM_CHECK(after); - Elm_Naviframe_Smart_Data *sd = _pd; + ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(after, NULL); it = _item_new(obj, (Elm_Naviframe_Item *)after, title_label, prev_btn, next_btn, content, item_style); - if (!it) return; + if (!it) return NULL; if (elm_naviframe_top_item_get(obj) == after) top_inserted = EINA_TRUE; @@ -1686,35 +1562,21 @@ _item_insert_after(Eo *obj, void *_pd, va_list *list) elm_layout_sizing_eval(obj); - *ret = (Elm_Object_Item *)it; -} - -EAPI Evas_Object * -elm_naviframe_item_pop(Evas_Object *obj) -{ - ELM_NAVIFRAME_CHECK(obj) NULL; - Evas_Object *ret = NULL; - eo_do(obj, elm_obj_naviframe_item_pop(&ret)); - return ret; + return (Elm_Object_Item *)it; } -static void -_item_pop(Eo *obj, void *_pd, va_list *list) +EOLIAN static Evas_Object* +_elc_naviframe_item_pop(Eo *obj, Elc_Naviframe_Data *sd) { Elm_Naviframe_Item *it, *prev_it = NULL; Evas_Object *content = NULL; - Evas_Object **ret = va_arg(*list, Evas_Object **); - *ret = NULL; - - Elm_Naviframe_Smart_Data *sd = _pd; - - if (sd->freeze_events && sd->popping) return; + if (sd->freeze_events && sd->popping) return NULL; it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj); - if (!it) return; + if (!it) return NULL; - if (it->popping) return; + if (it->popping) return NULL; it->popping = EINA_TRUE; evas_object_ref(obj); @@ -1729,7 +1591,7 @@ _item_pop(Eo *obj, void *_pd, va_list *list) else it->popping = EINA_FALSE; evas_object_unref(obj); - return; + return NULL; } it->ref--; } @@ -1774,7 +1636,7 @@ _item_pop(Eo *obj, void *_pd, va_list *list) else elm_widget_item_del(it); - *ret = content; + return content; } EAPI void @@ -1829,23 +1691,11 @@ elm_naviframe_item_promote(Elm_Object_Item *it) _item_push_helper(nit); } -EAPI void -elm_naviframe_item_simple_promote(Evas_Object *obj, - Evas_Object *content) -{ - ELM_NAVIFRAME_CHECK(obj); - eo_do(obj, elm_obj_naviframe_item_simple_promote(content)); -} - -static void -_item_simple_promote(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elc_naviframe_item_simple_promote(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Evas_Object *content) { Elm_Naviframe_Item *itr; - Evas_Object *content = va_arg(*list, Evas_Object *); - - Elm_Naviframe_Smart_Data *sd = _pd; - EINA_INLIST_FOREACH(sd->stack, itr) { if (elm_object_item_content_get((Elm_Object_Item *)itr) == content) @@ -1856,80 +1706,31 @@ _item_simple_promote(Eo *obj EINA_UNUSED, void *_pd, va_list *list) } } -EAPI void -elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, - Eina_Bool preserve) -{ - ELM_NAVIFRAME_CHECK(obj); - eo_do(obj, elm_obj_naviframe_content_preserve_on_pop_set(preserve)); -} - -static void -_content_preserve_on_pop_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elc_naviframe_content_preserve_on_pop_set(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool preserve) { - Eina_Bool preserve = va_arg(*list, int); - Elm_Naviframe_Smart_Data *sd = _pd; - sd->preserve = !!preserve; } -EAPI Eina_Bool -elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj) -{ - ELM_NAVIFRAME_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - eo_do((Eo *) obj, elm_obj_naviframe_content_preserve_on_pop_get(&ret)); - return ret; -} - -static void -_content_preserve_on_pop_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_content_preserve_on_pop_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Elm_Naviframe_Smart_Data *sd = _pd; - - *ret = sd->preserve; + return sd->preserve; } -EAPI Elm_Object_Item * -elm_naviframe_top_item_get(const Evas_Object *obj) +EOLIAN static Elm_Object_Item* +_elc_naviframe_top_item_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd) { - ELM_NAVIFRAME_CHECK(obj) NULL; - Elm_Object_Item *ret = NULL; - eo_do((Eo *) obj, elm_obj_naviframe_top_item_get(&ret)); - return ret; -} - -static void -_top_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **); - *ret = NULL; - Elm_Naviframe_Smart_Data *sd = _pd; - - if (!sd->stack) return; - *ret = (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET + if (!sd->stack) return NULL; + return (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET (sd->stack->last, Elm_Naviframe_Item)); } -EAPI Elm_Object_Item * -elm_naviframe_bottom_item_get(const Evas_Object *obj) +EOLIAN static Elm_Object_Item* +_elc_naviframe_bottom_item_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd) { - ELM_NAVIFRAME_CHECK(obj) NULL; - Elm_Object_Item *ret = NULL; - eo_do((Eo *) obj, elm_obj_naviframe_bottom_item_get(&ret)); - return ret; -} - -static void -_bottom_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **); - *ret = NULL; - Elm_Naviframe_Smart_Data *sd = _pd; - - if (!sd->stack) return; - *ret = (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET + if (!sd->stack) return NULL; + return (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET (sd->stack, Elm_Naviframe_Item)); } @@ -2013,184 +1814,54 @@ elm_naviframe_item_pop_cb_set(Elm_Object_Item *it, Elm_Naviframe_Item_Pop_Cb fun nit->pop_data = data; } -EAPI void -elm_naviframe_prev_btn_auto_pushed_set(Evas_Object *obj, - Eina_Bool auto_pushed) -{ - ELM_NAVIFRAME_CHECK(obj); - eo_do(obj, elm_obj_naviframe_prev_btn_auto_pushed_set(auto_pushed)); -} - -static void -_prev_btn_auto_pushed_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elc_naviframe_prev_btn_auto_pushed_set(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool auto_pushed) { - Eina_Bool auto_pushed = va_arg(*list, int); - Elm_Naviframe_Smart_Data *sd = _pd; - sd->auto_pushed = !!auto_pushed; } -EAPI Eina_Bool -elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj) -{ - ELM_NAVIFRAME_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - eo_do((Eo *) obj, elm_obj_naviframe_prev_btn_auto_pushed_get(&ret)); - return ret; -} - -static void -_prev_btn_auto_pushed_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_prev_btn_auto_pushed_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Elm_Naviframe_Smart_Data *sd = _pd; - - *ret = sd->auto_pushed; + return sd->auto_pushed; } -EAPI Eina_List * -elm_naviframe_items_get(const Evas_Object *obj) +EOLIAN static Eina_List* +_elc_naviframe_items_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd) { - ELM_NAVIFRAME_CHECK(obj) NULL; - Eina_List *ret; - eo_do((Eo *) obj, elm_obj_naviframe_items_get(&ret)); - return ret; -} - -static void -_items_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Eina_List **ret = va_arg(*list, Eina_List **); - *ret = NULL; + Eina_List *ret = NULL; Elm_Naviframe_Item *itr; - Elm_Naviframe_Smart_Data *sd = _pd; - EINA_INLIST_FOREACH(sd->stack, itr) - *ret = eina_list_append(*ret, itr); -} + ret = eina_list_append(ret, itr); -EAPI void -elm_naviframe_event_enabled_set(Evas_Object *obj, - Eina_Bool enabled) -{ - ELM_NAVIFRAME_CHECK(obj); - eo_do(obj, elm_obj_naviframe_event_enabled_set(enabled)); + return ret; } -static void -_event_enabled_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elc_naviframe_event_enabled_set(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool enabled) { - Eina_Bool enabled = va_arg(*list, int); - Elm_Naviframe_Smart_Data *sd = _pd; - enabled = !!enabled; if (sd->freeze_events == !enabled) return; sd->freeze_events = !enabled; } -EAPI Eina_Bool -elm_naviframe_event_enabled_get(const Evas_Object *obj) +EOLIAN static Eina_Bool +_elc_naviframe_event_enabled_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd) { - ELM_NAVIFRAME_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - eo_do((Eo *) obj, elm_obj_naviframe_event_enabled_get(&ret)); - return ret; + return !sd->freeze_events; } -static void -_event_enabled_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static Eina_Bool +_elc_naviframe_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd EINA_UNUSED) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Elm_Naviframe_Smart_Data *sd = _pd; - - *ret = !sd->freeze_events; + return EINA_TRUE; } static void -_elm_naviframe_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) +_elc_naviframe_class_constructor(Eo_Class *klass) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - *ret = EINA_TRUE; -} - -static void -_class_constructor(Eo_Class *klass) -{ - const Eo_Op_Func_Description func_desc[] = { - EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor), - - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_naviframe_smart_add), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_naviframe_smart_del), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SHOW), _elm_naviframe_smart_show), - - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_naviframe_smart_focus_next_manager_is), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT), _elm_naviframe_smart_focus_next), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_naviframe_smart_focus_direction_manager_is), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION), _elm_naviframe_smart_focus_direction), - - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_naviframe_smart_theme), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_TRANSLATE), _elm_naviframe_smart_translate), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ACCESS), _elm_naviframe_smart_access), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_naviframe_smart_event), - - EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_SET), _elm_naviframe_smart_content_set), - EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_GET), _elm_naviframe_smart_content_get), - EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_UNSET), _elm_naviframe_smart_content_unset), - - EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIGNAL_EMIT), _elm_naviframe_smart_signal_emit), - EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_SET), _elm_naviframe_smart_text_set), - EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_GET), _elm_naviframe_smart_text_get), - EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_naviframe_smart_sizing_eval), - - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_PUSH), _item_push), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_BEFORE), _item_insert_before), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_AFTER), _item_insert_after), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_POP), _item_pop), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_SIMPLE_PROMOTE), _item_simple_promote), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_SET), _content_preserve_on_pop_set), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_GET), _content_preserve_on_pop_get), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_TOP_ITEM_GET), _top_item_get), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_BOTTOM_ITEM_GET), _bottom_item_get), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_SET), _prev_btn_auto_pushed_set), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_GET), _prev_btn_auto_pushed_get), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEMS_GET), _items_get), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_SET), _event_enabled_set), - EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_GET), _event_enabled_get), - EO_OP_FUNC_SENTINEL - }; - eo_class_funcs_set(klass, func_desc); - evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } -static const -Eo_Op_Description op_desc[] = { - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_PUSH, "Push a new item to the top of the naviframe stack (and show it)."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_BEFORE, "Insert a new item into the naviframe before item before."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_AFTER, "Insert a new item into the naviframe after item after."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_POP, "Pop an item that is on top of the stack."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_SIMPLE_PROMOTE, "Simple version of item_promote."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_SET, "preserve the content objects when items are popped."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_GET, "Get a value whether preserve mode is enabled or not."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_TOP_ITEM_GET, "Get a top item on the naviframe stack."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_BOTTOM_ITEM_GET, "Get a bottom item on the naviframe stack."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_SET, "Set creating prev button automatically or not."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_GET, "Get a value whether prev button(back button) will be auto pushed or not."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEMS_GET, "Get a list of all the naviframe items."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_SET, "Set the event enabled when pushing/popping items."), - EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_GET, "Get the value of event enabled status."), - EO_OP_DESCRIPTION_SENTINEL -}; - -static const Eo_Class_Description class_desc = { - EO_VERSION, - MY_CLASS_NAME, - EO_CLASS_TYPE_REGULAR, - EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_NAVIFRAME_BASE_ID, op_desc, ELM_OBJ_NAVIFRAME_SUB_ID_LAST), - NULL, - sizeof(Elm_Naviframe_Smart_Data), - _class_constructor, - NULL -}; -EO_DEFINE_CLASS(elm_obj_naviframe_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL); +#include "elc_naviframe.eo.c" diff --git a/src/lib/elc_naviframe.eo b/src/lib/elc_naviframe.eo new file mode 100644 index 000000000..51602903c --- /dev/null +++ b/src/lib/elc_naviframe.eo @@ -0,0 +1,289 @@ +class Elc_Naviframe (Elm_Layout) +{ + legacy_prefix: elm_naviframe; + eo_prefix: elm_obj_naviframe; + properties { + event_enabled { + set { + /*@ + @brief Set the event enabled when pushing/popping items + + If @p enabled is @c EINA_TRUE, the contents of the naviframe item will + receives events from mouse and keyboard during view changing such as + item push/pop. + + @warning Events will be blocked by calling evas_object_freeze_events_set() + internally. So don't call the API whiling pushing/popping items. + + @see elm_naviframe_event_enabled_get() + @see evas_object_freeze_events_set() + + @ingroup Naviframe */ + } + get { + /*@ + @brief Get the value of event enabled status. + + @return @c EINA_TRUE, when event is enabled + + @see elm_naviframe_event_enabled_set() + + @ingroup Naviframe */ + } + values { + Eina_Bool enabled; /*@ Events are received when enabled is @c EINA_TRUE, and + ignored otherwise. */ + } + } + content_preserve_on_pop { + set { + /*@ + @brief preserve the content objects when items are popped. + + @see also elm_naviframe_content_preserve_on_pop_get() + + @ingroup Naviframe */ + } + get { + /*@ + @brief Get a value whether preserve mode is enabled or not. + + @return If @c EINA_TRUE, preserve mode is enabled + + @see also elm_naviframe_content_preserve_on_pop_set() + + @ingroup Naviframe */ + } + values { + Eina_Bool preserve; /*@ Enable the preserve mode if @c EINA_TRUE, disable otherwise */ + } + } + prev_btn_auto_pushed { + set { + /*@ + @brief Set creating prev button automatically or not + + @see also elm_naviframe_item_push() + + @ingroup Naviframe */ + } + get { + /*@ + @brief Get a value whether prev button(back button) will be auto pushed or + not. + + @return If @c EINA_TRUE, prev button will be auto pushed. + + @see also elm_naviframe_item_push() + elm_naviframe_prev_btn_auto_pushed_set() + + @ingroup Naviframe */ + } + values { + Eina_Bool auto_pushed; /*@ If @c EINA_TRUE, the previous button(back button) will + be created internally when you pass the @c NULL to the prev_btn + parameter in elm_naviframe_item_push */ + } + } + items { + get { + /*@ + @brief Get a list of all the naviframe items. + + @return An Eina_List of naviframe items, #Elm_Object_Item, + or @c NULL on failure. + @note The returned list MUST be freed. + + @ingroup Naviframe */ + return Eina_List * @warn_unused; + } + } + top_item { + get { + /*@ + @brief Get a top item on the naviframe stack + + @return The top item on the naviframe stack or @c NULL, if the stack is + empty + + @ingroup Naviframe */ + return Elm_Object_Item *; + } + } + bottom_item { + get { + /*@ + @brief Get a bottom item on the naviframe stack + + @return The bottom item on the naviframe stack or @c NULL, if the stack is + empty + + @ingroup Naviframe */ + return Elm_Object_Item *; + } + } + } + methods { + item_pop { + /*@ + @brief Pop an item that is on top of the stack + + @return @c NULL or the content object(if the + elm_naviframe_content_preserve_on_pop_get is true). + + This pops an item that is on the top(visible) of the naviframe, makes it + disappear, then deletes the item. The item that was underneath it on the + stack will become visible. + + @see also elm_naviframe_content_preserve_on_pop_get() + @see also elm_naviframe_item_pop_cb_set() + + @ingroup Naviframe */ + + return Evas_Object *; + } + item_insert_before { + /*@ + @brief Insert a new item into the naviframe before item @p before. + + @return The created item or @c NULL upon failure. + + The item is inserted into the naviframe straight away without any + transition operations. This item will be deleted when it is popped. + + @see also elm_naviframe_item_style_set() + @see also elm_naviframe_item_push() + @see also elm_naviframe_item_insert_after() + + The following styles are available for this item: + @li @c "default" + + @ingroup Naviframe */ + + return Elm_Object_Item *; + params { + @in Elm_Object_Item *before; /*@ The naviframe item to insert before. */ + @in const char *title_label; /*@ The label in the title area. The name of the title + label part is "elm.text.title" */ + @in Evas_Object *prev_btn; /*@ The button to go to the previous item. If it is NULL, + then naviframe will create a back button automatically. The name of + the prev_btn part is "elm.swallow.prev_btn" */ + @in Evas_Object *next_btn; /*@ The button to go to the next item. Or It could be just an + extra function button. The name of the next_btn part is + "elm.swallow.next_btn" */ + @in Evas_Object *content; /*@ The main content object. The name of content part is + "elm.swallow.content" */ + @in const char *item_style; /*@ The current item style name. @c NULL would be default. */ + } + } + item_push { + /*@ + @brief Push a new item to the top of the naviframe stack (and show it). + + @return The created item or @c NULL upon failure. + + The item pushed becomes one page of the naviframe, this item will be + deleted when it is popped. + + @see also elm_naviframe_item_style_set() + @see also elm_naviframe_item_insert_before() + @see also elm_naviframe_item_insert_after() + + The following styles are available for this item: + @li @c "default" + + @ingroup Naviframe */ + + return Elm_Object_Item *; + params { + @in const char *title_label; /*@ The label in the title area. The name of the title + label part is "elm.text.title" */ + @in Evas_Object *prev_btn; /*@ The button to go to the previous item. If it is NULL, + then naviframe will create a back button automatically. The name of + the prev_btn part is "elm.swallow.prev_btn" */ + @in Evas_Object *next_btn; /*@ The button to go to the next item. Or It could be just an + extra function button. The name of the next_btn part is + "elm.swallow.next_btn" */ + @in Evas_Object *content; /*@ The main content object. The name of content part is + "elm.swallow.content" */ + @in const char *item_style; /*@ The current item style name. @c NULL would be default. */ + } + } + item_simple_promote { + /*@ + @brief Simple version of item_promote. + + @see elm_naviframe_item_promote */ + + params { + @in Evas_Object *content; + } + } + item_insert_after { + /*@ + @brief Insert a new item into the naviframe after item @p after. + + @return The created item or @c NULL upon failure. + + The item is inserted into the naviframe straight away without any + transition operations. This item will be deleted when it is popped. + + @see also elm_naviframe_item_style_set() + @see also elm_naviframe_item_push() + @see also elm_naviframe_item_insert_before() + + The following styles are available for this item: + @li @c "default" + + @ingroup Naviframe */ + + return Elm_Object_Item *; + params { + @in Elm_Object_Item *after; /*@ The naviframe item to insert after. */ + @in const char *title_label; /*@ The label in the title area. The name of the title + label part is "elm.text.title" */ + @in Evas_Object *prev_btn; /*@ The button to go to the previous item. If it is NULL, + then naviframe will create a back button automatically. The name of + the prev_btn part is "elm.swallow.prev_btn" */ + @in Evas_Object *next_btn; /*@ The button to go to the next item. Or It could be just an + extra function button. The name of the next_btn part is + "elm.swallow.next_btn" */ + @in Evas_Object *content; /*@ The main content object. The name of content part is + "elm.swallow.content" */ + @in const char *item_style; /*@ The current item style name. @c NULL would be default. */ + } + } + } + implements { + class::constructor; + Eo_Base::constructor; + Evas_Smart::del; + Evas_Smart::show; + Evas_Smart::add; + Elm_Widget::focus_direction; + Elm_Widget::focus_next_manager_is; + Elm_Widget::focus_direction_manager_is; + Elm_Widget::access; + Elm_Widget::focus_next; + Elm_Widget::translate; + Elm_Widget::theme_apply; + Elm_Widget::event; + Elm_Container::content_get; + Elm_Container::content_set; + Elm_Container::content_unset; + Elm_Layout::text_set; + Elm_Layout::text_get; + Elm_Layout::signal_emit; + Elm_Layout::sizing_eval; + } + events { + transition,finished; + title,transition,finished; + title,clicked; + language,changed; + access,changed; + focused; + unfocused; + } + +} diff --git a/src/lib/elc_naviframe_eo.h b/src/lib/elc_naviframe_eo.h index 4f327ff57..cfb27b605 100644 --- a/src/lib/elc_naviframe_eo.h +++ b/src/lib/elc_naviframe_eo.h @@ -3,6 +3,8 @@ * * @{ */ +#include "elc_naviframe.eo.h" +#if 0 #define ELM_OBJ_NAVIFRAME_CLASS elm_obj_naviframe_class_get() const Eo_Class *elm_obj_naviframe_class_get(void) EINA_CONST; @@ -215,6 +217,7 @@ enum * @see elm_naviframe_event_enabled_get */ #define elm_obj_naviframe_event_enabled_get(ret) ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret) +#endif /** * @} */ diff --git a/src/lib/elm_widget_naviframe.h b/src/lib/elm_widget_naviframe.h index ee9380114..4446977bf 100644 --- a/src/lib/elm_widget_naviframe.h +++ b/src/lib/elm_widget_naviframe.h @@ -17,8 +17,8 @@ /** * Base layout smart data extended with naviframe instance data. */ -typedef struct _Elm_Naviframe_Smart_Data Elm_Naviframe_Smart_Data; -struct _Elm_Naviframe_Smart_Data +typedef struct _Elc_Naviframe_Data Elc_Naviframe_Data; +struct _Elc_Naviframe_Data { Eina_Inlist *stack; /* top item is the list's LAST item */ Eina_List *popping; @@ -82,7 +82,7 @@ struct _Elm_Naviframe_Text_Item_Pair */ #define ELM_NAVIFRAME_DATA_GET(o, sd) \ - Elm_Naviframe_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_NAVIFRAME_CLASS) + Elc_Naviframe_Data * sd = eo_data_scope_get(o, ELM_OBJ_NAVIFRAME_CLASS) #define ELM_NAVIFRAME_DATA_GET_OR_RETURN(o, ptr) \ ELM_NAVIFRAME_DATA_GET(o, ptr); \ -- cgit v1.2.1