naviframe: Add "item,activated" smart callback.

"item,activated" smart callback is added to notice when an item is
activated.

"item,activated" smart callback is called as follows.
1. Item push is finished and the new item is activated.
2. Item pop is finished and the previous item is activated.

void *event_info in smart callback is the activated item pointer.
This commit is contained in:
Jaehyun Cho 2016-10-07 17:07:48 +09:00
parent 8976be4f84
commit 3a0eb75bda
3 changed files with 21 additions and 0 deletions

View File

@ -44,6 +44,13 @@ _title_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
printf("Title Clicked!\n");
}
void
_item_activated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *it = event_info;
printf("Item(%p) is activated! The Title is \"%s\"\n", it, elm_object_item_text_get(it));
}
void
_title_visible(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
@ -280,6 +287,7 @@ test_naviframe(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
elm_win_resize_object_add(win, nf);
evas_object_show(nf);
evas_object_smart_callback_add(nf, "title,clicked", _title_clicked, 0);
evas_object_smart_callback_add(nf, "item,activated", _item_activated, NULL);
btn = elm_button_add(nf);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);

View File

@ -30,6 +30,7 @@ static const char TITLE_ACCESS_PART[] = "access.title";
static const char SIG_TRANSITION_FINISHED[] = "transition,finished";
static const char SIG_TITLE_TRANSITION_FINISHED[] = "title,transition,finished";
static const char SIG_TITLE_CLICKED[] = "title,clicked";
static const char SIG_ITEM_ACTIVATED[] = "item,activated";
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_TRANSITION_FINISHED, ""},
@ -583,6 +584,8 @@ _elm_naviframe_item_efl_object_destructor(Eo *eo_item, Elm_Naviframe_Item_Data *
_prev_page_focus_recover(prev_it);
elm_object_signal_emit(VIEW(prev_it), "elm,state,visible", "elm");
efl_event_callback_legacy_call(WIDGET(prev_it), ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED, EO_OBJ(prev_it));
}
end:
@ -1158,6 +1161,9 @@ _on_item_show_finished(void *data,
it->pushing = EINA_FALSE;
efl_event_callback_legacy_call(WIDGET(it), ELM_NAVIFRAME_EVENT_TRANSITION_FINISHED, EO_OBJ(it));
if (EO_OBJ(it) == elm_naviframe_top_item_get(WIDGET(it)))
efl_event_callback_legacy_call(WIDGET(it), ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED, EO_OBJ(it));
}
static void
@ -1598,6 +1604,9 @@ _item_push_helper(Elm_Naviframe_Item_Data *item)
elm_object_signal_emit(VIEW(item), "elm,state,visible", "elm");
elm_layout_sizing_eval(obj);
if (!top_item)
efl_event_callback_legacy_call(obj, ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED, EO_OBJ(item));
}
EAPI Evas_Object *
@ -1712,6 +1721,9 @@ _elm_naviframe_item_insert_after(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Ite
elm_layout_sizing_eval(obj);
if (top_inserted)
efl_event_callback_legacy_call(obj, ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED, eo_item);
return eo_item;
}

View File

@ -164,6 +164,7 @@ class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
transition,finished;
title,transition,finished;
title,clicked;
item,activated;
}
}