summaryrefslogtreecommitdiff
path: root/src/layout/music.c
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-09-17 19:50:39 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-09-17 20:00:55 +0900
commit396a961a66d500e29f34d45c02f8ed44df8acf07 (patch)
treedd1a3cb814634dd6b6c6603200da420510407535 /src/layout/music.c
parent094b7a75ddfd27cb0f352a290f7b79dbb6dd9d40 (diff)
downloadair_mediahub-396a961a66d500e29f34d45c02f8ed44df8acf07.tar.gz
air_mediahub-396a961a66d500e29f34d45c02f8ed44df8acf07.tar.bz2
air_mediahub-396a961a66d500e29f34d45c02f8ed44df8acf07.zip
music: add album and artist view mode
Change-Id: Iacf502689f966ea9f64de1c13dac9b5dabbd6d72 Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
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;