summaryrefslogtreecommitdiff
path: root/src/grid/grid_music.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/grid/grid_music.c')
-rw-r--r--src/grid/grid_music.c46
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,