Apply changed UsbConnection API
[profile/tv/apps/native/filebrowser.git] / src / views / BaseView / FbBaseView.cpp
index 1fde9b6..3a98993 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;
@@ -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);
        }
 }