summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYossi Kantor <yossi.kantor@samsung.com>2014-07-23 13:39:25 +0300
committerDaniel Zaoui <daniel.zaoui@samsung.com>2014-09-17 15:08:42 +0300
commit9cdb6987e3b260ed254e4056eec457271dc16c56 (patch)
tree3106ea791aa614a0346dbe6583cd41777dd80cec
parent5c9f23b5c440d4893e6a2bf0afbcd9929ddd35cd (diff)
downloadelementary-9cdb6987e3b260ed254e4056eec457271dc16c56.tar.gz
Porting to Eo: Elm Naviframe Item
-rw-r--r--src/lib/Makefile.am11
-rw-r--r--src/lib/elc_naviframe.c437
-rw-r--r--src/lib/elc_naviframe_common.h84
-rw-r--r--src/lib/elm_naviframe_item.eo111
-rw-r--r--src/lib/elm_widget_naviframe.h23
5 files changed, 378 insertions, 288 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 179e20d07..ce875ae60 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -865,7 +865,9 @@ BUILT_SOURCES = \
elm_index_item.eo.c \
elm_index_item.eo.h \
elm_multibuttonentry_item.eo.c \
- elm_multibuttonentry_item.eo.h
+ elm_multibuttonentry_item.eo.h \
+ elm_naviframe_item.eo.c \
+ elm_naviframe_item.eo.h
elementaryeolianfilesdir = $(datadir)/eolian/include/elementary-@VMAJ@
elementaryeolianfiles_DATA = \
@@ -970,7 +972,8 @@ elementaryeolianfiles_DATA = \
elm_menu_item.eo \
elm_ctxpopup_item.eo \
elm_index_item.eo \
- elm_multibuttonentry_item.eo
+ elm_multibuttonentry_item.eo \
+ elm_naviframe_item.eo
EXTRA_DIST += ${elementaryeolianfiles_DATA}
@@ -1075,6 +1078,7 @@ nodist_includesunstable_HEADERS = \
elm_menu_item.eo.h \
elm_index_item.eo.h \
elm_multibuttonentry_item.eo.h \
+ elm_naviframe_item.eo.h \
elm_ctxpopup_item.eo.h \
elm_slideshow_item.eo.h \
elm_layout.eo.legacy.h \
@@ -1150,7 +1154,8 @@ nodist_includesunstable_HEADERS = \
elm_menu_item.eo.legacy.h \
elm_ctxpopup_item.eo.legacy.h \
elm_index_item.eo.legacy.h \
- elm_multibuttonentry_item.eo.legacy.h
+ elm_multibuttonentry_item.eo.legacy.h \
+ elm_naviframe_item.eo.legacy.h
if HAVE_CXX11
diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c
index ae00e6577..3b04573b6 100644
--- a/src/lib/elc_naviframe.c
+++ b/src/lib/elc_naviframe.c
@@ -2,6 +2,7 @@
# include "elementary_config.h"
#endif
+#define ELM_WIDGET_ITEM_PROTECTED
#include <Elementary.h>
#include "elm_priv.h"
#include "elm_widget_naviframe.h"
@@ -55,7 +56,7 @@ static const Elm_Action key_actions[] = {
};
static void
-_resize_object_reset(Evas_Object *obj, Elm_Naviframe_Item *it)
+_resize_object_reset(Evas_Object *obj, Elm_Naviframe_Item_Data *it)
{
if (it)
{
@@ -65,7 +66,7 @@ _resize_object_reset(Evas_Object *obj, Elm_Naviframe_Item *it)
}
static void
-_prev_page_focus_recover(Elm_Naviframe_Item *it)
+_prev_page_focus_recover(Elm_Naviframe_Item_Data *it)
{
Evas_Object *newest;
unsigned int order = 0;
@@ -85,10 +86,10 @@ _prev_page_focus_recover(Elm_Naviframe_Item *it)
EOLIAN static Eina_Bool
_elm_naviframe_elm_widget_translate(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *sd)
{
- Elm_Naviframe_Item *it;
+ Elm_Naviframe_Item_Data *it;
EINA_INLIST_FOREACH(sd->stack, it)
- elm_widget_item_translate(it);
+ eo_do((Eo *)EO_OBJ(it), elm_wdg_item_translate());
eo_do_super(obj, MY_CLASS, elm_obj_widget_translate());
@@ -101,7 +102,7 @@ _item_content_del_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
it->content = NULL;
elm_object_signal_emit(VIEW(it), "elm,state,content,hide", "elm");
@@ -113,7 +114,7 @@ _item_title_prev_btn_del_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
it->title_prev_btn = NULL;
elm_object_signal_emit(VIEW(it), "elm,state,prev_btn,hide", "elm");
@@ -125,7 +126,7 @@ _item_title_next_btn_del_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
it->title_next_btn = NULL;
elm_object_signal_emit(VIEW(it), "elm,state,next_btn,hide", "elm");
@@ -137,7 +138,7 @@ _item_title_icon_del_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
it->title_icon = NULL;
elm_object_signal_emit(VIEW(it), "elm,state,icon,hide", "elm");
@@ -151,7 +152,7 @@ _title_content_del(void *data,
{
char buf[1024];
Elm_Naviframe_Content_Item_Pair *pair = data;
- Elm_Naviframe_Item *it = pair->it;
+ Elm_Naviframe_Item_Data *it = pair->it;
snprintf(buf, sizeof(buf), "elm,state,%s,hide", pair->part);
elm_object_signal_emit(VIEW(it), buf, "elm");
it->content_list = eina_inlist_remove(it->content_list,
@@ -161,7 +162,7 @@ _title_content_del(void *data,
}
static void
-_item_free(Elm_Naviframe_Item *it)
+_item_free(Elm_Naviframe_Item_Data *it)
{
Eina_Inlist *l;
Elm_Naviframe_Content_Item_Pair *content_pair;
@@ -205,7 +206,7 @@ _item_free(Elm_Naviframe_Item *it)
}
static void
-_item_content_signals_emit(Elm_Naviframe_Item *it)
+_item_content_signals_emit(Elm_Naviframe_Item_Data *it)
{
Elm_Naviframe_Content_Item_Pair *content_pair;
char buf[1024];
@@ -243,7 +244,7 @@ _item_content_signals_emit(Elm_Naviframe_Item *it)
}
static void
-_item_text_signals_emit(Elm_Naviframe_Item *it)
+_item_text_signals_emit(Elm_Naviframe_Item_Data *it)
{
Elm_Naviframe_Text_Item_Pair *text_pair;
char buf[1024];
@@ -269,7 +270,7 @@ _item_text_signals_emit(Elm_Naviframe_Item *it)
}
static Evas_Object *
-_access_object_get(Elm_Naviframe_Item *it, const char* part)
+_access_object_get(Elm_Naviframe_Item_Data *it, const char* part)
{
Evas_Object *po, *ao;
@@ -302,7 +303,7 @@ _access_info_has(Evas_Object *obj, int type)
}
static void
-_item_signals_emit(Elm_Naviframe_Item *it)
+_item_signals_emit(Elm_Naviframe_Item_Data *it)
{
_item_text_signals_emit(it);
_item_content_signals_emit(it);
@@ -311,7 +312,7 @@ _item_signals_emit(Elm_Naviframe_Item *it)
/* FIXME: we need to handle the case when this function is called
* during a transition */
static void
-_item_style_set(Elm_Naviframe_Item *it,
+_item_style_set(Elm_Naviframe_Item_Data *it,
const char *item_style)
{
char buf[256];
@@ -343,13 +344,13 @@ _on_item_title_transition_finished(void *data,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
- evas_object_smart_callback_call(WIDGET(it), SIG_TITLE_TRANSITION_FINISHED, data);
+ evas_object_smart_callback_call(WIDGET(it), SIG_TITLE_TRANSITION_FINISHED, EO_OBJ(it));
}
static void
-_item_title_enabled_update(Elm_Naviframe_Item *nit, Eina_Bool transition)
+_item_title_enabled_update(Elm_Naviframe_Item_Data *nit, Eina_Bool transition)
{
transition = !!transition;
if (transition)
@@ -371,7 +372,7 @@ _item_title_enabled_update(Elm_Naviframe_Item *nit, Eina_Bool transition)
EOLIAN static Eina_Bool
_elm_naviframe_elm_widget_theme_apply(Eo *obj, Elm_Naviframe_Data *sd)
{
- Elm_Naviframe_Item *it;
+ Elm_Naviframe_Item_Data *it;
const char *style = NULL, *sstyle = NULL;
eo_do(obj, style = elm_obj_widget_style_get());
@@ -392,7 +393,7 @@ _elm_naviframe_elm_widget_theme_apply(Eo *obj, Elm_Naviframe_Data *sd)
static char *
_access_info_cb(void *data, Evas_Object *obj EINA_UNUSED)
{
- Elm_Naviframe_Item *nit;
+ Elm_Naviframe_Item_Data *nit;
Evas_Object *layout;
Eina_Strbuf *buf;
const char *info;
@@ -420,7 +421,7 @@ end:
}
static void
-_access_obj_process(Elm_Naviframe_Item *it, Eina_Bool is_access)
+_access_obj_process(Elm_Naviframe_Item_Data *it, Eina_Bool is_access)
{
Evas_Object *ao, *eo;
@@ -436,13 +437,13 @@ _access_obj_process(Elm_Naviframe_Item *it, Eina_Bool is_access)
_elm_access_callback_set(_elm_access_info_get(ao),
ELM_ACCESS_INFO, _access_info_cb, it);
/* to access title access object, any idea? */
- ((Elm_Widget_Item_Data *)it)->access_obj = ao;
+ it->base->access_obj = ao;
}
}
else
{
/* to access title access object, any idea? */
- ao = ((Elm_Widget_Item_Data *)it)->access_obj;
+ ao = it->base->access_obj;
if (!ao) return;
if (it->title_label || it->subtitle_label)
@@ -452,12 +453,13 @@ _access_obj_process(Elm_Naviframe_Item *it, Eina_Bool is_access)
}
}
-static void
-_item_text_set_hook(Elm_Object_Item *it,
- const char *part,
- const char *label)
+EOLIAN static void
+_elm_naviframe_item_elm_widget_item_part_text_set(Eo *eo_it EINA_UNUSED,
+ Elm_Naviframe_Item_Data *it,
+ const char *part,
+ const char *label)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
+ Elm_Naviframe_Item_Data *nit = it;
Elm_Naviframe_Text_Item_Pair *pair = NULL;
char buf[1024];
@@ -513,9 +515,10 @@ _item_text_set_hook(Elm_Object_Item *it,
elm_layout_sizing_eval(WIDGET(nit));
}
-static const char *
-_item_text_get_hook(const Elm_Object_Item *it,
- const char *part)
+EOLIAN static const char *
+_elm_naviframe_item_elm_widget_item_part_text_get(Eo *nit EINA_UNUSED,
+ Elm_Naviframe_Item_Data *it,
+ const char *part)
{
char buf[1024];
@@ -529,13 +532,12 @@ _item_text_get_hook(const Elm_Object_Item *it,
return elm_object_part_text_get(VIEW(it), buf);
}
-static Eina_Bool
-_item_del_pre_hook(Elm_Object_Item *it)
+EOLIAN static Eina_Bool
+_elm_naviframe_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Naviframe_Item_Data *it)
{
- Elm_Naviframe_Item *nit, *prev_it = NULL;
+ Elm_Naviframe_Item_Data *nit = it, *prev_it = NULL;
Eina_Bool top;
- nit = (Elm_Naviframe_Item *)it;
ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd);
nit->delete_me = EINA_TRUE;
@@ -543,7 +545,7 @@ _item_del_pre_hook(Elm_Object_Item *it)
ecore_animator_del(nit->animator);
- top = (it == elm_naviframe_top_item_get(WIDGET(nit)));
+ top = (eo_item == (Eo *)elm_naviframe_top_item_get(WIDGET(nit)));
if (evas_object_data_get(VIEW(nit), "out_of_list"))
goto end;
@@ -553,7 +555,7 @@ _item_del_pre_hook(Elm_Object_Item *it)
{
if (sd->stack && sd->stack->last)
prev_it = EINA_INLIST_CONTAINER_GET(sd->stack->last,
- Elm_Naviframe_Item);
+ Elm_Naviframe_Item_Data);
if (!prev_it) goto end;
elm_widget_tree_unfocusable_set(VIEW(prev_it), EINA_FALSE);
@@ -576,7 +578,7 @@ end:
}
static void
-_item_content_set(Elm_Naviframe_Item *it,
+_item_content_set(Elm_Naviframe_Item_Data *it,
Evas_Object *content)
{
if (it->content == content) return;
@@ -594,7 +596,7 @@ _item_content_set(Elm_Naviframe_Item *it,
}
static void
-_item_title_prev_btn_set(Elm_Naviframe_Item *it,
+_item_title_prev_btn_set(Elm_Naviframe_Item_Data *it,
Evas_Object *btn)
{
if (it->title_prev_btn == btn) return;
@@ -611,7 +613,7 @@ _item_title_prev_btn_set(Elm_Naviframe_Item *it,
}
static void
-_item_title_next_btn_set(Elm_Naviframe_Item *it,
+_item_title_next_btn_set(Elm_Naviframe_Item_Data *it,
Evas_Object *btn)
{
if (it->title_next_btn == btn) return;
@@ -627,7 +629,7 @@ _item_title_next_btn_set(Elm_Naviframe_Item *it,
}
static void
-_item_title_icon_set(Elm_Naviframe_Item *it,
+_item_title_icon_set(Elm_Naviframe_Item_Data *it,
Evas_Object *icon)
{
if (it->title_icon == icon) return;
@@ -643,7 +645,7 @@ _item_title_icon_set(Elm_Naviframe_Item *it,
}
static Evas_Object *
-_item_content_unset(Elm_Naviframe_Item *it)
+_item_content_unset(Elm_Naviframe_Item_Data *it)
{
Evas_Object *content = it->content;
@@ -660,7 +662,7 @@ _item_content_unset(Elm_Naviframe_Item *it)
}
static Evas_Object *
-_item_title_prev_btn_unset(Elm_Naviframe_Item *it)
+_item_title_prev_btn_unset(Elm_Naviframe_Item_Data *it)
{
Evas_Object *content = it->title_prev_btn;
@@ -678,7 +680,7 @@ _item_title_prev_btn_unset(Elm_Naviframe_Item *it)
}
static Evas_Object *
-_item_title_next_btn_unset(Elm_Naviframe_Item *it)
+_item_title_next_btn_unset(Elm_Naviframe_Item_Data *it)
{
Evas_Object *content = it->title_next_btn;
@@ -695,7 +697,7 @@ _item_title_next_btn_unset(Elm_Naviframe_Item *it)
}
static Evas_Object *
-_item_title_icon_unset(Elm_Naviframe_Item *it)
+_item_title_icon_unset(Elm_Naviframe_Item_Data *it)
{
Evas_Object *content = it->title_icon;
@@ -727,7 +729,7 @@ _part_aliasing_eval(const char **part)
}
static void
-_title_content_set(Elm_Naviframe_Item *it,
+_title_content_set(Elm_Naviframe_Item_Data *it,
const char *part,
Evas_Object *content)
{
@@ -788,13 +790,12 @@ _title_content_set(Elm_Naviframe_Item *it,
pair);
}
-static void
-_item_content_set_hook(Elm_Object_Item *it,
- const char *part,
- Evas_Object *content)
+EOLIAN static void
+_elm_naviframe_item_elm_widget_item_part_content_set(Eo *eo_nit EINA_UNUSED,
+ Elm_Naviframe_Item_Data *nit,
+ const char *part,
+ Evas_Object *content)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
-
_part_aliasing_eval(&part);
//specified parts
@@ -809,15 +810,14 @@ _item_content_set_hook(Elm_Object_Item *it,
else
_title_content_set(nit, part, content);
- elm_layout_sizing_eval(WIDGET(it));
+ elm_layout_sizing_eval(WIDGET(nit));
}
-static Evas_Object *
-_item_content_get_hook(const Elm_Object_Item *it,
- const char *part)
+EOLIAN static Evas_Object *
+_elm_naviframe_item_elm_widget_item_part_content_get(Eo *eo_nit EINA_UNUSED,
+ Elm_Naviframe_Item_Data *nit,
+ const char *part)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
-
_part_aliasing_eval(&part);
//specified parts
@@ -835,7 +835,7 @@ _item_content_get_hook(const Elm_Object_Item *it,
}
static Evas_Object *
-_title_content_unset(Elm_Naviframe_Item *it, const char *part)
+_title_content_unset(Elm_Naviframe_Item_Data *it, const char *part)
{
Elm_Naviframe_Content_Item_Pair *pair = NULL;
char buf[1028];
@@ -865,11 +865,11 @@ _title_content_unset(Elm_Naviframe_Item *it, const char *part)
return content;
}
-static Evas_Object *
-_item_content_unset_hook(Elm_Object_Item *it,
- const char *part)
+EOLIAN static Evas_Object *
+_elm_naviframe_item_elm_widget_item_part_content_unset(Eo *eo_nit EINA_UNUSED,
+ Elm_Naviframe_Item_Data *nit,
+ const char *part)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
Evas_Object *o = NULL;
_part_aliasing_eval(&part);
@@ -886,15 +886,16 @@ _item_content_unset_hook(Elm_Object_Item *it,
else
o = _title_content_unset(nit, part);
- elm_layout_sizing_eval(WIDGET(it));
+ elm_layout_sizing_eval(WIDGET(nit));
return o;
}
-static void
-_item_signal_emit_hook(Elm_Object_Item *it,
- const char *emission,
- const char *source)
+EOLIAN static void
+_elm_naviframe_item_elm_widget_item_signal_emit(Eo *eo_it EINA_UNUSED,
+ Elm_Naviframe_Item_Data *it,
+ const char *emission,
+ const char *source)
{
elm_object_signal_emit(VIEW(it), emission, source);
}
@@ -903,13 +904,13 @@ EOLIAN static void
_elm_naviframe_elm_layout_sizing_eval(Eo *obj, Elm_Naviframe_Data *sd)
{
Evas_Coord minw = -1, minh = -1;
- Elm_Naviframe_Item *it, *top;
+ Elm_Naviframe_Item_Data *it, *top;
Evas_Coord x, y, w, h;
if (sd->on_deletion) return;
if (!sd->stack) return;
- top = (EINA_INLIST_CONTAINER_GET(sd->stack->last, Elm_Naviframe_Item));
+ top = (EINA_INLIST_CONTAINER_GET(sd->stack->last, Elm_Naviframe_Item_Data));
evas_object_geometry_get(obj, &x, &y, &w, &h);
EINA_INLIST_FOREACH(sd->stack, it)
{
@@ -985,10 +986,11 @@ _back_btn_new(Evas_Object *obj, const char *title_label)
EOLIAN static void
_elm_naviframe_elm_layout_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *emission, const char *source)
{
- Elm_Naviframe_Item *top_it;
+ Elm_Object_Item *eo_top_it;
- top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
- if (!top_it) return;
+ eo_top_it = elm_naviframe_top_item_get(obj);
+ if (!eo_top_it) return;
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_it, top_it);
eo_do(VIEW(top_it), elm_obj_layout_signal_emit(emission, source));
}
@@ -1060,9 +1062,9 @@ _on_item_title_clicked(void *data,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
- evas_object_smart_callback_call(WIDGET(it), SIG_TITLE_CLICKED, it);
+ evas_object_smart_callback_call(WIDGET(it), SIG_TITLE_CLICKED, EO_OBJ(it));
}
/* "elm,state,cur,pushed"
@@ -1073,7 +1075,7 @@ _on_item_push_finished(void *data,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
if (!it) return;
@@ -1095,7 +1097,7 @@ _on_item_pop_finished(void *data,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
ELM_NAVIFRAME_DATA_GET(WIDGET(it), sd);
@@ -1103,7 +1105,7 @@ _on_item_pop_finished(void *data,
elm_widget_tree_unfocusable_set(VIEW(it), EINA_FALSE);
sd->popping = eina_list_remove(sd->popping, it);
- elm_widget_item_del(data);
+ eo_do((Eo *)EO_OBJ(it), elm_wdg_item_del());
}
/* "elm,state,new,pushed",
@@ -1115,7 +1117,7 @@ _on_item_show_finished(void *data,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
- Elm_Naviframe_Item *it = data;
+ Elm_Naviframe_Item_Data *it = data;
ELM_NAVIFRAME_DATA_GET(WIDGET(it), sd);
@@ -1139,7 +1141,7 @@ _on_item_size_hints_changed(void *data,
}
static void
-_item_dispmode_set(Elm_Naviframe_Item *it, Evas_Display_Mode dispmode)
+_item_dispmode_set(Elm_Naviframe_Item_Data *it, Evas_Display_Mode dispmode)
{
if (it->dispmode == dispmode) return;
switch (dispmode)
@@ -1160,33 +1162,35 @@ _access_prev_btn_info_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
return strdup(E_("Back"));
}
-static Elm_Naviframe_Item *
+EOLIAN static void
+_elm_naviframe_item_eo_base_constructor(Eo *eo_item, Elm_Naviframe_Item_Data *it)
+{
+ eo_do_super(eo_item, ELM_NAVIFRAME_ITEM_CLASS, eo_constructor());
+ it->base = eo_data_scope_get(eo_item, ELM_WIDGET_ITEM_CLASS);
+}
+
+static Elm_Object_Item *
_item_new(Evas_Object *obj,
- const Elm_Naviframe_Item *prev_it,
+ const Elm_Object_Item *eo_prev_it,
const char *title_label,
Evas_Object *prev_btn,
Evas_Object *next_btn,
Evas_Object *content,
const char *item_style)
{
- Elm_Naviframe_Item *it;
+ Eo *eo_item;
ELM_NAVIFRAME_DATA_GET(obj, sd);
- it = elm_widget_item_new(obj, Elm_Naviframe_Item);
- if (!it)
+ eo_item = eo_add(ELM_NAVIFRAME_ITEM_CLASS, obj);
+
+ if (!eo_item)
{
ERR("Failed to allocate new item! : naviframe=%p", obj);
return NULL;
}
- elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
- elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
- elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
- elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
- elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
- elm_widget_item_content_unset_hook_set(it, _item_content_unset_hook);
- elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_item, it);
//item base layout
VIEW(it) = elm_layout_add(obj);
@@ -1213,19 +1217,19 @@ _item_new(Evas_Object *obj,
_item_style_set(it, item_style);
if (title_label)
- _item_text_set_hook((Elm_Object_Item *)it, TITLE_PART, title_label);
+ eo_do(eo_item, elm_wdg_item_part_text_set(TITLE_PART, title_label));
//title buttons
- if ((!prev_btn) && sd->auto_pushed && prev_it)
+ if ((!prev_btn) && sd->auto_pushed && eo_prev_it)
{
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_prev_it, prev_it);
const char *prev_title = prev_it->title_label;
prev_btn = _back_btn_new(obj, prev_title);
}
if (prev_btn)
{
- _item_content_set_hook((Elm_Object_Item *)it, PREV_BTN_PART, prev_btn);
-
+ eo_do(eo_item, elm_wdg_item_part_content_set(PREV_BTN_PART, prev_btn));
if (!elm_layout_text_get(prev_btn, NULL))
{
if (!_access_info_has(prev_btn, ELM_ACCESS_INFO))
@@ -1240,7 +1244,7 @@ _item_new(Evas_Object *obj,
if (next_btn)
{
- _item_content_set_hook((Elm_Object_Item *)it, NEXT_BTN_PART, next_btn);
+ eo_do(eo_item, elm_wdg_item_part_content_set(NEXT_BTN_PART, next_btn));
if (!elm_layout_text_get(next_btn, NULL))
{
@@ -1258,14 +1262,14 @@ _item_new(Evas_Object *obj,
it->title_enabled = EINA_TRUE;
- return it;
+ return EO_OBJ(it);
}
static void
_on_obj_size_hints_changed(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
Evas_Object *obj, void *event_info EINA_UNUSED)
{
- Elm_Naviframe_Item *it;
+ Elm_Naviframe_Item_Data *it;
Evas_Display_Mode dispmode;
ELM_NAVIFRAME_DATA_GET(obj, sd);
@@ -1285,16 +1289,17 @@ _elm_naviframe_elm_widget_focus_next(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED
Evas_Object *ao;
Eina_List *l = NULL;
- Elm_Naviframe_Item *top_it;
+ Elm_Object_Item *eo_top_it;
void *(*list_data_get)(const Eina_List *list);
Eina_Bool int_ret = EINA_FALSE;
- top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
- if (!top_it) goto end;
+ eo_top_it = elm_naviframe_top_item_get(obj);
+ if (!eo_top_it) goto end;
list_data_get = eina_list_data_get;
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_it, top_it);
l = eina_list_append(l, VIEW(top_it));
/* access */
@@ -1329,14 +1334,15 @@ _elm_naviframe_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elm_Naviframe_Dat
Eina_Bool int_ret;
Eina_List *l = NULL;
- Elm_Naviframe_Item *top_it;
+ Elm_Object_Item *eo_top_it;
void *(*list_data_get)(const Eina_List *list);
- top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
- if (!top_it) return EINA_FALSE;
+ eo_top_it = elm_naviframe_top_item_get(obj);
+ if (!eo_top_it) return EINA_FALSE;
list_data_get = eina_list_data_get;
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_it, top_it);
l = eina_list_append(l, VIEW(top_it));
int_ret = elm_widget_focus_list_direction_get
@@ -1369,14 +1375,16 @@ _elm_naviframe_evas_object_smart_add(Eo *obj, Elm_Naviframe_Data *priv)
static Eina_Bool
_pop_transition_cb(void *data)
{
- Elm_Naviframe_Item *prev_it, *it;
- it = (Elm_Naviframe_Item *)data;
+ Elm_Object_Item *eo_prev_it;
+ Elm_Naviframe_Item_Data *it;
+ it = (Elm_Naviframe_Item_Data *)data;
it->animator = NULL;
- prev_it = (Elm_Naviframe_Item *) elm_naviframe_top_item_get(WIDGET(it));
- if (prev_it)
+ eo_prev_it = elm_naviframe_top_item_get(WIDGET(it));
+ if (eo_prev_it)
{
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_prev_it, prev_it);
elm_object_signal_emit(VIEW(prev_it), "elm,state,prev,popped,deferred",
"elm");
edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
@@ -1390,21 +1398,21 @@ _pop_transition_cb(void *data)
EOLIAN static void
_elm_naviframe_evas_object_smart_del(Eo *obj, Elm_Naviframe_Data *sd)
{
- Elm_Naviframe_Item *it;
+ Elm_Naviframe_Item_Data *it;
sd->on_deletion = EINA_TRUE;
while (sd->stack)
{
- it = EINA_INLIST_CONTAINER_GET(sd->stack, Elm_Naviframe_Item);
- elm_widget_item_del(it);
+ it = EINA_INLIST_CONTAINER_GET(sd->stack, Elm_Naviframe_Item_Data);
+ eo_do((Eo *)EO_OBJ(it), elm_wdg_item_del());
}
//All popping items which are not called yet by animator.
EINA_LIST_FREE(sd->popping, it)
{
ecore_animator_del(it->animator);
- elm_widget_item_del(it);
+ eo_do((Eo *)EO_OBJ(it), elm_wdg_item_del());
}
evas_object_del(sd->dummy_edje);
@@ -1416,9 +1424,11 @@ _elm_naviframe_evas_object_smart_del(Eo *obj, Elm_Naviframe_Data *sd)
EOLIAN static void
_elm_naviframe_evas_object_smart_show(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED)
{
- Elm_Naviframe_Item *top;
+ Elm_Object_Item *eo_top;
+
+ eo_top = (Elm_Object_Item *)elm_naviframe_top_item_get(obj);
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_top, top);
- top = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
if (top && !top->delete_me)
evas_object_show(VIEW(top));
}
@@ -1426,12 +1436,13 @@ _elm_naviframe_evas_object_smart_show(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSE
static Eina_Bool
_key_action_top_item_get(Evas_Object *obj, const char *params EINA_UNUSED)
{
- Elm_Naviframe_Item *it = NULL;
- eo_do(obj, it = (Elm_Naviframe_Item *) elm_obj_naviframe_top_item_get());
- if (!it) return EINA_FALSE;
+ Elm_Object_Item *eo_item = NULL;
+ eo_item = eo_do(obj, elm_obj_naviframe_top_item_get());
+ if (!eo_item) return EINA_FALSE;
//FIXME: Replace this below code to elm_naviframe_item_pop() at elm 2.0.
///Leave for compatibility.
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_item, it);
if (it->title_prev_btn)
evas_object_smart_callback_call(it->title_prev_btn, SIG_CLICKED, NULL);
@@ -1455,7 +1466,7 @@ _elm_naviframe_elm_widget_event(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, Eva
EOLIAN static void
_elm_naviframe_elm_widget_access(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *sd, Eina_Bool is_access)
{
- Elm_Naviframe_Item *it;
+ Elm_Naviframe_Item_Data *it;
EINA_INLIST_FOREACH(sd->stack, it)
_access_obj_process(it, is_access);
@@ -1464,14 +1475,14 @@ _elm_naviframe_elm_widget_access(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *sd, Ei
static Eina_Bool
_push_transition_cb(void *data)
{
- Elm_Naviframe_Item *prev_it, *it = data;
+ Elm_Naviframe_Item_Data *prev_it, *it = data;
it->animator = NULL;
if (EINA_INLIST_GET(it)->prev)
{
prev_it = EINA_INLIST_CONTAINER_GET(EINA_INLIST_GET(it)->prev,
- Elm_Naviframe_Item);
+ Elm_Naviframe_Item_Data);
elm_object_signal_emit(VIEW(prev_it), "elm,state,cur,pushed,deferred",
"elm");
edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
@@ -1483,17 +1494,18 @@ _push_transition_cb(void *data)
}
static void
-_item_push_helper(Elm_Naviframe_Item *item)
+_item_push_helper(Elm_Naviframe_Item_Data *item)
{
- Elm_Naviframe_Item *top_item;
+ Elm_Object_Item *eo_top_item;
Evas_Object *obj = WIDGET(item);
ELM_NAVIFRAME_DATA_GET(obj, sd);
- top_item = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
+ eo_top_item = elm_naviframe_top_item_get(obj);
evas_object_show(VIEW(item));
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_item, top_item);
if (top_item) elm_widget_focused_object_clear(VIEW(top_item));
_resize_object_reset(obj, item);
- if (top_item)
+ if (eo_top_item)
{
elm_widget_tree_unfocusable_set(VIEW(item), EINA_FALSE);
elm_widget_tree_unfocusable_set(VIEW(top_item), EINA_TRUE);
@@ -1549,60 +1561,71 @@ _elm_naviframe_eo_base_constructor(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED)
EOLIAN static Elm_Object_Item*
_elm_naviframe_item_push(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style)
{
- Elm_Naviframe_Item *top_item, *item;
+ Elm_Object_Item *top_item, *eo_item;
- top_item = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
- item = _item_new(obj, top_item,
+ top_item = elm_naviframe_top_item_get(obj);
+ eo_item = _item_new(obj, top_item,
title_label, prev_btn, next_btn, content, item_style);
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_item, item);
if (!item) return NULL;
_item_push_helper(item);
- return (Elm_Object_Item *)item;
+ return eo_item;
}
EOLIAN static Elm_Object_Item*
-_elm_naviframe_item_insert_before(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Item *before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style)
+_elm_naviframe_item_insert_before(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Item *eo_before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style)
{
- Elm_Naviframe_Item *it, *prev_it = NULL;
+ Elm_Object_Item *eo_it;
+ Elm_Naviframe_Item_Data *prev_it;
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_before, before);
ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(before, NULL);
- it = (Elm_Naviframe_Item *)before;
+ eo_it = eo_before;
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_it, it);
if (EINA_INLIST_GET(it)->prev)
prev_it = EINA_INLIST_CONTAINER_GET(EINA_INLIST_GET(it)->prev,
- Elm_Naviframe_Item);
- it = _item_new(obj, prev_it,
+ Elm_Naviframe_Item_Data);
+ eo_it = _item_new(obj, EO_OBJ(prev_it),
title_label, prev_btn, next_btn, content, item_style);
- if (!it) return NULL;
+ if (!eo_it) return NULL;
+
+ it = eo_data_scope_get((Eo *)eo_it, ELM_NAVIFRAME_ITEM_CLASS);
sd->stack = eina_inlist_prepend_relative
(sd->stack, EINA_INLIST_GET(it),
- EINA_INLIST_GET(((Elm_Naviframe_Item *)before)));
+ EINA_INLIST_GET(before));
elm_widget_tree_unfocusable_set(VIEW(it), EINA_TRUE);
elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
elm_layout_sizing_eval(obj);
- return (Elm_Object_Item *)it;
+ return eo_it;
}
EOLIAN static Elm_Object_Item*
-_elm_naviframe_item_insert_after(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Item *after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style)
+_elm_naviframe_item_insert_after(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Item *eo_after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style)
{
- Elm_Naviframe_Item *it;
+ Elm_Object_Item *eo_item;
Eina_Bool top_inserted = EINA_FALSE;
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_after, after);
+
ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(after, NULL);
- it = _item_new(obj, (Elm_Naviframe_Item *)after,
+ eo_item = _item_new(obj, eo_after,
title_label, prev_btn, next_btn, content, item_style);
- if (!it) return NULL;
+ if (!eo_item) return NULL;
- if (elm_naviframe_top_item_get(obj) == after) top_inserted = EINA_TRUE;
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_item, it);
+
+ if (elm_naviframe_top_item_get(obj) == eo_after) top_inserted = EINA_TRUE;
sd->stack = eina_inlist_append_relative
(sd->stack, EINA_INLIST_GET(it),
- EINA_INLIST_GET(((Elm_Naviframe_Item *)after)));
+ EINA_INLIST_GET(((Elm_Naviframe_Item_Data *)after)));
+
if (top_inserted)
{
@@ -1623,19 +1646,22 @@ _elm_naviframe_item_insert_after(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Ite
elm_layout_sizing_eval(obj);
- return (Elm_Object_Item *)it;
+ return eo_item;
}
EOLIAN static Evas_Object*
_elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
{
- Elm_Naviframe_Item *it, *prev_it = NULL;
+ Elm_Object_Item *eo_item;
+ Elm_Naviframe_Item_Data *prev_it = NULL;
Evas_Object *content = NULL;
if (sd->freeze_events && sd->popping) return NULL;
- it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
- if (!it) return NULL;
+ eo_item = elm_naviframe_top_item_get(obj);
+ if (!eo_item) return NULL;
+
+ ELM_NAVIFRAME_ITEM_DATA_GET(eo_item, it);
if (it->popping) return NULL;
it->popping = EINA_TRUE;
@@ -1644,11 +1670,11 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
if (it->pop_cb)
{
it->ref++;
- if (!it->pop_cb(it->pop_data, (Elm_Object_Item *)it))
+ if (!it->pop_cb(it->pop_data, eo_item))
{
it->ref--;
if (it->delete_me)
- elm_widget_item_del(it);
+ eo_do((Eo *)eo_item, elm_wdg_item_del());
else
it->popping = EINA_FALSE;
evas_object_unref(obj);
@@ -1665,7 +1691,7 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
if (sd->stack->last->prev)
prev_it = EINA_INLIST_CONTAINER_GET
- (sd->stack->last->prev, Elm_Naviframe_Item);
+ (sd->stack->last->prev, Elm_Naviframe_Item_Data);
sd->stack = eina_inlist_remove(sd->stack, EINA_INLIST_GET(it));
@@ -1695,7 +1721,7 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
sd->popping = eina_list_append(sd->popping, it);
}
else
- elm_widget_item_del(it);
+ eo_do((Eo *)eo_item, elm_wdg_item_del());
return content;
}
@@ -1703,15 +1729,17 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
EAPI void
elm_naviframe_item_pop_to(Elm_Object_Item *it)
{
- Elm_Naviframe_Item *nit;
- Eina_Inlist *l;
+ eo_do((Eo *)it, elm_obj_naviframe_item_pop_to());
+}
- ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it);
+EOLIAN static void
+_elm_naviframe_item_pop_to(Eo *eo_it, Elm_Naviframe_Item_Data *it)
+{
+ Eina_Inlist *l;
- nit = (Elm_Naviframe_Item *)it;
- ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd);
+ ELM_NAVIFRAME_DATA_GET(WIDGET(it), sd);
- if (it == elm_naviframe_top_item_get(WIDGET(nit))) return;
+ if (eo_it == (Eo *)elm_naviframe_top_item_get(WIDGET(it))) return;
l = sd->stack->last->prev;
@@ -1719,34 +1747,37 @@ elm_naviframe_item_pop_to(Elm_Object_Item *it)
while (l)
{
- Elm_Naviframe_Item *iit = EINA_INLIST_CONTAINER_GET
- (l, Elm_Naviframe_Item);
+ Elm_Naviframe_Item_Data *iit = EINA_INLIST_CONTAINER_GET
+ (l, Elm_Naviframe_Item_Data);
- if (iit == nit) break;
+ if (iit == it) break;
l = l->prev;
- elm_widget_item_del(iit);
+ eo_do((Eo *)EO_OBJ(iit), elm_wdg_item_del());
}
sd->on_deletion = EINA_FALSE;
- elm_naviframe_item_pop(WIDGET(nit));
+ elm_naviframe_item_pop(WIDGET(it));
}
EAPI void
elm_naviframe_item_promote(Elm_Object_Item *it)
{
- Elm_Object_Item *prev_top;
- Elm_Naviframe_Item *nit;
+ eo_do((Eo *)it, elm_obj_naviframe_item_promote());
+}
- ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it);
+EOLIAN static void
+_elm_naviframe_item_promote(Eo *eo_it, Elm_Naviframe_Item_Data *it)
+{
+ Elm_Object_Item *eo_prev_top;
+ Elm_Naviframe_Item_Data *nit = it;
- nit = (Elm_Naviframe_Item *)it;
ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd);
- prev_top = elm_naviframe_top_item_get(WIDGET(nit));
- if (it == prev_top) return;
+ eo_prev_top = elm_naviframe_top_item_get(WIDGET(nit));
+ if (eo_it == (Eo *)eo_prev_top) return;
sd->stack = eina_inlist_remove(sd->stack, EINA_INLIST_GET(nit));
_item_push_helper(nit);
@@ -1755,13 +1786,13 @@ elm_naviframe_item_promote(Elm_Object_Item *it)
EOLIAN static void
_elm_naviframe_item_simple_promote(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *sd, Evas_Object *content)
{
- Elm_Naviframe_Item *itr;
+ Elm_Naviframe_Item_Data *itr;
EINA_INLIST_FOREACH(sd->stack, itr)
{
- if (elm_object_item_content_get((Elm_Object_Item *)itr) == content)
+ if (elm_object_item_content_get((Elm_Object_Item *)EO_OBJ(itr)) == content)
{
- elm_naviframe_item_promote((Elm_Object_Item *)itr);
+ elm_naviframe_item_promote((Elm_Object_Item *)EO_OBJ(itr));
break;
}
}
@@ -1783,26 +1814,32 @@ EOLIAN static Elm_Object_Item*
_elm_naviframe_top_item_get(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *sd)
{
if (!sd->stack) return NULL;
- return (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET
- (sd->stack->last, Elm_Naviframe_Item));
+ Elm_Naviframe_Item_Data *ret_it = EINA_INLIST_CONTAINER_GET
+ (sd->stack->last, Elm_Naviframe_Item_Data);
+ return ret_it?EO_OBJ(ret_it):NULL;
}
EOLIAN static Elm_Object_Item*
_elm_naviframe_bottom_item_get(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *sd)
{
if (!sd->stack) return NULL;
- return (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET
- (sd->stack, Elm_Naviframe_Item));
+ Elm_Naviframe_Item_Data *ret_it = EINA_INLIST_CONTAINER_GET
+ (sd->stack, Elm_Naviframe_Item_Data);
+ return ret_it?EO_OBJ(ret_it):NULL;
}
EAPI void
elm_naviframe_item_style_set(Elm_Object_Item *it,
const char *item_style)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
-
- ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it);
+ eo_do((Eo *)it, elm_obj_naviframe_item_style_set(item_style));
+}
+EOLIAN static void
+_elm_naviframe_item_style_set(Eo *eo_item EINA_UNUSED,
+ Elm_Naviframe_Item_Data *nit,
+ const char *item_style)
+{
if (item_style && !strcmp(item_style, nit->style)) return;
if (!item_style)
@@ -1816,10 +1853,13 @@ elm_naviframe_item_style_set(Elm_Object_Item *it,
EAPI const char *
elm_naviframe_item_style_get(const Elm_Object_Item *it)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
-
- ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it, NULL);
+ return eo_do((Eo *)it, elm_obj_naviframe_item_style_get());
+}
+EOLIAN static const char *
+_elm_naviframe_item_style_get(Eo *eo_item EINA_UNUSED,
+ Elm_Naviframe_Item_Data *nit)
+{
return nit->style;
}
@@ -1841,10 +1881,15 @@ elm_naviframe_item_title_enabled_set(Elm_Object_Item *it,
Eina_Bool enabled,
Eina_Bool transition)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
-
- ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it);
+ eo_do((Eo *)it, elm_obj_naviframe_item_title_enabled_set(enabled, transition));
+}
+EOLIAN static void
+_elm_naviframe_item_title_enabled_set(Eo *eo_item EINA_UNUSED,
+ Elm_Naviframe_Item_Data *nit,
+ Eina_Bool enabled,
+ Eina_Bool transition)
+{
enabled = !!enabled;
if (nit->title_enabled == enabled) return;
@@ -1857,20 +1902,27 @@ elm_naviframe_item_title_enabled_set(Elm_Object_Item *it,
EAPI Eina_Bool
elm_naviframe_item_title_enabled_get(const Elm_Object_Item *it)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
-
- ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ return eo_do((Eo *)it, elm_obj_naviframe_item_title_enabled_get());
+}
+EOLIAN static Eina_Bool
+_elm_naviframe_item_title_enabled_get(Eo *eo_item EINA_UNUSED, Elm_Naviframe_Item_Data *nit)
+{
return nit->title_enabled;
}
EAPI void
elm_naviframe_item_pop_cb_set(Elm_Object_Item *it, Elm_Naviframe_Item_Pop_Cb func, void *data)
{
- Elm_Naviframe_Item *nit = (Elm_Naviframe_Item *)it;
-
- ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it);
+ eo_do((Eo *)it, elm_obj_naviframe_item_pop_cb_set(func, data));
+}
+EOLIAN static void
+_elm_naviframe_item_pop_cb_set(Eo *eo_item EINA_UNUSED,
+ Elm_Naviframe_Item_Data *nit,
+ Elm_Naviframe_Item_Pop_Cb func,
+ void *data)
+{
nit->pop_cb = func;
nit->pop_data = data;
}
@@ -1891,10 +1943,10 @@ EOLIAN static Eina_List*
_elm_naviframe_items_get(Eo *obj EINA_UNUSED, Elm_Naviframe_Data *sd)
{
Eina_List *ret = NULL;
- Elm_Naviframe_Item *itr;
+ Elm_Naviframe_Item_Data *itr;
EINA_INLIST_FOREACH(sd->stack, itr)
- ret = eina_list_append(ret, itr);
+ ret = eina_list_append(ret, EO_OBJ(itr));
return ret;
}
@@ -1935,4 +1987,5 @@ _elm_naviframe_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UN
return &atspi_actions[0];
}
+#include "elm_naviframe_item.eo.c"
#include "elm_naviframe.eo.c"
diff --git a/src/lib/elc_naviframe_common.h b/src/lib/elc_naviframe_common.h
index 757bdb551..b14eae0b0 100644
--- a/src/lib/elc_naviframe_common.h
+++ b/src/lib/elc_naviframe_common.h
@@ -21,102 +21,18 @@ typedef Eina_Bool (*Elm_Naviframe_Item_Pop_Cb)(void *data, Elm_Object_Item *it);
*/
EAPI Evas_Object *elm_naviframe_add(Evas_Object *parent);
-/**
- * @brief Pop the items between the top and the above one on the given item.
- *
- * The items between the top and the given item will be deleted first,
- * and then the top item will be popped at last.
- *
- * @param it The naviframe item
- *
- * @ingroup Naviframe
- */
EAPI void elm_naviframe_item_pop_to(Elm_Object_Item *it);
-/**
- * Promote an item already in the naviframe stack to the top of the stack
- *
- * @param it The naviframe item
- *
- * This will take the indicated item and promote it to the top of the stack
- * as if it had been pushed there. The item must already be inside the
- * naviframe stack to work.
- *
- */
EAPI void elm_naviframe_item_promote(Elm_Object_Item *it);
-/**
- * @brief Set an item style
- *
- * @param it The naviframe item
- * @param item_style The current item style name. @c NULL would be default
- *
- * The following styles are available for this item:
- * @li @c "default"
- *
- * @see also elm_naviframe_item_style_get()
- *
- * @ingroup Naviframe
- */
EAPI void elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style);
-/**
- * @brief Get an item style
- *
- * @param it The naviframe item
- * @return The current item style name
- *
- * @see also elm_naviframe_item_style_set()
- *
- * @ingroup Naviframe
- */
EAPI const char *elm_naviframe_item_style_get(const Elm_Object_Item *it);
-/**
- * @brief Enable/Disable the title area with transition effect
- *
- * @param it The naviframe item
- * @param enabled If @c EINA_TRUE, title area will be enabled, disabled
- * otherwise
- * @param transition If @c EINA_TRUE, transition effect of the title will be
- * visible, invisible otherwise
- *
- * When the title area is disabled, then the controls would be hidden so as
- * to expand the content area to full-size.
- *
- * @see also elm_naviframe_item_title_enabled_get()
- * @see also elm_naviframe_item_title_visible_set()
- *
- * @ingroup Naviframe
- */
EAPI void elm_naviframe_item_title_enabled_set(Elm_Object_Item *it, Eina_Bool enabled, Eina_Bool transition);
-/**
- * @brief Get a value whether title area is enabled or not.
- *
- * @param it The naviframe item
- * @return If @c EINA_TRUE, title area is enabled
- *
- * @see also elm_naviframe_item_title_enabled_set()
- *
- * @ingroup Naviframe
- */
EAPI Eina_Bool elm_naviframe_item_title_enabled_get(const Elm_Object_Item *it);
-/**
- * @brief Set a function to be called when @c it of the naviframe is going to be
- * popped.
- *
- * @param it The item to set the callback on
- * @param func the callback function.
- *
- * @warning Don't set "clicked" callback to the prev button additionally if the
- * function does an exact same logic with this @c func. When hardware back key
- * is pressed then both callbacks will be called.
- *
- * @since 1.8
- * @ingroup Naviframe
- */
EAPI void elm_naviframe_item_pop_cb_set(Elm_Object_Item *it, Elm_Naviframe_Item_Pop_Cb func, void *data);
Elm_Object_Item *elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
diff --git a/src/lib/elm_naviframe_item.eo b/src/lib/elm_naviframe_item.eo
new file mode 100644
index 000000000..937d4f127
--- /dev/null
+++ b/src/lib/elm_naviframe_item.eo
@@ -0,0 +1,111 @@
+class Elm_Naviframe_Item(Elm_Widget_Item)
+{
+ legacy_prefix: null;
+ eo_prefix: elm_obj_naviframe_item;
+ properties {
+ style {
+ get {
+ /*@
+ Get an item style
+
+ @see also elm_naviframe_item_style_set()
+
+ @ingroup Naviframe
+ */
+ }
+ set {
+ /*@
+ Set an item style
+
+ The following styles are available for this item:
+ @li @c "default"
+
+ @see also elm_naviframe_item_style_get()
+
+ @ingroup Naviframe
+ */
+ }
+ values {
+ const (char) *style; /*@ The current item style name. @c NULL would be default */
+ }
+ }
+ }
+ methods {
+ pop_to {
+ /*@
+ Pop the items between the top and the above one on the given item.
+
+ The items between the top and the given item will be deleted first,
+ and then the top item will be popped at last.
+
+ @ingroup Naviframe
+ */
+ }
+ title_enabled_get @const {
+ /*@
+ Get a value whether title area is enabled or not.
+
+ @see also elm_naviframe_item_title_enabled_set()
+
+ @ingroup Naviframe
+ */
+ return: bool; /*@ If @c EINA_TRUE, title area will be enabled, disabled otherwise */
+ }
+ title_enabled_set {
+ /*@
+ Enable/Disable the title area with transition effect
+
+ When the title area is disabled, then the controls would be hidden so as
+ to expand the content area to full-size.
+
+ @see also elm_naviframe_item_title_enabled_get()
+ @see also elm_naviframe_item_title_visible_set()
+
+ @ingroup Naviframe
+ */
+ params {
+ @in Eina_Bool enable; /*@ If @c EINA_TRUE, title area will be enabled, disabled otherwise */
+ @in Eina_Bool transition; /*@ If @c EINA_TRUE, transition effect of the title will be visible, invisible otherwise */
+ }
+ }
+ promote {
+ /*@
+ Promote an item already in the naviframe stack to the top of the stack
+
+ This will take the indicated item and promote it to the top of the stack
+ as if it had been pushed there. The item must already be inside the
+ naviframe stack to work.
+ */
+ }
+
+ pop_cb_set {
+ /*@
+ Set a function to be called when @c it of the naviframe is going to be
+ popped.
+
+ @param func the callback function.
+
+ @warning Don't set "clicked" callback to the prev button additionally if the
+ function does an exact same logic with this @c func. When hardware back key
+ is pressed then both callbacks will be called.
+
+ @since 1.8
+ @ingroup Naviframe
+ */
+ params {
+ @in Elm_Naviframe_Item_Pop_Cb func; /*@ The callback function */
+ @in void *data; /*@ Data to be passed to func */
+ }
+ }
+ }
+ implements {
+ Eo.Base.constructor;
+ Elm_Widget_Item.del_pre;
+ Elm_Widget_Item.signal_emit;
+ Elm_Widget_Item.part_text.set;
+ Elm_Widget_Item.part_text.get;
+ Elm_Widget_Item.part_content.get;
+ Elm_Widget_Item.part_content.set;
+ Elm_Widget_Item.part_content_unset;
+ }
+}
diff --git a/src/lib/elm_widget_naviframe.h b/src/lib/elm_widget_naviframe.h
index 8abf384ea..f74200c04 100644
--- a/src/lib/elm_widget_naviframe.h
+++ b/src/lib/elm_widget_naviframe.h
@@ -2,6 +2,7 @@
#define ELM_WIDGET_NAVIFRAME_H
#include "Elementary.h"
+#include "elm_naviframe_item.eo.h"
/* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
* CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
@@ -9,6 +10,7 @@
* IT AT RUNTIME.
*/
+#include "elm_object_item_migration_temp.h"
/**
* @addtogroup Widget
* @{
@@ -37,10 +39,10 @@ struct _Elm_Naviframe_Data
Eina_Bool freeze_events : 1;
};
-typedef struct _Elm_Naviframe_Item Elm_Naviframe_Item;
-struct _Elm_Naviframe_Item
+typedef struct _Elm_Naviframe_Item_Data Elm_Naviframe_Item_Data;
+struct _Elm_Naviframe_Item_Data
{
- ELM_WIDGET_ITEM;
+ Elm_Widget_Item_Data *base;
EINA_INLIST;
Eina_Inlist *content_list;
@@ -73,7 +75,7 @@ struct _Elm_Naviframe_Content_Item_Pair
EINA_INLIST;
const char *part;
Evas_Object *content;
- Elm_Naviframe_Item *it;
+ Elm_Naviframe_Item_Data *it;
};
typedef struct _Elm_Naviframe_Text_Item_Pair Elm_Naviframe_Text_Item_Pair;
@@ -113,11 +115,14 @@ struct _Elm_Naviframe_Text_Item_Pair
return
#define ELM_NAVIFRAME_ITEM_CHECK(it) \
- ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item_Data *)it, ); \
- ELM_NAVIFRAME_CHECK(it->base.widget);
+ if (EINA_UNLIKELY(!eo_isa((it->base->eo_obj), ELM_NAVIFRAME_ITEM_CLASS))) \
+ return
+
+#define ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it, ...) \
+ if (EINA_UNLIKELY(!eo_isa((it->base->eo_obj), ELM_NAVIFRAME_ITEM_CLASS))) \
+ return __VA_ARGS__;
-#define ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(it, ...) \
- ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item_Data *)it, __VA_ARGS__); \
- ELM_NAVIFRAME_CHECK(it->base.widget) __VA_ARGS__;
+#define ELM_NAVIFRAME_ITEM_DATA_GET(o, sd) \
+ Elm_Naviframe_Item_Data *sd = eo_data_scope_get((Eo *)o, ELM_NAVIFRAME_ITEM_CLASS)
#endif