CSongLayout *layoutSong;
CAlbumLayout *layoutAlbum;
-
CArtistLayout *layoutArtist;
CGenreLayout *layoutGenre;
CPlaylistLayout *layoutPlaylists;
-
CFolderLayout *layoutFolder;
- CMusicBaseView *parent;
CHandleVolume *pHandleVolume;
SMusicBaseView() {
}
-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;
}
ASSERT(m);
m->mhandle->RemoveListener(this);
-
m->pHandleVolume->Destroy();
m->lmgr->RemoveLayout(m->layoutFolder);