From: Hyojung Jo Date: Wed, 22 Jul 2015 09:01:42 +0000 (+0900) Subject: Datamgr: Applied the datamgr to provide consistent interface to user of data X-Git-Tag: accepted/tizen/tv/20150728.070600~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F71%2F44471%2F3;p=profile%2Ftv%2Fapps%2Fnative%2Fair_favorite.git Datamgr: Applied the datamgr to provide consistent interface to user of data Change-Id: I54f939553865504f9e664babf63d9cc456269c53 Signed-off-by: Hyojung Jo --- diff --git a/include/data/app.h b/include/data/app.h deleted file mode 100644 index 65eda56..0000000 --- a/include/data/app.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __AIR_FAVORITE_APP_H__ -#define __AIR_FAVORITE_APP_H__ - -#include - -struct app_data; - -Eina_List *get_app_favorite_list(void); -char *get_app_id(struct app_data *adata); -char *get_app_name(struct app_data *adata); -char *get_app_icon(struct app_data *adata); -void free_app_favorite_list(Eina_List *list); - -#endif /* __AIR_FAVORITE_APP_H__ */ diff --git a/include/data/media.h b/include/data/media.h deleted file mode 100644 index ee81983..0000000 --- a/include/data/media.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __AIR_FAVORITE_MEDIA_H__ -#define __AIR_FAVORITE_MEDIA_H__ - -#include -#include -#include -#include - -Eina_List *get_media_favorite_list(enum app_contents_type type); -char *get_media_id(app_media *am); -char *get_media_name(app_media *am); -media_content_type_e get_media_type(app_media *am); -char *get_media_path(app_media *am); -char *get_media_thumbnail(app_media *am); -char *get_media_artist(app_media *am); -char *get_media_album_name(app_media *am); -int get_media_duration(app_media *am); -int get_media_favorite_image_count(void); -int get_media_favorite_video_count(void); -void free_media_favorite_list(Eina_List *list); - -#endif /* __AIR_FAVORITE_MEDIA_H__ */ diff --git a/include/datamgr.h b/include/datamgr.h new file mode 100644 index 0000000..3183fd3 --- /dev/null +++ b/include/datamgr.h @@ -0,0 +1,37 @@ +#ifndef __AIR_FAVORITE_DATAMGR_H__ +#define __AIR_FAVORITE_DATAMGR_H__ + +#include + +enum item_type { + ITEM_TV, + ITEM_MOVIE, + ITEM_PHOTO, + ITEM_VIDEO, + ITEM_GALLERY, + ITEM_MUSIC, + ITEM_APPS, + ITEM_WEBS, +}; + +enum data_type { + DATA_NAME = 0, + DATA_THUMBNAIL, + DATA_PATH, + DATA_ARTIST, + DATA_ALBUM_NAME, + DATA_DURATION, +}; + +struct datamgr { + Eina_List *(*get_favorites)(enum item_type type); + void (*free_favorites)(Eina_List *list); + int (*get_count)(enum item_type type); + char *(*get_data)(void *data, enum data_type type); + bool (*action)(Elm_Object_Item *it); +}; + +struct datamgr *get_media_datamgr(void); +struct datamgr *get_apps_datamgr(void); + +#endif /* __AIR_FAVORITE_DATAMGR_H__ */ diff --git a/include/define.h b/include/define.h index 0ea53e9..46b294e 100644 --- a/include/define.h +++ b/include/define.h @@ -62,7 +62,7 @@ #define STR_CNT_TV "channels" #define STR_CNT_MOVIE "movies" #define STR_CNT_GALLERY "files" -#define STR_CNT_GALLERY_IMAGE "photos" +#define STR_CNT_GALLERY_PHOTO "photos" #define STR_CNT_GALLERY_VIDEO "videos" #define STR_CNT_MUSIC "songs" #define STR_CNT_APPS "apps" diff --git a/src/data/app.c b/src/data/app.c index 35219be..e883809 100644 --- a/src/data/app.c +++ b/src/data/app.c @@ -17,10 +17,11 @@ #include #include #include +#include #include #include -#include "data/app.h" +#include "datamgr.h" struct app_data { char *id; @@ -77,11 +78,14 @@ end: pkgmgrinfo_appinfo_destroy_appinfo(pah); } -Eina_List *get_app_favorite_list(void) +static Eina_List *_get_favorites(enum item_type type) { GList *id_list = NULL; Eina_List *l = NULL; + if (type != ITEM_APPS) + return NULL; + if (app_contents_get_favorite_list(CONTENTS_APP, &id_list) != APP_CONTENTS_ERROR_NONE) { _ERR("Get app favorite id list failed."); @@ -98,37 +102,30 @@ Eina_List *get_app_favorite_list(void) return l; } -char *get_app_id(struct app_data *adata) +static char *_get_data(void *data, enum data_type type) { - if (!adata) { - _ERR("Invalid argument."); - return NULL; - } - - return adata->id; -} + struct app_data *adata; -char *get_app_name(struct app_data *adata) -{ - if (!adata) { + if (!data) { _ERR("Invalid argument."); return NULL; } + adata = data; - return adata->name; -} + switch (type) { + case DATA_NAME: + return adata->name; -char *get_app_icon(struct app_data *adata) -{ - if (!adata) { - _ERR("Invalid argument."); + case DATA_THUMBNAIL: + return adata->icon; + + default: + _ERR("Invalid data type."); return NULL; } - - return adata->icon; } -void free_app_favorite_list(Eina_List *list) +static void _free_favorites(Eina_List *list) { struct app_data *adata; @@ -147,3 +144,38 @@ void free_app_favorite_list(Eina_List *list) adata = NULL; } } + +static bool _action(Elm_Object_Item *it) +{ + struct app_data *adata; + int r; + + if (!it) { + _ERR("Invalid argument."); + return false; + } + + adata = elm_object_item_data_get(it); + if (!adata || !adata->id) + return false; + + r = aul_open_app(adata->id); + if (r == AUL_R_EINVAL) { + _ERR("Wrong app id"); + return false; + } + + return true; +} + +static struct datamgr _dmgr = { + .get_data = _get_data, + .get_count = NULL, + .get_favorites = _get_favorites, + .free_favorites = _free_favorites, + .action = _action, +}; + +struct datamgr *get_apps_datamgr(void) { + return &_dmgr; +} diff --git a/src/data/media.c b/src/data/media.c index e9618cf..8cc2dce 100644 --- a/src/data/media.c +++ b/src/data/media.c @@ -16,9 +16,12 @@ #include #include +#include +#include #include -#include "data/media.h" +#include "define.h" +#include "datamgr.h" static void _media_favorite_list_foreach(gpointer data, gpointer user_data) { @@ -57,12 +60,31 @@ static void _media_favorite_list_foreach(gpointer data, gpointer user_data) *l = eina_list_append(*l, am); } -Eina_List *get_media_favorite_list(enum app_contents_type type) +static Eina_List *_get_favorites(enum item_type type) { GList *id_list = NULL; Eina_List *l = NULL; + enum app_contents_type contents_type; - if (app_contents_get_favorite_list(type, &id_list) + switch (type) { + case ITEM_MOVIE: + contents_type = CONTENTS_MOVIE; + break; + + case ITEM_GALLERY: + contents_type = CONTENTS_GALLERY; + break; + + case ITEM_MUSIC: + contents_type = CONTENTS_MUSIC; + break; + + default: + _ERR("Unhandled media type."); + return NULL; + } + + if (app_contents_get_favorite_list(contents_type, &id_list) != APP_CONTENTS_ERROR_NONE) { _ERR("Get media favorite id list failed."); return NULL; @@ -84,104 +106,40 @@ Eina_List *get_media_favorite_list(enum app_contents_type type) return l; } -char *get_media_id(app_media *am) +static char *_get_video_duration(app_media_info *minfo) { - app_media_info *minfo; + int duration, h, m, s, sec; + char str[SIZE_STR]; - if (!am) { - _ERR("Invalid argument."); + if (!minfo || !minfo->video || + minfo->media_type != MEDIA_CONTENT_TYPE_VIDEO) return NULL; - } - minfo = app_media_get_info(am); - if (!minfo) { - _ERR("Get app_media_info failed."); - return NULL; - } + duration = minfo->video->duration; - return minfo->media_id; -} + sec = duration / 1000; + h = sec / 3600; + m = (sec % 3600) / 60; + s = sec % 60; -char *get_media_name(app_media *am) -{ - app_media_info *minfo; - - if (!am) { - _ERR("Invalid argument."); - return NULL; - } + if (h) + snprintf(str, sizeof(str), "%d:%02d:%02d", h, m, s); + else + snprintf(str, sizeof(str), "%d:%02d", m, s); - minfo = app_media_get_info(am); - if (!minfo) { - _ERR("Get app_media_info failed."); - return NULL; - } - - return minfo->display_name; + return strdup(str); } -media_content_type_e get_media_type(app_media *am) -{ - app_media_info *minfo; - - if (!am) { - _ERR("Invalid argument."); - return -1; - } - - minfo = app_media_get_info(am); - if (!minfo) { - _ERR("Get app_media_info failed."); - return -1; - } - - return minfo->media_type; -} - -char *get_media_path(app_media *am) -{ - app_media_info *minfo; - - if (!am) { - _ERR("Invalid argument."); - return NULL; - } - - minfo = app_media_get_info(am); - if (!minfo) { - _ERR("Get app_media_info failed."); - return NULL; - } - - return minfo->file_path; -} - -char *get_media_thumbnail(app_media *am) -{ - app_media_info *minfo; - - if (!am) { - _ERR("Invalid argument."); - return NULL; - } - - minfo = app_media_get_info(am); - if (!minfo) { - _ERR("Get app_media_info failed."); - return NULL; - } - - return minfo->thumbnail_path; -} - -char *get_media_artist(app_media *am) +static char *_get_data(void *data, enum data_type type) { + app_media *am; app_media_info *minfo; - if (!am) { + if (!data) { _ERR("Invalid argument."); return NULL; } + am = data; minfo = app_media_get_info(am); if (!minfo) { @@ -189,73 +147,51 @@ char *get_media_artist(app_media *am) return NULL; } - return minfo->audio->artist; -} + switch (type) { + case DATA_NAME: + return minfo->title; -char *get_media_album_name(app_media *am) -{ - app_media_info *minfo; + case DATA_THUMBNAIL: + return minfo->thumbnail_path; - if (!am) { - _ERR("Invalid argument."); - return NULL; - } + case DATA_PATH: + return minfo->file_path; - minfo = app_media_get_info(am); - if (!minfo) { - _ERR("Get app_media_info failed."); - return NULL; - } - - return minfo->audio->album; -} + case DATA_DURATION: + if (minfo->video) + return _get_video_duration(minfo); -int get_media_duration(app_media *am) -{ - app_media_info *minfo; + case DATA_ARTIST: + if (minfo->audio) + return minfo->audio->artist; - if (!am) { - _ERR("Invalid argument."); - return -1; - } + case DATA_ALBUM_NAME: + if (minfo->audio) + return minfo->audio->album; - minfo = app_media_get_info(am); - if (!minfo) { - _ERR("Get app_media_info failed."); - return -1; + default: + _ERR("Unhandled data type."); } - if (!minfo->video) - return -1; - - return minfo->video->duration; + return NULL; } -int get_media_favorite_image_count(void) +static int _get_count(enum item_type type) { GList *id_list = NULL; int cnt; + enum app_contents_type contents_type; - if (app_contents_get_favorite_list(CONTENTS_PHOTO, &id_list) - != APP_CONTENTS_ERROR_NONE) { - _ERR("Get media favorite id list failed."); + if (type == ITEM_PHOTO) + contents_type = CONTENTS_PHOTO; + else if (type == ITEM_VIDEO) + contents_type = CONTENTS_VIDEO; + else return 0; - } - - cnt = g_list_length(id_list); - app_contents_free_favorite_list(id_list); - return cnt; -} - -int get_media_favorite_video_count(void) -{ - GList *id_list = NULL; - int cnt; - - if (app_contents_get_favorite_list(CONTENTS_VIDEO, &id_list) + if (app_contents_get_favorite_list(contents_type, &id_list) != APP_CONTENTS_ERROR_NONE) { - _ERR("Get media favorite id list failed."); + _ERR("Get favorite id list failed."); return 0; } @@ -265,7 +201,7 @@ int get_media_favorite_video_count(void) return cnt; } -void free_media_favorite_list(Eina_List *list) +static void _free_favorites(Eina_List *list) { app_media *am; @@ -279,3 +215,22 @@ void free_media_favorite_list(Eina_List *list) app_media_destroy(am); } } + +static bool _action(Elm_Object_Item *it) +{ + /* It should be implemented later. */ + + return true; +} + +static struct datamgr _dmgr = { + .get_data = _get_data, + .get_count = _get_count, + .get_favorites = _get_favorites, + .free_favorites = _free_favorites, + .action = _action, +}; + +struct datamgr *get_media_datamgr(void) { + return &_dmgr; +} diff --git a/src/grid/grid_apps.c b/src/grid/grid_apps.c index 305ac0b..3f72a0d 100644 --- a/src/grid/grid_apps.c +++ b/src/grid/grid_apps.c @@ -23,7 +23,7 @@ #include "define.h" #include "grid.h" -#include "data/app.h" +#include "datamgr.h" #define STR_APPS "Apps" #define STYLE_APPS "style.apps" @@ -63,20 +63,28 @@ static struct color color_text[] = static char *_text_get(void *data, Evas_Object *obj, const char *part) { - struct app_data *adata; + struct datamgr *dmgr; + char *name = NULL; if (!data) { _ERR("Data is NULL."); return NULL; } - adata = data; - return strdup(get_app_name(adata)); + dmgr = get_apps_datamgr(); + if (!dmgr || !dmgr->get_data) + return NULL; + + name = dmgr->get_data(data, DATA_NAME); + if (!name) + return NULL; + + return strdup(name); } static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) { - struct app_data *adata; + struct datamgr *dmgr; Evas_Object *img, *ly, *icon_bg, *text_bg = NULL; char *icon; int idx; @@ -85,10 +93,13 @@ static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) _ERR("Data is NULL."); return NULL; } - adata = data; if (!strcmp(part, PART_THUMB_ICON)) { - icon = get_app_icon(adata); + dmgr = get_apps_datamgr(); + if (!dmgr || !dmgr->get_data) + return NULL; + + icon = dmgr->get_data(data, DATA_THUMBNAIL); img = elm_image_add(obj); if (!img) { @@ -157,31 +168,44 @@ static struct grid_class _gclass = { static Eina_List *_create_item_list(void) { - return get_app_favorite_list(); + struct datamgr *dmgr; + + dmgr = get_apps_datamgr(); + if (!dmgr || !dmgr->get_favorites) + return NULL; + + return dmgr->get_favorites(ITEM_APPS); } static void _destroy_item_list(Eina_List *list) { + struct datamgr *dmgr; + if (!list) return; - free_app_favorite_list(list); + dmgr = get_apps_datamgr(); + if (!dmgr || !dmgr->free_favorites) + return; + + dmgr->free_favorites(list); } static void _item_selected(Elm_Object_Item *it) { - struct app_data *adata; - int r; + struct datamgr *dmgr; if (!it) { _ERR("Invalid argument."); return; } - adata = elm_object_item_data_get(it); - r = aul_open_app(get_app_id(adata)); - if (r == AUL_R_EINVAL) - _ERR("Wrong app id"); + dmgr = get_apps_datamgr(); + if (!dmgr || !dmgr->action) + return; + + if (!dmgr->action(it)) + _ERR("The item action failed."); } static struct grid_data _gdata = { diff --git a/src/grid/grid_gallery.c b/src/grid/grid_gallery.c index 7739641..98637e5 100644 --- a/src/grid/grid_gallery.c +++ b/src/grid/grid_gallery.c @@ -22,7 +22,7 @@ #include "define.h" #include "grid.h" -#include "data/media.h" +#include "datamgr.h" #define STR_GALLERY "Gallery" #define STYLE_GALLERY "style.gallery" @@ -31,37 +31,28 @@ static char *_text_get(void *data, Evas_Object *obj, const char *part) { - app_media *am; - int duration, h, m, s, sec; - char str[SIZE_STR]; + struct datamgr *dmgr; + char *duration = NULL; if (!data) { _ERR("Data is NULL."); return NULL; } - am = data; - if (get_media_type(am) != MEDIA_CONTENT_TYPE_VIDEO) + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_data) return NULL; - duration = get_media_duration(am); - - sec = duration / 1000; - h = sec / 3600; - m = (sec % 3600) / 60; - s = sec % 60; - - if (h) - snprintf(str, sizeof(str), "%d:%02d:%02d", h, m, s); - else - snprintf(str, sizeof(str), "%d:%02d", m, s); + duration = dmgr->get_data(data, DATA_DURATION); + if (!duration) + return NULL; - return strdup(str); + return duration; } static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) { - app_media *am; + struct datamgr *dmgr; Evas_Object *img; char *img_path; @@ -69,10 +60,13 @@ static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) _ERR("Invalid argument."); return NULL; } - am = data; + + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_data) + return NULL; if (!strcmp(part, PART_THUMB_ICON)) { - img_path = get_media_thumbnail(am); + img_path = dmgr->get_data(data, DATA_THUMBNAIL); if (!img_path) img_path = DEFAULT_IMAGE_PNG; @@ -88,7 +82,7 @@ static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) return img; } else if (!strcmp(part, PART_THUMB_PLAY_ICON) && - get_media_type(am) == MEDIA_CONTENT_TYPE_VIDEO) { + dmgr->get_data(data, DATA_DURATION)) { img = elm_image_add(obj); if (!img) { _ERR("elm_image_add failed."); @@ -115,25 +109,44 @@ static struct grid_class _gclass = { static Eina_List *_create_item_list(void) { - return get_media_favorite_list(CONTENTS_GALLERY); + struct datamgr *dmgr; + + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_favorites) + return NULL; + + return dmgr->get_favorites(ITEM_GALLERY); } static void _destroy_item_list(Eina_List *list) { + struct datamgr *dmgr; + if (!list) return; - free_media_favorite_list(list); + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->free_favorites) + return; + + dmgr->free_favorites(list); } static void _item_selected(Elm_Object_Item *it) { + struct datamgr *dmgr; + if (!it) { _ERR("Invalid argument."); return; } - /* FIXME: The mediahub should be implemented. */ + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->action) + return; + + if (!dmgr->action(it)) + _ERR("The item action failed."); } static struct grid_data _gdata = { diff --git a/src/grid/grid_movie.c b/src/grid/grid_movie.c index 6c21ee3..90c2c6d 100644 --- a/src/grid/grid_movie.c +++ b/src/grid/grid_movie.c @@ -20,7 +20,7 @@ #include "define.h" #include "grid.h" -#include "data/media.h" +#include "datamgr.h" #define STR_MOVIE "Movie" #define STYLE_MOVIE "style.movie" @@ -48,20 +48,28 @@ static struct color colors[] = static char *_text_get(void *data, Evas_Object *obj, const char *part) { - app_media *am; + struct datamgr *dmgr; + char *name = NULL; if (!data) { _ERR("Data is NULL."); return NULL; } - am = data; - return strdup(get_media_name(am)); + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_data) + return NULL; + + name = dmgr->get_data(data, DATA_NAME); + if (!name) + return NULL; + + return strdup(name); } static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) { - app_media *am; + struct datamgr *dmgr; Evas_Object *icon, *img, *text_bg; char *thumbnail; int idx; @@ -70,10 +78,13 @@ static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) _ERR("Invalid argument."); return NULL; } - am = data; + + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_data) + return NULL; if (!strcmp(part, PART_THUMB_ICON)) { - thumbnail = get_media_thumbnail(am); + thumbnail = dmgr->get_data(data, DATA_THUMBNAIL); if (!thumbnail) { icon = elm_icon_add(obj); @@ -82,7 +93,8 @@ static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) return NULL; } - elm_icon_thumb_set(icon, get_media_path(am), NULL); + elm_icon_thumb_set(icon, + dmgr->get_data(data, DATA_PATH), NULL); elm_image_aspect_fixed_set(icon, EINA_FALSE); return icon; @@ -129,27 +141,44 @@ static struct grid_class _gclass = { static Eina_List *_create_item_list(void) { - return get_media_favorite_list(CONTENTS_MOVIE); + struct datamgr *dmgr; - return NULL; + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_favorites) + return NULL; + + return dmgr->get_favorites(ITEM_MOVIE); } static void _destroy_item_list(Eina_List *list) { + struct datamgr *dmgr; + if (!list) return; - free_media_favorite_list(list); + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->free_favorites) + return; + + dmgr->free_favorites(list); } static void _item_selected(Elm_Object_Item *it) { + struct datamgr *dmgr; + if (!it) { _ERR("Invalid argument."); return; } - /* FIXME: The mediahub should be implemented. */ + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->action) + return; + + if (!dmgr->action(it)) + _ERR("The item action failed."); } static struct grid_data _gdata = { diff --git a/src/grid/grid_music.c b/src/grid/grid_music.c index ad64526..5c10232 100644 --- a/src/grid/grid_music.c +++ b/src/grid/grid_music.c @@ -22,7 +22,7 @@ #include "define.h" #include "grid.h" -#include "data/media.h" +#include "datamgr.h" #define STR_MUSIC "Music" #define STYLE_MUSIC "style.music" @@ -31,27 +31,34 @@ static char *_text_get(void *data, Evas_Object *obj, const char *part) { - app_media *am; + struct datamgr *dmgr; + char *text = NULL; if (!data) { _ERR("Data is NULL."); return NULL; } - am = data; + + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_data) + return NULL; if (!strcmp(part, PART_THUMB_TEXT)) - return strdup(get_media_name(am)); + text = dmgr->get_data(data, DATA_NAME); else if (!strcmp(part, PART_THUMB_SUBTEXT1)) - return strdup(get_media_artist(am)); + text = dmgr->get_data(data, DATA_ARTIST); else if (!strcmp(part, PART_THUMB_SUBTEXT2)) - return strdup(get_media_album_name(am)); + text = dmgr->get_data(data, DATA_ALBUM_NAME); + + if (!text) + return NULL; - return NULL; + return strdup(text); } static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) { - app_media *am; + struct datamgr *dmgr; Evas_Object *icon, *img; char *thumbnail; @@ -59,9 +66,12 @@ static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) _ERR("Invalid argument."); return NULL; } - am = data; - thumbnail = get_media_thumbnail(am); + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_data) + return NULL; + + thumbnail = dmgr->get_data(data, DATA_THUMBNAIL); if (!thumbnail) { icon = elm_icon_add(obj); @@ -70,7 +80,7 @@ static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *part) return NULL; } - elm_icon_thumb_set(icon, get_media_path(am), NULL); + elm_icon_thumb_set(icon, dmgr->get_data(data, DATA_PATH), NULL); elm_image_aspect_fixed_set(icon, EINA_FALSE); return icon; @@ -99,25 +109,44 @@ static struct grid_class _gclass = { static Eina_List *_create_item_list(void) { - return get_media_favorite_list(CONTENTS_MUSIC); + struct datamgr *dmgr; + + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_favorites) + return NULL; + + return dmgr->get_favorites(ITEM_MUSIC); } static void _destroy_item_list(Eina_List *list) { + struct datamgr *dmgr; + if (!list) return; - free_media_favorite_list(list); + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->free_favorites) + return; + + dmgr->free_favorites(list); } static void _item_selected(Elm_Object_Item *it) { + struct datamgr *dmgr; + if (!it) { _ERR("Invalid argument."); return; } - /* FIXME: The mediahub should be implemented. */ + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->action) + return; + + if (!dmgr->action(it)) + _ERR("The item action failed."); } static struct grid_data _gdata = { diff --git a/src/view/view_base.c b/src/view/view_base.c index 51abeb0..f92bb25 100644 --- a/src/view/view_base.c +++ b/src/view/view_base.c @@ -23,9 +23,8 @@ #include "define.h" #include "utils.h" -#include "data/media.h" -#include "data/app.h" #include "grid.h" +#include "datamgr.h" const char *str_count[] = { STR_CNT_TV, @@ -57,6 +56,7 @@ static struct grid_data *(*_get_grid_data[COUNT_MENU])(void) = { static void _draw_content_count(Evas_Object *base, int count, int id) { + struct datamgr *dmgr; char str[SIZE_STR]; if (!base) { @@ -70,10 +70,14 @@ static void _draw_content_count(Evas_Object *base, int count, int id) elm_object_signal_emit(base, SIG_INVISIBLE, PART_COUNT_DIVIDE_LINE); if (!strcmp(str_count[id], STR_CNT_GALLERY)) { + dmgr = get_media_datamgr(); + if (!dmgr || !dmgr->get_count) + return; + snprintf(str, sizeof(str), "%d %s %d %s", - get_media_favorite_image_count(), - STR_CNT_GALLERY_IMAGE, - get_media_favorite_video_count(), + dmgr->get_count(ITEM_PHOTO), + STR_CNT_GALLERY_PHOTO, + dmgr->get_count(ITEM_VIDEO), STR_CNT_GALLERY_VIDEO); elm_object_part_text_set(base, PART_CONTENTS_SUBCOUNT, str); elm_object_signal_emit(base, SIG_VISIBLE,