Merge "fix media query correctly" into tizen
authorMinkyu Kang <mk7.kang@samsung.com>
Mon, 24 Aug 2015 05:47:06 +0000 (22:47 -0700)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Mon, 24 Aug 2015 05:47:07 +0000 (22:47 -0700)
include/define.h
res/edc/widgets/button.edc
src/view/action_menu.c

index c626565..0d68bd9 100644 (file)
@@ -74,6 +74,7 @@
 #define SIG_ITEM_FOCUSED "item,focused"
 #define SIG_ITEM_SELECTED "item,selected"
 #define SIG_ITEM_UNSELECTED "item,unselected"
+#define SIG_ITEM_TOGGLED "item,toggled"
 #define SIG_ELM_DISABLED "elm,state,disabled"
 #define SIG_ELM_FOCUS "elm,action,focus"
 #define SIG_ELM_UNFOCUS "elm,action,unfocus"
index 3973cc9..a854c6b 100644 (file)
@@ -18,6 +18,7 @@
 #define STATE_FOCUSED 1
 #define STATE_SELECTED 2
 #define STATE_DISABLED 3
+#define STATE_TOGGLED 4
 
 #define STATE_SHOW 0
 #define STATE_HIDE 1
@@ -3417,6 +3418,14 @@ group {
                                color: COLOR_ITEM_FOCUS;
                        }
                        description {
+                               state: "default_toggle" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "focused_toggle" 0.0;
+                               inherit: "focused" 0.0;
+                       }
+                       description {
                                state: "selected" 0.0;
                                inherit: "default" 0.0;
                        }
@@ -3515,6 +3524,16 @@ group {
                                image.normal: IMAGE_ACTION_FAVORITE_FOC;
                        }
                        description {
+                               state: "default_toggle" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: IMAGE_ACTION_FAVORITE_NOR;
+                       }
+                       description {
+                               state: "focused_toggle" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: IMAGE_ACTION_FAVORITE_FOC;
+                       }
+                       description {
                                state: "selected" 0.0;
                                inherit: "default" 0.0;
                                image.normal: IMAGE_ACTION_FAVORITE_SEL;
@@ -3568,6 +3587,14 @@ group {
                                color: COLOR_TEXT_FOCUS;
                        }
                        description {
+                               state: "default_toggle" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "focused_toggle" 0.0;
+                               inherit: "focused" 0.0;
+                       }
+                       description {
                                state: "selected" 0.0;
                                inherit: "default" 0.0;
                                color: COLOR_ITEM_SELECTED;
@@ -3578,6 +3605,15 @@ group {
                                color: COLOR_TEXT_DISABLED;
                        }
                }
+               part {
+                       name: "event";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
        }
        programs {
                program {
@@ -3589,9 +3625,57 @@ group {
                        }
                }
                program {
+                       name: "button_clicked";
+                       signal: "mouse,clicked,1";
+                       source: "event";
+                       action: SIGNAL_EMIT "elm,action,click" "";
+               }
+               program {
+                       name: "anim,clicked,default";
+                       action: STATE_SET "focused_toggle" 0.0;
+                       target: "bg";
+                       target: "menu_icon";
+                       target: "elm.text";
+                       transition: TRANSITION_CLICK;
+               }
+               program {
+                       name: "anim,clicked,toggle";
+                       action: STATE_SET "focused" 0.0;
+                       target: "bg";
+                       target: "menu_icon";
+                       target: "elm.text";
+                       transition: TRANSITION_CLICK;
+               }
+               program {
                        name: "go_active";
                        signal: SIG_ELM_FOCUS;
                        source: SIG_SOURCE_ELM;
+                       script {
+                               new state;
+                               state = get_int(cur_state);
+
+                               if (state == STATE_NORMAL)
+                                       run_program(PROGRAM:"focus,default");
+                               else
+                                       run_program(PROGRAM:"focus,toggle");
+                       }
+               }
+               program {
+                       name: "go_passive";
+                       signal: SIG_ELM_UNFOCUS;
+                       source: SIG_SOURCE_ELM;
+                       script {
+                               new state;
+                               state = get_int(cur_state);
+
+                               if (state == STATE_NORMAL)
+                                       run_program(PROGRAM:"unfocus,default");
+                               else
+                                       run_program(PROGRAM:"unfocus,toggle");
+                       }
+               }
+               program {
+                       name: "focus,default";
                        action: STATE_SET "focused" 0.0;
                        target: "bg";
                        target: "menu_icon";
@@ -3599,9 +3683,15 @@ group {
                        transition: TRANSITION_FOCUS;
                }
                program {
-                       name: "go_passive";
-                       signal: SIG_ELM_UNFOCUS;
-                       source: SIG_SOURCE_ELM;
+                       name: "focus,toggle";
+                       action: STATE_SET "focused_toggle" 0.0;
+                       target: "bg";
+                       target: "menu_icon";
+                       target: "elm.text";
+                       transition: TRANSITION_FOCUS;
+               }
+               program {
+                       name: "unfocus,default";
                        action: STATE_SET "default" 0.0;
                        target: "bg";
                        target: "menu_icon";
@@ -3609,6 +3699,28 @@ group {
                        transition: TRANSITION_FOCUS;
                }
                program {
+                       name: "unfocus,toggle";
+                       action: STATE_SET "default_toggle" 0.0;
+                       target: "bg";
+                       target: "menu_icon";
+                       target: "elm.text";
+                       transition: TRANSITION_FOCUS;
+               }
+               program {
+                       name: SIG_ITEM_TOGGLED;
+                       signal: SIG_ITEM_TOGGLED;
+                       source: SIG_SOURCE_SRC;
+                       script {
+                               new state;
+                               state = get_int(cur_state);
+
+                               if (state == STATE_NORMAL) {
+                                       set_int(cur_state, STATE_TOGGLED);
+                                       set_state(PART:"menu_icon","default_toggle",0.0);
+                               }
+                       }
+               }
+               program {
                        name: SIG_ITEM_SELECTED;
                        signal: SIG_ITEM_SELECTED;
                        source: SIG_SOURCE_SRC;
@@ -3651,6 +3763,16 @@ group {
                                image.normal: IMAGE_ACTION_DELETE_FOC;
                        }
                        description {
+                               state: "default_toggle" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: IMAGE_ACTION_DELETE_NOR;
+                       }
+                       description {
+                               state: "focused_toggle" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: IMAGE_ACTION_DELETE_FOC;
+                       }
+                       description {
                                state: "selected" 0.0;
                                inherit: "default" 0.0;
                                image.normal: IMAGE_ACTION_DELETE_SEL;
index b2241fd..34b682d 100644 (file)
 #define TABLE_PADDING_Y 0
 
 enum _object_type {
+       ACTION_DISABLED = -1,
        ACTION_LIVETV_BTN = 0,
-       ACTION_MENU_BTN,
+       ACTION_FAVORITE_BTN,
+       ACTION_DELETE_BTN,
        ACTION_FAVORITE_GRID
 };
 
@@ -54,16 +56,19 @@ struct _priv {
 
        Evas_Object *tv_btn;
        Evas_Object *menu_btn[NUM_MENU_BTN];
+       Evas_Object *table;
 
        Evas_Object *grid;
        Elm_Object_Item *selected_it;
 
        Eina_List *favorite_list;
 
+       app_media_info *mi;
        int content_type;
 };
 
 struct _menu_info {
+       int id;
        const char *title;
        const char *style;
        Eina_Bool disabled;
@@ -79,21 +84,25 @@ struct _content_info {
 
 static struct _menu_info menu_info[] = {
        {
+               .id = ACTION_FAVORITE_BTN,
                .title = "Favorite",
                .style = STYLE_BTN_FAVORITE,
                .disabled = EINA_FALSE
        },
        {
+               .id = ACTION_DELETE_BTN,
                .title = "Delete",
                .style = STYLE_BTN_DELETE,
                .disabled = EINA_TRUE
        },
        {
+               .id = ACTION_DISABLED,
                .title = NULL,
                .style = STYLE_BTN_EMPTY,
                .disabled = EINA_TRUE
        },
        {
+               .id = ACTION_DISABLED,
                .title = NULL,
                .style = STYLE_BTN_EMPTY,
                .disabled = EINA_TRUE
@@ -121,6 +130,37 @@ struct _content_info content_info[] = {
        }
 };
 
+static bool _favorite_clicked(struct _priv *priv, Evas_Object *obj)
+{
+       int r;
+       bool favorite;
+
+       r = app_contents_favorite_check(CONTENTS_MEDIA,
+                               priv->mi->media_id, &favorite);
+       if (r != APP_CONTENTS_ERROR_NONE) {
+               _ERR("failed to check favorite");
+               return false;
+       }
+
+       r = app_contents_favorite_set(CONTENTS_MEDIA,
+                               priv->mi->media_id, !favorite);
+       if (r != APP_CONTENTS_ERROR_NONE) {
+               _ERR("failed to set favorite");
+               return false;
+       }
+
+       viewmgr_hide_view(VIEW_ACTION_MENU);
+
+       return true;
+}
+
+static bool _delete_clicked(struct _priv *priv, Evas_Object *obj)
+{
+       /* It will be implemented later */
+
+       return true;
+}
+
 static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                        Evas_Event_Key_Down *ev)
 {
@@ -142,7 +182,8 @@ static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
 
        switch (id) {
        case ACTION_LIVETV_BTN:
-       case ACTION_MENU_BTN:
+       case ACTION_FAVORITE_BTN:
+       case ACTION_DELETE_BTN:
                if (!elm_object_focus_get(obj))
                        elm_object_focus_set(obj, EINA_TRUE);
 
@@ -161,6 +202,27 @@ static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
        }
 }
 
+static void _clicked_cb(int id, void *data, Evas_Object *obj)
+{
+       struct _priv *priv;
+
+       if (!obj || !data)
+               return;
+
+       priv = data;
+
+       switch (id) {
+       case ACTION_FAVORITE_BTN:
+               _favorite_clicked(priv, obj);
+               break;
+       case ACTION_DELETE_BTN:
+               _delete_clicked(priv, obj);
+               break;
+       default:
+               break;
+       }
+}
+
 static void _grid_selected(void *data)
 {
        app_media *am;
@@ -224,6 +286,7 @@ static void _selected_cb(int id, void *data, Evas_Object *obj,
 static input_handler _handler = {
        .key_down = _key_down_cb,
        .mouse_move = _mouse_move_cb,
+       .clicked = _clicked_cb,
        .selected = _selected_cb
 };
 
@@ -460,9 +523,7 @@ static bool _draw_livetv_btn(struct _priv *priv)
 
 static bool _draw_menu_area(struct _priv *priv)
 {
-       Evas_Object *table, *btn;
-       int i;
-       int col, row;
+       Evas_Object *table;
 
        table = util_add_table(priv->base, TABLE_PADDING_X, TABLE_PADDING_Y);
        if (!table) {
@@ -470,45 +531,10 @@ static bool _draw_menu_area(struct _priv *priv)
                return false;
        }
 
-       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(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_disabled_set(btn, EINA_TRUE);
-
-               evas_object_show(btn);
-
-               inputmgr_add_callback(btn, ACTION_MENU_BTN, &_handler, 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(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[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, table);
 
+       priv->table = table;
+
        return true;
 }
 
@@ -538,6 +564,70 @@ static bool _draw_favorite_area(struct _priv *priv)
        return true;
 }
 
+static void _set_menu_state(Evas_Object *btn, int idx, const char *id)
+{
+       int r;
+       bool favorite;
+
+       if (menu_info[idx].disabled) {
+               elm_object_disabled_set(btn, EINA_TRUE);
+               return;
+       }
+
+       r = app_contents_favorite_check(CONTENTS_MEDIA, id, &favorite);
+       if (r != APP_CONTENTS_ERROR_NONE) {
+               _ERR("failed to check favorite");
+               return;
+       }
+
+       if (favorite)
+               elm_object_signal_emit(btn, SIG_ITEM_TOGGLED, SIG_SOURCE_SRC);
+}
+
+static void _update_menu_area(struct _priv *priv)
+{
+       Evas_Object *btn;
+       int i;
+       int col, row;
+
+       elm_table_clear(priv->table, EINA_TRUE);
+
+       for (i = 0; i < NUM_MENU_BTN; i++) {
+               btn = elm_button_add(priv->base);
+               if (!btn) {
+                       _ERR("failed to create button object");
+                       return;
+               }
+
+               elm_object_style_set(btn, menu_info[i].style);
+               elm_object_text_set(btn, menu_info[i].title);
+
+               _set_menu_state(btn, i, priv->mi->media_id);
+
+               evas_object_show(btn);
+
+               inputmgr_add_callback(btn, menu_info[i].id, &_handler, 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(priv->table, btn, col, row, 1, 1);
+
+               priv->menu_btn[i] = btn;
+       }
+
+       evas_object_show(priv->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[NUM_MENU_BTN - 1],
+                               priv->menu_btn[NUM_MENU_BTN - 1],
+                               ELM_FOCUS_RIGHT);
+}
+
 static void _update_favorite_area(struct _priv *priv)
 {
 
@@ -577,13 +667,13 @@ static bool _draw_items(struct _priv *priv)
                return false;
        }
 
-       if (!_draw_favorite_area(priv)) {
-               _ERR("failed to draw favorite area");
+       if (!_draw_menu_area(priv)) {
+               _ERR("failed to draw menu button");
                return false;
        }
 
-       if (!_draw_menu_area(priv)) {
-               _ERR("failed to draw menu button");
+       if (!_draw_favorite_area(priv)) {
+               _ERR("failed to draw favorite area");
                return false;
        }
 
@@ -593,7 +683,6 @@ static bool _draw_items(struct _priv *priv)
 static bool _update_items(struct _priv *priv, struct view_update_data *vdata)
 {
        app_media *am;
-       app_media_info *mi;
 
        am = eina_list_nth(vdata->list, vdata->index);
        if (!am) {
@@ -601,14 +690,15 @@ static bool _update_items(struct _priv *priv, struct view_update_data *vdata)
                return false;
        }
 
-       mi = app_media_get_info(am);
-       if (!mi) {
+       priv->mi = app_media_get_info(am);
+       if (!priv->mi) {
                _ERR("failed to get app media info");
                return false;
        }
 
-       priv->content_type = _get_content_type(mi);
+       priv->content_type = _get_content_type(priv->mi);
 
+       _update_menu_area(priv);
        _update_favorite_area(priv);
 
        return true;