#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 = {