2 * Copyright 2012 Samsung Electronics Co., Ltd
\r
4 * Licensed under the Flora License, Version 1.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.tizenopensource.org/license
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
17 #include <media_content.h>
\r
20 #include "gl-local-data.h"
\r
21 #include "gl-debug.h"
\r
23 typedef struct _gl_transfer_data_t gl_transfer_data_s;
\r
25 struct _gl_transfer_data_t {
\r
32 static int __gl_local_data_create_filter(gl_filter_s *condition, filter_h *filter)
\r
34 GL_CHECK_VAL(filter, -1);
\r
35 GL_CHECK_VAL(condition, -1);
\r
37 filter_h tmp_filter = NULL;
\r
38 ret = media_filter_create(&tmp_filter);
\r
39 if(ret != MEDIA_CONTENT_ERROR_NONE) {
\r
40 gl_dbgE("Fail to create filter");
\r
44 if (strlen(condition->cond) > 0) {
\r
45 ret = media_filter_set_condition(tmp_filter, condition->cond,
\r
46 condition->collate_type);
\r
47 if(ret != MEDIA_CONTENT_ERROR_NONE) {
\r
48 gl_dbgE("Fail to set condition");
\r
49 goto GL_LOCAL_FAILED;
\r
53 if (strlen(condition->sort_keyword) > 0) {
\r
54 ret = media_filter_set_order(tmp_filter, condition->sort_type,
\r
55 condition->sort_keyword,
\r
56 condition->collate_type);
\r
57 if(ret != MEDIA_CONTENT_ERROR_NONE) {
\r
58 gl_dbgE("Fail to set order");
\r
59 goto GL_LOCAL_FAILED;
\r
63 if (condition->offset != -1 && condition->count != -1 &&
\r
64 condition->count > 0) {
\r
65 ret = media_filter_set_offset(tmp_filter, condition->offset,
\r
67 if(ret != MEDIA_CONTENT_ERROR_NONE) {
\r
68 gl_dbgE("Fail to set offset");
\r
69 goto GL_LOCAL_FAILED;
\r
73 *filter = tmp_filter;
\r
79 media_filter_destroy(*filter);
\r
86 static int __gl_local_data_destroy_filter(filter_h filter)
\r
88 GL_CHECK_VAL(filter, -1);
\r
89 if (media_filter_destroy(filter) != MEDIA_CONTENT_ERROR_NONE) {
\r
90 gl_dbgE("Failed to destroy filter!");
\r
97 static bool __gl_local_data_get_album_list_cb(media_folder_h folder,
\r
100 GL_CHECK_FALSE(data);
\r
101 gl_transfer_data_s *tmp_data = (gl_transfer_data_s *)data;
\r
102 GL_CHECK_FALSE(tmp_data->userdata);
\r
103 GL_CHECK_FALSE(tmp_data->filter);
\r
104 GL_CHECK_FALSE(folder);
\r
106 Eina_List **elist = (Eina_List **)(tmp_data->userdata);
\r
107 gl_album_s *album = NULL;
\r
109 album = (gl_album_s *)calloc(1, sizeof(gl_album_s));
\r
110 GL_CHECK_FALSE(album);
\r
111 album->gtype = GL_TYPE_ALBUM;
\r
113 if (media_folder_clone(&(album->folder_h), folder) != MEDIA_CONTENT_ERROR_NONE) {
\r
114 gl_dbgE("Clone folder handle failed!");
\r
115 goto GL_LOCAL_FAILED;
\r
118 if (media_folder_get_folder_id(folder, &(album->uuid)) != MEDIA_CONTENT_ERROR_NONE) {
\r
119 gl_dbgE("Get folder id failed!");
\r
120 goto GL_LOCAL_FAILED;
\r
123 if (media_folder_get_modified_time(folder, &(album->mtime)) != MEDIA_CONTENT_ERROR_NONE) {
\r
124 gl_dbgE("Get modified time failed!");
\r
125 goto GL_LOCAL_FAILED;
\r
128 if (media_folder_get_storage_type(folder, (media_content_storage_e *)&(album->type)) != MEDIA_CONTENT_ERROR_NONE) {
\r
129 gl_dbgE("Get storage type failed!");
\r
130 goto GL_LOCAL_FAILED;
\r
133 if (media_folder_get_name(folder, &(album->display_name)) != MEDIA_CONTENT_ERROR_NONE) {
\r
134 gl_dbgE("Get folder name failed!");
\r
135 goto GL_LOCAL_FAILED;
\r
138 if (media_folder_get_path(folder, &(album->path)) != MEDIA_CONTENT_ERROR_NONE) {
\r
139 gl_dbgE("Get folder name failed!");
\r
140 goto GL_LOCAL_FAILED;
\r
143 if (media_folder_get_media_count_from_db(album->uuid, tmp_data->filter, &(album->count)) != MEDIA_CONTENT_ERROR_NONE) {
\r
144 gl_dbgE("Failed to get count[uuid: %s]", album->uuid);
\r
145 goto GL_LOCAL_FAILED;
\r
148 *elist = eina_list_append(*elist, album);
\r
154 _gl_data_type_free_glitem((void **)(&album));
\r
158 static bool __gl_local_data_get_media_list_cb(media_info_h media, void *data)
\r
160 GL_CHECK_FALSE(data);
\r
161 gl_transfer_data_s *tmp_data = (gl_transfer_data_s *)data;
\r
162 GL_CHECK_FALSE(tmp_data->userdata);
\r
163 GL_CHECK_FALSE(media);
\r
164 gl_media_s *item = NULL;
\r
165 gl_image_s *image_info = NULL;
\r
166 gl_video_s *video_info = NULL;
\r
167 image_meta_h image_handle = NULL;
\r
168 video_meta_h video_handle = NULL;
\r
172 Eina_List **elist = (Eina_List **)(tmp_data->userdata);
\r
174 item = (gl_media_s *)calloc(1, sizeof(gl_media_s));
\r
175 GL_CHECK_FALSE(item);
\r
176 item->gtype = GL_TYPE_MEDIA;
\r
178 if (media_info_clone(&(item->media_h), media) != MEDIA_CONTENT_ERROR_NONE) {
\r
179 gl_dbgE("Clone media handle failed!");
\r
180 goto GL_LOCAL_FAILED;
\r
183 if (media_info_get_media_id(media, &(item->uuid)) != MEDIA_CONTENT_ERROR_NONE) {
\r
184 gl_dbgE("Get media id failed!");
\r
185 goto GL_LOCAL_FAILED;
\r
188 if (media_info_get_display_name(media, &(item->display_name)) != MEDIA_CONTENT_ERROR_NONE) {
\r
189 gl_dbgE("Get media display name failed!");
\r
190 goto GL_LOCAL_FAILED;
\r
193 if (media_info_get_file_path(media, &(item->file_url)) != MEDIA_CONTENT_ERROR_NONE) {
\r
194 gl_dbgE("Get media file path failed!");
\r
195 goto GL_LOCAL_FAILED;
\r
198 if (media_info_get_media_type(media, (media_content_type_e *)&(item->type)) != MEDIA_CONTENT_ERROR_NONE) {
\r
199 gl_dbgE("Get media type failed!");
\r
200 goto GL_LOCAL_FAILED;
\r
202 if (media_info_get_thumbnail_path(media, &(item->thumb_url)) != MEDIA_CONTENT_ERROR_NONE) {
\r
203 gl_dbgE("Get media thumbnail path failed!");
\r
204 goto GL_LOCAL_FAILED;
\r
206 gl_dbg("thumb_url: %s", item->thumb_url);
\r
208 if (media_info_get_modified_time(media, &(item->mtime)) != MEDIA_CONTENT_ERROR_NONE) {
\r
209 gl_dbgE("Get media modified time failed!");
\r
210 goto GL_LOCAL_FAILED;
\r
214 if (!tmp_data->with_meta)
\r
215 goto GL_LOCAL_SUCCESS;
\r
217 if (item->type == MEDIA_CONTENT_TYPE_IMAGE) {
\r
218 ret = media_info_get_image(media, &image_handle);
\r
219 if (ret != MEDIA_CONTENT_ERROR_NONE || image_handle == NULL) {
\r
220 gl_dbgE("Failed to get image handle[%d]!", ret);
\r
221 goto GL_LOCAL_FAILED;
\r
224 image_info = (gl_image_s *)calloc(1, sizeof(gl_image_s));
\r
225 if (NULL == image_info){
\r
226 gl_dbgE("Failed to calloc!");
\r
227 goto GL_LOCAL_FAILED;
\r
229 item->image_info = image_info;
\r
231 if (image_meta_clone(&(image_info->image_h), image_handle) != MEDIA_CONTENT_ERROR_NONE) {
\r
232 gl_dbgE("Clone image handle failed!");
\r
233 goto GL_LOCAL_FAILED;
\r
236 if (image_meta_get_media_id(image_handle, &(image_info->media_uuid)) != MEDIA_CONTENT_ERROR_NONE) {
\r
237 gl_dbgE("Get image id failed!");
\r
238 goto GL_LOCAL_FAILED;
\r
241 if (image_meta_get_orientation(image_handle, (media_content_orientation_e *)&(image_info->orientation)) != MEDIA_CONTENT_ERROR_NONE) {
\r
242 gl_dbgE("Get image orientation failed!");
\r
243 goto GL_LOCAL_FAILED;
\r
246 if (image_meta_destroy(image_handle) != MEDIA_CONTENT_ERROR_NONE) {
\r
247 gl_dbgE("Destroy image handle failed!");
\r
248 goto GL_LOCAL_FAILED;
\r
250 } else if (item->type == MEDIA_CONTENT_TYPE_VIDEO) {
\r
251 ret = media_info_get_video(media, &video_handle);
\r
252 if (ret != MEDIA_CONTENT_ERROR_NONE || video_handle == NULL) {
\r
253 gl_dbgE("Failed to get video handle[%d]!", ret);
\r
254 goto GL_LOCAL_FAILED;
\r
257 video_info = (gl_video_s *)calloc(1, sizeof(gl_video_s));
\r
258 if (NULL == video_info) {
\r
259 gl_dbgE("Failed to calloc!");
\r
260 goto GL_LOCAL_FAILED;
\r
262 item->video_info = video_info;
\r
264 if (video_meta_clone(&(video_info->video_h), video_handle) != MEDIA_CONTENT_ERROR_NONE) {
\r
265 gl_dbgE("Clone video handle failed!");
\r
266 goto GL_LOCAL_FAILED;
\r
269 if (video_meta_get_media_id(video_handle, &(video_info->media_uuid)) != MEDIA_CONTENT_ERROR_NONE) {
\r
270 gl_dbgE("Get video id failed!");
\r
271 goto GL_LOCAL_FAILED;
\r
274 if (video_meta_get_title(video_handle, &(video_info->title)) != MEDIA_CONTENT_ERROR_NONE) {
\r
275 gl_dbgE("Get video title failed!");
\r
276 goto GL_LOCAL_FAILED;
\r
279 if (video_meta_get_duration(video_handle, &(video_info->duration)) != MEDIA_CONTENT_ERROR_NONE) {
\r
280 gl_dbgE("Get video duration failed!");
\r
281 goto GL_LOCAL_FAILED;
\r
284 if (video_meta_get_played_time(video_handle, &(video_info->last_played_pos)) != MEDIA_CONTENT_ERROR_NONE) {
\r
285 gl_dbgE("Get video last played position failed!");
\r
286 goto GL_LOCAL_FAILED;
\r
289 if (video_meta_destroy(video_handle) != MEDIA_CONTENT_ERROR_NONE) {
\r
290 gl_dbgE("Destroy video handle failed!");
\r
291 goto GL_LOCAL_FAILED;
\r
294 /* Get bookmark elist in case of video */
\r
295 if (video_info->media_uuid) {
\r
296 video_info->bookmarks = 0;
\r
298 ret = media_info_get_bookmark_count_from_db(video_info->media_uuid,
\r
301 if (ret != MEDIA_CONTENT_ERROR_NONE)
\r
302 gl_dbgE("Failed to get bookmark[%d]", ret);
\r
304 video_info->bookmarks = count;
\r
307 gl_dbgE("Wrong media type[%d]!", item->type);
\r
312 /* Get extension */
\r
313 ext = strrchr(item->file_url, '.');
\r
315 item->ext = strdup(ext + 1);
\r
317 gl_dbgE("Extension is NULL!");
\r
319 /* Save album uuid */
\r
320 if (tmp_data->album_id)
\r
321 item->album_uuid = strdup(tmp_data->album_id);
\r
323 item->album_uuid = NULL;
\r
325 *elist = eina_list_append(*elist, item);
\r
331 image_meta_destroy(image_handle);
\r
333 video_meta_destroy(video_handle);
\r
335 _gl_data_type_free_glitem((void **)(&item));
\r
339 /* Connect to media-content database */
\r
340 int _gl_local_data_connect(void)
\r
343 ret = media_content_connect();
\r
344 if(ret == MEDIA_CONTENT_ERROR_NONE) {
\r
345 gl_dbg("DB connection is success");
\r
348 gl_dbgE("DB connection is failed[%d]!", ret);
\r
353 /* Disconnect from media-content database */
\r
354 int _gl_local_data_disconnect(void)
\r
357 ret = media_content_disconnect();
\r
358 if(ret == MEDIA_CONTENT_ERROR_NONE) {
\r
359 gl_dbg("DB disconnection is success");
\r
362 gl_dbgE("DB disconnection is failed[%d]!", ret);
\r
367 int _gl_local_data_get_album_by_path(char *path, gl_album_s **album)
\r
369 GL_CHECK_VAL(path, -1);
\r
370 GL_CHECK_VAL(album, -1);
\r
372 Eina_List *list = NULL;
\r
373 gl_filter_s condition;
\r
374 gl_album_s *_item = NULL;
\r
377 if (strlen(path) <=0) {
\r
378 gl_dbgE("Invalid path!");
\r
381 gl_dbg("path: %s", path);
\r
383 memset(&condition, 0x00, sizeof(gl_filter_s));
\r
384 g_strlcpy(condition.cond, GL_CONDITION_IMAGE_VIDEO, CONDITION_LENGTH);
\r
385 g_strlcpy(condition.sort_keyword, MEDIA_MODIFIED_TIME, KEYWORD_LENGTH);
\r
386 condition.collate_type = MEDIA_CONTENT_COLLATE_DEFAULT;
\r
387 condition.sort_type = MEDIA_CONTENT_ORDER_DESC;
\r
388 condition.offset = -1;
\r
389 condition.count = -1;
\r
390 condition.with_meta = false;
\r
392 snprintf(condition.cond, CONDITION_LENGTH,
\r
393 "(%s=0 OR %s=1) AND %s=\'%s\'", MEDIA_TYPE, MEDIA_TYPE,
\r
394 FOLDER_PATH, path);
\r
396 ret = _gl_local_data_get_album_list(&condition, &list);
\r
397 if (ret != 0 || NULL == list) {
\r
398 gl_dbgE("Failed to get album list[%d]!", ret);
\r
400 } else if (NULL != list) {
\r
401 *album = eina_list_nth(list, 0);
\r
406 /* Free other items */
\r
408 int len = eina_list_count(list);
\r
409 gl_dbg("len: %d", len);
\r
411 for(; i < len; i++) {
\r
412 _item = eina_list_nth(list, i);
\r
413 _gl_data_type_free_glitem((void **)(&_item));
\r
416 eina_list_free(list);
\r
422 int _gl_local_data_get_album_list(gl_filter_s *condition, Eina_List **elist)
\r
424 GL_CHECK_VAL(elist, -1);
\r
425 GL_CHECK_VAL(condition, -1);
\r
427 filter_h filter = NULL;
\r
429 ret = __gl_local_data_create_filter(condition, &filter);
\r
431 gl_dbgE("Create filter failed[%d]!", ret);
\r
435 filter_h media_filter = NULL;
\r
436 gl_filter_s media_condition;
\r
437 memset(&media_condition, 0x00, sizeof(gl_filter_s));
\r
438 g_strlcpy(media_condition.cond, GL_CONDITION_IMAGE_VIDEO,
\r
440 media_condition.sort_type = MEDIA_CONTENT_ORDER_DESC;
\r
441 g_strlcpy(media_condition.sort_keyword, MEDIA_MODIFIED_TIME,
\r
443 media_condition.collate_type = MEDIA_CONTENT_COLLATE_DEFAULT;
\r
444 media_condition.offset = -1;
\r
445 media_condition.count = -1;
\r
446 media_condition.with_meta = false;
\r
448 ret = __gl_local_data_create_filter(&media_condition, &media_filter);
\r
450 __gl_local_data_destroy_filter(filter);
\r
451 gl_dbgE("Create filter failed[%d]!", ret);
\r
455 gl_transfer_data_s tran_data;
\r
456 memset(&tran_data, 0x00, sizeof(gl_transfer_data_s));
\r
457 tran_data.userdata = (void **)elist;
\r
458 tran_data.filter = media_filter;
\r
459 tran_data.album_id = NULL;
\r
460 tran_data.with_meta = false;
\r
462 gl_dbg("Get folders--start");
\r
463 ret = media_folder_foreach_folder_from_db(filter,
\r
464 __gl_local_data_get_album_list_cb,
\r
466 gl_dbg("Get folders---over");
\r
468 __gl_local_data_destroy_filter(media_filter);
\r
469 __gl_local_data_destroy_filter(filter);
\r
471 if (ret != MEDIA_CONTENT_ERROR_NONE) {
\r
472 gl_dbgE("Failed to get all folders[%d]!", ret);
\r
479 int _gl_local_data_get_media_by_id(char *media_id, gl_media_s **mitem)
\r
481 GL_CHECK_VAL(mitem, -1);
\r
483 if (media_id == NULL) {
\r
484 gl_dbg("Create a empty media");
\r
485 _gl_data_type_new_media(mitem);
\r
490 Eina_List *list = NULL;
\r
491 gl_media_s *_mitem = NULL;
\r
492 media_info_h media_h = NULL;
\r
494 gl_dbg("media id: %s", media_id);
\r
496 ret = media_info_get_media_from_db(media_id, &media_h);
\r
497 if (ret != MEDIA_CONTENT_ERROR_NONE || media_h == NULL) {
\r
498 gl_dbgE("Failed to get media handle[%d]!", ret);
\r
502 gl_transfer_data_s tran_data;
\r
503 memset(&tran_data, 0x00, sizeof(gl_transfer_data_s));
\r
504 tran_data.userdata = (void **)&list;
\r
505 tran_data.filter = NULL;
\r
506 tran_data.album_id = NULL;
\r
507 tran_data.with_meta = false;
\r
509 bool b_ret = __gl_local_data_get_media_list_cb(media_h, &tran_data);
\r
511 media_info_destroy(media_h);
\r
513 if (b_ret && list) {
\r
514 *mitem = eina_list_nth(list, 0);
\r
518 gl_dbgE("Failed to get media list!");
\r
522 /* Free other items */
\r
524 int len = eina_list_count(list);
\r
525 gl_dbg("len: %d", len);
\r
527 for(; i < len; i++) {
\r
528 _mitem = eina_list_nth(list, i);
\r
529 _gl_data_type_free_glitem((void **)(&_mitem));
\r
532 eina_list_free(list);
\r
538 int _gl_local_data_get_media_by_path(const char *path, gl_media_s **mitem)
\r
540 GL_CHECK_VAL(mitem, -1);
\r
541 GL_CHECK_VAL(path, -1);
\r
543 Eina_List *list = NULL;
\r
544 gl_filter_s condition;
\r
545 gl_media_s *_mitem = NULL;
\r
548 if (strlen(path) <=0) {
\r
549 gl_dbgE("Invalid path!");
\r
552 gl_dbg("path: %s", path);
\r
554 memset(&condition,0x00,sizeof(gl_filter_s));
\r
555 g_strlcpy(condition.cond, GL_CONDITION_IMAGE_VIDEO, CONDITION_LENGTH);
\r
556 g_strlcpy(condition.sort_keyword, MEDIA_MODIFIED_TIME, KEYWORD_LENGTH);
\r
557 condition.sort_type = MEDIA_CONTENT_ORDER_DESC;
\r
558 condition.offset = -1;
\r
559 condition.count = -1;
\r
560 condition.with_meta = true;
\r
562 snprintf(condition.cond, CONDITION_LENGTH,
\r
563 "(%s=0 OR %s=1) AND %s=\'%s\'", MEDIA_TYPE, MEDIA_TYPE,
\r
565 ret = _gl_local_data_get_all_albums_media_list(&condition, &list);
\r
566 if (ret != 0 || NULL == list) {
\r
567 gl_dbgE("Failed to get all albums[%d]!", ret);
\r
569 } else if (NULL != list) {
\r
570 *mitem = eina_list_nth(list, 0);
\r
575 /* Free other items */
\r
577 int len = eina_list_count(list);
\r
578 gl_dbg("len: %d", len);
\r
580 for(; i < len; i++) {
\r
581 _mitem = eina_list_nth(list, i);
\r
582 _gl_data_type_free_glitem((void **)(&_mitem));
\r
585 eina_list_free(list);
\r
591 int _gl_local_data_get_media_count(const char *cluster_id, gl_filter_s *condition,
\r
594 GL_CHECK_VAL(cluster_id, -1);
\r
595 GL_CHECK_VAL(condition, -1);
\r
596 GL_CHECK_VAL(item_cnt, -1);
\r
598 filter_h filter = NULL;
\r
600 ret = __gl_local_data_create_filter(condition, &filter);
\r
602 gl_dbgE("Create filter failed[%d]!", ret);
\r
606 gl_dbg("Get media count--start");
\r
607 ret = media_folder_get_media_count_from_db(cluster_id, filter, item_cnt);
\r
608 gl_dbg("Get media count---over");
\r
610 __gl_local_data_destroy_filter(filter);
\r
612 if (ret != MEDIA_CONTENT_ERROR_NONE) {
\r
613 gl_dbgE("Failed to get media count[%d]!", ret);
\r
620 int _gl_local_data_get_all_media_count(gl_filter_s *condtion, int *item_cnt)
\r
622 GL_CHECK_VAL(condtion, -1);
\r
623 GL_CHECK_VAL(item_cnt, -1);
\r
625 filter_h filter = NULL;
\r
627 ret = __gl_local_data_create_filter(condtion, &filter);
\r
629 gl_dbgE("Create filter failed[%d]!", ret);
\r
633 gl_dbg("Get media count--start");
\r
634 ret = media_info_get_media_count_from_db(filter, item_cnt);
\r
635 gl_dbg("Get media count---over");
\r
637 __gl_local_data_destroy_filter(filter);
\r
639 if (ret != MEDIA_CONTENT_ERROR_NONE) {
\r
640 gl_dbgE("Failed to get media count[%d]", ret);
\r
647 int _gl_local_data_get_album_media_list(gl_filter_s *condition,
\r
648 const char *album_id, Eina_List **elist)
\r
650 GL_CHECK_VAL(elist, -1);
\r
651 GL_CHECK_VAL(album_id, -1);
\r
652 GL_CHECK_VAL(condition, -1);
\r
653 gl_dbg("album id: %s", album_id);
\r
656 filter_h filter = NULL;
\r
657 ret = __gl_local_data_create_filter(condition, &filter);
\r
659 gl_dbgE("Create filter failed!");
\r
663 gl_transfer_data_s tran_data;
\r
664 memset(&tran_data, 0x00, sizeof(gl_transfer_data_s));
\r
665 tran_data.userdata = (void **)elist;
\r
666 tran_data.filter = NULL;
\r
667 tran_data.album_id = (char *)album_id;
\r
668 tran_data.with_meta = condition->with_meta;
\r
670 gl_dbg("Get medias--start");
\r
671 ret = media_folder_foreach_media_from_db(album_id, filter,
\r
672 __gl_local_data_get_media_list_cb,
\r
674 gl_dbg("Get medias--start");
\r
676 __gl_local_data_destroy_filter(filter);
\r
678 if (ret != MEDIA_CONTENT_ERROR_NONE) {
\r
679 gl_dbgE("Failed to get medias[%d]!", ret);
\r
686 int _gl_local_data_get_all_albums_media_list(gl_filter_s *condition,
\r
689 GL_CHECK_VAL(elist, -1);
\r
690 GL_CHECK_VAL(condition, -1);
\r
692 filter_h filter = NULL;
\r
694 ret = __gl_local_data_create_filter(condition, &filter);
\r
696 gl_dbgE("Create filter failed!");
\r
700 gl_transfer_data_s tran_data;
\r
701 memset(&tran_data, 0x00, sizeof(gl_transfer_data_s));
\r
702 tran_data.userdata = (void **)elist;
\r
703 tran_data.filter = NULL;
\r
704 tran_data.album_id = NULL;
\r
705 tran_data.with_meta = condition->with_meta;
\r
707 gl_dbg("Get medias--start");
\r
708 ret = media_info_foreach_media_from_db(filter,
\r
709 __gl_local_data_get_media_list_cb,
\r
711 gl_dbg("Get medias--start");
\r
713 __gl_local_data_destroy_filter(filter);
\r
715 if (ret != MEDIA_CONTENT_ERROR_NONE) {
\r
716 gl_dbgE("Failed to get medias[%d]!", ret);
\r
723 int _gl_local_data_delete_album(const char *album_uuid)
\r
725 GL_CHECK_VAL(album_uuid, -1);
\r
726 gl_filter_s filter;
\r
729 memset(&filter, 0x00, sizeof(gl_filter_s));
\r
730 g_strlcpy(filter.cond, GL_CONDITION_IMAGE_VIDEO, CONDITION_LENGTH);
\r
731 filter.sort_type = MEDIA_CONTENT_ORDER_DESC;
\r
732 filter.collate_type = MEDIA_CONTENT_COLLATE_DEFAULT;
\r
733 g_strlcpy(filter.sort_keyword, MEDIA_MODIFIED_TIME, KEYWORD_LENGTH);
\r
734 filter.offset = -1;
\r
736 filter.with_meta = false;
\r
738 Eina_List *itemlist = NULL;
\r
739 gl_media_s *item = NULL;
\r
741 ret = _gl_local_data_get_album_media_list(&filter, album_uuid,
\r
744 gl_dbgE("Get album medias failed[%d]!", ret);
\r
748 EINA_LIST_FREE(itemlist, item) {
\r
749 if (item == NULL) {
\r
750 gl_dbgE("Invalid item!");
\r
754 media_info_delete_from_db(item->uuid);
\r
755 _gl_data_type_free_glitem((void **)&item);
\r
761 int _gl_local_data_add_media(const char *file_url, media_info_h *info)
\r
763 GL_CHECK_VAL(file_url, -1);
\r
765 media_info_h item = NULL;
\r
766 gl_dbg("file_url is %s", file_url);
\r
768 ret = media_info_insert_to_db(file_url, &item);
\r
769 if (ret != MEDIA_CONTENT_ERROR_NONE) {
\r
770 gl_dbgE("Failed to insert media to DB[%d]!", ret);
\r
777 gl_dbgW("Destroy media_info item!");
\r
778 media_info_destroy(item);
\r
784 int _gl_local_data_get_thumb(gl_media_s *mitem, char **thumb)
\r
786 GL_CHECK_VAL(mitem, -1);
\r
787 GL_CHECK_VAL(mitem->media_h, -1);
\r
789 if (media_info_get_thumbnail_path(mitem->media_h, thumb) != MEDIA_CONTENT_ERROR_NONE) {
\r
790 gl_dbgE("Get media thumbnail path failed!");
\r
797 int _gl_local_data_move_media(gl_media_s *mitem, const char *dst)
\r
799 GL_CHECK_VAL(dst, -1);
\r
800 GL_CHECK_VAL(mitem, -1);
\r
801 GL_CHECK_VAL(mitem->media_h, -1);
\r
803 if (media_info_move_media_to_db(mitem->media_h, dst) != MEDIA_CONTENT_ERROR_NONE) {
\r
804 gl_dbgE("Move media thumbnail failed!");
\r
808 gl_dbgW("Checkme: use correct api!");
\r