delete create and destroy method of media data
[profile/tv/apps/native/gallery.git] / src / data / folderinfo.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15 */
16
17 #include <AppCommon.h>
18 #include "menudef.h"
19 #include "folderinfo.h"
20 #include "mediainfo.h"
21 #include "imageinfo.h"
22 #include "videoinfo.h"
23 #include "util.h"
24
25 struct SFolderInfo {
26         Eina_List *medialist;
27 };
28
29 CFolderInfo::CFolderInfo(void)
30 {
31         m = new SFolderInfo();
32         if (!m) {
33                 _ERR("FolderInfo Create Failed");
34                 return;
35         }
36
37         memset(m, 0, sizeof(*m));
38 }
39
40 CFolderInfo::~CFolderInfo(void)
41 {
42         m_DeleteMediaList();
43
44         delete m;
45
46         m = NULL;
47 }
48
49 void CFolderInfo::m_DeleteMediaList(void)
50 {
51         CMediaInfo *minfo;
52         void *obj;
53
54         minfo = NULL;
55         EINA_LIST_FREE(m->medialist, obj) {
56                 minfo = (CMediaInfo *)obj;
57
58                 delete minfo;
59         }
60
61         m->medialist = NULL;
62 }
63
64 Eina_List *CFolderInfo::MediaList(void)
65 {
66         if (!m)
67                 return NULL;
68
69         return m->medialist;
70 }
71
72 bool CFolderInfo::SetMediaList(Eina_List *medialist)
73 {
74         CMediaInfo *minfo, *nminfo;
75         Eina_List *l;
76         void *obj;
77
78         if (!m)
79                 return false;
80
81         nminfo = NULL;
82         EINA_LIST_FOREACH(medialist, l, obj) {
83                 minfo = (CMediaInfo *)obj;
84
85                 if (minfo->Type() == E_MEDIA_IMAGE)
86                         nminfo = new CImageInfo;
87                 else if (minfo->Type() == E_MEDIA_VIDEO)
88                         nminfo = new CVideoInfo;
89
90                 nminfo->Create();
91                 nminfo->Duplicate(minfo);
92
93                 m->medialist = eina_list_append(m->medialist, nminfo);
94         }
95
96         return true;
97 }