From: ChunEon Park Date: Sat, 21 Aug 2010 12:31:42 +0000 (+0900) Subject: [elm_ctxpopup.c] X-Git-Tag: beat-winset-test_0.1.1-40~40^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=877ddcb8638e282558936a52ae549fc7566bfd93;p=framework%2Fuifw%2Felementary.git [elm_ctxpopup.c] --- diff --git a/src/lib/elm_ctxpopup.c b/src/lib/elm_ctxpopup.c index d0fa72e..0ca9f65 100644 --- a/src/lib/elm_ctxpopup.c +++ b/src/lib/elm_ctxpopup.c @@ -84,6 +84,58 @@ static void _shift_base_by_arrow(Evas_Object *arrow, static void _btn_layout_create(Evas_Object *obj); static void +_show_effect_done(void *data, Elm_Transit *transit) +{ + //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented on the edje. + Widget_Data *wd = data; + elm_transit_fx_clear(transit); + + if(wd->box) + elm_transit_fx_insert(transit, elm_fx_color_add(wd->box, 0, 0, 0, 0, 255, 255, 255, 255 )); + if(wd->content) + elm_transit_fx_insert(transit, elm_fx_color_add(wd->content, 0, 0, 0, 0, 255, 255, 255, 255 )); + if(wd->btn_layout) + elm_transit_fx_insert(transit, elm_fx_color_add(wd->btn_layout, 0, 0, 0, 0, 255, 255, 255, 255 )); + elm_transit_run(transit, 0.2); + elm_transit_completion_callback_set(transit, NULL, NULL); + elm_transit_del(transit); + edje_object_signal_emit(wd->base, "elm,state,show", "elm"); + wd->transit = NULL; +} + +static void +_show_effect(Widget_Data* wd) +{ + //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented in the edc + if(wd->transit) { + elm_transit_stop(wd->transit); + elm_transit_fx_clear(wd->transit); + }else { + wd->transit = elm_transit_add(wd->base); + elm_transit_curve_style_set(wd->transit, ELM_ANIMATOR_CURVE_OUT); + elm_transit_completion_callback_set(wd->transit, _show_effect_done, wd); + } + + elm_transit_fx_insert(wd->transit, elm_fx_color_add( wd->base, 0, 0, 0, 0, 255, 255, 255, 255 ) ); + elm_transit_fx_insert(wd->transit, elm_fx_wipe_add( wd->base, ELM_FX_WIPE_TYPE_SHOW, wd->arrow_dir) ); + + if(wd->box) + evas_object_color_set(wd->box, 0, 0, 0, 0 ); + if(wd->content) + evas_object_color_set(wd->content, 0, 0, 0, 0); + if(wd->btn_layout) + evas_object_color_set(wd->btn_layout, 0, 0, 0, 0); + + elm_transit_run(wd->transit, 0.3 ); +} + + + + + + + +static void _separator_obj_del(Widget_Data *wd, Elm_Ctxpopup_Item *remove_item) { Eina_List *elist, *cur_list, *prev_list; @@ -604,7 +656,10 @@ _ctxpopup_show(void *data, Evas *e, Evas_Object *obj, void *event_info) if (!wd->position_forced) evas_object_show(wd->arrow); + _show_effect(wd); + wd->visible = EINA_TRUE; + } static void @@ -624,46 +679,6 @@ _ctxpopup_hide(void *data, Evas *e, Evas_Object *obj, void *event_info) wd->visible = EINA_FALSE; } -static void -_show_effect_done(void *data, Elm_Transit *transit) -{ - //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented on the edje. - Widget_Data *wd = data; - elm_transit_fx_clear(transit); - - if(wd->box) - elm_transit_fx_insert(transit, elm_fx_color_add(wd->box, 0, 0, 0, 0, 255, 255, 255, 255 )); - if(wd->content) - elm_transit_fx_insert(transit, elm_fx_color_add(wd->content, 0, 0, 0, 0, 255, 255, 255, 255 )); - if(wd->btn_layout) - elm_transit_fx_insert(transit, elm_fx_color_add(wd->btn_layout, 0, 0, 0, 0, 255, 255, 255, 255 )); - elm_transit_run(transit, 0.2); - elm_transit_completion_callback_set(transit, NULL, NULL); - elm_transit_del(transit); - edje_object_signal_emit(wd->base, "elm,state,show", "elm"); - wd->transit = NULL; -} - -static void -_show_effect(Widget_Data* wd) -{ - //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented in the edc - if(wd->transit) return ; - - if(wd->box) - evas_object_color_set(wd->box, 0, 0, 0, 0 ); - if(wd->content) - evas_object_color_set(wd->content, 0, 0, 0, 0); - if(wd->btn_layout) - evas_object_color_set(wd->btn_layout, 0, 0, 0, 0); - - wd->transit = elm_transit_add(wd->base); - elm_transit_fx_insert(wd->transit, elm_fx_color_add( wd->base, 0, 0, 0, 0, 255, 255, 255, 255 ) ); - elm_transit_fx_insert(wd->transit, elm_fx_wipe_add( wd->base, ELM_FX_WIPE_TYPE_SHOW, wd->arrow_dir) ); - elm_transit_curve_style_set(wd->transit, ELM_ANIMATOR_CURVE_OUT); - elm_transit_completion_callback_set(wd->transit, _show_effect_done, wd); - elm_transit_run(wd->transit, 0.3 ); -} static void _ctxpopup_scroller_resize(void *data, Evas *e, Evas_Object * obj, @@ -675,8 +690,8 @@ _ctxpopup_scroller_resize(void *data, Evas *e, Evas_Object * obj, return; if (wd->visible) { - _sizing_eval(data); - _show_effect(wd); + _sizing_eval(data); + _show_effect(wd); } } @@ -829,13 +844,13 @@ elm_ctxpopup_add(Evas_Object *parent) _bg_clicked_cb, obj); //Base - wd->base = edje_object_add(e); elm_widget_sub_object_add(obj, wd->base); _elm_theme_object_set(obj, wd->base, "ctxpopup", "base", elm_widget_style_get(obj)); //Scroller + wd->scroller = elm_scroller_add(obj); elm_object_style_set(wd->scroller, "ctxpopup_vbar"); elm_scroller_content_min_limit(wd->scroller, EINA_TRUE, EINA_TRUE);