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)
635 evas_object_event_callback_del(content_pair->content, EVAS_CALLBACK_DEL, _title_content_del);
636 evas_object_del(content_pair->content);
637 eina_stringshare_del(content_pair->part);
641 EINA_LIST_FOREACH(it->text_list, l, text_pair)
643 eina_stringshare_del(text_pair->part);
644 eina_stringshare_del(text_pair->text);
648 eina_list_free(it->content_list);
649 eina_list_free(it->text_list);
651 wd->stack = eina_list_remove(wd->stack, it);
653 elm_widget_item_del(it);
657 _pushed_finished(void *data,
658 Evas_Object *obj __UNUSED__,
659 const char *emission __UNUSED__,
660 const char *source __UNUSED__)
662 Elm_Naviframe_Item *it = data;
664 evas_object_hide(it->base.view);
668 _popped_finished(void *data,
669 Evas_Object *obj __UNUSED__,
670 const char *emission __UNUSED__,
671 const char *source __UNUSED__)
677 _show_finished(void *data,
678 Evas_Object *obj __UNUSED__,
679 const char *emission __UNUSED__,
680 const char *source __UNUSED__)
682 Elm_Naviframe_Item *it;
687 wd = elm_widget_data_get(it->base.widget);
690 evas_object_smart_callback_call(it->base.widget,
691 SIG_TRANSITION_FINISHED,
695 evas_object_hide(wd->rect);
697 evas_object_pass_events_set(wd->base, EINA_FALSE);
702 _item_content_set(Elm_Naviframe_Item *navi_it, Evas_Object *content)
704 if (navi_it->content == content) return;
705 if (navi_it->content) evas_object_del(navi_it->content);
706 elm_widget_sub_object_add(navi_it->base.widget, content);
707 edje_object_part_swallow(navi_it->base.view,
708 "elm.swallow.content",
711 edje_object_signal_emit(navi_it->base.view,
712 "elm,state,content,show",
715 edje_object_signal_emit(navi_it->base.view,
716 "elm,state,content,hide",
718 evas_object_event_callback_add(content,
722 navi_it->content = content;
723 _item_sizing_eval(navi_it);
727 elm_naviframe_add(Evas_Object *parent)
733 ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
734 ELM_SET_WIDTYPE(widtype, "naviframe");
735 elm_widget_type_set(obj, "naviframe");
736 elm_widget_sub_object_add(parent, obj);
737 elm_widget_data_set(obj, wd);
738 elm_widget_del_hook_set(obj, _del_hook);
739 elm_widget_disable_hook_set(obj, _disable_hook);
740 elm_widget_theme_hook_set(obj, _theme_hook);
741 elm_widget_signal_emit_hook_set(obj, _emit_hook);
744 wd->base = edje_object_add(e);
745 elm_widget_resize_object_set(obj, wd->base);
746 _elm_theme_object_set(obj, wd->base, "naviframe", "base", "default");
749 wd->rect = evas_object_rectangle_add(e);
750 evas_object_color_set(wd->rect, 0, 0, 0, 0);
751 elm_widget_sub_object_add(obj, wd->rect);
753 evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj);
754 evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
755 evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, obj);
756 evas_object_smart_callbacks_descriptions_set(obj, _signals);
758 wd->pass_events = EINA_TRUE;
763 EAPI Elm_Object_Item *
764 elm_naviframe_item_push(Evas_Object *obj,
765 const char *title_label,
766 Evas_Object *prev_btn,
767 Evas_Object *next_btn,
768 Evas_Object *content,
769 const char *item_style)
771 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
773 Elm_Naviframe_Item *prev_it, *it;
775 wd = elm_widget_data_get(obj);
776 if (!wd) return NULL;
779 it = elm_widget_item_new(obj, Elm_Naviframe_Item);
782 ERR("Failed to allocate new item! : naviframe=%p", obj);
786 elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
787 elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
788 elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
789 elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
790 elm_widget_item_content_unset_hook_set(it, _item_content_unset_hook);
791 elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
794 it->base.view = edje_object_add(evas_object_evas_get(obj));
795 evas_object_smart_member_add(it->base.view, wd->base);
796 elm_widget_sub_object_add(obj, it->base.view);
797 edje_object_signal_callback_add(it->base.view,
798 "elm,action,show,finished",
801 edje_object_signal_callback_add(it->base.view,
802 "elm,action,pushed,finished",
804 _pushed_finished, it);
805 edje_object_signal_callback_add(it->base.view,
806 "elm,action,popped,finished",
808 _popped_finished, it);
809 edje_object_signal_callback_add(it->base.view,
810 "elm,action,title,clicked",
814 elm_naviframe_item_style_set(ELM_CAST(it), item_style);
816 _item_text_set_hook(ELM_CAST(it), "elm.text.title", title_label);
819 if ((!prev_btn) && (eina_list_count(wd->stack)))
821 prev_btn = _back_btn_new(obj);
822 _title_prev_btn_set(it, prev_btn, EINA_TRUE);
825 _title_prev_btn_set(it, prev_btn, EINA_FALSE);
827 _title_next_btn_set(it, next_btn);
829 _item_content_set(it, content);
831 _item_sizing_eval(it);
832 evas_object_show(it->base.view);
834 prev_it = ELM_CAST(elm_naviframe_top_item_get(obj));
839 evas_object_show(wd->rect);
841 evas_object_pass_events_set(wd->base, EINA_TRUE);
843 edje_object_signal_emit(prev_it->base.view,
846 edje_object_signal_emit(it->base.view,
851 edje_object_signal_emit(it->base.view, "elm,state,visible", "elm");
852 it->title_visible = EINA_TRUE;
853 wd->stack = eina_list_append(wd->stack, it);
858 elm_naviframe_item_pop(Evas_Object *obj)
860 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
861 Elm_Naviframe_Item *it, *prev_it;
863 Evas_Object *content = NULL;
865 wd = elm_widget_data_get(obj);
866 if (!wd) return NULL;
868 it = ELM_CAST(elm_naviframe_top_item_get(obj));
869 if (!it) return NULL;
870 wd->stack = eina_list_remove(wd->stack, it);
873 content = it->content;
875 prev_it = ELM_CAST(elm_naviframe_top_item_get(obj));
880 evas_object_show(wd->rect);
882 evas_object_pass_events_set(wd->base, EINA_TRUE);
884 edje_object_signal_emit(it->base.view, "elm,state,popped", "elm");
885 evas_object_show(prev_it->base.view);
886 evas_object_raise(prev_it->base.view);
887 edje_object_signal_emit(prev_it->base.view,
898 elm_naviframe_item_pop_to(Elm_Object_Item *it)
900 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
901 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
902 Widget_Data *wd = elm_widget_data_get(navi_it->base.widget);
903 Eina_List *l, *prev_l;
905 if (it == elm_naviframe_top_item_get(navi_it->base.widget)) return;
907 l = eina_list_last(wd->stack)->prev;
911 if (l->data == it) break;
914 wd->stack = eina_list_remove(wd->stack, l);
917 elm_naviframe_item_pop(navi_it->base.widget);
921 elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve)
923 ELM_CHECK_WIDTYPE(obj, widtype);
924 Widget_Data *wd = elm_widget_data_get(obj);
926 wd->preserve = !!preserve;
930 elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj)
932 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
933 Widget_Data *wd = elm_widget_data_get(obj);
934 if (!wd) return EINA_FALSE;
938 EAPI Elm_Object_Item*
939 elm_naviframe_top_item_get(const Evas_Object *obj)
941 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
942 Widget_Data *wd = elm_widget_data_get(obj);
943 if ((!wd) || (!wd->stack)) return NULL;
944 return eina_list_last(wd->stack)->data;
947 EAPI Elm_Object_Item*
948 elm_naviframe_bottom_item_get(const Evas_Object *obj)
950 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
951 Widget_Data *wd = elm_widget_data_get(obj);
952 if (!wd) return NULL;
957 elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
959 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
960 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
962 Elm_Naviframe_Content_Item_Pair *content_pair;
963 Elm_Naviframe_Text_Item_Pair *text_pair;
967 if (!item_style) sprintf(buf, "item/basic");
970 if (strlen(item_style) > sizeof(buf))
971 WRN("too much long style name! : naviframe=%p",
972 navi_it->base.widget);
974 sprintf(buf, "item/%s", item_style);
976 _elm_theme_object_set(navi_it->base.widget,
980 elm_widget_style_get(navi_it->base.widget));
982 EINA_LIST_FOREACH(navi_it->text_list, l, text_pair)
983 _item_text_set_hook(it, text_pair->part, text_pair->text);
985 EINA_LIST_FOREACH(navi_it->content_list, l, content_pair)
986 _item_content_set_hook(it, content_pair->part, content_pair->content);
989 if (navi_it->content)
991 edje_object_part_swallow(navi_it->base.view,
992 "elm.swallow.content",
994 edje_object_signal_emit(navi_it->base.view,
995 "elm,state,content,show",
1000 if (navi_it->title_prev_btn)
1001 edje_object_part_swallow(navi_it->base.view,
1002 "elm.swallow.prev_btn",
1003 navi_it->title_prev_btn);
1006 if (navi_it->title_next_btn)
1007 edje_object_part_swallow(navi_it->base.view,
1008 "elm.swallow.next_btn",
1009 navi_it->title_next_btn);
1011 navi_it->title_visible = EINA_TRUE;
1012 _item_sizing_eval(navi_it);
1016 elm_naviframe_item_style_get(const Elm_Object_Item *it)
1018 ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
1019 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
1020 return navi_it->style;
1024 elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible)
1026 ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
1027 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
1029 visible = !!visible;
1030 if (navi_it->title_visible == visible) return;
1033 edje_object_signal_emit(navi_it->base.view, "elm,state,title,show", "elm");
1035 edje_object_signal_emit(navi_it->base.view, "elm,state,title,hide", "elm");
1037 navi_it->title_visible = visible;
1041 elm_naviframe_item_title_visible_get(const Elm_Object_Item *it)
1043 ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
1044 Elm_Naviframe_Item *navi_it = ELM_CAST(it);
1045 return navi_it->title_visible;