Apply changed UsbConnection API
[profile/tv/apps/native/filebrowser.git] / src / views / BaseView / FbBaseView.cpp
index 256c7f6..3a98993 100644 (file)
@@ -140,18 +140,22 @@ 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) || !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
+               }
+               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)) {
                                        switch(m->curLayoutId)
                                        {
@@ -170,6 +174,7 @@ struct SFbBaseView {
                                        }
                                }
                        }
+
                }
        } *pHandlerBase;
 
@@ -187,11 +192,41 @@ struct SFbBaseView {
                        switch (instance->Type()) {
                        case CCtxPopup::TOPBTN_SORT:
                                elm_object_text_set(m->eoBtnSort, text);
+                               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);
+                               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;
 
@@ -305,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));
@@ -365,23 +392,6 @@ 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++)
-               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);
-
-#endif
        elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, "");
        elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, "");
 }
@@ -394,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;
 
@@ -456,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);
@@ -470,15 +479,15 @@ 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)
@@ -491,15 +500,15 @@ void CFbBaseView::t_CreateFullView(void)
 
 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)
@@ -591,13 +600,14 @@ bool CFbBaseView::Create(void *data)
                _CHECK(m->pLayoutMgr->AddLayout(m->pFbPhotoLayout))
                _CHECK(m->pLayoutMgr->AddLayout(m->pFbVideoLayout))
                _CHECK(m->pLayoutMgr->AddLayout(m->pFbMusicLayout))
-               _CHECK(CUsbConnectionListener::Create())
-               _CHECK(CMediaContentDbUpdateListener::Create())
-
+               _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); }
@@ -621,7 +631,7 @@ 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->curLayoutId = ALL_LAYOUT;    
+       m->curLayoutId = ALL_LAYOUT;
        _DBG("curLayoutId = %s", _get_layout_id(m->curLayoutId));
        t_CreateFullView();
        elm_object_focus_allow_set(eoBase, EINA_FALSE);
@@ -635,13 +645,16 @@ void CFbBaseView::Destroy(void)
        ASSERT(m);
 
        CBaseView::Destroy();
-       CMediaContentDbUpdateListener::Destroy();
-       CUsbConnectionListener::Destroy();
+
+       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;
@@ -672,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 */
 }