diff options
author | Jehun Lim <jehun.lim@samsung.com> | 2015-12-07 16:19:43 +0900 |
---|---|---|
committer | Jehun Lim <jehun.lim@samsung.com> | 2015-12-08 13:33:56 +0900 |
commit | f5674be3e2661a02625b97ab55d0ba2ea5b2a56e (patch) | |
tree | 2669feae89ab7b06c123ed7294554e81c894cd30 | |
parent | ccfa3fff423d1097ae8b3299b33005d5eb304f6f (diff) | |
download | air_mediahub-f5674be3e2661a02625b97ab55d0ba2ea5b2a56e.tar.gz air_mediahub-f5674be3e2661a02625b97ab55d0ba2ea5b2a56e.tar.bz2 air_mediahub-f5674be3e2661a02625b97ab55d0ba2ea5b2a56e.zip |
base: add source selected callback
Change-Id: I0b2500f1d9e1677155099b075ea472cf6d177b2a
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
-rw-r--r-- | include/data/datamgr.h | 6 | ||||
-rw-r--r-- | include/view.h | 1 | ||||
-rw-r--r-- | src/data/albumdata.c | 7 | ||||
-rw-r--r-- | src/data/datamgr.c | 3 | ||||
-rw-r--r-- | src/data/folderdata.c | 7 | ||||
-rw-r--r-- | src/data/mediadata.c | 7 | ||||
-rw-r--r-- | src/layout/gallery.c | 28 | ||||
-rw-r--r-- | src/layout/movie.c | 28 | ||||
-rw-r--r-- | src/layout/music.c | 36 | ||||
-rw-r--r-- | src/view/base.c | 27 | ||||
-rw-r--r-- | src/view/detail.c | 3 |
11 files changed, 124 insertions, 29 deletions
diff --git a/include/data/datamgr.h b/include/data/datamgr.h index d7e30cf..682eb77 100644 --- a/include/data/datamgr.h +++ b/include/data/datamgr.h @@ -33,10 +33,8 @@ enum data_type { }; enum source_type { - E_SOURCE_INTERNAL = 0, - E_SOURCE_EXTERNAL, - E_SOURCE_ALL, - E_SOURCE_MAX + E_SOURCE_INTERNAL = MEDIA_CONTENT_STORAGE_INTERNAL, + E_SOURCE_EXTERNAL = MEDIA_CONTENT_STORAGE_EXTERNAL_USB }; struct data_ops { diff --git a/include/view.h b/include/view.h index 78c2ed5..1c02d79 100644 --- a/include/view.h +++ b/include/view.h @@ -55,6 +55,7 @@ enum update_type { UPDATE_RECENT, UPDATE_FOCUS_STATE, UPDATE_VIEW_MODE, + UPDATE_SOURCE_TYPE, UPDATE_TOAST }; diff --git a/src/data/albumdata.c b/src/data/albumdata.c index b3cd8ef..8a6acc8 100644 --- a/src/data/albumdata.c +++ b/src/data/albumdata.c @@ -416,7 +416,7 @@ static void *_create(const char *media_type, int source_type) { struct albumdata *ad; - if (!media_type || source_type < 0 || source_type >= E_SOURCE_MAX) { + if (!media_type) { _ERR("invalid argument"); return NULL; } @@ -599,11 +599,6 @@ static void _set_source(void *handle, int source_type) return; } - if (source_type < 0 || source_type >= E_SOURCE_MAX) { - _ERR("invalid argument"); - return; - } - ad = handle; ad->source_type = source_type; diff --git a/src/data/datamgr.c b/src/data/datamgr.c index 162aa28..6108562 100644 --- a/src/data/datamgr.c +++ b/src/data/datamgr.c @@ -44,8 +44,7 @@ struct datamgr *datamgr_create(int data_type, const char *media_type, struct data_ops *ops; void *handle; - if (!media_type || data_type < 0 || data_type >= E_DATA_MAX || - source_type < 0 || source_type >= E_SOURCE_MAX) { + if (!media_type || data_type < 0 || data_type >= E_DATA_MAX) { _ERR("invalid argument"); return NULL; } diff --git a/src/data/folderdata.c b/src/data/folderdata.c index 678fb51..2335653 100644 --- a/src/data/folderdata.c +++ b/src/data/folderdata.c @@ -434,7 +434,7 @@ static void *_create(const char *media_type, int source_type) { struct folderdata *fd; - if (!media_type || source_type < 0 || source_type >= E_SOURCE_MAX) { + if (!media_type) { _ERR("invalid argument"); return NULL; } @@ -601,11 +601,6 @@ static void _set_source(void *handle, int source_type) return; } - if (source_type < 0 || source_type >= E_SOURCE_MAX) { - _ERR("invalid argument"); - return; - } - fd = handle; fd->source_type = source_type; diff --git a/src/data/mediadata.c b/src/data/mediadata.c index fa4dba9..b46a16c 100644 --- a/src/data/mediadata.c +++ b/src/data/mediadata.c @@ -551,7 +551,7 @@ static void *_create(const char *media_type, int source_type) { struct mediadata *md; - if (!media_type || source_type < 0 || source_type >= E_SOURCE_MAX) { + if (!media_type) { _ERR("invalid argument"); return NULL; } @@ -708,11 +708,6 @@ static void _set_source(void *handle, int source_type) return; } - if (source_type < 0 || source_type >= E_SOURCE_MAX) { - _ERR("invalid argument"); - return; - } - md = handle; md->source_type = source_type; diff --git a/src/layout/gallery.c b/src/layout/gallery.c index de3bf61..7ba53eb 100644 --- a/src/layout/gallery.c +++ b/src/layout/gallery.c @@ -59,6 +59,8 @@ struct _priv { Eina_List *media_list; int view_mode; + int source_type; + struct grid_data *gdata; struct locmgr *locmgr; @@ -126,6 +128,8 @@ static void _clear_content_list(struct _priv *priv) priv->media_list = NULL; } + elm_object_part_text_set(priv->layout, PART_NOCONTENT, ""); + listmgr_clear_content_list(priv->listmgr); } @@ -220,7 +224,7 @@ static bool _create_utils(struct _priv *priv) int i; for (i = 0; i < E_DATA_MAX; i++) { - dmgr = datamgr_create(i, GALLERY_MEDIA_COND, E_SOURCE_ALL); + dmgr = datamgr_create(i, GALLERY_MEDIA_COND, E_SOURCE_INTERNAL); if (!dmgr) { _ERR("failed to create datamgr"); _destroy_datamgr(priv); @@ -380,6 +384,7 @@ static void _update(void *layout_data, int update_type, void *data) { struct view_update_data *vdata; struct _priv *priv; + struct datamgr *dmgr; int mode; if (!layout_data) { @@ -442,6 +447,27 @@ static void _update(void *layout_data, int update_type, void *data) priv->view_mode = mode; _update_content_list(priv); break; + case UPDATE_SOURCE_TYPE: + if (!data) { + _ERR("invalid argument"); + return; + } + + vdata = data; + mode = vdata->index; + + if (mode == priv->source_type) + return; + + priv->source_type = mode; + + dmgr = priv->dmgr[E_DATA_MEDIA]; + dmgr->ops->set_source(dmgr->handle, mode); + + _clear_content_list(priv); + + _update_content_list(priv); + break; default: break; } diff --git a/src/layout/movie.c b/src/layout/movie.c index 3771060..292bef6 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -64,6 +64,8 @@ struct _priv { app_media *recent_info; int view_mode; + int source_type; + struct grid_data *gdata; }; @@ -366,6 +368,8 @@ static void _clear_content_list(struct _priv *priv) priv->media_list = NULL; } + elm_object_part_text_set(priv->layout, PART_NOCONTENT, ""); + listmgr_clear_content_list(priv->listmgr); } @@ -488,7 +492,7 @@ static bool _create_utils(struct _priv *priv) int i; for (i = 0; i < E_DATA_MAX; i++) { - dmgr = datamgr_create(i, MOVIE_MEDIA_COND, E_SOURCE_ALL); + dmgr = datamgr_create(i, MOVIE_MEDIA_COND, E_SOURCE_INTERNAL); if (!dmgr) { _ERR("failed to create datamgr"); _destroy_datamgr(priv); @@ -647,6 +651,7 @@ static void _update(void *layout_data, int update_type, void *data) { struct view_update_data *vdata; struct _priv *priv; + struct datamgr *dmgr; int mode; if (!layout_data) { @@ -714,6 +719,27 @@ static void _update(void *layout_data, int update_type, void *data) priv->view_mode = mode; _update_content_list(priv); break; + case UPDATE_SOURCE_TYPE: + if (!data) { + _ERR("invalid argument"); + return; + } + + vdata = data; + mode = vdata->index; + + if (mode == priv->source_type) + return; + + priv->source_type = mode; + + dmgr = priv->dmgr[E_DATA_MEDIA]; + dmgr->ops->set_source(dmgr->handle, mode); + + _clear_content_list(priv); + + _update_content_list(priv); + break; default: break; } diff --git a/src/layout/music.c b/src/layout/music.c index 30a8826..6a6b8aa 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -60,6 +60,8 @@ struct _priv { app_media *playing_info; int view_mode; + int source_type; + struct grid_data *gdata; }; @@ -318,6 +320,8 @@ static void _clear_content_list(struct _priv *priv) priv->media_list = NULL; } + elm_object_part_text_set(priv->layout, PART_NOCONTENT, ""); + listmgr_clear_content_list(priv->listmgr); } @@ -418,6 +422,17 @@ static void _update_playing_item(struct _priv *priv, const char *id) _ERR("failed to update now playing item"); } +static void _set_source(struct _priv *priv) +{ + struct datamgr *dmgr; + int i; + + for (i = 0; i < E_DATA_MAX; i++) { + dmgr = priv->dmgr[i]; + dmgr->ops->set_source(dmgr->handle, priv->source_type); + } +} + static void _destroy_datamgr(struct _priv *priv) { int i; @@ -443,7 +458,7 @@ static bool _create_utils(struct _priv *priv) int i; for (i = 0; i < E_DATA_MAX; i++) { - dmgr = datamgr_create(i, MUSIC_MEDIA_COND, E_SOURCE_ALL); + dmgr = datamgr_create(i, MUSIC_MEDIA_COND, E_SOURCE_INTERNAL); if (!dmgr) { _ERR("failed to create datamgr"); _destroy_datamgr(priv); @@ -669,6 +684,25 @@ static void _update(void *layout_data, int update_type, void *data) priv->view_mode = mode; _update_content_list(priv); break; + case UPDATE_SOURCE_TYPE: + if (!data) { + _ERR("invalid argument"); + return; + } + + vdata = data; + mode = vdata->index; + + if (mode == priv->source_type) + return; + + priv->source_type = mode; + _set_source(priv); + + _clear_content_list(priv); + + _update_content_list(priv); + break; default: break; } diff --git a/src/view/base.c b/src/view/base.c index 111b3ef..965bb98 100644 --- a/src/view/base.c +++ b/src/view/base.c @@ -28,6 +28,7 @@ #include "define.h" #include "layout.h" #include "view.h" +#include "data/datamgr.h" #include "util/ctxpopup.h" #include "util/util.h" @@ -105,6 +106,11 @@ const char *source[] = { "USB", }; +static int source_type[] = { + E_SOURCE_INTERNAL, + E_SOURCE_EXTERNAL +}; + struct _menu_item { const char *name; const char *layout_id; @@ -209,7 +215,26 @@ static void _view_selected_cb(void *data, int mode) static void _source_selected_cb(void *data, int mode) { - /* It will be implemented later */ + struct view_update_data vdata; + struct _priv *priv; + int i; + + if (!data) + return; + + priv = data; + + elm_object_text_set(priv->source_btn, source[mode]); + + vdata.index = source_type[mode]; + + for (i = 0; i < E_LAYOUT_MAX; i++) { + layoutmgr_update_layout(priv->lmgr, + g_menu_item[i].layout_id, + UPDATE_SOURCE_TYPE, &vdata); + } + + priv->source_type = mode; } static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, diff --git a/src/view/detail.c b/src/view/detail.c index 851450f..62547db 100644 --- a/src/view/detail.c +++ b/src/view/detail.c @@ -985,7 +985,8 @@ static Evas_Object *_create(Evas_Object *win, void *data) EVAS_HINT_EXPAND); elm_win_resize_object_add(win, base); - dmgr = datamgr_create(E_DATA_ALBUM, MUSIC_MEDIA_COND, E_SOURCE_ALL); + dmgr = datamgr_create(E_DATA_ALBUM, MUSIC_MEDIA_COND, + E_SOURCE_INTERNAL); if (!dmgr) { _ERR("failed to create datamgr"); free(priv); |