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