From: MinJeong Kim Date: Thu, 17 Nov 2016 10:07:45 +0000 (+0900) Subject: Enable keyboard sliding animation X-Git-Tag: accepted/tizen/common/20161121.143444~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F08%2F98608%2F2;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-effect.git Enable keyboard sliding animation Change-Id: I8c8d3c347b942ab5767669eebf05fe32860d0d83 Signed-off-by: MinJeong Kim --- diff --git a/data/group/keyboard.edc b/data/group/keyboard.edc index ae8dd2b..6b8fcae 100644 --- a/data/group/keyboard.edc +++ b/data/group/keyboard.edc @@ -1,14 +1,24 @@ +#define KEYBOARD_EFFECT_FAST 0.20 group { name: "e/comp/effects/keyboard"; script { + public ang; public message(Msg_Type:type, id, ...) { if ((type == MSG_INT_SET) && (id == 0)) { /*set state */ new st; + new rot; + new buf[32]; + st = getarg(2); + rot = getarg(3); + + set_int(ang, rot); + if (st == 0) { + snprintf(buf, sizeof(buf), "default,%d", rot); set_state(PART:"clipper", "default", 0.0); - set_state(PART:"shower", "default", 0.0); + set_state(PART:"shower", buf, 0.0); } else if (st == 1) { @@ -17,8 +27,9 @@ group { name: "e/comp/effects/keyboard"; } else if (st == 2) { + snprintf(buf, sizeof(buf), "restack_hidden,%d", rot); set_state(PART:"clipper", "restack_hidden", 0.0); - set_state(PART:"shower", "restack_hidden", 0.0); + set_state(PART:"shower", buf, 0.0); } else if (st == 3) { @@ -34,6 +45,25 @@ group { name: "e/comp/effects/keyboard"; { } } + public hide_state(val, Float:pos) + { + new rot; + new buf[32]; + + rot = get_int(ang); + snprintf(buf, sizeof(buf), "hide,%d", rot); + + set_tween_state_anim(PART:"shower", "visible", 0.0, buf, 0.0, DECELERATE, pos, "CURRENT"); + set_tween_state_anim(PART:"clipper", "visible", 0.0, buf, 0.0, DECELERATE, pos, "CURRENT"); + + if (pos == 1.0) + { + if (get_int(val) == 1) + run_program(PROGRAM:"hide2"); + else + run_program(PROGRAM:"done"); + } + } } parts { part { name: "clipper"; @@ -53,6 +83,7 @@ group { name: "e/comp/effects/keyboard"; } description { state: "hide" 0.0; inherit: "default" 0.0; + color: 255 255 255 255; } description { state: "restack_visible" 0.0; inherit: "visible" 0.0; @@ -70,6 +101,21 @@ group { name: "e/comp/effects/keyboard"; rel1.relative: 0 1; rel2.relative: 1 2; } + description { state: "default,0" 0.0; + inherit: "default" 0.0; + } + description { state: "default,90" 0.0; + rel1.relative: 1 0; + rel2.relative: 2 1; + } + description { state: "default,180" 0.0; + rel1.relative: 0 -1; + rel2.relative: 0 1; + } + description { state: "default,270" 0.0; + rel1.relative: -1 0; + rel2.relative: 0 1; + } description { state: "visible" 0.0; inherit: "default" 0.0; rel1.relative: 0 0; @@ -79,12 +125,36 @@ group { name: "e/comp/effects/keyboard"; description { state: "hide" 0.0; inherit: "default" 0.0; } + description { state: "hide,0" 0.0; + inherit: "hide" 0.0; + } + description { state: "hide,90" 0.0; + inherit: "default,90" 0.0; + } + description { state: "hide,180" 0.0; + inherit: "default,180" 0.0; + } + description { state: "hide,270" 0.0; + inherit: "default,270" 0.0; + } description { state: "restack_visible" 0.0; inherit: "visible" 0.0; } description { state: "restack_hidden" 0.0; inherit: "default" 0.0; } + description { state: "restack_hidden,0" 0.0; + inherit: "restack_hidden" 0.0; + } + description { state: "restack_hidden,90" 0.0; + inherit: "default,90" 0.0; + } + description { state: "restack_hidden,180" 0.0; + inherit: "default,180" 0.0; + } + description { state: "restack_hidden,270" 0.0; + inherit: "default,270" 0.0; + } description { state: "restack_done" 0.0; inherit: "visible" 0.0; } @@ -110,9 +180,9 @@ group { name: "e/comp/effects/keyboard"; program { name: "show1"; signal: "e,action,go"; source: "e"; - filter: "shower" "default"; + filter: "clipper" "default"; action: STATE_SET "visible" 0.0; - transition: ACCELERATE COMP_EFFECT_DURATION_FAST; + transition: DECELERATE KEYBOARD_EFFECT_FAST; target: "shower"; target: "clipper"; target: "e.swallow.content"; @@ -121,12 +191,10 @@ group { name: "e/comp/effects/keyboard"; program { name: "hide1"; signal: "e,action,go"; source: "e"; - filter: "shower" "visible"; - action: STATE_SET "hide" 0.0; - transition: ACCELERATE COMP_EFFECT_DURATION_FAST; - target: "shower"; - target: "clipper"; - after: "hide2"; + filter: "clipper" "visible"; + script{ + anim(KEYBOARD_EFFECT_FAST, "hide_state", 1); + } } program { name: "hide2"; action: STATE_SET "default" 0.0; @@ -137,19 +205,17 @@ group { name: "e/comp/effects/keyboard"; program { name: "restack,hide"; signal: "e,action,go"; source: "e"; - filter: "shower" "restack_visible"; - action: STATE_SET "hide" 0.0; - transition: ACCELERATE COMP_EFFECT_DURATION_FAST; - target: "shower"; - target: "clipper"; - after: "done"; + filter: "clipper" "restack_visible"; + script{ + anim(KEYBOARD_EFFECT_FAST, "hide_state", 0); + } } program { name: "restack,show"; signal: "e,action,go"; source: "e"; - filter: "shower" "restack_hidden"; + filter: "clipper" "restack_hidden"; action: STATE_SET "visible" 0.0; - transition: ACCELERATE COMP_EFFECT_DURATION_FAST; + transition: DECELERATE KEYBOARD_EFFECT_FAST; target: "shower"; target: "clipper"; target: "e.swallow.content"; @@ -158,7 +224,7 @@ group { name: "e/comp/effects/keyboard"; program { name: "restack,finish"; signal: "e,action,go"; source: "e"; - filter: "shower" "restack_done"; + filter: "clipper" "restack_done"; action: STATE_SET "visible" 0.0; target: "shower"; target: "clipper"; diff --git a/src/e_mod_effect.c b/src/e_mod_effect.c index 47a630a..3aece03 100644 --- a/src/e_mod_effect.c +++ b/src/e_mod_effect.c @@ -205,12 +205,12 @@ _eff_unref(E_Client *ec) } static void -_eff_object_setup(E_Client *ec) +_eff_object_setup(E_Client *ec, E_Effect_Group group) { E_Comp_Config *cfg; cfg = e_comp_config_get(); - if (ec->vkbd.vkbd) + if (group == E_EFFECT_GROUP_KEYBOARD) e_comp_object_effect_set(ec->frame, "keyboard"); else { @@ -415,6 +415,7 @@ _eff_cb_visible(void *data, Evas_Object *obj, const char *signal) { E_Client *ec; E_Effect_Group group; + int ang = -1; if (!_eff) return EINA_FALSE; @@ -423,7 +424,8 @@ _eff_cb_visible(void *data, Evas_Object *obj, const char *signal) if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; group = _eff_group_get(ec); - if (group != E_EFFECT_GROUP_NORMAL) return EINA_FALSE; + if ((group != E_EFFECT_GROUP_NORMAL) && + (group != E_EFFECT_GROUP_KEYBOARD)) return EINA_FALSE; if (evas_object_visible_get(obj)) return EINA_FALSE; if (!_eff_ref(ec)) return EINA_FALSE; @@ -433,8 +435,9 @@ _eff_cb_visible(void *data, Evas_Object *obj, const char *signal) EFFINF("SET EXTRA_ANIMATING...", ec->pixmap, ec); ec->extra_animating = EINA_TRUE; - _eff_object_setup(ec); - e_comp_object_effect_params_set(ec->frame, 0, (int[]){0}, 1); + _eff_object_setup(ec, group); + ang = ec->e.state.rot.ang.curr; + e_comp_object_effect_params_set(ec->frame, 0, (int[]){0, ang}, 2); if (e_comp->nocomp) { _eff_pending_effect_set(ec, @@ -480,6 +483,7 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) Eina_Bool lowered = 0; Evas_Object *below; int map_ly; + int ang = -1; if (!_eff) return EINA_FALSE; @@ -488,7 +492,8 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; group = _eff_group_get(ec); - if (group != E_EFFECT_GROUP_NORMAL) return EINA_FALSE; + if ((group != E_EFFECT_GROUP_NORMAL) && + (group != E_EFFECT_GROUP_KEYBOARD)) return EINA_FALSE; if (!evas_object_visible_get(obj)) return EINA_FALSE; if (!_eff_ref(ec)) return EINA_FALSE; @@ -506,8 +511,9 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal) if (lowered) _eff_object_layer_up(ec); - _eff_object_setup(ec); - e_comp_object_effect_params_set(ec->frame, 0, (int[]){1}, 1); + _eff_object_setup(ec, group); + ang = ec->e.state.rot.ang.curr; + e_comp_object_effect_params_set(ec->frame, 0, (int[]){1, ang}, 2); if (e_comp->nocomp) { @@ -544,6 +550,7 @@ _eff_cb_uniconify(void *data, Evas_Object *obj, const char *signal) E_Client *ec; E_Effect_Group group; Eina_Bool v1, v2; + int ang = -1; if (!_eff) return EINA_FALSE; @@ -593,8 +600,9 @@ _eff_cb_uniconify(void *data, Evas_Object *obj, const char *signal) e_comp_object_signal_emit(below->frame, "e,action,restack,hide", "e"); return EINA_TRUE; } - /* for NORMAL group */ - else if (group == E_EFFECT_GROUP_NORMAL) + /* for NORMAL and KEYBOARD group */ + else if ((group == E_EFFECT_GROUP_NORMAL) || + (group == E_EFFECT_GROUP_KEYBOARD)) { v1 = _eff_visibility_stack_check(ec, _eff->stack.old); v2 = _eff_visibility_stack_check(ec, _eff->stack.cur); @@ -611,8 +619,9 @@ _eff_cb_uniconify(void *data, Evas_Object *obj, const char *signal) e_comp_override_add(); - _eff_object_setup(ec); - e_comp_object_effect_params_set(ec->frame, 0, (int[]){0}, 1); + _eff_object_setup(ec, group); + ang = ec->e.state.rot.ang.curr; + e_comp_object_effect_params_set(ec->frame, 0, (int[]){0, ang}, 2); if (e_comp->nocomp) { @@ -655,6 +664,7 @@ _eff_cb_iconify(void *data, Evas_Object *obj, const char *signal) E_Client *ec; E_Effect_Group group; Eina_Bool v1, v2; + int ang = -1; if (!_eff) return EINA_FALSE; @@ -663,7 +673,8 @@ _eff_cb_iconify(void *data, Evas_Object *obj, const char *signal) if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; group = _eff_group_get(ec); - if (group != E_EFFECT_GROUP_NORMAL) return EINA_FALSE; + if ((group != E_EFFECT_GROUP_NORMAL) && + (group != E_EFFECT_GROUP_KEYBOARD)) return EINA_FALSE; if (!evas_object_visible_get(obj)) return EINA_FALSE; @@ -682,8 +693,9 @@ _eff_cb_iconify(void *data, Evas_Object *obj, const char *signal) e_comp_override_add(); - _eff_object_setup(ec); - e_comp_object_effect_params_set(ec->frame, 0, (int[]){1}, 1); + _eff_object_setup(ec, group); + ang = ec->e.state.rot.ang.curr; + e_comp_object_effect_params_set(ec->frame, 0, (int[]){1, ang}, 2); if (e_comp->nocomp) { @@ -780,6 +792,7 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) E_Effect_Group group; const char *emission; E_Client *ec_home = NULL; + int ang = -1; if (!_eff) return EINA_FALSE; @@ -818,7 +831,8 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) emission = eina_stringshare_add("e,action,restack,hide"); } - if (group != E_EFFECT_GROUP_NORMAL) return EINA_FALSE; + if ((group != E_EFFECT_GROUP_NORMAL) && + (group != E_EFFECT_GROUP_KEYBOARD)) return EINA_FALSE; if ((!e_util_strcmp(emission, "e,action,restack,show"))) { @@ -831,8 +845,9 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) _eff_object_layer_up(ec); - _eff_object_setup(ec); - e_comp_object_effect_params_set(ec->frame, 0, (int[]){2}, 1); + _eff_object_setup(ec, group); + ang = ec->e.state.rot.ang.curr; + e_comp_object_effect_params_set(ec->frame, 0, (int[]){2, ang}, 2); if (e_comp->nocomp) { @@ -873,8 +888,9 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) _eff_object_layer_up(ec); - _eff_object_setup(ec); - e_comp_object_effect_params_set(ec->frame, 0, (int[]){3}, 1); + _eff_object_setup(ec, group); + ang = ec->e.state.rot.ang.curr; + e_comp_object_effect_params_set(ec->frame, 0, (int[]){3, ang}, 2); if (e_comp->nocomp) { @@ -894,8 +910,9 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal) e_comp_override_add(); - _eff_object_setup(ec); - e_comp_object_effect_params_set(ec->frame, 0, (int[]){4}, 1); + _eff_object_setup(ec, group); + ang = ec->e.state.rot.ang.curr; + e_comp_object_effect_params_set(ec->frame, 0, (int[]){4, ang}, 2); if (e_comp->nocomp) {