summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/grid/grid_music.c25
-rw-r--r--src/view/detail.c19
2 files changed, 42 insertions, 2 deletions
diff --git a/src/grid/grid_music.c b/src/grid/grid_music.c
index b4e327c..2bf8a38 100644
--- a/src/grid/grid_music.c
+++ b/src/grid/grid_music.c
@@ -404,6 +404,30 @@ static void _artist_selected_cb(void *data, Elm_Object_Item *it)
viewmgr_push_view(VIEW_DETAIL);
}
+static void _genre_selected_cb(void *data, Elm_Object_Item *it)
+{
+ struct view_update_data vdata;
+ struct group_info *gi;
+
+ if (!it) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ gi = elm_object_item_data_get(it);
+ if (!gi) {
+ _ERR("failed to get group info");
+ return;
+ }
+
+ vdata.list = gi->list;
+ vdata.index = E_DETAIL_MUSIC_GENRE;
+ vdata.id = gi->name;
+
+ viewmgr_update_view(VIEW_DETAIL, UPDATE_CONTENT, &vdata);
+ viewmgr_push_view(VIEW_DETAIL);
+}
+
static struct grid_class _gclass[] = {
[E_MUSIC_SONG] = {
.item_style = STYLE_MUSIC_SONG,
@@ -468,6 +492,7 @@ static struct grid_data _gdata[] = {
.gclass = &_gclass[E_MUSIC_GENRE],
.get_item_list = _get_genre_list,
.free_item_list = _free_group_list,
+ .selected_cb = _genre_selected_cb,
},
/* Other view mode data will be added later */
};
diff --git a/src/view/detail.c b/src/view/detail.c
index 066521b..7d28b1c 100644
--- a/src/view/detail.c
+++ b/src/view/detail.c
@@ -89,6 +89,15 @@ static struct _view_info view_info[E_DETAIL_MAX] = {
.selected = _album_selected,
.detail_update = EINA_TRUE,
},
+ [E_DETAIL_MUSIC_GENRE] = {
+ .grid_style = STYLE_MUSIC_SONG_DETAIL,
+ .grid_item_x = MUSIC_SONG_ITEM_X,
+ .grid_item_y = MUSIC_SONG_ITEM_Y,
+ .get_grid_text = _grid_text_get,
+ .get_grid_content = _grid_content_get,
+ .get_content_info = _get_song_count,
+ .detail_update = EINA_FALSE,
+ },
};
struct _priv {
@@ -192,12 +201,18 @@ static void _media_selected(void *data)
vdata.list = priv->media_list;
vdata.index = util_get_media_index(vdata.list, am);
- if (priv->view_type == E_DETAIL_MOVIE_GENRE) {
+ switch (priv->view_type) {
+ case E_DETAIL_MOVIE_GENRE:
viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
viewmgr_push_view(VIEW_VIEWER);
- } else if (priv->view_type == E_DETAIL_MUSIC_ALBUM) {
+ break;
+ case E_DETAIL_MUSIC_ALBUM:
+ case E_DETAIL_MUSIC_GENRE:
viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata);
viewmgr_push_view(VIEW_MPLAYER);
+ break;
+ default:
+ break;
}
}