diff options
author | Jehun Lim <jehun.lim@samsung.com> | 2015-10-01 16:50:19 +0900 |
---|---|---|
committer | Jehun Lim <jehun.lim@samsung.com> | 2015-10-01 20:05:13 +0900 |
commit | 98fc5bc531ca00fa125ec6f1e9e8a5b3f36bb94a (patch) | |
tree | 6043bc951619a6829ab078ada5793b2080cc4238 /src/grid | |
parent | 5c13e4f787c5a447d2f69663c658f24bb4bbb915 (diff) | |
download | air_mediahub-98fc5bc531ca00fa125ec6f1e9e8a5b3f36bb94a.tar.gz air_mediahub-98fc5bc531ca00fa125ec6f1e9e8a5b3f36bb94a.tar.bz2 air_mediahub-98fc5bc531ca00fa125ec6f1e9e8a5b3f36bb94a.zip |
gallery: add place view mode
Change-Id: Iba098da8aba0bafd52a07c8f336df90dbe59cc4f
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
Diffstat (limited to 'src/grid')
-rw-r--r-- | src/grid/grid_gallery.c | 129 |
1 files changed, 125 insertions, 4 deletions
diff --git a/src/grid/grid_gallery.c b/src/grid/grid_gallery.c index 6f20856..9d9aafc 100644 --- a/src/grid/grid_gallery.c +++ b/src/grid/grid_gallery.c @@ -29,7 +29,9 @@ #include "grid/grid.h" #include "util/util.h" -static char *_grid_text_get(void *data, Evas_Object *obj, const char *part) +#define STR_PLACE_NAME "City" + +static char *_media_text_get(void *data, Evas_Object *obj, const char *part) { app_media *am; app_media_info *info; @@ -59,7 +61,7 @@ static char *_grid_text_get(void *data, Evas_Object *obj, const char *part) return NULL; } -static Evas_Object *_grid_content_get(void *data, +static Evas_Object *_media_content_get(void *data, Evas_Object *obj, const char *part) { Evas_Object *eo; @@ -110,6 +112,70 @@ static Evas_Object *_grid_content_get(void *data, return eo; } +static char *_place_text_get(void *data, Evas_Object *obj, const char *part) +{ + struct group_info *gi; + int cnt; + char buf[64]; + char *city, *country, *tmp; + + if (!data) + return NULL; + + gi = data; + + if (!strcmp(part, PART_ELM_TEXT_COUNT)) { + cnt = eina_list_count(gi->list); + snprintf(buf, sizeof(buf), "%d", cnt); + return strdup(buf); + } else { + strcpy(buf, gi->name); + + city = strtok_r(buf, "/", &tmp); + country = strtok_r(tmp, "", &tmp); + + if (!strcmp(part, PART_ELM_TEXT_CITY)) + return strdup(city); + else if (!strcmp(part, PART_ELM_TEXT_COUNTRY)) { + if (!country) + return NULL; + + return strdup(country); + } + } + + return NULL; +} + +static Evas_Object *_place_content_get(void *data, Evas_Object *obj, + const char *part) +{ + Evas_Object *eo; + struct group_info *gi; + struct color_data bg; + + if (!data) + return NULL; + + gi = data; + + eo = NULL; + if (!strcmp(part, PART_ELM_SWALLOW_BG)) { + eo = evas_object_rectangle_add(obj); + if (!eo) { + _ERR("failed to create rectangle object"); + return NULL; + } + + app_contents_get_color(gi->name, &bg, NULL); + evas_object_color_set(eo, bg.r, bg.g, bg.b, bg.a); + + evas_object_show(eo); + } + + return eo; +} + static Eina_List *_get_event_list(struct datamgr *dmgr) { if (!dmgr) { @@ -120,6 +186,32 @@ static Eina_List *_get_event_list(struct datamgr *dmgr) return dmgr->ops->get_group(dmgr->handle, E_GROUP_MEDIA_DATE, NULL); } +static Eina_List *_get_place_list(struct datamgr *dmgr) +{ + Eina_List *list; + struct group_info *gi; + + if (!dmgr) { + _ERR("invalid argument"); + return NULL; + } + + gi = calloc(1, sizeof(*gi)); + if (!gi) { + _ERR("failed to allocate memory"); + return NULL; + } + + gi->name = STR_PLACE_NAME; + gi->list = dmgr->ops->get_group(dmgr->handle, + E_GROUP_MEDIA_PLACE, NULL); + + list = NULL; + list = eina_list_append(list, gi); + + return list; +} + static Eina_List *_get_type_list(struct datamgr *dmgr) { if (!dmgr) { @@ -140,6 +232,21 @@ static void _free_media_list(struct datamgr *dmgr, Eina_List *list) dmgr->ops->free_group(list); } +static void _free_place_list(struct datamgr *dmgr, Eina_List *list) +{ + struct group_info *gi; + + if (!dmgr) { + _ERR("invalid argument"); + return; + } + + EINA_LIST_FREE(list, gi) { + dmgr->ops->free_group(gi->list); + free(gi); + } +} + static void _key_down_cb(void *data, Elm_Object_Item *it, Evas_Event_Key_Down *ev) { @@ -200,8 +307,13 @@ static void _selected_cb(void *data, Elm_Object_Item *it) static struct grid_class _gclass[] = { [E_GALLERY_EVENT] = { .item_style = STYLE_GALLERY_EVENT, - .text_get = _grid_text_get, - .content_get = _grid_content_get + .text_get = _media_text_get, + .content_get = _media_content_get + }, + [E_GALLERY_PLACE] = { + .item_style = STYLE_GALLERY_PLACE, + .text_get = _place_text_get, + .content_get = _place_content_get }, /* Other view mode class will be added later */ }; @@ -218,6 +330,15 @@ static struct grid_data _gdata[] = { .key_down_cb = _key_down_cb, .selected_cb = _selected_cb }, + [E_GALLERY_PLACE] = { + .item_x = GALLERY_PLACE_ITEM_X, + .item_y = GALLERY_PLACE_ITEM_Y, + .item_num = GALLERY_PLACE_ITEM_NUM, + .grid_padding = GALLERY_PLACE_GRID_PADDING, + .gclass = &_gclass[E_GALLERY_PLACE], + .get_item_list = _get_place_list, + .free_item_list = _free_place_list + }, [E_GALLERY_VIDEO] = { .item_x = GALLERY_EVENT_ITEM_X, .item_y = GALLERY_EVENT_ITEM_Y, |