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