group {
name, "elm/gengrid/item/style.tv/default";
+ data.item, "selectraise" "on";
+ data.item, "focus_highlight" "on";
+ data.item, "texts" "part.thumb.text";
+ data.item, "contents" "part.thumb.icon part.thumb.default.tv.icon";
parts {
- /* It will be implemented later */
+ part {
+ name, "padding.bottom.right";
+ type, SPACER;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.relative, 1.0 1.0;
+ min, 26 26;
+ align, 1.0 1.0;
+ fixed, 1 1;
+ }
+ }
+
+ part {
+ name, "map";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ perspective {
+ zplane, 0;
+ focal, 1000;
+ }
+ visible, 0;
+ }
+ description {
+ state, "selected" 0.0;
+ inherit, "default" 0.0;
+ perspective.zplane, -100;
+ }
+ }
+
+ part {
+ name, "part.bg";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel2 {
+ to, "padding.bottom.right";
+ relative, 0.0 0.0;
+ }
+ fixed, 1 1;
+ visible, 0;
+ }
+ }
+
+ part {
+ name, "part.default.bg";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "part.bg";
+ rel2 {
+ to, "part.thumb.text.bg";
+ relative, 1.0 1.0;
+ }
+ color, 132 147 166 255;
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ map.on, 1;
+ }
+ }
+
+ part {
+ name, PART_THUMB_ICON;
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "part.default.bg";
+ rel2.to, "part.default.bg";
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ map.on, 1;
+ }
+ }
+
+ part {
+ name, "padding.default.icon";
+ type, SPACER;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 139 56;
+ rel2.relative, 0.0 0.0;
+ align, 0.0 0.0;
+ fixed, 1 1;
+ }
+ }
+
+ part {
+ name, PART_THUMB_DEFAULT_TV_ICON;
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 100 100;
+ rel1 {
+ to, "padding.default.icon";
+ relative, 1.0 1.0;
+ }
+ rel2 {
+ to, "padding.default.icon";
+ relative, 1.0 1.0;
+ }
+ align, 0.0 0.0;
+ fixed, 1 1;
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ map.on, 1;
+ }
+ }
+
+ part {
+ name, "part.focus.up";
+ type, RECT;
+ mouse_events, 0;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ color, COLOR_ITEM_FOCUS;
+ rel1.to, "part.bg";
+ rel2 {
+ to, "part.bg";
+ relative, 1.0 0.0;
+ }
+ min, 0 6;
+ align, 0.5 0.0;
+ fixed, 0 1;
+ visible, 0;
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ map.on, 1;
+ visible, 1;
+ }
+ description {
+ state, "focused_0" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ color, COLOR_ITEM_FOCUS_0;
+ }
+ }
+
+ part {
+ name, "part.focus.left";
+ type, RECT;
+ mouse_events, 0;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ color, COLOR_ITEM_FOCUS;
+ rel1 {
+ to, "part.focus.up";
+ relative, 0.0 1.0;
+ }
+ rel2 {
+ to, "part.thumb.text.bg";
+ relative, 0.0 0.0;
+ }
+ min, 6 0;
+ align, 0.0 0.5;
+ fixed, 1 0;
+ visible, 0;
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ map.on, 1;
+ }
+ description {
+ state, "focused_0" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ color, COLOR_ITEM_FOCUS_0;
+ }
+ }
+
+ part {
+ name, "part.focus.right";
+ type, RECT;
+ mouse_events, 0;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ color, COLOR_ITEM_FOCUS;
+ rel1 {
+ to, "part.focus.up";
+ relative, 1.0 1.0;
+ }
+ rel2 {
+ to, "part.thumb.text.bg";
+ relative, 1.0 0.0;
+ }
+ min, 6 0;
+ align, 1.0 0.5;
+ fixed, 1 0;
+ visible, 0;
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ map.on, 1;
+ }
+ description {
+ state, "focused_0" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ color, COLOR_ITEM_FOCUS_0;
+ }
+ }
+
+ part {
+ name, "part.default.text.bg";
+ type, RECT;
+ mouse_events, 0;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ to, "part.bg";
+ relative, 0.0 1.0;
+ }
+ rel2.to, "part.bg";
+ min, 0 82;
+ align, 0.5 1.0;
+ color, COLOR_TEXT_BG;
+ fixed, 0 1;
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ color, COLOR_ITEM_FOCUS;
+ map.on, 1;
+ }
+ }
+
+ part {
+ name, "part.thumb.text.bg";
+ type, RECT;
+ mouse_events, 0;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ color, COLOR_TEXT_BG;
+ rel1.to, "part.default.text.bg";
+ rel2.to, "part.default.text.bg";
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ color, COLOR_ITEM_FOCUS;
+ map.on, 1;
+ }
+ description {
+ state, "focused_0" 0.0;
+ inherit, "default" 0.0;
+ color, COLOR_ITEM_FOCUS_0;
+ }
+ }
+
+ part {
+ name, "padding.thumb.text";
+ type, SPACER;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 18 0;
+ rel1.to, "part.thumb.text.bg";
+ rel2 {
+ to, "part.thumb.text.bg";
+ relative, 0.0 1.0;
+ }
+ align, 0.0 0.5;
+ fixed, 1 0;
+ }
+ }
+
+ part {
+ name, PART_THUMB_TEXT;
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ color, 255 255 255 255;
+ min, 342 82;
+ rel1 {
+ to, "padding.thumb.text";
+ relative, 1.0 0.0;
+ }
+ rel2 {
+ to, "padding.thumb.text";
+ relative, 1.0 0.0;
+ }
+ align, 0.0 0.0;
+ fixed, 1 1;
+ text {
+ font, FONT_TIZENSANS_LIGHT;
+ size, 28;
+ align, 0.0 0.5;
+ }
+ map {
+ perspective_on, 1;
+ perspective, "map";
+ }
+ }
+ description {
+ state, "focused" 0.0;
+ inherit, "default" 0.0;
+ map.on, 1;
+ }
+ description {
+ state, "focused_0" 0.0;
+ inherit, "focused" 0.0;
+ }
+ }
+ }
+
+ programs {
+ program {
+ name, SIG_FOCUSED;
+ signal, "elm,state,focused";
+ source, "elm";
+ action, STATE_SET "focused_0" 0.0;
+ target, "part.focus.up";
+ target, "part.focus.left";
+ target, "part.focus.right";
+ target, "part.thumb.text.bg";
+ target, PART_THUMB_TEXT;
+ after, "focus.in.anim";
+ }
+
+ program {
+ name, "focus.in.anim";
+ action, STATE_SET "focused" 0.0;
+ target, "part.default.bg";
+ target, PART_THUMB_ICON;
+ target, PART_THUMB_DEFAULT_TV_ICON;
+ target, "part.focus.up";
+ target, "part.focus.left";
+ target, "part.focus.right";
+ target, "part.thumb.text.bg";
+ transition, TRANSITION_FOCUS;
+ after, "focus.in.anim.2";
+ }
+
+ program {
+ name, "focus.in.anim.2";
+ action, STATE_SET "focused" 0.0;
+ target, "part.default.text.bg";
+ }
+
+ program {
+ name, SIG_UNFOCUSED;
+ signal, "elm,state,unfocused";
+ source, "elm";
+ action, STATE_SET "default" 0.0;
+ target, PART_THUMB_TEXT;
+ target, "part.default.text.bg";
+ after, "focus.out.anim";
+ }
+
+ program {
+ name, "focus.out.anim";
+ action, STATE_SET "focused_0" 0.0;
+ target, "part.focus.up";
+ target, "part.focus.left";
+ target, "part.focus.right";
+ target, "part.thumb.text.bg";
+ transition, TRANSITION_FOCUS;
+ after, "focus.out.anim.2";
+ }
+
+ program {
+ name, "focus.out.anim.2";
+ action, STATE_SET "default" 0.0;
+ target, PART_THUMB_ICON;
+ target, PART_THUMB_DEFAULT_TV_ICON;
+ target, "part.default.bg";
+ target, "part.focus.up";
+ target, "part.focus.left";
+ target, "part.focus.right";
+ target, "part.thumb.text.bg";
+ }
+
+ program {
+ name, SIG_SELECTED;
+ signal, "elm,state,selected";
+ source, "elm";
+ action, STATE_SET "selected" 0.0;
+ target, "map";
+ transition, TRANSITION_CLICK;
+ after, "after_selected";
+ }
+
+ program {
+ name, "after_selected";
+ action, STATE_SET "default" 0.0;
+ target, "map";
+ transition, TRANSITION_CLICK;
+ after, "item_selected";
+ }
+
+ program {
+ name, "item_selected";
+ action, SIGNAL_EMIT SIG_ITEM_SELECTED SRC_EDC;
+ }
}
}
static char *_text_get(void *data, Evas_Object *obj, const char *part)
{
- /* It will be implemented later. */
+ struct datamgr *dmgr;
+ char *name;
+
+ if (!data) {
+ _ERR("Data is NULL.");
+ return NULL;
+ }
- return NULL;
+ dmgr = get_channel_datamgr();
+ if (!dmgr || !dmgr->get_data)
+ return NULL;
+
+ name = dmgr->get_data(data, DATA_NAME);
+ if (!name)
+ return NULL;
+
+ return name;
}
static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part)
{
- /* It will be implemented later. */
+ struct datamgr *dmgr;
+ Evas_Object *img;
+ char *thumbnail;
+
+ if (!data || !obj) {
+ _ERR("Invalid argument.");
+ return NULL;
+ }
+
+ dmgr = get_channel_datamgr();
+ if (!dmgr || !dmgr->get_data)
+ return NULL;
+
+ thumbnail = dmgr->get_data(data, DATA_THUMBNAIL);
- return NULL;
+ img = elm_image_add(obj);
+ if (!img) {
+ _ERR("elm_image_add failed.");
+ return NULL;
+ }
+ elm_image_aspect_fixed_set(img, EINA_FALSE);
+ evas_object_show(img);
+
+ if (!strcmp(part, PART_THUMB_ICON) && thumbnail)
+ elm_image_file_set(img, thumbnail, NULL);
+ else if (!strcmp(part, PART_THUMB_DEFAULT_TV_ICON) && !thumbnail)
+ elm_image_file_set(img, DEFAULT_TV_PNG, NULL);
+ else
+ img = NULL;
+
+ return img;
}
static struct grid_class _gclass = {
dmgr->free_favorites(list);
}
+static void _item_selected(Elm_Object_Item *it)
+{
+ struct datamgr *dmgr;
+
+ if (!it) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ dmgr = get_channel_datamgr();
+ if (!dmgr || !dmgr->action)
+ return;
+
+ if (!dmgr->action(it))
+ _ERR("The item action failed.");
+}
+
static struct grid_data _gdata = {
.id = STR_TV,
.item_size_x = ITEM_TV_X,
.gclass = &_gclass,
.create_item_list = _create_item_list,
.destroy_item_list = _destroy_item_list,
+ .item_selected = _item_selected,
};
struct grid_data *get_tv_grid_data(void)