From: ChunEon Park Date: Wed, 21 Sep 2011 04:24:00 +0000 (+0900) Subject: naviframe - merged with opensource X-Git-Tag: REL_F_I9200_20110923_1~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6cef0ce7223c3a588c896f7be13c97a1339e3789;p=framework%2Fuifw%2Felementary.git naviframe - merged with opensource added one more convenient API --- diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 1bc75cd..cd2b022 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -8274,6 +8274,7 @@ extern "C" { Eina_Bool elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item); /* naviframe */ + #define ELM_NAVIFRAME_ITEM_CONTENT "elm.swallow.content" #define ELM_NAVIFRAME_ITEM_ICON "elm.swallow.icon" #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "elm.swallow.optionheader" #define ELM_NAVIFRAME_ITEM_TITLE_LABEL "elm.text.title" @@ -8284,6 +8285,7 @@ extern "C" { EAPI Evas_Object *elm_naviframe_add(Evas_Object *parent) EINA_ARG_NONNULL(1); 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) EINA_ARG_NONNULL(1, 5); EAPI Evas_Object *elm_naviframe_item_pop(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_naviframe_item_pop_to(Elm_Object_Item *it) EINA_ARG_NONNULL(1); EAPI void elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_naviframe_top_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index dc24e21..f76e5ab 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -136,7 +136,7 @@ _del_hook(Evas_Object *obj) wd = elm_widget_data_get(obj); if (!wd) return; - EINA_LIST_FOREACH(wd->stack, list, it) + EINA_LIST_REVERSE_FOREACH(wd->stack, list, it) _item_del(it); eina_list_free(wd->stack); free(wd); @@ -618,11 +618,9 @@ _item_del(Elm_Naviframe_Item *it) eina_list_free(it->content_list); eina_list_free(it->text_list); - evas_object_del(it->base.view); - wd->stack = eina_list_remove(wd->stack, it); - free(it); + elm_widget_item_del(it); } static void @@ -761,14 +759,13 @@ elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object * "elm,action,popped,finished", "", _popped_finished, it); - elm_naviframe_item_style_set(ELM_CAST(it), item_style); - - //title edje_object_signal_callback_add(it->base.view, "elm,action,title,clicked", - "elm", + "", _title_clicked, it); + elm_naviframe_item_style_set(ELM_CAST(it), item_style); + _item_text_set_hook(ELM_CAST(it), "elm.text.title", title_label); //title buttons @@ -843,6 +840,29 @@ elm_naviframe_item_pop(Evas_Object *obj) } EAPI void +elm_naviframe_item_pop_to(Elm_Object_Item *it) +{ + ELM_OBJ_ITEM_CHECK_OR_RETURN(it); + Elm_Naviframe_Item *navi_it = ELM_CAST(it); + Widget_Data *wd = elm_widget_data_get(navi_it->base.widget); + Eina_List *l, *prev_l; + + if (it == elm_naviframe_top_item_get(navi_it->base.widget)) return; + + l = eina_list_last(wd->stack)->prev; + + while(l) + { + if (l->data == it) break; + prev_l = l->prev; + _item_del(l->data); + wd->stack = eina_list_remove(wd->stack, l); + l = prev_l; + } + elm_naviframe_item_pop(navi_it->base.widget); +} + +EAPI void elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve) { ELM_CHECK_WIDTYPE(obj, widtype);