summaryrefslogtreecommitdiff
path: root/src/grid
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-10-01 16:50:19 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-10-01 20:05:13 +0900
commit98fc5bc531ca00fa125ec6f1e9e8a5b3f36bb94a (patch)
tree6043bc951619a6829ab078ada5793b2080cc4238 /src/grid
parent5c13e4f787c5a447d2f69663c658f24bb4bbb915 (diff)
downloadair_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.c129
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,