From 4d65bfdbb30aea5abb1a32bb691979d183a70d41 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Tue, 17 Mar 2015 10:41:42 +0900 Subject: [PATCH] Apply error checking macro to Create function. Change-Id: I5b3abd80a33f1914b12b16b7142947043bfefd71 Signed-off-by: Kim Tae Soo --- include/base-view.h | 2 + src/views/base-view.cpp | 229 ++++++++++++++++++++++++------------------------ 2 files changed, 115 insertions(+), 116 deletions(-) diff --git a/include/base-view.h b/include/base-view.h index 5a86149..97797c1 100644 --- a/include/base-view.h +++ b/include/base-view.h @@ -64,6 +64,8 @@ private: void m_SetSourceType(void); void m_UpdateCurrentLayout(bool focusFlag); + char *m_Argument(void *data); + protected: virtual void t_OnShow(void); virtual void t_OnHide(void); diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index e519921..faece1f 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -161,14 +161,11 @@ struct SMusicBaseView { CSongLayout *layoutSong; CAlbumLayout *layoutAlbum; - CArtistLayout *layoutArtist; CGenreLayout *layoutGenre; CPlaylistLayout *layoutPlaylists; - CFolderLayout *layoutFolder; - CMusicBaseView *parent; CHandleVolume *pHandleVolume; SMusicBaseView() { @@ -675,126 +672,127 @@ void CMusicBaseView::m_UpdateCurrentLayout(bool focusFlag) } -bool CMusicBaseView::Create(void *data) +char *CMusicBaseView::m_Argument(void *data) { - ASSERT(!m); - - Evas_Object *win = NULL; - CMusicController *mhandle = NULL; - CLayoutMgr *lmgr = NULL; + SArgList *arglist = (SArgList *)data; char *arg = NULL; - m = new SMusicBaseView; - if (!m) { - _ERR(" new for SMusicBaseView failed "); - m = NULL; - return false; - } - - win = CViewMgr::GetInstance()->Window(); - if (!win) { - _ERR(" vimewmgr get win failed "); - delete m; - m = NULL; - return false; - } - - mhandle = CMusicController::GetInstance(); - if (!mhandle) { - _ERR(" music controller get music instance failed "); - delete m; - m = NULL; - return false; - } - - m->base = CCommonUI::AddBase(win, MUSIC_BASE_VIEW); - if (!m->base) { - _ERR(" add base failed "); - delete m; - m = NULL; - return false; - } - - lmgr = new CLayoutMgr; - if (!lmgr) { - evas_object_del(m->base); - delete m; - m = NULL; - return false; - } - - if (!lmgr->Create(m->base, NULL)) { - _ERR(" init layout mgr failed "); - evas_object_del(m->base); - delete m; - m = NULL; - return false; - } - - bool r = CBaseView::Create(data); - if (!r) { - _ERR(" CBaseView Creation failed "); - lmgr->Destroy(); - evas_object_del(m->base); - delete m; - m = NULL; - return false; - } - - m->win = win; - m->mhandle = mhandle; - m->lmgr = lmgr; - m->fresh_view = true; - m->arglist = (SArgList *)data; - m->parent = this; - - m->layoutSong = new CSongLayout(MUSIC_SONG_LAYOUT); - arg = NULL; - if (m->arglist && m->arglist->uri) - arg = m->arglist->uri; - m->layoutSong->Create(m->lmgr, arg); - lmgr->AddLayout(m->layoutSong); - - m->layoutAlbum = new CAlbumLayout(MUSIC_ALBUM_LAYOUT); - arg = NULL; - if (m->arglist && m->arglist->album_id) - arg = m->arglist->album_id; - m->layoutAlbum->Create(m->lmgr, arg); - m->layoutAlbum->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); - lmgr->AddLayout(m->layoutAlbum); - - m->layoutArtist = new CArtistLayout(MUSIC_CATEGORY_ARTIST_LAYOUT); - m->layoutArtist->Create(m->lmgr); - m->layoutArtist->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); - lmgr->AddLayout(m->layoutArtist); - - m->layoutGenre = new CGenreLayout(MUSIC_CATEGORY_GENRE_LAYOUT); - m->layoutGenre->Create(m->lmgr); - m->layoutGenre->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); - lmgr->AddLayout(m->layoutGenre); - - m->layoutPlaylists = new CPlaylistLayout(MUSIC_CATEGORY_PLAYLISTS_LAYOUT); - m->layoutPlaylists->Create(m->lmgr); - m->layoutPlaylists->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); - lmgr->AddLayout(m->layoutPlaylists); - - m->layoutFolder = new CFolderLayout(MUSIC_FOLDER_LAYOUT); - m->layoutFolder->Create(m->lmgr); - lmgr->AddLayout(m->layoutFolder); - - elm_object_part_content_unset(m->base, MUSIC_PART_CONTENT); + if (arglist && arglist->uri) + arg = arglist->uri; + else if (arglist && arglist->album_id) + arg = arglist->album_id; - m_SetSourceType(); + return arg; +} - evas_object_data_set(m->base, BASE_VIEW_DATA, m); - m_CreateFullView(); - m->pHandleVolume->Create(m->base); - m_UpdateFocusSequence(); +bool CMusicBaseView::Create(void *data) +{ + ASSERT(!m); - Connect(m->base, BASE_VIEW, TYPE_KEY_DOWN | TYPE_KEY_UP); + _CREATE_BEGIN{ + Evas_Object *win = NULL; + Evas_Object *base = NULL; + CMusicController *mhandle = NULL; + CLayoutMgr *lmgr = NULL; + CSongLayout *layoutSong = NULL; + CAlbumLayout *layoutAlbum = NULL; + CArtistLayout*layoutArtist = NULL; + CGenreLayout *layoutGenre = NULL; + CPlaylistLayout *layoutPlaylists = NULL; + CFolderLayout *layoutFolder = NULL; + CHandleVolume *handleVolume = NULL; + + _CHECK(m = new SMusicBaseView) + _CHECK(win = CViewMgr::GetInstance()->Window()) + _CHECK(mhandle = CMusicController::GetInstance()) + _CHECK(base = CCommonUI::AddBase(win, MUSIC_BASE_VIEW)) + _CHECK(lmgr = new CLayoutMgr) + _CHECK(lmgr->Create(base, NULL)) + _CHECK(CBaseView::Create(data)) + _CHECK(layoutSong = new CSongLayout(MUSIC_SONG_LAYOUT)) + _CHECK(layoutSong->Create(lmgr, m_Argument(data))) + _CHECK(lmgr->AddLayout(layoutSong)) + _CHECK(layoutAlbum = new CAlbumLayout(MUSIC_ALBUM_LAYOUT)) + _CHECK(layoutAlbum->Create(lmgr, m_Argument(data))) + _CHECK(lmgr->AddLayout(layoutAlbum)) + _CHECK(layoutArtist = new CArtistLayout(MUSIC_CATEGORY_ARTIST_LAYOUT)) + _CHECK(layoutArtist->Create(lmgr)) + _CHECK(lmgr->AddLayout(layoutArtist)) + _CHECK(layoutGenre = new CGenreLayout(MUSIC_CATEGORY_GENRE_LAYOUT)) + _CHECK(layoutGenre->Create(lmgr)) + _CHECK(lmgr->AddLayout(layoutGenre)) + _CHECK(layoutPlaylists = new CPlaylistLayout(MUSIC_CATEGORY_PLAYLISTS_LAYOUT)) + _CHECK(layoutPlaylists->Create(lmgr)) + _CHECK(lmgr->AddLayout(layoutPlaylists)) + _CHECK(layoutFolder = new CFolderLayout(MUSIC_FOLDER_LAYOUT)) + _CHECK(layoutFolder->Create(lmgr)) + _CHECK(lmgr->AddLayout(layoutFolder)) + _CHECK(handleVolume = new CHandleVolume) + _CHECK(handleVolume->Create(base)) + _CHECK(mhandle->AddListener(this)) + + _WHEN_SUCCESS{ + m->base = base; + m->win = win; + m->mhandle = mhandle; + m->lmgr = lmgr; + m->fresh_view = true; + m->arglist = (SArgList *)data; + + m->layoutSong = layoutSong; + m->layoutAlbum = layoutAlbum; + m->layoutArtist = layoutArtist; + m->layoutGenre = layoutGenre; + m->layoutPlaylists = layoutPlaylists; + m->layoutFolder = layoutFolder; + + m->layoutAlbum->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); + m->layoutArtist->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); + m->layoutGenre->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); + m->layoutPlaylists->SetEmptyStatusHandleCallback(sm_CbHandleEmptyStatus, this); + + m->pHandleVolume = handleVolume; + + elm_object_part_content_unset(m->base, MUSIC_PART_CONTENT); + m_SetSourceType(); + evas_object_data_set(m->base, BASE_VIEW_DATA, m); + + m_CreateFullView(); + m_UpdateFocusSequence(); + + Connect(m->base, BASE_VIEW, TYPE_KEY_DOWN | TYPE_KEY_UP); + } - mhandle->AddListener(this); + _CHECK_FAIL{ m->mhandle->RemoveListener(this); } + _CHECK_FAIL{ handleVolume->Destroy(); } + _CHECK_FAIL{ delete handleVolume; } + _CHECK_FAIL{ lmgr->RemoveLayout(layoutFolder); } + _CHECK_FAIL{ layoutFolder->Destroy(); } + _CHECK_FAIL{ delete layoutFolder; } + _CHECK_FAIL{ lmgr->RemoveLayout(layoutPlaylists); } + _CHECK_FAIL{ layoutPlaylists->Destroy(); } + _CHECK_FAIL{ delete layoutPlaylists; } + _CHECK_FAIL{ lmgr->RemoveLayout(layoutGenre); } + _CHECK_FAIL{ layoutGenre->Destroy(); } + _CHECK_FAIL{ delete layoutGenre; } + _CHECK_FAIL{ lmgr->RemoveLayout(layoutArtist); } + _CHECK_FAIL{ layoutArtist->Destroy(); } + _CHECK_FAIL{ delete layoutArtist; } + _CHECK_FAIL{ lmgr->RemoveLayout(layoutAlbum); } + _CHECK_FAIL{ layoutAlbum->Destroy(); } + _CHECK_FAIL{ delete layoutAlbum; } + _CHECK_FAIL{ lmgr->RemoveLayout(layoutSong); } + _CHECK_FAIL{ layoutSong->Destroy(); } + _CHECK_FAIL{ delete layoutSong; } + _CHECK_FAIL{ CBaseView::Destroy(); } + _CHECK_FAIL{ lmgr->Destroy(); } + _CHECK_FAIL{ delete lmgr; } + _CHECK_FAIL{ evas_object_del(m->base); } + _CHECK_FAIL{} + _CHECK_FAIL{} + _CHECK_FAIL{ delete m; m = NULL; } + } _CREATE_END_AND_CATCH{ return false; } return true; } @@ -805,7 +803,6 @@ void CMusicBaseView::Destroy(void) ASSERT(m); m->mhandle->RemoveListener(this); - m->pHandleVolume->Destroy(); m->lmgr->RemoveLayout(m->layoutFolder); -- 2.7.4