diff options
author | Hyojung Jo <hj903.jo@samsung.com> | 2015-09-09 14:21:46 +0900 |
---|---|---|
committer | Hyojung Jo <hj903.jo@samsung.com> | 2015-09-09 17:39:15 +0900 |
commit | 39abdd5453f40fd547ba5e1e3df715bb87c231dc (patch) | |
tree | affc197231f1834743604af0bf9f6bdbd3963c04 | |
parent | 8f7080c762c8b2a422b53b5bdf2338667f73e5a5 (diff) | |
download | air_favorite-39abdd5453f40fd547ba5e1e3df715bb87c231dc.tar.gz air_favorite-39abdd5453f40fd547ba5e1e3df715bb87c231dc.tar.bz2 air_favorite-39abdd5453f40fd547ba5e1e3df715bb87c231dc.zip |
View: Apply animation to show/hide of action menu view
Change-Id: I0ef09f4759598d825955aac68e5d8fb35702564a
Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
-rw-r--r-- | include/define.h | 5 | ||||
-rw-r--r-- | res/favorite.edc | 57 | ||||
-rw-r--r-- | src/view/view_action_menu.c | 38 |
3 files changed, 89 insertions, 11 deletions
diff --git a/include/define.h b/include/define.h index f0c3675..af44081 100644 --- a/include/define.h +++ b/include/define.h @@ -78,6 +78,9 @@ #define SIG_DISABLE "elm,state,disabled" #define SIG_TOGGLE "toggle" #define SIG_TIMEOUT "timeout" +#define SIG_SHOW "show" +#define SIG_HIDE "hide" +#define SIG_HIDE_DONE "hide.done" /* Source */ #define SRC_EDC "edc" @@ -88,6 +91,8 @@ /* Transition */ #define TRANSITION_FOCUS DECELERATE 0.20 #define TRANSITION_CLICK DECELERATE 0 +#define TRANSITION_MENU_SHOW SIN 0.45 +#define TRANSITION_MENU_HIDE DECEL 0.3 /* Text */ #define STR_FAVORITE "Favorite" diff --git a/res/favorite.edc b/res/favorite.edc index 13873fb..0e73759 100644 --- a/res/favorite.edc +++ b/res/favorite.edc @@ -345,6 +345,25 @@ collections { name, GRP_VIEW_ACTION_MENU; parts { part { + name, "reference"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 500 0; + rel1.relative, 1.0 0.0; + align, 0.0 0.5; + fixed, 1 0; + visible, 0; + } + description { + state, "show" 0.0; + inherit, "default" 0.0; + min, 0 0; + } + } + + part { name, "bg.dark"; type, RECT; scale, 1; @@ -361,11 +380,19 @@ collections { description { state, "default" 0.0; color, 255 255 255 255; - rel1.relative, 1.0 0.0; + rel1 { + to, "reference"; + relative, 1.0 0.0; + } + rel2.to, "reference"; min, 500 0; align, 1.0 0.5; fixed, 1 0; } + description { + state, "show" 0.0; + inherit, "default" 0.0; + } } part { @@ -512,6 +539,34 @@ collections { } } } + + programs { + program { + name, SIG_SHOW; + signal, SIG_SHOW; + source, SRC_EDC; + action, STATE_SET "show" 0.0; + transition, TRANSITION_MENU_SHOW; + target, "reference"; + target, "bg"; + } + + program { + name, SIG_HIDE; + signal, SIG_HIDE; + source, SRC_EDC; + action, STATE_SET "default" 0.0; + transition, TRANSITION_MENU_HIDE; + target, "reference"; + target, "bg"; + after, SIG_HIDE_DONE; + } + + program { + name, SIG_HIDE_DONE; + action, SIGNAL_EMIT SIG_HIDE_DONE SRC_EDC; + } + } } group { diff --git a/src/view/view_action_menu.c b/src/view/view_action_menu.c index 6b719e0..eb053ba 100644 --- a/src/view/view_action_menu.c +++ b/src/view/view_action_menu.c @@ -72,18 +72,22 @@ static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj, elm_object_focus_set(obj, EINA_TRUE); } -static void _livetv_selected(void) +static void _livetv_selected(struct _priv *priv) { if (!utils_launch_app(APP_ID_LIVETV, NULL, NULL)) { _ERR("Launch live tv failed."); return; } - viewmgr_hide_view(VIEW_ACTION_MENU); + elm_object_signal_emit(priv->base, SIG_HIDE, SRC_EDC); } -static void _favorite_selected(struct grid_data *gdata) +static void _favorite_selected(struct _priv *priv) { + struct grid_data *gdata; + + gdata = priv->gdata; + if (!gdata->item_action(gdata->focused_item, ACTION_UPDATE_FAVORITE, NULL)) { _ERR("Unfavorite failed."); @@ -92,7 +96,7 @@ static void _favorite_selected(struct grid_data *gdata) viewmgr_update_view(VIEW_BASE, UPDATE_GRID, gdata); viewmgr_update_view(VIEW_BASE, UPDATE_SHOW_TOAST, STR_REMOVE_FAVORITE); - viewmgr_hide_view(VIEW_ACTION_MENU); + elm_object_signal_emit(priv->base, SIG_HIDE, SRC_EDC); } static void _lock_selected(struct grid_data *gdata) @@ -117,11 +121,11 @@ static void _clicked_cb(int id, void *data, Evas_Object *obj) switch (id) { case BTN_LIVETV: - _livetv_selected(); + _livetv_selected(priv); break; case BTN_FAVORITE: - _favorite_selected(priv->gdata); + _favorite_selected(priv); break; case BTN_LOCK: @@ -136,14 +140,17 @@ static void _clicked_cb(int id, void *data, Evas_Object *obj) static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { - if (!ev) { + struct _priv *priv; + + if (!data || !ev) { _ERR("Invalid argument."); return; } + priv = data; if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) - viewmgr_hide_view(VIEW_ACTION_MENU); + elm_object_signal_emit(priv->base, SIG_HIDE, SRC_EDC); } static input_handler _btn_input_handler = { @@ -284,6 +291,12 @@ static bool _draw_banner_area(struct _priv *priv) return true; } +static void _hide_done_cb(void *data, Evas_Object *obj, + const char *emmision, const char *source) +{ + viewmgr_hide_view(VIEW_ACTION_MENU); +} + static Evas_Object *_create(Evas_Object *win, void *data) { struct _priv *priv; @@ -317,6 +330,9 @@ static Evas_Object *_create(Evas_Object *win, void *data) return NULL; } + elm_object_signal_callback_add(base, SIG_HIDE_DONE, SRC_EDC, + _hide_done_cb, NULL); + _draw_livetv_area(priv); return base; @@ -335,6 +351,10 @@ static void _show(void *data) if (priv->base) evas_object_show(priv->base); + _draw_action_area(priv); + _draw_banner_area(priv); + + elm_object_signal_emit(priv->base, SIG_SHOW, SRC_EDC); elm_object_focus_set(priv->live_btn, EINA_TRUE); } @@ -370,8 +390,6 @@ static void _update(void *view_data, int update_type, void *data) return; priv->gdata = data; - _draw_action_area(priv); - _draw_banner_area(priv); } } |