From: Wonki Kim Date: Thu, 11 Aug 2016 01:21:06 +0000 (+0900) Subject: conform: modify indicator UI when rotating device X-Git-Tag: accepted/tizen/common/20160826.142851~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F39%2F83439%2F7;p=platform%2Fupstream%2Felementary.git conform: modify indicator UI when rotating device by rotating device by user, conformant changes the visibility of the indicator according to its mode and opacity. Change-Id: I08350a2f8b5a569ec599b81bd1f6a52ab441b698 Signed-off-by: Wonki Kim --- diff --git a/src/lib/elm_conform.c b/src/lib/elm_conform.c index 63b9411..170388c 100644 --- a/src/lib/elm_conform.c +++ b/src/lib/elm_conform.c @@ -607,7 +607,7 @@ _indicator_visible_type_set(Evas_Object *obj, Eina_Bool visible) } #endif static Eina_Bool -_indicator_hide_effect(void *data) +_indicator_hide_effect_done_cb(void *data) { Evas_Object *conformant = data; ELM_CONFORMANT_DATA_GET(conformant, sd); @@ -615,18 +615,36 @@ _indicator_hide_effect(void *data) sd->on_indicator_effect = EINA_FALSE; sd->indicator_effect_timer = NULL; + elm_object_signal_emit(conformant, "indicator,hide,effect", "elm"); - if(((sd->rot == 90) || (sd->rot == 270)) || - (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSPARENT)) - { - elm_object_signal_emit(conformant, "indicator,hide,effect", "elm"); #ifdef HAVE_ELEMENTARY_WAYLAND - _indicator_visible_type_set(data, EINA_FALSE); + _indicator_visible_type_set(conformant, EINA_FALSE); #endif - } return ECORE_CALLBACK_CANCEL; } static void +_indicator_hide_effect_del(void *data) +{ + Evas_Object *conformant = data; + ELM_CONFORMANT_DATA_GET(conformant, sd); + + if (sd->indicator_effect_timer) + { + ecore_timer_del(sd->indicator_effect_timer); + sd->indicator_effect_timer = NULL; + } +} +static void +_indicator_hide_effect_set(void *data, double duration) +{ + Evas_Object *conformant = data; + ELM_CONFORMANT_DATA_GET(conformant, sd); + + _indicator_hide_effect_del(conformant); + if (duration) + sd->indicator_effect_timer = ecore_timer_add(duration, _indicator_hide_effect_done_cb, conformant); +} +static void _indicator_show_effect(Evas_Object *conformant, double duration) { ELM_CONFORMANT_DATA_GET(conformant, sd); @@ -635,18 +653,30 @@ _indicator_show_effect(Evas_Object *conformant, double duration) sd->on_indicator_effect = EINA_TRUE; elm_object_signal_emit(conformant, "indicator,show,effect", "elm"); - if (sd->indicator_effect_timer) ecore_timer_del(sd->indicator_effect_timer); - sd->indicator_effect_timer = ecore_timer_add(duration, _indicator_hide_effect, conformant); +#ifdef HAVE_ELEMENTARY_WAYLAND + _indicator_visible_type_set(conformant, EINA_TRUE); +#endif + _indicator_hide_effect_set(conformant, duration); } static void _indicator_post_appearance_changed(Evas_Object *conformant) { ELM_CONFORMANT_DATA_GET(conformant, sd); + _indicator_hide_effect_del(conformant); + if((sd->indmode != ELM_WIN_INDICATOR_SHOW)) { #ifdef HAVE_ELEMENTARY_WAYLAND - _indicator_visible_type_set(conformant, EINA_FALSE); + _indicator_visible_type_set(conformant, EINA_FALSE); +#endif + return; + } + + if ( sd->rot == 90 || sd->rot == 270 ) + { +#ifdef HAVE_ELEMENTARY_WAYLAND + _indicator_visible_type_set(conformant, EINA_FALSE); #endif return; } @@ -655,10 +685,18 @@ _indicator_post_appearance_changed(Evas_Object *conformant) (sd->indmode == ELM_WIN_INDICATOR_UNKNOWN)) return; + if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSPARENT) + { #ifdef HAVE_ELEMENTARY_WAYLAND - _indicator_visible_type_set(conformant, EINA_TRUE); + _indicator_visible_type_set(conformant, EINA_FALSE); #endif - _indicator_show_effect(conformant, 3); + } + else + { +#ifdef HAVE_ELEMENTARY_WAYLAND + _indicator_visible_type_set(conformant, EINA_TRUE); +#endif + } } // END static void @@ -738,14 +776,14 @@ _on_indicator_mode_changed(void *data, indmode = elm_win_indicator_mode_get(win); ind_o_mode = elm_win_indicator_opacity_get(win); - Eina_Bool sc = ((indmode != sd->indmode) | (ind_o_mode != sd->ind_o_mode)) ; // TIZEN_ONLY(20160801):indicator implementation + Eina_Bool dirty = ((indmode != sd->indmode) | (ind_o_mode != sd->ind_o_mode)) ; // TIZEN_ONLY(20160801):indicator implementation if (indmode != sd->indmode) _indicator_mode_set(conformant, indmode); if (ind_o_mode != sd->ind_o_mode) _indicator_opacity_set(conformant, ind_o_mode); // TIZEN_ONLY(20160801):indicator implementation - if (sc) + if (dirty) _indicator_post_appearance_changed(conformant); // END return EINA_TRUE; @@ -762,7 +800,6 @@ _on_rotation_changed(void *data, Evas_Object *old_indi = NULL; ELM_CONFORMANT_DATA_GET(data, sd); - rot = elm_win_rotation_get(win); if (rot == sd->rot) return EINA_TRUE; @@ -804,7 +841,7 @@ _on_indicator_flick_done(void *data, void *event_info EINA_UNUSED) { Evas_Object *conformant = data; - _indicator_post_appearance_changed(conformant); + _indicator_show_effect(conformant, 3); } // END