1 #include <Elementary.h>
4 typedef struct _Widget_Data Widget_Data;
5 typedef struct _Elm_Naviframe_Item Elm_Naviframe_Item;
6 typedef struct _Elm_Naviframe_Content_Item_Pair Elm_Naviframe_Content_Item_Pair;
7 typedef struct _Elm_Naviframe_Text_Item_Pair Elm_Naviframe_Text_Item_Pair;
14 Eina_Bool preserve: 1;
15 Eina_Bool pass_events: 1;
18 struct _Elm_Naviframe_Content_Item_Pair
22 Elm_Naviframe_Item *it;
25 struct _Elm_Naviframe_Text_Item_Pair
31 struct _Elm_Naviframe_Item
34 Eina_List *content_list;
37 Evas_Object *title_prev_btn;
38 Evas_Object *title_next_btn;
40 Eina_Bool back_btn: 1;
41 Eina_Bool title_visible: 1;
44 static const char *widtype = NULL;
46 static const char SIG_TRANSITION_FINISHED[] = "transition,finished";
47 static const char SIG_TITLE_CLICKED[] = "title,clicked";
49 static const Evas_Smart_Cb_Description _signals[] = {
50 {SIG_TRANSITION_FINISHED, ""},
51 {SIG_TITLE_CLICKED, ""},
55 static void _del_hook(Evas_Object *obj);
56 static void _theme_hook(Evas_Object *obj);
57 static void _emit_hook(Evas_Object *obj,
60 static void _disable_hook(Evas_Object *obj);
61 static void _item_text_set_hook(Elm_Object_Item *it,
64 static const char *_item_text_get_hook(const Elm_Object_Item *it,
66 static void _item_content_set_hook(Elm_Object_Item *it,
68 Evas_Object *content);
69 static Evas_Object *_item_content_get_hook(const Elm_Object_Item *it,
71 static Evas_Object *_item_content_unset_hook(Elm_Object_Item *it,
73 static void _item_signal_emit_hook(Elm_Object_Item *it,
76 static void _sizing_eval(Evas_Object *obj);
77 static void _item_sizing_eval(Elm_Naviframe_Item *it);
78 static void _move(void *data, Evas *e, Evas_Object *obj, void *event_info);
79 static void _resize(void *data,
83 static void _hide(void *data, Evas *e, Evas_Object *obj, void *event_info);
84 static void _title_clicked(void *data, Evas_Object *obj,
87 static void _back_btn_clicked(void *data,
90 static Evas_Object *_back_btn_new(Evas_Object *obj);
91 static void _item_content_del(void *data,
95 static void _title_content_del(void *data,
99 static void _title_prev_btn_del(void *data,
103 static void _title_next_btn_del(void *data,
107 static void _title_content_set(Elm_Naviframe_Item *it,
108 Elm_Naviframe_Content_Item_Pair *pair,
110 Evas_Object *content);
111 static void _title_prev_btn_set(Elm_Naviframe_Item *it,
114 static void _title_next_btn_set(Elm_Naviframe_Item *it, Evas_Object *btn);
115 static void _item_del(Elm_Naviframe_Item *it);
116 static void _pushed_finished(void *data,
118 const char *emission,
120 static void _popped_finished(void *data,
122 const char *emission,
124 static void _show_finished(void *data,
126 const char *emission,
128 static void _item_content_set(Elm_Naviframe_Item *navi_it,
129 Evas_Object *content);
132 _del_hook(Evas_Object *obj)
136 Elm_Naviframe_Item *it;
138 wd = elm_widget_data_get(obj);
141 EINA_LIST_REVERSE_FOREACH(wd->stack, list, it)
143 eina_list_free(wd->stack);
148 _theme_hook(Evas_Object *obj __UNUSED__)
153 static void _emit_hook(Evas_Object *obj,
154 const char *emission,
157 ELM_CHECK_WIDTYPE(obj, widtype);
159 Widget_Data *wd = elm_widget_data_get(obj);
162 edje_object_signal_emit(wd->base, emission, source);
166 _disable_hook(Evas_Object *obj __UNUSED__)
172 _item_text_set_hook(Elm_Object_Item *it,
176 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
179 Elm_Naviframe_Text_Item_Pair *pair = NULL;
180 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
184 snprintf(buf, sizeof(buf), "elm.text.title");
186 snprintf(buf, sizeof(buf), "%s", part);
188 EINA_LIST_FOREACH(navi_it->text_list, l, pair)
189 if (!strcmp(buf, pair->part)) break;
193 pair = ELM_NEW(Elm_Naviframe_Text_Item_Pair);
196 ERR("Failed to allocate new text part of the item! : naviframe=%p",
197 navi_it->base.widget);
200 eina_stringshare_replace(&pair->part, buf);
201 navi_it->text_list = eina_list_append(navi_it->text_list, pair);
204 eina_stringshare_replace(&pair->text, label);
205 edje_object_part_text_set(navi_it->base.view, buf, label);
209 snprintf(buf, sizeof(buf), "elm,state,%s,show", buf);
210 edje_object_signal_emit(navi_it->base.view, buf, "elm");
214 snprintf(buf, sizeof(buf), "elm,state,%s,hide", buf);
215 edje_object_signal_emit(navi_it->base.view, buf, "elm");
218 _item_sizing_eval(navi_it);
222 _item_text_get_hook(const Elm_Object_Item *it, const char *part)
224 ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
226 Elm_Naviframe_Text_Item_Pair *pair = NULL;
227 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
231 snprintf(buf, sizeof(buf), "elm.text.title");
233 snprintf(buf, sizeof(buf), "%s", part);
235 EINA_LIST_FOREACH(navi_it->text_list, l, pair)
237 if (!strcmp(buf, pair->part))
244 _item_content_set_hook(Elm_Object_Item *it,
246 Evas_Object *content)
248 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
250 Elm_Naviframe_Content_Item_Pair *pair = NULL;
251 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
254 if ((!part) || (!strcmp(part, "elm.swallow.content")))
256 _item_content_set(navi_it, content);
259 else if (!strcmp(part, "elm.swallow.prev_btn"))
261 _title_prev_btn_set(navi_it, content, EINA_FALSE);
264 else if(!strcmp(part, "elm.swallow.next_btn"))
266 _title_next_btn_set(navi_it, content);
271 _title_content_set(navi_it, pair, part, content);
275 _item_content_get_hook(const Elm_Object_Item *it, const char *part)
277 ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
279 Elm_Naviframe_Content_Item_Pair *pair = NULL;
280 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
283 if ((!part) || (!strcmp(part, "elm.swallow.content")))
284 return navi_it->content;
285 else if (!strcmp(part, "elm.swallow.prev_btn"))
286 return navi_it->title_prev_btn;
287 else if(!strcmp(part, "elm.swallow.next_btn"))
288 return navi_it->title_next_btn;
291 EINA_LIST_FOREACH(navi_it->content_list, l, pair)
293 if (!strcmp(part, pair->part))
294 return pair->content;
300 _item_content_unset_hook(Elm_Object_Item *it, const char *part)
302 ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
304 Elm_Naviframe_Content_Item_Pair *pair = NULL;
305 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
306 Evas_Object *content = NULL;
310 //FIXME: could be unset the below specified contents also.
312 !strcmp(part, "elm.swallow.content") ||
313 !strcmp(part, "elm.swallow.prev_btn") ||
314 !strcmp(part, "elm.swallow.next_btn"))
316 WRN("You can not unset the content! : naviframe=%p",
317 navi_it->base.widget);
322 EINA_LIST_FOREACH(navi_it->content_list, l, pair)
324 if (!strcmp(part, pair->part))
326 content = pair->content;
327 eina_stringshare_del(pair->part);
328 navi_it->content_list = eina_list_remove(navi_it->content_list,
335 if (!content) return NULL;
337 elm_widget_sub_object_del(navi_it->base.widget, content);
338 edje_object_part_unswallow(navi_it->base.view, content);
339 snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
340 edje_object_signal_emit(navi_it->base.view, buf, "elm");
341 evas_object_event_callback_del(content,
344 _item_sizing_eval(navi_it);
350 _item_signal_emit_hook(Elm_Object_Item *it,
351 const char *emission,
354 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
355 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
356 edje_object_signal_emit(navi_it->base.view, emission, source);
360 _sizing_eval(Evas_Object *obj)
364 Elm_Naviframe_Item *it;
365 wd = elm_widget_data_get(obj);
368 list = eina_list_last(wd->stack);
371 EINA_LIST_FOREACH(wd->stack, list, it)
372 _item_sizing_eval(it);
376 _item_sizing_eval(Elm_Naviframe_Item *it)
379 Evas_Coord x, y, w, h;
382 wd = elm_widget_data_get(it->base.widget);
385 evas_object_geometry_get(it->base.widget, &x, &y, &w, &h);
386 evas_object_move(it->base.view, x, y);
387 evas_object_resize(it->base.view, w, h);
391 _move(void *data __UNUSED__,
394 void *event_info __UNUSED__)
397 Widget_Data *wd = elm_widget_data_get(obj);
400 evas_object_geometry_get(obj, &x, &y, NULL, NULL);
401 evas_object_move(wd->rect, x, y);
407 _resize(void *data __UNUSED__,
410 void *event_info __UNUSED__)
413 Widget_Data *wd = elm_widget_data_get(obj);
416 evas_object_geometry_get(obj, NULL, NULL, &w, &h);
417 evas_object_resize(wd->rect, w, h);
423 _hide(void *data __UNUSED__,
426 void *event_info __UNUSED__)
428 Widget_Data *wd = elm_widget_data_get(obj);
431 evas_object_hide(wd->rect);
435 _title_clicked(void *data,
436 Evas_Object *obj __UNUSED__,
437 const char *emission __UNUSED__,
438 const char *source __UNUSED__)
440 Elm_Naviframe_Item *it = data;
441 evas_object_smart_callback_call(it->base.widget, SIG_TITLE_CLICKED, it);
445 _back_btn_clicked(void *data,
446 Evas_Object *obj __UNUSED__,
447 void *event_info __UNUSED__)
449 elm_naviframe_item_pop(data);
453 _back_btn_new(Evas_Object *obj)
457 btn = elm_button_add(obj);
458 if (!btn) return NULL;
459 evas_object_smart_callback_add(btn, "clicked", _back_btn_clicked, obj);
460 snprintf(buf, sizeof(buf), "naviframe/back_btn/%s", elm_widget_style_get(obj));
461 elm_object_style_set(btn, buf);
466 _title_content_del(void *data,
468 Evas_Object *obj __UNUSED__,
469 void *event_info __UNUSED__)
472 Elm_Naviframe_Content_Item_Pair *pair = data;
473 Elm_Naviframe_Item *it = pair->it;
474 snprintf(buf, sizeof(buf), "elm,state,%s,hide", pair->part);
475 edje_object_signal_emit(it->base.view, buf, "elm");
476 it->content_list = eina_list_remove(it->content_list, pair);
477 eina_stringshare_del(pair->part);
482 _title_prev_btn_del(void *data,
484 Evas_Object *obj __UNUSED__,
485 void *event_info __UNUSED__)
487 Elm_Naviframe_Item *it = data;
488 it->back_btn = EINA_FALSE;
489 it->title_prev_btn = NULL;
493 _title_next_btn_del(void *data,
495 Evas_Object *obj __UNUSED__,
496 void *event_info __UNUSED__)
498 Elm_Naviframe_Item *it = data;
499 it->title_next_btn = NULL;
503 _item_content_del(void *data,
505 Evas_Object *obj __UNUSED__,
506 void *event_info __UNUSED__)
508 Elm_Naviframe_Item *it = data;
510 edje_object_signal_emit(it->base.view, "elm,state,content,hide", "elm");
514 _title_content_set(Elm_Naviframe_Item *it,
515 Elm_Naviframe_Content_Item_Pair *pair,
517 Evas_Object *content)
522 EINA_LIST_FOREACH(it->content_list, l, pair)
523 if (!strcmp(part, pair->part)) break;
527 pair = ELM_NEW(Elm_Naviframe_Content_Item_Pair);
530 ERR("Failed to allocate new content part of the item! : naviframe=%p", it->base.widget);
534 eina_stringshare_replace(&pair->part, part);
535 it->content_list = eina_list_append(it->content_list, pair);
538 if ((pair->content) && (pair->content != content))
539 evas_object_del(pair->content);
543 snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
544 edje_object_signal_emit(it->base.view, buf, "elm");
545 pair->content = NULL;
549 if (pair->content != content)
551 elm_widget_sub_object_add(it->base.widget, content);
552 evas_object_event_callback_add(content,
558 pair->content = content;
560 edje_object_part_swallow(it->base.view, part, content);
561 snprintf(buf, sizeof(buf), "elm,state,%s,show", part);
562 edje_object_signal_emit(it->base.view, buf, "elm");
563 _item_sizing_eval(it);
567 _title_prev_btn_set(Elm_Naviframe_Item *it,
571 if (it->title_prev_btn == btn) return;
573 if (it->title_prev_btn)
574 evas_object_del(it->title_prev_btn);
576 it->title_prev_btn = btn;
580 elm_widget_sub_object_add(it->base.widget, btn);
581 evas_object_event_callback_add(btn,
585 edje_object_part_swallow(it->base.view, "elm.swallow.prev_btn", btn);
586 it->back_btn = back_btn;
588 _item_sizing_eval(it);
592 _title_next_btn_set(Elm_Naviframe_Item *it, Evas_Object *btn)
594 if (it->title_next_btn == btn) return;
596 if (it->title_next_btn)
597 evas_object_del(it->title_next_btn);
599 it->title_next_btn = btn;
603 elm_widget_sub_object_add(it->base.widget, btn);
604 evas_object_event_callback_add(btn,
608 edje_object_part_swallow(it->base.view, "elm.swallow.next_btn", btn);
610 _item_sizing_eval(it);
614 _item_del(Elm_Naviframe_Item *it)
618 Elm_Naviframe_Content_Item_Pair *content_pair;
619 Elm_Naviframe_Text_Item_Pair *text_pair;
623 wd = elm_widget_data_get(it->base.widget);
626 if (it->title_prev_btn)
627 evas_object_del(it->title_prev_btn);
628 if (it->title_next_btn)
629 evas_object_del(it->title_next_btn);
630 if ((it->content) && (!wd->preserve))
631 evas_object_del(it->content);
633 EINA_LIST_FOREACH(it->content_list, l, content_pair)
634 evas_object_del(content_pair->content);
636 EINA_LIST_FOREACH(it->text_list, l, text_pair)
638 eina_stringshare_del(text_pair->part);
639 eina_stringshare_del(text_pair->text);
642 eina_list_free(it->content_list);
643 eina_list_free(it->text_list);
645 wd->stack = eina_list_remove(wd->stack, it);
647 elm_widget_item_del(it);
651 _pushed_finished(void *data,
652 Evas_Object *obj __UNUSED__,
653 const char *emission __UNUSED__,
654 const char *source __UNUSED__)
656 Elm_Naviframe_Item *it = data;
658 evas_object_hide(it->base.view);
662 _popped_finished(void *data,
663 Evas_Object *obj __UNUSED__,
664 const char *emission __UNUSED__,
665 const char *source __UNUSED__)
671 _show_finished(void *data,
672 Evas_Object *obj __UNUSED__,
673 const char *emission __UNUSED__,
674 const char *source __UNUSED__)
676 Elm_Naviframe_Item *it;
681 wd = elm_widget_data_get(it->base.widget);
684 evas_object_smart_callback_call(it->base.widget,
685 SIG_TRANSITION_FINISHED,
689 evas_object_hide(wd->rect);
691 evas_object_pass_events_set(wd->base, EINA_FALSE);
696 _item_content_set(Elm_Naviframe_Item *navi_it, Evas_Object *content)
698 if (navi_it->content == content) return;
699 if (navi_it->content) evas_object_del(navi_it->content);
700 elm_widget_sub_object_add(navi_it->base.widget, content);
701 edje_object_part_swallow(navi_it->base.view,
702 "elm.swallow.content",
705 edje_object_signal_emit(navi_it->base.view,
706 "elm,state,content,show",
709 edje_object_signal_emit(navi_it->base.view,
710 "elm,state,content,hide",
712 evas_object_event_callback_add(content,
716 navi_it->content = content;
717 _item_sizing_eval(navi_it);
721 elm_naviframe_add(Evas_Object *parent)
727 ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
728 ELM_SET_WIDTYPE(widtype, "naviframe");
729 elm_widget_type_set(obj, "naviframe");
730 elm_widget_sub_object_add(parent, obj);
731 elm_widget_data_set(obj, wd);
732 elm_widget_del_hook_set(obj, _del_hook);
733 elm_widget_disable_hook_set(obj, _disable_hook);
734 elm_widget_theme_hook_set(obj, _theme_hook);
735 elm_widget_signal_emit_hook_set(obj, _emit_hook);
738 wd->base = edje_object_add(e);
739 elm_widget_resize_object_set(obj, wd->base);
740 _elm_theme_object_set(obj, wd->base, "naviframe", "base", "default");
743 wd->rect = evas_object_rectangle_add(e);
744 evas_object_color_set(wd->rect, 0, 0, 0, 0);
745 elm_widget_sub_object_add(obj, wd->rect);
747 evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj);
748 evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
749 evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, obj);
750 evas_object_smart_callbacks_descriptions_set(obj, _signals);
752 wd->pass_events = EINA_TRUE;
757 EAPI Elm_Object_Item *
758 elm_naviframe_item_push(Evas_Object *obj,
759 const char *title_label,
760 Evas_Object *prev_btn,
761 Evas_Object *next_btn,
762 Evas_Object *content,
763 const char *item_style)
765 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
767 Elm_Naviframe_Item *prev_it, *it;
769 wd = elm_widget_data_get(obj);
770 if (!wd) return NULL;
773 it = elm_widget_item_new(obj, Elm_Naviframe_Item);
776 ERR("Failed to allocate new item! : naviframe=%p", obj);
780 elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
781 elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
782 elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
783 elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
784 elm_widget_item_content_unset_hook_set(it, _item_content_unset_hook);
785 elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
788 it->base.view = edje_object_add(evas_object_evas_get(obj));
789 evas_object_smart_member_add(it->base.view, wd->base);
790 elm_widget_sub_object_add(obj, it->base.view);
791 edje_object_signal_callback_add(it->base.view,
792 "elm,action,show,finished",
795 edje_object_signal_callback_add(it->base.view,
796 "elm,action,pushed,finished",
798 _pushed_finished, it);
799 edje_object_signal_callback_add(it->base.view,
800 "elm,action,popped,finished",
802 _popped_finished, it);
803 edje_object_signal_callback_add(it->base.view,
804 "elm,action,title,clicked",
808 elm_naviframe_item_style_set(ELM_CAST(it), item_style);
810 _item_text_set_hook(ELM_CAST(it), "elm.text.title", title_label);
813 if ((!prev_btn) && (eina_list_count(wd->stack)))
815 prev_btn = _back_btn_new(obj);
816 _title_prev_btn_set(it, prev_btn, EINA_TRUE);
819 _title_prev_btn_set(it, prev_btn, EINA_FALSE);
821 _title_next_btn_set(it, next_btn);
823 _item_content_set(it, content);
825 _item_sizing_eval(it);
826 evas_object_show(it->base.view);
828 prev_it = ELM_CAST(elm_naviframe_top_item_get(obj));
833 evas_object_show(wd->rect);
835 evas_object_pass_events_set(wd->base, EINA_TRUE);
837 edje_object_signal_emit(prev_it->base.view,
838 "elm,state,cur,pushed",
840 edje_object_signal_emit(it->base.view,
841 "elm,state,new,pushed",
845 edje_object_signal_emit(it->base.view, "elm,state,visible", "elm");
846 it->title_visible = EINA_TRUE;
847 wd->stack = eina_list_append(wd->stack, it);
852 elm_naviframe_item_pop(Evas_Object *obj)
854 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
855 Elm_Naviframe_Item *it, *prev_it;
857 Evas_Object *content = NULL;
859 wd = elm_widget_data_get(obj);
860 if (!wd) return NULL;
862 it = ELM_CAST(elm_naviframe_top_item_get(obj));
863 if (!it) return NULL;
864 wd->stack = eina_list_remove(wd->stack, it);
867 content = it->content;
869 prev_it = ELM_CAST(elm_naviframe_top_item_get(obj));
874 evas_object_show(wd->rect);
876 evas_object_pass_events_set(wd->base, EINA_TRUE);
878 edje_object_signal_emit(it->base.view, "elm,state,cur,popped", "elm");
879 evas_object_show(prev_it->base.view);
880 evas_object_raise(prev_it->base.view);
881 edje_object_signal_emit(prev_it->base.view,
882 "elm,state,prev,popped",
892 elm_naviframe_item_pop_to(Elm_Object_Item *it)
894 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
895 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
896 Widget_Data *wd = elm_widget_data_get(navi_it->base.widget);
897 Eina_List *l, *prev_l;
899 if (it == elm_naviframe_top_item_get(navi_it->base.widget)) return;
901 l = eina_list_last(wd->stack)->prev;
905 if (l->data == it) break;
908 wd->stack = eina_list_remove(wd->stack, l);
911 elm_naviframe_item_pop(navi_it->base.widget);
915 elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve)
917 ELM_CHECK_WIDTYPE(obj, widtype);
918 Widget_Data *wd = elm_widget_data_get(obj);
920 wd->preserve = !!preserve;
924 elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj)
926 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
927 Widget_Data *wd = elm_widget_data_get(obj);
928 if (!wd) return EINA_FALSE;
932 EAPI Elm_Object_Item*
933 elm_naviframe_top_item_get(const Evas_Object *obj)
935 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
936 Widget_Data *wd = elm_widget_data_get(obj);
937 if ((!wd) || (!wd->stack)) return NULL;
938 return eina_list_last(wd->stack)->data;
941 EAPI Elm_Object_Item*
942 elm_naviframe_bottom_item_get(const Evas_Object *obj)
944 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
945 Widget_Data *wd = elm_widget_data_get(obj);
946 if (!wd) return NULL;
951 elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
953 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
954 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
956 Elm_Naviframe_Content_Item_Pair *content_pair;
957 Elm_Naviframe_Text_Item_Pair *text_pair;
961 if (!item_style) sprintf(buf, "item/basic");
964 if (strlen(item_style) > sizeof(buf))
965 WRN("too much long style name! : naviframe=%p", navi_it->base.widget);
966 sprintf(buf, "item/%s", item_style);
968 _elm_theme_object_set(navi_it->base.widget,
972 elm_widget_style_get(navi_it->base.widget));
974 EINA_LIST_FOREACH(navi_it->text_list, l, text_pair)
975 _item_text_set_hook(it, text_pair->part, text_pair->text);
977 EINA_LIST_FOREACH(navi_it->content_list, l, content_pair)
978 _item_content_set_hook(it, content_pair->part, content_pair->content);
981 if (navi_it->content)
983 edje_object_part_swallow(navi_it->base.view,
984 "elm.swallow.content",
986 edje_object_signal_emit(navi_it->base.view,
987 "elm,state,content,show",
992 if (navi_it->title_prev_btn)
993 edje_object_part_swallow(navi_it->base.view,
994 "elm.swallow.prev_btn",
995 navi_it->title_prev_btn);
998 if (navi_it->title_next_btn)
999 edje_object_part_swallow(navi_it->base.view,
1000 "elm.swallow.next_btn",
1001 navi_it->title_next_btn);
1003 navi_it->title_visible = EINA_TRUE;
1004 _item_sizing_eval(navi_it);
1008 elm_naviframe_item_style_get(const Elm_Object_Item *it)
1010 ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
1011 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
1012 return navi_it->style;
1016 elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible)
1018 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
1019 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
1021 visible = !!visible;
1022 if (navi_it->title_visible == visible) return;
1025 edje_object_signal_emit(navi_it->base.view, "elm,state,title,show", "elm");
1027 edje_object_signal_emit(navi_it->base.view, "elm,state,title,hide", "elm");
1029 navi_it->title_visible = visible;
1033 elm_naviframe_item_title_visible_get(const Elm_Object_Item *it)
1035 ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
1036 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
1037 return navi_it->title_visible;