summaryrefslogtreecommitdiff
path: root/src/layout/music.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout/music.c')
-rw-r--r--src/layout/music.c49
1 files changed, 43 insertions, 6 deletions
diff --git a/src/layout/music.c b/src/layout/music.c
index ad68f86..8c23511 100644
--- a/src/layout/music.c
+++ b/src/layout/music.c
@@ -258,13 +258,33 @@ err:
return NULL;
}
+static struct datamgr *_get_datamgr(struct _priv *priv)
+{
+ struct datamgr *dmgr;
+
+ switch (priv->view_mode) {
+ case E_MUSIC_SONG:
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ break;
+ case E_MUSIC_ALBUM:
+ case E_MUSIC_ARTIST:
+ dmgr = priv->dmgr[E_DATA_ALBUM];
+ break;
+ default:
+ dmgr = NULL;
+ break;
+ }
+
+ return dmgr;
+}
+
static void _update_content_info(struct _priv *priv)
{
struct datamgr *dmgr;
int count;
char buf[128];
- dmgr = priv->dmgr[E_DATA_MEDIA];
+ dmgr = _get_datamgr(priv);
if (!dmgr)
return;
@@ -281,9 +301,14 @@ static void _update_content_info(struct _priv *priv)
static void _clear_content_list(struct _priv *priv)
{
+ struct datamgr *dmgr;
+
if (priv->media_list) {
- priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA],
- priv->media_list);
+ dmgr = _get_datamgr(priv);
+ if (!dmgr)
+ return;
+
+ priv->gdata->free_item_list(dmgr, priv->media_list);
priv->media_list = NULL;
}
@@ -293,6 +318,7 @@ static void _clear_content_list(struct _priv *priv)
static void _update_content_list(struct _priv *priv)
{
Eina_List *list;
+ struct datamgr *dmgr;
if (priv->media_list) {
_update_content_info(priv);
@@ -301,14 +327,18 @@ static void _update_content_list(struct _priv *priv)
priv->gdata = get_music_grid_data(priv->view_mode);
- list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]);
+ dmgr = _get_datamgr(priv);
+ if (!dmgr)
+ return;
+
+ list = priv->gdata->get_item_list(dmgr);
if (!list) {
elm_object_part_text_set(priv->layout,
PART_NOCONTENT, TEXT_NOCONTENT);
return;
}
- priv->gdata->data = priv->dmgr[E_DATA_MEDIA];
+ priv->gdata->data = dmgr;
if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata))
_ERR("failed to update list area");
@@ -507,6 +537,7 @@ err:
static void _destroy(void *layout_data)
{
struct _priv *priv;
+ struct datamgr *dmgr;
if (!layout_data) {
_ERR("failed to get layout data");
@@ -515,7 +546,9 @@ static void _destroy(void *layout_data)
priv = layout_data;
- priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA], priv->media_list);
+ dmgr = _get_datamgr(priv);
+
+ priv->gdata->free_item_list(dmgr, priv->media_list);
_destroy_utils(priv);
@@ -611,6 +644,10 @@ static void _update(void *layout_data, int update_type, void *data)
vdata = data;
mode = vdata->index;
+ /* Genre and folder view mode will be implemented later. */
+ if (mode == E_MUSIC_GENRE || mode == E_MUSIC_FOLDER)
+ return;
+
if (mode == priv->view_mode)
return;