elementary/elm_naviframe - modified to use elm_object_item common_apis
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 4 Aug 2011 16:37:36 +0000 (16:37 +0000)
committerhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 4 Aug 2011 16:37:36 +0000 (16:37 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@62097 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/test_naviframe.c
src/lib/Elementary.h.in
src/lib/elc_naviframe.c

index 453490f..5cc5e81 100644 (file)
@@ -54,8 +54,8 @@ _page4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
                                 bt,
                                 bt2,
                                 NULL);
-   elm_naviframe_item_subtitle_label_set(it, "Here is sub-title part!");
-   elm_naviframe_item_icon_set(it, ic);
+   elm_object_item_text_part_set(it, "elm.text.subtitle", "Here is sub-title part!");
+   elm_object_item_content_part_set(it, "elm.swallow.icon", ic);
    elm_naviframe_item_title_visible_set(it, EINA_FALSE);
    evas_object_smart_callback_add(bt2, "clicked", _title_visible, it);
 }
@@ -92,8 +92,8 @@ _page3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
                                 bt2,
                                 bt3,
                                 NULL);
-   elm_naviframe_item_subtitle_label_set(it, "Here is sub-title part!");
-   elm_naviframe_item_icon_set(it, ic);
+   elm_object_item_text_part_set(it, "elm.text.subtitle", "Here is sub-title part!");
+   elm_object_item_content_part_set(it, "elm.swallow.icon", ic);
 }
 
 void
@@ -123,7 +123,7 @@ _page2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
                                 bt,
                                 bt2,
                                 NULL);
-   elm_naviframe_item_subtitle_label_set(it, "Here is sub-title part!");
+   elm_object_item_text_part_set(it, "elm.text.subtitle", "Here is sub-title part!");
 }
 
 void
index ec47c2a..ae87c69 100644 (file)
@@ -348,6 +348,7 @@ extern "C" {
     */
    typedef struct _Elm_Object_Item Elm_Object_Item;
 
+
    /**
     * Called back when a widget's tooltip is activated and needs content.
     * @param data user-data given to elm_object_tooltip_content_cb_set()
@@ -24149,8 +24150,6 @@ extern "C" {
    EAPI Evas_Object        *elm_naviframe_item_pop(Evas_Object *obj) 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 void                elm_naviframe_item_content_set(Elm_Object_Item *item, Evas_Object *content) EINA_ARG_NONNULL(1);
-   EAPI Evas_Object        *elm_naviframe_item_content_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    EAPI void                elm_naviframe_item_title_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
    EAPI const char         *elm_naviframe_item_title_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    EAPI void                elm_naviframe_item_subtitle_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
@@ -24159,8 +24158,6 @@ extern "C" {
    EAPI Elm_Object_Item    *elm_naviframe_bottom_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void                elm_naviframe_item_button_set(Elm_Object_Item *it, Evas_Object *btn, Elm_Naviframe_Button_Type btn_type) EINA_ARG_NONNULL(1);
    EAPI Evas_Object        *elm_naviframe_item_button_get(const Elm_Object_Item *it, Elm_Naviframe_Button_Type btn_type) EINA_ARG_NONNULL(1);
-   EAPI void                elm_naviframe_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
-   EAPI Evas_Object        *elm_naviframe_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    EAPI void                elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style) EINA_ARG_NONNULL(1);
    EAPI const char         *elm_naviframe_item_style_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    EAPI void                elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible) EINA_ARG_NONNULL(1);
index f49aff3..f224773 100644 (file)
@@ -41,6 +41,18 @@ static const Evas_Smart_Cb_Description _signals[] = {
 static void _del_hook(Evas_Object *obj);
 static void _theme_hook(Evas_Object *obj);
 static void _disable_hook(Evas_Object *obj);
+static void _text_set_hook(Elm_Object_Item *it,
+                           const char *part,
+                           const char *label);
+static const char *_text_get_hook(const Elm_Object_Item *it,
+                                   const char *part);
+static void _content_set_hook(Elm_Object_Item *it,
+                              const char *part,
+                              Evas_Object *content);
+static Evas_Object *_content_get_hook(const Elm_Object_Item *it,
+                                      const char *part);
+static Evas_Object *_content_unset_hook(Elm_Object_Item *it,
+                                        const char *part);
 static void _sizing_eval(Evas_Object *obj);
 static void _item_sizing_eval(Elm_Naviframe_Item *it);
 static void _move(void *data, Evas *e, Evas_Object *obj, void *event_info);
@@ -88,6 +100,15 @@ static void _show_finished(void *data,
                            Evas_Object *obj,
                            const char *emission,
                            const char *source);
+static void _item_content_set(Elm_Naviframe_Item *navi_it,
+                              Evas_Object *content);
+static void _item_icon_set(Elm_Naviframe_Item *it, Evas_Object *icon);
+static void _item_title_label_set(Elm_Naviframe_Item *navi_it,
+                                  const char *label);
+static void _item_subtitle_label_set(Elm_Naviframe_Item *navi_it,
+                                     const char *label);
+
+
 
 static void
 _del_hook(Evas_Object *obj)
@@ -118,6 +139,87 @@ _disable_hook(Evas_Object *obj __UNUSED__)
 }
 
 static void
+_text_set_hook(Elm_Object_Item *it, const char *part, const char *label)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
+
+   if ((!part) || (!strcmp(part, "elm.text.title")))
+     {
+        _item_title_label_set(navi_it, label);
+        return;
+     }
+   else if(!strcmp(part, "elm.text.subtitle"))
+     {
+        _item_subtitle_label_set(navi_it, label);
+        return;
+     }
+}
+
+static const char *
+_text_get_hook(const Elm_Object_Item *it, const char *part)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
+
+   if ((!part) || (!strcmp(part, "elm.text.title")))
+     {
+        return navi_it->title_label;
+     }
+   else if(!strcmp(part, "elm.text.subtitle"))
+     {
+        return navi_it->title_sublabel;
+     }
+   return NULL;
+}
+
+static void
+_content_set_hook(Elm_Object_Item *it,
+                  const char *part,
+                  Evas_Object *content)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
+
+   if ((!(part)) || (!strcmp(part, "elm.swallow.content")))
+     {
+        _item_content_set(navi_it, content);
+        return;
+     }
+   else if(!strcmp(part, "elm.swallow.icon"))
+     {
+        _item_icon_set(navi_it, content);
+        return;
+     }
+}
+
+static Evas_Object *
+_content_get_hook(const Elm_Object_Item *it,
+                  const char *part)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
+
+   if ((!(part)) || (!strcmp(part, "elm.swallow.content")))
+     {
+        return navi_it->content;
+     }
+   else if(!strcmp(part, "elm.swallow.icon"))
+     {
+        return navi_it->title_icon;
+     }
+   return NULL;
+}
+
+static Evas_Object *
+_content_unset_hook(Elm_Object_Item *it __UNUSED__,
+                    const char *part __UNUSED__)
+{
+   //FIXME:
+   return NULL;
+}
+
+static void
 _sizing_eval(Evas_Object *obj)
 {
    Widget_Data *wd;
@@ -366,6 +468,79 @@ _show_finished(void *data,
      evas_object_pass_events_set(wd->base, EINA_FALSE);
 }
 
+static void
+_item_content_set(Elm_Naviframe_Item *navi_it, Evas_Object *content)
+{
+   if (navi_it->content == content) return;
+   if (navi_it->content) evas_object_del(navi_it->content);
+   elm_widget_sub_object_add(navi_it->base.widget, content);
+   edje_object_part_swallow(navi_it->base.view, "elm.swallow.content", content);
+   if (content)
+     edje_object_signal_emit(navi_it->base.view,
+                             "elm,state,content,show",
+                             "elm");
+   else
+     edje_object_signal_emit(navi_it->base.view,
+                             "elm,state,content,hide",
+                             "elm");
+   evas_object_event_callback_add(content,
+                                  EVAS_CALLBACK_DEL,
+                                  _content_del,
+                                  navi_it);
+   navi_it->content = content;
+   _item_sizing_eval(navi_it);
+}
+
+static void
+_item_icon_set(Elm_Naviframe_Item *navi_it, Evas_Object *icon)
+{
+   Widget_Data *wd = elm_widget_data_get(navi_it->base.widget);
+   if (!wd) return;
+
+   if (navi_it->title_icon == icon) return;
+   if (navi_it->title_icon) evas_object_del(navi_it->title_icon);
+   navi_it->title_icon = icon;
+   if (!icon)
+     {
+        edje_object_signal_emit(navi_it->title,
+                                "elm,state,icon,hide",
+                                "elm");
+        return;
+     }
+   elm_widget_sub_object_add(navi_it->base.widget, icon);
+   edje_object_part_swallow(navi_it->title, "elm.swallow.icon", icon);
+   edje_object_signal_emit(navi_it->title, "elm,state,icon,show", "elm");
+
+   evas_object_event_callback_add(icon, EVAS_CALLBACK_DEL, _title_icon_del, navi_it);
+   _item_sizing_eval(navi_it);
+}
+
+static void
+_item_title_label_set(Elm_Naviframe_Item *navi_it, const char *label)
+{
+   edje_object_part_text_set(navi_it->title, "elm.text.title", label);
+   if (label)
+     edje_object_signal_emit(navi_it->title, "elm,state,title,show", "elm");
+   else
+     edje_object_signal_emit(navi_it->title, "elm,state,title,hidew", "elm");
+
+   eina_stringshare_replace(&navi_it->title_label, label);
+   _item_sizing_eval(navi_it);
+}
+
+static void
+_item_subtitle_label_set(Elm_Naviframe_Item *navi_it, const char *label)
+{
+   edje_object_part_text_set(navi_it->title, "elm.text.subtitle", label);
+   if (label)
+     edje_object_signal_emit(navi_it->title, "elm,state,subtitle,show", "elm");
+   else
+     edje_object_signal_emit(navi_it->title, "elm,state,subtitle,hide", "elm");
+
+   eina_stringshare_replace(&navi_it->title_sublabel, label);
+   _item_sizing_eval(navi_it);
+}
+
 EAPI Evas_Object *
 elm_naviframe_add(Evas_Object *parent)
 {
@@ -413,6 +588,13 @@ elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *
         ERR("Failed to allocate new item! : naviframe=%p", obj);
         return NULL;
      }
+
+   elm_widget_item_text_set_hook_set(it, _text_set_hook);
+   elm_widget_item_text_get_hook_set(it, _text_get_hook);
+   elm_widget_item_content_set_hook_set(it, _content_set_hook);
+   elm_widget_item_content_get_hook_set(it, _content_get_hook);
+   elm_widget_item_content_unset_hook_set(it, _content_unset_hook);
+
    //item base layout
    it->base.view = edje_object_add(evas_object_evas_get(obj));
    evas_object_smart_member_add(it->base.view, wd->base);
@@ -443,7 +625,7 @@ elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *
                                    "elm",
                                    _title_clicked, it);
 
-   elm_naviframe_item_title_label_set(ELM_CAST(it), title_label);
+   _item_title_label_set(it, title_label);
 
    //title buttons
    if ((!prev_btn) && (eina_list_count(wd->stack)))
@@ -457,7 +639,7 @@ elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *
    _title_next_btn_set(it, next_btn);
    edje_object_part_swallow(it->base.view, "elm.swallow.title", it->title);
 
-   elm_naviframe_item_content_set(ELM_CAST(it), content);
+   _item_content_set(it, content);
 
    _item_sizing_eval(it);
    evas_object_show(it->base.view);
@@ -535,88 +717,6 @@ elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj)
    return wd->preserve;
 }
 
-EAPI void
-elm_naviframe_item_content_set(Elm_Object_Item *it, Evas_Object *content)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-
-   if (navi_it->content == content) return;
-   if (navi_it->content) evas_object_del(navi_it->content);
-   elm_widget_sub_object_add(navi_it->base.widget, content);
-   edje_object_part_swallow(navi_it->base.view, "elm.swallow.content", content);
-   if (content)
-     edje_object_signal_emit(navi_it->base.view,
-                             "elm,state,content,show",
-                             "elm");
-   else
-     edje_object_signal_emit(navi_it->base.view,
-                             "elm,state,content,hide",
-                             "elm");
-   evas_object_event_callback_add(content,
-                                  EVAS_CALLBACK_DEL,
-                                  _content_del,
-                                  navi_it);
-   navi_it->content = content;
-   _item_sizing_eval(navi_it);
-}
-
-EAPI Evas_Object *
-elm_naviframe_item_content_get(const Elm_Object_Item *it)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-   return navi_it->content;
-}
-
-EAPI void
-elm_naviframe_item_title_label_set(Elm_Object_Item *it, const char *label)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-
-   edje_object_part_text_set(navi_it->title, "elm.text.title", label);
-   if (label)
-     edje_object_signal_emit(navi_it->title, "elm,state,title,show", "elm");
-   else
-     edje_object_signal_emit(navi_it->title, "elm,state,title,hidew", "elm");
-
-   eina_stringshare_replace(&navi_it->title_label, label);
-   _item_sizing_eval(navi_it);
-}
-
-EAPI const char *
-elm_naviframe_item_title_label_get(const Elm_Object_Item *it)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-   return navi_it->title_label;
-}
-
-EAPI void
-elm_naviframe_item_subtitle_label_set(Elm_Object_Item *it, const char *label)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-
-   edje_object_part_text_set(navi_it->title, "elm.text.subtitle", label);
-   if (label)
-     edje_object_signal_emit(navi_it->title, "elm,state,subtitle,show", "elm");
-   else
-     edje_object_signal_emit(navi_it->title, "elm,state,subtitle,hide", "elm");
-
-   eina_stringshare_replace(&navi_it->title_sublabel, label);
-   _item_sizing_eval(navi_it);
-}
-
-EAPI const char *
-elm_naviframe_item_subtitle_label_get(const Elm_Object_Item *it)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-   return navi_it->title_sublabel;
-}
-
 EAPI Elm_Object_Item*
 elm_naviframe_top_item_get(const Evas_Object *obj)
 {
@@ -676,41 +776,6 @@ elm_naviframe_item_button_get(const Elm_Object_Item *it, Elm_Naviframe_Button_Ty
 }
 
 EAPI void
-elm_naviframe_item_icon_set(Elm_Object_Item *it, Evas_Object *icon)
-{
-   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);
-   if (!wd) return;
-
-   if (navi_it->title_icon == icon) return;
-   if (navi_it->title_icon) evas_object_del(navi_it->title_icon);
-   navi_it->title_icon = icon;
-   if (!icon)
-     {
-        edje_object_signal_emit(navi_it->title,
-                                "elm,state,icon,hide",
-                                "elm");
-        return;
-     }
-   elm_widget_sub_object_add(navi_it->base.widget, icon);
-   edje_object_part_swallow(navi_it->title, "elm.swallow.icon", icon);
-   edje_object_signal_emit(navi_it->title, "elm,state,icon,show", "elm");
-
-   evas_object_event_callback_add(icon, EVAS_CALLBACK_DEL, _title_icon_del, navi_it);
-   _item_sizing_eval(navi_it);
-}
-
-EAPI Evas_Object *
-elm_naviframe_item_icon_get(const Elm_Object_Item *it)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-   return navi_it->title_icon;
-}
-
-EAPI void
 elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);