initial upload for tizen 2.0 beta
[apps/home/gallery.git] / ug / ug-gallery-efl / src / ge-local-data.c
1 /*\r
2   * Copyright 2012  Samsung Electronics Co., Ltd\r
3   *\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
7   *\r
8   *     http://www.tizenopensource.org/license\r
9   *\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
15   */\r
16 \r
17 #include <stdio.h>\r
18 #include <media_content.h>\r
19 #include <glib.h>\r
20 #include <string.h>\r
21 #include "ge-local-data.h"\r
22 #include "ge-debug.h"\r
23 \r
24 typedef struct _ge_transfer_data_t ge_transfer_data_s;\r
25 \r
26 struct _ge_transfer_data_t {\r
27         void **userdata;\r
28         filter_h filter;\r
29         char *album_id;\r
30         bool with_meta;\r
31 };\r
32 \r
33 static int __ge_local_data_create_filter(ge_filter_s *condition, filter_h *filter)\r
34 {\r
35         GE_CHECK_VAL(filter, -1);\r
36         GE_CHECK_VAL(condition, -1);\r
37         int ret = -1;\r
38         filter_h tmp_filter = NULL;\r
39 \r
40         ret = media_filter_create(&tmp_filter);\r
41         if(ret != MEDIA_CONTENT_ERROR_NONE) {\r
42                 ge_dbgE("Fail to create filter!");\r
43                 return -1;\r
44         }\r
45 \r
46         if (strlen(condition->cond) > 0) {\r
47                 ret = media_filter_set_condition(tmp_filter, condition->cond,\r
48                                                  condition->collate_type);\r
49                 if(ret != MEDIA_CONTENT_ERROR_NONE) {\r
50                         ge_dbgE("Fail to set condition!");\r
51                         goto GE_LOCAL_FAILED;\r
52                 }\r
53         }\r
54 \r
55         if (strlen(condition->sort_keyword) > 0) {\r
56                 ret = media_filter_set_order(tmp_filter, condition->sort_type,\r
57                                              condition->sort_keyword,\r
58                                              condition->collate_type);\r
59                 if(ret != MEDIA_CONTENT_ERROR_NONE) {\r
60                         ge_dbgE("Fail to set order!");\r
61                         goto GE_LOCAL_FAILED;\r
62                 }\r
63         }\r
64 \r
65         ge_dbg("offset: %d, count: %d", condition->offset, condition->count);\r
66         if (condition->offset != -1 && condition->count != -1 &&\r
67             condition->count > 0) {\r
68                 ret = media_filter_set_offset(tmp_filter, condition->offset,\r
69                                               condition->count);\r
70                 if(ret != MEDIA_CONTENT_ERROR_NONE) {\r
71                         ge_dbgE("Fail to set offset!");\r
72                         goto GE_LOCAL_FAILED;\r
73                 }\r
74         }\r
75 \r
76         *filter = tmp_filter;\r
77         return 0;\r
78 \r
79  GE_LOCAL_FAILED:\r
80 \r
81         if (tmp_filter) {\r
82                 media_filter_destroy(*filter);\r
83                 tmp_filter = NULL;\r
84                 *filter = NULL;\r
85         }\r
86         return -1;\r
87 }\r
88 \r
89 static int __ge_local_data_destroy_filter(filter_h filter)\r
90 {\r
91         GE_CHECK_VAL(filter, -1);\r
92 \r
93         if (media_filter_destroy(filter) != MEDIA_CONTENT_ERROR_NONE) {\r
94                 ge_dbgE("Failed to destroy filter!");\r
95                 return -1;\r
96         }\r
97 \r
98         return 0;\r
99 }\r
100 \r
101 static bool __ge_local_data_get_album_list_cb(media_folder_h folder,\r
102                                               void *data)\r
103 {\r
104         GE_CHECK_FALSE(data);\r
105         ge_transfer_data_s *tmp_data = (ge_transfer_data_s *)data;\r
106         GE_CHECK_FALSE(tmp_data->userdata);\r
107         GE_CHECK_FALSE(tmp_data->filter);\r
108         GE_CHECK_FALSE(folder);\r
109 \r
110         Eina_List **elist = (Eina_List **)(tmp_data->userdata);\r
111         ge_album_s *album = NULL;\r
112 \r
113         album = (ge_album_s *)calloc(1, sizeof(ge_album_s));\r
114         GE_CHECK_FALSE(album);\r
115         album->gtype = GE_TYPE_ALBUM;\r
116 \r
117         if (media_folder_clone(&(album->folder_h), folder) != MEDIA_CONTENT_ERROR_NONE) {\r
118                 ge_dbgE("Clone folder handle error");\r
119                 goto GE_LOCAL_FAILED;\r
120         }\r
121 \r
122         if (media_folder_get_folder_id(folder, &(album->uuid)) != MEDIA_CONTENT_ERROR_NONE) {\r
123                 ge_dbgE("Get folder id error");\r
124                 goto GE_LOCAL_FAILED;\r
125         }\r
126 \r
127         if (media_folder_get_modified_time(folder, &(album->mtime)) != MEDIA_CONTENT_ERROR_NONE) {\r
128                 ge_dbgE("Get modified time error");\r
129                 goto GE_LOCAL_FAILED;\r
130         }\r
131 \r
132         if (media_folder_get_storage_type(folder, (media_content_storage_e *)&(album->type)) != MEDIA_CONTENT_ERROR_NONE) {\r
133                 ge_dbgE("Get storage type error");\r
134                 goto GE_LOCAL_FAILED;\r
135         }\r
136 \r
137         if (media_folder_get_name(folder, &(album->display_name)) != MEDIA_CONTENT_ERROR_NONE) {\r
138                 ge_dbgE("Get folder name error");\r
139                 goto GE_LOCAL_FAILED;\r
140         }\r
141 \r
142         if (media_folder_get_path(folder, &(album->path)) != MEDIA_CONTENT_ERROR_NONE) {\r
143                 ge_dbgE("Get folder name error");\r
144                 goto GE_LOCAL_FAILED;\r
145         }\r
146 \r
147         if (media_folder_get_media_count_from_db(album->uuid, tmp_data->filter, &(album->count)) != MEDIA_CONTENT_ERROR_NONE) {\r
148                 ge_dbgE("Get media count error, %d", album->count);\r
149                 goto GE_LOCAL_FAILED;\r
150         }\r
151 \r
152         *elist = eina_list_append(*elist, album);\r
153 \r
154         return true;\r
155 \r
156  GE_LOCAL_FAILED:\r
157 \r
158         _ge_data_type_free_geitem((void **)(&album));\r
159         return false;\r
160 }\r
161 \r
162 static bool __ge_local_data_get_media_list_cb(media_info_h media, void *data)\r
163 {\r
164         GE_CHECK_FALSE(data);\r
165         ge_transfer_data_s *tmp_data = (ge_transfer_data_s *)data;\r
166         GE_CHECK_FALSE(tmp_data->userdata);\r
167         GE_CHECK_FALSE(media);\r
168         ge_media_s *item = NULL;\r
169         ge_image_s *image_info = NULL;\r
170         ge_video_s *video_info = NULL;\r
171         image_meta_h image_handle = NULL;\r
172         video_meta_h video_handle = NULL;\r
173         int ret = -1;\r
174 \r
175         Eina_List **elist = (Eina_List **)(tmp_data->userdata);\r
176 \r
177         item = (ge_media_s *)calloc(1, sizeof(ge_media_s));\r
178         GE_CHECK_FALSE(item);\r
179         item->gtype = GE_TYPE_MEDIA;\r
180 \r
181         if (media_info_clone(&(item->media_h), media) != MEDIA_CONTENT_ERROR_NONE) {\r
182                 ge_dbgE("Clone media handle error");\r
183                 goto GE_LOCAL_FAILED;\r
184         }\r
185 \r
186         if (media_info_get_media_id(media, &(item->uuid)) != MEDIA_CONTENT_ERROR_NONE) {\r
187                 ge_dbgE("Get media id error");\r
188                 goto GE_LOCAL_FAILED;\r
189         }\r
190 \r
191         if (media_info_get_display_name(media, &(item->display_name)) != MEDIA_CONTENT_ERROR_NONE) {\r
192                 ge_dbgE("Get media display name error");\r
193                 goto GE_LOCAL_FAILED;\r
194         }\r
195         if (media_info_get_file_path(media, &(item->file_url)) != MEDIA_CONTENT_ERROR_NONE) {\r
196                 ge_dbgE("Get media file path error");\r
197                 goto GE_LOCAL_FAILED;\r
198         }\r
199 \r
200         if (media_info_get_media_type(media, (media_content_type_e *)&(item->type)) != MEDIA_CONTENT_ERROR_NONE) {\r
201                 ge_dbgE("Get media type error");\r
202                 goto GE_LOCAL_FAILED;\r
203         }\r
204 \r
205         if (media_info_get_thumbnail_path(media, &(item->thumb_url)) != MEDIA_CONTENT_ERROR_NONE) {\r
206                 ge_dbgE("Get media thumbnail path error");\r
207                 goto GE_LOCAL_FAILED;\r
208         }\r
209         ge_dbg("thumb_url: %s", item->thumb_url);\r
210 \r
211         if (media_info_get_modified_time(media, &(item->mtime)) != MEDIA_CONTENT_ERROR_NONE) {\r
212                 ge_dbgE("Get media modified time error");\r
213                 goto GE_LOCAL_FAILED;\r
214         }\r
215 \r
216         /* Without meta */\r
217         if (!tmp_data->with_meta)\r
218                 goto GE_LOCAL_SUCCESS;\r
219 \r
220         if (item->type == MEDIA_CONTENT_TYPE_IMAGE) {\r
221                 ret = media_info_get_image(media, &image_handle);\r
222                 if (ret != MEDIA_CONTENT_ERROR_NONE || image_handle == NULL) {\r
223                         ge_dbgE("Failed to get image handle[%d]!", ret);\r
224                         goto GE_LOCAL_FAILED;\r
225                 }\r
226 \r
227                 image_info = (ge_image_s *)calloc(1, sizeof(ge_image_s));\r
228                 if (NULL == image_info){\r
229                         ge_dbgE("calloc failed!");\r
230                         goto GE_LOCAL_FAILED;\r
231                 }\r
232                 item->image_info = image_info;\r
233 \r
234                 if (image_meta_clone(&(image_info->image_h), image_handle) != MEDIA_CONTENT_ERROR_NONE) {\r
235                         ge_dbgE("Clone image handle error");\r
236                         goto GE_LOCAL_FAILED;\r
237 \r
238                 }\r
239                 if (image_meta_get_media_id(image_handle, &(image_info->media_uuid)) != MEDIA_CONTENT_ERROR_NONE) {\r
240                         ge_dbgE("Get image id error");\r
241                         goto GE_LOCAL_FAILED;\r
242                 }\r
243 \r
244                 if (image_meta_get_orientation(image_handle, &(image_info->orientation)) != 0) {\r
245                         ge_dbgE("Get image orientation error");\r
246                         goto GE_LOCAL_FAILED;\r
247                 }\r
248 \r
249                 if (image_meta_destroy(image_handle) != MEDIA_CONTENT_ERROR_NONE) {\r
250                         ge_dbgE("Destroy image handle error");\r
251                         goto GE_LOCAL_FAILED;\r
252                 }\r
253         } else if (item->type == MEDIA_CONTENT_TYPE_VIDEO) {\r
254                 ret = media_info_get_video(media, &video_handle);\r
255                 if (ret != MEDIA_CONTENT_ERROR_NONE || video_handle == NULL) {\r
256                         ge_dbgE("Failed to get video handle[%d]!", ret);\r
257                         goto GE_LOCAL_FAILED;\r
258                 }\r
259 \r
260                 video_info = (ge_video_s *)calloc(1, sizeof(ge_video_s));\r
261                 if (NULL == video_info) {\r
262                         goto GE_LOCAL_FAILED;\r
263                 }\r
264 \r
265                 item->video_info = video_info;\r
266                 if (video_meta_clone(&(video_info->video_h), video_handle) != MEDIA_CONTENT_ERROR_NONE) {\r
267                         ge_dbgE("Clone video handle error");\r
268                         goto GE_LOCAL_FAILED;\r
269                 }\r
270                 if (video_meta_get_media_id(video_handle, &(video_info->media_uuid)) != MEDIA_CONTENT_ERROR_NONE) {\r
271                         ge_dbgE("Get video id error");\r
272                         goto GE_LOCAL_FAILED;\r
273                 }\r
274                 if (video_meta_get_title(video_handle, &(video_info->title)) != MEDIA_CONTENT_ERROR_NONE) {\r
275                         ge_dbgE("Get video title error");\r
276                         goto GE_LOCAL_FAILED;\r
277                 }\r
278                 if (video_meta_get_duration(video_handle, &(video_info->duration)) != MEDIA_CONTENT_ERROR_NONE) {\r
279                         ge_dbgE("Get video duration error");\r
280                         goto GE_LOCAL_FAILED;\r
281                 }\r
282                 if (video_meta_get_played_time(video_handle, &(video_info->last_played_pos)) != MEDIA_CONTENT_ERROR_NONE) {\r
283                         ge_dbgE("Get video last played position error");\r
284                         goto GE_LOCAL_FAILED;\r
285                 }\r
286 \r
287                 if (video_meta_destroy(video_handle) != MEDIA_CONTENT_ERROR_NONE) {\r
288                         ge_dbgE("Destroy video handle error");\r
289                         goto GE_LOCAL_FAILED;\r
290                 }\r
291 \r
292                 /* Get bookmar elist in case of video */\r
293                 if (video_info->media_uuid) {\r
294                         video_info->bookmarks = 0;\r
295                         int count = 0;\r
296                         ret = media_info_get_bookmark_count_from_db(video_info->media_uuid,\r
297                                                                     NULL,\r
298                                                                     &count);\r
299                         if (ret != MEDIA_CONTENT_ERROR_NONE)\r
300                                 ge_dbgE("Failed to get bookmark[%d]", ret);\r
301                         else\r
302                                 video_info->bookmarks = count;\r
303                 }\r
304         }\r
305 \r
306  GE_LOCAL_SUCCESS:\r
307 \r
308         if (tmp_data->album_id)\r
309                 item->album_uuid = strdup(tmp_data->album_id);\r
310         else\r
311                 item->album_uuid = NULL;\r
312 \r
313         *elist = eina_list_append(*elist, item);\r
314         return true;\r
315 \r
316  GE_LOCAL_FAILED:\r
317 \r
318          if (image_handle)\r
319                  image_meta_destroy(image_handle);\r
320          if (video_handle)\r
321                  video_meta_destroy(video_handle);\r
322 \r
323         _ge_data_type_free_geitem((void **)(&item));\r
324         return false;\r
325 }\r
326 \r
327 int _ge_local_data_connect(void)\r
328 {\r
329         int ret = -1;\r
330 \r
331         ret = media_content_connect();\r
332         if(ret == MEDIA_CONTENT_ERROR_NONE) {\r
333                 ge_dbg("DB connection is success");\r
334                 return 0;\r
335         } else {\r
336                 ge_dbgE("DB connection is failed!");\r
337                 return -1;\r
338         }\r
339 }\r
340 \r
341 int _ge_local_data_disconnect(void)\r
342 {\r
343         int ret = -1;\r
344 \r
345         ret = media_content_disconnect();\r
346         if(ret == MEDIA_CONTENT_ERROR_NONE) {\r
347                 ge_dbg("DB disconnection is success");\r
348                 return 0;\r
349         } else {\r
350                 ge_dbgE("DB disconnection is failed!");\r
351                 return -1;\r
352         }\r
353 }\r
354 \r
355 int _ge_local_data_get_album_list(ge_filter_s *condition, Eina_List **elilst)\r
356 {\r
357         GE_CHECK_VAL(elilst, -1);\r
358         GE_CHECK_VAL(condition, -1);\r
359         int ret = -1;\r
360         filter_h filter = NULL;\r
361 \r
362         ret = __ge_local_data_create_filter(condition, &filter);\r
363         if (ret != 0) {\r
364                 ge_dbgE("Create filter failed[%d]!", ret);\r
365                 return -1;\r
366         }\r
367 \r
368         filter_h media_filter = NULL;\r
369         ge_filter_s media_condition;\r
370         memset(&media_condition, 0x00, sizeof(ge_filter_s));\r
371         g_strlcpy(media_condition.cond, GE_CONDITION_IMAGE_VIDEO,\r
372                   CONDITION_LENGTH);\r
373         media_condition.sort_type = MEDIA_CONTENT_ORDER_DESC;\r
374         g_strlcpy(media_condition.sort_keyword, MEDIA_MODIFIED_TIME,\r
375                   KEYWORD_LENGTH);\r
376         media_condition.collate_type = MEDIA_CONTENT_COLLATE_DEFAULT;\r
377         media_condition.offset = -1;\r
378         media_condition.count = -1;\r
379         media_condition.with_meta = false;\r
380 \r
381         ret = __ge_local_data_create_filter(&media_condition, &media_filter);\r
382         if (ret != 0) {\r
383                 __ge_local_data_destroy_filter(filter);\r
384                 ge_dbgE("Create filter failed[%d]!", ret);\r
385                 return -1;\r
386         }\r
387 \r
388         ge_transfer_data_s tran_data;\r
389         memset(&tran_data, 0x00, sizeof(ge_transfer_data_s));\r
390         tran_data.userdata = (void **)elilst;\r
391         tran_data.filter = media_filter;\r
392         tran_data.album_id = NULL;\r
393         tran_data.with_meta = false;\r
394 \r
395         ge_dbg("Get folders--start");\r
396         ret = media_folder_foreach_folder_from_db(filter,\r
397                                                   __ge_local_data_get_album_list_cb,\r
398                                                   &tran_data);\r
399         ge_dbg("Get folders--over");\r
400 \r
401         __ge_local_data_destroy_filter(media_filter);\r
402         __ge_local_data_destroy_filter(filter);\r
403 \r
404         if (ret != MEDIA_CONTENT_ERROR_NONE) {\r
405                 ge_dbgE("Get folders failed[%d]!", ret);\r
406                 return -1;\r
407         }\r
408 \r
409         return 0;\r
410 }\r
411 \r
412 int _ge_local_data_get_media_count(const char *cluster_id, ge_filter_s *condition,\r
413                                    int *item_cnt){\r
414         GE_CHECK_VAL(cluster_id, -1);\r
415         GE_CHECK_VAL(condition, -1);\r
416         GE_CHECK_VAL(item_cnt, -1);\r
417         int ret = -1;\r
418         filter_h filter = NULL;\r
419 \r
420         ret = __ge_local_data_create_filter(condition, &filter);\r
421         if (ret != 0) {\r
422                 ge_dbgE("Create filter failed[%d]!", ret);\r
423                 return -1;\r
424         }\r
425 \r
426         ge_dbg("Get media count--start");\r
427         ret = media_folder_get_media_count_from_db(cluster_id, filter,\r
428                                                    item_cnt);\r
429         ge_dbg("Get media count--over");\r
430 \r
431         __ge_local_data_destroy_filter(filter);\r
432 \r
433         if (ret != MEDIA_CONTENT_ERROR_NONE) {\r
434                 ge_dbgE("Get media count failed[d]!", ret);\r
435                 return -1;\r
436         }\r
437 \r
438         return 0;\r
439 }\r
440 \r
441 int _ge_local_data_get_all_media_count(ge_filter_s *condtion, int *item_cnt)\r
442 {\r
443         GE_CHECK_VAL(condtion, -1);\r
444         GE_CHECK_VAL(item_cnt, -1);\r
445         int ret = -1;\r
446         filter_h filter = NULL;\r
447 \r
448         ret = __ge_local_data_create_filter(condtion, &filter);\r
449         if (ret != 0) {\r
450                 ge_dbgE("Create filter failed[%d]!", ret);\r
451                 return -1;\r
452         }\r
453 \r
454         ge_dbg("Get media count--start");\r
455         ret = media_info_get_media_count_from_db(filter, item_cnt);\r
456         ge_dbg("Get media count--over");\r
457 \r
458         __ge_local_data_destroy_filter(filter);\r
459 \r
460         if (ret != MEDIA_CONTENT_ERROR_NONE) {\r
461                 ge_dbgE("Get media count failed[d]!", ret);\r
462                 return -1;\r
463         }\r
464 \r
465         return 0;\r
466 }\r
467 \r
468 int _ge_local_data_get_media(const char *media_id, ge_media_s **mitem)\r
469 {\r
470         GE_CHECK_VAL(mitem, -1);\r
471 \r
472         if (media_id == NULL) {\r
473                 ge_dbg("Create a empty media");\r
474                 _ge_data_type_new_media(mitem);\r
475                 return 0;\r
476         }\r
477 \r
478         int ret = -1;\r
479         Eina_List *list = NULL;\r
480         ge_media_s *_mitem = NULL;\r
481         int i = 0;\r
482 \r
483         ge_dbg("media id: %s", media_id);\r
484         media_info_h media_h = NULL;\r
485 \r
486         ret = media_info_get_media_from_db(media_id, &media_h);\r
487         if (ret != MEDIA_CONTENT_ERROR_NONE) {\r
488                 ge_dbgE("Get media handle failed[%d]!", ret);\r
489                 return -1;\r
490         }\r
491 \r
492         ge_transfer_data_s tran_data;\r
493         memset(&tran_data, 0x00, sizeof(ge_transfer_data_s));\r
494         tran_data.userdata = (void **)&list;\r
495         tran_data.filter = NULL;\r
496         tran_data.album_id = NULL;\r
497         tran_data.with_meta = false;\r
498 \r
499         ge_dbg("Get media list--start");\r
500         bool b_ret = __ge_local_data_get_media_list_cb(media_h, &tran_data);\r
501         ge_dbg("Get media list--over");\r
502 \r
503         media_info_destroy(media_h);\r
504 \r
505         if (b_ret && list) {\r
506                 *mitem = eina_list_nth(list, 0);\r
507                 i = 1;\r
508                 ret = 0;\r
509         } else {\r
510                 ge_dbgE("Failed to get media list!");\r
511                 ret = -1;\r
512         }\r
513 \r
514         /* Free other items */\r
515         if (list) {\r
516                 int len = eina_list_count(list);\r
517                 ge_dbg("len: %d", len);\r
518 \r
519                 for(; i < len; i++) {\r
520                         _mitem = eina_list_nth(list, i);\r
521                         _ge_data_type_free_geitem((void **)(&_mitem));\r
522                 }\r
523 \r
524                 eina_list_free(list);\r
525         }\r
526 \r
527         return ret;\r
528 }\r
529 \r
530 int _ge_local_data_get_album_media_list(char *album_id, ge_filter_s *condition,\r
531                                         Eina_List **elist)\r
532 {\r
533         GE_CHECK_VAL(elist, -1);\r
534         GE_CHECK_VAL(album_id, -1);\r
535         GE_CHECK_VAL(condition, -1);\r
536         int ret = -1;\r
537         filter_h filter = NULL;\r
538 \r
539         ret = __ge_local_data_create_filter(condition, &filter);\r
540         if (ret != 0) {\r
541                 ge_dbgE("Create filter failed!");\r
542                 return -1;\r
543         }\r
544 \r
545         ge_transfer_data_s tran_data;\r
546         memset(&tran_data, 0x00, sizeof(ge_transfer_data_s));\r
547         tran_data.userdata = (void **)elist;\r
548         tran_data.filter = NULL;\r
549         tran_data.album_id = album_id;\r
550         tran_data.with_meta = condition->with_meta;\r
551 \r
552         ge_dbg("Get medias--start");\r
553         ret = media_folder_foreach_media_from_db(album_id, filter,\r
554                                                  __ge_local_data_get_media_list_cb,\r
555                                                  &tran_data);\r
556         ge_dbg("Get medias--over");\r
557 \r
558         __ge_local_data_destroy_filter(filter);\r
559 \r
560         if (ret != MEDIA_CONTENT_ERROR_NONE) {\r
561                 ge_dbgE("Get medias failed[d]!", ret);\r
562                 return -1;\r
563         }\r
564 \r
565         return 0;\r
566 }\r
567 \r
568 int _ge_local_data_get_all_albums_media_list(ge_filter_s *condition,\r
569                                              Eina_List **elist)\r
570 {\r
571         GE_CHECK_VAL(elist, -1);\r
572         GE_CHECK_VAL(condition, -1);\r
573         int ret = -1;\r
574         filter_h filter = NULL;\r
575 \r
576         ret = __ge_local_data_create_filter(condition, &filter);\r
577         if (ret != 0) {\r
578                 ge_dbgE("Create filter failed!");\r
579                 return -1;\r
580         }\r
581 \r
582         ge_transfer_data_s tran_data;\r
583         memset(&tran_data, 0x00, sizeof(ge_transfer_data_s));\r
584         tran_data.userdata = (void **)elist;\r
585         tran_data.filter = NULL;\r
586         tran_data.album_id = NULL;\r
587         tran_data.with_meta = condition->with_meta;\r
588 \r
589         ge_dbg("Get all medias--start");\r
590         ret = media_info_foreach_media_from_db(filter,\r
591                                                __ge_local_data_get_media_list_cb,\r
592                                                &tran_data);\r
593         ge_dbg("Get all medias--over");\r
594 \r
595         __ge_local_data_destroy_filter(filter);\r
596 \r
597        if (ret != MEDIA_CONTENT_ERROR_NONE) {\r
598                ge_dbgE("Get all medias failed[d]!", ret);\r
599                return -1;\r
600        }\r
601 \r
602        return 0;\r
603 }\r
604 \r