diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/grid/grid_music.c | 25 | ||||
-rw-r--r-- | src/view/detail.c | 19 |
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; } } |