X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fviews%2FBaseView%2FFbBaseView.cpp;h=3a98993a7271a18b55738b62a1458d794c82cdcf;hb=48410c4bca01e97f62e4df279f43d1664b1d8944;hp=1fde9b6dd3cfd264fff4aa6250e008e0381df46f;hpb=a3fc7960ac245572c11eb96e4409bf1ea29ce748;p=profile%2Ftv%2Fapps%2Fnative%2Ffilebrowser.git diff --git a/src/views/BaseView/FbBaseView.cpp b/src/views/BaseView/FbBaseView.cpp index 1fde9b6..3a98993 100644 --- a/src/views/BaseView/FbBaseView.cpp +++ b/src/views/BaseView/FbBaseView.cpp @@ -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; @@ -118,22 +140,41 @@ struct SFbBaseView { for (a = 0; a < TOTAL_GROUP_BTNS; a++) delete pHandlerGroup[a]; } - - class CHandlerBase : public CListenerMgr, public IKeyDownListener { + + class CHandlerBase : public CListenerMgr, public IKeyDownListener, public IKeyUpListener{ SFbBaseView *m; public: - CHandlerBase(SFbBaseView *ins) : IKeyDownListener(this) { m = ins; } + CHandlerBase(SFbBaseView *ins) : IKeyDownListener(this), IKeyUpListener(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)) { + } + virtual void OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev) + { + _DBG("m->curLayoutId = %d",m->curLayoutId); + 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; + } } } + } } *pHandlerBase; @@ -151,20 +192,42 @@ 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 + switch(m->curLayoutId) + { + case ALL_LAYOUT: + m->pFbAllLayout->SetUpdateFlag(true); + break; + case PHOTO_LAYOUT: + m->pFbPhotoLayout->SetUpdateFlag(true); + break; + case VIDEO_LAYOUT: + m->pFbVideoLayout->SetUpdateFlag(true); + break; + case MUSIC_LAYOUT: + m->pFbMusicLayout->SetUpdateFlag(true); + break; + } + 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 + switch(m->curLayoutId) + { + case ALL_LAYOUT: + m->pFbAllLayout->SetUpdateFlag(true); + break; + case PHOTO_LAYOUT: + m->pFbPhotoLayout->SetUpdateFlag(true); + break; + case VIDEO_LAYOUT: + m->pFbVideoLayout->SetUpdateFlag(true); + break; + case MUSIC_LAYOUT: + m->pFbMusicLayout->SetUpdateFlag(true); + break; + } + m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId)); break; default: @@ -176,14 +239,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) { - if (!strcmp(ev->keyname, KEY_BACK)) + _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,11 +277,13 @@ 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) { - if (!strcmp(ev->keyname, KEY_BACK)) + _DBG("id = %d", id); + if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) elm_exit(); } virtual void OnMouseClicked(int id, Evas_Object *obj) { @@ -226,36 +294,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; @@ -276,16 +340,8 @@ Evas_Object *_add_button(Evas_Object *box) void CFbBaseView::UpdateEmptyFocusSequence(void) { - int i; _DBG(""); - for (i = 0; i < TOTAL_GROUP_BTNS; i++) - elm_object_focus_next_object_set(m->eoBtnGroup[i], m->eoBtnSort, ELM_FOCUS_RIGHT); - - elm_object_focus_next_object_set(m->eoBtnGroup[E_GRP_ALL], m->eoBtnSort, ELM_FOCUS_UP); - elm_object_focus_next_object_set(m->eoBtnSort, m->eoBtnGroup[E_GRP_ALL], ELM_FOCUS_DOWN); - elm_object_focus_next_object_set(m->eoBtnSource, m->eoBtnGroup[E_GRP_ALL], ELM_FOCUS_DOWN); - if (t_SelectedGroupButton() == m->eoBtnGroup[E_GRP_ALL]) { elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, _(NO_FILE_MESSAGE)); elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, _(NO_FILE_MESSAGE_SUB)); @@ -336,21 +392,6 @@ void CFbBaseView::CbLinkApp(int type, int source_type, char *path) void CFbBaseView::UpdatedGrid(void) { - int i; - - for (i = 0; i < TOTAL_GROUP_BTNS; i++) - elm_object_focus_next_object_set(m->eoBtnGroup[i], - m->pFbAllLayout->Grid(), ELM_FOCUS_RIGHT); - - elm_object_focus_next_object_set(m->eoBtnGroup[E_GRP_ALL], - m->eoBtnSort, ELM_FOCUS_UP); - elm_object_focus_next_object_set(m->eoBtnSort, - m->eoBtnGroup[E_GRP_ALL], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(m->eoBtnSort, - m->pFbAllLayout->Grid(), ELM_FOCUS_DOWN); - elm_object_focus_next_object_set(m->eoBtnSource, - m->pFbAllLayout->Grid(), ELM_FOCUS_DOWN); - elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, ""); elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, ""); } @@ -363,7 +404,7 @@ void CFbBaseView::t_CreateTopSession(void) struct _btn_info btninfo[TOTAL_TOP_BTNS]; btninfo[TOPBTN_SOURCE].style = FBR_STYLE_SOURCE_BTN; btninfo[TOPBTN_SOURCE].part = FBR_PART_SOURCE_HOVERSEL; - + btninfo[TOPBTN_SORT].style = FBR_STYLE_SORT_BTN; btninfo[TOPBTN_SORT].part = FBR_PART_SORT_HOVERSEL; @@ -425,13 +466,12 @@ void CFbBaseView::t_CreateLeftSession(void) elm_box_pack_end(box, m->eoBtnGroup[i]); elm_object_style_set(m->eoBtnGroup[i], FBR_STYLE_GROUPBTN); elm_object_text_set(m->eoBtnGroup[i], _(btninfo[i].txt)); - + m->pHandlerGroup[i]->Connect(m->eoBtnGroup[i], i); ic = elm_image_add(m->eoBtnGroup[i]); if (!ic) continue; - _DBG(""); snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, btninfo[i].icon_path); @@ -439,40 +479,36 @@ void CFbBaseView::t_CreateLeftSession(void) elm_object_part_content_set(m->eoBtnGroup[i], FBR_PART_ELM_SWALLOWICON, ic); } - _DBG(""); t_SetSelectedGroupButton(m->eoBtnGroup[E_GRP_ALL]); - _DBG(""); - elm_object_signal_emit(m->eoBtnGroup[E_GRP_ALL], - FBR_SIGNAL_GROUP_SELECTED, ""); + elm_object_signal_emit(m->eoBtnGroup[E_GRP_ALL], FBR_SIGNAL_GROUP_SELECTED, ""); elm_object_focus_set(m->eoBtnGroup[E_GRP_ALL], EINA_TRUE); elm_object_part_content_set(m->eoBase, FBR_PART_GROUPBTN_BOX, box); + + elm_object_focus_next_object_set(m->eoBtnGroup[E_GRP_ALL], m->eoBtnGroup[E_GRP_MUSIC], ELM_FOCUS_UP); + elm_object_focus_next_object_set(m->eoBtnGroup[E_GRP_MUSIC], m->eoBtnGroup[E_GRP_ALL], ELM_FOCUS_DOWN); } 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) { - m->eoSelectedBtnGroup = obj; - int idx = -1; - int a; - for (a = 0; a < TOTAL_GROUP_BTNS; a++) { + for (int a = 0; a < TOTAL_GROUP_BTNS; a++) { if (m->eoBtnGroup[a] == obj) - idx = a; + { + m->eoSelectedBtnGroup = obj; + CInfo::SetGroupIndex(a); + break; + } } - CInfo::SetGroupIndex(idx); } Evas_Object* CFbBaseView::t_SelectedGroupButton(void) @@ -491,9 +527,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,35 +589,36 @@ 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(CUsbConnectionListener::Create()) - _CHECK(CMediaContentDbUpdateListener::Create()) - + _CHECK(m->pLayoutMgr->AddLayout(m->pFbPhotoLayout)) + _CHECK(m->pLayoutMgr->AddLayout(m->pFbVideoLayout)) + _CHECK(m->pLayoutMgr->AddLayout(m->pFbMusicLayout)) + _COMMAND{ + if(!CUsbConnectionListener::Create()) + _ERR("Fail to create CUsbConnectionListener()"); + if(!CMediaContentDbUpdateListener::Create()) + _ERR("Fail to create CMediaContentDbUpdateListener()"); + } _WHEN_SUCCESS{} - _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 +631,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); @@ -595,14 +645,16 @@ void CFbBaseView::Destroy(void) ASSERT(m); CBaseView::Destroy(); - CMediaContentDbUpdateListener::Destroy(); - CUsbConnectionListener::Destroy(); -#if 0 + if(CMediaContentDbUpdateListener::FlagCreate()) + CMediaContentDbUpdateListener::Destroy(); + if(CUsbConnectionListener::FlagCreate()) + CUsbConnectionListener::Destroy(); + m->pLayoutMgr->RemoveLayout(m->pFbMusicLayout); m->pFbMusicLayout->Destroy(); delete m->pFbMusicLayout; - + m->pLayoutMgr->RemoveLayout(m->pFbVideoLayout); m->pFbVideoLayout->Destroy(); delete m->pFbVideoLayout; @@ -610,7 +662,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(); @@ -634,24 +685,27 @@ Evas_Object* CFbBaseView::Base(void) } -void CFbBaseView::OnConnect(void) +void CFbBaseView::OnStatusChanged(SUsbHostDeviceStatus status) { - m->pPopup = new CPopup; - if (!m->pPopup) - return; - if (!m->pPopup->Create(m->eoBase)) { - delete m->pPopup; - m->pPopup = NULL; - return; - } + if(status == USB_HOST_DEV_CONNECTED) { + m->pPopup = new CPopup; + if (!m->pPopup) + return; + if (!m->pPopup->Create(m->eoBase)) { + delete m->pPopup; + m->pPopup = NULL; + return; + } - if (CInfo::SourceType() == E_USB) { - if (!FlagConnected()) { - CInfo::SetSourceType(E_ALL); - elm_object_text_set(m->eoBtnSource, - _(CSourceCtxPopup::SourceText(CInfo::SourceType()))); + if (CInfo::SourceType() == E_USB) { + if (!FlagConnected()) { + CInfo::SetSourceType(E_ALL); + elm_object_text_set(m->eoBtnSource, + _(CSourceCtxPopup::SourceText(CInfo::SourceType()))); + } } } + /* FIXME: should add disconnected flow */ } @@ -668,11 +722,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); } }