diff options
author | Soohye Shin <soohye.shin@samsung.com> | 2015-09-03 14:37:42 +0900 |
---|---|---|
committer | Soohye Shin <soohye.shin@samsung.com> | 2015-09-03 14:37:42 +0900 |
commit | 6bfa52412e1bd3a25f009a03a9bca587a3835e60 (patch) | |
tree | 486acd0e196271af6d84db7d7cd458656bed739a | |
parent | 0c3a2a1a2c635109ae4d35e7772e5ea3932ee5dd (diff) | |
download | air_home-6bfa52412e1bd3a25f009a03a9bca587a3835e60.tar.gz air_home-6bfa52412e1bd3a25f009a03a9bca587a3835e60.tar.bz2 air_home-6bfa52412e1bd3a25f009a03a9bca587a3835e60.zip |
add animation effect to show and hide action menu
Change-Id: I23e0e09d4e0d12b05e3ab0bcd31cb3d7c9cec43d
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
-rw-r--r-- | edje/view/actionmenu.edc | 68 | ||||
-rw-r--r-- | edje/widget/button.edc | 2 | ||||
-rw-r--r-- | src/view/view_action_menu.c | 21 |
3 files changed, 83 insertions, 8 deletions
diff --git a/edje/view/actionmenu.edc b/edje/view/actionmenu.edc index 12310a5..4fab779 100644 --- a/edje/view/actionmenu.edc +++ b/edje/view/actionmenu.edc @@ -28,12 +28,46 @@ group { } } part { + name, "guide"; + type, RECT; + description { + state, "default" 0.0; + rel1.relative, 1.0 0.0; + min, 500 0; + align, 0.0 0.5; + visible, 0; + } + description { + state, "show" 0.0; + inherit, "default" 0.0; + min, 0 0; + } + } + part { + name, "clip"; + type, RECT; + 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, "bar"; type, RECT; scale, 1; + clip_to, "clip"; description { state, "default" 0.0; - rel1.relative, 1.0 0.0; + rel1 { + to, "guide"; + relative, 1.0 0.0; + } + rel2.to, "guide"; min, 500 0; fixed, 1 0; align, 1.0 0.5; @@ -153,6 +187,38 @@ group { } } } + programs { + program { + name, "sig,show,init"; + signal, SIG_SHOW; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + target, "clip"; + target, "guide"; + after, "sig,show"; + } + program { + name, "sig,show"; + action, STATE_SET "show" 0.0; + transition, SIN 0.45; + target, "clip"; + target, "guide"; + } + program { + name, "sig,hide"; + signal, SIG_HIDE; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, DECEL 0.3; + target, "clip"; + target, "guide"; + after, "sig,hide,done"; + } + program { + name, "sig,hide,done"; + action, SIGNAL_EMIT SIG_HIDE_DONE SRC_EDJE; + } + } } group { name, GRP_ACTION_MENU_LIVETV; diff --git a/edje/widget/button.edc b/edje/widget/button.edc index e3283a0..4d57906 100644 --- a/edje/widget/button.edc +++ b/edje/widget/button.edc @@ -205,7 +205,7 @@ group { parts { part { name, "icon"; - type, RECT; + type, SPACER; scale, 1; description { state, "default" 0.0; diff --git a/src/view/view_action_menu.c b/src/view/view_action_menu.c index 41b34fd..f0532be 100644 --- a/src/view/view_action_menu.c +++ b/src/view/view_action_menu.c @@ -261,7 +261,7 @@ static void _select(int id, void *data, Evas_Object *obj) break; case INPUT_HANDLER_TYPE_POPUP_RESET: viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL); - viewmgr_hide_view(VIEW_ACTION_MENU); + elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG); _delete_popup(priv, obj); break; case INPUT_HANDLER_TYPE_POPUP_DELETE: @@ -292,7 +292,7 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, case INPUT_HANDLER_TYPE_BTN: case INPUT_HANDLER_TYPE_MENU_RESET: case INPUT_HANDLER_TYPE_MENU_DELETE: - viewmgr_hide_view(VIEW_ACTION_MENU); + elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG); break; case INPUT_HANDLER_TYPE_POPUP_RESET: case INPUT_HANDLER_TYPE_POPUP_DISCARD: @@ -346,6 +346,12 @@ static bool _add_base(struct _priv *priv) return true; } +static void _hide_done(void *data, Evas_Object *obj, const char *emission, + const char *source) +{ + viewmgr_hide_view(VIEW_ACTION_MENU); +} + static Evas_Object *_create(Evas_Object *win, void *data) { struct _priv *priv; @@ -384,6 +390,8 @@ static Evas_Object *_create(Evas_Object *win, void *data) } viewmgr_set_view_data(VIEW_ACTION_MENU, priv); + elm_object_signal_callback_add(base, SIG_HIDE_DONE, SRC_EDJE, + _hide_done, NULL); return base; } @@ -404,9 +412,12 @@ static void _update_focus_sequence(struct _priv *priv) if (eo) { elm_object_focus_next_object_set(priv->btn, eo, ELM_FOCUS_DOWN); elm_object_focus_next_object_set(eo, eo, ELM_FOCUS_LEFT); - } else + elm_object_focus_set(eo, EINA_TRUE); + } else { elm_object_focus_next_object_set(priv->btn, priv->btn, ELM_FOCUS_DOWN); + elm_object_focus_set(priv->btn, EINA_TRUE); + } } static bool _add_menu_item(struct _priv *priv) @@ -470,9 +481,7 @@ static void _show(void *data) } evas_object_show(priv->base); - - if (priv->btn) - elm_object_focus_set(priv->btn, EINA_TRUE); + elm_object_signal_emit(priv->base, SIG_SHOW, SRC_PROG); } static void _hide(void *data) |