summaryrefslogtreecommitdiff
path: root/src/grid/grid_music.c
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-09-17 21:01:42 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-09-18 11:36:31 +0900
commit5a9d0b45c1ea3679f0c37b55fdba36cf8f041d54 (patch)
tree7334d537b5adb5d17f6dfb31ce2ae29cdffaaf5b /src/grid/grid_music.c
parent396a961a66d500e29f34d45c02f8ed44df8acf07 (diff)
downloadair_mediahub-5a9d0b45c1ea3679f0c37b55fdba36cf8f041d54.tar.gz
air_mediahub-5a9d0b45c1ea3679f0c37b55fdba36cf8f041d54.tar.bz2
air_mediahub-5a9d0b45c1ea3679f0c37b55fdba36cf8f041d54.zip
Change-Id: I44a2ea0da58c18d33a6229a3b1a1f343818cac66 Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
Diffstat (limited to 'src/grid/grid_music.c')
-rw-r--r--src/grid/grid_music.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/grid/grid_music.c b/src/grid/grid_music.c
index dcdc70e..bdef254 100644
--- a/src/grid/grid_music.c
+++ b/src/grid/grid_music.c
@@ -29,6 +29,8 @@
#include "grid/grid.h"
#include "util/util.h"
+#define STR_GENRE_NAME "Genre"
+
static char *_media_text_get(void *data, Evas_Object *obj, const char *part)
{
app_media *am;
@@ -157,6 +159,57 @@ static Evas_Object *_album_content_get(void *data, Evas_Object *obj,
return eo;
}
+static char *_group_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ struct group_info *gi;
+ char buf[32];
+ int cnt;
+
+ if (!data)
+ return NULL;
+
+ gi = data;
+
+ if (!strcmp(part, PART_ELM_TEXT_TITLE))
+ return strdup(gi->name);
+ else if (!strcmp(part, PART_ELM_TEXT_COUNT)) {
+ cnt = eina_list_count(gi->list);
+ snprintf(buf, sizeof(buf), "%d", cnt);
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *_group_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_song_list(struct datamgr *dmgr)
{
if (!dmgr) {
@@ -187,6 +240,31 @@ static Eina_List *_get_artist_list(struct datamgr *dmgr)
return dmgr->ops->get_group(dmgr->handle, E_ALBUM_ARTIST);
}
+static Eina_List *_get_genre_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_GENRE_NAME;
+ gi->list = dmgr->ops->get_group(dmgr->handle, E_MEDIA_GENRE);
+
+ list = NULL;
+ list = eina_list_append(list, gi);
+
+ return list;
+}
+
static void _free_item_list(struct datamgr *dmgr, Eina_List *list)
{
if (!dmgr) {
@@ -197,6 +275,21 @@ static void _free_item_list(struct datamgr *dmgr, Eina_List *list)
dmgr->ops->free_group(list);
}
+static void _free_group_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)
{
@@ -269,6 +362,11 @@ static struct grid_class _gclass[] = {
.text_get = _artist_text_get,
.content_get = _album_content_get
},
+ [E_MUSIC_GENRE] = {
+ .item_style = STYLE_MUSIC_GENRE,
+ .text_get = _group_text_get,
+ .content_get = _group_content_get
+ },
/* Other view mode class will be added later */
};
@@ -302,6 +400,15 @@ static struct grid_data _gdata[] = {
.get_item_list = _get_artist_list,
.free_item_list = _free_item_list,
},
+ [E_MUSIC_GENRE] = {
+ .item_x = MUSIC_GENRE_ITEM_X,
+ .item_y = MUSIC_GENRE_ITEM_Y,
+ .item_num = MUSIC_GENRE_ITEM_NUM,
+ .grid_padding = MUSIC_GENRE_GRID_PADDING,
+ .gclass = &_gclass[E_MUSIC_GENRE],
+ .get_item_list = _get_genre_list,
+ .free_item_list = _free_group_list,
+ },
/* Other view mode data will be added later */
};