action_menu: draw menu area using table object 44/46344/2
authorJehun Lim <jehun.lim@samsung.com>
Wed, 19 Aug 2015 08:03:13 +0000 (17:03 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Thu, 20 Aug 2015 01:44:20 +0000 (10:44 +0900)
Change-Id: I16e20d5b73824ebc59d81295853c5330708e8171
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
include/define.h
include/util/util.h
res/edc/widgets/button.edc
src/util/util.c
src/view/action_menu.c

index c8861f3..c626565 100644 (file)
@@ -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"
index b2e6175..0bca6a0 100644 (file)
@@ -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);
index d2b0140..c6734a4 100644 (file)
@@ -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";
index ec55187..5dc631b 100644 (file)
@@ -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;
index 552ea19..f4b65b9 100644 (file)
 
 #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)