From: Soohye Shin Date: Wed, 29 Jul 2015 07:54:30 +0000 (+0900) Subject: add transition animation between home and user view X-Git-Tag: accepted/tizen/tv/20150730.014448~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1daf973cb81b9eaf0d5dd3604b4ad3bb97758dc2;p=profile%2Ftv%2Fapps%2Fnative%2Fair_home.git add transition animation between home and user view Change-Id: I6d77ac5bcbea45a9c3b4ebdf5109507fdaa8875a Signed-off-by: Soohye Shin --- diff --git a/edje/view/home.edc b/edje/view/home.edc index e8df094..b72d4e2 100644 --- a/edje/view/home.edc +++ b/edje/view/home.edc @@ -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; diff --git a/edje/view/user.edc b/edje/view/user.edc index 8bcd7e3..0566560 100644 --- a/edje/view/user.edc +++ b/edje/view/user.edc @@ -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; } } } diff --git a/include/defs.h b/include/defs.h index dcb2a0e..bc98de7 100644 --- a/include/defs.h +++ b/include/defs.h @@ -115,6 +115,9 @@ #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" diff --git a/src/view/view_home.c b/src/view/view_home.c index 3c06565..11dd94d 100644 --- a/src/view/view_home.c +++ b/src/view/view_home.c @@ -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); diff --git a/src/view/view_user.c b/src/view/view_user.c index d13782e..22ad054 100644 --- a/src/view/view_user.c +++ b/src/view/view_user.c @@ -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);