DATA_ARTIST,
DATA_ALBUM_NAME,
DATA_DURATION,
+ DATA_SUBTITLE,
+ DATA_DESCRIPTION,
};
enum action_type {
/* Group */
#define GRP_VIEW_BASE "grp.view.base"
#define GRP_VIEW_ACTION_MENU "grp.view.action.menu"
+#define GRP_TV_BANNER "grp.tv.banner"
/* Part for edc file */
#define PART_TOP_TITLE "part.top.title"
#define PART_THUMB_DEFAULT_TV_ICON "part.thumb.default.tv.icon"
#define PART_LIVETV_BTN "part.livetv.button"
#define PART_ACTION_MENU "part.action.menu"
+#define PART_BANNER "part.banner"
+#define PART_TITLE "part.title"
+#define PART_SUBTITLE "part.subtitle"
+#define PART_DESCRIPT "part.description"
/* Style */
#define STYLE_MENU_BTN "style.menu.button"
/* Count */
#define COUNT_MENU 6
#define COUNT_ACTION 2
+#define COUNT_BANNER 1
/* Image */
#define PLAY_ICON_PNG "ic_thumbnail_play.png"
enum action_type type, void *data);
bool (*item_updated)(void *pre_data, void *new_data);
bool (*item_locked)(Elm_Object_Item *it, bool *locked);
+ bool (*load_item_banner)(Evas_Object *banner, void *data);
};
struct grid_data *get_tv_grid_data(void);
#define __AIR_FAVORITE_UTILS_H__
Evas_Object *utils_add_window(const char *name);
-Evas_Object *utils_add_layout(Evas_Object *parent, const char *group);
+Evas_Object *utils_add_layout(Evas_Object *parent, const char *group,
+ Eina_Bool resize);
Evas_Object *utils_add_gengrid(Evas_Object *parent,
int item_size_x, int item_size_y);
Evas_Object *utils_add_box(Evas_Object *parent, const char *part,
}
part {
- name, "part.info.banner";
+ name, PART_BANNER;
type, SWALLOW;
scale, 1;
description {
}
group {
- name, GRP_BANNER;
+ name, GRP_TV_BANNER;
parts {
part {
name, "bg";
}
part {
- name, "part.title";
+ name, PART_TITLE;
type, TEXT;
scale, 1;
description {
}
part {
- name, "part.subtitle";
+ name, PART_SUBTITLE;
type, TEXT;
scale, 1;
description {
}
part {
- name, "part.description";
+ name, PART_DESCRIPT;
type, TEXT;
scale, 1;
description {
#include <app_debug.h>
#include "define.h"
+#include "datamgr.h"
Evas_Object *utils_add_window(const char *name)
{
return win;
}
-Evas_Object *utils_add_layout(Evas_Object *parent, const char *group)
+Evas_Object *utils_add_layout(Evas_Object *parent, const char *group,
+ Eina_Bool resize)
{
Evas_Object *layout;
- if (!parent || !group) {
+ if (!parent) {
_ERR("Invalid argument.");
return NULL;
}
return NULL;
}
- elm_layout_file_set(layout, EDJEFILE, group);
+ if (group)
+ elm_layout_file_set(layout, EDJEFILE, group);
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
- elm_win_resize_object_add(parent, layout);
+
+ if (resize)
+ elm_win_resize_object_add(parent, layout);
return layout;
}
/* It will fixed after tv-service's implementation */
return NULL;
+ case DATA_SUBTITLE:
+ /* It will be implemented as GUI guide */
+ return NULL;
+
+ case DATA_DESCRIPTION:
+ /* It will be implemented as GUI guide */
+ return NULL;
+
default:
_ERR("Invalid data type.");
return NULL;
return true;
}
+static bool _load_item_banner(Evas_Object *banner, void *data)
+{
+ struct datamgr *dmgr;
+ char *title, *subtitle, *description;
+
+ if (!banner || !data) {
+ _ERR("Invaild argument.");
+ return false;
+ }
+
+ dmgr = get_channel_datamgr();
+ if (!dmgr || !dmgr->get_data)
+ return false;
+
+ elm_layout_file_set(banner, EDJEFILE, GRP_TV_BANNER);
+
+ title = dmgr->get_data(data, DATA_NAME);
+ if (title)
+ elm_object_part_text_set(banner, PART_TITLE, title);
+
+ subtitle = dmgr->get_data(data, DATA_SUBTITLE);
+ if (subtitle)
+ elm_object_part_text_set(banner, PART_SUBTITLE, subtitle);
+
+ description = dmgr->get_data(data, DATA_DESCRIPTION);
+ if (description)
+ elm_object_part_text_set(banner, PART_DESCRIPT, description);
+
+ return true;
+}
+
static struct grid_data _gdata = {
.id = GRID_TV,
.item_size_x = ITEM_TV_X,
.item_action = _item_action,
.item_updated = _item_updated,
.item_locked = _item_locked,
+ .load_item_banner = _load_item_banner,
};
struct grid_data *get_tv_grid_data(void)
Evas_Object *base;
Evas_Object *live_btn;
Evas_Object *menu_btn[COUNT_ACTION];
+ Evas_Object *banner;
struct grid_data *gdata;
};
return true;
}
+static bool _draw_banner_area(struct _priv *priv)
+{
+ Evas_Object *banner;
+ void *data;
+
+ data = elm_object_item_data_get(priv->gdata->focused_item);
+ if (!data)
+ return false;
+
+ banner = utils_add_layout(priv->base, NULL, EINA_FALSE);
+ if (!banner) {
+ _ERR("Add layout failed.");
+ return false;
+ }
+
+ if (!priv->gdata->load_item_banner ||
+ !priv->gdata->load_item_banner(banner, data))
+ return false;
+
+ elm_object_part_content_set(priv->base, PART_BANNER, banner);
+
+ priv->banner = banner;
+
+ return true;
+}
+
static Evas_Object *_create(Evas_Object *win, void *data)
{
struct _priv *priv;
return NULL;
}
- base = utils_add_layout(win, GRP_VIEW_ACTION_MENU);
+ base = utils_add_layout(win, GRP_VIEW_ACTION_MENU, EINA_TRUE);
if (!base) {
_ERR("Add layout failed.");
free(priv);
}
priv = data;
+ if (priv->banner)
+ evas_object_del(priv->banner);
+
if (priv->base)
evas_object_hide(priv->base);
}
priv->gdata = data;
_draw_action_area(priv);
+ _draw_banner_area(priv);
}
}
return NULL;
}
- base = utils_add_layout(win, GRP_VIEW_BASE);
+ base = utils_add_layout(win, GRP_VIEW_BASE, EINA_TRUE);
if (!base) {
_ERR("Add layout failed.");
free(priv);