Add PhotoLayout, VideoLayout, MusicLayout code and layout change code
[profile/tv/apps/native/filebrowser.git] / src / views / BaseView / FbBaseView.cpp
index b646fad..256c7f6 100644 (file)
@@ -65,6 +65,13 @@ enum topbtns {
        TOPBTN_SORT,
 };
 
+enum layoutId {
+       ALL_LAYOUT,
+       PHOTO_LAYOUT,
+       VIDEO_LAYOUT,
+       MUSIC_LAYOUT
+};
+
 const char *source_arg[] = {
        "all",
        "tv",
@@ -79,6 +86,21 @@ const char *linked_app[] = {
        N_(""),
 };
 
+const char* _get_layout_id(int curLayoutId){
+       switch(curLayoutId)
+       {
+               case ALL_LAYOUT:
+                       return FB_ALL_LAYOUT;
+               case PHOTO_LAYOUT:
+                       return FB_PHOTO_LAYOUT;
+               case VIDEO_LAYOUT:
+                       return FB_VIDEO_LAYOUT;
+               case MUSIC_LAYOUT:
+                       return FB_MUSIC_LAYOUT;
+       }
+       return FB_ALL_LAYOUT; // default
+}
+
 struct SFbBaseView {
        Evas_Object *eoWin;
        Evas_Object *eoBase;
@@ -92,11 +114,11 @@ struct SFbBaseView {
 
        CLayoutMgr     *pLayoutMgr;
 
-       char*          *pCurrentLayoutId;
+       int            curLayoutId;
        CFbAllLayout   *pFbAllLayout;
-       //CFbPhotoLayout *pFbPhotoLayout;
-       //CFbMusicLayout *pFbMusicLayout;
-       //CFbVideoLayout *pFbVideoLayout;
+       CFbPhotoLayout *pFbPhotoLayout;
+       CFbVideoLayout *pFbVideoLayout;
+       CFbMusicLayout *pFbMusicLayout;
 
        SFbBaseView() {
                int a;
@@ -126,12 +148,26 @@ struct SFbBaseView {
                CHandlerBase(SFbBaseView *ins) : IKeyDownListener(this) { m = ins; }
 
                virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
+                       _DBG("m->curLayoutId = %d",m->curLayoutId);
                        if (!strcmp(ev->keyname, KEY_EXIT))
                                elm_exit();
                        else if (!strcmp(ev->keyname, KEY_ENTER) || !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
                                if (elm_object_focus_get(m->eoSelectedBtnGroup)) {
-                                       m->pFbAllLayout->SetFocus(EINA_TRUE);
-                                       // TODO: Each layout SetFocus???
+                                       switch(m->curLayoutId)
+                                       {
+                                               case ALL_LAYOUT:
+                                                       m->pFbAllLayout->SetFocus(EINA_TRUE);
+                                                       break;
+                                               case PHOTO_LAYOUT:
+                                                       m->pFbPhotoLayout->SetFocus(EINA_TRUE);
+                                                       break;
+                                               case VIDEO_LAYOUT:
+                                                       m->pFbVideoLayout->SetFocus(EINA_TRUE);
+                                                       break;
+                                               case MUSIC_LAYOUT:
+                                                       m->pFbMusicLayout->SetFocus(EINA_TRUE);
+                                                       break;
+                                       }
                                }
                        }
                }
@@ -151,20 +187,12 @@ struct SFbBaseView {
                        switch (instance->Type()) {
                        case CCtxPopup::TOPBTN_SORT:
                                elm_object_text_set(m->eoBtnSort, text);
-#if 1
-                               m->pFbAllLayout->Update(true);
-#else
-                               m->pLayoutMgr->Show(Current_layout);
-#endif
+                               m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
                                break;
 
                        case CCtxPopup::TOPBTN_SOURCE:
                                elm_object_text_set(m->eoBtnSource, text);
-#if 1
-                               m->pFbAllLayout->Update(false);
-#else
-                               m->pLayoutMgr->Show(Current_layout);
-#endif
+                               m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
                                break;
 
                        default:
@@ -176,14 +204,17 @@ struct SFbBaseView {
                CHandlerButton(SFbBaseView *ins) : IKeyDownListener(this), IMouseMoveListener(this), IMouseClickedListener(this) { m = ins; }
 
                virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
+                       _DBG("id = %d", id);
                        if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE))
                                elm_object_focus_set(m->eoSelectedBtnGroup, EINA_TRUE);
                }
                virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
+                       _DBG("id = %d", id);
                        if (!elm_object_focus_get(obj))
                                elm_object_focus_set(obj, EINA_TRUE);
                }
                virtual void OnMouseClicked(int id, Evas_Object *obj) {
+                       _DBG("id = %d", id);
                        CSourceCtxPopup::SCallback cb;
                        cb.cookie = m;
                        cb.onSelected = sm_CbCtxPopupSelected;
@@ -211,10 +242,12 @@ struct SFbBaseView {
                        IMouseClickedListener(this) { m = ins; }
 
                virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
+                       _DBG("id = %d", id);
                        if (!elm_object_focus_get(obj))
                                elm_object_focus_set(obj, EINA_TRUE);
                }
                virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
+                       _DBG("id = %d", id);
                        if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE))
                                elm_exit();
                }
@@ -226,36 +259,32 @@ struct SFbBaseView {
                        m->eoSelectedBtnGroup = obj;
                        elm_object_signal_emit(m->eoSelectedBtnGroup, FBR_SIGNAL_GROUP_SELECTED, "");
 
-#if 1
-                       m->pFbAllLayout->Update(false);
-                       // TODO: not update, it should be "Show" as each layout
-#else
                        switch(id)
                        {
                                case E_GRP_ALL:
-                                       m->pLayoutMgr->Show(FB_ALL_LAYOUT);
+                                       m->curLayoutId = ALL_LAYOUT;
                                        break;
                                case E_GRP_PHOTO:
-                                       m->pLayoutMgr->Show(FB_PHOTO_LAYOUT);
+                                       m->curLayoutId = PHOTO_LAYOUT;
                                        break;
                                case E_GRP_VIDEO:
-                                       m->pLayoutMgr->Show(FB_VIDEO_LAYOUT);
+                                       m->curLayoutId = VIDEO_LAYOUT;
                                        break;
                                case E_GRP_MUSIC:
-                                       m->pLayoutMgr->Show(FB_MUSIC_LAYOUT);
+                                       m->curLayoutId = MUSIC_LAYOUT;
                                        break;
                                default:
-                                       _DBG("Fix it: it can not make it , MouseClicked");
+                                       _ERR("Fix it: it can not make it , MouseClicked");
+                                       m->curLayoutId = ALL_LAYOUT; // default
                                        break;
-
                        }
-#endif
+                       _DBG("id = %d, m->curLayoutId = %d", id, m->curLayoutId);
+                       m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
                }
        } *pHandlerGroup[TOTAL_GROUP_BTNS];
 };
 
 
-
 Evas_Object *_add_button(Evas_Object *box)
 {
        Evas_Object *button;
@@ -336,6 +365,7 @@ void CFbBaseView::CbLinkApp(int type, int source_type, char *path)
 
 void CFbBaseView::UpdatedGrid(void)
 {
+#if 0 // It will be removed at soon.
        int i;
 
        for (i = 0; i < TOTAL_GROUP_BTNS; i++)
@@ -351,6 +381,7 @@ void CFbBaseView::UpdatedGrid(void)
        elm_object_focus_next_object_set(m->eoBtnSource,
                m->pFbAllLayout->Grid(), ELM_FOCUS_DOWN);
 
+#endif
        elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, "");
        elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, "");
 }
@@ -452,14 +483,10 @@ void CFbBaseView::t_CreateLeftSession(void)
 
 void CFbBaseView::t_CreateFullView(void)
 {
+       _DBG();
        t_CreateTopSession();
        t_CreateLeftSession();
-       _DBG("UpdateLayout");
-#if 1
-       m->pFbAllLayout->Update(false);
-#else
-       m->pLayoutMgr->Show(Current_layout);
-#endif
+       m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
 }
 
 void CFbBaseView::t_SetSelectedGroupButton(Evas_Object* obj)
@@ -491,9 +518,21 @@ void CFbBaseView::t_OnShow(void)
 
 void CFbBaseView::t_OnUpdate(void *data)
 {
-       // TODO: When does this function is called? If it don't be used, Remove it.
-       _DBG();
-       m->pFbAllLayout->Action();
+       switch(m->curLayoutId)
+       {
+               case ALL_LAYOUT:
+                       m->pFbAllLayout->Action();
+                       break;
+               case PHOTO_LAYOUT:
+                       m->pFbPhotoLayout->Action();
+                       break;
+               case VIDEO_LAYOUT:
+                       m->pFbVideoLayout->Action();
+                       break;
+               case MUSIC_LAYOUT:
+                       m->pFbMusicLayout->Action();
+                       break;
+       }
 }
 
 void CFbBaseView::t_OnHide(void)
@@ -541,17 +580,17 @@ bool CFbBaseView::Create(void *data)
                _CHECK(m->pLayoutMgr = new CLayoutMgr)
                _CHECK(m->pLayoutMgr->Create(eoBase, NULL))
                _CHECK(m->pFbAllLayout = new CFbAllLayout(FB_ALL_LAYOUT))
-               //_CHECK(m->pFbPhotoLayout = new CFbPhotoLayout(FB_PHOTO_LAYOUT))
-               //_CHECK(m->pFbVideoLayout = new CFbVideoLayout(FB_VIDEO_LAYOUT))
-               //_CHECK(m->pFbMusicLayout = new CFbMusicLayout(FB_MUSIC_LAYOUT))
+               _CHECK(m->pFbPhotoLayout = new CFbPhotoLayout(FB_PHOTO_LAYOUT))
+               _CHECK(m->pFbVideoLayout = new CFbVideoLayout(FB_VIDEO_LAYOUT))
+               _CHECK(m->pFbMusicLayout = new CFbMusicLayout(FB_MUSIC_LAYOUT))
                _CHECK(m->pFbAllLayout->Create(m->pLayoutMgr, NULL))
-               //_CHECK(m->pFbPhotoLayout->Create(m->pLayoutMgr, NULL))
-               //_CHECK(m->pFbVideoLayout->Create(m->pLayoutMgr, NULL))
-               //_CHECK(m->pFbMusicLayout->Create(m->pLayoutMgr, NULL))
+               _CHECK(m->pFbPhotoLayout->Create(m->pLayoutMgr, NULL))
+               _CHECK(m->pFbVideoLayout->Create(m->pLayoutMgr, NULL))
+               _CHECK(m->pFbMusicLayout->Create(m->pLayoutMgr, NULL))
                _CHECK(m->pLayoutMgr->AddLayout(m->pFbAllLayout))
-               //_CHECK(m->pLayoutMgr->AddLayout(m->pFbPhotoLayout))
-               //_CHECK(m->pLayoutMgr->AddLayout(m->pFbVideoLayout))
-               //_CHECK(m->pLayoutMgr->AddLayout(m->pFbMusicLayout))
+               _CHECK(m->pLayoutMgr->AddLayout(m->pFbPhotoLayout))
+               _CHECK(m->pLayoutMgr->AddLayout(m->pFbVideoLayout))
+               _CHECK(m->pLayoutMgr->AddLayout(m->pFbMusicLayout))
                _CHECK(CUsbConnectionListener::Create())
                _CHECK(CMediaContentDbUpdateListener::Create())
 
@@ -559,17 +598,17 @@ bool CFbBaseView::Create(void *data)
 
                _CHECK_FAIL{ CMediaContentDbUpdateListener::Destroy(); }
                _CHECK_FAIL{ CUsbConnectionListener::Destroy(); }
-               //_CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbMusicLayout); }
-               //_CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbVideoLayout); }
-               //_CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbPhotoLayout); }
+               _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbMusicLayout); }
+               _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbVideoLayout); }
+               _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbPhotoLayout); }
                _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbAllLayout); }
-               //_CHECK_FAIL{ m->pFbMusicLayout->Destroy(); }
-               //_CHECK_FAIL{ m->pFbVideoLayout->Destroy(); }
-               //_CHECK_FAIL{ m->pFbPhotoLayout->Destroy(); }
+               _CHECK_FAIL{ m->pFbMusicLayout->Destroy(); }
+               _CHECK_FAIL{ m->pFbVideoLayout->Destroy(); }
+               _CHECK_FAIL{ m->pFbPhotoLayout->Destroy(); }
                _CHECK_FAIL{ m->pFbAllLayout->Destroy(); }
-               //_CHECK_FAIL{ delete m->pFbMusicLayout; m->pFbMusicLayout = NULL; }
-               //_CHECK_FAIL{ delete m->pFbVideoLayout; m->pFbVideoLayout = NULL; }
-               //_CHECK_FAIL{ delete m->pFbPhotoLayout; m->pFbPhotoLayout = NULL; }
+               _CHECK_FAIL{ delete m->pFbMusicLayout; m->pFbMusicLayout = NULL; }
+               _CHECK_FAIL{ delete m->pFbVideoLayout; m->pFbVideoLayout = NULL; }
+               _CHECK_FAIL{ delete m->pFbPhotoLayout; m->pFbPhotoLayout = NULL; }
                _CHECK_FAIL{ delete m->pFbAllLayout; m->pFbAllLayout = NULL; }
                _CHECK_FAIL{ m->pLayoutMgr->Destroy(); }
                _CHECK_FAIL{ delete m->pLayoutMgr; m->pLayoutMgr = NULL; }
@@ -582,7 +621,8 @@ bool CFbBaseView::Create(void *data)
        // original create grid
        CInfo::SetSortType(0/*CSort::SORT_NAME_AZ*/);
        evas_object_data_set(eoBase, BASE_VIEW_DATA, this);
-       m->pLayoutMgr->Show(FB_ALL_LAYOUT);
+       m->curLayoutId = ALL_LAYOUT;    
+       _DBG("curLayoutId = %s", _get_layout_id(m->curLayoutId));
        t_CreateFullView();
        elm_object_focus_allow_set(eoBase, EINA_FALSE);
        m->pHandlerBase->Connect(eoBase);
@@ -598,7 +638,6 @@ void CFbBaseView::Destroy(void)
        CMediaContentDbUpdateListener::Destroy();
        CUsbConnectionListener::Destroy();
 
-#if 0
        m->pLayoutMgr->RemoveLayout(m->pFbMusicLayout);
        m->pFbMusicLayout->Destroy();
        delete m->pFbMusicLayout;
@@ -610,7 +649,6 @@ void CFbBaseView::Destroy(void)
        m->pLayoutMgr->RemoveLayout(m->pFbPhotoLayout);
        m->pFbPhotoLayout->Destroy();
        delete m->pFbPhotoLayout;
-#endif
 
        m->pLayoutMgr->RemoveLayout(m->pFbAllLayout);
        m->pFbAllLayout->Destroy();
@@ -668,11 +706,7 @@ void CFbBaseView::OnUpdated(const SEntity *entity)
                m->pCtxPopup = NULL;
        }
        if (CInfo::SourceType() != E_TV) {
-#if 1
-               m->pFbAllLayout->Update(false);
-#else
-               m->pLayoutMgr->Show(Current_layout);
-#endif
+               m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
                elm_object_focus_set(t_SelectedGroupButton(), EINA_TRUE);
        }
 }