diff options
Diffstat (limited to 'src/grid/grid_music.c')
-rw-r--r-- | src/grid/grid_music.c | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/src/grid/grid_music.c b/src/grid/grid_music.c index d25710f..34a9058 100644 --- a/src/grid/grid_music.c +++ b/src/grid/grid_music.c @@ -294,8 +294,8 @@ static void _free_group_list(struct datamgr *dmgr, Eina_List *list) static void _key_down_cb(void *data, Elm_Object_Item *it, Evas_Event_Key_Down *ev) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !ev) { @@ -303,7 +303,7 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - list = data; + dmgr = data; if (!strcmp(ev->keyname, KEY_MENU) || !strcmp(ev->keyname, KEY_CONTEXT_MENU)) { @@ -313,7 +313,8 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); @@ -321,10 +322,10 @@ static void _key_down_cb(void *data, Elm_Object_Item *it, } } -static void _selected_cb(void *data, Elm_Object_Item *it) +static void _media_selected_cb(void *data, Elm_Object_Item *it) { - Eina_List *list; struct view_update_data vdata; + struct datamgr *dmgr; app_media *am; if (!data || !it) { @@ -332,7 +333,7 @@ static void _selected_cb(void *data, Elm_Object_Item *it) return; } - list = data; + dmgr = data; am = elm_object_item_data_get(it); if (!am) { @@ -340,13 +341,41 @@ static void _selected_cb(void *data, Elm_Object_Item *it) return; } - vdata.list = list; + vdata.list = dmgr->ops->get_list(dmgr->handle, E_LIST_MEDIA, NULL); vdata.index = util_get_media_index(vdata.list, am); viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata); viewmgr_push_view(VIEW_MPLAYER); } +static void _album_selected_cb(void *data, Elm_Object_Item *it) +{ + struct view_update_data vdata; + struct datamgr *dmgr; + struct album_info *ai; + + if (!data || !it) { + _ERR("invalid argument"); + return; + } + + dmgr = data; + + ai = elm_object_item_data_get(it); + if (!ai) { + _ERR("failed to get album info"); + return; + } + + vdata.list = dmgr->ops->get_list(dmgr->handle, + E_LIST_ALBUM_MEDIA, &ai->id); + vdata.index = E_DETAIL_MUSIC_ALBUM; + vdata.id = ai->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, @@ -381,7 +410,7 @@ static struct grid_data _gdata[] = { .get_item_list = _get_song_list, .free_item_list = _free_item_list, .key_down_cb = _key_down_cb, - .selected_cb = _selected_cb + .selected_cb = _media_selected_cb, }, [E_MUSIC_ALBUM] = { .item_x = MUSIC_ALBUM_ITEM_X, @@ -391,6 +420,7 @@ static struct grid_data _gdata[] = { .gclass = &_gclass[E_MUSIC_ALBUM], .get_item_list = _get_album_list, .free_item_list = _free_item_list, + .selected_cb = _album_selected_cb, }, [E_MUSIC_ARTIST] = { .item_x = MUSIC_ARTIST_ITEM_X, |