Modify flora license version(LICENSE.Flora)
[apps/core/preloaded/gallery.git] / ug / ug-gallery-efl / src / ge-data-type.c
1 /*\r
2   * Copyright (c) 2012  Samsung Electronics Co., Ltd\r
3   *\r
4   * Licensed under the Flora License, Version 1.1 (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://floralicense.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 <media_info.h>\r
18 #include "ge-data-type.h"\r
19 #include "ge-debug.h"\r
20 \r
21 int _ge_data_type_new_media(ge_media_s **item)\r
22 {\r
23         GE_CHECK_VAL(item, -1);\r
24         ge_media_s *tmp_item = (ge_media_s *)calloc(1, sizeof(ge_media_s));\r
25         GE_CHECK_VAL(tmp_item, -1);\r
26         tmp_item->gtype = GE_TYPE_MEDIA;\r
27         *item =  tmp_item;\r
28         return 0;\r
29 }\r
30 \r
31 int _ge_data_type_new_album(ge_album_s **album)\r
32 {\r
33         GE_CHECK_VAL(album, -1);\r
34         ge_album_s *tmp_item = (ge_album_s *)calloc(1, sizeof(ge_album_s));\r
35         GE_CHECK_VAL(tmp_item, -1);\r
36         tmp_item->gtype = GE_TYPE_ALBUM;\r
37         *album =  tmp_item;\r
38         return 0;\r
39 }\r
40 \r
41 \r
42 static int __ge_data_type_free_media(ge_media_s **item)\r
43 {\r
44         GE_CHECK_VAL(item, -1);\r
45         GE_CHECK_VAL(*item, -1);\r
46         ge_media_s *tmp_item = *item;\r
47 \r
48         /* For local medias */\r
49         if (tmp_item->media_h)\r
50                 media_info_destroy(tmp_item->media_h);\r
51 \r
52         GE_FREEIF(tmp_item->uuid);\r
53         GE_FREEIF(tmp_item->thumb_url);\r
54         GE_FREEIF(tmp_item->file_url);\r
55         GE_FREEIF(tmp_item->album_uuid);\r
56         GE_FREEIF(tmp_item->display_name);\r
57 \r
58         if (MEDIA_CONTENT_TYPE_IMAGE == tmp_item->type &&\r
59             tmp_item->image_info) {\r
60                 /* For local medias */\r
61                 if (tmp_item->image_info->image_h)\r
62                         image_meta_destroy(tmp_item->image_info->image_h);\r
63 \r
64                 GE_FREEIF(tmp_item->image_info->media_uuid);\r
65                 GE_FREE(tmp_item->image_info);\r
66         } else if (MEDIA_CONTENT_TYPE_VIDEO == tmp_item->type &&\r
67                    tmp_item->video_info) {\r
68                 /* For local medias */\r
69                 if (tmp_item->video_info->video_h)\r
70                         video_meta_destroy(tmp_item->video_info->video_h);\r
71 \r
72                 GE_FREEIF(tmp_item->video_info->media_uuid);\r
73                 GE_FREEIF(tmp_item->video_info->title);\r
74         }\r
75 \r
76         GE_FREE(tmp_item);\r
77         *item = NULL;\r
78         return 0;\r
79 }\r
80 \r
81 int _ge_data_type_free_media_list(Eina_List **list)\r
82 {\r
83         GE_CHECK_VAL(list, -1);\r
84         GE_CHECK_VAL(*list, -1);\r
85         ge_media_s *item = NULL;\r
86         Eina_List *tmp_list = *list;\r
87         EINA_LIST_FREE(tmp_list, item) {\r
88                 if (item)\r
89                         __ge_data_type_free_media(&item);\r
90         }\r
91         eina_list_free(*list);\r
92         *list = NULL;\r
93         return 0;\r
94 }\r
95 \r
96 static int __ge_data_type_free_album(ge_album_s **album)\r
97 {\r
98         GE_CHECK_VAL(album, -1);\r
99         GE_CHECK_VAL(*album, -1);\r
100         ge_album_s *tmp_album = *album;\r
101 \r
102         GE_FREEIF(tmp_album->uuid);\r
103         GE_FREEIF(tmp_album->display_name);\r
104         GE_FREEIF(tmp_album->path);\r
105 \r
106         if (tmp_album->folder_h)\r
107                 media_folder_destroy(tmp_album->folder_h);\r
108         GE_FREE(tmp_album);\r
109         *album = NULL;\r
110         return 0;\r
111 }\r
112 \r
113 int _ge_data_type_free_album_list(Eina_List **list)\r
114 {\r
115         GE_CHECK_VAL(list, -1);\r
116         GE_CHECK_VAL(*list, -1);\r
117         ge_album_s *item = NULL;\r
118         Eina_List *tmp_list = *list;\r
119         EINA_LIST_FREE(tmp_list, item) {\r
120                 if (item)\r
121                         __ge_data_type_free_album(&item);\r
122         }\r
123         eina_list_free(*list);\r
124         *list = NULL;\r
125         return 0;\r
126 }\r
127 \r
128 int _ge_data_type_free_geitem(void **item)\r
129 {\r
130         GE_CHECK_VAL(item, -1);\r
131         GE_CHECK_VAL(*item, -1);\r
132         int ret = -1;\r
133 \r
134         if(((ge_album_s *)*item)->gtype == GE_TYPE_ALBUM)\r
135                 ret = __ge_data_type_free_album((ge_album_s **)item);\r
136         else if (((ge_media_s *)*item)->gtype == GE_TYPE_MEDIA)\r
137                 ret = __ge_data_type_free_media((ge_media_s **)item);\r
138 \r
139         if (ret < 0)\r
140                 return -1;\r
141         else\r
142                 return 0;\r
143 }\r
144 \r
145 \r
146 \r