add data_photo for getting photo contents 67/43667/2
authorSoohye Shin <soohye.shin@samsung.com>
Mon, 13 Jul 2015 06:19:24 +0000 (15:19 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Mon, 13 Jul 2015 08:30:26 +0000 (17:30 +0900)
Change-Id: I0a4a59295c72ef3bfb283163c92b6b5c76d22b64
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
src/data/data_photo.c

index 6d704db..23a859e 100644 (file)
 
 #include <app_debug.h>
 #include <Eina.h>
+#include <media_content.h>
 
 #include "data_photo.h"
 #include "datamgr.h"
 
+#define MEDIA_CONDITION_IMAGE "MEDIA_TYPE=0"
+
+static bool _get_media(media_info_h m, void *data)
+{
+       struct datamgr_item *di;
+       int r;
+       char *thumb, *file;
+       Eina_List **list;
+
+       if (!m) {
+               _ERR("Invalid argument");
+               return false;
+       }
+
+       list = data;
+
+       r = media_info_get_file_path(m, &file);
+       if (r != MEDIA_CONTENT_ERROR_NONE || !file) {
+               _ERR("failed to get file");
+               return false;
+       }
+
+       r = media_info_get_thumbnail_path(m, &thumb);
+       if (r != MEDIA_CONTENT_ERROR_NONE || !thumb) {
+               _ERR("failed to get thumb");
+               return false;
+       }
+
+       di = calloc(1, sizeof(*di));
+       if (!di) {
+               _ERR("failed to callco photo item");
+               return false;
+       }
+
+       di->icon = strdup(thumb);
+       di->focus_icon = strdup(file);
+
+       *list = eina_list_append(*list, di);
+
+       return true;
+}
+
+static void _unload_photo(struct datamgr *dm)
+{
+       struct datamgr_item *di;
+
+       EINA_LIST_FREE(dm->list, di) {
+               free(di->icon);
+               free(di->focus_icon);
+
+               free(di);
+       }
+
+       dm->list = NULL;
+}
+
 static Eina_List *_get_items(struct datamgr *dm)
 {
+       filter_h f;
+       int r;
+
        if (!dm) {
                _ERR("Invalid argument");
                return NULL;
        }
 
+       _unload_photo(dm);
+
+       r = media_filter_create(&f);
+       if (r != MEDIA_CONTENT_ERROR_NONE) {
+               _ERR("failed to created filter");
+               return NULL;
+       }
+
+       media_filter_set_condition(f, MEDIA_CONDITION_IMAGE,
+                       MEDIA_CONTENT_COLLATE_DEFAULT);
+
+       r = media_info_foreach_media_from_db(f,
+                       _get_media, &dm->list);
+       if (r != MEDIA_CONTENT_ERROR_NONE)
+               _ERR("folder foreach failed");
+
+       media_filter_destroy(f);
+
+
        return dm->list;
 }
 
 static bool _init(struct datamgr *dm)
 {
+       int r;
+
        if (!dm) {
                _ERR("Invalid argument");
                return false;
        }
 
+       r = media_content_connect();
+       if (r != MEDIA_CONTENT_ERROR_NONE) {
+               _ERR("failed to connect media content");
+               return false;
+       }
+
        return true;
 }
 
 static void _fini(struct datamgr *dm)
 {
-       struct datamgr_item *di;
-
        if (!dm) {
                _ERR("Invalid argument");
                return;
        }
 
-       EINA_LIST_FREE(dm->list, di) {
-               free(di->icon);
+       _unload_photo(dm);
 
-               free(di);
-       }
+       media_content_disconnect();
 }
 
 static struct data_class dclass = {