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