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;
}
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;
}