dbg.h file is removed.
[profile/tv/apps/native/filebrowser.git] / src / layouts / FbPhotoLayout.cpp
1 #include <AppCommon.h>
2 #include "define.h"
3 #include "FileGrid.h"
4 #include "FbBaseView.h"
5 #include "FbPhotoLayout.h"
6 #include "../views/BaseView/Info.h"
7 #include "common.h"
8
9
10 struct SFbPhotoLayout {
11         Evas_Object *eoWin;
12         Evas_Object *eoBase;
13         CFileGrid  *pFileGrid;
14
15         CLayoutMgr *pLayoutMgr;
16         CViewMgr   *pViewMgr;
17
18         bool       updateFlag;
19 };
20
21
22 void CFbPhotoLayout::sm_CbUpdateEmptyFocusSequence(void* cookie)
23 {
24         _DBG();
25         CFbBaseView *pfbBaseView = NULL;
26         Evas_Object *eoBase = (Evas_Object*)cookie;
27
28         if (!eoBase)
29                 return;
30
31         pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
32         ASSERT(pfbBaseView);
33         pfbBaseView->UpdateEmptyFocusSequence();
34 }
35
36
37 void CFbPhotoLayout::sm_CbUpdatedGrid(void* cookie)
38 {
39         _DBG();
40         CFbBaseView *pfbBaseView = NULL;
41         Evas_Object *eoBase = (Evas_Object*)cookie;
42         if (!eoBase)
43                 return;
44
45         pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
46         ASSERT(pfbBaseView);
47         pfbBaseView->UpdatedGrid();
48 }
49
50
51 void CFbPhotoLayout::sm_CbUnsetFocus(void* cookie)
52 {
53         _DBG();
54         CFbBaseView *pfbBaseView = NULL;
55         Evas_Object *eoBase = (Evas_Object*)cookie;
56         if (eoBase) {
57                 pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
58                 ASSERT(pfbBaseView);
59                 pfbBaseView->UnsetFocus();
60         }
61 }
62
63
64 void CFbPhotoLayout::sm_CbLinkApp(void* cookie, int type, int source_type, char *path)
65 {
66         _DBG();
67         CFbBaseView *pfbBaseView = NULL;
68         Evas_Object *eoBase = (Evas_Object*)cookie;
69         if (eoBase)
70         {
71                 pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
72                 ASSERT(pfbBaseView);
73                 pfbBaseView->CbLinkApp(type, source_type, path);
74         }
75 }
76
77
78 bool CFbPhotoLayout::t_CreateFileGrid(Evas_Object *layout)
79 {
80         m->pFileGrid = new CFileGrid;
81         if (!m->pFileGrid)
82                 return false;
83
84         CFileGrid::SCallback cb;
85         cb.cbUpdateEmptyFocusSequence = sm_CbUpdateEmptyFocusSequence;
86         cb.cbUpdatedGrid = sm_CbUpdatedGrid;
87         cb.cbUnsetFocus = sm_CbUnsetFocus;
88         cb.cbLinkApp = sm_CbLinkApp;
89         cb.cookie = m->eoBase;
90         if (!m->pFileGrid->Create(m->eoWin, layout, &cb)) {
91                 _DBG("Fail to create FileGrid");
92                 delete m->pFileGrid;
93                 m->pFileGrid = NULL;
94                 return false;
95         }
96         return true;
97 }
98
99
100 void CFbPhotoLayout::t_DestroyFileGrid(void)
101 {
102         if (!m->pFileGrid)
103                 return;
104
105         m->pFileGrid->Destroy();
106         delete m->pFileGrid;
107         m->pFileGrid = NULL;
108 }
109
110
111 void CFbPhotoLayout::t_OnShow(void)
112 {
113         elm_object_part_content_unset(m->eoBase, FBR_PART_CONTENT);
114         elm_object_part_content_set(m->eoBase, FBR_PART_CONTENT, Layout()); 
115         CInfo::SetGroupIndex(E_GRP_PHOTO);
116         m->pFileGrid->Update(m->updateFlag);
117         m->updateFlag = false; // set default
118         CBaseLayout::t_OnShow();
119 }
120
121
122 bool CFbPhotoLayout::Create(CLayoutMgr *mgr, void *data)
123 {
124         ASSERT(!m);
125         ASSERT(mgr);
126
127         Evas_Object* layout = NULL;
128
129         _CREATE_BEGIN{
130                 _CHECK(m = new SFbPhotoLayout)
131                 _CHECK(m->pLayoutMgr = mgr)
132                 _CHECK(m->pViewMgr = CViewMgr::GetInstance())
133                 _CHECK(m->eoBase = m->pLayoutMgr->Base())
134                 _CHECK(m->eoWin = m->pViewMgr->Window())
135                 _CHECK(layout = elm_layout_add(m->eoBase))
136                 _CHECK(elm_layout_file_set(layout, EDJEFILE, FB_PHOTO_LAYOUT))
137                 _CHECK(t_CreateFileGrid(layout))
138                 _COMMAND{
139                         m->updateFlag = false;
140                         elm_object_part_content_unset(m->eoBase, FBR_PART_CONTENT);
141                         elm_object_part_content_set(m->eoBase, FBR_PART_CONTENT, layout);
142                 }
143                 _CHECK(CBaseLayout::Create(layout))
144
145                 _WHEN_SUCCESS{}
146
147                 _CHECK_FAIL{ CBaseLayout::Destroy(); }
148                 _CHECK_FAIL{ t_DestroyFileGrid(); }
149                 _CHECK_FAIL{ /* elm_layout_file_set */ }
150                 _CHECK_FAIL{ /* elm_layout_add */ }
151                 _CHECK_FAIL{ /* m->pViewMgr->Window()*/ }
152                 _CHECK_FAIL{ /* m->pLayoutMgr->Base() */ }
153                 _CHECK_FAIL{ /* CViewMgr::GetInstace() */ }
154                 _CHECK_FAIL{ /* m->pLayoutMgr = mgr */ }
155                 _CHECK_FAIL{ delete m; m = NULL; }
156         } _CREATE_END_AND_CATCH{ return false; }
157
158         return true;
159 }
160
161
162 void CFbPhotoLayout::Destroy(void)
163 {
164         ASSERT(m);
165
166         CBaseLayout::Destroy();
167         t_DestroyFileGrid();
168         delete m;
169         m = NULL;
170 }
171
172
173 void CFbPhotoLayout::SetFocus(Eina_Bool flag)
174 {
175         ASSERT(m);
176         _DBG();
177
178         m->pFileGrid->SetFocus(flag);
179 }
180
181
182 void CFbPhotoLayout::Action(void)
183 {
184         ASSERT(m);
185
186         return m->pFileGrid->Action();
187 }
188
189
190 void CFbPhotoLayout::SetUpdateFlag(bool flag)
191 {
192         ASSERT(m);
193
194         m->updateFlag = flag;
195 }