Enable keyboard sliding animation 08/98608/2
authorMinJeong Kim <minjjj.kim@samsung.com>
Thu, 17 Nov 2016 10:07:45 +0000 (19:07 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Mon, 21 Nov 2016 05:54:01 +0000 (21:54 -0800)
Change-Id: I8c8d3c347b942ab5767669eebf05fe32860d0d83
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
data/group/keyboard.edc
src/e_mod_effect.c

index ae8dd2b..6b8fcae 100644 (file)
@@ -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";
index 47a630a..3aece03 100644 (file)
@@ -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)
           {