add transition animation between home and user view 00/44900/4
authorSoohye Shin <soohye.shin@samsung.com>
Wed, 29 Jul 2015 07:54:30 +0000 (16:54 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Wed, 29 Jul 2015 07:58:39 +0000 (16:58 +0900)
Change-Id: I6d77ac5bcbea45a9c3b4ebdf5109507fdaa8875a
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
edje/view/home.edc
edje/view/user.edc
include/defs.h
src/view/view_home.c
src/view/view_user.c

index e8df094..b72d4e2 100644 (file)
@@ -104,8 +104,23 @@ group {
                        }
                }
                part {
+                       name, "clip";
+                       type, RECT;
+                       scale, 1;
+                       description {
+                               state, "default" 0.0;
+                               color, 0 0 0 0;
+                       }
+                       description {
+                               state, "show" 0.0;
+                               inherit, "default" 0.0;
+                               color, 255 255 255 255;
+                       }
+               }
+               part {
                        name, PART_HOME_MENU_BAR;
                        type, SWALLOW;
+                       clip_to, "clip";
                        scale, 1;
                        description {
                                state, "default" 0.0;
@@ -117,14 +132,42 @@ group {
                                        relative, 0.0 0.0;
                                        to, "pad.list";
                                }
-                               fixed, 1 1;
                                align, 0.5 1.0;
+                               fixed, 1 1;
+                               min, 0 158;
+                       }
+                       description {
+                               state, "show" 0.0;
+                               inherit, "default" 0.0;
                                min, 948 158;
                        }
                }
        }
        programs {
                program {
+                       name, "sig,show";
+                       signal, SIG_SHOW;
+                       source, SRC_PROG;
+                       action, STATE_SET "show" 0.0;
+                       transition, DECEL 0.3;
+                       target, "clip";
+                       target, PART_HOME_MENU_BAR;
+               }
+               program {
+                       name, "sig,hide";
+                       signal, SIG_HIDE;
+                       source, SRC_PROG;
+                       action, STATE_SET "default" 0.0;
+                       transition, DECEL 0.3;
+                       target, "clip";
+                       target, PART_HOME_MENU_BAR;
+                       after, "sig,hide,done";
+               }
+               program {
+                       name, "sig,hide,done";
+                       action, SIGNAL_EMIT SIG_HIDE_DONE SRC_EDJE;
+               }
+               program {
                        name, "sig,show,navigation";
                        signal, SIG_SHOW_NAVIGATION;
                        source, SRC_PROG;
index 8bcd7e3..0566560 100644 (file)
@@ -51,9 +51,14 @@ group {
                                        font, "TizenSans";
                                        size, 34;
                                }
-                               color, 255 255 255 178;
+                               color, 0 0 0 0;
                                color2, 0 0 0 255;
                        }
+                       description {
+                               state, "show" 0.0;
+                               inherit, "default" 0.0;
+                               color, 255 255 255 178;
+                       }
                }
                part {
                        name, "pad.list";
@@ -76,9 +81,24 @@ group {
                        }
                }
                part {
+                       name, "clip";
+                       type, RECT;
+                       scale, 1;
+                       description {
+                               state, "default" 0.0;
+                               color, 0 0 0 0;
+                       }
+                       description {
+                               state, "show" 0.0;
+                               inherit, "default" 0.0;
+                               color, 255 255 255 255;
+                       }
+               }
+               part {
                        name, PART_USER_BAR;
                        type, SWALLOW;
                        scale, 1;
+                       clip_to, "clip";
                        description {
                                state, "default" 0.0;
                                rel1 {
@@ -89,10 +109,42 @@ group {
                                        to, "pad.list";
                                        relative, 1.0 1.0;
                                }
-                               min, 1422 228;
+                               min, 0 228;
                                align, 0.5 0.0;
                                fixed, 1 1;
                        }
+                       description {
+                               state, "show" 0.0;
+                               inherit, "default" 0.0;
+                               min, 1422 228;
+                       }
+               }
+       }
+       programs {
+               program {
+                       name, "sig,show";
+                       signal, SIG_SHOW;
+                       source, SRC_PROG;
+                       action, STATE_SET "show" 0.0;
+                       transition, DECEL 0.3;
+                       target, "clip";
+                       target, PART_USER_BAR;
+                       target, "text";
+               }
+               program {
+                       name, "sig,hide";
+                       signal, SIG_HIDE;
+                       source, SRC_PROG;
+                       action, STATE_SET "default" 0.0;
+                       transition, DECEL 0.3;
+                       target, "clip";
+                       target, PART_USER_BAR;
+                       target, "text";
+                       after, "sig,hide,done";
+               }
+               program {
+                       name, "sig,hide,done";
+                       action, SIGNAL_EMIT SIG_HIDE_DONE SRC_EDJE;
                }
        }
 }
index dcb2a0e..bc98de7 100644 (file)
 #define SIG_HIDE_RECENT_DONE "sig.hide.recent.done"
 #define SIG_DISABLE "sig.disable"
 #define SIG_SHOW_MASK "sig.show.mask"
+#define SIG_SHOW "sig.show"
+#define SIG_HIDE "sig.hide"
+#define SIG_HIDE_DONE "sig.hide.done"
 
 #define TITLE_WIDTH "title.width"
 
index 3c06565..11dd94d 100644 (file)
@@ -107,7 +107,10 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                viewmgr_push_view(VIEW_RECENT);
        } else if (!strcmp(ev->keyname, KEY_ENTER) ||
                        !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
-               datamgr_select_item(priv->dm, priv->foc->di);
+               if (priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
+                       elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG);
+               else
+                       datamgr_select_item(priv->dm, priv->foc->di);
        } else if (!strcmp(ev->keyname, KEY_BACK) ||
                        !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
                /* It should be implemented later */
@@ -127,7 +130,10 @@ static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
 
                bi = data;
                priv = bi->priv;
-               datamgr_select_item(priv->dm, priv->foc->di);
+               if (priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
+                       elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG);
+               else
+                       datamgr_select_item(priv->dm, priv->foc->di);
                break;
        case INPUT_HANDLER_TYPE_DOWN:
                viewmgr_push_view(VIEW_RECENT);
@@ -290,6 +296,14 @@ static bool _add_home_menu(struct _priv *priv, Evas_Object *base)
        return true;
 }
 
+static void _hide_done(void *data, Evas_Object *obj, const char *emission,
+               const char *source)
+{
+       struct _priv *priv = data;
+
+       datamgr_select_item(priv->dm, priv->foc->di);
+}
+
 static Evas_Object *_create(Evas_Object *win, void *data)
 {
        struct _priv *priv;
@@ -334,6 +348,8 @@ static Evas_Object *_create(Evas_Object *win, void *data)
 
        viewmgr_set_view_data(VIEW_HOME, priv);
        inputmgr_add_callback(base, INPUT_HANDLER_TYPE_BASE, &handler, priv);
+       elm_object_signal_callback_add(base, SIG_HIDE_DONE, SRC_EDJE,
+                       _hide_done, priv);
 
        return base;
 }
@@ -353,6 +369,7 @@ static void _show(void *data)
 
        evas_object_show(priv->base);
        elm_object_signal_emit(priv->base, SIG_SHOW_NAVIGATION, SRC_PROG);
+       elm_object_signal_emit(priv->base, SIG_SHOW, SRC_PROG);
 
        if (!priv->foc)
                priv->foc = eina_list_data_get(priv->list);
index d13782e..22ad054 100644 (file)
@@ -135,19 +135,24 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                priv = data;
                if (!strcmp(ev->keyname, KEY_ENTER) ||
                                !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
+                       if (priv->foc->di->action == ITEM_SELECT_ACTION_POP) {
+                               elm_object_signal_emit(priv->base, SIG_HIDE,
+                                               SRC_PROG);
+                               return;
+                       }
+
                        if ((priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
                                        && (eina_list_count(priv->list)
                                        >= MAX_USER_COUNT)) {
                                _add_popup(priv);
                                return;
                        }
-
                        viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_EDIT,
                                        NULL);
                        datamgr_select_item(priv->dm, priv->foc->di);
                } else if (!strcmp(ev->keyname, KEY_BACK) ||
                                !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
-                       viewmgr_pop_view();
+                       elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG);
                } else if (!strcmp(ev->keyname, KEY_DOWN)) {
                        if (priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
                                return;
@@ -175,6 +180,12 @@ static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
        switch (id) {
        case INPUT_HANDLER_TYPE_BASE:
                priv = data;
+               if (priv->foc->di->action == ITEM_SELECT_ACTION_POP) {
+                       elm_object_signal_emit(priv->base, SIG_HIDE,
+                                       SRC_PROG);
+                               return;
+               }
+
                if ((priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
                                && (eina_list_count(priv->list)
                                >= MAX_USER_COUNT)) {
@@ -195,6 +206,12 @@ static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
        }
 }
 
+static void _hide_done(void *data, Evas_Object *obj, const char *emission,
+               const char *source)
+{
+       viewmgr_pop_view();
+}
+
 static Evas_Object *_create(Evas_Object *win, void *data)
 {
        struct _priv *priv;
@@ -237,6 +254,8 @@ static Evas_Object *_create(Evas_Object *win, void *data)
        viewmgr_set_view_data(VIEW_USER, priv);
        viewmgr_add_view(view_user_edit_get_vclass(), dm);
        inputmgr_add_callback(base, INPUT_HANDLER_TYPE_BASE, &handler, priv);
+       elm_object_signal_callback_add(base, SIG_HIDE_DONE, SRC_EDJE,
+                       _hide_done, NULL);
 
        return base;
 }
@@ -369,6 +388,7 @@ static void _show(void *data)
        priv = data;
 
        evas_object_show(priv->base);
+       elm_object_signal_emit(priv->base, SIG_SHOW, SRC_PROG);
 
        _add_user(priv);