Add channel info on action menu 93/46393/1
authorjinwoo.shin <jw0227.shin@samsung.com>
Thu, 20 Aug 2015 04:40:04 +0000 (13:40 +0900)
committerjinwoo.shin <jw0227.shin@samsung.com>
Thu, 20 Aug 2015 04:40:04 +0000 (13:40 +0900)
Change-Id: I9fe3f6095dc98bfda656e43efbac9e9371c72d0c
Signed-off-by: jinwoo.shin <jw0227.shin@samsung.com>
src/util.c
src/view_action_menu.c
src/view_channelinfo.c

index fbf1a59..b47e4e3 100644 (file)
@@ -245,6 +245,7 @@ static void _load_program_info(Evas_Object *obj,
 
 static void _tv_program_cb(Eina_List *prog_list, void *data)
 {
+       int op;
        Evas_Object *obj;
        struct tv_program_info *prog = NULL;
 
@@ -261,15 +262,18 @@ static void _tv_program_cb(Eina_List *prog_list, void *data)
        else
                _ERR("failed to get tv_program_info");
 
-       viewmgr_update_view(VIEW_CHANNELINFO,
-                       UPDATE_TYPE_TIMER, START_HIDE_TIMER);
+       if (viewmgr_get_view_state(VIEW_CHANNELINFO) == VIEW_STATE_VISIBLE) {
+               op = START_HIDE_TIMER;
+               viewmgr_update_view(VIEW_CHANNELINFO,
+                               UPDATE_TYPE_TIMER, &op);
+       }
 }
 
 void util_draw_channel_info(Evas_Object *obj,
                const struct tv_channel_info *channel_info)
 {
        struct tv_program_request *prog_req;
-       int r;
+       int r, op;
        int current_service;
 
        if (!obj || !channel_info) {
@@ -282,8 +286,11 @@ void util_draw_channel_info(Evas_Object *obj,
        if (r < 0)
                current_service = -1;
 
-       viewmgr_update_view(VIEW_CHANNELINFO,
-                       UPDATE_TYPE_TIMER, (void *)STOP_HIDE_TIMER);
+       if (viewmgr_get_view_state(VIEW_CHANNELINFO) == VIEW_STATE_VISIBLE) {
+               op = STOP_HIDE_TIMER;
+               viewmgr_update_view(VIEW_CHANNELINFO,
+                               UPDATE_TYPE_TIMER, &op);
+       }
 
        _load_channel_text(obj, channel_info);
        _set_icon_box(obj, channel_info);
@@ -303,7 +310,10 @@ void util_draw_channel_info(Evas_Object *obj,
                r = tv_epg_get_program(channel_info->service_id, prog_req);
        }
 
-       if (r < 0)
+       if (r < 0 && viewmgr_get_view_state(VIEW_CHANNELINFO) ==
+                       VIEW_STATE_VISIBLE) {
+               op = START_HIDE_TIMER;
                viewmgr_update_view(VIEW_CHANNELINFO,
-                               UPDATE_TYPE_TIMER, START_HIDE_TIMER);
+                               UPDATE_TYPE_TIMER, &op);
+       }
 }
index 1f43c6d..a332c91 100644 (file)
@@ -42,6 +42,7 @@ enum _button_id {
 
 struct _priv {
        Evas_Object *base;
+       Evas_Object *channel_info;
        Evas_Object *menu_btn[BUTTON_MAX];
 };
 
@@ -151,6 +152,38 @@ static input_handler button_handler = {
        .mouse_move = _button_mouse_move_cb
 };
 
+static void _update_channel_info(struct _priv *priv)
+{
+       const struct tv_channel_info *channel_info;
+
+       channel_info = tv_channel_get_info();
+       if (!channel_info) {
+               _ERR("failed to get channel info");
+               return;
+       }
+
+       util_draw_channel_info(priv->channel_info, channel_info);
+
+       tv_channel_del_info(channel_info);
+}
+
+static bool _draw_channel_info(struct _priv *priv)
+{
+       Evas_Object *layout;
+
+       layout = util_add_layout(priv->base, GRP_CHANNELINFO);
+       if (!layout) {
+               _ERR("Add layout failed.");
+               return false;
+       }
+
+       elm_object_part_content_set(priv->base, PART_CHANNELINFO, layout);
+
+       priv->channel_info = layout;
+
+       return true;
+}
+
 static bool _draw_top_area(struct _priv *priv)
 {
        Evas_Object *btn;
@@ -257,6 +290,11 @@ static bool _draw_bottom_area(struct _priv *priv)
 
 static void _draw_view_content(struct _priv *priv)
 {
+       if (!_draw_channel_info(priv)) {
+               _ERR("Draw channel info failed.");
+               return;
+       }
+
        if (!_draw_top_area(priv)) {
                _ERR("Draw top area failed.");
                return;
@@ -324,6 +362,8 @@ static void _show(void *data)
        }
        priv = data;
 
+       _update_channel_info(priv);
+
        evas_object_show(priv->base);
 
        elm_object_focus_set(priv->menu_btn[0], EINA_TRUE);
index e720d43..6a44cbf 100644 (file)
@@ -64,6 +64,7 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
        struct _priv *priv;
+       int op;
 
        if (!data) {
                _ERR("failed to get data");
@@ -80,16 +81,20 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                        !strcmp(ev->keyname, KEY_EXIT)) {
                viewmgr_hide_view(VIEW_CHANNELINFO);
        } else {
+               op = START_HIDE_TIMER;
                viewmgr_update_view(VIEW_CHANNELINFO,
-                               UPDATE_TYPE_TIMER, START_HIDE_TIMER);
+                               UPDATE_TYPE_TIMER, &op);
        }
 }
 
 static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Mouse_Move *ev)
 {
+       int op;
+
+       op = START_HIDE_TIMER;
        viewmgr_update_view(VIEW_CHANNELINFO,
-                       UPDATE_TYPE_TIMER, START_HIDE_TIMER);
+                       UPDATE_TYPE_TIMER, &op);
 }
 
 static input_handler key_handler = {
@@ -240,7 +245,7 @@ static void _update(void *view_data, int type, void *data)
        priv = view_data;
 
        if (type == UPDATE_TYPE_TIMER) {
-               switch ((int) data) {
+               switch (*(int *) data) {
                case START_HIDE_TIMER:
                        _start_hide_timer(priv);
                        break;