Apply error checking macro to Create function. 98/36898/1 submit/tizen_tv/20150317.014329
authorKim Tae Soo <taesoo46.kim@samsung.com>
Tue, 17 Mar 2015 01:41:42 +0000 (10:41 +0900)
committerKim Tae Soo <taesoo46.kim@samsung.com>
Tue, 17 Mar 2015 01:41:42 +0000 (10:41 +0900)
Change-Id: I5b3abd80a33f1914b12b16b7142947043bfefd71
Signed-off-by: Kim Tae Soo <taesoo46.kim@samsung.com>
include/base-view.h
src/views/base-view.cpp

index 5a86149..97797c1 100644 (file)
@@ -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);
index e519921..faece1f 100644 (file)
@@ -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);