From bd1ea1c81f2d30319ae3c485b0f673a8100bb7c4 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Wed, 19 Aug 2015 17:03:13 +0900 Subject: [PATCH] action_menu: draw menu area using table object Change-Id: I16e20d5b73824ebc59d81295853c5330708e8171 Signed-off-by: Jehun Lim --- include/define.h | 4 +++- include/util/util.h | 1 + res/edc/widgets/button.edc | 14 +++++++------- src/util/util.c | 18 ++++++++++++++++++ src/view/action_menu.c | 47 +++++++++++++++++++++++++--------------------- 5 files changed, 55 insertions(+), 29 deletions(-) diff --git a/include/define.h b/include/define.h index c8861f3..c626565 100644 --- a/include/define.h +++ b/include/define.h @@ -74,7 +74,9 @@ #define SIG_ITEM_FOCUSED "item,focused" #define SIG_ITEM_SELECTED "item,selected" #define SIG_ITEM_UNSELECTED "item,unselected" -#define SIG_ITEM_DISABLED "item,disabled" +#define SIG_ELM_DISABLED "elm,state,disabled" +#define SIG_ELM_FOCUS "elm,action,focus" +#define SIG_ELM_UNFOCUS "elm,action,unfocus" #define SIG_ELM_UNFOCUSED "elm,state,unfocused" #define SIG_SOURCE_EDC "edc" #define SIG_SOURCE_ELM "elm" diff --git a/include/util/util.h b/include/util/util.h index b2e6175..0bca6a0 100644 --- a/include/util/util.h +++ b/include/util/util.h @@ -27,6 +27,7 @@ Evas_Object *util_add_gengrid(Evas_Object *base, int item_size_x, Evas_Object *util_add_genlist(Evas_Object *base); Evas_Object *util_add_image(Evas_Object *base, const char *file); Evas_Object *util_add_scroller(Evas_Object *base); +Evas_Object *util_add_table(Evas_Object *base, int padding_x, int padding_y); void util_time_string(char *str, int size, unsigned int ms, bool full); void util_up_string(char *str); diff --git a/res/edc/widgets/button.edc b/res/edc/widgets/button.edc index d2b0140..c6734a4 100644 --- a/res/edc/widgets/button.edc +++ b/res/edc/widgets/button.edc @@ -3252,8 +3252,8 @@ group { } program { name: "go_active"; - signal: "elm,action,focus"; - source: "elm"; + signal: SIG_ELM_FOCUS; + source: SIG_SOURCE_ELM; action: STATE_SET "focused" 0.0; target: "bg"; target: "menu_icon"; @@ -3262,8 +3262,8 @@ group { } program { name: "go_passive"; - signal: "elm,action,unfocus"; - source: "elm"; + signal: SIG_ELM_UNFOCUS; + source: SIG_SOURCE_ELM; action: STATE_SET "default" 0.0; target: "bg"; target: "menu_icon"; @@ -3280,9 +3280,9 @@ group { target: "elm.text"; } program { - name: SIG_ITEM_DISABLED; - signal: SIG_ITEM_DISABLED; - source: SIG_SOURCE_SRC; + name: SIG_ELM_DISABLED; + signal: SIG_ELM_DISABLED; + source: SIG_SOURCE_ELM; action: STATE_SET "disabled" 0.0; target: "bg"; target: "menu_icon"; diff --git a/src/util/util.c b/src/util/util.c index ec55187..5dc631b 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -147,6 +147,24 @@ Evas_Object *util_add_scroller(Evas_Object *base) return scr; } +Evas_Object *util_add_table(Evas_Object *base, int padding_x, int padding_y) +{ + Evas_Object *table; + + if (!base) + return NULL; + + table = elm_table_add(base); + if (!table) { + _ERR("failed to create table object"); + return NULL; + } + + elm_table_padding_set(table, padding_x, padding_y); + + return table; +} + void util_time_string(char *str, int size, unsigned int ms, bool full) { int sec; diff --git a/src/view/action_menu.c b/src/view/action_menu.c index 552ea19..f4b65b9 100644 --- a/src/view/action_menu.c +++ b/src/view/action_menu.c @@ -29,7 +29,11 @@ #define VIDEO_COPYRIGHT "Unknown" -#define MAX_NUM_MENU 4 +#define NUM_MENU_BTN 4 +#define MAX_BTN_COL 4 + +#define TABLE_PADDING_X 0 +#define TABLE_PADDING_Y 0 enum _object_type { ACTION_LIVETV_BTN = 0, @@ -49,7 +53,7 @@ struct _priv { Evas_Object *base; Evas_Object *tv_btn; - Evas_Object *menu_btn[MAX_NUM_MENU]; + Evas_Object *menu_btn[NUM_MENU_BTN]; Evas_Object *grid; Eina_List *favorite_list; @@ -391,33 +395,29 @@ static bool _draw_livetv_btn(struct _priv *priv) static bool _draw_menu_area(struct _priv *priv) { - Evas_Object *box, *btn; + Evas_Object *table, *btn; int i; + int col, row; - box = util_add_box(priv->base); - if (!box) { - _ERR("failed to create box object"); + table = util_add_table(priv->base, TABLE_PADDING_X, TABLE_PADDING_Y); + if (!table) { + _ERR("failed to add table"); return false; } - for (i = 0; i < MAX_NUM_MENU; i++) { - btn = elm_button_add(box); + for (i = 0; i < NUM_MENU_BTN; i++) { + btn = elm_button_add(priv->base); if (!btn) { _ERR("failed to create button object"); - evas_object_del(box); + evas_object_del(table); return false; } elm_object_style_set(btn, menu_info[i].style); elm_object_text_set(btn, menu_info[i].title); - if (menu_info[i].disabled) { - elm_object_signal_emit(btn, SIG_ITEM_DISABLED, - SIG_SOURCE_SRC); - elm_object_focus_allow_set(btn, EINA_FALSE); - } - - elm_box_pack_end(box, btn); + if (menu_info[i].disabled) + elm_object_disabled_set(btn, EINA_TRUE); evas_object_show(btn); @@ -426,18 +426,23 @@ static bool _draw_menu_area(struct _priv *priv) elm_object_focus_next_object_set(btn, priv->grid, ELM_FOCUS_DOWN); + col = i % MAX_BTN_COL; + row = i / MAX_BTN_COL; + + elm_table_pack(table, btn, col, row, 1, 1); + priv->menu_btn[i] = btn; } - evas_object_show(box); + evas_object_show(table); 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[MAX_NUM_MENU - 1], - priv->menu_btn[MAX_NUM_MENU - 1], + elm_object_focus_next_object_set(priv->menu_btn[NUM_MENU_BTN - 1], + priv->menu_btn[NUM_MENU_BTN - 1], ELM_FOCUS_RIGHT); - elm_object_part_content_set(priv->base, PART_ACTION_MENU_AREA, box); + elm_object_part_content_set(priv->base, PART_ACTION_MENU_AREA, table); return true; } @@ -655,7 +660,7 @@ static void _destroy(void *view_data) inputmgr_remove_callback(priv->tv_btn, &_handler); inputmgr_remove_callback(priv->grid, &_handler); - for (i = 0; i < MAX_NUM_MENU; i++) + for (i = 0; i < NUM_MENU_BTN; i++) inputmgr_remove_callback(priv->menu_btn[i], &_handler); if (priv->favorite_list) -- 2.7.4