rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=8226bc05e877fd3fa6ad05fc2b2407d89ebdc8f2
commit 8226bc05e877fd3fa6ad05fc2b2407d89ebdc8f2 Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Mon Mar 28 15:44:00 2016 +0300 live_naviframe: set/unset content into swallow parts --- src/bin/ui/live_view/elementary/live_naviframe.c | 119 ++++++++++++++++++++--- 1 file changed, 103 insertions(+), 16 deletions(-) diff --git a/src/bin/ui/live_view/elementary/live_naviframe.c b/src/bin/ui/live_view/elementary/live_naviframe.c index dd592de..627aac4 100644 --- a/src/bin/ui/live_view/elementary/live_naviframe.c +++ b/src/bin/ui/live_view/elementary/live_naviframe.c @@ -21,13 +21,105 @@ static const char *item_style_name = NULL; +void +_pop_page_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *nf = data; + + assert(nf != NULL); + + elm_naviframe_item_pop(nf); +} + +void +_next_page_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *nf = (Evas_Object *)data, *bt; + Eina_Stringshare *find_part = eina_stringshare_add("elm.swallow.prev_btn"); + + bt = elm_button_add(nf); + elm_object_text_set(bt, _("Back")); + evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(bt, "clicked", _pop_page_cb, nf); + evas_object_show(bt); + + elm_naviframe_item_push(nf, _("Page Next"), bt, NULL, NULL, item_style_name); + eina_stringshare_del(find_part); +} + +void +_prev_page_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *nf = (Evas_Object *)data, *bt; + Eina_Stringshare *find_part = eina_stringshare_add("elm.swallow.next_btn"); + + bt = elm_button_add(nf); + elm_object_text_set(bt, _("Back")); + evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(bt, "clicked", _pop_page_cb, nf); + evas_object_show(bt); + + elm_naviframe_item_push(nf, _("Page Prev"), NULL, bt, NULL, item_style_name); + eina_stringshare_del(find_part); +} + static void _on_naviframe_swallow_check(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { - TODO("Remake on_swallow_check, so that would be used everywhere.") - ERR(N_("Complex widgets are not implemented yet.")) + Demo_Part *part = (Demo_Part *)ei; + Evas_Object *object = (Evas_Object *) data; + Elm_Object_Item *item_main, *item_current; + + item_current = evas_object_data_get(object, "main_page"); + item_main = elm_naviframe_top_item_get(object); + if (item_current != item_main) + elm_naviframe_item_pop(object); + + if (part->change) + { + if (part->object) + { + elm_object_part_content_unset(object, part->name); + evas_object_del(part->object); + part->object = NULL; + } + + part->object = object_generate(part, object); + evas_object_show(part->object); + if ((part->swallow_content == CONTENT_WIDGET) && (part->widget == WIDGET_BUTTON)) + { + if (!strcmp(part->name, "elm.swallow.prev_btn")) + { + elm_object_text_set(part->object, _("Prev page")); + evas_object_smart_callback_add(part->object, "clicked", _prev_page_cb, object); + } + else if (!strcmp(part->name, "elm.swallow.next_btn")) + { + elm_object_text_set(part->object, _("Next page")); + evas_object_smart_callback_add(part->object, "clicked", _next_page_cb, object); + } + } + part->change = false; + elm_object_part_content_set(object, part->name, part->object); + } + + if (part->object) + { + evas_object_color_set(part->object, + part->r, + part->g, + part->b, + part->a); + + evas_object_size_hint_min_set(part->object, + part->min_w, + part->min_h); + evas_object_size_hint_max_set(part->object, + part->max_w, + part->max_h); + } } static void @@ -41,18 +133,15 @@ _on_naviframe_text_check(void *data __UNUSED__, static void _naviframe_send_signal(void *data, - Evas_Object *obj, + Evas_Object *obj __UNUSED__, void *ei __UNUSED__) { + Demo_Signal *sig = (Demo_Signal *)ei; Evas_Object *object = (Evas_Object *)data; - assert(object != NULL); - - const char *name = evas_object_data_get(obj, SIGNAL_NAME); - const char *source = evas_object_data_get(obj, SIGNAL_SOURCE); - - assert(name != NULL); - assert(source != NULL); + assert(sig != NULL); + assert(sig->sig_name != NULL); + assert(sig->source_name != NULL); Elm_Object_Item *item_main, *item_current; @@ -61,10 +150,9 @@ _naviframe_send_signal(void *data, if (item_current != item_main) item_current = elm_naviframe_item_pop(object); - elm_object_item_signal_emit(item_current, name, source); + elm_object_item_signal_emit(item_current, sig->sig_name, sig->source_name); } - Evas_Object * widget_naviframe_create(Evas_Object *parent, const Group *group) { @@ -88,7 +176,6 @@ widget_naviframe_create(Evas_Object *parent, const Group *group) Evas_Object *nf = elm_naviframe_add(parent); evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(parent, nf); elm_naviframe_prev_btn_auto_pushed_set(nf, false); @@ -97,9 +184,9 @@ widget_naviframe_create(Evas_Object *parent, const Group *group) elm_object_item_part_text_set(it, "title", _("Main Page")); evas_object_data_set(nf, "main_page", it); - evas_object_data_set(nf, SWALLOW_FUNC, _on_naviframe_swallow_check); - evas_object_data_set(nf, TEXT_FUNC, _on_naviframe_text_check); - evas_object_data_set(nf, SIGNAL_FUNC, _naviframe_send_signal); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, _on_naviframe_swallow_check, nf); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, _on_naviframe_text_check, nf); + evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, _naviframe_send_signal, nf); elm_object_style_set(nf, style_name); --