Refactoring of class Create function (use macro) 61/36561/1 accepted/tizen/tv/20150310.113402 submit/tizen_tv/20150310.053444
authorKim Tae Soo <taesoo46.kim@samsung.com>
Tue, 10 Mar 2015 05:33:04 +0000 (14:33 +0900)
committerKim Tae Soo <taesoo46.kim@samsung.com>
Tue, 10 Mar 2015 05:33:04 +0000 (14:33 +0900)
Change-Id: I1e3eaa033aa59b02976f2d3fccf26a7fea93a0ed
Signed-off-by: Kim Tae Soo <taesoo46.kim@samsung.com>
src/playback/music-controller.cpp
src/views/album-layout.cpp

index e831a34..7ae4712 100644 (file)
@@ -206,51 +206,35 @@ static void _content_update_cb(void *dt)
 
 SMusicController *CMusicController::t_Create(void)
 {
-       SMusicController *mhandle;
-
-       mhandle = new SMusicController;
-       if (!mhandle) {
-               _ERR(" music init failed ");
-               return NULL;
-       }
-
-       mhandle->statePlay = PLAY_STATUS_INITIAL;
-       mhandle->stateShuffle = SHUFFLE_STATUS_OFF;
-       mhandle->repeatstate = REPEAT_STATUS_ALL;
-       mhandle->initial_index = 0;
-       CInfo::SetSortType(E_SORT_TITLE_A_Z);
-       CInfo::SetSourceType(SOURCE_TYPE_ALL);
-       mhandle->alinfo = new CAlbumInfo;
-
-       if (!mhandle->alinfo->Create()) {
-               _ERR(" mediadata create failed ");
-               delete mhandle;
-               return NULL;
-       }
-
-       if (!mhandle->pMediadata->Create()) {
-               _ERR(" mediadata create failed ");
-               mhandle->alinfo->Destroy();
-               delete mhandle->alinfo;
-               delete mhandle;
-               return NULL;
-       }
-
-       if (!mhandle->pPlayback->Create())
-               _ERR(" playback create failed ");
-
-       if (!mhandle->pPlayback->SetCallback(sm_CbPlaybackCompletion, this))
-               _ERR(" playback add completion callback failed ");
-
-       mhandle->cbinfo = mhandle->pMediadata->AddCallback(E_CONTENT_UPDATE, _content_update_cb, mhandle);
+       SMusicController *mhandle = NULL;
+
+       _CREATE_BEGIN {
+               _CHECK(mhandle = new SMusicController)
+               _CHECK(mhandle->alinfo = new CAlbumInfo)
+               _CHECK(mhandle->alinfo->Create() == true)
+               _CHECK(mhandle->pMediadata->Create() == true)
+               _CHECK(mhandle->pPlayback->Create() == true)
+               _CHECK(mhandle->pPlayback->SetCallback(sm_CbPlaybackCompletion, this) == true)
+               _CHECK(CUsbConnectionListener::Create() == true)
+
+               _WHEN_SUCCESS{
+                       mhandle->statePlay = PLAY_STATUS_INITIAL;
+                       mhandle->stateShuffle = SHUFFLE_STATUS_OFF;
+                       mhandle->repeatstate = REPEAT_STATUS_ALL;
+                       mhandle->initial_index = 0;
+                       CInfo::SetSortType(E_SORT_TITLE_A_Z);
+                       CInfo::SetSourceType(SOURCE_TYPE_ALL);
+                       mhandle->cbinfo = mhandle->pMediadata->AddCallback(E_CONTENT_UPDATE, _content_update_cb, mhandle);
+               }
 
-       if (!CUsbConnectionListener::Create()) {
-               _ERR("CUsbConnectionListener::Create failed");
-               mhandle->pPlayback->Destroy();
-               mhandle->pMediadata->Destroy();
-               delete mhandle;
-               return NULL;
-       }
+               _CHECK_FAIL{ CUsbConnectionListener::Destroy(); }
+               _CHECK_FAIL{}
+               _CHECK_FAIL{ mhandle->pPlayback->Destroy(); }
+               _CHECK_FAIL{ mhandle->pMediadata->Destroy(); }
+               _CHECK_FAIL{ mhandle->alinfo->Destroy(); }
+               _CHECK_FAIL{ delete mhandle->alinfo; }
+               _CHECK_FAIL{ delete mhandle; mhandle = NULL; }
+       } _CREATE_END_AND_CATCH{ return NULL; }
 
        return mhandle;
 }
index 9d5baf5..946b10c 100644 (file)
@@ -419,92 +419,57 @@ bool CAlbumLayout::Create(CLayoutMgr *mgr, const char *albumId)
        Evas_Object *layout = NULL;
        CMusicController *mhandle = NULL;
        CViewMgr *vmgr = NULL;
+       SParcel parcel;
 
-       m = new SAlbumLayout;
-       if (!m) {
-               _ERR(" albumlayout data allocation failed ");
-               return false;
-       }
-
-       vmgr = CViewMgr::GetInstance();
-       if (!vmgr) {
-               _ERR(" get viewmgr failed ");
-               delete m;
-               m = NULL;
-               return false;
-       }
-
-       base = mgr->Base();
-       if (!base) {
-               _ERR(" get base failed ");
-               delete m;
-               m = NULL;
-               return false;
-       }
-
-       win = vmgr->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;
-       }
-
-       layout = CCommonUI::AddBase(base, MUSIC_ALBUM_LAYOUT);
-       if (!layout) {
-               _ERR(" get layout failed ");
-               delete m;
-               m = NULL;
-               return false;
-       }
-
-       bool r = CExtBaseLayout::Create(layout);
-       if (!r) {
-               _ERR(" CBaseLayout creation failed ");
-               evas_object_del(layout);
-               delete m;
-               m = NULL;
-               return false;
-       }
-
-       if (albumId) {
-               m->album_id = new char[strlen(albumId) + 1];
-               strcpy(m->album_id, albumId);
-       }
-       else {
-               m->album_id = NULL;
-       }
-
-       m->win = win;
-       m->base = base;
-       m->vmgr = vmgr;
-       m->mhandle = mhandle;
-       m->lmgr = mgr;
-       m->callback.cbHandleEmptyStatus = NULL;
-       m->callback.cookie = NULL;
+       _CREATE_BEGIN {
+               _CHECK(m = new SAlbumLayout)
+               _CHECK(vmgr = CViewMgr::GetInstance())
+               _CHECK(base = mgr->Base())
+               _CHECK(win = vmgr->Window())
+               _CHECK(mhandle = CMusicController::GetInstance())
+               _CHECK(layout = CCommonUI::AddBase(base, MUSIC_ALBUM_LAYOUT))
+               _CHECK(CExtBaseLayout::Create(layout))
+               _CHECK(m->layoutAlbumSongs = new CAlbumSongsLayout(MUSIC_ALBUM_SONGS_LAYOUT))
+               _CHECK(m->layoutAlbumSongs->Create(mgr))
+               _CHECK(mgr->AddLayout(m->layoutAlbumSongs))
+
+               _WHEN_SUCCESS {
+                       if (albumId) {
+                               m->album_id = new char[strlen(albumId) + 1];
+                               strcpy(m->album_id, albumId);
+                       }
+                       else
+                               m->album_id = NULL;
 
-       m->layoutAlbumSongs = new CAlbumSongsLayout(MUSIC_ALBUM_SONGS_LAYOUT);
-       m->layoutAlbumSongs->Create(m->lmgr);
-       m->lmgr->AddLayout(m->layoutAlbumSongs);
+                       m->win = win;
+                       m->base = base;
+                       m->vmgr = vmgr;
+                       m->mhandle = mhandle;
+                       m->lmgr = mgr;
+                       m->callback.cbHandleEmptyStatus = NULL;
+                       m->callback.cookie = NULL;
 
-       m_CreateAlbumGrid();
+                       m_CreateAlbumGrid();
+                       Connect(layout, ALBUM_LAYOUT, TYPE_KEY_DOWN);
 
-       Connect(layout, ALBUM_LAYOUT, TYPE_KEY_DOWN);
+                       parcel.ctxtInfo = NULL;
+                       parcel.updateType = E_LAYOUT_UPDATE;
+                       parcel.layoutId = MUSIC_ALBUM_LAYOUT;
+                       parcel.keyEvent = NULL;
+                       m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
+               }
 
-       SParcel parcel;
-       parcel.ctxtInfo = NULL;
-       parcel.updateType = E_LAYOUT_UPDATE;
-       parcel.layoutId = MUSIC_ALBUM_LAYOUT;
-       parcel.keyEvent = NULL;
-       m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
+               _CHECK_FAIL{}
+               _CHECK_FAIL{ m->layoutAlbumSongs->Destroy(); }
+               _CHECK_FAIL{ delete m->layoutAlbumSongs; }
+               _CHECK_FAIL{ CExtBaseLayout::Destroy(); }
+               _CHECK_FAIL{ evas_object_del(layout); }
+               _CHECK_FAIL{}
+               _CHECK_FAIL{}
+               _CHECK_FAIL{}
+               _CHECK_FAIL{}
+               _CHECK_FAIL{ delete m; m = NULL; }
+       } _CREATE_END_AND_CATCH{ return false; }
 
        return true;
 }