Add PhotoLayout, VideoLayout, MusicLayout code and layout change code
[profile/tv/apps/native/filebrowser.git] / src / layouts / FbPhotoLayout.cpp
index f7264cf..5e55159 100644 (file)
@@ -24,61 +24,166 @@ struct SFbPhotoLayout {
 };
 
 
-bool CFbPhotoLayout::t_CreateFileGrid(Evas_Object *layout)
+void CFbPhotoLayout::sm_CbUpdateEmptyFocusSequence(void* cookie)
 {
-       return true;
+       _DBG();
+       CFbBaseView *pfbBaseView = NULL;
+       Evas_Object *eoBase = (Evas_Object*)cookie;
+
+       if (!eoBase)
+               return;
+
+       pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
+       ASSERT(pfbBaseView);
+       pfbBaseView->UpdateEmptyFocusSequence();
 }
 
 
-void CFbPhotoLayout::t_DestroyFileGrid(void)
+void CFbPhotoLayout::sm_CbUpdatedGrid(void* cookie)
 {
-       return; 
+       _DBG();
+       CFbBaseView *pfbBaseView = NULL;
+       Evas_Object *eoBase = (Evas_Object*)cookie;
+       if (!eoBase)
+               return;
+
+       pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
+       ASSERT(pfbBaseView);
+       pfbBaseView->UpdatedGrid();
 }
 
 
-void CFbPhotoLayout::t_OnShow(void)
+void CFbPhotoLayout::sm_CbUnsetFocus(void* cookie)
 {
-       return;
+       _DBG();
+       CFbBaseView *pfbBaseView = NULL;
+       Evas_Object *eoBase = (Evas_Object*)cookie;
+       if (eoBase) {
+               pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
+               ASSERT(pfbBaseView);
+               pfbBaseView->UnsetFocus();
+       }
 }
 
 
-void CFbPhotoLayout::t_OnHide(void)
+void CFbPhotoLayout::sm_CbLinkApp(void* cookie, int type, int source_type, char *path)
 {
-       return;
+       _DBG();
+       CFbBaseView *pfbBaseView = NULL;
+       Evas_Object *eoBase = (Evas_Object*)cookie;
+       if (eoBase)
+       {
+               pfbBaseView = (CFbBaseView*)evas_object_data_get(eoBase, BASE_VIEW_DATA);
+               ASSERT(pfbBaseView);
+               pfbBaseView->CbLinkApp(type, source_type, path);
+       }
 }
 
 
-bool CFbPhotoLayout::Create(CLayoutMgr *mgr, void *data)
+bool CFbPhotoLayout::t_CreateFileGrid(Evas_Object *layout)
 {
+       m->pFileGrid = new CFileGrid;
+       if (!m->pFileGrid)
+               return false;
+
+       CFileGrid::SCallback cb;
+       cb.cbUpdateEmptyFocusSequence = sm_CbUpdateEmptyFocusSequence;
+       cb.cbUpdatedGrid = sm_CbUpdatedGrid;
+       cb.cbUnsetFocus = sm_CbUnsetFocus;
+       cb.cbLinkApp = sm_CbLinkApp;
+       cb.cookie = m->eoBase;
+       if (!m->pFileGrid->Create(m->eoWin, layout, &cb)) {
+               _DBG("Fail to create FileGrid");
+               delete m->pFileGrid;
+               m->pFileGrid = NULL;
+               return false;
+       }
        return true;
 }
 
 
-void CFbPhotoLayout::Destroy(void)
+void CFbPhotoLayout::t_DestroyFileGrid(void)
+{
+       if (!m->pFileGrid)
+               return;
+
+       m->pFileGrid->Destroy();
+       delete m->pFileGrid;
+       m->pFileGrid = NULL;
+}
+
+
+void CFbPhotoLayout::t_OnShow(void)
 {
-       return;
+       elm_object_part_content_unset(m->eoBase, FBR_PART_CONTENT);
+       elm_object_part_content_set(m->eoBase, FBR_PART_CONTENT, Layout()); 
+       m->pFileGrid->Update(false);
+       CBaseLayout::t_OnShow();
 }
 
 
-void CFbPhotoLayout::Update(bool flag)
+bool CFbPhotoLayout::Create(CLayoutMgr *mgr, void *data)
 {
-       return;
+       ASSERT(!m);
+       ASSERT(mgr);
+
+       Evas_Object* layout = NULL;
+
+       _CREATE_BEGIN{
+               _CHECK(m = new SFbPhotoLayout)
+               _CHECK(m->pLayoutMgr = mgr)
+               _CHECK(m->pViewMgr = CViewMgr::GetInstance())
+               _CHECK(m->eoBase = m->pLayoutMgr->Base())
+               _CHECK(m->eoWin = m->pViewMgr->Window())
+               _CHECK(layout = elm_layout_add(m->eoBase))
+               _CHECK(elm_layout_file_set(layout, EDJEFILE, FB_PHOTO_LAYOUT))
+               _CHECK(t_CreateFileGrid(layout))
+               _COMMAND{ 
+                       elm_object_part_content_unset(m->eoBase, FBR_PART_CONTENT);
+                       elm_object_part_content_set(m->eoBase, FBR_PART_CONTENT, layout); 
+               }
+               _CHECK(CBaseLayout::Create(layout))
+
+               _WHEN_SUCCESS{}
+
+               _CHECK_FAIL{ CBaseLayout::Destroy(); }
+               _CHECK_FAIL{ t_DestroyFileGrid(); }
+               _CHECK_FAIL{ /* elm_layout_file_set */ }
+               _CHECK_FAIL{ /* elm_layout_add */ }
+               _CHECK_FAIL{ /* m->pViewMgr->Window()*/ }
+               _CHECK_FAIL{ /* m->pLayoutMgr->Base() */ }
+               _CHECK_FAIL{ /* CViewMgr::GetInstace() */ }
+               _CHECK_FAIL{ /* m->pLayoutMgr = mgr */ }
+               _CHECK_FAIL{ delete m; m = NULL; }
+       } _CREATE_END_AND_CATCH{ return false; }
+
+       return true;
 }
 
 
-void CFbPhotoLayout::SetFocus(Eina_Bool flag)
+void CFbPhotoLayout::Destroy(void)
 {
-       return;
+       ASSERT(m);
+
+       CBaseLayout::Destroy();
+       t_DestroyFileGrid();
+       delete m;
+       m = NULL;
 }
 
 
-Evas_Object* CFbPhotoLayout::Grid(void)
+void CFbPhotoLayout::SetFocus(Eina_Bool flag)
 {
-       return NULL;
+       ASSERT(m);
+       _DBG();
+
+       m->pFileGrid->SetFocus(flag);
 }
 
 
 void CFbPhotoLayout::Action(void)
 {
-       return;
+       ASSERT(m);
+       
+       return m->pFileGrid->Action();
 }