Eolian: Integration of Naviframe

This commit is contained in:
Daniel Zaoui 2014-03-30 11:51:39 +03:00
parent 4b163aecbc
commit b62d73c702
5 changed files with 425 additions and 458 deletions

View File

@ -623,6 +623,8 @@ BUILT_SOURCES = \
elm_menu.eo.h \
elc_multibuttonentry.eo.c \
elc_multibuttonentry.eo.h \
elc_naviframe.eo.c \
elc_naviframe.eo.h \
elm_panel.eo.c \
elm_panel.eo.h \
elm_mapbuf.eo.c \
@ -730,6 +732,7 @@ EXTRA_DIST += \
elm_map.eo \
elm_menu.eo \
elc_multibuttonentry.eo \
elc_naviframe.eo \
elm_panel.eo \
elm_mapbuf.eo \
elm_notify.eo \
@ -809,6 +812,7 @@ nodist_includesunstable_HEADERS = \
elm_map.eo.h \
elm_menu.eo.h \
elc_multibuttonentry.eo.h \
elc_naviframe.eo.h \
elm_panel.eo.h \
elm_mapbuf.eo.h \
elm_notify.eo.h \

View File

@ -7,8 +7,6 @@
#include "elm_widget_naviframe.h"
#include "elm_widget_container.h"
EAPI Eo_Op ELM_OBJ_NAVIFRAME_BASE_ID = EO_NOOP;
#define MY_CLASS ELM_OBJ_NAVIFRAME_CLASS
#define MY_CLASS_NAME "Elm_Naviframe"
@ -69,11 +67,9 @@ _prev_page_focus_recover(Elm_Naviframe_Item *it)
}
}
static void
_elm_naviframe_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_widget_translate(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Naviframe_Smart_Data *sd = _pd;
Elm_Naviframe_Item *it;
EINA_INLIST_FOREACH(sd->stack, it)
@ -81,7 +77,7 @@ _elm_naviframe_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
eo_do_super(obj, MY_CLASS, elm_obj_widget_translate(NULL));
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
@ -336,12 +332,10 @@ _item_title_enabled_update(Elm_Naviframe_Item *nit, Eina_Bool transition)
}
}
static void
_elm_naviframe_smart_theme(Eo *obj, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_widget_theme_apply(Eo *obj, Elc_Naviframe_Data *sd)
{
Elm_Naviframe_Item *it;
Elm_Naviframe_Smart_Data *sd = _pd;
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
const char *style, *sstyle;
eo_do(obj, elm_obj_widget_style_get(&style));
@ -356,7 +350,7 @@ _elm_naviframe_smart_theme(Eo *obj, void *_pd, va_list *list)
}
elm_layout_sizing_eval(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static char *
@ -869,15 +863,13 @@ _item_signal_emit_hook(Elm_Object_Item *it,
elm_object_signal_emit(VIEW(it), emission, source);
}
static void
_elm_naviframe_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elc_naviframe_elm_layout_sizing_eval(Eo *obj, Elc_Naviframe_Data *sd)
{
Evas_Coord minw = -1, minh = -1;
Elm_Naviframe_Item *it, *top;
Evas_Coord x, y, w, h;
Elm_Naviframe_Smart_Data *sd = _pd;
if (sd->on_deletion) return;
if (!sd->stack) return;
@ -954,14 +946,9 @@ _back_btn_new(Evas_Object *obj, const char *title_label)
return btn;
}
static void
_elm_naviframe_smart_signal_emit(Eo *obj, void *_pd, va_list *list)
EOLIAN static void
_elc_naviframe_elm_layout_signal_emit(Eo *obj, Elc_Naviframe_Data *sd, const char *emission, const char *source)
{
Elm_Naviframe_Smart_Data *sd = _pd;
const char *emission = va_arg(*list, const char *);
const char *source = va_arg(*list, const char *);
if (!sd->stack) return;
eo_do_super(obj, MY_CLASS, elm_obj_layout_signal_emit(emission, source));
@ -969,85 +956,63 @@ _elm_naviframe_smart_signal_emit(Eo *obj, void *_pd, va_list *list)
/* content/text smart functions proxying things to the top item, which
* is the resize object of the layout */
static void
_elm_naviframe_smart_text_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_layout_text_set(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part, const char *label)
{
Elm_Object_Item *it;
const char *part = va_arg(*list, const char *);
const char *label = va_arg(*list, const char *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Eina_Bool int_ret = EINA_FALSE;
if (ret) *ret = EINA_FALSE;
it = elm_naviframe_top_item_get(obj);
if (!it) return;
if (!it) return EINA_FALSE;
elm_object_item_part_text_set(it, part, label);
int_ret = !strcmp(elm_object_item_part_text_get(it, part), label);
if (ret) *ret = int_ret;
return !strcmp(elm_object_item_part_text_get(it, part), label);
}
static void
_elm_naviframe_smart_text_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static const char*
_elc_naviframe_elm_layout_text_get(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part)
{
Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
const char *part = va_arg(*list, const char *);
const char **text = va_arg(*list, const char **);
*text = NULL;
if (!it) return NULL;
if (!it) return;
*text = elm_object_item_part_text_get(it, part);
return elm_object_item_part_text_get(it, part);
}
/* we have to keep a "manual" set here because of the callbacks on the
* children */
static void
_elm_naviframe_smart_content_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_container_content_set(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part, Evas_Object *content)
{
Elm_Object_Item *it;
const char *part = va_arg(*list, const char *);
Evas_Object *content = va_arg(*list, Evas_Object *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
it = elm_naviframe_top_item_get(obj);
if (!it) return;
if (!it) return EINA_FALSE;
elm_object_item_part_content_set(it, part, content);
if(content == elm_object_item_part_content_get(it, part))
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
return EINA_FALSE;
}
static void
_elm_naviframe_smart_content_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Evas_Object*
_elc_naviframe_elm_container_content_get(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part)
{
Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
const char *part = va_arg(*list, const char *);
Evas_Object **content = va_arg(*list, Evas_Object **);
*content = NULL;
if (!it) return NULL;
if (!it) return;
*content = elm_object_item_part_content_get(it, part);
return elm_object_item_part_content_get(it, part);
}
static void
_elm_naviframe_smart_content_unset(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Evas_Object*
_elc_naviframe_elm_container_content_unset(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, const char *part)
{
Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
const char *part = va_arg(*list, const char *);
Evas_Object **content = va_arg(*list, Evas_Object **);
*content = NULL;
if (!it) return;
if (!it) return NULL;
*content = elm_object_item_part_content_unset(it, part);
return elm_object_item_part_content_unset(it, part);
}
static void
@ -1261,8 +1226,8 @@ _on_obj_size_hints_changed(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
_item_dispmode_set(it, dispmode);
}
static void
_elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_widget_focus_next(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, Elm_Focus_Direction dir, Evas_Object **next)
{
Evas_Object *ao;
@ -1270,10 +1235,6 @@ _elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
Elm_Naviframe_Item *top_it;
void *(*list_data_get)(const Eina_List *list);
Elm_Focus_Direction dir = va_arg(*list, Elm_Focus_Direction);
Evas_Object **next = va_arg(*list, Evas_Object **);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret;
top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
@ -1292,32 +1253,26 @@ _elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
int_ret = elm_widget_focus_list_next_get(obj, l, list_data_get, dir, next);
eina_list_free(l);
if (ret) *ret = int_ret;
end:
if (ret && !*ret)
if (!int_ret)
{
*next = obj;
*ret = !elm_widget_focus_get(obj);
int_ret = !elm_widget_focus_get(obj);
}
return int_ret;
}
static void
_elm_naviframe_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = EINA_TRUE;
return EINA_TRUE;
}
static void
_elm_naviframe_smart_focus_direction(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd EINA_UNUSED, const Evas_Object *base, double degree, Evas_Object **direction, double *weight)
{
Evas_Object *base = va_arg(*list, Evas_Object *);
double degree = va_arg(*list, double);
Evas_Object **direction = va_arg(*list, Evas_Object **);
double *weight = va_arg(*list, double *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret;
Eina_List *l = NULL;
@ -1325,7 +1280,7 @@ _elm_naviframe_smart_focus_direction(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED,
void *(*list_data_get)(const Eina_List *list);
top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
if (!top_it) return;
if (!top_it) return EINA_FALSE;
list_data_get = eina_list_data_get;
@ -1334,14 +1289,14 @@ _elm_naviframe_smart_focus_direction(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED,
int_ret = elm_widget_focus_list_direction_get
(obj, base, l, list_data_get, degree, direction, weight);
if (ret) *ret = int_ret;
eina_list_free(l);
return int_ret;
}
static void
_elm_naviframe_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elc_naviframe_evas_smart_add(Eo *obj, Elc_Naviframe_Data *priv)
{
Elm_Naviframe_Smart_Data *priv = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
@ -1379,13 +1334,11 @@ _pop_transition_cb(void *data)
return ECORE_CALLBACK_CANCEL;
}
static void
_elm_naviframe_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elc_naviframe_evas_smart_del(Eo *obj, Elc_Naviframe_Data *sd)
{
Elm_Naviframe_Item *it;
Elm_Naviframe_Smart_Data *sd = _pd;
sd->on_deletion = EINA_TRUE;
while (sd->stack)
@ -1407,8 +1360,8 @@ _elm_naviframe_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
}
//Show only the top item view
static void
_elm_naviframe_smart_show(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elc_naviframe_evas_smart_show(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED)
{
Elm_Naviframe_Item *top;
@ -1417,42 +1370,36 @@ _elm_naviframe_smart_show(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNU
evas_object_show(VIEW(top));
}
static void
_elm_naviframe_smart_event(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elc_naviframe_elm_widget_event(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED, Evas_Object *src, Evas_Callback_Type type, void *event_info)
{
Evas_Object *src = va_arg(*list, Evas_Object *);
Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type);
Evas_Event_Key_Down *ev = va_arg(*list, Evas_Event_Key_Down *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Naviframe_Item *it;
if (ret) *ret = EINA_FALSE;
(void)src;
Evas_Event_Key_Down *ev = event_info;
if (elm_widget_disabled_get(obj)) return;
if (type != EVAS_CALLBACK_KEY_DOWN) return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
if (strcmp(ev->key, "BackSpace")) return;
if (elm_widget_disabled_get(obj)) return EINA_FALSE;
if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
if (strcmp(ev->key, "BackSpace")) return EINA_FALSE;
eo_do(obj, elm_obj_naviframe_top_item_get((Elm_Object_Item **)&it));
if (!it) return;
if (!it) return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
if (ret) *ret = EINA_TRUE;
//FIXME: Replace this below code to elm_naviframe_item_pop() at elm 2.0.
///Leave for compatibility.
if (it->title_prev_btn)
evas_object_smart_callback_call(it->title_prev_btn, SIG_CLICKED, NULL);
return EINA_TRUE;
}
static void
_elm_naviframe_smart_access(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static void
_elc_naviframe_elm_widget_access(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool is_access)
{
Elm_Naviframe_Smart_Data *sd = _pd;
Elm_Naviframe_Item *it;
Eina_Bool is_access = va_arg(*list, int);
EINA_INLIST_FOREACH(sd->stack, it)
_access_obj_process(it, is_access);
}
@ -1532,8 +1479,8 @@ elm_naviframe_add(Evas_Object *parent)
return obj;
}
static void
_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elc_naviframe_eo_base_constructor(Eo *obj, Elc_Naviframe_Data *sd EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
eo_do(obj,
@ -1541,71 +1488,25 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
}
EAPI 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)
{
ELM_NAVIFRAME_CHECK(obj) NULL;
Elm_Object_Item *ret = NULL;
eo_do(obj, elm_obj_naviframe_item_push(title_label, prev_btn, next_btn, content, item_style, &ret));
return ret;
}
static void
_item_push(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Elm_Object_Item*
_elc_naviframe_item_push(Eo *obj, Elc_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;
const char *title_label = va_arg(*list, const char *);
Evas_Object *prev_btn = va_arg(*list, Evas_Object *);
Evas_Object *next_btn = va_arg(*list, Evas_Object *);
Evas_Object *content = va_arg(*list, Evas_Object *);
const char *item_style = va_arg(*list, const char *);
Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
*ret = NULL;
top_item = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
item = _item_new(obj, top_item,
title_label, prev_btn, next_btn, content, item_style);
if (!item) return;
if (!item) return NULL;
_item_push_helper(item);
*ret = (Elm_Object_Item *)item;
return (Elm_Object_Item *)item;
}
EAPI Elm_Object_Item *
elm_naviframe_item_insert_before(Evas_Object *obj,
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_CHECK(obj) NULL;
Elm_Object_Item *ret = NULL;
eo_do(obj, elm_obj_naviframe_item_insert_before(before, title_label, prev_btn, next_btn, content, item_style, &ret));
return ret;
}
static void
_item_insert_before(Eo *obj, void *_pd, va_list *list)
EOLIAN static Elm_Object_Item*
_elc_naviframe_item_insert_before(Eo *obj, Elc_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 *it, *prev_it = NULL;
Elm_Object_Item *before = va_arg(*list, Elm_Object_Item *);
const char *title_label = va_arg(*list, const char *);
Evas_Object *prev_btn = va_arg(*list, Evas_Object *);
Evas_Object *next_btn = va_arg(*list, Evas_Object *);
Evas_Object *content = va_arg(*list, Evas_Object *);
const char *item_style = va_arg(*list, const char *);
Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
*ret = NULL;
ELM_NAVIFRAME_ITEM_CHECK(before);
Elm_Naviframe_Smart_Data *sd = _pd;
ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(before, NULL);
it = (Elm_Naviframe_Item *)before;
if (EINA_INLIST_GET(it)->prev)
@ -1613,7 +1514,7 @@ _item_insert_before(Eo *obj, void *_pd, va_list *list)
Elm_Naviframe_Item);
it = _item_new(obj, prev_it,
title_label, prev_btn, next_btn, content, item_style);
if (!it) return;
if (!it) return NULL;
sd->stack = eina_inlist_prepend_relative
(sd->stack, EINA_INLIST_GET(it),
@ -1623,45 +1524,20 @@ _item_insert_before(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj);
*ret = (Elm_Object_Item *)it;
return (Elm_Object_Item *)it;
}
EAPI Elm_Object_Item *
elm_naviframe_item_insert_after(Evas_Object *obj,
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_CHECK(obj) NULL;
Elm_Object_Item *ret = NULL;
eo_do(obj, elm_obj_naviframe_item_insert_after(after, title_label, prev_btn, next_btn, content, item_style, &ret));
return ret;
}
static void
_item_insert_after(Eo *obj, void *_pd, va_list *list)
EOLIAN static Elm_Object_Item*
_elc_naviframe_item_insert_after(Eo *obj, Elc_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 *it;
Eina_Bool top_inserted = EINA_FALSE;
Elm_Object_Item *after = va_arg(*list, Elm_Object_Item *);
const char *title_label = va_arg(*list, const char *);
Evas_Object *prev_btn = va_arg(*list, Evas_Object *);
Evas_Object *next_btn = va_arg(*list, Evas_Object *);
Evas_Object *content = va_arg(*list, Evas_Object *);
const char *item_style = va_arg(*list, const char *);
Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
*ret = NULL;
ELM_NAVIFRAME_ITEM_CHECK(after);
Elm_Naviframe_Smart_Data *sd = _pd;
ELM_NAVIFRAME_ITEM_CHECK_OR_RETURN(after, NULL);
it = _item_new(obj, (Elm_Naviframe_Item *)after,
title_label, prev_btn, next_btn, content, item_style);
if (!it) return;
if (!it) return NULL;
if (elm_naviframe_top_item_get(obj) == after) top_inserted = EINA_TRUE;
@ -1686,35 +1562,21 @@ _item_insert_after(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj);
*ret = (Elm_Object_Item *)it;
return (Elm_Object_Item *)it;
}
EAPI Evas_Object *
elm_naviframe_item_pop(Evas_Object *obj)
{
ELM_NAVIFRAME_CHECK(obj) NULL;
Evas_Object *ret = NULL;
eo_do(obj, elm_obj_naviframe_item_pop(&ret));
return ret;
}
static void
_item_pop(Eo *obj, void *_pd, va_list *list)
EOLIAN static Evas_Object*
_elc_naviframe_item_pop(Eo *obj, Elc_Naviframe_Data *sd)
{
Elm_Naviframe_Item *it, *prev_it = NULL;
Evas_Object *content = NULL;
Evas_Object **ret = va_arg(*list, Evas_Object **);
*ret = NULL;
Elm_Naviframe_Smart_Data *sd = _pd;
if (sd->freeze_events && sd->popping) return;
if (sd->freeze_events && sd->popping) return NULL;
it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
if (!it) return;
if (!it) return NULL;
if (it->popping) return;
if (it->popping) return NULL;
it->popping = EINA_TRUE;
evas_object_ref(obj);
@ -1729,7 +1591,7 @@ _item_pop(Eo *obj, void *_pd, va_list *list)
else
it->popping = EINA_FALSE;
evas_object_unref(obj);
return;
return NULL;
}
it->ref--;
}
@ -1774,7 +1636,7 @@ _item_pop(Eo *obj, void *_pd, va_list *list)
else
elm_widget_item_del(it);
*ret = content;
return content;
}
EAPI void
@ -1829,23 +1691,11 @@ elm_naviframe_item_promote(Elm_Object_Item *it)
_item_push_helper(nit);
}
EAPI void
elm_naviframe_item_simple_promote(Evas_Object *obj,
Evas_Object *content)
{
ELM_NAVIFRAME_CHECK(obj);
eo_do(obj, elm_obj_naviframe_item_simple_promote(content));
}
static void
_item_simple_promote(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elc_naviframe_item_simple_promote(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Evas_Object *content)
{
Elm_Naviframe_Item *itr;
Evas_Object *content = va_arg(*list, Evas_Object *);
Elm_Naviframe_Smart_Data *sd = _pd;
EINA_INLIST_FOREACH(sd->stack, itr)
{
if (elm_object_item_content_get((Elm_Object_Item *)itr) == content)
@ -1856,80 +1706,31 @@ _item_simple_promote(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
}
}
EAPI void
elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj,
Eina_Bool preserve)
EOLIAN static void
_elc_naviframe_content_preserve_on_pop_set(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool preserve)
{
ELM_NAVIFRAME_CHECK(obj);
eo_do(obj, elm_obj_naviframe_content_preserve_on_pop_set(preserve));
}
static void
_content_preserve_on_pop_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Eina_Bool preserve = va_arg(*list, int);
Elm_Naviframe_Smart_Data *sd = _pd;
sd->preserve = !!preserve;
}
EAPI Eina_Bool
elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elc_naviframe_content_preserve_on_pop_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd)
{
ELM_NAVIFRAME_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_naviframe_content_preserve_on_pop_get(&ret));
return ret;
return sd->preserve;
}
static void
_content_preserve_on_pop_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static Elm_Object_Item*
_elc_naviframe_top_item_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Naviframe_Smart_Data *sd = _pd;
*ret = sd->preserve;
}
EAPI Elm_Object_Item *
elm_naviframe_top_item_get(const Evas_Object *obj)
{
ELM_NAVIFRAME_CHECK(obj) NULL;
Elm_Object_Item *ret = NULL;
eo_do((Eo *) obj, elm_obj_naviframe_top_item_get(&ret));
return ret;
}
static void
_top_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
*ret = NULL;
Elm_Naviframe_Smart_Data *sd = _pd;
if (!sd->stack) return;
*ret = (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET
if (!sd->stack) return NULL;
return (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET
(sd->stack->last, Elm_Naviframe_Item));
}
EAPI Elm_Object_Item *
elm_naviframe_bottom_item_get(const Evas_Object *obj)
EOLIAN static Elm_Object_Item*
_elc_naviframe_bottom_item_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd)
{
ELM_NAVIFRAME_CHECK(obj) NULL;
Elm_Object_Item *ret = NULL;
eo_do((Eo *) obj, elm_obj_naviframe_bottom_item_get(&ret));
return ret;
}
static void
_bottom_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
*ret = NULL;
Elm_Naviframe_Smart_Data *sd = _pd;
if (!sd->stack) return;
*ret = (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET
if (!sd->stack) return NULL;
return (Elm_Object_Item *)(EINA_INLIST_CONTAINER_GET
(sd->stack, Elm_Naviframe_Item));
}
@ -2013,184 +1814,54 @@ elm_naviframe_item_pop_cb_set(Elm_Object_Item *it, Elm_Naviframe_Item_Pop_Cb fun
nit->pop_data = data;
}
EAPI void
elm_naviframe_prev_btn_auto_pushed_set(Evas_Object *obj,
Eina_Bool auto_pushed)
EOLIAN static void
_elc_naviframe_prev_btn_auto_pushed_set(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool auto_pushed)
{
ELM_NAVIFRAME_CHECK(obj);
eo_do(obj, elm_obj_naviframe_prev_btn_auto_pushed_set(auto_pushed));
}
static void
_prev_btn_auto_pushed_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Eina_Bool auto_pushed = va_arg(*list, int);
Elm_Naviframe_Smart_Data *sd = _pd;
sd->auto_pushed = !!auto_pushed;
}
EAPI Eina_Bool
elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elc_naviframe_prev_btn_auto_pushed_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd)
{
ELM_NAVIFRAME_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_naviframe_prev_btn_auto_pushed_get(&ret));
return ret;
return sd->auto_pushed;
}
static void
_prev_btn_auto_pushed_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static Eina_List*
_elc_naviframe_items_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Naviframe_Smart_Data *sd = _pd;
*ret = sd->auto_pushed;
}
EAPI Eina_List *
elm_naviframe_items_get(const Evas_Object *obj)
{
ELM_NAVIFRAME_CHECK(obj) NULL;
Eina_List *ret;
eo_do((Eo *) obj, elm_obj_naviframe_items_get(&ret));
return ret;
}
static void
_items_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Eina_List **ret = va_arg(*list, Eina_List **);
*ret = NULL;
Eina_List *ret = NULL;
Elm_Naviframe_Item *itr;
Elm_Naviframe_Smart_Data *sd = _pd;
EINA_INLIST_FOREACH(sd->stack, itr)
*ret = eina_list_append(*ret, itr);
ret = eina_list_append(ret, itr);
return ret;
}
EAPI void
elm_naviframe_event_enabled_set(Evas_Object *obj,
Eina_Bool enabled)
EOLIAN static void
_elc_naviframe_event_enabled_set(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd, Eina_Bool enabled)
{
ELM_NAVIFRAME_CHECK(obj);
eo_do(obj, elm_obj_naviframe_event_enabled_set(enabled));
}
static void
_event_enabled_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Eina_Bool enabled = va_arg(*list, int);
Elm_Naviframe_Smart_Data *sd = _pd;
enabled = !!enabled;
if (sd->freeze_events == !enabled) return;
sd->freeze_events = !enabled;
}
EAPI Eina_Bool
elm_naviframe_event_enabled_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elc_naviframe_event_enabled_get(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd)
{
ELM_NAVIFRAME_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_naviframe_event_enabled_get(&ret));
return ret;
return !sd->freeze_events;
}
EOLIAN static Eina_Bool
_elc_naviframe_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elc_Naviframe_Data *sd EINA_UNUSED)
{
return EINA_TRUE;
}
static void
_event_enabled_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
_elc_naviframe_class_constructor(Eo_Class *klass)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Naviframe_Smart_Data *sd = _pd;
*ret = !sd->freeze_events;
}
static void
_elm_naviframe_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = EINA_TRUE;
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_naviframe_smart_add),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_naviframe_smart_del),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SHOW), _elm_naviframe_smart_show),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_naviframe_smart_focus_next_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT), _elm_naviframe_smart_focus_next),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_naviframe_smart_focus_direction_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION), _elm_naviframe_smart_focus_direction),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_naviframe_smart_theme),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_TRANSLATE), _elm_naviframe_smart_translate),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ACCESS), _elm_naviframe_smart_access),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_naviframe_smart_event),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_SET), _elm_naviframe_smart_content_set),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_GET), _elm_naviframe_smart_content_get),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_UNSET), _elm_naviframe_smart_content_unset),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIGNAL_EMIT), _elm_naviframe_smart_signal_emit),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_SET), _elm_naviframe_smart_text_set),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_GET), _elm_naviframe_smart_text_get),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_naviframe_smart_sizing_eval),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_PUSH), _item_push),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_BEFORE), _item_insert_before),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_AFTER), _item_insert_after),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_POP), _item_pop),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_SIMPLE_PROMOTE), _item_simple_promote),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_SET), _content_preserve_on_pop_set),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_GET), _content_preserve_on_pop_get),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_TOP_ITEM_GET), _top_item_get),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_BOTTOM_ITEM_GET), _bottom_item_get),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_SET), _prev_btn_auto_pushed_set),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_GET), _prev_btn_auto_pushed_get),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_ITEMS_GET), _items_get),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_SET), _event_enabled_set),
EO_OP_FUNC(ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_GET), _event_enabled_get),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
static const
Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_PUSH, "Push a new item to the top of the naviframe stack (and show it)."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_BEFORE, "Insert a new item into the naviframe before item before."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_INSERT_AFTER, "Insert a new item into the naviframe after item after."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_POP, "Pop an item that is on top of the stack."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEM_SIMPLE_PROMOTE, "Simple version of item_promote."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_SET, "preserve the content objects when items are popped."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_CONTENT_PRESERVE_ON_POP_GET, "Get a value whether preserve mode is enabled or not."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_TOP_ITEM_GET, "Get a top item on the naviframe stack."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_BOTTOM_ITEM_GET, "Get a bottom item on the naviframe stack."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_SET, "Set creating prev button automatically or not."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_PREV_BTN_AUTO_PUSHED_GET, "Get a value whether prev button(back button) will be auto pushed or not."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_ITEMS_GET, "Get a list of all the naviframe items."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_SET, "Set the event enabled when pushing/popping items."),
EO_OP_DESCRIPTION(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_GET, "Get the value of event enabled status."),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
MY_CLASS_NAME,
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_NAVIFRAME_BASE_ID, op_desc, ELM_OBJ_NAVIFRAME_SUB_ID_LAST),
NULL,
sizeof(Elm_Naviframe_Smart_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elm_obj_naviframe_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL);
#include "elc_naviframe.eo.c"

View File

@ -0,0 +1,289 @@
class Elc_Naviframe (Elm_Layout)
{
legacy_prefix: elm_naviframe;
eo_prefix: elm_obj_naviframe;
properties {
event_enabled {
set {
/*@
@brief Set the event enabled when pushing/popping items
If @p enabled is @c EINA_TRUE, the contents of the naviframe item will
receives events from mouse and keyboard during view changing such as
item push/pop.
@warning Events will be blocked by calling evas_object_freeze_events_set()
internally. So don't call the API whiling pushing/popping items.
@see elm_naviframe_event_enabled_get()
@see evas_object_freeze_events_set()
@ingroup Naviframe */
}
get {
/*@
@brief Get the value of event enabled status.
@return @c EINA_TRUE, when event is enabled
@see elm_naviframe_event_enabled_set()
@ingroup Naviframe */
}
values {
Eina_Bool enabled; /*@ Events are received when enabled is @c EINA_TRUE, and
ignored otherwise. */
}
}
content_preserve_on_pop {
set {
/*@
@brief preserve the content objects when items are popped.
@see also elm_naviframe_content_preserve_on_pop_get()
@ingroup Naviframe */
}
get {
/*@
@brief Get a value whether preserve mode is enabled or not.
@return If @c EINA_TRUE, preserve mode is enabled
@see also elm_naviframe_content_preserve_on_pop_set()
@ingroup Naviframe */
}
values {
Eina_Bool preserve; /*@ Enable the preserve mode if @c EINA_TRUE, disable otherwise */
}
}
prev_btn_auto_pushed {
set {
/*@
@brief Set creating prev button automatically or not
@see also elm_naviframe_item_push()
@ingroup Naviframe */
}
get {
/*@
@brief Get a value whether prev button(back button) will be auto pushed or
not.
@return If @c EINA_TRUE, prev button will be auto pushed.
@see also elm_naviframe_item_push()
elm_naviframe_prev_btn_auto_pushed_set()
@ingroup Naviframe */
}
values {
Eina_Bool auto_pushed; /*@ If @c EINA_TRUE, the previous button(back button) will
be created internally when you pass the @c NULL to the prev_btn
parameter in elm_naviframe_item_push */
}
}
items {
get {
/*@
@brief Get a list of all the naviframe items.
@return An Eina_List of naviframe items, #Elm_Object_Item,
or @c NULL on failure.
@note The returned list MUST be freed.
@ingroup Naviframe */
return Eina_List * @warn_unused;
}
}
top_item {
get {
/*@
@brief Get a top item on the naviframe stack
@return The top item on the naviframe stack or @c NULL, if the stack is
empty
@ingroup Naviframe */
return Elm_Object_Item *;
}
}
bottom_item {
get {
/*@
@brief Get a bottom item on the naviframe stack
@return The bottom item on the naviframe stack or @c NULL, if the stack is
empty
@ingroup Naviframe */
return Elm_Object_Item *;
}
}
}
methods {
item_pop {
/*@
@brief Pop an item that is on top of the stack
@return @c NULL or the content object(if the
elm_naviframe_content_preserve_on_pop_get is true).
This pops an item that is on the top(visible) of the naviframe, makes it
disappear, then deletes the item. The item that was underneath it on the
stack will become visible.
@see also elm_naviframe_content_preserve_on_pop_get()
@see also elm_naviframe_item_pop_cb_set()
@ingroup Naviframe */
return Evas_Object *;
}
item_insert_before {
/*@
@brief Insert a new item into the naviframe before item @p before.
@return The created item or @c NULL upon failure.
The item is inserted into the naviframe straight away without any
transition operations. This item will be deleted when it is popped.
@see also elm_naviframe_item_style_set()
@see also elm_naviframe_item_push()
@see also elm_naviframe_item_insert_after()
The following styles are available for this item:
@li @c "default"
@ingroup Naviframe */
return Elm_Object_Item *;
params {
@in Elm_Object_Item *before; /*@ The naviframe item to insert before. */
@in const char *title_label; /*@ The label in the title area. The name of the title
label part is "elm.text.title" */
@in Evas_Object *prev_btn; /*@ The button to go to the previous item. If it is NULL,
then naviframe will create a back button automatically. The name of
the prev_btn part is "elm.swallow.prev_btn" */
@in Evas_Object *next_btn; /*@ The button to go to the next item. Or It could be just an
extra function button. The name of the next_btn part is
"elm.swallow.next_btn" */
@in Evas_Object *content; /*@ The main content object. The name of content part is
"elm.swallow.content" */
@in const char *item_style; /*@ The current item style name. @c NULL would be default. */
}
}
item_push {
/*@
@brief Push a new item to the top of the naviframe stack (and show it).
@return The created item or @c NULL upon failure.
The item pushed becomes one page of the naviframe, this item will be
deleted when it is popped.
@see also elm_naviframe_item_style_set()
@see also elm_naviframe_item_insert_before()
@see also elm_naviframe_item_insert_after()
The following styles are available for this item:
@li @c "default"
@ingroup Naviframe */
return Elm_Object_Item *;
params {
@in const char *title_label; /*@ The label in the title area. The name of the title
label part is "elm.text.title" */
@in Evas_Object *prev_btn; /*@ The button to go to the previous item. If it is NULL,
then naviframe will create a back button automatically. The name of
the prev_btn part is "elm.swallow.prev_btn" */
@in Evas_Object *next_btn; /*@ The button to go to the next item. Or It could be just an
extra function button. The name of the next_btn part is
"elm.swallow.next_btn" */
@in Evas_Object *content; /*@ The main content object. The name of content part is
"elm.swallow.content" */
@in const char *item_style; /*@ The current item style name. @c NULL would be default. */
}
}
item_simple_promote {
/*@
@brief Simple version of item_promote.
@see elm_naviframe_item_promote */
params {
@in Evas_Object *content;
}
}
item_insert_after {
/*@
@brief Insert a new item into the naviframe after item @p after.
@return The created item or @c NULL upon failure.
The item is inserted into the naviframe straight away without any
transition operations. This item will be deleted when it is popped.
@see also elm_naviframe_item_style_set()
@see also elm_naviframe_item_push()
@see also elm_naviframe_item_insert_before()
The following styles are available for this item:
@li @c "default"
@ingroup Naviframe */
return Elm_Object_Item *;
params {
@in Elm_Object_Item *after; /*@ The naviframe item to insert after. */
@in const char *title_label; /*@ The label in the title area. The name of the title
label part is "elm.text.title" */
@in Evas_Object *prev_btn; /*@ The button to go to the previous item. If it is NULL,
then naviframe will create a back button automatically. The name of
the prev_btn part is "elm.swallow.prev_btn" */
@in Evas_Object *next_btn; /*@ The button to go to the next item. Or It could be just an
extra function button. The name of the next_btn part is
"elm.swallow.next_btn" */
@in Evas_Object *content; /*@ The main content object. The name of content part is
"elm.swallow.content" */
@in const char *item_style; /*@ The current item style name. @c NULL would be default. */
}
}
}
implements {
class::constructor;
Eo_Base::constructor;
Evas_Smart::del;
Evas_Smart::show;
Evas_Smart::add;
Elm_Widget::focus_direction;
Elm_Widget::focus_next_manager_is;
Elm_Widget::focus_direction_manager_is;
Elm_Widget::access;
Elm_Widget::focus_next;
Elm_Widget::translate;
Elm_Widget::theme_apply;
Elm_Widget::event;
Elm_Container::content_get;
Elm_Container::content_set;
Elm_Container::content_unset;
Elm_Layout::text_set;
Elm_Layout::text_get;
Elm_Layout::signal_emit;
Elm_Layout::sizing_eval;
}
events {
transition,finished;
title,transition,finished;
title,clicked;
language,changed;
access,changed;
focused;
unfocused;
}
}

View File

@ -3,6 +3,8 @@
*
* @{
*/
#include "elc_naviframe.eo.h"
#if 0
#define ELM_OBJ_NAVIFRAME_CLASS elm_obj_naviframe_class_get()
const Eo_Class *elm_obj_naviframe_class_get(void) EINA_CONST;
@ -215,6 +217,7 @@ enum
* @see elm_naviframe_event_enabled_get
*/
#define elm_obj_naviframe_event_enabled_get(ret) ELM_OBJ_NAVIFRAME_ID(ELM_OBJ_NAVIFRAME_SUB_ID_EVENT_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret)
#endif
/**
* @}
*/

View File

@ -17,8 +17,8 @@
/**
* Base layout smart data extended with naviframe instance data.
*/
typedef struct _Elm_Naviframe_Smart_Data Elm_Naviframe_Smart_Data;
struct _Elm_Naviframe_Smart_Data
typedef struct _Elc_Naviframe_Data Elc_Naviframe_Data;
struct _Elc_Naviframe_Data
{
Eina_Inlist *stack; /* top item is the list's LAST item */
Eina_List *popping;
@ -82,7 +82,7 @@ struct _Elm_Naviframe_Text_Item_Pair
*/
#define ELM_NAVIFRAME_DATA_GET(o, sd) \
Elm_Naviframe_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_NAVIFRAME_CLASS)
Elc_Naviframe_Data * sd = eo_data_scope_get(o, ELM_OBJ_NAVIFRAME_CLASS)
#define ELM_NAVIFRAME_DATA_GET_OR_RETURN(o, ptr) \
ELM_NAVIFRAME_DATA_GET(o, ptr); \