From: ChunEon Park Date: Tue, 8 Nov 2011 12:49:53 +0000 (+0900) Subject: naviframe - new APIselm_naviframe_item_insert_afterelm_naviframe_item_insert_beforeel... X-Git-Tag: REBUILDD-ARMEL-67645~37 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=faa39f9a695ee2dbb7c54e7d6d7547a08a9f0e82;p=framework%2Fuifw%2Felementary.git naviframe - new APIselm_naviframe_item_insert_afterelm_naviframe_item_insert_beforeelm_naviframe_items_getcontrolbar - modified for new UX tabbar style --- diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 84a9154..14a14f1 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -28404,20 +28404,9 @@ extern "C" { EAPI void elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible); Eina_Bool elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item); - /* naviframe */ - #define ELM_NAVIFRAME_ITEM_CONTENT "elm.swallow.content" - #define ELM_NAVIFRAME_ITEM_ICON "elm.swallow.icon" - #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "elm.swallow.optionheader" - #define ELM_NAVIFRAME_ITEM_OPTIONHEADER2 "elm.swallow.optionheader2" - #define ELM_NAVIFRAME_ITEM_TITLE_LABEL "elm.text.title" - #define ELM_NAVIFRAME_ITEM_PREV_BTN "elm.swallow.prev_btn" - #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE "elm,state,optionheader,close", "" - #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN "elm,state,optionheader,open", "" - #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_CLOSE "elm,state,optionheader,instant_close", "" - #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN "elm,state,optionheader,instant_open", "" - - /** + /** * @defgroup Naviframe Naviframe + * @ingroup Elementary * * @brief Naviframe is a kind of view manager for the applications. * @@ -28437,24 +28426,53 @@ extern "C" { * the item * @li "title,clicked" - User clicked title area * - * Default contents parts for the naviframe items that you can use for are: - * + * Default contents parts of the naviframe items that you can use for are: * @li "elm.swallow.content" - A main content of the page + * @li "elm.swallow.icon" - A icon in the title area * @li "elm.swallow.prev_btn" - A button to go to the previous page * @li "elm.swallow.next_btn" - A button to go to the next page * - * Default text parts of naviframe items that you can be used are: - * + * Default text parts of the naviframe items that you can use for are: * @li "elm.text.title" - Title label in the title area + * @li "elm.text.subtitle" - Sub-title label in the title area * * @ref tutorial_naviframe gives a good overview of the usage of the API. + */ + + //Available commonly + #define ELM_NAVIFRAME_ITEM_CONTENT "elm.swallow.content" + #define ELM_NAVIFRAME_ITEM_ICON "elm.swallow.icon" + #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "elm.swallow.optionheader" + #define ELM_NAVIFRAME_ITEM_TITLE_LABEL "elm.text.title" + #define ELM_NAVIFRAME_ITEM_PREV_BTN "elm.swallow.prev_btn" + #define ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN "elm.swallow.left_btn" + #define ELM_NAVIFRAME_ITEM_TITLE_RIGHT_BTN "elm.swallow.right_btn" + #define ELM_NAVIFRAME_ITEM_TITLE_MORE_BTN "elm.swallow.more_btn" + #define ELM_NAVIFRAME_ITEM_CONTROLBAR "elm.swallow.controlbar" + #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE "elm,state,optionheader,close", "" + #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN "elm,state,optionheader,open", "" + #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_CLOSE "elm,state,optionheader,instant_close", "" + #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN "elm,state,optionheader,instant_open", "" + + //Available only in a style - "2line" + #define ELM_NAVIFRAME_ITEM_OPTIONHEADER2 "elm.swallow.optionheader2" + + //Available only in a style - "segment" + #define ELM_NAVIFRAME_ITEM_SEGMENT2 "elm.swallow.segment2" + #define ELM_NAVIFRAME_ITEM_SEGMENT3 "elm.swallow.segment3" + + /** + * @addtogroup Naviframe * @{ */ + /** * @brief Add a new Naviframe object to the parent. * * @param parent Parent object * @return New object or @c NULL, if it cannot be created + * + * @ingroup Naviframe */ EAPI Evas_Object *elm_naviframe_add(Evas_Object *parent) EINA_ARG_NONNULL(1); /** @@ -28478,11 +28496,75 @@ extern "C" { * 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 */ 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) EINA_ARG_NONNULL(1, 5); + /** + * @brief Insert a new item into the naviframe before item @p before. + * + * @param before The naviframe item to insert before. + * @param title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param 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" + * @param 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" + * @param content The main content object. The name of content part is + * "elm.swallow.content" + * @param item_style The current item style name. @c NULL would be default. + * @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 + */ + EAPI Elm_Object_Item *elm_naviframe_item_insert_before(Elm_Object_Item *before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5); + /** + * @brief Insert a new item into the naviframe after item @p after. + * + * @param after The naviframe item to insert after. + * @param title_label The label in the title area. The name of the title + * label part is "elm.text.title" + * @param 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" + * @param 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" + * @param content The main content object. The name of content part is + * "elm.swallow.content" + * @param item_style The current item style name. @c NULL would be default. + * @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 + */ + EAPI Elm_Object_Item *elm_naviframe_item_insert_after(Elm_Object_Item *after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5); /** * @brief Pop an item that is on top of the stack * @@ -28644,7 +28726,19 @@ extern "C" { * @see also elm_naviframe_item_push() * elm_naviframe_prev_btn_auto_pushed_set() */ - EAPI Eina_Bool elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj); EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + /** + * @brief Get a list of all the naviframe items. + * + * @param obj The naviframe object + * @return An Eina_Inlist* of naviframe items, #Elm_Object_Item, + * or @c NULL on failure. + */ + EAPI Eina_Inlist *elm_naviframe_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + + /** + * @} + */ /* Control Bar */ #define CONTROLBAR_SYSTEM_ICON_ALBUMS "controlbar_albums" diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index 557ad10..7010679 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -10,6 +10,7 @@ struct _Widget_Data { Eina_Inlist *stack; Evas_Object *base; + Evas_Object *rect; Eina_Bool preserve: 1; Eina_Bool auto_pushed: 1; Eina_Bool freeze_events: 1; @@ -87,6 +88,7 @@ static void _resize(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _hide(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _title_clicked(void *data, Evas_Object *obj, const char *emission, const char *source); @@ -135,6 +137,12 @@ static void _item_content_set(Elm_Naviframe_Item *navi_it, Evas_Object *content); static void _item_style_set(Elm_Naviframe_Item *navi_it, const char *item_style); +static Elm_Naviframe_Item * _item_new(Evas_Object *obj, + const char *title_label, + Evas_Object *prev_btn, + Evas_Object *next_btn, + Evas_Object *content, + const char *item_style); static void _del_hook(Evas_Object *obj) @@ -182,6 +190,8 @@ _theme_hook(Evas_Object *obj) _elm_widget_mirrored_reload(obj); _mirrored_set(obj, elm_widget_mirrored_get(obj)); + + evas_object_hide(wd->rect); } static void _emit_hook(Evas_Object *obj, @@ -443,6 +453,13 @@ _move(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) { + Evas_Coord x, y; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + evas_object_geometry_get(obj, &x, &y, NULL, NULL); + evas_object_move(wd->rect, x, y); + _sizing_eval(obj); } @@ -452,10 +469,29 @@ _resize(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) { + Evas_Coord w, h; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + evas_object_resize(wd->rect, w, h); + _sizing_eval(obj); } static void +_hide(void *data __UNUSED__, + Evas *e __UNUSED__, + Evas_Object *obj, + void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->freeze_events) + evas_object_hide(wd->rect); +} + +static void _title_clicked(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, @@ -566,32 +602,30 @@ _title_content_set(Elm_Naviframe_Item *it, EINA_INLIST_GET(pair)); } - if (pair->content == content) return; - - if (pair->content) + if (pair->content != content) { evas_object_event_callback_del(pair->content, EVAS_CALLBACK_DEL, _title_content_del); evas_object_del(pair->content); - } - if (content) - { elm_widget_sub_object_add(WIDGET(it), content); evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, _title_content_del, pair); - edje_object_part_swallow(it->base.view, part, content); + } + if (content) + { + edje_object_part_swallow(VIEW(it), part, content); snprintf(buf, sizeof(buf), "elm,state,%s,show", part); - edje_object_signal_emit(it->base.view, buf, "elm"); + edje_object_signal_emit(VIEW(it), buf, "elm"); pair->content = content; _item_sizing_eval(it); } else { snprintf(buf, sizeof(buf), "elm,state,%s,hide", part); - edje_object_signal_emit(it->base.view, buf, "elm"); + edje_object_signal_emit(VIEW(it), buf, "elm"); pair->content = NULL; } } @@ -723,8 +757,6 @@ _pushed_finished(void *data, evas_object_smart_callback_call(WIDGET(it), SIG_PUSH_FINISHED, data); - if (wd->freeze_events) - evas_object_freeze_events_set(VIEW(it), EINA_FALSE); } static void @@ -759,7 +791,7 @@ _show_finished(void *data, SIG_TRANSITION_FINISHED, data); if (wd->freeze_events) - evas_object_freeze_events_set(VIEW(it), EINA_FALSE); + evas_object_hide(wd->rect); } static void @@ -824,7 +856,6 @@ _item_style_set(Elm_Naviframe_Item *navi_it, const char *item_style) _item_content_set_hook((Elm_Object_Item *) navi_it, content_pair->part, content_pair->content); - //content if (navi_it->content) { @@ -862,62 +893,22 @@ _item_style_set(Elm_Naviframe_Item *navi_it, const char *item_style) _item_sizing_eval(navi_it); wd = elm_widget_data_get(WIDGET(navi_it)); - if (!wd) return; - - if (wd->freeze_events) - evas_object_freeze_events_set(VIEW(navi_it), EINA_FALSE); -} - -EAPI Evas_Object * -elm_naviframe_add(Evas_Object *parent) -{ - Evas_Object *obj; - Evas *e; - Widget_Data *wd; - - ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL); - ELM_SET_WIDTYPE(widtype, "naviframe"); - elm_widget_type_set(obj, "naviframe"); - elm_widget_sub_object_add(parent, obj); - elm_widget_data_set(obj, wd); - elm_widget_del_hook_set(obj, _del_hook); - elm_widget_disable_hook_set(obj, _disable_hook); - elm_widget_theme_hook_set(obj, _theme_hook); - elm_widget_signal_emit_hook_set(obj, _emit_hook); - - //base - wd->base = edje_object_add(e); - edje_object_mirrored_set(wd->base, elm_widget_mirrored_get(obj)); - elm_widget_resize_object_set(obj, wd->base); - _elm_theme_object_set(obj, wd->base, "naviframe", "base", "default"); - - evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj); - evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj); - evas_object_smart_callbacks_descriptions_set(obj, _signals); - - wd->auto_pushed = EINA_TRUE; - wd->freeze_events = EINA_TRUE; - - return obj; + if (wd && wd->freeze_events) + evas_object_hide(wd->rect); } -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) +static Elm_Naviframe_Item * +_item_new(Evas_Object *obj, + const char *title_label, + Evas_Object *prev_btn, + Evas_Object *next_btn, + Evas_Object *content, + const char *item_style) { - ELM_CHECK_WIDTYPE(obj, widtype) NULL; - Widget_Data *wd; - Elm_Naviframe_Item *prev_it, *it; - - wd = elm_widget_data_get(obj); - if (!wd) return NULL; + Widget_Data *wd = elm_widget_data_get(obj); //create item - it = elm_widget_item_new(obj, Elm_Naviframe_Item); + Elm_Naviframe_Item *it = elm_widget_item_new(obj, Elm_Naviframe_Item); if (!it) { ERR("Failed to allocate new item! : naviframe=%p", obj); @@ -954,7 +945,6 @@ elm_naviframe_item_push(Evas_Object *obj, _title_clicked, it); _item_style_set(it, item_style); - _item_text_set_hook((Elm_Object_Item *) it, "elm.text.title", title_label); //title buttons @@ -967,20 +957,78 @@ elm_naviframe_item_push(Evas_Object *obj, _title_prev_btn_set(it, prev_btn, EINA_FALSE); _title_next_btn_set(it, next_btn); - _item_content_set(it, content); - _item_sizing_eval(it); + + it->title_visible = EINA_TRUE; + return it; +} + +EAPI Evas_Object * +elm_naviframe_add(Evas_Object *parent) +{ + Evas_Object *obj; + Evas *e; + Widget_Data *wd; + + ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL); + ELM_SET_WIDTYPE(widtype, "naviframe"); + elm_widget_type_set(obj, "naviframe"); + elm_widget_sub_object_add(parent, obj); + elm_widget_data_set(obj, wd); + elm_widget_del_hook_set(obj, _del_hook); + elm_widget_disable_hook_set(obj, _disable_hook); + elm_widget_theme_hook_set(obj, _theme_hook); + elm_widget_signal_emit_hook_set(obj, _emit_hook); + + //base + wd->base = edje_object_add(e); + edje_object_mirrored_set(wd->base, elm_widget_mirrored_get(obj)); + elm_widget_resize_object_set(obj, wd->base); + _elm_theme_object_set(obj, wd->base, "naviframe", "base", "default"); + + //rect + wd->rect = evas_object_rectangle_add(e); + evas_object_color_set(wd->rect, 0, 0, 0, 0); + elm_widget_sub_object_add(obj, wd->rect); + + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, obj); + evas_object_smart_callbacks_descriptions_set(obj, _signals); + + wd->auto_pushed = EINA_TRUE; + wd->freeze_events = EINA_TRUE; + + return obj; +} + +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_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd; + Elm_Naviframe_Item *prev_it, *it; + + wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + it = _item_new(obj, title_label, prev_btn, next_btn, content, item_style); + if (!it) return NULL; + evas_object_show(VIEW(it)); prev_it = (Elm_Naviframe_Item *) elm_naviframe_top_item_get(obj); if (prev_it) { if (wd->freeze_events) - { - evas_object_freeze_events_set(VIEW(it), EINA_TRUE); - evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE); - } + evas_object_show(wd->rect); + edje_object_signal_emit(VIEW(prev_it), "elm,state,cur,pushed", "elm"); @@ -988,11 +1036,65 @@ elm_naviframe_item_push(Evas_Object *obj, "elm,state,new,pushed", "elm"); } - it->title_visible = EINA_TRUE; wd->stack = eina_inlist_append(wd->stack, EINA_INLIST_GET(it)); return (Elm_Object_Item *) it; } +EAPI Elm_Object_Item * +elm_naviframe_item_insert_before(Elm_Object_Item *before, + const char *title_label, + Evas_Object *prev_btn, + Evas_Object *next_btn, + Evas_Object *content, + const char *item_style) +{ + ELM_OBJ_ITEM_CHECK_OR_RETURN(before, NULL); + Elm_Naviframe_Item *it; + Widget_Data *wd; + + wd = elm_widget_data_get(WIDGET(before)); + if (!wd) return NULL; + + it = _item_new(WIDGET(before), title_label, prev_btn, next_btn, content, + item_style); + if (!it) return NULL; + + wd->stack = + eina_inlist_prepend_relative(wd->stack, EINA_INLIST_GET(it), + EINA_INLIST_GET(((Elm_Naviframe_Item *) before))); + return (Elm_Object_Item *) it; +} + +EAPI Elm_Object_Item * +elm_naviframe_item_insert_after(Elm_Object_Item *after, + const char *title_label, + Evas_Object *prev_btn, + Evas_Object *next_btn, + Evas_Object *content, + const char *item_style) +{ + ELM_OBJ_ITEM_CHECK_OR_RETURN(after, NULL); + Elm_Naviframe_Item *it; + Widget_Data *wd; + + wd = elm_widget_data_get(WIDGET(after)); + if (!wd) return NULL; + + it = _item_new(WIDGET(after), title_label, prev_btn, next_btn, content, + item_style); + if (!it) return NULL; + + if (elm_naviframe_top_item_get(WIDGET(after)) == after) + { + evas_object_hide(VIEW(after)); + evas_object_show(VIEW(it)); + } + wd->stack = + eina_inlist_append_relative(wd->stack, EINA_INLIST_GET(it), + EINA_INLIST_GET(((Elm_Naviframe_Item *) after))); + return (Elm_Object_Item *) it; +} + EAPI Evas_Object * elm_naviframe_item_pop(Evas_Object *obj) { @@ -1016,7 +1118,9 @@ elm_naviframe_item_pop(Evas_Object *obj) wd->stack = eina_inlist_remove(wd->stack, EINA_INLIST_GET(it)); if (prev_it) { - edje_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm"); + if (wd->freeze_events) + evas_object_show(wd->rect); + edje_object_signal_emit(it->base.view, "elm,state,cur,popped", "elm"); evas_object_show(VIEW(prev_it)); evas_object_raise(VIEW(prev_it)); edje_object_signal_emit(VIEW(prev_it), @@ -1074,10 +1178,7 @@ elm_naviframe_item_promote(Elm_Object_Item *it) prev_it = EINA_INLIST_CONTAINER_GET(wd->stack->last->prev, Elm_Naviframe_Item); if (wd->freeze_events) - { - evas_object_freeze_events_set(VIEW(it), EINA_TRUE); - evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE); - } + evas_object_show(wd->rect); edje_object_signal_emit(prev_it->base.view, "elm,state,cur,pushed", "elm"); @@ -1160,7 +1261,6 @@ elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style) { ELM_OBJ_ITEM_CHECK_OR_RETURN(it); Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it; - //Return if new style is exsiting one. if (item_style) if (!strcmp(item_style, navi_it->style)) return; @@ -1218,3 +1318,12 @@ elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj) return wd->auto_pushed; } +EAPI Eina_Inlist * +elm_naviframe_items_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return wd->stack; +} + diff --git a/src/lib/elm_controlbar.c b/src/lib/elm_controlbar.c index 3ad3b7d..4d041ec 100644 --- a/src/lib/elm_controlbar.c +++ b/src/lib/elm_controlbar.c @@ -127,16 +127,6 @@ _controlbar_move(void *data, Evas_Object * obj __UNUSED__) evas_object_move(wd->edje, x, y); evas_object_geometry_get(elm_layout_content_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL); evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL); - switch(wd->mode) - { - case ELM_CONTROLBAR_MODE_LEFT: - evas_object_move(wd->view, x + width, y); - break; - case ELM_CONTROLBAR_MODE_RIGHT: - default: - evas_object_move(wd->view, x, y); - break; - } } static void @@ -153,18 +143,6 @@ _controlbar_resize(void *data, Evas_Object * obj __UNUSED__) evas_object_resize(wd->edje, w, h); evas_object_geometry_get(elm_layout_content_get(wd->edje, "bg_image"), NULL, NULL, &width, &height); evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL); - switch(wd->mode) - { - case ELM_CONTROLBAR_MODE_LEFT: - evas_object_move(wd->view, x + width, y); - case ELM_CONTROLBAR_MODE_RIGHT: - evas_object_resize(wd->view, w - width, h); - break; - default: - evas_object_resize(wd->view, w, h - height + 1); - evas_object_move(wd->view, x, y); - break; - } } static void @@ -189,7 +167,6 @@ _controlbar_object_show(void *data, Evas * e __UNUSED__, Evas_Object * obj __UNU if (!data) return; wd = elm_widget_data_get((Evas_Object *) data); if (!wd) return; - evas_object_show(wd->view); evas_object_show(wd->edje); evas_object_show(wd->box); } @@ -202,7 +179,6 @@ _controlbar_object_hide(void *data, Evas * e __UNUSED__, Evas_Object * obj __UNU if (!data) return; wd = elm_widget_data_get((Evas_Object *) data); if (!wd) return; - evas_object_hide(wd->view); evas_object_hide(wd->edje); evas_object_hide(wd->box); @@ -270,11 +246,6 @@ _del_hook(Evas_Object * obj) free(wd->ad); wd->ad = NULL; } - if (wd->view) - { - evas_object_del(wd->view); - wd->view = NULL; - } free(wd); wd = NULL; @@ -296,7 +267,6 @@ _theme_hook(Evas_Object * obj) elm_widget_style_get(obj)); evas_object_color_get(wd->bg, &r, &g, &b, NULL); evas_object_color_set(wd->bg, r, g, b, (int)(255 * wd->alpha / 100)); - elm_layout_theme_set(wd->view, "controlbar", "view", elm_widget_style_get(obj)); EINA_LIST_FOREACH(wd->items, l, item) { elm_layout_theme_set(item->base, "controlbar", "item_bg", elm_widget_style_get(obj)); @@ -334,14 +304,7 @@ _sub_del(void *data __UNUSED__, Evas_Object * obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(obj); Evas_Object *sub = event_info; - Evas_Object *content; if (!wd) return; - - if (sub == wd->view) - { - content = elm_layout_content_unset(wd->view, "elm.swallow.view"); - evas_object_hide(content); - } } static void @@ -765,7 +728,7 @@ _select_box(Elm_Controlbar_Item * it) if (it->style == TABBAR) { - content = elm_layout_content_unset(wd->view, "elm.swallow.view"); + content = elm_layout_content_unset(wd->edje, "elm.swallow.view"); if (content) evas_object_hide(content); EINA_LIST_FOREACH(wd->items, l, item){ @@ -792,7 +755,7 @@ _select_box(Elm_Controlbar_Item * it) evas_object_smart_callback_call(it->obj, "view,change,before", it); } - elm_layout_content_set(wd->view, "elm.swallow.view", it->view); + elm_layout_content_set(wd->edje, "elm.swallow.view", it->view); } else if (it->style == TOOLBAR) { @@ -1168,11 +1131,11 @@ _list_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__) if (item->style == TABBAR) { - content = elm_layout_content_unset(wd->view, "elm.swallow.view"); + content = elm_layout_content_unset(wd->edje, "elm.swallow.view"); evas_object_hide(content); item->selected = EINA_TRUE; evas_object_smart_callback_call(item->obj, "view,change,before", item); - elm_layout_content_set(wd->view, "elm.swallow.view", item->view); + elm_layout_content_set(wd->edje, "elm.swallow.view", item->view); } if ((item->style == TOOLBAR) && (item->func)) @@ -1219,7 +1182,7 @@ static void _ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) EINA_LIST_FOREACH(wd->items, l, it) { - label = elm_ctxpopup_item_label_get((Elm_Object_Item *) event_info); + label = elm_ctxpopup_item_label_get((Elm_Ctxpopup_Item *) event_info); if ((label) && (!strcmp(it->text, label))) break; } @@ -1351,14 +1314,6 @@ EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent) wd->selected_animation = EINA_FALSE; wd->pressed_signal = eina_stringshare_add("elm,state,pressed"); wd->selected_signal = eina_stringshare_add("elm,state,selected"); - wd->view = elm_layout_add(wd->parent); - elm_layout_theme_set(wd->view, "controlbar", "view", "default"); - if (wd->view == NULL) - { - printf("Cannot load bg edj\n"); - return NULL; - } - evas_object_show(wd->view); /* load background edj */ wd->edje = elm_layout_add(obj); @@ -1404,7 +1359,6 @@ EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent) evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); - evas_object_smart_member_add(wd->view, obj); elm_widget_resize_object_set(obj, wd->edje); _sizing_eval(obj); @@ -2436,9 +2390,9 @@ elm_controlbar_item_view_unset(Elm_Controlbar_Item *it) if (!wd) return NULL; Evas_Object *content; - if (it->view == elm_layout_content_get(wd->view, "elm.swallow.view")) + if (it->view == elm_layout_content_get(wd->edje, "elm.swallow.view")) { - content = elm_layout_content_unset(wd->view, "elm.swallow.view"); + content = elm_layout_content_unset(wd->edje, "elm.swallow.view"); if (content) evas_object_hide(content); } else diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index b581802..a6d6930 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -230,8 +230,6 @@ struct _Elm_Object_Item #define ELM_NEW(t) calloc(1, sizeof(t)) -#define ELM_CAST(p) ((void *)(p)) - #define ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ...) \ ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *) (it), __VA_ARGS__); \ ELM_CHECK_WIDTYPE(it->base.widget, widtype) __VA_ARGS__;