Datamgr: Applied the datamgr to provide consistent interface to user of data 71/44471/3
authorHyojung Jo <hj903.jo@samsung.com>
Wed, 22 Jul 2015 09:01:42 +0000 (18:01 +0900)
committerHyojung Jo <hj903.jo@samsung.com>
Thu, 23 Jul 2015 04:40:43 +0000 (13:40 +0900)
Change-Id: I54f939553865504f9e664babf63d9cc456269c53
Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
include/data/app.h [deleted file]
include/data/media.h [deleted file]
include/datamgr.h [new file with mode: 0644]
include/define.h
src/data/app.c
src/data/media.c
src/grid/grid_apps.c
src/grid/grid_gallery.c
src/grid/grid_movie.c
src/grid/grid_music.c
src/view/view_base.c

diff --git a/include/data/app.h b/include/data/app.h
deleted file mode 100644 (file)
index 65eda56..0000000
+++ /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 <Elementary.h>
-
-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 (file)
index ee81983..0000000
+++ /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 <Elementary.h>
-#include <app_contents.h>
-#include <media_info.h>
-#include <app_media.h>
-
-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 (file)
index 0000000..3183fd3
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef __AIR_FAVORITE_DATAMGR_H__
+#define __AIR_FAVORITE_DATAMGR_H__
+
+#include <Elementary.h>
+
+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__ */
index 0ea53e9..46b294e 100644 (file)
@@ -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"
index 35219be..e883809 100644 (file)
 #include <glib.h>
 #include <stdlib.h>
 #include <pkgmgr-info.h>
+#include <aul.h>
 #include <app_contents.h>
 #include <app_debug.h>
 
-#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;
+}
index e9618cf..8cc2dce 100644 (file)
 
 #include <glib.h>
 #include <media_content.h>
+#include <app_contents.h>
+#include <app_media.h>
 #include <app_debug.h>
 
-#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;
+}
index 305ac0b..3f72a0d 100644 (file)
@@ -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 = {
index 7739641..98637e5 100644 (file)
@@ -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"
 
 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 = {
index 6c21ee3..90c2c6d 100644 (file)
@@ -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 = {
index ad64526..5c10232 100644 (file)
@@ -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"
 
 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 = {
index 51abeb0..f92bb25 100644 (file)
@@ -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,