summaryrefslogtreecommitdiff
path: root/src/view/view_action_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/view_action_menu.c')
-rw-r--r--src/view/view_action_menu.c70
1 files changed, 51 insertions, 19 deletions
diff --git a/src/view/view_action_menu.c b/src/view/view_action_menu.c
index 05ab27b..988442b 100644
--- a/src/view/view_action_menu.c
+++ b/src/view/view_action_menu.c
@@ -21,6 +21,13 @@
#include "define.h"
#include "utils.h"
+enum button_type {
+ BTN_LIVETV = 0,
+ BTN_FAVORITE,
+ BTN_LOCK,
+ BTN_SHARE,
+};
+
struct _priv {
Evas_Object *win;
Evas_Object *base;
@@ -29,6 +36,7 @@ struct _priv {
};
struct _action_info {
+ int id;
const char *title;
const char *style;
Eina_Bool disable;
@@ -36,16 +44,19 @@ struct _action_info {
static struct _action_info action_info[] = {
{
+ .id = BTN_FAVORITE,
.title = STR_FAVORITE,
.style = STYLE_ACTION_MENU_FAV_BTN,
.disable = EINA_FALSE
},
{
+ .id = BTN_LOCK,
.title = STR_LOCK,
.style = STYLE_ACTION_MENU_LOCK_BTN,
.disable = EINA_TRUE
},
{
+ .id = BTN_SHARE,
.title = STR_SHARE,
.style = STYLE_ACTION_MENU_SHARE_BTN,
.disable = EINA_TRUE
@@ -64,20 +75,42 @@ static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
elm_object_focus_set(obj, EINA_TRUE);
}
-static void _livetv_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
+static void _favorite_selected(void *data, Evas_Object *obj)
{
- if (!ev) {
- _ERR("Invalid argument.");
- return;
- }
+ /* It will be implemented later */
+}
- if (!strcmp(ev->keyname, KEY_BACK)
- || !strcmp(ev->keyname, KEY_BACK_REMOTE))
- viewmgr_hide_view(VIEW_ID_ACTION_MENU);
+static void _livetv_selected(void *data, Evas_Object *obj)
+{
+ /* It will be implemented later */
}
-static void _action_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
+static void _clicked_cb(int id, void *data, Evas_Object *obj)
+{
+
+ switch (id) {
+ case BTN_LIVETV:
+ _livetv_selected(data, obj);
+ break;
+
+ case BTN_FAVORITE:
+ _favorite_selected(data, obj);
+ break;
+
+ case BTN_LOCK:
+ /* It is not supported yet. */
+ break;
+
+ case BTN_SHARE:
+ /* It is not supported yet. */
+ break;
+
+ default:
+ _ERR("Unhandled action type.");
+ }
+}
+
+static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev)
{
if (!ev) {
@@ -90,14 +123,10 @@ static void _action_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
viewmgr_hide_view(VIEW_ID_ACTION_MENU);
}
-static input_handler _livetv_input_handler = {
- .mouse_move = _mouse_move_cb,
- .key_down = _livetv_key_down_cb
-};
-
-static input_handler _action_input_handler = {
+static input_handler _btn_input_handler = {
.mouse_move = _mouse_move_cb,
- .key_down = _action_key_down_cb
+ .clicked = _clicked_cb,
+ .key_down = _key_down_cb
};
static bool _draw_livetv_area(struct _priv *priv)
@@ -116,7 +145,7 @@ static bool _draw_livetv_area(struct _priv *priv)
return false;
}
- inputmgr_add_callback(btn, 0, &_livetv_input_handler, priv);
+ inputmgr_add_callback(btn, BTN_LIVETV, &_btn_input_handler, priv);
elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_UP);
elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_LEFT);
@@ -153,7 +182,8 @@ static bool _draw_menu_area(struct _priv *priv)
return false;
}
- inputmgr_add_callback(btn, i, &_action_input_handler, priv);
+ inputmgr_add_callback(btn, action_info[i].id,
+ &_btn_input_handler, priv);
if (action_info[i].disable)
elm_object_disabled_set(btn, EINA_TRUE);
@@ -171,6 +201,8 @@ static bool _draw_menu_area(struct _priv *priv)
priv->menu_btn[0], ELM_FOCUS_LEFT);
elm_object_focus_next_object_set(priv->menu_btn[0],
priv->menu_btn[0], ELM_FOCUS_RIGHT);
+ elm_object_focus_next_object_set(priv->menu_btn[0],
+ priv->menu_btn[0], ELM_FOCUS_DOWN);
elm_object_focus_next_object_set(priv->live_btn, priv->menu_btn[0],
ELM_FOCUS_DOWN);