summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHyojung Jo <hj903.jo@samsung.com>2015-09-02 14:37:10 +0900
committerHyojung Jo <hj903.jo@samsung.com>2015-09-02 16:23:18 +0900
commit895c63d6d21bef3fc80c6ed8b1a6039f41a60d59 (patch)
tree0d3aa3b7da38f27610b5480ddc91591e8e63752e
parent6ecaadda1fa00c4896d6755c398acd3baa2b2294 (diff)
downloadair_favorite-895c63d6d21bef3fc80c6ed8b1a6039f41a60d59.tar.gz
air_favorite-895c63d6d21bef3fc80c6ed8b1a6039f41a60d59.tar.bz2
air_favorite-895c63d6d21bef3fc80c6ed8b1a6039f41a60d59.zip
View: Draw info banner of action menu
Change-Id: Ie90434f33133b37927c0678c0a5cb31def092a26 Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
-rw-r--r--include/datamgr.h2
-rw-r--r--include/define.h6
-rw-r--r--include/grid.h1
-rw-r--r--include/utils.h3
-rw-r--r--res/favorite.edc10
-rw-r--r--src/common/utils.c13
-rw-r--r--src/data/channel.c8
-rw-r--r--src/grid/grid_tv.c32
-rw-r--r--src/view/view_action_menu.c33
-rw-r--r--src/view/view_base.c2
10 files changed, 98 insertions, 12 deletions
diff --git a/include/datamgr.h b/include/datamgr.h
index c83e92f..d9dc358 100644
--- a/include/datamgr.h
+++ b/include/datamgr.h
@@ -22,6 +22,8 @@ enum data_type {
DATA_ARTIST,
DATA_ALBUM_NAME,
DATA_DURATION,
+ DATA_SUBTITLE,
+ DATA_DESCRIPTION,
};
enum action_type {
diff --git a/include/define.h b/include/define.h
index 1a411b9..4b1616d 100644
--- a/include/define.h
+++ b/include/define.h
@@ -33,6 +33,7 @@
/* 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"
@@ -52,6 +53,10 @@
#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"
@@ -124,6 +129,7 @@
/* Count */
#define COUNT_MENU 6
#define COUNT_ACTION 2
+#define COUNT_BANNER 1
/* Image */
#define PLAY_ICON_PNG "ic_thumbnail_play.png"
diff --git a/include/grid.h b/include/grid.h
index 6bf4b74..e4c1ebd 100644
--- a/include/grid.h
+++ b/include/grid.h
@@ -34,6 +34,7 @@ struct grid_data {
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);
diff --git a/include/utils.h b/include/utils.h
index 975a8e3..ebe092b 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -18,7 +18,8 @@
#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,
diff --git a/res/favorite.edc b/res/favorite.edc
index 954d7dc..13873fb 100644
--- a/res/favorite.edc
+++ b/res/favorite.edc
@@ -496,7 +496,7 @@ collections {
}
part {
- name, "part.info.banner";
+ name, PART_BANNER;
type, SWALLOW;
scale, 1;
description {
@@ -515,7 +515,7 @@ collections {
}
group {
- name, GRP_BANNER;
+ name, GRP_TV_BANNER;
parts {
part {
name, "bg";
@@ -555,7 +555,7 @@ collections {
}
part {
- name, "part.title";
+ name, PART_TITLE;
type, TEXT;
scale, 1;
description {
@@ -598,7 +598,7 @@ collections {
}
part {
- name, "part.subtitle";
+ name, PART_SUBTITLE;
type, TEXT;
scale, 1;
description {
@@ -638,7 +638,7 @@ collections {
}
part {
- name, "part.description";
+ name, PART_DESCRIPT;
type, TEXT;
scale, 1;
description {
diff --git a/src/common/utils.c b/src/common/utils.c
index a491626..39628ed 100644
--- a/src/common/utils.c
+++ b/src/common/utils.c
@@ -19,6 +19,7 @@
#include <app_debug.h>
#include "define.h"
+#include "datamgr.h"
Evas_Object *utils_add_window(const char *name)
{
@@ -43,11 +44,12 @@ 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;
}
@@ -58,11 +60,14 @@ Evas_Object *utils_add_layout(Evas_Object *parent, const char *group)
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;
}
diff --git a/src/data/channel.c b/src/data/channel.c
index 9697cbc..50b25ad 100644
--- a/src/data/channel.c
+++ b/src/data/channel.c
@@ -128,6 +128,14 @@ static char *_get_data(void *data, enum data_type type)
/* 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;
diff --git a/src/grid/grid_tv.c b/src/grid/grid_tv.c
index a791221..a6bee0f 100644
--- a/src/grid/grid_tv.c
+++ b/src/grid/grid_tv.c
@@ -206,6 +206,37 @@ static bool _item_locked(Elm_Object_Item *it, bool *locked)
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,
@@ -216,6 +247,7 @@ static struct grid_data _gdata = {
.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)
diff --git a/src/view/view_action_menu.c b/src/view/view_action_menu.c
index 9b20ebb..c95366b 100644
--- a/src/view/view_action_menu.c
+++ b/src/view/view_action_menu.c
@@ -37,6 +37,7 @@ struct _priv {
Evas_Object *base;
Evas_Object *live_btn;
Evas_Object *menu_btn[COUNT_ACTION];
+ Evas_Object *banner;
struct grid_data *gdata;
};
@@ -264,6 +265,32 @@ static bool _draw_action_area(struct _priv *priv)
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;
@@ -280,7 +307,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
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);
@@ -328,6 +355,9 @@ static void _hide(void *data)
}
priv = data;
+ if (priv->banner)
+ evas_object_del(priv->banner);
+
if (priv->base)
evas_object_hide(priv->base);
}
@@ -348,6 +378,7 @@ static void _update(void *view_data, int update_type, void *data)
priv->gdata = data;
_draw_action_area(priv);
+ _draw_banner_area(priv);
}
}
diff --git a/src/view/view_base.c b/src/view/view_base.c
index 211bda5..7c41ebd 100644
--- a/src/view/view_base.c
+++ b/src/view/view_base.c
@@ -446,7 +446,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
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);