diff options
author | Hyojung Jo <hj903.jo@samsung.com> | 2015-08-13 21:05:09 +0900 |
---|---|---|
committer | Hyojung Jo <hj903.jo@samsung.com> | 2015-08-13 21:05:09 +0900 |
commit | fd855efbef81cdce915bfdb792d641a84d383efb (patch) | |
tree | c4451b96463722dc0af2b21c82aa53bf93f4c4cc | |
parent | ae321772f121eb81dbb20fde3cde2d304f0c60b7 (diff) | |
download | air_favorite-fd855efbef81cdce915bfdb792d641a84d383efb.tar.gz air_favorite-fd855efbef81cdce915bfdb792d641a84d383efb.tar.bz2 air_favorite-fd855efbef81cdce915bfdb792d641a84d383efb.zip |
View: Enabled the action menu buttons focused
Change-Id: I340d4572f82fc084b54054fffa72552e73a6b452
Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
-rw-r--r-- | include/define.h | 22 | ||||
-rw-r--r-- | res/images/btn_menu_favorite_dis.png | bin | 0 -> 1780 bytes | |||
-rw-r--r-- | res/images/btn_menu_favorite_foc.png | bin | 0 -> 1793 bytes | |||
-rw-r--r-- | res/images/btn_menu_favorite_sel.png | bin | 0 -> 1893 bytes | |||
-rw-r--r-- | res/images/btn_menu_lock_foc.png | bin | 0 -> 1379 bytes | |||
-rw-r--r-- | res/images/btn_menu_lock_nor.png | bin | 0 -> 1430 bytes | |||
-rw-r--r-- | res/images/btn_menu_lock_sel.png | bin | 0 -> 1433 bytes | |||
-rw-r--r-- | res/images/btn_menu_share_foc.png | bin | 0 -> 1325 bytes | |||
-rw-r--r-- | res/images/btn_menu_share_nor.png | bin | 0 -> 1332 bytes | |||
-rw-r--r-- | res/images/btn_menu_share_sel.png | bin | 0 -> 1370 bytes | |||
-rw-r--r-- | res/widgets/button.edc | 349 | ||||
-rw-r--r-- | src/view/view_action_menu.c | 66 |
12 files changed, 411 insertions, 26 deletions
diff --git a/include/define.h b/include/define.h index 26e4c0b..f328d2b 100644 --- a/include/define.h +++ b/include/define.h @@ -47,7 +47,9 @@ /* Style */ #define STYLE_MENU_BTN "style.menu.button" #define STYLE_LIVETV_BTN "style.livetv.button" -#define STYLE_ACTION_MENU_BTN "style.action.menu.button" +#define STYLE_ACTION_MENU_FAV_BTN "style.action.menu.favorite.button" +#define STYLE_ACTION_MENU_LOCK_BTN "style.action.menu.lock.button" +#define STYLE_ACTION_MENU_SHARE_BTN "style.action.menu.share.button" /* Signal */ #define SIG_FOCUSED "focused" @@ -57,10 +59,13 @@ #define SIG_ITEM_SELECTED "item.selected" #define SIG_VISIBLE "visible" #define SIG_INVISIBLE "invisible" +#define SIG_DISABLE "disable" /* Source */ #define SRC_EDC "edc" #define SRC_MENU_BTN "menubtn" +#define SRC_LIVETV_BTN "source.livetv.btn" +#define SRC_ACTION_BTN "source.action.btn" /* Transition */ #define TRANSITION_FOCUS DECELERATE 0.20 @@ -114,9 +119,18 @@ #define DEFAULT_TV_PNG IMGDIR"/ic_default_tv.png" #define BROWSER_ICON_PNG IMGDIR"/ic_apps_web.png" #define GULLIVER_PNG IMGDIR"/gulliver.png" -#define ACTION_FAV_NOR_PNG IMGDIR"/btn_menu_favorite_nor.png" -#define ACTION_LOCK_DIS_PNG IMGDIR"/btn_menu_lock_dis.png" -#define ACTION_SHARE_DIS_PNG IMGDIR"/btn_menu_share_dis.png" +#define ACTION_FAV_NOR_PNG "btn_menu_favorite_nor.png" +#define ACTION_FAV_FOC_PNG "btn_menu_favorite_foc.png" +#define ACTION_FAV_SEL_PNG "btn_menu_favorite_sel.png" +#define ACTION_FAV_DIS_PNG "btn_menu_favorite_dis.png" +#define ACTION_LOCK_NOR_PNG "btn_menu_lock_nor.png" +#define ACTION_LOCK_FOC_PNG "btn_menu_lock_foc.png" +#define ACTION_LOCK_SEL_PNG "btn_menu_lock_sel.png" +#define ACTION_LOCK_DIS_PNG "btn_menu_lock_dis.png" +#define ACTION_SHARE_NOR_PNG "btn_menu_share_nor.png" +#define ACTION_SHARE_FOC_PNG "btn_menu_share_foc.png" +#define ACTION_SHARE_SEL_PNG "btn_menu_share_sel.png" +#define ACTION_SHARE_DIS_PNG "btn_menu_share_dis.png" /* Path */ #define PATH_PLAY_ICON_PNG IMGDIR"/ic_thumbnail_play.png" diff --git a/res/images/btn_menu_favorite_dis.png b/res/images/btn_menu_favorite_dis.png Binary files differnew file mode 100644 index 0000000..bd9bdd8 --- /dev/null +++ b/res/images/btn_menu_favorite_dis.png diff --git a/res/images/btn_menu_favorite_foc.png b/res/images/btn_menu_favorite_foc.png Binary files differnew file mode 100644 index 0000000..e4915d5 --- /dev/null +++ b/res/images/btn_menu_favorite_foc.png diff --git a/res/images/btn_menu_favorite_sel.png b/res/images/btn_menu_favorite_sel.png Binary files differnew file mode 100644 index 0000000..bd2eeee --- /dev/null +++ b/res/images/btn_menu_favorite_sel.png diff --git a/res/images/btn_menu_lock_foc.png b/res/images/btn_menu_lock_foc.png Binary files differnew file mode 100644 index 0000000..5671cfc --- /dev/null +++ b/res/images/btn_menu_lock_foc.png diff --git a/res/images/btn_menu_lock_nor.png b/res/images/btn_menu_lock_nor.png Binary files differnew file mode 100644 index 0000000..5f38494 --- /dev/null +++ b/res/images/btn_menu_lock_nor.png diff --git a/res/images/btn_menu_lock_sel.png b/res/images/btn_menu_lock_sel.png Binary files differnew file mode 100644 index 0000000..1baa790 --- /dev/null +++ b/res/images/btn_menu_lock_sel.png diff --git a/res/images/btn_menu_share_foc.png b/res/images/btn_menu_share_foc.png Binary files differnew file mode 100644 index 0000000..0bfcd19 --- /dev/null +++ b/res/images/btn_menu_share_foc.png diff --git a/res/images/btn_menu_share_nor.png b/res/images/btn_menu_share_nor.png Binary files differnew file mode 100644 index 0000000..bdea318 --- /dev/null +++ b/res/images/btn_menu_share_nor.png diff --git a/res/images/btn_menu_share_sel.png b/res/images/btn_menu_share_sel.png Binary files differnew file mode 100644 index 0000000..05e8f16 --- /dev/null +++ b/res/images/btn_menu_share_sel.png diff --git a/res/widgets/button.edc b/res/widgets/button.edc index 61e552b..c746e5a 100644 --- a/res/widgets/button.edc +++ b/res/widgets/button.edc @@ -16,6 +16,7 @@ #define STATE_NORMAL 0 #define STATE_SELECTED 1 +#define STATE_DISABLE 2 group { name, "elm/button/base/style.menu.button"; @@ -284,6 +285,15 @@ group { state, "default" 0.0; min, 0 64; } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + color, 0 119 246 255; + } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + } } part { @@ -341,6 +351,16 @@ group { align, 0.5 0.5; } } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + color, 255 255 255 255; + } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + color, 87 87 87 127; + } } part { @@ -359,6 +379,11 @@ group { align, 0.5 0.0; fixed, 0 1; } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + color, 194 194 194 127; + } } part { @@ -380,6 +405,11 @@ group { align, 0.0 0.5; fixed, 1 0; } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + color, 194 194 194 127; + } } part { @@ -398,6 +428,11 @@ group { align, 0.5 1.0; fixed, 0 1; } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + color, 194 194 194 127; + } } part { @@ -419,6 +454,46 @@ group { align, 1.0 0.5; fixed, 1 0; } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + color, 194 194 194 127; + } + } + } + + programs { + program { + name, SIG_FOCUSED; + signal, "elm,action,focus"; + source, "elm"; + action, STATE_SET "focused" 0.0; + target, "part.bg"; + target, "elm.text"; + transition, TRANSITION_FOCUS; + } + + program { + name, SIG_UNFOCUSED; + signal, "elm,action,unfocus"; + source, "elm"; + action, STATE_SET "default" 0.0; + target, "part.bg"; + target, "elm.text"; + transition, TRANSITION_FOCUS; + } + + program { + name, SIG_DISABLE; + signal, SIG_DISABLE; + source, SRC_LIVETV_BTN; + script { + set_state(PART:"elm.text", "disable", 0.0); + set_state(PART:"part.inside.line.up", "disable", 0.0); + set_state(PART:"part.inside.line.down", "disable", 0.0); + set_state(PART:"part.inside.line.left", "disable", 0.0); + set_state(PART:"part.inside.line.right", "disable", 0.0); + } } } } @@ -426,6 +501,10 @@ group { group { name, "elm/button/base/style.action.menu.button"; data.item, "focus_highlight" "on"; + script { + public cur_state; + } + parts { part { name, "part.bg"; @@ -435,6 +514,19 @@ group { state, "default" 0.0; min, 125 124; } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + color, 0 119 246 255; + } + description { + state, "selected" 0.0; + inherit, "default" 0.0; + } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + } } part { @@ -508,8 +600,8 @@ group { } part { - name, "elm.swallow.content"; - type, SWALLOW; + name, "part.icon"; + type, IMAGE; scale, 1; description { state, "default" 0.0; @@ -525,6 +617,18 @@ group { fixed, 1 1; min, 60 60; } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + } } part { @@ -565,6 +669,247 @@ group { align, 0.5 0.5; } } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + color, 255 255 255 255; + } + description { + state, "selected" 0.0; + inherit, "default" 0.0; + color, 64 136 211 255; + } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + color, 104 104 104 127; + } + } + } + + programs{ + program { + name, SIG_FOCUSED; + signal, "elm,action,focus"; + source, "elm"; + script { + new state; + state = get_int(cur_state); + if (state != STATE_DISABLE) { + set_int(cur_state, STATE_NORMAL); + run_program(PROGRAM:"focused,anim"); + } + } + } + + program { + name, SIG_UNFOCUSED; + signal, "elm,action,unfocus"; + source, "elm"; + script { + new state; + state = get_int(cur_state); + if (state == STATE_SELECTED) { + set_state(PART:"part.bg", "selected", 0.0); + set_state(PART:"elm.text", "selected", 0.0); + set_state(PART:"part.icon", "selected", 0.0); + } else if (state != STATE_DISABLE) { + run_program(PROGRAM:"unfocused,anim"); + } + } + } + + program { + name, "focused,anim"; + action, STATE_SET "focused" 0.0; + target, "part.bg"; + target, "elm.text"; + target, "part.icon"; + transition, TRANSITION_FOCUS; + } + + program { + name, "unfocused,anim"; + action, STATE_SET "default" 0.0; + target, "part.bg"; + target, "elm.text"; + target, "part.icon"; + transition, TRANSITION_FOCUS; + } + + program { + name, SIG_SELECTED; + signal, SIG_SELECTED; + source, SRC_ACTION_BTN; + script { + new state; + state = get_int(cur_state); + if (state != STATE_DISABLE) { + set_int(cur_state, STATE_SELECTED); + set_state(PART:"part.bg", "selected", 0.0); + set_state(PART:"elm.text", "selected", 0.0); + set_state(PART:"part.icon", "selected", 0.0); + } + } + } + + program { + name, SIG_DISABLE; + signal, SIG_DISABLE; + source, SRC_ACTION_BTN; + script { + set_int(cur_state, STATE_DISABLE); + set_state(PART:"part.bg", "disable", 0.0); + set_state(PART:"elm.text", "disable", 0.0); + set_state(PART:"part.icon", "disable", 0.0); + } + } + } +} + +group { + name, "elm/button/base/style.action.menu.favorite.button"; + inherit, "elm/button/base/style.action.menu.button"; + data.item, "focus_highlight" "on"; + images { + image, ACTION_FAV_NOR_PNG COMP; + image, ACTION_FAV_FOC_PNG COMP; + image, ACTION_FAV_SEL_PNG COMP; + image, ACTION_FAV_DIS_PNG COMP; + } + parts { + part { + name, "part.icon"; + type, IMAGE; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "part.icon.bg"; + relative, 0.5 0.5; + } + rel2 { + to, "part.icon.bg"; + relative, 0.5 0.5; + } + align, 0.5 0.5; + fixed, 1 1; + min, 60 60; + image.normal, ACTION_FAV_NOR_PNG; + } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_FAV_FOC_PNG; + } + description { + state, "selected" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_FAV_SEL_PNG; + } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_FAV_DIS_PNG; + } + } + } +} + +group { + name, "elm/button/base/style.action.menu.lock.button"; + inherit, "elm/button/base/style.action.menu.button"; + data.item, "focus_highlight" "on"; + images { + image, ACTION_LOCK_NOR_PNG COMP; + image, ACTION_LOCK_FOC_PNG COMP; + image, ACTION_LOCK_SEL_PNG COMP; + image, ACTION_LOCK_DIS_PNG COMP; + } + parts { + part { + name, "part.icon"; + type, IMAGE; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "part.icon.bg"; + relative, 0.5 0.5; + } + rel2 { + to, "part.icon.bg"; + relative, 0.5 0.5; + } + align, 0.5 0.5; + fixed, 1 1; + min, 60 60; + image.normal, ACTION_LOCK_NOR_PNG; + } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_LOCK_FOC_PNG; + } + description { + state, "selected" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_LOCK_SEL_PNG; + } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_LOCK_DIS_PNG; + } + } + } +} + +group { + name, "elm/button/base/style.action.menu.share.button"; + inherit, "elm/button/base/style.action.menu.button"; + data.item, "focus_highlight" "on"; + images { + image, ACTION_SHARE_NOR_PNG COMP; + image, ACTION_SHARE_FOC_PNG COMP; + image, ACTION_SHARE_SEL_PNG COMP; + image, ACTION_SHARE_DIS_PNG COMP; + } + parts { + part { + name, "part.icon"; + type, IMAGE; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "part.icon.bg"; + relative, 0.5 0.5; + } + rel2 { + to, "part.icon.bg"; + relative, 0.5 0.5; + } + align, 0.5 0.5; + fixed, 1 1; + min, 60 60; + image.normal, ACTION_SHARE_NOR_PNG; + } + description { + state, "focused" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_SHARE_FOC_PNG; + } + description { + state, "selected" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_SHARE_SEL_PNG; + } + description { + state, "disable" 0.0; + inherit, "default" 0.0; + image.normal, ACTION_SHARE_DIS_PNG; + } } } } diff --git a/src/view/view_action_menu.c b/src/view/view_action_menu.c index f260b05..4176a0c 100644 --- a/src/view/view_action_menu.c +++ b/src/view/view_action_menu.c @@ -15,6 +15,7 @@ #include <Elementary.h> #include <viewmgr.h> +#include <inputmgr.h> #include <app_debug.h> #include "define.h" @@ -23,7 +24,7 @@ struct _priv { Evas_Object *win; Evas_Object *base; - Evas_Object *box; + Evas_Object *live_btn; Evas_Object *menu_btn[COUNT_ACTION]; }; @@ -34,14 +35,35 @@ const char *str_action[] = { NULL }; -/* 'Lock' and 'Share' is not supported now, so the disable image is used. */ -const char *str_action_icon_png[] = { - ACTION_FAV_NOR_PNG, - ACTION_LOCK_DIS_PNG, - ACTION_SHARE_DIS_PNG, +const char *style_action[] = { + STYLE_ACTION_MENU_FAV_BTN, + STYLE_ACTION_MENU_LOCK_BTN, + STYLE_ACTION_MENU_SHARE_BTN, NULL }; +static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Mouse_Move *ev) +{ + if (!obj) { + _ERR("Invalid argument."); + return; + } + + if (!elm_object_focus_get(obj)) + elm_object_focus_set(obj, EINA_TRUE); +} + +static input_handler _livetv_input_handler = { + .mouse_move = _mouse_move_cb + /* It will be implemented later. */ +}; + +static input_handler _action_input_handler = { + .mouse_move = _mouse_move_cb + /* It will be implemented later. */ +}; + static bool _draw_top_area(struct _priv *priv) { Evas_Object *btn; @@ -58,12 +80,16 @@ static bool _draw_top_area(struct _priv *priv) return false; } + inputmgr_add_callback(btn, 0, &_livetv_input_handler, priv); + + priv->live_btn = btn; + return true; } static bool _draw_menu_area(struct _priv *priv) { - Evas_Object *box, *btn, *img; + Evas_Object *box, *btn; int i; if (!priv || !priv->base) { @@ -79,34 +105,32 @@ static bool _draw_menu_area(struct _priv *priv) for (i = 0; i < COUNT_ACTION; i++) { btn = utils_add_button(priv->base, NULL, str_action[i], - STYLE_ACTION_MENU_BTN); + style_action[i]); if (!btn) { _ERR("Add button failed."); evas_object_del(box); return false; } - img = elm_image_add(btn); - if (!img) { - _ERR("elm_image_add failed."); - evas_object_del(box); - return false; - } - - elm_image_file_set(img, str_action_icon_png[i], NULL); - evas_object_show(img); + inputmgr_add_callback(btn, i, &_action_input_handler, priv); - elm_object_part_content_set(btn, NULL, img); + /* 'Lock' and 'Share' is not supported, so emit disable. */ + if (i != 0) + elm_object_signal_emit(btn, + SIG_DISABLE, SRC_ACTION_BTN); elm_box_pack_end(box, btn); priv->menu_btn[i] = btn; } + /* 'Favorite' can only be focused now. */ + elm_object_focus_next_object_set(priv->menu_btn[0], + priv->menu_btn[0], ELM_FOCUS_LEFT); elm_object_focus_next_object_set(priv->menu_btn[0], - priv->menu_btn[COUNT_ACTION - 1], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(priv->menu_btn[COUNT_ACTION - 1], priv->menu_btn[0], ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(priv->live_btn, priv->menu_btn[0], + ELM_FOCUS_DOWN); return true; } @@ -194,6 +218,8 @@ static void _show(void *data) if (priv->base) evas_object_show(priv->base); + + elm_object_focus_set(priv->live_btn, EINA_TRUE); } static void _hide(void *data) |