static void _tv_program_cb(Eina_List *prog_list, void *data)
{
+ int op;
Evas_Object *obj;
struct tv_program_info *prog = NULL;
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) {
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);
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);
+ }
}
struct _priv {
Evas_Object *base;
+ Evas_Object *channel_info;
Evas_Object *menu_btn[BUTTON_MAX];
};
.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;
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;
}
priv = data;
+ _update_channel_info(priv);
+
evas_object_show(priv->base);
elm_object_focus_set(priv->menu_btn[0], EINA_TRUE);
Evas_Event_Key_Down *ev)
{
struct _priv *priv;
+ int op;
if (!data) {
_ERR("failed to get data");
!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 = {
priv = view_data;
if (type == UPDATE_TYPE_TIMER) {
- switch ((int) data) {
+ switch (*(int *) data) {
case START_HIDE_TIMER:
_start_hide_timer(priv);
break;