From 518933d91a61f0878f353925b73c4c9a6c031952 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Fri, 3 Apr 2015 13:51:10 +0900 Subject: [PATCH 01/16] Add exception handling for the failure of CUsbConnectionListener creation. - Consideration in case of system without any USB port. - Even if CUsbConnectionListener creation fails, app should start properly. Change-Id: I2cf42ece38646a9440710e71c73ea49138e6c863 Signed-off-by: Kim Tae Soo --- src/playback/music-controller.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index 194f835..aff012e 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -217,7 +217,6 @@ SMusicController *CMusicController::t_Create(void) _CHECK(mhandle->pPlayback->Create() == true) _CHECK(mhandle->pPlayback->SetCallback(sm_CbPlaybackCompletion, this) == true) _CHECK(mhandle->pPlaylist = new CPlaylist) - _CHECK(CUsbConnectionListener::Create() == true) _WHEN_SUCCESS{ mhandle->statePlay = PLAY_STATUS_INITIAL; @@ -227,9 +226,13 @@ SMusicController *CMusicController::t_Create(void) CInfo::SetSortType(E_SORT_TITLE_A_Z); CInfo::SetSourceType(SOURCE_TYPE_ALL); mhandle->cbinfo = mhandle->pMediadata->AddCallback(E_CONTENT_UPDATE, sm_CbContentUpdated, this); + + // Even if CUsbConnectionListener creation failed, + // application should run properly. + if (!CUsbConnectionListener::Create()) + _DBG("CUsbConnectionListener::Create failed"); } - _CHECK_FAIL{ CUsbConnectionListener::Destroy(); } _CHECK_FAIL{ delete mhandle->pPlaylist; } _CHECK_FAIL{} _CHECK_FAIL{ mhandle->pPlayback->Destroy(); } @@ -249,7 +252,8 @@ SMusicController *CMusicController::t_Create(void) void CMusicController::t_Destroy(void) { - CUsbConnectionListener::Destroy(); + if (CUsbConnectionListener::FlagCreate()) + CUsbConnectionListener::Destroy(); if (!m->pPlayback->UnsetCallback()) _ERR(" playback remove completion callback failed"); -- 2.7.4 From 868baaedb5d9f3fc128d5f58aa0bf26bb97ebf52 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Fri, 3 Apr 2015 14:01:06 +0900 Subject: [PATCH 02/16] Fix runtime error when USB storage is connected. Change-Id: Id000f68b04c9b47d6a0aa99f0cb075141794c3eb Signed-off-by: Kim Tae Soo --- src/views/base-view.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index 2ce9eb5..c099aa6 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -436,29 +436,33 @@ void CMusicBaseView::m_OnShowLayoutIdler(void) Evas_Object *CMusicBaseView::m_CreateLoadingPopup(void) { - Evas_Object *popup = NULL, *label = NULL, *icon = NULL; + Evas_Object *popup = NULL, *label = NULL, *icon = NULL, *box = NULL; double scale; char buf[MAX_LENGTH]; + scale = elm_config_scale_get(); + popup = elm_popup_add(m->base); if (!popup) return NULL; - elm_object_style_set(popup, MUSIC_STYLE_LOADING_POPUP); elm_popup_orient_set(popup, ELM_POPUP_ORIENT_TOP_RIGHT); elm_popup_timeout_set(popup, MAX_SHOW_TIME); evas_object_show(popup); + box = CCommonUI::AddBox(popup); + if (!box) { + evas_object_del(popup); + return NULL; + } + label = elm_label_add(popup); if (!label) { evas_object_del(popup); return NULL; } - elm_object_style_set(label, MUSIC_STYLE_LOADING_LABEL); elm_object_text_set(label, _(MUSIC_TEXT_LOADING)); - elm_object_content_set(popup, label); - scale = elm_config_scale_get(); icon = elm_icon_add(popup); if (!icon) { @@ -468,10 +472,19 @@ Evas_Object *CMusicBaseView::m_CreateLoadingPopup(void) snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, MUSIC_IMAGE_LOADING); elm_image_file_set(icon, buf, NULL); - elm_image_animated_set(icon, EINA_TRUE); - elm_image_animated_play_set(icon, EINA_TRUE); evas_object_size_hint_min_set(icon, 48 * scale, 48 * scale); - elm_object_part_content_set(popup, MUSIC_SWALLOW_ICON, icon); + + elm_box_horizontal_set(box, EINA_TRUE); + elm_box_padding_set(box, + MUSIC_EDIT_BTNS_PADDING * elm_config_scale_get(), 0); + + elm_box_pack_end(box, icon); + evas_object_show(icon); + + elm_box_pack_end(box, label); + evas_object_show(label); + + elm_object_content_set(popup, box); m->transit = elm_transit_add(); if (!m->transit) { -- 2.7.4 From cb069efe28e18ddb53a5a5749421b5862589a4b3 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Fri, 3 Apr 2015 16:47:46 +0900 Subject: [PATCH 03/16] Modification due to the change of CUsbConnectionListener Change-Id: Iac99edd077278357b75c3129fb56039ce1c6a19c Signed-off-by: Kim Tae Soo --- include/base-view.h | 2 +- include/music-controller.h | 12 +++++++++--- include/playback-view.h | 2 +- src/playback/music-controller.cpp | 35 +++++++++++++++++++++++++---------- src/views/base-view.cpp | 19 ++++++++++++++++--- src/views/playback-view.cpp | 2 +- 6 files changed, 53 insertions(+), 19 deletions(-) diff --git a/include/base-view.h b/include/base-view.h index 3b1482b..0680e98 100644 --- a/include/base-view.h +++ b/include/base-view.h @@ -96,7 +96,7 @@ public: virtual void OnComplete(void); virtual void OnError(void); - virtual void OnUsbConnected(void); + virtual void OnUsbStatusChanged(SUsbStorageStatus status); virtual void OnUpdateContent(void); }; diff --git a/include/music-controller.h b/include/music-controller.h index 153d51e..1024ef2 100644 --- a/include/music-controller.h +++ b/include/music-controller.h @@ -24,14 +24,20 @@ class IMusicControllerListener { public: + enum SUsbStorageStatus { + USB_STORAGE_CONNECTED, + USB_STORAGE_DISCONNECTED + }; + +public: static void s_CbComplete(void *cookie); static void s_CbError(void *cookie); - static void s_CbUsbConnected(void *cookie); + static void s_CbUsbStatusChagned(void *cookie, SUsbStorageStatus status); static void s_CbUpdateContent(void *cookie); virtual void OnComplete(void) = 0; virtual void OnError(void) = 0; - virtual void OnUsbConnected(void) = 0; + virtual void OnUsbStatusChanged(SUsbStorageStatus status) = 0; virtual void OnUpdateContent(void) = 0; }; @@ -123,7 +129,7 @@ public: ERepeatStatus RepeatState(void); public: - virtual void OnConnect(void); + virtual void OnStatusChanged(SUsbHostDeviceStatus status); }; diff --git a/include/playback-view.h b/include/playback-view.h index 0ddfc9a..08ffd3e 100644 --- a/include/playback-view.h +++ b/include/playback-view.h @@ -152,7 +152,7 @@ public: virtual void OnComplete(void); virtual void OnError(void); - virtual void OnUsbConnected(void); + virtual void OnUsbStatusChanged(SUsbStorageStatus status); virtual void OnUpdateContent(void); }; diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index aff012e..b8e14c1 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -71,11 +71,11 @@ void IMusicControllerListener::s_CbError(void *cookie) } -void IMusicControllerListener::s_CbUsbConnected(void *cookie) +void IMusicControllerListener::s_CbUsbStatusChagned(void *cookie, SUsbStorageStatus status) { IMusicControllerListener *root = (IMusicControllerListener *)cookie; if (root) - root->OnUsbConnected(); + root->OnUsbStatusChanged(status); } @@ -821,7 +821,7 @@ ERepeatStatus CMusicController::RepeatState(void) } -void CMusicController::OnConnect(void) +void CMusicController::OnStatusChanged(SUsbHostDeviceStatus status) { if (!m) return; @@ -830,14 +830,29 @@ void CMusicController::OnConnect(void) IMusicControllerListener *mcListener = NULL;; void *obj; - if (CInfo::SourceType() == SOURCE_TYPE_USB) { - if (!FlagConnected()) - CInfo::SetSourceType(SOURCE_TYPE_ALL); + if (status == USB_HOST_DEV_CONNECTED) { + if (CInfo::SourceType() == SOURCE_TYPE_USB) { + if (!FlagConnected()) + CInfo::SetSourceType(SOURCE_TYPE_ALL); + } + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->s_CbUsbStatusChagned(mcListener, + IMusicControllerListener::USB_STORAGE_CONNECTED); + } } + else { + if (CInfo::SourceType() == SOURCE_TYPE_USB) { + CInfo::SetSourceType(SOURCE_TYPE_ALL); + } - EINA_LIST_FOREACH(m->elListener, l, obj) { - mcListener = (IMusicControllerListener *)obj; - if (mcListener) - mcListener->s_CbUsbConnected(mcListener); + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->s_CbUsbStatusChagned(mcListener, + IMusicControllerListener::USB_STORAGE_DISCONNECTED); + } } } \ No newline at end of file diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index c099aa6..c3fc929 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -495,7 +495,7 @@ Evas_Object *CMusicBaseView::m_CreateLoadingPopup(void) elm_transit_object_add(m->transit, icon); elm_transit_effect_rotation_add(m->transit, 0, 360); elm_transit_duration_set(m->transit, 1); - elm_transit_repeat_times_set(m->transit, 5); + elm_transit_repeat_times_set(m->transit, MAX_SHOW_TIME); elm_transit_objects_final_state_keep_set(m->transit, EINA_TRUE); elm_transit_go(m->transit); @@ -1211,9 +1211,22 @@ void CMusicBaseView::OnError(void) } -void CMusicBaseView::OnUsbConnected(void) +void CMusicBaseView::OnUsbStatusChanged(SUsbStorageStatus status) { - m->popup = m_CreateLoadingPopup(); + switch (status) { + case USB_STORAGE_CONNECTED: + m_DestroyPopup(); + m->popup = m_CreateLoadingPopup(); + break; + + case USB_STORAGE_DISCONNECTED: + m_DestroyPopup(); + break; + + default: + ASSERT(!"Invalid Status"); + break; + } } diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index 3cf03b2..f1028f3 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -2128,7 +2128,7 @@ void CPlaybackView::OnError(void) } -void CPlaybackView::OnUsbConnected(void) +void CPlaybackView::OnUsbStatusChanged(SUsbStorageStatus status) { } -- 2.7.4 From a89e1e282083b085906d76ec78867ce61e350745 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Tue, 7 Apr 2015 11:30:44 +0900 Subject: [PATCH 04/16] Modification due to the chnage of UsbConnectionListener Change-Id: If57b6a9e47d47a4eccd2b3d50e07ba4821e45197 Signed-off-by: Kim Tae Soo --- include/music-controller.h | 3 ++- src/playback/music-controller.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/music-controller.h b/include/music-controller.h index 1024ef2..bd9f3b7 100644 --- a/include/music-controller.h +++ b/include/music-controller.h @@ -129,7 +129,8 @@ public: ERepeatStatus RepeatState(void); public: - virtual void OnStatusChanged(SUsbHostDeviceStatus status); + virtual void OnStatusChanged(SUsbHostDeviceInfo *changedDevice, + SUsbHostDeviceStatus status); }; diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index b8e14c1..7c593e1 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -821,7 +821,8 @@ ERepeatStatus CMusicController::RepeatState(void) } -void CMusicController::OnStatusChanged(SUsbHostDeviceStatus status) +void CMusicController::OnStatusChanged(SUsbHostDeviceInfo *changedDevice, + SUsbHostDeviceStatus status) { if (!m) return; -- 2.7.4 From 77ea5aa2c43721d31f8c54c48d2003212c294556 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Thu, 9 Apr 2015 09:08:58 +0900 Subject: [PATCH 05/16] Fix memory leak Change-Id: I01c4b233a0c0ce0359dbf76ec867cd0b879f0404 Signed-off-by: Kim Tae Soo --- src/playback/music-controller.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index 7c593e1..19e49aa 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -259,13 +259,16 @@ void CMusicController::t_Destroy(void) _ERR(" playback remove completion callback failed"); m->pPlayback->Destroy(); + delete m->pPlayback; if (m->pPlaylist->FlagCreate()) { m->pPlaylist->Destroy(); } + delete m->pPlaylist; m->pMediadata->RemoveCallback(m->cbinfo); m->pMediadata->Destroy(); + delete m->pMediadata; m->alinfo->Destroy(); delete m->alinfo; -- 2.7.4 From c1f177c37d5642c885dac9218ebc890b40d3112c Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Thu, 9 Apr 2015 16:05:59 +0900 Subject: [PATCH 06/16] Modification for CPlaybackView to exist in the view stack always. : CPlaybackView should always exist in view stack to handle remote key event for playback. Change-Id: Ifea2bca8320338dbedac035de06e76ef98bcf787 Signed-off-by: Kim Tae Soo --- src/main.cpp | 7 +++++++ src/views/base-view.cpp | 18 ++++++++++++++---- src/views/common-ui.cpp | 14 ++++++++++++-- src/views/playback-view.cpp | 17 ++++++++++++++++- src/views/song-layout.cpp | 10 ++++++++-- 5 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a98f343..ce2272d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -223,6 +223,13 @@ public: m_pViewMgr->AddCallback(&cb); _DBG(""); + if (!m_pViewMgr->PushView(MUSIC_PLAYBACK_VIEW, NULL, false)) { + _ERR(" view push failed "); + CViewMgr::Finalize(); + CMusicController::Finalize(); + goto error; + } + if (!m_pViewMgr->PushView(MUSIC_BASE_VIEW, ad.arglist)) { _ERR(" view push failed "); CViewMgr::Finalize(); diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index c3fc929..ff8cea2 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -319,8 +319,13 @@ void CMusicBaseView::m_GotoPlayback(void) memset(&parcel, 0, sizeof(SParcel)); parcel.updateType = E_PLAYLIST_UPDATE; - if (!CViewMgr::GetInstance()->PushView(MUSIC_PLAYBACK_VIEW, &parcel)) - _ERR(" viewmgr push view MUSIC_PLAYBACK_VIEW failed "); + t_OnHide(); + + if (!CViewMgr::GetInstance()->UpdateView(MUSIC_PLAYBACK_VIEW, &parcel)) + _ERR("CViewMgr::UpdateView MUSIC_PLAYBACK_VIEW failed "); + + if (!CViewMgr::GetInstance()->ShowView(MUSIC_PLAYBACK_VIEW)) + _ERR("CViewMgr::ShowView MUSIC_PLAYBACK_VIEW failed "); } @@ -1131,8 +1136,13 @@ void CMusicBaseView::OnMouseClicked(int id, Evas_Object *obj) state = m->mhandle->PlayState(); if (state != PLAY_STATUS_INITIAL) { - if (!CViewMgr::GetInstance()->PushView(MUSIC_PLAYBACK_VIEW, NULL)) - _ERR(" viewmgr push view failed "); + t_OnHide(); + + if (!CViewMgr::GetInstance()->UpdateView(MUSIC_PLAYBACK_VIEW, NULL)) + _ERR("CViewMgr::UpdateView failed"); + + if (!CViewMgr::GetInstance()->ShowView(MUSIC_PLAYBACK_VIEW)) + _ERR("CViewMgr::ShowView failed"); return; } diff --git a/src/views/common-ui.cpp b/src/views/common-ui.cpp index 352056f..c52004b 100644 --- a/src/views/common-ui.cpp +++ b/src/views/common-ui.cpp @@ -161,11 +161,21 @@ void CCommonUI::UpdatePlaybackView(EAddType type, switch (type) { case ADD_TYPE_FRESH: { + if (CViewMgr::GetInstance()->CheckTop(MUSIC_CONTEXT_VIEW)) + if (!vmgr->HideView(MUSIC_CONTEXT_VIEW)) + _ERR("CViewMgr::HideView failed"); + + if (!vmgr->HideView(MUSIC_BASE_VIEW)) + _ERR("CViewMgr::HideView failed"); + SParcel parcel; memset(&parcel, 0, sizeof(SParcel)); parcel.updateType = E_PLAYLIST_UPDATE; - if (!vmgr->PushView((const char *)MUSIC_PLAYBACK_VIEW, &parcel)) - _ERR("PushView of PlaybackView Failed"); + if (!vmgr->UpdateView((const char *)MUSIC_PLAYBACK_VIEW, &parcel)) + _ERR("UpdateView of PlaybackView Failed"); + + if (!vmgr->ShowView((const char *)MUSIC_PLAYBACK_VIEW)) + _ERR("ShowView of PlaybackView Failed"); } return; diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index f1028f3..6459d9f 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -298,6 +298,11 @@ void CPlaybackView::m_OnCtxtUpdate(EActionType type, int lid) focusedItem = m->focused_item; } + if (!CViewMgr::GetInstance()->HideView(MUSIC_BASE_VIEW)) + _ERR("CViewMgr::HideView failed"); + + t_OnShow(); + if (focusedItem) { elm_genlist_item_show(focusedItem, ELM_GENLIST_ITEM_SCROLLTO_IN); elm_object_item_focus_set(focusedItem, EINA_TRUE); @@ -968,7 +973,17 @@ void CPlaybackView::m_KeyBackPress(void) } t_OnHide(); - m->mgr->PopView(); + + if (!CViewMgr::GetInstance()->ShowView(MUSIC_BASE_VIEW)) + _ERR("CViewMgr::ShowView failed"); + + if (CViewMgr::GetInstance()->CheckTop(MUSIC_CONTEXT_VIEW)) { + if (!CViewMgr::GetInstance()->UpdateView(MUSIC_CONTEXT_VIEW, NULL)) + _ERR("CViewMgr::UpdateView failed"); + + if (!CViewMgr::GetInstance()->ShowView(MUSIC_CONTEXT_VIEW)) + _ERR("CViewMgr::ShowView failed"); + } } diff --git a/src/views/song-layout.cpp b/src/views/song-layout.cpp index 5eb8d35..8e4f1dd 100644 --- a/src/views/song-layout.cpp +++ b/src/views/song-layout.cpp @@ -447,8 +447,14 @@ void CSongLayout::m_GotoPlayback(void) memset(&parcel, 0, sizeof(SParcel)); parcel.updateType = E_PLAYLIST_UPDATE; - if (!m->vmgr->PushView(MUSIC_PLAYBACK_VIEW, &parcel)) - _ERR(" viewmgr push view MUSIC_PLAYBACK_VIEW failed "); + if (!m->vmgr->HideView(MUSIC_BASE_VIEW)) + _ERR("CViewMgr::HideView MUSIC_BASE_VIEW failed "); + + if (!m->vmgr->UpdateView(MUSIC_PLAYBACK_VIEW, &parcel)) + _ERR("CViewMgr::UpdateView MUSIC_PLAYBACK_VIEW failed "); + + if (!m->vmgr->ShowView(MUSIC_PLAYBACK_VIEW)) + _ERR("CViewMgr::ShowView MUSIC_PLAYBACK_VIEW failed "); } -- 2.7.4 From fea973ecc396581dd0328d5cb43c3c695f48e1b2 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Fri, 10 Apr 2015 15:04:57 +0900 Subject: [PATCH 07/16] Modification due to the AppCommon change. (Addition of key string definitions) Change-Id: I29dc7fd9005a8e11f53f74ed99a10d24e0393fff Signed-off-by: Kim Tae Soo --- include/define.h | 45 --------------------------------------------- 1 file changed, 45 deletions(-) diff --git a/include/define.h b/include/define.h index ac1b648..39c5cda 100644 --- a/include/define.h +++ b/include/define.h @@ -428,51 +428,6 @@ #define POSITION_PLAY_LIST_POPUP_X 1645 #define POSITION_PLAY_LIST_POPUP_Y 190 -/* TEMP KEY DEFINITION */ -#undef KEY_UP -#define KEY_UP "Up" -#undef KEY_DOWN -#define KEY_DOWN "Down" -#undef KEY_LEFT -#define KEY_LEFT "Left" -#undef KEY_RIGHT -#define KEY_RIGHT "Right" -#undef KEY_VOLUMEUP -#define KEY_VOLUMEUP "F9" -#undef KEY_VOLUMEDOWN -#define KEY_VOLUMEDOWN "F10" -#undef KEY_ENTER -#define KEY_ENTER "Return" -#undef KEY_BACK -#define KEY_BACK "Escape" -#undef KEY_MENU -#define KEY_MENU "Super_L" -#undef KEY_VOLUMEUP_REMOTE -#define KEY_VOLUMEUP_REMOTE "XF86AudioRaiseVolume" -#undef KEY_VOLUMEDOWN_REMOTE -#define KEY_VOLUMEDOWN_REMOTE "XF86AudioLowerVolume" -#undef KEY_ENTER_REMOTE -#define KEY_ENTER_REMOTE "KP_Enter" -#undef KEY_BACK_REMOTE -#define KEY_BACK_REMOTE "XF86Close" -#undef KEY_MENU_REMOTE -#define KEY_MENU_REMOTE "XF86Send" -#undef KEY_PLAY -#define KEY_PLAY "XF86AudioPlay" -#undef KEY_PAUSE -#define KEY_PAUSE "Pause" -#undef KEY_NEXT -#define KEY_NEXT "XF86AudioNext" -#undef KEY_PREVIOUS -#define KEY_PREVIOUS "XF86AudioPrev" -#undef KEY_MUTE -#define KEY_MUTE "XF86AudioMute" - -/* SHOULD BE DEFINED */ -#undef KEY_EXIT -#define KEY_EXIT "Exit" - - /* SORTING ID */ #define SORT_BY_ARTIST_AZ "SORT_BY_ARTIST_AZ" #define SORT_BY_ARTIST_ZA "SORT_BY_ARTIST_ZA" -- 2.7.4 From a57e666ea02f7b0acfcfbd4bb5596d14ebb3ee3c Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Mon, 13 Apr 2015 11:51:54 +0900 Subject: [PATCH 08/16] Clean the source code Change-Id: I97822805b9009326e906c57b7005f2682758fca2 Signed-off-by: Kim Tae Soo --- src/views/entry-popup.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/views/entry-popup.cpp b/src/views/entry-popup.cpp index e77236a..d92147c 100644 --- a/src/views/entry-popup.cpp +++ b/src/views/entry-popup.cpp @@ -33,6 +33,10 @@ struct SEntryPopup { Ecore_Idler *idler; }; +enum EObject { + EO_ENTRY +}; + Eina_Bool CEntryPopup::sm_CbFocusIdler(void *dt) { @@ -104,7 +108,7 @@ bool CEntryPopup::Create(Evas_Object *base, const char *text, void(*cbEntryName) m->data = data; m->idler = ecore_idler_add(sm_CbFocusIdler, this); - Connect(entry); + Connect(entry, EO_ENTRY, TYPE_KEY_DOWN); return true; } @@ -140,13 +144,20 @@ void CEntryPopup::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Do if (!ev->keyname) return; - if (!strcmp(ev->keyname, KEY_BACK) || - !strcmp(ev->keyname, KEY_BACK_REMOTE)) - Destroy(); - else if (!strcmp(ev->keyname, KEY_ENTER) || - !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { - str = elm_entry_entry_get(obj); - if (m->cbEntryName && str) - m->cbEntryName(m->data, str); + switch (id) { + case EO_ENTRY: + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE)) + Destroy(); + else if (!strcmp(ev->keyname, KEY_ENTER) || + !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { + str = elm_entry_entry_get(obj); + if (m->cbEntryName && str) + m->cbEntryName(m->data, str); + } + break; + + default: + break; } } -- 2.7.4 From b5141aac84c0dd50b9484f4c3d7883f21d579060 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Mon, 13 Apr 2015 14:56:26 +0900 Subject: [PATCH 09/16] Apply error-checking macro to CPlayListCtxPopup::Create. Change-Id: Icac72ee20ef2d51d382aee59dc029e00b1c51dbb Signed-off-by: Kim Tae Soo --- src/views/PlayListCtxPopup.cpp | 108 ++++++++++++++++++++++------------------- src/views/PlayListCtxPopup.h | 4 ++ 2 files changed, 62 insertions(+), 50 deletions(-) diff --git a/src/views/PlayListCtxPopup.cpp b/src/views/PlayListCtxPopup.cpp index 123c989..be995e1 100644 --- a/src/views/PlayListCtxPopup.cpp +++ b/src/views/PlayListCtxPopup.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "i18n.h" #include "define.h" #include "dbg.h" @@ -76,75 +77,82 @@ void CPlayListCtxPopup::t_OnBtnClicked(Evas_Object* obj, void* ev) } -bool CPlayListCtxPopup::Create(Evas_Object* base, const SCallback* callback, Eina_List *playList) +bool CPlayListCtxPopup::m_SetBtnString(Eina_List *playlistList) { - Eina_List *l = NULL; - SCtxtPlaylistItem *item = NULL; - int i; - void *obj = NULL; - - m = new SPlayListCtxPopup; - if (!m) { - _ERR("Memory Alloc Failed!!"); - return false; - } - - m->listSize = eina_list_count(playList); - if (m->listSize == 0) { - _DBG("Playlist is empty."); - delete m; - m = NULL; - return false; - } + Eina_List *l; + SCtxtPlaylistItem *item; + void *obj; + int index = 0; - m->settingTexts = new char*[m->listSize]; - m->btnIds = new char*[m->listSize]; - m->dbIds = new int[m->listSize]; - - i = 0; - EINA_LIST_FOREACH(playList, l, obj) { + EINA_LIST_FOREACH(playlistList, l, obj) { item = (SCtxtPlaylistItem *)obj; - m->settingTexts[i] = new char[strlen(N_(item->name)) + 1]; - m->btnIds[i] = new char[strlen(item->name) + 1]; - m->dbIds[i] = item->id; - strcpy(m->settingTexts[i], N_(item->name)); - strcpy(m->btnIds[i], item->name); + _CREATE_BEGIN{ + _CHECK(m->settingTexts[index] = new char[strlen(N_(item->name)) + 1]) + _CHECK(m->btnIds[index] = new char[strlen(item->name) + 1]) - i++; - } + _WHEN_SUCCESS{ + m->dbIds[index] = item->id; + strcpy(m->settingTexts[index], N_(item->name)); + strcpy(m->btnIds[index], item->name); + } - bool r = CCtxPopup::Create(base, callback, true); - if (r == false) { - _ERR("CCtxPopup::Create failed"); - for (i = 0; i < m->listSize; i++) { - delete[] m->settingTexts[i]; - delete[] m->btnIds[i]; - } + _CHECK_FAIL{ delete[] m->btnIds[index]; m->btnIds[index] = NULL; } + _CHECK_FAIL{ delete[] m->settingTexts[index]; m->settingTexts[index] = NULL; } + } _CREATE_END_AND_CATCH{ return false; } - delete[] m->settingTexts; - delete[] m->btnIds; - delete[] m->dbIds; - delete m; - - m = NULL; - return false; + index++; } return true; } -void CPlayListCtxPopup::Destroy(void) +void CPlayListCtxPopup::m_DeleteBtnString(void) { - CCtxPopup::Destroy(); - int i; - for (i = 0; i < m->listSize; i++) { delete[] m->settingTexts[i]; delete[] m->btnIds[i]; } +} + + +bool CPlayListCtxPopup::Create(Evas_Object* base, const SCallback* callback, Eina_List *playList) +{ + Eina_List *l = NULL; + SCtxtPlaylistItem *item = NULL; + + _CREATE_BEGIN{ + _CHECK(m = new SPlayListCtxPopup) + _CHECK(m->listSize = eina_list_count(playList)) + _CHECK(m->settingTexts = new char*[m->listSize]) + _COMMAND{ memset(m->settingTexts, NULL, m->listSize * sizeof(char*)); } + _CHECK(m->btnIds = new char*[m->listSize]) + _COMMAND{ memset(m->btnIds, NULL, m->listSize * sizeof(char*)); } + _CHECK(m->dbIds = new int[m->listSize]) + _COMMAND{ memset(m->dbIds, NULL, m->listSize * sizeof(int)); } + _CHECK(m_SetBtnString(playList)) + _CHECK(CCtxPopup::Create(base, callback, true)) + + _CHECK_FAIL{ CCtxPopup::Destroy(); } + _CHECK_FAIL{ m_DeleteBtnString(); } + _CHECK_FAIL{ delete[] m->dbIds; } + _CHECK_FAIL{ delete[] m->btnIds; } + _CHECK_FAIL{ delete[] m->settingTexts; } + _CHECK_FAIL{} + _CHECK_FAIL{ delete m; m = NULL; } + } _CREATE_END_AND_CATCH{ return false; } + + return true; +} + + +void CPlayListCtxPopup::Destroy(void) +{ + CCtxPopup::Destroy(); + + m_DeleteBtnString(); delete[] m->settingTexts; delete[] m->btnIds; diff --git a/src/views/PlayListCtxPopup.h b/src/views/PlayListCtxPopup.h index 29888d2..6b6a34f 100644 --- a/src/views/PlayListCtxPopup.h +++ b/src/views/PlayListCtxPopup.h @@ -11,6 +11,10 @@ protected: virtual void t_OnConfiguration(void); virtual void t_OnBtnClicked(Evas_Object* obj, void* ev); +private: + bool m_SetBtnString(Eina_List *playlistList); + void m_DeleteBtnString(void); + public: CPlayListCtxPopup() : m(0) {} -- 2.7.4 From 38d685b6a7c5b8eedf3851b1211540da27433909 Mon Sep 17 00:00:00 2001 From: Kim Youngjin Date: Mon, 13 Apr 2015 21:03:14 +0900 Subject: [PATCH 10/16] Playback module is changed. Playback module make events when playback status is changed. Change-Id: I7a5e9da3b9ed54c62335126e4da4d2eb7abe91c7 Signed-off-by: Kim Youngjin --- CMakeLists.txt | 1 + include/music-controller.h | 80 ++-- include/playback-mgr.h | 12 +- include/playback-view.h | 83 +++- include/playlist-mgr.h | 19 - src/main.cpp | 11 - src/playback/MusicControllerImpl.cpp | 825 +++++++++++++++++++++++++++++++++++ src/playback/MusicControllerImpl.h | 109 +++++ src/playback/music-controller.cpp | 643 +++------------------------ src/playback/playback-mgr.cpp | 17 +- src/views/PlayListCtxPopup.cpp | 10 +- src/views/album-layout.cpp | 50 +-- src/views/album-songs-layout.cpp | 55 ++- src/views/artist-layout.cpp | 6 +- src/views/base-view.cpp | 46 +- src/views/category-layout.cpp | 81 ++-- src/views/category-songs-layout.cpp | 53 ++- src/views/context-view.cpp | 32 +- src/views/folder-layout.cpp | 55 ++- src/views/genre-layout.cpp | 6 +- src/views/playback-view.cpp | 762 +++++++++++++++++++------------- src/views/playlist-layout.cpp | 20 +- src/views/song-layout.cpp | 54 ++- 23 files changed, 1818 insertions(+), 1212 deletions(-) create mode 100644 src/playback/MusicControllerImpl.cpp create mode 100644 src/playback/MusicControllerImpl.h diff --git a/CMakeLists.txt b/CMakeLists.txt index bc0740e..2ce4e77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,7 @@ SET(SRCS src/main.cpp src/views/RemovePopupWindow.cpp src/playback/playlist-mgr.cpp src/playback/music-controller.cpp + src/playback/MusicControllerImpl.cpp src/playback/playback-mgr.cpp src/playback/volume-control.cpp src/data/mediadata.cpp diff --git a/include/music-controller.h b/include/music-controller.h index bd9f3b7..018b18f 100644 --- a/include/music-controller.h +++ b/include/music-controller.h @@ -20,6 +20,7 @@ #include #include +#include "playback-mgr.h" class IMusicControllerListener { @@ -30,59 +31,39 @@ public: }; public: - static void s_CbComplete(void *cookie); - static void s_CbError(void *cookie); - static void s_CbUsbStatusChagned(void *cookie, SUsbStorageStatus status); - static void s_CbUpdateContent(void *cookie); - - virtual void OnComplete(void) = 0; - virtual void OnError(void) = 0; - virtual void OnUsbStatusChanged(SUsbStorageStatus status) = 0; - virtual void OnUpdateContent(void) = 0; + //! This function is invoked when playback is complete. + virtual void OnComplete(void) {} + //! This function is invoked when playback occurs any error. + virtual void OnError(void) {} + //! This function is invoked when usb is connected or not. + virtual void OnUsbStatusChanged(SUsbStorageStatus status) {} + //! This function is invoked when content is updated.. + virtual void OnUpdateContent(void) {} + //! This function is invoked when new song is played. + virtual void OnStartPlayback(void) {} + //! This function is invoked when the playback is stopped. + virtual void OnStopPlayback(void) {} + //! This function is invoked when playback is paused. + virtual void OnPausePlayback(void) {} + //! This function is invoked when playback is resumed. + virtual void OnResumePlayback(void) {} + //! + virtual void OnPosition(int milsec) {} }; -class CMusicController : public CUsbConnectionListener { +class CMusicController { private: - static CMusicController *instance; - static int refCnt; - struct SMusicController *m; -private: - enum EDirectionType { - DIR_PREVIOUS, - DIR_NEXT - }; - - enum ENextType { - E_ON_COMPLETE, - E_BUTTON_CLICK - }; - -private: - CMusicController() {} - virtual ~CMusicController() {} - -private: - static void sm_CbPlaybackCompletion(void *data); - void m_OnPlaybackCompletion(void); - static void sm_CbContentUpdated(void *dt); - void m_OnContentUpdated(void); - - void m_InvokeErrorCallback(SMusicController *m, int type); - -protected: - bool t_PlayNext(int direction, int playnext_type); - SMusicController* t_Create(void); - void t_Destroy(void); - public: - static bool Initialize(void); - static void Finalize(void); - - static CMusicController* GetInstance(void); + CMusicController() : m(0) {} + virtual ~CMusicController() {} + bool FlagCreate(void) { return !!m; } + bool Create(void); + virtual void Destroy(void); + bool Start(void); bool Stop(void); bool Resume(void); @@ -94,7 +75,7 @@ public: bool GetCurrentSongIndex(int *ind); bool GetTotalSongs(int *ts); bool GetSonginfoFromIndex(int index, CSongInfo **const csinfo); - + bool SetPosition(int milsec); bool GetPosition(int *const milseconds); @@ -103,9 +84,11 @@ public: bool UpdatePlaylist(Eina_List *slist, int addmode); bool EmptyPlaylist(void); + bool PlayPreviousSong(void); bool PlayNextSong(void); bool PlayIndexSong(int index); + bool RemoveSong(CSongInfo *sinfo, int index); bool MediaGetList(int EListType, void *info, Eina_List **list); @@ -127,12 +110,7 @@ public: bool SetRepeatState(ERepeatStatus state); ERepeatStatus RepeatState(void); - -public: - virtual void OnStatusChanged(SUsbHostDeviceInfo *changedDevice, - SUsbHostDeviceStatus status); }; - #endif /*__MUSIC_CONTROLLER_H__*/ diff --git a/include/playback-mgr.h b/include/playback-mgr.h index 3edb5c8..0711439 100644 --- a/include/playback-mgr.h +++ b/include/playback-mgr.h @@ -21,12 +21,20 @@ #include +class ICompleteListener { +public: + virtual void t_OnPlayComplete(void) = 0; +}; + + class CPlayback { private: struct SPlayback* m; -public: +private: + static void sm_CbComplete(void *cookie); +public: CPlayback() : m(0) {} virtual ~CPlayback() {} bool FlagCreate(void) { return !!m; } @@ -34,7 +42,7 @@ public: bool Create(void); virtual void Destroy(void); - bool SetCallback(player_completed_cb cbPlaybackCompletion, void *data); + bool SetCallback(ICompleteListener *listener);//player_completed_cb cbPlaybackCompletion, void *data); bool UnsetCallback(void); bool Start(void); diff --git a/include/playback-view.h b/include/playback-view.h index 08ffd3e..4d52667 100644 --- a/include/playback-view.h +++ b/include/playback-view.h @@ -25,20 +25,91 @@ struct SItemInfo; +class CSliderWidget : + public CListenerMgr, + public IMusicControllerListener, + public IMouseMoveListener, + public IChangedListener { +private: + struct SSliderWidget *m; + +private: + static Eina_Bool sm_CbUpdateSlider(void *dt); + Eina_Bool m_OnUpdateSlider(void); + + bool m_AddSlider(void); + void m_RemoveTimer(void); + + void m_UpdateSongInfo(void); + +public: + CSliderWidget() : + IMouseMoveListener(this), + IChangedListener(this), + m(0) {} + virtual ~CSliderWidget() {} + + bool Create(Evas_Object *eoParent); + virtual void Destroy(void); + + Evas_Object* Base(void); + + void Init(void); + + //! This function is invoked when playback is complete. + virtual void OnComplete(void); + //! This function is invoked when new song is played. + virtual void OnStartPlayback(void); + //! + virtual void OnStopPlayback(void); + //! This function is invoked when playback is paused. + virtual void OnPausePlayback(void); + //! This function is invoked when playback is resumed. + virtual void OnResumePlayback(void); + //! + virtual void OnPosition(int milsec); + + virtual void OnChanged(int id, Evas_Object *obj); + virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev); +}; + + +class CTimer { +private: + struct STimer *m; + +private: + static Eina_Bool sm_CbTimer(void *data); + +protected: + virtual void t_OnTimer(int id); + +public: + CTimer() : m(0) {} + virtual ~CTimer() {} + + bool Create(void); + virtual void Destroy(void); + + bool SetTimer(int id, int ms); + void KillTimer(int id); +}; + + class CPlaybackView : public CBaseView, public IMouseClickedListener, public IMouseMoveListener, public IPressedListener, public IUnpressedListener, - public IChangedListener, public IRealizedListener, public IActivatedListener, - public IMusicControllerListener { + public IMusicControllerListener, + public CTimer { private: struct SPlaybackView* m; private: - static Eina_Bool sm_CbUpdateSlider(void *dt); + //static Eina_Bool sm_CbUpdateSlider(void *dt); static Eina_Bool sm_CbLongpressTimer(void *dt); void m_OnLongpressTimer(void); @@ -96,7 +167,6 @@ private: void m_HandleOnRepeated(void); void m_DeleteSelectedItems(void); - void m_AddSlider(void); void m_AddAlbumCover(void); void m_AddCurrentSonginfo(void); void m_AddEditPlaylistButtons(void); @@ -129,7 +199,7 @@ protected: public: CPlaybackView(const char *pViewId) : CBaseView(pViewId), IMouseClickedListener(this), IMouseMoveListener(this), - IPressedListener(this), IUnpressedListener(this), IChangedListener(this), + IPressedListener(this), IUnpressedListener(this), IRealizedListener(this), IActivatedListener(this), m(0) {} virtual ~CPlaybackView() {} @@ -146,7 +216,6 @@ public: virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev); virtual void OnPressed(int id, Evas_Object *obj); virtual void OnUnpressed(int id, Evas_Object *obj); - virtual void OnChanged(int id, Evas_Object *obj); virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item); virtual void OnActivated(int id, Evas_Object *obj, Elm_Object_Item *item); @@ -154,6 +223,8 @@ public: virtual void OnError(void); virtual void OnUsbStatusChanged(SUsbStorageStatus status); virtual void OnUpdateContent(void); + virtual void OnStartPlayback(void); + virtual void OnStopPlayback(void); }; diff --git a/include/playlist-mgr.h b/include/playlist-mgr.h index f98919e..12373e0 100644 --- a/include/playlist-mgr.h +++ b/include/playlist-mgr.h @@ -50,24 +50,5 @@ public: bool SetCurrentSong(char *mediaid); }; -/* -struct playlist *playlist_create(Eina_List *songlist); -struct playlist *playlist_update(struct playlist *plist, Eina_List *songlist, - int addmode); -void playlist_destroy(struct playlist *plist); - -const char *playlist_get_songpath_from_index(struct playlist *plist, int index); -int playlist_get_songinfo_from_index(struct playlist *plist, int index, - struct SSongInfo **const csinfo); -int playlist_get_total_songs(struct playlist *plist, int *total_songs); -int playlist_get_cur_song_index(struct playlist *plist, int *index); -int playlist_set_cur_song_index(struct playlist *plist, int index); -int playlist_load_next_song(struct playlist *plist, int shufstate); -int playlist_load_previous_song(struct playlist *plist, int shufstate); -int playlist_remove_song(struct playlist *plist, struct SSongInfo *sinfo, - int index, int shufstate); -void playlist_update_shuffle(struct playlist *plist); -int playlist_set_current_song(struct playlist *plist, char *mediaid); -*/ #endif /*__PLAYLIST_MGR_H__*/ diff --git a/src/main.cpp b/src/main.cpp index ce2272d..d7bf819 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -125,7 +125,6 @@ public: CSortMgr::Finalize(); CViewMgr::Finalize(); - CMusicController::Finalize(); delete m_cBaseView; delete m_cPlaybackView; @@ -184,20 +183,12 @@ public: ad.arglist->uri = uri; ad.arglist->source = source; CViewMgr::Finalize(); - CMusicController::Finalize(); - _DBG(""); - - if (!CMusicController::Initialize()) { - _ERR(" music init failed "); - goto error; - } _DBG(""); CViewMgr::Initialize(ad.win, (void*)"path"); m_pViewMgr = CViewMgr::GetInstance(); if (!m_pViewMgr) { _ERR(" viewmgr init failed "); - CMusicController::Finalize(); goto error; } _DBG(""); @@ -226,14 +217,12 @@ public: if (!m_pViewMgr->PushView(MUSIC_PLAYBACK_VIEW, NULL, false)) { _ERR(" view push failed "); CViewMgr::Finalize(); - CMusicController::Finalize(); goto error; } if (!m_pViewMgr->PushView(MUSIC_BASE_VIEW, ad.arglist)) { _ERR(" view push failed "); CViewMgr::Finalize(); - CMusicController::Finalize(); goto error; } _DBG(""); diff --git a/src/playback/MusicControllerImpl.cpp b/src/playback/MusicControllerImpl.cpp new file mode 100644 index 0000000..b09863d --- /dev/null +++ b/src/playback/MusicControllerImpl.cpp @@ -0,0 +1,825 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#include +#include +#include +#include "dbg.h" +#include "i18n.h" + +#include + +#include "song_info.h" +#include "album_info.h" +#include "folder_info.h" +#include "common.h" +#include "category_info.h" +#include "music-controller.h" +#include "MusicControllerImpl.h" +#include "playlist-mgr.h" +#include "playback-mgr.h" +#include "mediadata.h" +#include "bus.h" +#include "Info.h" + + +struct SMusicControllerImpl { + CPlayback *pPlayback; + CPlaylist* pPlaylist; + CMediadata* pMediadata; + CAlbumInfo *alinfo; + Eina_List *elListener; + int initial_index; + + EPlayStatus statePlay; + EShuffleStatus stateShuffle; + + ERepeatStatus repeatstate; + SCbInfo *cbinfo; + + SMusicControllerImpl() { + pPlayback = NULL; + pPlaylist = NULL; + pMediadata = NULL; + alinfo = NULL; + elListener = NULL; + initial_index = 0; + statePlay = (EPlayStatus)0; + stateShuffle= (EShuffleStatus)0; + repeatstate= (ERepeatStatus)0; + cbinfo = NULL; + } +}; + + +void CMusicControllerImpl::sm_CbContentUpdated(void *dt) +{ + CMusicControllerImpl *root = (CMusicControllerImpl *)dt; + if (root) + root->m_OnContentUpdated(); +} + + +void CMusicControllerImpl::m_OnContentUpdated(void) +{ + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnUpdateContent(); + } +} + + +void CMusicControllerImpl::m_InvokeErrorCallback(SMusicControllerImpl *m, int type) +{ + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + + if (!m) + return; + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnError(); + } +} + + +bool CMusicControllerImpl::t_PlayNext(int direction, int playnext_type) +{ + bool r; + int index; + + if (!m->pPlaylist->FlagCreate()) + return false; + + Stop(); + + if (playnext_type == E_ON_COMPLETE && + m->repeatstate == REPEAT_STATUS_ONE) + goto finish; + + if (direction == DIR_NEXT) { + r = m->pPlaylist->LoadNextSong(m->stateShuffle); + } + else { + r = m->pPlaylist->LoadPreviousSong(m->stateShuffle); + } + + if (r == false) { + _ERR(" playlist load next/previous failed "); + return false; + } + + if (playnext_type == E_ON_COMPLETE && + m->repeatstate == REPEAT_STATUS_NONE) { + r = m->pPlaylist->GetCurSongIndex(&index); + if (r == false) { + _ERR(" get cur song index failed "); + return false; + } + + if (index == m->initial_index) + return true; + } + +finish: + Start(); + + return true; +} + + +bool CMusicControllerImpl::Create(void) +{ + ASSERT(!m); + + _CREATE_BEGIN{ + _CHECK(m = new SMusicControllerImpl) + _CHECK(m->alinfo = new CAlbumInfo) + _CHECK(m->alinfo->Create() == true) + _CHECK(m->pMediadata = new CMediadata) + _CHECK(m->pMediadata->Create() == true) + _CHECK(m->pPlayback = new CPlayback) + _CHECK(m->pPlayback->Create() == true) + _CHECK(m->pPlayback->SetCallback(this)) + _CHECK(m->pPlaylist = new CPlaylist) + + _WHEN_SUCCESS{ + m->statePlay = PLAY_STATUS_INITIAL; + m->stateShuffle = SHUFFLE_STATUS_OFF; + m->repeatstate = REPEAT_STATUS_ALL; + m->initial_index = 0; + CInfo::SetSortType(E_SORT_TITLE_A_Z); + CInfo::SetSourceType(SOURCE_TYPE_ALL); + m->cbinfo = m->pMediadata->AddCallback(E_CONTENT_UPDATE, sm_CbContentUpdated, this); + + // Even if CUsbConnectionListener creation failed, + // application should run properly. + if (!CUsbConnectionListener::Create()) + _DBG("CUsbConnectionListener::Create failed"); + } + + _CHECK_FAIL{ delete m->pPlaylist; } + _CHECK_FAIL{} + _CHECK_FAIL{ m->pPlayback->Destroy(); } + _CHECK_FAIL{ delete m->pPlayback; } + _CHECK_FAIL{ m->pMediadata->Destroy(); } + _CHECK_FAIL{ delete m->pMediadata; } + _CHECK_FAIL{ m->alinfo->Destroy(); } + _CHECK_FAIL{ delete m->alinfo; } + + _CHECK_FAIL{ delete m; m = NULL; } + } _CREATE_END_AND_CATCH{ return NULL; } + + return true; +} + + +void CMusicControllerImpl::Destroy(void) +{ + if (CUsbConnectionListener::FlagCreate()) + CUsbConnectionListener::Destroy(); + + if (!m->pPlayback->UnsetCallback()) + _ERR(" playback remove completion callback failed"); + + m->pPlayback->Destroy(); + delete m->pPlayback; + + if (m->pPlaylist->FlagCreate()) { + m->pPlaylist->Destroy(); + } + delete m->pPlaylist; + + m->pMediadata->RemoveCallback(m->cbinfo); + m->pMediadata->Destroy(); + delete m->pMediadata; + + m->alinfo->Destroy(); + delete m->alinfo; + delete m; + m = NULL; +} + + +bool CMusicControllerImpl::Start(void) +{ + ASSERT(m); + + const char *songpath; + int index; + CPlaylist *pPlaylist; + CPlayback *pPlayback; + CSongInfo *sinfo; + char *media_id; + + pPlaylist = m->pPlaylist; + pPlayback = m->pPlayback; + + _CREATE_BEGIN{ + _CHECK(pPlaylist->FlagCreate()) + _CHECK(pPlaylist->GetCurSongIndex(&index)) + _CHECK(songpath = pPlaylist->SongpathFromIndex(index)) + _CHECK(pPlayback->SetUri(songpath)) + _CHECK(pPlayback->Prepare()) + _CHECK(pPlayback->Start()) + + _COMMAND{ m->statePlay = PLAY_STATUS_PLAY; } + + _CHECK(m->pPlaylist->GetSonginfoFromIndex(index, &sinfo)) + _CHECK(media_id = sinfo->Id()) + _CHECK(m->pMediadata->SetPlayedTime(media_id)) + + _WHEN_SUCCESS{ + bus_send_signal(); + } + + _CHECK_FAIL{} + _CHECK_FAIL{} + _CHECK_FAIL{} + + _CHECK_FAIL{} + _CHECK_FAIL{} + _CHECK_FAIL{ _ERR("Playback Failed!!"); m_InvokeErrorCallback(m, E_PLAYBACK_ERROR); } + _CHECK_FAIL{} + _CHECK_FAIL{} + _CHECK_FAIL{ _ERR("CMusicControllerImpl::Start Failed!!"); Stop(); } + } _CREATE_END_AND_CATCH{ return false; } + + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnStartPlayback(); + } + + return true; +} + + +bool CMusicControllerImpl::Stop(void) +{ + ASSERT(m); + + if (!m->pPlayback->Stop()) { + _ERR("playback stop failed"); + return false; + } + + m->statePlay = PLAY_STATUS_STOP; + + if (!m->pPlayback->Unprepare()) { + _ERR("playback unprepare failed"); + return false; + } + + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnStopPlayback(); + } + + + return true; +} + + +bool CMusicControllerImpl::Resume(void) +{ + ASSERT(m); + + if (!m->pPlayback->Resume()) { + _ERR("playback resume failed"); + return false; + } + + m->statePlay = PLAY_STATUS_PLAY; + + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnResumePlayback(); + } + return true; +} + + +bool CMusicControllerImpl::Pause(void) +{ + ASSERT(m); + + if (!m->pPlayback->Pause()) { + _ERR("playback Pause failed"); + return false; + } + + m->statePlay = PLAY_STATUS_PAUSE; + + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnPausePlayback(); + } + + + return true; +} + + +bool CMusicControllerImpl::AddListener(IMusicControllerListener *listener) +{ + ASSERT(m); + ASSERT(listener); + + m->elListener = eina_list_append(m->elListener, listener); + + return true; +} + + +bool CMusicControllerImpl::RemoveListener(IMusicControllerListener *listener) +{ + ASSERT(m); + ASSERT(listener); + + m->elListener = eina_list_remove(m->elListener, listener); + + return true; +} + + +bool CMusicControllerImpl::GetCurrentSongIndex(int *ind) +{ + ASSERT(m); + + int index; + + if (!m || !m->pPlaylist->FlagCreate()) { + _ERR("NULL received"); + return false; + } + + if (!m->pPlaylist->GetCurSongIndex(&index)) { + _ERR(" playlist get current song index failed"); + return false; + } + + *ind = index; + + return true; +} + + +bool CMusicControllerImpl::GetTotalSongs(int *ts) +{ + ASSERT(m); + + int count; + + if (!m->pPlaylist->FlagCreate()) { + _ERR("NULL received"); + return false; + } + + if (!m->pPlaylist->GetTotalSongs(&count)) { + _ERR(" playlist get current song index failed"); + return false; + } + + *ts = count; + + return true; +} + + +bool CMusicControllerImpl::GetSonginfoFromIndex(int index, CSongInfo **const csinfo) +{ + ASSERT(m); + + if (!m->pPlaylist->FlagCreate() || !csinfo) { + _ERR("NULL received"); + return false; + } + + if (!m->pPlaylist->GetSonginfoFromIndex(index, csinfo)) { + _ERR(" playlist get current song info failed"); + return false; + } + + return true; +} + + +bool CMusicControllerImpl::SetPosition(int milseconds) +{ + ASSERT(m); + + if (!m->pPlayback->SetPosition(milseconds)) { + _ERR("playback set position failed"); + return false; + } + + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnPosition(milseconds); + } + return true; +} + + +bool CMusicControllerImpl::GetPosition(int *const milseconds) +{ + ASSERT(m); + + if (!m->pPlayback->GetPosition(milseconds)) { + _ERR("playback get position failed"); + return false; + } + + return true; +} + + +bool CMusicControllerImpl::SetCurrentSong(char *mediaid) +{ + ASSERT(m); + ASSERT(mediaid); + + if (!m->pPlaylist->FlagCreate()) + return false; + + m->pPlaylist->SetCurrentSong(mediaid); + + return true; +} + + +bool CMusicControllerImpl::GetCurrentSong(CSongInfo **const sinfo) +{ + ASSERT(m); + + int index; + + if (!m->pPlaylist->FlagCreate()) + return false; + + if (!m->pPlaylist->GetCurSongIndex(&index)) { + _ERR(" playlist get current song index failed"); + return false; + } + + if (!m->pPlaylist->GetSonginfoFromIndex(index, sinfo)) { + _ERR(" playlist get current song info failed"); + return false; + } + + return true; +} + + +bool CMusicControllerImpl::UpdatePlaylist(Eina_List *slist, int addmode) +{ + ASSERT(m); + ASSERT(slist); + + if (m->pPlaylist->FlagCreate()) + m->pPlaylist->Update(slist, addmode); + else { + if (!m->pPlaylist->Create(slist)) + _ERR(" playlist create failed "); + } + return true; +} + + +bool CMusicControllerImpl::EmptyPlaylist(void) +{ + ASSERT(m); + + if (!m->pPlaylist->FlagCreate()) + return false; + + m->pPlaylist->Destroy(); + + return true; +} + + +bool CMusicControllerImpl::PlayPreviousSong(void) +{ + ASSERT(m); + + return t_PlayNext(DIR_PREVIOUS, E_BUTTON_CLICK); +} + + +bool CMusicControllerImpl::PlayNextSong(void) +{ + ASSERT(m); + + return t_PlayNext(DIR_NEXT, E_BUTTON_CLICK); +} + + +bool CMusicControllerImpl::PlayIndexSong(int index) +{ + ASSERT(m); + + if (!m->pPlaylist->FlagCreate()) + return false; + + Stop(); + + if (!m->pPlaylist->SetCurSongIndex(index)) + return false; + + Start(); + + m->initial_index = index; + + return true; +} + + +bool CMusicControllerImpl::RemoveSong(CSongInfo *sinfo, int index) +{ + ASSERT(m); + ASSERT(sinfo); + + int ind; + + if (!m->pPlaylist->FlagCreate()) + return false; + + if (!GetCurrentSongIndex(&ind)) { + _ERR("unable to find current song index"); + return false; + } + + if (!m->pPlaylist->RemoveSong(sinfo, index, m->stateShuffle)) { + _ERR("Song can not be deleted"); + return false; + } + + if (ind != 0 && ind == index) + Stop(); + + return true; +} + + +bool CMusicControllerImpl::MediaGetList(int EListType, void *info, Eina_List **list) +{ + ASSERT(m); + + Eina_List *mlist; + + mlist = m->pMediadata->Medialist(CInfo::SourceType(), EListType, info); + if (!mlist) + return false; + + *list = eina_list_clone(mlist); + + return true; +} + + +bool CMusicControllerImpl::MediaInsertPlaylist(const char *name, Eina_List *idlist) +{ + ASSERT(m); + ASSERT(name); + ASSERT(idlist); + + return m->pMediadata->Alloc(name, idlist); +} + + +bool CMusicControllerImpl::MediaExistPlaylist(const char *name) +{ + ASSERT(m); + ASSERT(name); + + return m->pMediadata->ExistPlaylist(name); +} + + +bool CMusicControllerImpl::MediaDeletePlaylist(int id) +{ + ASSERT(m); + + return m->pMediadata->Delete(id); +} + + +bool CMusicControllerImpl::MediaRenamePlaylist(int id, const char *name) +{ + ASSERT(m); + ASSERT(name); + + return m->pMediadata->Rename(id, name); +} + + +bool CMusicControllerImpl::MediaAddmediaPlaylist(int id, Eina_List *idlist) +{ + ASSERT(m); + ASSERT(idlist); + + return m->pMediadata->Insert(id, idlist); +} + + +bool CMusicControllerImpl::MediaRemovemediaPlaylist(int id, Eina_List *idlist) +{ + ASSERT(m); + ASSERT(idlist); + + return m->pMediadata->Remove(id, idlist); +} + + +bool CMusicControllerImpl::MediaAddsongsPlaylist(int lid, Eina_List *list) +{ + ASSERT(m); + ASSERT(list); + + Eina_List *idlist, *l; + CSongInfo *sinfo; + void *obj; + char *id; + + idlist = NULL; + EINA_LIST_FOREACH(list, l, obj) { + sinfo = (CSongInfo *)obj; + id = sinfo->Id(); + if (id) + idlist = eina_list_append(idlist, id); + } + + if (!MediaAddmediaPlaylist(lid, idlist)) { + _ERR(" Failed to add songs to playlist "); + return false; + } + + return true; +} + + +CSongInfo *CMusicControllerImpl::MediaSongByUri(char *uri) +{ + ASSERT(m); + ASSERT(uri); + + CSongInfo *sinfo; + + sinfo = m->pMediadata->SongByUri(uri); + if (!sinfo) + return NULL; + + return sinfo; +} + + +bool CMusicControllerImpl::SetPlayState(EPlayStatus state) +{ + ASSERT(m); + + m->statePlay = state; + + return true; +} + + +EPlayStatus CMusicControllerImpl::PlayState(void) +{ + ASSERT(m); + + return m->statePlay; +} + + +bool CMusicControllerImpl::SetShuffleState(EShuffleStatus state) +{ + ASSERT(m); + + m->stateShuffle = state; + if (state && m->pPlaylist->FlagCreate()) + m->pPlaylist->UpdateShuffle(); + + return true; +} + + +EShuffleStatus CMusicControllerImpl::ShuffleState(void) +{ + ASSERT(m); + + return m->stateShuffle; +} + + +bool CMusicControllerImpl::SetRepeatState(ERepeatStatus state) +{ + ASSERT(m); + + m->repeatstate = state; + + return true; +} + + +ERepeatStatus CMusicControllerImpl::RepeatState(void) +{ + ASSERT(m); + + return m->repeatstate; +} + + +void CMusicControllerImpl::OnStatusChanged(SUsbHostDeviceInfo *changedDevice, + SUsbHostDeviceStatus status) +{ + if (!m) + return; + + Eina_List *l; + IMusicControllerListener *mcListener = NULL;; + void *obj; + + if (status == USB_HOST_DEV_CONNECTED) { + if (CInfo::SourceType() == SOURCE_TYPE_USB) { + if (!FlagConnected()) + CInfo::SetSourceType(SOURCE_TYPE_ALL); + } + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnUsbStatusChanged(IMusicControllerListener::USB_STORAGE_CONNECTED); + } + } + else { + if (CInfo::SourceType() == SOURCE_TYPE_USB) { + CInfo::SetSourceType(SOURCE_TYPE_ALL); + } + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnUsbStatusChanged(IMusicControllerListener::USB_STORAGE_DISCONNECTED); + } + } +} + + +void CMusicControllerImpl::t_OnPlayComplete(void) +{ + bool r; + Eina_List *l; + IMusicControllerListener *mcListener = NULL; + void *obj; + + r = t_PlayNext(DIR_NEXT, E_ON_COMPLETE); + if (r == false) + _ERR(" music play next song failed "); + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnComplete(); + } +} diff --git a/src/playback/MusicControllerImpl.h b/src/playback/MusicControllerImpl.h new file mode 100644 index 0000000..251ecbb --- /dev/null +++ b/src/playback/MusicControllerImpl.h @@ -0,0 +1,109 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef __MUSIC_CONTROLLER_IMPL_H__ +#define __MUSIC_CONTROLLER_IMPL_H__ + + +class CMusicControllerImpl : + public CUsbConnectionListener, + public ICompleteListener { +private: + struct SMusicControllerImpl *m; + +private: + enum EDirectionType { + DIR_PREVIOUS, + DIR_NEXT + }; + + enum ENextType { + E_ON_COMPLETE, + E_BUTTON_CLICK + }; + +private: + static void sm_CbContentUpdated(void *dt); + void m_OnContentUpdated(void); + + void m_InvokeErrorCallback(SMusicControllerImpl *m, int type); + +protected: + bool t_PlayNext(int direction, int playnext_type); + +public: + CMusicControllerImpl() {} + virtual ~CMusicControllerImpl() {} + + bool Create(void); + virtual void Destroy(void); + + bool Start(void); + bool Stop(void); + bool Resume(void); + bool Pause(void); + + bool AddListener(IMusicControllerListener *listener); + bool RemoveListener(IMusicControllerListener *listener); + + bool GetCurrentSongIndex(int *ind); + bool GetTotalSongs(int *ts); + bool GetSonginfoFromIndex(int index, CSongInfo **const csinfo); + + bool SetPosition(int milsec); + bool GetPosition(int *const milseconds); + + bool SetCurrentSong(char *mediaid); + bool GetCurrentSong(CSongInfo **const sinfo); + + bool UpdatePlaylist(Eina_List *slist, int addmode); + bool EmptyPlaylist(void); + + bool PlayPreviousSong(void); + bool PlayNextSong(void); + bool PlayIndexSong(int index); + + bool RemoveSong(CSongInfo *sinfo, int index); + + bool MediaGetList(int EListType, void *info, Eina_List **list); + bool MediaInsertPlaylist(const char *name, Eina_List *idlist); + bool MediaExistPlaylist(const char *name); + bool MediaDeletePlaylist(int id); + bool MediaRenamePlaylist(int id, const char *name); + bool MediaAddmediaPlaylist(int id, Eina_List *idlist); + bool MediaRemovemediaPlaylist(int id, Eina_List *idlist); + bool MediaAddsongsPlaylist(int lid, Eina_List *list); + + CSongInfo *MediaSongByUri(char *uri); + + bool SetPlayState(EPlayStatus state); + EPlayStatus PlayState(void); + + bool SetShuffleState(EShuffleStatus state); + EShuffleStatus ShuffleState(void); + + bool SetRepeatState(ERepeatStatus state); + ERepeatStatus RepeatState(void); + +public: + virtual void OnStatusChanged(SUsbHostDeviceInfo *changedDevice, + SUsbHostDeviceStatus status); + + virtual void t_OnPlayComplete(void); +}; + + +#endif /* __MUSIC_CONTROLLER_IMPL_H__ */ \ No newline at end of file diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index 19e49aa..e11ed1c 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -1,320 +1,54 @@ -/* - * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include #include #include #include "dbg.h" -#include "i18n.h" - #include - #include "song_info.h" -#include "album_info.h" -#include "folder_info.h" #include "common.h" -#include "category_info.h" #include "music-controller.h" -#include "playlist-mgr.h" -#include "playback-mgr.h" -#include "mediadata.h" -#include "bus.h" -#include "Info.h" +#include "MusicControllerImpl.h" struct SMusicController { - CPlayback* pPlayback; - CPlaylist* pPlaylist; - CMediadata* pMediadata; - CAlbumInfo *alinfo; - Eina_List *elListener; - int initial_index; - - EPlayStatus statePlay; - EShuffleStatus stateShuffle; - - ERepeatStatus repeatstate; - SCbInfo *cbinfo; + static CMusicControllerImpl ref; + static int refCnt; }; -CMusicController *CMusicController::instance = NULL; -int CMusicController::refCnt = 0; - - -// Implementation of IMusicControllerListener -void IMusicControllerListener::s_CbComplete(void *cookie) -{ - IMusicControllerListener *root = (IMusicControllerListener *)cookie; - if (root) - root->OnComplete(); -} - - -void IMusicControllerListener::s_CbError(void *cookie) -{ - IMusicControllerListener *root = (IMusicControllerListener *)cookie; - if (root) - root->OnError(); -} - - -void IMusicControllerListener::s_CbUsbStatusChagned(void *cookie, SUsbStorageStatus status) -{ - IMusicControllerListener *root = (IMusicControllerListener *)cookie; - if (root) - root->OnUsbStatusChanged(status); -} - - -void IMusicControllerListener::s_CbUpdateContent(void *cookie) -{ - IMusicControllerListener *root = (IMusicControllerListener *)cookie; - if (root) - root->OnUpdateContent(); -} - - -// Implementation of CMusicController -void CMusicController::sm_CbPlaybackCompletion(void *dt) -{ - CMusicController* root = (CMusicController*)dt; - if (root) - root->m_OnPlaybackCompletion(); -} - - -void CMusicController::m_OnPlaybackCompletion(void) -{ - bool r; - Eina_List *l; - IMusicControllerListener *mcListener = NULL; - void *obj; - - r = t_PlayNext(DIR_NEXT, E_ON_COMPLETE); - if (r == false) - _ERR(" music play next song failed "); - - EINA_LIST_FOREACH(m->elListener, l, obj) { - mcListener = (IMusicControllerListener *)obj; - if (mcListener) - mcListener->s_CbComplete(mcListener); - } -} - - -void CMusicController::sm_CbContentUpdated(void *dt) -{ - CMusicController *root = (CMusicController *)dt; - if (root) - root->m_OnContentUpdated(); -} - - -void CMusicController::m_OnContentUpdated(void) -{ - Eina_List *l; - IMusicControllerListener *mcListener = NULL; - void *obj; - - EINA_LIST_FOREACH(m->elListener, l, obj) { - mcListener = (IMusicControllerListener *)obj; - if (mcListener) - mcListener->s_CbUpdateContent(mcListener); - } -} +CMusicControllerImpl SMusicController::ref; +int SMusicController::refCnt = 0; -void CMusicController::m_InvokeErrorCallback(SMusicController *m, int type) +bool CMusicController::Create(void) { - Eina_List *l; - IMusicControllerListener *mcListener = NULL; - void *obj; + ASSERT(!m); + m = new SMusicController; if (!m) - return; - - EINA_LIST_FOREACH(m->elListener, l, obj) { - mcListener = (IMusicControllerListener *)obj; - if (mcListener) - mcListener->s_CbError(mcListener); - } -} - - -bool CMusicController::t_PlayNext(int direction, int playnext_type) -{ - bool r; - int index; - - if (!m->pPlaylist->FlagCreate()) - return false; - - Stop(); - - if (playnext_type == E_ON_COMPLETE && - m->repeatstate == REPEAT_STATUS_ONE) - goto finish; - - if (direction == DIR_NEXT) { - r = m->pPlaylist->LoadNextSong(m->stateShuffle); - } - else { - r = m->pPlaylist->LoadPreviousSong(m->stateShuffle); - } - - if (r == false) { - _ERR(" playlist load next/previous failed "); return false; - } - if (playnext_type == E_ON_COMPLETE && - m->repeatstate == REPEAT_STATUS_NONE) { - r = m->pPlaylist->GetCurSongIndex(&index); - if (r == false) { - _ERR(" get cur song index failed "); + if (m->refCnt == 0) { + if (!m->ref.Create()) { + delete m; + m = NULL; return false; } - - if (index == m->initial_index) - return true; } - -finish: - Start(); + m->refCnt++; return true; } -SMusicController *CMusicController::t_Create(void) -{ - SMusicController *mhandle = NULL; - - _CREATE_BEGIN { - _CHECK(mhandle = new SMusicController) - - _WHEN_SUCCESS{ - memset(mhandle, 0, sizeof(SMusicController)); - - _CHECK(mhandle->alinfo = new CAlbumInfo) - _CHECK(mhandle->alinfo->Create() == true) - _CHECK(mhandle->pMediadata = new CMediadata) - _CHECK(mhandle->pMediadata->Create() == true) - _CHECK(mhandle->pPlayback = new CPlayback) - _CHECK(mhandle->pPlayback->Create() == true) - _CHECK(mhandle->pPlayback->SetCallback(sm_CbPlaybackCompletion, this) == true) - _CHECK(mhandle->pPlaylist = new CPlaylist) - - _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, sm_CbContentUpdated, this); - - // Even if CUsbConnectionListener creation failed, - // application should run properly. - if (!CUsbConnectionListener::Create()) - _DBG("CUsbConnectionListener::Create failed"); - } - - _CHECK_FAIL{ delete mhandle->pPlaylist; } - _CHECK_FAIL{} - _CHECK_FAIL{ mhandle->pPlayback->Destroy(); } - _CHECK_FAIL{ delete mhandle->pPlayback; } - _CHECK_FAIL{ mhandle->pMediadata->Destroy(); } - _CHECK_FAIL{ delete mhandle->pMediadata; } - _CHECK_FAIL{ mhandle->alinfo->Destroy(); } - _CHECK_FAIL{ delete mhandle->alinfo; } - } - - _CHECK_FAIL{ delete mhandle; mhandle = NULL; } - } _CREATE_END_AND_CATCH{ return NULL; } - - return mhandle; -} - - -void CMusicController::t_Destroy(void) +void CMusicController::Destroy(void) { - if (CUsbConnectionListener::FlagCreate()) - CUsbConnectionListener::Destroy(); - - if (!m->pPlayback->UnsetCallback()) - _ERR(" playback remove completion callback failed"); - - m->pPlayback->Destroy(); - delete m->pPlayback; + ASSERT(m); - if (m->pPlaylist->FlagCreate()) { - m->pPlaylist->Destroy(); + m->refCnt--; + if (m->refCnt == 0) { + m->ref.Destroy(); } - delete m->pPlaylist; - - m->pMediadata->RemoveCallback(m->cbinfo); - m->pMediadata->Destroy(); - delete m->pMediadata; - - m->alinfo->Destroy(); - delete m->alinfo; delete m; -} - - -bool CMusicController::Initialize(void) -{ - if (refCnt == 0) { - instance = new CMusicController; - if (instance == NULL) { - return false; - } - instance->m = instance->t_Create(); - if (!instance->m) { - _ERR("music_init failed"); - delete instance; - instance = NULL; - return false; - } - } - - refCnt++; - - return true; -} - - -void CMusicController::Finalize(void) -{ - if (refCnt > 0) { - refCnt--; - } - if (refCnt == 0) { - if (instance) { - instance->t_Destroy(); - delete instance; - instance = NULL; - } - } -} - -CMusicController* CMusicController::GetInstance(void) -{ - return instance; + m = NULL; } @@ -322,49 +56,7 @@ bool CMusicController::Start(void) { ASSERT(m); - const char *songpath; - int index; - CPlaylist *pPlaylist; - CPlayback *pPlayback; - CSongInfo *sinfo; - char *media_id; - - pPlaylist = m->pPlaylist; - pPlayback = m->pPlayback; - - _CREATE_BEGIN{ - _CHECK(pPlaylist->FlagCreate()) - _CHECK(pPlaylist->GetCurSongIndex(&index)) - _CHECK(songpath = pPlaylist->SongpathFromIndex(index)) - _CHECK(pPlayback->SetUri(songpath)) - _CHECK(pPlayback->Prepare()) - _CHECK(pPlayback->Start()) - - _WHEN_SUCCESS{ - m->statePlay = PLAY_STATUS_PLAY; - - _CHECK(m->pPlaylist->GetSonginfoFromIndex(index, &sinfo)) - _CHECK(media_id = sinfo->Id()) - _CHECK(m->pMediadata->SetPlayedTime(media_id)) - - _WHEN_SUCCESS{ - bus_send_signal(); - } - - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} - } - - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{ _ERR("Playback Failed!!"); m_InvokeErrorCallback(m, E_PLAYBACK_ERROR); } - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{ _ERR("CMusicController::Start Failed!!"); Stop(); } - } _CREATE_END_AND_CATCH{ return false; } - - return true; + return m->ref.Start(); } @@ -372,19 +64,7 @@ bool CMusicController::Stop(void) { ASSERT(m); - if (!m->pPlayback->Stop()) { - _ERR("playback stop failed"); - return false; - } - - m->statePlay = PLAY_STATUS_STOP; - - if (!m->pPlayback->Unprepare()) { - _ERR("playback unprepare failed"); - return false; - } - - return true; + return m->ref.Stop(); } @@ -392,14 +72,7 @@ bool CMusicController::Resume(void) { ASSERT(m); - if (!m->pPlayback->Resume()) { - _ERR("playback resume failed"); - return false; - } - - m->statePlay = PLAY_STATUS_PLAY; - - return true; + return m->ref.Resume(); } @@ -407,36 +80,23 @@ bool CMusicController::Pause(void) { ASSERT(m); - if (!m->pPlayback->Pause()) { - _ERR("playback Pause failed"); - return false; - } - - m->statePlay = PLAY_STATUS_PAUSE; - - return true; + return m->ref.Pause(); } bool CMusicController::AddListener(IMusicControllerListener *listener) { ASSERT(m); - ASSERT(listener); - - m->elListener = eina_list_append(m->elListener, listener); - return true; + return m->ref.AddListener(listener); } bool CMusicController::RemoveListener(IMusicControllerListener *listener) { ASSERT(m); - ASSERT(listener); - m->elListener = eina_list_remove(m->elListener, listener); - - return true; + return m->ref.RemoveListener(listener); } @@ -444,21 +104,7 @@ bool CMusicController::GetCurrentSongIndex(int *ind) { ASSERT(m); - int index; - - if (!m || !m->pPlaylist->FlagCreate()) { - _ERR("NULL received"); - return false; - } - - if (!m->pPlaylist->GetCurSongIndex(&index)) { - _ERR(" playlist get current song index failed"); - return false; - } - - *ind = index; - - return true; + return m->ref.GetCurrentSongIndex(ind); } @@ -466,21 +112,7 @@ bool CMusicController::GetTotalSongs(int *ts) { ASSERT(m); - int count; - - if (!m->pPlaylist->FlagCreate()) { - _ERR("NULL received"); - return false; - } - - if (!m->pPlaylist->GetTotalSongs(&count)) { - _ERR(" playlist get current song index failed"); - return false; - } - - *ts = count; - - return true; + return m->ref.GetTotalSongs(ts); } @@ -488,30 +120,15 @@ bool CMusicController::GetSonginfoFromIndex(int index, CSongInfo **const csinfo) { ASSERT(m); - if (!m->pPlaylist->FlagCreate() || !csinfo) { - _ERR("NULL received"); - return false; - } - - if (!m->pPlaylist->GetSonginfoFromIndex(index, csinfo)) { - _ERR(" playlist get current song info failed"); - return false; - } - - return true; + return m->ref.GetSonginfoFromIndex(index, csinfo); } -bool CMusicController::SetPosition(int milseconds) +bool CMusicController::SetPosition(int milsec) { ASSERT(m); - if (!m->pPlayback->SetPosition(milseconds)) { - _ERR("playback set position failed"); - return false; - } - - return true; + return m->ref.SetPosition(milsec); } @@ -519,26 +136,15 @@ bool CMusicController::GetPosition(int *const milseconds) { ASSERT(m); - if (!m->pPlayback->GetPosition(milseconds)) { - _ERR("playback get position failed"); - return false; - } - - return true; + return m->ref.GetPosition(milseconds); } bool CMusicController::SetCurrentSong(char *mediaid) { ASSERT(m); - ASSERT(mediaid); - if (!m->pPlaylist->FlagCreate()) - return false; - - m->pPlaylist->SetCurrentSong(mediaid); - - return true; + return m->ref.SetCurrentSong(mediaid); } @@ -546,37 +152,15 @@ bool CMusicController::GetCurrentSong(CSongInfo **const sinfo) { ASSERT(m); - int index; - - if (!m->pPlaylist->FlagCreate()) - return false; - - if (!m->pPlaylist->GetCurSongIndex(&index)) { - _ERR(" playlist get current song index failed"); - return false; - } - - if (!m->pPlaylist->GetSonginfoFromIndex(index, sinfo)) { - _ERR(" playlist get current song info failed"); - return false; - } - - return true; + return m->ref.GetCurrentSong(sinfo); } bool CMusicController::UpdatePlaylist(Eina_List *slist, int addmode) { ASSERT(m); - ASSERT(slist); - if (m->pPlaylist->FlagCreate()) - m->pPlaylist->Update(slist, addmode); - else { - if (!m->pPlaylist->Create(slist)) - _ERR(" playlist create failed "); - } - return true; + return m->ref.UpdatePlaylist(slist, addmode); } @@ -584,12 +168,7 @@ bool CMusicController::EmptyPlaylist(void) { ASSERT(m); - if (!m->pPlaylist->FlagCreate()) - return false; - - m->pPlaylist->Destroy(); - - return true; + return m->ref.EmptyPlaylist(); } @@ -597,7 +176,7 @@ bool CMusicController::PlayPreviousSong(void) { ASSERT(m); - return t_PlayNext(DIR_PREVIOUS, E_BUTTON_CLICK); + return m->ref.PlayPreviousSong(); } @@ -605,7 +184,7 @@ bool CMusicController::PlayNextSong(void) { ASSERT(m); - return t_PlayNext(DIR_NEXT, E_BUTTON_CLICK); + return m->ref.PlayNextSong(); } @@ -613,46 +192,15 @@ bool CMusicController::PlayIndexSong(int index) { ASSERT(m); - if (!m->pPlaylist->FlagCreate()) - return false; - - Stop(); - - if (!m->pPlaylist->SetCurSongIndex(index)) - return false; - - Start(); - - m->initial_index = index; - - return true; + return m->ref.PlayIndexSong(index); } bool CMusicController::RemoveSong(CSongInfo *sinfo, int index) { ASSERT(m); - ASSERT(sinfo); - int ind; - - if (!m->pPlaylist->FlagCreate()) - return false; - - if (!GetCurrentSongIndex(&ind)) { - _ERR("unable to find current song index"); - return false; - } - - if (!m->pPlaylist->RemoveSong(sinfo, index, m->stateShuffle)) { - _ERR("Song can not be deleted"); - return false; - } - - if (ind != 0 && ind == index) - Stop(); - - return true; + return m->ref.RemoveSong(sinfo, index); } @@ -660,34 +208,23 @@ bool CMusicController::MediaGetList(int EListType, void *info, Eina_List **list) { ASSERT(m); - Eina_List *mlist; - - mlist = m->pMediadata->Medialist(CInfo::SourceType(), EListType, info); - if (!mlist) - return false; - - *list = eina_list_clone(mlist); - - return true; + return m->ref.MediaGetList(EListType, info, list); } bool CMusicController::MediaInsertPlaylist(const char *name, Eina_List *idlist) { ASSERT(m); - ASSERT(name); - ASSERT(idlist); - return m->pMediadata->Alloc(name, idlist); + return m->ref.MediaInsertPlaylist(name, idlist); } bool CMusicController::MediaExistPlaylist(const char *name) { ASSERT(m); - ASSERT(name); - return m->pMediadata->ExistPlaylist(name); + return m->ref.MediaExistPlaylist(name); } @@ -695,76 +232,47 @@ bool CMusicController::MediaDeletePlaylist(int id) { ASSERT(m); - return m->pMediadata->Delete(id); + return m->ref.MediaDeletePlaylist(id); } bool CMusicController::MediaRenamePlaylist(int id, const char *name) { ASSERT(m); - ASSERT(name); - return m->pMediadata->Rename(id, name); + return m->ref.MediaRenamePlaylist(id, name); } bool CMusicController::MediaAddmediaPlaylist(int id, Eina_List *idlist) { ASSERT(m); - ASSERT(idlist); - return m->pMediadata->Insert(id, idlist); + return m->ref.MediaAddmediaPlaylist(id, idlist); } bool CMusicController::MediaRemovemediaPlaylist(int id, Eina_List *idlist) { ASSERT(m); - ASSERT(idlist); - return m->pMediadata->Remove(id, idlist); + return m->ref.MediaRemovemediaPlaylist(id, idlist); } bool CMusicController::MediaAddsongsPlaylist(int lid, Eina_List *list) { ASSERT(m); - ASSERT(list); - - Eina_List *idlist, *l; - CSongInfo *sinfo; - void *obj; - char *id; - - idlist = NULL; - EINA_LIST_FOREACH(list, l, obj) { - sinfo = (CSongInfo *)obj; - id = sinfo->Id(); - if (id) - idlist = eina_list_append(idlist, id); - } - - if (!MediaAddmediaPlaylist(lid, idlist)) { - _ERR(" Failed to add songs to playlist "); - return false; - } - return true; + return m->ref.MediaAddsongsPlaylist(lid, list); } CSongInfo *CMusicController::MediaSongByUri(char *uri) { ASSERT(m); - ASSERT(uri); - - CSongInfo *sinfo; - - sinfo = m->pMediadata->SongByUri(uri); - if (!sinfo) - return NULL; - return sinfo; + return m->ref.MediaSongByUri(uri); } @@ -772,9 +280,7 @@ bool CMusicController::SetPlayState(EPlayStatus state) { ASSERT(m); - m->statePlay = state; - - return true; + return m->ref.SetPlayState(state); } @@ -782,7 +288,7 @@ EPlayStatus CMusicController::PlayState(void) { ASSERT(m); - return m->statePlay; + return m->ref.PlayState(); } @@ -790,11 +296,7 @@ bool CMusicController::SetShuffleState(EShuffleStatus state) { ASSERT(m); - m->stateShuffle = state; - if (state && m->pPlaylist->FlagCreate()) - m->pPlaylist->UpdateShuffle(); - - return true; + return m->ref.SetShuffleState(state); } @@ -802,7 +304,7 @@ EShuffleStatus CMusicController::ShuffleState(void) { ASSERT(m); - return m->stateShuffle; + return m->ref.ShuffleState(); } @@ -810,9 +312,7 @@ bool CMusicController::SetRepeatState(ERepeatStatus state) { ASSERT(m); - m->repeatstate = state; - - return true; + return m->ref.SetRepeatState(state); } @@ -820,43 +320,8 @@ ERepeatStatus CMusicController::RepeatState(void) { ASSERT(m); - return m->repeatstate; + return m->ref.RepeatState(); } -void CMusicController::OnStatusChanged(SUsbHostDeviceInfo *changedDevice, - SUsbHostDeviceStatus status) -{ - if (!m) - return; - - Eina_List *l; - IMusicControllerListener *mcListener = NULL;; - void *obj; - - if (status == USB_HOST_DEV_CONNECTED) { - if (CInfo::SourceType() == SOURCE_TYPE_USB) { - if (!FlagConnected()) - CInfo::SetSourceType(SOURCE_TYPE_ALL); - } - EINA_LIST_FOREACH(m->elListener, l, obj) { - mcListener = (IMusicControllerListener *)obj; - if (mcListener) - mcListener->s_CbUsbStatusChagned(mcListener, - IMusicControllerListener::USB_STORAGE_CONNECTED); - } - } - else { - if (CInfo::SourceType() == SOURCE_TYPE_USB) { - CInfo::SetSourceType(SOURCE_TYPE_ALL); - } - - EINA_LIST_FOREACH(m->elListener, l, obj) { - mcListener = (IMusicControllerListener *)obj; - if (mcListener) - mcListener->s_CbUsbStatusChagned(mcListener, - IMusicControllerListener::USB_STORAGE_DISCONNECTED); - } - } -} \ No newline at end of file diff --git a/src/playback/playback-mgr.cpp b/src/playback/playback-mgr.cpp index 3906bf3..2ab23fb 100644 --- a/src/playback/playback-mgr.cpp +++ b/src/playback/playback-mgr.cpp @@ -23,6 +23,7 @@ struct SPlayback { player_h player; + ICompleteListener *listener; }; @@ -31,6 +32,14 @@ void _on_seek_completion(void *dt) } +void CPlayback::sm_CbComplete(void *cookie) +{ + CPlayback *root = (CPlayback*)cookie; + if (root) + root->m->listener->t_OnPlayComplete(); +} + + bool CPlayback::Create(void) { ASSERT(!m); @@ -49,6 +58,8 @@ bool CPlayback::Create(void) return false; } + m->listener = NULL; + return true; } @@ -109,12 +120,13 @@ bool CPlayback::Stop(void) } -bool CPlayback::SetCallback(player_completed_cb on_playback_completion, void *data) +bool CPlayback::SetCallback(ICompleteListener *listener)//player_completed_cb on_playback_completion, void *data) { ASSERT(m); ASSERT(m->player); - int r = player_set_completed_cb(m->player, on_playback_completion, data); + m->listener = listener; + int r = player_set_completed_cb(m->player, sm_CbComplete, this);// on_playback_completion, data); if (r != PLAYER_ERROR_NONE) { _ERR("Player set completed callaback failed"); return false; @@ -129,6 +141,7 @@ bool CPlayback::UnsetCallback(void) ASSERT(m); ASSERT(m->player); + m->listener = NULL; int r = player_unset_completed_cb(m->player); if (r != PLAYER_ERROR_NONE) { _ERR("Player unset completed cb failed"); diff --git a/src/views/PlayListCtxPopup.cpp b/src/views/PlayListCtxPopup.cpp index be995e1..07f9b5a 100644 --- a/src/views/PlayListCtxPopup.cpp +++ b/src/views/PlayListCtxPopup.cpp @@ -120,18 +120,18 @@ void CPlayListCtxPopup::m_DeleteBtnString(void) bool CPlayListCtxPopup::Create(Evas_Object* base, const SCallback* callback, Eina_List *playList) { - Eina_List *l = NULL; - SCtxtPlaylistItem *item = NULL; + //Eina_List *l = NULL; + //SCtxtPlaylistItem *item = NULL; _CREATE_BEGIN{ _CHECK(m = new SPlayListCtxPopup) _CHECK(m->listSize = eina_list_count(playList)) _CHECK(m->settingTexts = new char*[m->listSize]) - _COMMAND{ memset(m->settingTexts, NULL, m->listSize * sizeof(char*)); } + _COMMAND{ memset(m->settingTexts, 0, m->listSize * sizeof(char*)); } _CHECK(m->btnIds = new char*[m->listSize]) - _COMMAND{ memset(m->btnIds, NULL, m->listSize * sizeof(char*)); } + _COMMAND{ memset(m->btnIds, 0, m->listSize * sizeof(char*)); } _CHECK(m->dbIds = new int[m->listSize]) - _COMMAND{ memset(m->dbIds, NULL, m->listSize * sizeof(int)); } + _COMMAND{ memset(m->dbIds, 0, m->listSize * sizeof(int)); } _CHECK(m_SetBtnString(playList)) _CHECK(CCtxPopup::Create(base, callback, true)) diff --git a/src/views/album-layout.cpp b/src/views/album-layout.cpp index caa87aa..e12f4b5 100644 --- a/src/views/album-layout.cpp +++ b/src/views/album-layout.cpp @@ -66,7 +66,7 @@ struct SAlbumLayout { Eina_List *alblist; Eina_List *it_infolist; Elm_Gengrid_Item_Class *item_class; - CMusicController *mhandle; + CMusicController *pController; CLayoutMgr *lmgr; CViewMgr *vmgr; SContentInfo *ctxtinfo; @@ -189,7 +189,7 @@ void CAlbumLayout::m_OnCtxtUpdate(EActionType type, int lid) if (!m->ctxtinfo || !m->ctxtinfo->context) return; - m->mhandle->MediaGetList(LIST_TYPE_ALBUM_SONG, + m->pController->MediaGetList(LIST_TYPE_ALBUM_SONG, m->ctxtinfo->context, &list); switch (type) { @@ -206,7 +206,7 @@ void CAlbumLayout::m_OnCtxtUpdate(EActionType type, int lid) break; case ACTION_TYPE_ADDTO: - if (m->mhandle->MediaAddsongsPlaylist(lid, list)) + if (m->pController->MediaAddsongsPlaylist(lid, list)) CCommonUI::CreateMsgBox(m->base, MUSIC_TEXT_ADDTO_MSG); else _ERR(" Adding songs to playlist failed "); @@ -218,13 +218,13 @@ void CAlbumLayout::m_OnCtxtUpdate(EActionType type, int lid) break; } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); sinfo = (CSongInfo *)eina_list_data_get(list); eina_list_free(list); if (type == ACTION_TYPE_PLAY) { - m->mhandle->Stop(); - m->mhandle->SetCurrentSong(sinfo->Id()); + m->pController->Stop(); + m->pController->SetCurrentSong(sinfo->Id()); } CCommonUI::UpdatePlaybackView(mode, Layout(), m->focusedItem); @@ -417,7 +417,7 @@ void CAlbumLayout::m_UpdateAlbumGrid(bool sort_flag) m_EmptyAlbumGrid(sort_flag); if (!sort_flag) { - r = m->mhandle->MediaGetList(LIST_TYPE_ALBUM, NULL, &(m->alblist)); + r = m->pController->MediaGetList(LIST_TYPE_ALBUM, NULL, &(m->alblist)); if (r == false || eina_list_count(m->alblist) == 0) { _ERR(" Fetching album list from media failed "); @@ -452,23 +452,20 @@ bool CAlbumLayout::Create(CLayoutMgr *mgr, const char *albumId) ASSERT(mgr); _CREATE_BEGIN{ - Evas_Object *base = NULL; - Evas_Object *win = NULL; Evas_Object *layout = NULL; - CMusicController *mhandle = NULL; - CViewMgr *vmgr = NULL; CAlbumSongsLayout *layoutAlbumSongs = NULL; SParcel parcel; _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(m->vmgr = CViewMgr::GetInstance()) + _CHECK(m->base = mgr->Base()) + _CHECK(m->win = m->vmgr->Window()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) + _CHECK(layout = CCommonUI::AddBase(m->base, MUSIC_ALBUM_LAYOUT)) _CHECK(CExtBaseLayout::Create(layout)) - _CHECK(layoutAlbumSongs = new CAlbumSongsLayout(MUSIC_ALBUM_SONGS_LAYOUT)) - _CHECK(layoutAlbumSongs->Create(mgr)) + _CHECK(m->layoutAlbumSongs = new CAlbumSongsLayout(MUSIC_ALBUM_SONGS_LAYOUT)) + _CHECK(m->layoutAlbumSongs->Create(mgr)) _CHECK(mgr->AddLayout(layoutAlbumSongs)) _WHEN_SUCCESS{ @@ -479,14 +476,9 @@ bool CAlbumLayout::Create(CLayoutMgr *mgr, const char *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; - m->layoutAlbumSongs = layoutAlbumSongs; m_CreateAlbumGrid(); Connect(layout, ALBUM_LAYOUT, TYPE_KEY_DOWN); @@ -503,10 +495,11 @@ bool CAlbumLayout::Create(CLayoutMgr *mgr, const char *albumId) _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{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /* Window */ } + _CHECK_FAIL{ /* Base() */ } + _CHECK_FAIL{ /* GetInstance() */} _CHECK_FAIL{ delete m; m = NULL; } } _CREATE_END_AND_CATCH{ return false; } @@ -529,6 +522,9 @@ void CAlbumLayout::Destroy(void) free(m->ctxtinfo); delete[] m->album_id; + + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } diff --git a/src/views/album-songs-layout.cpp b/src/views/album-songs-layout.cpp index 21ff64f..a4b4f5a 100644 --- a/src/views/album-songs-layout.cpp +++ b/src/views/album-songs-layout.cpp @@ -65,7 +65,7 @@ struct SAlbumSongsLayout { Evas_Object *albumCover; Elm_Object_Item *focused_item; - CMusicController* mhandle; + CMusicController* pController; CLayoutMgr *mgr; CViewMgr *vmgr; CAlbumInfo *alinfo; @@ -173,7 +173,7 @@ void CAlbumSongsLayout::m_OnCtxtUpdate(EActionType type, int lid) break; case ACTION_TYPE_ADDTO: - if (m->mhandle->MediaAddsongsPlaylist(lid, list)) + if (m->pController->MediaAddsongsPlaylist(lid, list)) CCommonUI::CreateMsgBox(m->base, MUSIC_TEXT_ADDTO_MSG); else _ERR(" Adding songs to playlist failed "); @@ -185,12 +185,12 @@ void CAlbumSongsLayout::m_OnCtxtUpdate(EActionType type, int lid) break; } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); eina_list_free(list); if (type == ACTION_TYPE_PLAY) { - m->mhandle->Stop(); - m->mhandle->SetCurrentSong(((CSongInfo *)m->ctxtinfo->context)->Id()); + m->pController->Stop(); + m->pController->SetCurrentSong(((CSongInfo *)m->ctxtinfo->context)->Id()); } CCommonUI::UpdatePlaybackView(mode, Layout(), m->focused_item); @@ -296,7 +296,7 @@ void CAlbumSongsLayout::m_UpdateSongList(void) /* Remove existing songlist and prepare afresh */ m_EmptySongList(); - if (!m->mhandle->MediaGetList(LIST_TYPE_ALBUM_SONG, m->alinfo, &(m->slist))) { + if (!m->pController->MediaGetList(LIST_TYPE_ALBUM_SONG, m->alinfo, &(m->slist))) { _ERR(" Fetching song list from media failed "); return; } @@ -374,13 +374,13 @@ void CAlbumSongsLayout::m_GotoPlayback(int mode, char *id) list = eina_list_append(list, itinfo->sinfo); } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); eina_list_free(list); if (mode == ADD_TYPE_FRESH) { - m->mhandle->Stop(); + m->pController->Stop(); if (id) /* If want to play selected song */ - m->mhandle->SetCurrentSong(id); + m->pController->SetCurrentSong(id); } CCommonUI::UpdatePlaybackView((EAddType)mode, Layout(), NULL); @@ -531,41 +531,33 @@ bool CAlbumSongsLayout::Create(CLayoutMgr *mgr) ASSERT(mgr); _CREATE_BEGIN{ - Evas_Object *base = NULL; - Evas_Object *win = NULL; Evas_Object *layout = NULL; - CMusicController *mhandle = NULL; - CViewMgr *vmgr = NULL; - CAlbumInfo *alinfo = NULL; _CHECK(m = new SAlbumSongsLayout) - _CHECK(vmgr = CViewMgr::GetInstance()) - _CHECK(base = mgr->Base()) - _CHECK(win = vmgr->Window()) - _CHECK(mhandle = CMusicController::GetInstance()) - _CHECK(layout = CCommonUI::AddBase(base, MUSIC_ALBUM_SONGS_LAYOUT)) + _CHECK(m->vmgr = CViewMgr::GetInstance()) + _CHECK(m->base = mgr->Base()) + _CHECK(m->win = m->vmgr->Window()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) + _CHECK(layout = CCommonUI::AddBase(m->base, MUSIC_ALBUM_SONGS_LAYOUT)) _CHECK(CExtBaseLayout::Create(layout)) - _CHECK(alinfo = new CAlbumInfo) + _CHECK(m->alinfo = new CAlbumInfo) _WHEN_SUCCESS{ - m->win = win; - m->base = base; - m->vmgr = vmgr; - m->mhandle = mhandle; m->mgr = mgr; - m->alinfo = alinfo; Connect(layout, ALBUM_SONGS_LAYOUT, TYPE_KEY_DOWN); SetCurrentAlbum(NULL); } - _CHECK_FAIL{ delete alinfo; } + _CHECK_FAIL{ delete m->alinfo; } _CHECK_FAIL{ CExtBaseLayout::Destroy(); } _CHECK_FAIL{ evas_object_del(layout); } - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /* Window */ } + _CHECK_FAIL{ /* Base() */ } + _CHECK_FAIL{ /* GetInstance */} _CHECK_FAIL{ delete m; m = NULL; } } _CREATE_END_AND_CATCH{ return false; } @@ -587,6 +579,9 @@ void CAlbumSongsLayout::Destroy(void) evas_object_del(Layout()); free(m->ctxtinfo); + + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } diff --git a/src/views/artist-layout.cpp b/src/views/artist-layout.cpp index dc2563f..a32d7d5 100644 --- a/src/views/artist-layout.cpp +++ b/src/views/artist-layout.cpp @@ -84,5 +84,9 @@ void CArtistLayout::t_HandleItemSelect(SCatItemInfo *itinfo) bool CArtistLayout::t_GetMediaList(Eina_List **list) { - return CMusicController::GetInstance()->MediaGetList(LIST_TYPE_ARTIST, NULL, list); + CMusicController mc; + mc.Create(); + bool ret = mc.MediaGetList(LIST_TYPE_ARTIST, NULL, list); + mc.Destroy(); + return ret; } diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index ff8cea2..9675994 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -153,17 +153,17 @@ struct SMusicBaseView { Evas_Object *popup; Elm_Transit *transit; Evas_Object *c_grpbtn; - CMusicController *mhandle; + CMusicController *pController; CLayoutMgr *lmgr; SArgList *arglist; int btntype; bool fresh_view; bool srcBtnFocusedBySecondBtn; - CSongLayout *layoutSong; - CAlbumLayout *layoutAlbum; + CSongLayout *layoutSong; + CAlbumLayout *layoutAlbum; CArtistLayout *layoutArtist; - CGenreLayout *layoutGenre; + CGenreLayout *layoutGenre; CPlaylistLayout *layoutPlaylists; CFolderLayout *layoutFolder; @@ -528,11 +528,11 @@ void CMusicBaseView::m_UpdatePlaysongLabel(void) char buf[MAX_LENGTH]; int state; - state = m->mhandle->PlayState(); + state = m->pController->PlayState(); if (state != PLAY_STATUS_INITIAL && state != PLAY_STATUS_STOP) { - if (!m->mhandle->GetCurrentSong(&sinfo)) { + if (!m->pController->GetCurrentSong(&sinfo)) { _ERR(" failed to find song info "); return; } @@ -696,7 +696,7 @@ void CMusicBaseView::m_CreateFullView(void) void CMusicBaseView::m_SetSourceType(void) { - if (!m->arglist || !m->arglist->source || !m->mhandle) + if (!m->arglist || !m->arglist->source || !m->pController) return; if (!strcmp(g_sourceArg[SOURCE_TYPE_USB], m->arglist->source)) @@ -735,7 +735,7 @@ bool CMusicBaseView::Create(void *data) _CREATE_BEGIN{ Evas_Object *win = NULL; Evas_Object *base = NULL; - CMusicController *mhandle = NULL; + CMusicController *pController = NULL; CLayoutMgr *lmgr = NULL; CSongLayout *layoutSong = NULL; CAlbumLayout *layoutAlbum = NULL; @@ -747,7 +747,8 @@ bool CMusicBaseView::Create(void *data) _CHECK(m = new SMusicBaseView) _CHECK(win = CViewMgr::GetInstance()->Window()) - _CHECK(mhandle = CMusicController::GetInstance()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) _CHECK(base = CCommonUI::AddBase(win, MUSIC_BASE_VIEW)) _CHECK(lmgr = new CLayoutMgr) _CHECK(lmgr->Create(base, NULL)) @@ -772,12 +773,12 @@ bool CMusicBaseView::Create(void *data) _CHECK(lmgr->AddLayout(layoutFolder)) _CHECK(handleVolume = new CHandleVolume) _CHECK(handleVolume->Create(base)) - _CHECK(mhandle->AddListener(this)) + _CHECK(pController->AddListener(this)) _WHEN_SUCCESS{ m->base = base; m->win = win; - m->mhandle = mhandle; + m->pController = pController; m->lmgr = lmgr; m->fresh_view = true; m->arglist = (SArgList *)data; @@ -806,7 +807,7 @@ bool CMusicBaseView::Create(void *data) Connect(m->base, BASE_VIEW, TYPE_KEY_DOWN | TYPE_KEY_UP); } - _CHECK_FAIL{ m->mhandle->RemoveListener(this); } + _CHECK_FAIL{ m->pController->RemoveListener(this); } _CHECK_FAIL{ handleVolume->Destroy(); } _CHECK_FAIL{ delete handleVolume; } _CHECK_FAIL{ lmgr->RemoveLayout(layoutFolder); } @@ -831,8 +832,9 @@ bool CMusicBaseView::Create(void *data) _CHECK_FAIL{ lmgr->Destroy(); } _CHECK_FAIL{ delete lmgr; } _CHECK_FAIL{ evas_object_del(m->base); } - _CHECK_FAIL{} - _CHECK_FAIL{} + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /* win */ } _CHECK_FAIL{ delete m; m = NULL; } } _CREATE_END_AND_CATCH{ return false; } @@ -844,7 +846,7 @@ void CMusicBaseView::Destroy(void) { ASSERT(m); - m->mhandle->RemoveListener(this); + m->pController->RemoveListener(this); m->pHandleVolume->Destroy(); m->lmgr->RemoveLayout(m->layoutFolder); @@ -876,6 +878,8 @@ void CMusicBaseView::Destroy(void) delete m->lmgr; evas_object_del(m->base); + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } @@ -1005,7 +1009,7 @@ void CMusicBaseView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key switch (id) { case BASE_VIEW: if (!strcmp(ev->keyname, KEY_EXIT)) { - m->mhandle->Stop(); + m->pController->Stop(); elm_exit(); } else if (!strcmp(ev->keyname, KEY_ENTER) || @@ -1070,7 +1074,7 @@ void CMusicBaseView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key case BASE_VIEW_GROUP_PLAYLIST: if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) { - m->mhandle->Stop(); + m->pController->Stop(); elm_exit(); } break; @@ -1133,7 +1137,7 @@ void CMusicBaseView::OnMouseClicked(int id, Evas_Object *obj) bool r; int state; - state = m->mhandle->PlayState(); + state = m->pController->PlayState(); if (state != PLAY_STATUS_INITIAL) { t_OnHide(); @@ -1147,14 +1151,14 @@ void CMusicBaseView::OnMouseClicked(int id, Evas_Object *obj) return; } - r = m->mhandle->MediaGetList(LIST_TYPE_SONG, NULL, &list); + r = m->pController->MediaGetList(LIST_TYPE_SONG, NULL, &list); if (r == false || eina_list_count(list) == 0) { _ERR(" No songs "); return; } - m->mhandle->Stop(); - m->mhandle->UpdatePlaylist(list, ADD_TYPE_FRESH); + m->pController->Stop(); + m->pController->UpdatePlaylist(list, ADD_TYPE_FRESH); eina_list_free(list); m_GotoPlayback(); diff --git a/src/views/category-layout.cpp b/src/views/category-layout.cpp index 57857d1..b70ee58 100644 --- a/src/views/category-layout.cpp +++ b/src/views/category-layout.cpp @@ -93,7 +93,7 @@ struct SCategoryLayout { Eina_List *songlist; Eina_List *it_infolist; Ecore_Idler *focusIdler; - CMusicController *pMusicController; + CMusicController *pController; CLayoutMgr *lmgr; CViewMgr *vmgr; CSongInfo *c_sinfo; @@ -196,13 +196,13 @@ void CCategoryLayout::m_OnEntrynameSet(const char *name) return; } - if (m->pMusicController->MediaExistPlaylist(str)) { + if (m->pController->MediaExistPlaylist(str)) { CCommonUI::CreateMsgBox(Layout(), MUSIC_TEXT_INUSE_MSG); free(str); return; } - if (!m->pMusicController->MediaInsertPlaylist(str, idlist)) { + if (!m->pController->MediaInsertPlaylist(str, idlist)) { _ERR("Playlist creation failed "); free(str); return; @@ -242,7 +242,7 @@ void CCategoryLayout::t_OnCtxtUpdate(enum EActionType type, int lid) return; if (t.depth == E_DEPTH_ALBUM) { - m->pMusicController->MediaGetList(LIST_TYPE_ALBUM_SONG, + m->pController->MediaGetList(LIST_TYPE_ALBUM_SONG, t.ctxtinfo->context, &list); sinfo = (CSongInfo *)eina_list_data_get(list); } @@ -251,7 +251,7 @@ void CCategoryLayout::t_OnCtxtUpdate(enum EActionType type, int lid) EINA_LIST_FOREACH(alist, l, obj) { alinfo = (CAlbumInfo *)obj; slist = NULL; - if (!m->pMusicController->MediaGetList(LIST_TYPE_ALBUM_SONG, (void *)alinfo, &slist)) { + if (!m->pController->MediaGetList(LIST_TYPE_ALBUM_SONG, (void *)alinfo, &slist)) { _ERR(" Failed to get album songlist "); continue; } @@ -282,7 +282,7 @@ void CCategoryLayout::t_OnCtxtUpdate(enum EActionType type, int lid) case ACTION_TYPE_ADDTO: { - if (m->pMusicController->MediaAddsongsPlaylist(lid, list)) + if (m->pController->MediaAddsongsPlaylist(lid, list)) CCommonUI::CreateMsgBox(t.base, MUSIC_TEXT_ADDTO_MSG); else _ERR(" Adding songs to playlist failed "); @@ -303,10 +303,10 @@ void CCategoryLayout::t_OnCtxtUpdate(enum EActionType type, int lid) break; } - m->pMusicController->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); if (type == ACTION_TYPE_PLAY) { - m->pMusicController->Stop(); - m->pMusicController->SetCurrentSong(sinfo->Id()); + m->pController->Stop(); + m->pController->SetCurrentSong(sinfo->Id()); } if (t.depth == E_DEPTH_CATEGORY) { @@ -632,9 +632,9 @@ void CCategoryLayout::m_GotoPlayback(int mode, char *id) return; if (mode == ADD_TYPE_FRESH) { - m->pMusicController->Stop(); + m->pController->Stop(); if (id) /* If want to play selected song */ - m->pMusicController->SetCurrentSong(id); + m->pController->SetCurrentSong(id); } CCommonUI::UpdatePlaybackView((EAddType)mode, Layout(), NULL); @@ -682,13 +682,13 @@ void CCategoryLayout::m_AddAlbumsToPlayback(int mode) SCatItemInfo *itinfo = NULL; void *obj = NULL; Eina_List *infolist = m->it_infolist; - CMusicController *pMusicController = m->pMusicController; + CMusicController *pController = m->pController; list = NULL; EINA_LIST_FOREACH(infolist, l, obj) { itinfo = (SCatItemInfo *)obj; slist = NULL; - if (!pMusicController->MediaGetList(LIST_TYPE_ALBUM_SONG, itinfo->alinfo, &slist)) { + if (!pController->MediaGetList(LIST_TYPE_ALBUM_SONG, itinfo->alinfo, &slist)) { _ERR(" Failed to get album songlist "); continue; } @@ -704,7 +704,7 @@ void CCategoryLayout::m_AddAlbumsToPlayback(int mode) eina_list_free(slist); } - pMusicController->UpdatePlaylist(list, mode); + pController->UpdatePlaylist(list, mode); EINA_LIST_FREE(list, obj) { sinfo = (CSongInfo *)obj; sinfo->Destroy(); @@ -720,7 +720,7 @@ void CCategoryLayout::m_AddSongsToPlayback(int mode) struct SCatItemInfo *itinfo = NULL; void *obj = NULL; Eina_List *infolist = m->it_infolist; - CMusicController *pMusicController = m->pMusicController; + CMusicController *pController = m->pController; list = NULL; EINA_LIST_FOREACH(infolist, l, obj) { @@ -728,7 +728,7 @@ void CCategoryLayout::m_AddSongsToPlayback(int mode) list = eina_list_append(list, itinfo->sinfo); } - pMusicController->UpdatePlaylist(list, mode); + pController->UpdatePlaylist(list, mode); eina_list_free(list); } @@ -1137,60 +1137,51 @@ bool CCategoryLayout::Create(CLayoutMgr *mgr) ASSERT(!m); ASSERT(mgr); + memset(&t, 0, sizeof(SCategoryLayoutProtected)); + _CREATE_BEGIN{ - Evas_Object *base = NULL; - Evas_Object *win = NULL; Evas_Object *layout = NULL; - CMusicController *pMusicController = NULL; - CViewMgr *vmgr = NULL; CEntryPopup *popup = NULL; - CCategorySongsLayout *layoutCatSongs = NULL; - const char *catSongLayoutId = NULL; _CHECK(m = new SCategoryLayout) - _CHECK(vmgr = CViewMgr::GetInstance()) - _CHECK(base = mgr->Base()) - _CHECK(win = vmgr->Window()) - _CHECK(pMusicController = CMusicController::GetInstance()) - _CHECK(layout = elm_layout_add(base)) + _CHECK(m->vmgr = CViewMgr::GetInstance()) + _CHECK(t.base = mgr->Base()) + _CHECK(m->win = m->vmgr->Window()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) + _CHECK(layout = elm_layout_add(t.base)) _CHECK(CExtBaseLayout::Create(layout)) _CHECK(popup = new CEntryPopup) - _CHECK(catSongLayoutId = m_CategorySongLayoutId()) - _CHECK(layoutCatSongs = new CCategorySongsLayout(catSongLayoutId)) - _CHECK(layoutCatSongs->Create(mgr, this)) - _CHECK(mgr->AddLayout(layoutCatSongs)) + _CHECK(m->catSongLayoutId = m_CategorySongLayoutId()) + _CHECK(m->layoutCatSongs = new CCategorySongsLayout(m->catSongLayoutId)) + _CHECK(m->layoutCatSongs->Create(mgr, this)) + _CHECK(mgr->AddLayout(m->layoutCatSongs)) _WHEN_SUCCESS{ - memset(&t, 0, sizeof(SCategoryLayoutProtected)); - m->win = win; - t.base = base; - m->vmgr = vmgr; - m->pMusicController = pMusicController; m->lmgr = mgr; t.depth = E_DEPTH_CATEGORY; m->callback.cbHandleEmptyStatus = NULL; m->callback.cookie = NULL; t.epopup = popup; - m->catSongLayoutId = catSongLayoutId; - m->layoutCatSongs = layoutCatSongs; t_UpdateLayout(false); Connect(Layout(), CATEGORY_LAYOUT, TYPE_KEY_DOWN); } - _CHECK_FAIL{ mgr->RemoveLayout(layoutCatSongs); } + _CHECK_FAIL{ mgr->RemoveLayout(m->layoutCatSongs); } _CHECK_FAIL{ m->layoutCatSongs->Destroy(); } - _CHECK_FAIL{ delete layoutCatSongs; } + _CHECK_FAIL{ delete m->layoutCatSongs; } _CHECK_FAIL{} _CHECK_FAIL{ delete popup; } _CHECK_FAIL{ CExtBaseLayout::Destroy(); } _CHECK_FAIL{ evas_object_del(layout); } - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /* Window */ } + _CHECK_FAIL{ /* Base */ } + _CHECK_FAIL{ /* GetInsteance */ } _CHECK_FAIL{ delete m; m = NULL; } } _CREATE_END_AND_CATCH{ return false; } @@ -1227,6 +1218,8 @@ void CCategoryLayout::Destroy(void) evas_object_del(Layout()); free(t.ctxtinfo); + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } diff --git a/src/views/category-songs-layout.cpp b/src/views/category-songs-layout.cpp index 87b0531..e4aa7a6 100644 --- a/src/views/category-songs-layout.cpp +++ b/src/views/category-songs-layout.cpp @@ -85,7 +85,7 @@ struct SCategorySongsLayout { Evas_Object *albumCover; Ecore_Idler *focusIdler; - CMusicController* mhandle; + CMusicController* pController; CLayoutMgr *mgr; CViewMgr *vmgr; SContentInfo *ctxtinfo; @@ -272,7 +272,7 @@ void CCategorySongsLayout::m_OnCtxtUpdate(EActionType type, int lid) break; case ACTION_TYPE_ADDTO: - if (m->mhandle->MediaAddsongsPlaylist(lid, list)) + if (m->pController->MediaAddsongsPlaylist(lid, list)) CCommonUI::CreateMsgBox(m->base, MUSIC_TEXT_ADDTO_MSG); else _ERR(" Adding songs to playlist failed "); @@ -284,12 +284,12 @@ void CCategorySongsLayout::m_OnCtxtUpdate(EActionType type, int lid) break; } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); eina_list_free(list); if (type == ACTION_TYPE_PLAY) { - m->mhandle->Stop(); - m->mhandle->SetCurrentSong(((CSongInfo *)m->ctxtinfo->context)->Id()); + m->pController->Stop(); + m->pController->SetCurrentSong(((CSongInfo *)m->ctxtinfo->context)->Id()); } CCommonUI::UpdatePlaybackView(mode, Layout(), m->focused_item); @@ -392,16 +392,16 @@ void CCategorySongsLayout::m_UpdateSongList(void) // event handling will be done in OnActivated function item_select_fn = NULL; if (m->selectType == SELECT_TYPE_REMOVE) - m->mhandle->MediaGetList(LIST_TYPE_PLAYLISTS_SONG, m->catInfo, &(m->slist)); + m->pController->MediaGetList(LIST_TYPE_PLAYLISTS_SONG, m->catInfo, &(m->slist)); else - m->mhandle->MediaGetList(LIST_TYPE_SONG, NULL, &(m->slist)); + m->pController->MediaGetList(LIST_TYPE_SONG, NULL, &(m->slist)); } else { item_select_fn = sm_CbSongItemSelect; if (m->depth == DEPTH_SHOW_LIST) - m->mhandle->MediaGetList(LIST_TYPE_PLAYLISTS_SONG, m->catInfo, &(m->slist)); + m->pController->MediaGetList(LIST_TYPE_PLAYLISTS_SONG, m->catInfo, &(m->slist)); else - m->mhandle->MediaGetList(LIST_TYPE_ALBUM_SONG, m->albumInfo, &(m->slist)); + m->pController->MediaGetList(LIST_TYPE_ALBUM_SONG, m->albumInfo, &(m->slist)); } EINA_LIST_FOREACH(m->slist, l, obj) { @@ -481,13 +481,13 @@ void CCategorySongsLayout::m_GotoPlayback(int mode, char *id) list = eina_list_append(list, itinfo->sinfo); } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); eina_list_free(list); if (mode == ADD_TYPE_FRESH) { - m->mhandle->Stop(); + m->pController->Stop(); if (id) /* If want to play selected song */ - m->mhandle->SetCurrentSong(id); + m->pController->SetCurrentSong(id); } CCommonUI::UpdatePlaybackView((EAddType)mode, Layout(), NULL); @@ -769,7 +769,7 @@ void CCategorySongsLayout::m_AddSelectedSongs(void) if (!lid || !idlist) return; - if (!m->mhandle->MediaAddmediaPlaylist(lid, idlist)) { + if (!m->pController->MediaAddmediaPlaylist(lid, idlist)) { _ERR(" Failed to add songs to playlist "); return; } @@ -796,7 +796,7 @@ void CCategorySongsLayout::m_RemoveSelectedSongs(void) if (!lid || !idlist) return; - if (!m->mhandle->MediaRemovemediaPlaylist(lid, idlist)) { + if (!m->pController->MediaRemovemediaPlaylist(lid, idlist)) { _ERR(" Failed to remove songs from playlist "); return; } @@ -828,26 +828,21 @@ bool CCategorySongsLayout::Create(CLayoutMgr *mgr, CCategoryLayout *parent) _CREATE_BEGIN{ Evas_Object *base = NULL; - Evas_Object *win = NULL; Evas_Object *layout = NULL; - CMusicController *mhandle = NULL; - CViewMgr *vmgr = NULL; CCategoryInfo *catInfo = NULL; _CHECK(m = new SCategorySongsLayout) - _CHECK(vmgr = CViewMgr::GetInstance()) + _CHECK(m->vmgr = CViewMgr::GetInstance()) _CHECK(base = mgr->Base()) - _CHECK(win = vmgr->Window()) - _CHECK(mhandle = CMusicController::GetInstance()) + _CHECK(m->win = m->vmgr->Window()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) _CHECK(layout = CCommonUI::AddBase(base, MUSIC_CATEGORY_SONGS_LAYOUT)) _CHECK(CExtBaseLayout::Create(layout)) _CHECK(catInfo = new CCategoryInfo) _WHEN_SUCCESS{ - m->win = win; m->base = base; - m->vmgr = vmgr; - m->mhandle = mhandle; m->mgr = mgr; m->parent = parent; m->curCatInfo = catInfo; @@ -858,10 +853,11 @@ bool CCategorySongsLayout::Create(CLayoutMgr *mgr, CCategoryLayout *parent) _CHECK_FAIL{ delete catInfo; } _CHECK_FAIL{ CExtBaseLayout::Destroy(); } _CHECK_FAIL{ evas_object_del(layout); } - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /*Window() */ } + _CHECK_FAIL{ /* mgr->Base() */ } + _CHECK_FAIL{ /* CViewMgr::GetInstance() */ } _CHECK_FAIL{ delete m; m = NULL; } } _CREATE_END_AND_CATCH{ return false; } @@ -884,6 +880,9 @@ void CCategorySongsLayout::Destroy(void) evas_object_del(Layout()); free(m->ctxtinfo); + + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } diff --git a/src/views/context-view.cpp b/src/views/context-view.cpp index 27e0591..0f3dec8 100644 --- a/src/views/context-view.cpp +++ b/src/views/context-view.cpp @@ -106,7 +106,7 @@ struct SContextView { CRemovePopupWindow *popup; CPlayListCtxPopup *ctxpopup; Ecore_Idler *idler; - CMusicController *mhandle; + CMusicController *pController; CViewMgr *vmgr; SContentInfo *ctxtinfo; EContextType type; @@ -1244,10 +1244,6 @@ bool CContextView::Create(void *data) ASSERT(!m); ASSERT(data); - Evas_Object *base = NULL; - Evas_Object *win = NULL; - CMusicController *mhandle = NULL; - CViewMgr *mgr = NULL; SParcel *parcel = (SParcel *)data; SContentInfo *ctxtinfo = parcel->ctxtInfo; @@ -1258,33 +1254,31 @@ bool CContextView::Create(void *data) } _CREATE_BEGIN{ - _CHECK(mgr = CViewMgr::GetInstance()) - _CHECK(win = mgr->Window()) - _CHECK(mhandle = CMusicController::GetInstance()) _CHECK(m = new SContextView) - _CHECK(base = CCommonUI::AddBase(win, MUSIC_CONTEXT_VIEW)) + _CHECK(m->vmgr = CViewMgr::GetInstance()) + _CHECK(m->win = m->vmgr->Window()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) + _CHECK(m->base = CCommonUI::AddBase(m->win, MUSIC_CONTEXT_VIEW)) _CHECK(CBaseView::Create(data)) _WHEN_SUCCESS{ m->type = ctxtinfo->type; - m->vmgr = mgr; - m->win = win; - m->mhandle = mhandle; - m->base = base; m->ctxtinfo = ctxtinfo; - Connect(base, CONTEXT_VIEW, TYPE_KEY_DOWN); + Connect(m->base, CONTEXT_VIEW, TYPE_KEY_DOWN); _CHECK(m_CreateFullView()) _CHECK_FAIL{} } _CHECK_FAIL{ CBaseView::Destroy(); } - _CHECK_FAIL{ evas_object_del(base); } + _CHECK_FAIL{ evas_object_del(m->base); } + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /* Window() */ } + _CHECK_FAIL{ /* CViewMgr::GetInstance() */ } _CHECK_FAIL{ delete m; m = NULL; } - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} } _CREATE_END_AND_CATCH{ return false; } return true; @@ -1303,6 +1297,8 @@ void CContextView::Destroy(void) CBaseView::Destroy(); evas_object_del(m->base); + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } diff --git a/src/views/folder-layout.cpp b/src/views/folder-layout.cpp index 65822e4..c956f3a 100644 --- a/src/views/folder-layout.cpp +++ b/src/views/folder-layout.cpp @@ -102,7 +102,7 @@ struct SFolderLayout { Elm_Gengrid_Item_Class *item_class; Elm_Gengrid_Item_Class *songitem_class; Ecore_Idler *focusIdler; - CMusicController *mhandle; + CMusicController *pController; CLayoutMgr *lmgr; CViewMgr *vmgr; CFolderInfo *c_finfo; @@ -306,7 +306,7 @@ void CFolderLayout::m_OnCtxtUpdate(EActionType type, int lid) list = eina_list_append(list, sinfo); } else { - m->mhandle->MediaGetList(LIST_TYPE_FOLDER_SONG, + m->pController->MediaGetList(LIST_TYPE_FOLDER_SONG, m->ctxtinfo->context, &list); sinfo = (CSongInfo *)eina_list_data_get(list); } @@ -325,7 +325,7 @@ void CFolderLayout::m_OnCtxtUpdate(EActionType type, int lid) break; case ACTION_TYPE_ADDTO: - if (m->mhandle->MediaAddsongsPlaylist(lid, list)) + if (m->pController->MediaAddsongsPlaylist(lid, list)) CCommonUI::CreateMsgBox(m->base, MUSIC_TEXT_ADDTO_MSG); else _ERR(" Adding songs to playlist failed "); @@ -337,12 +337,12 @@ void CFolderLayout::m_OnCtxtUpdate(EActionType type, int lid) break; } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); eina_list_free(list); if (type == ACTION_TYPE_PLAY) { - m->mhandle->Stop(); - m->mhandle->SetCurrentSong(sinfo->Id()); + m->pController->Stop(); + m->pController->SetCurrentSong(sinfo->Id()); } CCommonUI::UpdatePlaybackView((EAddType)type, Layout(), m->focused_item); @@ -478,18 +478,18 @@ void CFolderLayout::m_GotoPlayback(int mode, char *id) } } else { - r = m->mhandle->MediaGetList(LIST_TYPE_SONG, NULL, &list); + r = m->pController->MediaGetList(LIST_TYPE_SONG, NULL, &list); if (r == false || eina_list_count(list) == 0) return; } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); eina_list_free(list); if (mode == ADD_TYPE_FRESH) { - m->mhandle->Stop(); + m->pController->Stop(); if (id) /* If want to play selected song */ - m->mhandle->SetCurrentSong(id); + m->pController->SetCurrentSong(id); } CCommonUI::UpdatePlaybackView((EAddType)mode, Layout(), NULL); @@ -623,7 +623,7 @@ void CFolderLayout::m_UpdateFolderGrid(bool sort_flag) if (!sort_flag) { if (m->depth == E_DEPTH_SONG) { - r = m->mhandle->MediaGetList(LIST_TYPE_FOLDER_SONG, m->c_finfo, &(m->flist)); + r = m->pController->MediaGetList(LIST_TYPE_FOLDER_SONG, m->c_finfo, &(m->flist)); if (r == false || eina_list_count(m->flist) == 0) { _ERR(" Fetching folder list failed "); @@ -631,7 +631,7 @@ void CFolderLayout::m_UpdateFolderGrid(bool sort_flag) } } else { - r = m->mhandle->MediaGetList(LIST_TYPE_FOLDER, + r = m->pController->MediaGetList(LIST_TYPE_FOLDER, NULL, &(m->flist)); if (r == false || eina_list_count(m->flist) == 0) { @@ -757,25 +757,18 @@ bool CFolderLayout::Create(CLayoutMgr *mgr) ASSERT(mgr); _CREATE_BEGIN{ - Evas_Object *base = NULL; - Evas_Object *win = NULL; Evas_Object *layout = NULL; - CMusicController *mhandle = NULL; - CViewMgr *vmgr = NULL; _CHECK(m = new SFolderLayout) - _CHECK(vmgr = CViewMgr::GetInstance()) - _CHECK(base = mgr->Base()) - _CHECK(win = vmgr->Window()) - _CHECK(mhandle = CMusicController::GetInstance()) - _CHECK(layout = CCommonUI::AddBase(base, MUSIC_FOLDER_LAYOUT)) + _CHECK(m->vmgr = CViewMgr::GetInstance()) + _CHECK(m->base = mgr->Base()) + _CHECK(m->win = m->vmgr->Window()) + _CHECK(m->pController = new CMusicController); + _CHECK(m->pController->Create()) + _CHECK(layout = CCommonUI::AddBase(m->base, MUSIC_FOLDER_LAYOUT)) _CHECK(CExtBaseLayout::Create(layout)) _WHEN_SUCCESS{ - m->win = win; - m->base = base; - m->vmgr = vmgr; - m->mhandle = mhandle; m->lmgr = mgr; m->depth = E_DEPTH_FOLDER; @@ -792,10 +785,11 @@ bool CFolderLayout::Create(CLayoutMgr *mgr) _CHECK_FAIL{ CExtBaseLayout::Destroy(); } _CHECK_FAIL{ evas_object_del(layout); } - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /* Window() */ } + _CHECK_FAIL{ /* Base() */} + _CHECK_FAIL{ /* CViewMgr::GetInstance() */ } _CHECK_FAIL{ delete m; m = NULL; } } _CREATE_END_AND_CATCH{ return false; } @@ -819,6 +813,9 @@ void CFolderLayout::Destroy(void) m->c_sinfo->Destroy(); delete m->c_sinfo; free(m->ctxtinfo); + + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } diff --git a/src/views/genre-layout.cpp b/src/views/genre-layout.cpp index fc6594c..1a774ab 100644 --- a/src/views/genre-layout.cpp +++ b/src/views/genre-layout.cpp @@ -85,5 +85,9 @@ void CGenreLayout::t_HandleItemSelect(SCatItemInfo *itinfo) bool CGenreLayout::t_GetMediaList(Eina_List **list) { - return CMusicController::GetInstance()->MediaGetList(LIST_TYPE_GENRE, NULL, list); + CMusicController mc; + mc.Create(); + bool ret = mc.MediaGetList(LIST_TYPE_GENRE, NULL, list); + mc.Destroy(); + return ret; } diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index 6459d9f..a989cbf 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -52,6 +52,356 @@ #define S_INCREMENT 1000 /* milli seconds */ +//////////////////////////////////////////////////////////////////////////////// +// +struct SSliderWidget { + Evas_Object *eoSlider; + Evas_Object *eoBase; + + Ecore_Timer *etSlider; + + CSongInfo *pSongInfo; + + CMusicController controller; + + SSliderWidget() { + eoSlider = NULL; + eoBase = NULL; + etSlider = NULL; + pSongInfo = NULL; + } +}; + + +Eina_Bool CSliderWidget::sm_CbUpdateSlider(void *dt) +{ + CSliderWidget *root = (CSliderWidget*)dt; + Eina_Bool ret = ECORE_CALLBACK_CANCEL; + + if (root) + ret = root->m_OnUpdateSlider(); + + return ret; +} + + +Eina_Bool CSliderWidget::m_OnUpdateSlider(void) +{ + char *timestr = NULL; + int value; + int duration; + + if (!m->controller.GetPosition(&value)) { + m->etSlider = NULL; + return ECORE_CALLBACK_CANCEL; + } + + m_UpdateSongInfo(); + + duration = m->pSongInfo->Duration(); + + value = value + S_INCREMENT; + if (value > duration) { + m->etSlider = NULL; + return ECORE_CALLBACK_CANCEL; + } + + elm_slider_value_set(m->eoSlider, value); + timestr = CCommonUI::TimeStrFromMilSeconds(value); + if (timestr) { + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, + timestr); + free(timestr); + } + + return ECORE_CALLBACK_RENEW; +} + + +bool CSliderWidget::m_AddSlider(void) +{ + Evas_Object *eoSlider = NULL; + + eoSlider = elm_slider_add(m->eoBase); + if (!eoSlider) + return false; + + elm_slider_indicator_show_set(eoSlider, EINA_FALSE); + elm_slider_indicator_show_on_focus_set(eoSlider, EINA_FALSE); + elm_object_style_set(eoSlider, MUSIC_STYLE_SLIDER); + elm_slider_horizontal_set(eoSlider, EINA_TRUE); + elm_object_part_content_set(m->eoBase, MUSIC_PART_PROGRESSBAR, eoSlider); + + Connect(eoSlider, TYPE_CHANGED | TYPE_MOUSE_MOVE); + + evas_object_show(eoSlider); + m->eoSlider = eoSlider; + + return true; +} + + +void CSliderWidget::m_RemoveTimer(void) +{ + if (m->etSlider) { + ecore_timer_del(m->etSlider); + m->etSlider = NULL; + } +} + + +void CSliderWidget::m_UpdateSongInfo(void) +{ + CSongInfo *sinfo = NULL; + int index; + + if (!m->controller.GetCurrentSongIndex(&index)) { + _ERR(" music get current song index failed "); + return; + } + + if (!m->controller.GetSonginfoFromIndex(index, &sinfo)) { + _ERR(" music get songinfo failed "); + return; + } + m->pSongInfo = sinfo; +} + + +bool CSliderWidget::Create(Evas_Object *eoBase) +{ + ASSERT(!m); + + _CREATE_BEGIN{ + _CHECK(m = new SSliderWidget) + _CHECK(m->controller.Create()) + _CHECK(m->controller.AddListener(this)) + _CHECK(m_AddSlider()) + + _CHECK_FAIL{} + _CHECK_FAIL{ m->controller.RemoveListener(this); } + _CHECK_FAIL{ m->controller.Destroy(); } + _CHECK_FAIL{ delete m; m = NULL; } + } _CREATE_END_AND_CATCH{ return false; } + + return true; +} + + +void CSliderWidget::Destroy(void) +{ + ASSERT(m); + + m->controller.RemoveListener(this); + m_RemoveTimer(); + + delete m; + m = NULL; +} + + +Evas_Object* CSliderWidget::Base(void) +{ + ASSERT(m); + + return m->eoSlider; +} + + +void CSliderWidget::Init(void) +{ + elm_object_disabled_set(m->eoSlider, EINA_TRUE); + elm_slider_value_set(m->eoSlider, 0); +} + + +void CSliderWidget::OnComplete(void) +{ +} + + +void CSliderWidget::OnStartPlayback(void) +{ + int duration; + char *timestr = NULL; + double step; + + elm_slider_value_set(m->eoSlider, 0); + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); + + elm_object_disabled_set(m->eoSlider, EINA_FALSE); + + m_UpdateSongInfo(); + duration = m->pSongInfo->Duration(); + + m_RemoveTimer(); + m->etSlider = ecore_timer_add(S_INTERVAL, sm_CbUpdateSlider, this); + + elm_slider_min_max_set(m->eoSlider, 0, duration); + timestr = CCommonUI::TimeStrFromMilSeconds(duration); + if (timestr) { + elm_object_part_text_set(m->eoBase, + MUSIC_PART_FULLTIME, timestr); + free(timestr); + } + + step = (double)SLIDER_STEP / (double)duration; + elm_slider_step_set(m->eoSlider, step); +} + + +void CSliderWidget::OnStopPlayback(void) +{ + elm_slider_value_set(m->eoSlider, 0); + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); + + elm_object_disabled_set(m->eoSlider, EINA_TRUE); + m_RemoveTimer(); +} + + +void CSliderWidget::OnPausePlayback(void) +{ + if (m->etSlider) + ecore_timer_freeze(m->etSlider); +} + + +void CSliderWidget::OnResumePlayback(void) +{ + if (m->etSlider) + ecore_timer_thaw(m->etSlider); +} + + +void CSliderWidget::OnPosition(int milsec) +{ + elm_slider_value_set(m->eoSlider, milsec); +} + + +void CSliderWidget::OnChanged(int id, Evas_Object *obj) +{ + char *timestr = NULL; + int value; + + if (m->controller.PlayState() == PLAY_STATUS_PLAY) { + if (m->etSlider) + ecore_timer_freeze(m->etSlider); + } + + value = elm_slider_value_get(obj); + m->controller.SetPosition(value); + timestr = CCommonUI::TimeStrFromMilSeconds(value); + if (timestr) { + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, + timestr); + free(timestr); + } + + if (m->controller.PlayState() == PLAY_STATUS_PLAY) { + if (m->etSlider) + ecore_timer_thaw(m->etSlider); + } +} + + +void CSliderWidget::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) +{ + if (!elm_object_focus_get(obj)) + elm_object_focus_set(obj, EINA_TRUE); +} +// +//////////////////////////////////////////////////////////////////////////////// + + +struct STimer { + int count; + int s, e; + struct SCookie { + Ecore_Timer *etTimer; + CTimer *root; + int id; + SCookie(CTimer *timer, int _id) { + root = timer; + id = _id; + } + }; + + Eina_List *elList; +}; + + +Eina_Bool CTimer::sm_CbTimer(void *data) +{ + STimer::SCookie *cookie = (STimer::SCookie*)data; + + if (cookie->root) + cookie->root->t_OnTimer(cookie->id); + + cookie->root->m->elList = eina_list_remove(cookie->root->m->elList, cookie); + + delete cookie; + + return EINA_FALSE; +} + + +void CTimer::t_OnTimer(int id) +{ +} + + +bool CTimer::Create(void) +{ + ASSERT(!m); + + m = new STimer; + if (!m) + return false; + + m->elList = NULL; + + return true; +} + + +void CTimer::Destroy(void) +{ + ASSERT(m); + + delete m; + m = NULL; +} + + +bool CTimer::SetTimer(int id, int ms) +{ + ASSERT(m); + + + STimer::SCookie *cookie = new STimer::SCookie(this, id); + if (!cookie) + return false; + + m->elList = eina_list_append(m->elList, cookie); + cookie->etTimer = ecore_timer_add(ms, sm_CbTimer, cookie); + return true; +} + + +void CTimer::KillTimer(int id) +{ + ASSERT(m); + + +} + + + + + + enum EEvasObject { EO_BASE, @@ -68,11 +418,7 @@ enum EEvasObject { EO_BTN_PLAY, EO_BTN_FORWARD, // TOTAL_CONTROL_BTNS - EO_SLIDER, - EO_PLAYLIST, - - EO_BOX, }; @@ -84,6 +430,15 @@ struct SItemInfo { bool select_status; }; + +enum EPressTypes { + PRESS_SHORT, + PRESS_SHORT_PAUSE, + PRESS_LONG, + PRESS_LONG_PAUSE, +}; + + struct SPlaybackView { Evas_Object *eoWin; @@ -98,28 +453,26 @@ struct SPlaybackView { Evas_Object *eoBtnEdit[TOTAL_EDIT_BTNS]; Evas_Object *eoAlbumCover; - Evas_Object *eoSlider; + //Evas_Object *eoSlider; + CSliderWidget *pSliderWidget; Evas_Object *eoPressedObj; Eina_List *elInfo; - Ecore_Timer *etSlider; Ecore_Timer *etLongPress; Ecore_Timer *etWait; - CMusicController *hMusicController; //! NOT NULL + CMusicController *pController; //! NOT NULL CSongInfo *csinfo; CViewMgr *mgr; SItemInfo *cs_itinfo; SContentInfo *ctxtinfo; - int press_status; + EPressTypes press_status; CHandleVolume *pHandleVolume; SPlaybackView() { memset(this, 0, sizeof(SPlaybackView)); - pHandleVolume = new CHandleVolume; } ~SPlaybackView() { - delete pHandleVolume; } }; @@ -129,12 +482,6 @@ struct SBtnInfo { EEvasObject type; }; -enum EPressTypes { - PRESS_SHORT, - PRESS_SHORT_PAUSE, - PRESS_LONG, - PRESS_LONG_PAUSE, -}; enum EControlBtns { BTN_SETTINGS, @@ -157,47 +504,13 @@ enum EEditBtns { }; enum ETimers { - TIMER_SLIDER, + //TIMER_SLIDER, TIMER_WAIT, TIMER_LONGPRESS, TIMER_VOLUME }; -Eina_Bool CPlaybackView::sm_CbUpdateSlider(void *dt) -{ - SPlaybackView *m = (SPlaybackView *)dt; - char *timestr = NULL; - int value; - int duration; - - if (!m) - return ECORE_CALLBACK_CANCEL; - - if (!m->hMusicController->GetPosition(&value)) { - m->etSlider = NULL; - return ECORE_CALLBACK_CANCEL; - } - - duration = m->csinfo->Duration(); - - value = value + S_INCREMENT; - if (value > duration) { - m->etSlider = NULL; - return ECORE_CALLBACK_CANCEL; - } - - elm_slider_value_set(m->eoSlider, value); - timestr = CCommonUI::TimeStrFromMilSeconds(value); - if (timestr) { - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, - timestr); - free(timestr); - } - - return ECORE_CALLBACK_RENEW; -} - Eina_Bool CPlaybackView::sm_CbLongpressTimer(void *dt) { @@ -228,7 +541,7 @@ Eina_Bool CPlaybackView::sm_CbWaitTimer(void *dt) void CPlaybackView::m_OnWaitTimer(void) { m->press_status = PRESS_LONG; - if (m->hMusicController->PlayState() == PLAY_STATUS_PLAY) { + if (m->pController->PlayState() == PLAY_STATUS_PLAY) { /* Handle long press */ m_PlaybackPause(); m->etLongPress = ecore_timer_add(LP_INTERVAL, sm_CbLongpressTimer, this); @@ -347,8 +660,8 @@ void CPlaybackView::m_CbCtxPopupBtnSelected(CCtxPopup* instance, const char* tex break; case BTN_CLEAR: - m->hMusicController->Stop(); - m->hMusicController->EmptyPlaylist(); + m->pController->Stop(); + m->pController->EmptyPlaylist(); eina_list_free(m->elInfo); m->elInfo = NULL; elm_genlist_clear(m->eoPlaylist); @@ -366,13 +679,6 @@ void CPlaybackView::m_RemoveTimer(int timer_code) ETimers timerCode = (ETimers)timer_code; switch (timerCode) { - case TIMER_SLIDER: - if (m->etSlider) { - ecore_timer_del(m->etSlider); - m->etSlider = NULL; - } - break; - case TIMER_WAIT: if (m->etWait) { ecore_timer_del(m->etWait); @@ -400,19 +706,13 @@ void CPlaybackView::m_RemoveTimer(int timer_code) void CPlaybackView::m_PlaybackPause(void) { - m->hMusicController->Pause(); - - if (m->etSlider) - ecore_timer_freeze(m->etSlider); + m->pController->Pause(); } void CPlaybackView::m_PlaybackResume(void) { - m->hMusicController->Resume(); - - if (m->etSlider) - ecore_timer_thaw(m->etSlider); + m->pController->Resume(); } @@ -470,7 +770,7 @@ void CPlaybackView::m_UpdateControlBtns(void) { int state; - state = m->hMusicController->PlayState(); + state = m->pController->PlayState(); if (state != PLAY_STATUS_STOP) { elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_FALSE); elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_FALSE); @@ -489,7 +789,7 @@ void CPlaybackView::m_UpdateControlBtns(void) elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); } - state = m->hMusicController->ShuffleState(); + state = m->pController->ShuffleState(); if (state == SHUFFLE_STATUS_OFF) { elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); } @@ -497,7 +797,7 @@ void CPlaybackView::m_UpdateControlBtns(void) elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); } - state = m->hMusicController->RepeatState(); + state = m->pController->RepeatState(); if (state == REPEAT_STATUS_NONE) { elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); } @@ -510,49 +810,6 @@ void CPlaybackView::m_UpdateControlBtns(void) } -void CPlaybackView::m_UpdateCurrentSongProgressbar(void) -{ - int duration; - char *timestr = NULL; - double step; - int state; - - if (!m->csinfo) - return; - - elm_slider_value_set(m->eoSlider, 0); - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); - - state = m->hMusicController->PlayState(); - - if (state == PLAY_STATUS_STOP) { - elm_object_disabled_set(m->eoSlider, EINA_TRUE); - m_RemoveTimer(TIMER_SLIDER); - return; - } - - elm_object_disabled_set(m->eoSlider, EINA_FALSE); - - duration = m->csinfo->Duration(); - { - m_RemoveTimer(TIMER_SLIDER); - m->etSlider = ecore_timer_add(S_INTERVAL, - sm_CbUpdateSlider, m); - - elm_slider_min_max_set(m->eoSlider, 0, duration); - timestr = CCommonUI::TimeStrFromMilSeconds(duration); - if (timestr) { - elm_object_part_text_set(m->eoBase, - MUSIC_PART_FULLTIME, timestr); - free(timestr); - } - - step = (double)SLIDER_STEP / (double)duration; - elm_slider_step_set(m->eoSlider, step); - } -} - - void CPlaybackView::m_UpdateCurrentSongThumbnail(void) { char *path = NULL; @@ -601,10 +858,11 @@ void CPlaybackView::m_UpdateEmptySongInfo(void) elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_TRUE); elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_TRUE); elm_object_disabled_set(m->eoBtnControl[BTN_PLAY], EINA_TRUE); - elm_object_disabled_set(m->eoSlider, EINA_TRUE); elm_object_part_text_set(m->eoBase, MUSIC_PART_FULLTIME, "00:00"); elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); - elm_slider_value_set(m->eoSlider, 0); + + m->pSliderWidget->Init(); + elm_object_part_text_set(m->eoBase, MUSIC_PART_SONG_TITLE, _(NO_PLAYLIST_MESSAGE)); elm_object_part_text_set(m->eoBase, MUSIC_PART_ARTIST_ALBUM, @@ -612,7 +870,7 @@ void CPlaybackView::m_UpdateEmptySongInfo(void) snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, MUSIC_IMAGE_DEFAULT_THUMB_450); elm_image_file_set(m->eoAlbumCover, buf, NULL); - m->hMusicController->SetPlayState(PLAY_STATUS_INITIAL); + m->pController->SetPlayState(PLAY_STATUS_INITIAL); } @@ -648,7 +906,7 @@ void CPlaybackView::m_UpdateCurrentSongItem(int index) if (pItemInfo) { m->cs_itinfo = pItemInfo; - if (m->hMusicController->PlayState() == PLAY_STATUS_STOP) { + if (m->pController->PlayState() == PLAY_STATUS_STOP) { elm_genlist_item_bring_in(pItemInfo->item, ELM_GENLIST_ITEM_SCROLLTO_IN); } @@ -662,26 +920,19 @@ void CPlaybackView::m_UpdateCurrentSongItem(int index) void CPlaybackView::m_UpdateEditmodeFocusSequence(void) { - elm_object_focus_next_object_set(m->eoPlaylist, - m->eoBtnEdit[BTN_CANCEL], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(m->eoBtnEdit[BTN_CANCEL], - m->eoPlaylist, ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->eoSlider, m->eoBtnEdit[BTN_CANCEL], - ELM_FOCUS_DOWN); + elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnEdit[BTN_CANCEL], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnEdit[BTN_CANCEL], m->eoPlaylist, ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoBtnEdit[BTN_CANCEL], ELM_FOCUS_DOWN); } void CPlaybackView::m_UpdatePlaymodeFocusSequence(void) { - elm_object_focus_next_object_set(m->eoSlider, m->eoPlaylist, - ELM_FOCUS_UP); - elm_object_focus_next_object_set(m->eoSlider, m->eoBtnControl[BTN_PLAY], - ELM_FOCUS_DOWN); - if (m->hMusicController->PlayState() == PLAY_STATUS_STOP) { - elm_object_focus_next_object_set(m->eoPlaylist, - m->eoBtnControl[BTN_PLAY], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], - m->eoPlaylist, ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoPlaylist, ELM_FOCUS_UP); + elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoBtnControl[BTN_PLAY], ELM_FOCUS_DOWN); + if (m->pController->PlayState() == PLAY_STATUS_STOP) { + elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnControl[BTN_PLAY], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], m->eoPlaylist, ELM_FOCUS_RIGHT); } else { elm_object_focus_next_object_set(m->eoPlaylist, @@ -704,12 +955,12 @@ void CPlaybackView::m_UpdateCurrentSongInfo(void) return; } - if (!m->hMusicController->GetCurrentSongIndex(&index)) { + if (!m->pController->GetCurrentSongIndex(&index)) { _ERR(" music get current song index failed "); return; } - if (!m->hMusicController->GetSonginfoFromIndex(index, &sinfo)) { + if (!m->pController->GetSonginfoFromIndex(index, &sinfo)) { _ERR(" music get songinfo failed "); return; } @@ -718,7 +969,7 @@ void CPlaybackView::m_UpdateCurrentSongInfo(void) m_UpdateCurrentSongItem(index); m_UpdateCurrentSongLabels(); m_UpdateCurrentSongThumbnail(); - m_UpdateCurrentSongProgressbar(); + //m_UpdateCurrentSongProgressbar(); m_UpdateControlBtns(); m_UpdatePlaymodeFocusSequence(); } @@ -737,12 +988,9 @@ void CPlaybackView::m_DisableEditButtons(bool flag) elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); } else { - elm_object_focus_next_object_set(m->eoBtnEdit[BTN_CANCEL], - m->eoBtnEdit[BTN_DESELECT], ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->eoBtnEdit[BTN_DELETE], - m->eoPlaylist, ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->eoPlaylist, - m->eoBtnEdit[BTN_DELETE], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnEdit[BTN_CANCEL], m->eoBtnEdit[BTN_DESELECT], ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->eoBtnEdit[BTN_DELETE], m->eoPlaylist, ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnEdit[BTN_DELETE], ELM_FOCUS_LEFT); } } @@ -800,14 +1048,12 @@ void CPlaybackView::m_DestroyErrorPopup(void) void CPlaybackView::m_CreateSettingsPopup(void) { - CPlaySettingCtxPopup *eoCtxPopup = new CPlaySettingCtxPopup; CCtxPopup::SCallback cb; cb.cookie = this; cb.onSelected = sm_CbCtxPopupBtnSelected; - eoCtxPopup->Create(m->eoWin, &cb); - - m->eoCtxPopup = eoCtxPopup; + m->eoCtxPopup = new CPlaySettingCtxPopup; + m->eoCtxPopup->Create(m->eoWin, &cb); } @@ -826,7 +1072,7 @@ void CPlaybackView::m_DestroySettingsPopup(void) void CPlaybackView::m_FromEditToPlaybackMode(void) { - if (m->hMusicController->PlayState() == PLAY_STATUS_STOP) { + if (m->pController->PlayState() == PLAY_STATUS_STOP) { elm_genlist_item_bring_in(m->cs_itinfo->item, ELM_GENLIST_ITEM_SCROLLTO_IN); } @@ -874,7 +1120,8 @@ void CPlaybackView::m_HandleOnRepeated(void) obj = m->eoPressedObj; - value = elm_slider_value_get(m->eoSlider); + + m->pController->GetPosition(&value); //value = elm_slider_value_get(m->eoSlider); duration = m->cs_itinfo->sinfo->Duration(); if (obj == m->eoBtnControl[BTN_REWIND]) { @@ -888,10 +1135,7 @@ void CPlaybackView::m_HandleOnRepeated(void) } else { if (value == duration) { - if (m->hMusicController->PlayNextSong()) - m_UpdateCurrentSongInfo(); - else - _ERR(" music play next song failed "); + m->pController->PlayNextSong(); m->press_status = PRESS_LONG_PAUSE; elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PAUSE, @@ -906,8 +1150,7 @@ void CPlaybackView::m_HandleOnRepeated(void) value = duration; } - m->hMusicController->SetPosition(value); - elm_slider_value_set(m->eoSlider, value); + m->pController->SetPosition(value); timestr = CCommonUI::TimeStrFromMilSeconds(value); if (timestr) { elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, @@ -925,25 +1168,21 @@ void CPlaybackView::m_DeleteSelectedItems(void) SItemInfo *pItemInfo = NULL; void *obj = NULL; int index; - bool flag = false; m_DisableEditButtons(true); EINA_LIST_FOREACH_SAFE(m->elInfo, l, l_next, obj) { pItemInfo = (SItemInfo *)obj; if (pItemInfo->check_status) { if (m->cs_itinfo == pItemInfo) { - flag = true; m_UnselectItem(m->cs_itinfo); - m_RemoveTimer(TIMER_SLIDER); m->cs_itinfo = NULL; - m->hMusicController->SetPlayState(PLAY_STATUS_STOP); - m->hMusicController->Stop(); + m->pController->SetPlayState(PLAY_STATUS_STOP); + m->pController->Stop(); } index = elm_genlist_item_index_get(pItemInfo->item); - m->hMusicController->RemoveSong(pItemInfo->sinfo, index); + m->pController->RemoveSong(pItemInfo->sinfo, index); - m->elInfo = eina_list_remove(m->elInfo, - pItemInfo); + m->elInfo = eina_list_remove(m->elInfo, pItemInfo); elm_object_item_del(pItemInfo->item); } } @@ -955,9 +1194,6 @@ void CPlaybackView::m_DeleteSelectedItems(void) return; } - if (flag) - m_UpdateCurrentSongInfo(); - elm_genlist_realized_items_update(m->eoPlaylist); elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); } @@ -967,7 +1203,7 @@ void CPlaybackView::m_KeyBackPress(void) { if (m->eoCtxPopup) { m_DestroySettingsPopup(); - elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_FALSE); + //elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_FALSE); elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_TRUE); return; } @@ -989,8 +1225,7 @@ void CPlaybackView::m_KeyBackPress(void) void CPlaybackView::m_KeyExitPress(void) { - m_RemoveTimer(TIMER_SLIDER); - m->hMusicController->Stop(); + m->pController->Stop(); elm_exit(); } @@ -1002,17 +1237,14 @@ void CPlaybackView::m_KeyPlayPress(void) if (elm_object_disabled_get(m->eoBtnControl[BTN_PLAY])) return; - state = m->hMusicController->PlayState(); + state = m->pController->PlayState(); if (state == PLAY_STATUS_PAUSE) { m_PlaybackResume(); elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); } else if (state != PLAY_STATUS_PLAY) { - if (m->hMusicController) - m->hMusicController->Start(); - - m_UpdateCurrentSongInfo(); + m->pController->Start(); } } @@ -1024,7 +1256,7 @@ void CPlaybackView::m_KeyPausePress(void) if (elm_object_disabled_get(m->eoBtnControl[BTN_PLAY])) return; - state = m->hMusicController->PlayState(); + state = m->pController->PlayState(); if (state == PLAY_STATUS_PLAY) { elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); @@ -1102,27 +1334,6 @@ void CPlaybackView::m_HandleKeyUnpress(char *keyname) } -void CPlaybackView::m_AddSlider(void) -{ - Evas_Object *eoSlider = NULL; - - eoSlider = elm_slider_add(m->eoBase); - if (!eoSlider) - return; - - elm_slider_indicator_show_set(eoSlider, EINA_FALSE); - elm_slider_indicator_show_on_focus_set(eoSlider, EINA_FALSE); - elm_object_style_set(eoSlider, MUSIC_STYLE_SLIDER); - elm_slider_horizontal_set(eoSlider, EINA_TRUE); - elm_object_part_content_set(m->eoBase, MUSIC_PART_PROGRESSBAR, eoSlider); - - Connect(eoSlider, EO_SLIDER, TYPE_CHANGED | TYPE_MOUSE_MOVE); - - evas_object_show(eoSlider); - m->eoSlider = eoSlider; -} - - void CPlaybackView::m_AddAlbumCover(void) { Evas_Object *eoAlbumCover = NULL; @@ -1146,7 +1357,10 @@ void CPlaybackView::m_AddAlbumCover(void) void CPlaybackView::m_AddCurrentSonginfo(void) { m_AddAlbumCover(); - m_AddSlider(); + + m->pSliderWidget = new CSliderWidget; + m->pSliderWidget->Create(m->eoBase); + //m_AddSlider(); } @@ -1170,18 +1384,15 @@ void CPlaybackView::m_AddEditPlaylistButtons(void) return; elm_box_horizontal_set(box, EINA_TRUE); - elm_box_padding_set(box, - MUSIC_EDIT_BTNS_PADDING * elm_config_scale_get(), 0); + elm_box_padding_set(box, MUSIC_EDIT_BTNS_PADDING * elm_config_scale_get(), 0); for (i = 0; i < TOTAL_EDIT_BTNS; i++) { m->eoBtnEdit[i] = elm_button_add(m->eoBase); if (!m->eoBtnEdit[i]) continue; - elm_object_style_set(m->eoBtnEdit[i], - MUSIC_STYLE_EDIT_BTN); - evas_object_size_hint_weight_set(m->eoBtnEdit[i], - EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_style_set(m->eoBtnEdit[i], MUSIC_STYLE_EDIT_BTN); + evas_object_size_hint_weight_set(m->eoBtnEdit[i], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_box_pack_end(box, m->eoBtnEdit[i]); elm_object_text_set(m->eoBtnEdit[i], _(btninfo[i].txt)); @@ -1190,8 +1401,7 @@ void CPlaybackView::m_AddEditPlaylistButtons(void) evas_object_show(m->eoBtnEdit[i]); } elm_object_part_content_set(m->eoBase, MUSIC_PART_EDITBTNS, box); - elm_object_signal_emit(m->eoBase, MUSIC_SIGNAL_PLAYBACK_MODE, - MUSIC_PLAYBACK_VIEW); + elm_object_signal_emit(m->eoBase, MUSIC_SIGNAL_PLAYBACK_MODE, MUSIC_PLAYBACK_VIEW); } @@ -1450,16 +1660,16 @@ void CPlaybackView::m_AddPlaylist(void) return; } - if (!m->hMusicController->GetTotalSongs(&ts)) { + if (!m->pController->GetTotalSongs(&ts)) { _ERR(" music get total songs failed "); return; } - if (!m->hMusicController->GetCurrentSongIndex(&index)) + if (!m->pController->GetCurrentSongIndex(&index)) _ERR(" music get current song index failed "); for (i = 0; i < ts; i++) { - if (!m->hMusicController->GetSonginfoFromIndex(i, &sinfo)) { + if (!m->pController->GetSonginfoFromIndex(i, &sinfo)) { _ERR(" music get songinfo failed "); continue; } @@ -1505,15 +1715,13 @@ void CPlaybackView::m_HandleRewindBtnClicked(Evas_Object *obj) elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - if (m->hMusicController->PlayState() == PLAY_STATUS_STOP) + if (m->pController->PlayState() == PLAY_STATUS_STOP) return; - if (!m->hMusicController->PlayPreviousSong()){ + if (!m->pController->PlayPreviousSong()){ _ERR(" music play previous song failed "); return; } - - m_UpdateCurrentSongInfo(); } @@ -1522,15 +1730,13 @@ void CPlaybackView::m_HandleForwardBtnClicked(Evas_Object *obj) elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - if (m->hMusicController->PlayState() == PLAY_STATUS_STOP) + if (m->pController->PlayState() == PLAY_STATUS_STOP) return; - if (!m->hMusicController->PlayNextSong()) { + if (!m->pController->PlayNextSong()) { _ERR(" music play next song failed "); return; } - - m_UpdateCurrentSongInfo(); } @@ -1550,7 +1756,7 @@ void CPlaybackView::m_HandleOnUnpressed(Evas_Object *obj) if (m->press_status == PRESS_SHORT) { /* Handle song change */ - if (m->hMusicController->PlayState() == PLAY_STATUS_PLAY) + if (m->pController->PlayState() == PLAY_STATUS_PLAY) m_PlaybackPause(); if (obj == m->eoBtnControl[BTN_FORWARD]) @@ -1558,11 +1764,11 @@ void CPlaybackView::m_HandleOnUnpressed(Evas_Object *obj) else m_HandleRewindBtnClicked(obj); - if (m->hMusicController->PlayState() != PLAY_STATUS_PLAY) + if (m->pController->PlayState() != PLAY_STATUS_PLAY) m_PlaybackResume(); } else if (m->press_status == PRESS_LONG) { - if (m->hMusicController->PlayState() != PLAY_STATUS_PLAY) + if (m->pController->PlayState() != PLAY_STATUS_PLAY) m_PlaybackResume(); } @@ -1592,8 +1798,7 @@ void CPlaybackView::m_HandleGenlistItemActivated(Evas_Object *obj, Elm_Object_It index = elm_genlist_item_index_get(genListItem); - m->hMusicController->PlayIndexSong(--index); - m_UpdateCurrentSongInfo(); + m->pController->PlayIndexSong(--index); } @@ -1605,10 +1810,12 @@ bool CPlaybackView::Create(void *data) _CHECK(m = new SPlaybackView) _CHECK(m->mgr = CViewMgr::GetInstance()) _CHECK(m->eoWin = m->mgr->Window()) - _CHECK(m->hMusicController = CMusicController::GetInstance()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) _CHECK(m->eoBase = CCommonUI::AddBase(m->eoWin, MUSIC_PLAYBACK_VIEW)) _CHECK(CBaseView::Create(data)) - _CHECK(m->hMusicController->AddListener(this)) + _CHECK(CTimer::Create()); + _CHECK(m->pController->AddListener(this)) _WHEN_SUCCESS{ m->press_status = PRESS_SHORT; @@ -1619,16 +1826,19 @@ bool CPlaybackView::Create(void *data) m_AddCurrentSonginfo(); m_AddPlaylist(); + m->pHandleVolume = new CHandleVolume; m->pHandleVolume->Create(m->eoBase); m_UpdatePlaymodeFocusSequence(); Connect(m->eoBase, EO_BASE, TYPE_KEY_DOWN | TYPE_KEY_UP); } - _CHECK_FAIL{ m->hMusicController->RemoveListener(this); } + _CHECK_FAIL{ m->pController->RemoveListener(this); } + _CHECK_FAIL{ CTimer::Destroy(); } _CHECK_FAIL{ CBaseView::Destroy(); } _CHECK_FAIL{ evas_object_del(m->eoBase); } - _CHECK_FAIL{ /* CMusicController::GetInstance())*/ } + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } _CHECK_FAIL{ /* mgr->Window() */ } _CHECK_FAIL{ /* CViewerMgr::GetInstance() */} _CHECK_FAIL{ delete m; m = NULL; } @@ -1643,16 +1853,18 @@ void CPlaybackView::Destroy(void) ASSERT(m); Disconnect(m->eoBase); - m->hMusicController->RemoveListener(this); + m->pController->RemoveListener(this); m_DestroyErrorPopup(); - m_RemoveTimer(TIMER_SLIDER); + m->pSliderWidget->Destroy(); + m_RemoveTimer(TIMER_WAIT); m_RemoveTimer(TIMER_LONGPRESS); m_DestroySettingsPopup(); m->pHandleVolume->Destroy(); + delete m->pHandleVolume; CBaseView::Destroy(); evas_object_del(m->eoBase); @@ -1687,14 +1899,14 @@ void CPlaybackView::t_OnClickedShuffle(Evas_Object *obj) { elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - switch (m->hMusicController->ShuffleState()) { + switch (m->pController->ShuffleState()) { case SHUFFLE_STATUS_OFF: - m->hMusicController->SetShuffleState(SHUFFLE_STATUS_ON); + m->pController->SetShuffleState(SHUFFLE_STATUS_ON); elm_object_signal_emit(obj, MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); break; default: - m->hMusicController->SetShuffleState(SHUFFLE_STATUS_OFF); + m->pController->SetShuffleState(SHUFFLE_STATUS_OFF); elm_object_signal_emit(obj, MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); break; } @@ -1705,19 +1917,19 @@ void CPlaybackView::t_OnClickedRepeat(Evas_Object *obj) { elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - switch (m->hMusicController->RepeatState()) { + switch (m->pController->RepeatState()) { case REPEAT_STATUS_NONE: - m->hMusicController->SetRepeatState(REPEAT_STATUS_ALL); + m->pController->SetRepeatState(REPEAT_STATUS_ALL); elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_ALL, MUSIC_PLAYBACK_VIEW); break; case REPEAT_STATUS_ALL: - m->hMusicController->SetRepeatState(REPEAT_STATUS_ONE); + m->pController->SetRepeatState(REPEAT_STATUS_ONE); elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_ONE, MUSIC_PLAYBACK_VIEW); break; default: - m->hMusicController->SetRepeatState(REPEAT_STATUS_NONE); + m->pController->SetRepeatState(REPEAT_STATUS_NONE); elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); break; } @@ -1728,7 +1940,7 @@ void CPlaybackView::t_OnClickedPlay(Evas_Object *obj) { elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - switch (m->hMusicController->PlayState()) { + switch (m->pController->PlayState()) { case PLAY_STATUS_PAUSE: m_PlaybackResume(); elm_object_signal_emit(obj, MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); @@ -1740,9 +1952,8 @@ void CPlaybackView::t_OnClickedPlay(Evas_Object *obj) break; default: - if (m->hMusicController) - m->hMusicController->Start(); - m_UpdateCurrentSongInfo(); + if (m->pController) + m->pController->Start(); break; } } @@ -1756,17 +1967,15 @@ void CPlaybackView::t_OnShow(void) m_UpdateCurrentSongInfo(); - state = m->hMusicController->PlayState(); + state = m->pController->PlayState(); if (state == PLAY_STATUS_INITIAL || state == PLAY_STATUS_STOP) { m_RemovePlaylist(); m_AddPlaylist(); - m->hMusicController->Start(); - m_UpdateCurrentSongInfo(); + m->pController->Start(); } if (m->cs_itinfo) { - elm_genlist_item_show(m->cs_itinfo->item, - ELM_GENLIST_ITEM_SCROLLTO_IN); + elm_genlist_item_show(m->cs_itinfo->item, ELM_GENLIST_ITEM_SCROLLTO_IN); elm_object_item_focus_set(m->cs_itinfo->item, EINA_TRUE); } @@ -1870,7 +2079,7 @@ void CPlaybackView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_ return; } - if (m->hMusicController->PlayState() == PLAY_STATUS_PLAY && + if (m->pController->PlayState() == PLAY_STATUS_PLAY && itinfo == m->cs_itinfo) ctxtinfo->status = PLAY_STATUS_PLAY; else @@ -1891,23 +2100,6 @@ void CPlaybackView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_ _ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed"); } - case EO_BOX: - if (!strcmp(ev->keyname, KEY_BACK) || - !strcmp(ev->keyname, KEY_BACK_REMOTE)) { - _ERR("eoCtxPopup BACK key pressed "); - m_DestroySettingsPopup(); - elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_TRUE); - - } - else if (!strcmp(ev->keyname, KEY_EXIT)) { - _ERR("eoCtxPopup EXIT key pressed "); - m_DestroySettingsPopup(); - m_RemoveTimer(TIMER_SLIDER); - m->hMusicController->Stop(); - elm_exit(); - } - break; - default: break; } @@ -1980,7 +2172,6 @@ void CPlaybackView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mo case EO_CANCEL: case EO_DESELECT: case EO_DELETE: - case EO_SLIDER: case EO_BTN_FORWARD: case EO_BTN_PLAY: case EO_BTN_REPEAT: @@ -2039,41 +2230,6 @@ void CPlaybackView::OnUnpressed(int id, Evas_Object *obj) } -void CPlaybackView::OnChanged(int id, Evas_Object *obj) -{ - switch (id) { - case EO_SLIDER: - { - char *timestr = NULL; - int value; - - if (m->hMusicController->PlayState() == PLAY_STATUS_PLAY) { - if (m->etSlider) - ecore_timer_freeze(m->etSlider); - } - - value = elm_slider_value_get(obj); - m->hMusicController->SetPosition(value); - timestr = CCommonUI::TimeStrFromMilSeconds(value); - if (timestr) { - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, - timestr); - free(timestr); - } - - if (m->hMusicController->PlayState() == PLAY_STATUS_PLAY) { - if (m->etSlider) - ecore_timer_thaw(m->etSlider); - } - } - break; - - default: - break; - } -} - - void CPlaybackView::OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item) { switch (id) { @@ -2151,3 +2307,15 @@ void CPlaybackView::OnUsbStatusChanged(SUsbStorageStatus status) void CPlaybackView::OnUpdateContent(void) { } + + +void CPlaybackView::OnStartPlayback(void) +{ + m_UpdateCurrentSongInfo(); +} + + +void CPlaybackView::OnStopPlayback(void) +{ + m_UpdateCurrentSongInfo(); +} diff --git a/src/views/playlist-layout.cpp b/src/views/playlist-layout.cpp index 4327d63..7187c34 100644 --- a/src/views/playlist-layout.cpp +++ b/src/views/playlist-layout.cpp @@ -65,16 +65,21 @@ void CPlaylistLayout::m_OnEntryRename(const char *name) t.epopup->Destroy(); - if (CMusicController::GetInstance()->MediaExistPlaylist(str)) { + CMusicController mc; + mc.Create(); + + if (mc.MediaExistPlaylist(str)) { CCommonUI::CreateMsgBox(Layout(), MUSIC_TEXT_INUSE_MSG); elm_object_item_focus_set(t.focused_item, EINA_TRUE); free(str); + mc.Destroy(); return; } - if (!CMusicController::GetInstance()->MediaRenamePlaylist(id, str)) + if (!mc.MediaRenamePlaylist(id, str)) _ERR(" Rename playlist failed "); + mc.Destroy(); t.depth = E_DEPTH_CATEGORY; t_UpdateLayoutWithFocus(); } @@ -110,8 +115,11 @@ void CPlaylistLayout::m_PlaylistCtxtAction(EActionType type) case ACTION_TYPE_DELETE: { id = catinfo->CategoryId(); - if (!CMusicController::GetInstance()->MediaDeletePlaylist(id)) + CMusicController mc; + mc.Create(); + if (!mc.MediaDeletePlaylist(id)) _ERR(" Delete playlist failed "); + mc.Destroy(); t_UpdateLayout(false); elm_object_focus_set(t.grid, EINA_TRUE); @@ -180,7 +188,11 @@ void CPlaylistLayout::t_HandleItemSelect(SCatItemInfo *itinfo) bool CPlaylistLayout::t_GetMediaList(Eina_List **list) { - return CMusicController::GetInstance()->MediaGetList(LIST_TYPE_PLAYLISTS, NULL, list); + CMusicController mc; + mc.Create(); + bool ret = mc.MediaGetList(LIST_TYPE_PLAYLISTS, NULL, list); + mc.Destroy(); + return ret; } diff --git a/src/views/song-layout.cpp b/src/views/song-layout.cpp index 8e4f1dd..e60acea 100644 --- a/src/views/song-layout.cpp +++ b/src/views/song-layout.cpp @@ -56,7 +56,7 @@ struct SSongLayout { Eina_List *slist; Eina_List *it_infolist; Elm_Genlist_Item_Class *item_class; - CMusicController *mhandle; + CMusicController *pController; CLayoutMgr* mgr; CViewMgr* vmgr; SContentInfo *ctxtinfo; @@ -204,7 +204,7 @@ void CSongLayout::m_OnCtxtUpdate(EActionType type, int lid) break; case ACTION_TYPE_ADDTO: - if (m->mhandle->MediaAddsongsPlaylist(lid, list)) + if (m->pController->MediaAddsongsPlaylist(lid, list)) CCommonUI::CreateMsgBox(m->base, MUSIC_TEXT_ADDTO_MSG); else _ERR(" Adding songs to playlist failed "); @@ -216,12 +216,12 @@ void CSongLayout::m_OnCtxtUpdate(EActionType type, int lid) break; } - m->mhandle->UpdatePlaylist(list, mode); + m->pController->UpdatePlaylist(list, mode); eina_list_free(list); if (type == ACTION_TYPE_PLAY) { - m->mhandle->Stop(); - m->mhandle->SetCurrentSong(((CSongInfo *)m->ctxtinfo->context)->Id()); + m->pController->Stop(); + m->pController->SetCurrentSong(((CSongInfo *)m->ctxtinfo->context)->Id()); } CCommonUI::UpdatePlaybackView(mode, Layout(), m->focused_item); @@ -266,9 +266,9 @@ void CSongLayout::m_OnItemSelect(Evas_Object *obj, void *event_info) mediaId = itinfo->sinfo->Id(); - m->mhandle->Stop(); - m->mhandle->UpdatePlaylist(m->slist, ADD_TYPE_FRESH); - m->mhandle->SetCurrentSong(mediaId); + m->pController->Stop(); + m->pController->UpdatePlaylist(m->slist, ADD_TYPE_FRESH); + m->pController->SetCurrentSong(mediaId); m_GotoPlayback(); @@ -381,7 +381,7 @@ void CSongLayout::m_UpdateSongList(bool sort_flag) m_EmptySongList(sort_flag); if (!sort_flag) { - r = m->mhandle->MediaGetList(LIST_TYPE_SONG, NULL, &(m->slist)); + r = m->pController->MediaGetList(LIST_TYPE_SONG, NULL, &(m->slist)); if (r == false || eina_list_count(m->slist) == 0) { _ERR(" Fetching song list from media failed "); @@ -461,7 +461,7 @@ void CSongLayout::m_GotoPlayback(void) void CSongLayout::m_GotoPlaybackUri(void) { Eina_List *list = NULL; - CSongInfo *sinfo = m->mhandle->MediaSongByUri(m->uri); + CSongInfo *sinfo = m->pController->MediaSongByUri(m->uri); if (!sinfo) { _ERR(" Fetching song list from uri failed "); return; @@ -471,7 +471,7 @@ void CSongLayout::m_GotoPlaybackUri(void) if (!list) return; - m->mhandle->UpdatePlaylist(list, ADD_TYPE_FRESH); + m->pController->UpdatePlaylist(list, ADD_TYPE_FRESH); eina_list_free(list); @@ -519,18 +519,15 @@ bool CSongLayout::Create(CLayoutMgr *mgr, const char *uri) ASSERT(mgr); _CREATE_BEGIN{ - Evas_Object *base = NULL; - Evas_Object *win = NULL; Evas_Object *layout = NULL; - CMusicController *mhandle = NULL; - CViewMgr *vmgr = NULL; _CHECK(m = new SSongLayout) - _CHECK(vmgr = CViewMgr::GetInstance()) - _CHECK(base = mgr->Base()) - _CHECK(win = vmgr->Window()) - _CHECK(mhandle = CMusicController::GetInstance()) - _CHECK(layout = CCommonUI::AddBase(base, MUSIC_SONG_LAYOUT)) + _CHECK(m->vmgr = CViewMgr::GetInstance()) + _CHECK(m->base = mgr->Base()) + _CHECK(m->win = m->vmgr->Window()) + _CHECK(m->pController = new CMusicController) + _CHECK(m->pController->Create()) + _CHECK(layout = CCommonUI::AddBase(m->base, MUSIC_SONG_LAYOUT)) _CHECK(CExtBaseLayout::Create(layout)) _WHEN_SUCCESS{ @@ -546,10 +543,6 @@ bool CSongLayout::Create(CLayoutMgr *mgr, const char *uri) else m->uri = NULL; - m->win = win; - m->base = base; - m->vmgr = vmgr; - m->mhandle = mhandle; m->mgr = mgr; m_CreateSongList(); @@ -565,16 +558,18 @@ bool CSongLayout::Create(CLayoutMgr *mgr, const char *uri) _CHECK_FAIL{ CExtBaseLayout::Destroy(); } _CHECK_FAIL{ evas_object_del(layout); } - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} - _CHECK_FAIL{} + _CHECK_FAIL{ m->pController->Destroy(); } + _CHECK_FAIL{ delete m->pController; } + _CHECK_FAIL{ /* Window */ } + _CHECK_FAIL{ /* Base */ } + _CHECK_FAIL{ /* GetInstance() */ } _CHECK_FAIL{ delete m; m = NULL; } } _CREATE_END_AND_CATCH{ return false; } return true; } + void CSongLayout::Destroy(void) { ASSERT(m); @@ -587,6 +582,9 @@ void CSongLayout::Destroy(void) free(m->ctxtinfo); delete[] m->uri; + + m->pController->Destroy(); + delete m->pController; delete m; m = NULL; } -- 2.7.4 From 52bbc3f5f5e2ae96bf188512efa94fbed2d57dd8 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Tue, 14 Apr 2015 12:05:34 +0900 Subject: [PATCH 11/16] Fix runtime error due to the refactoring Change-Id: Ic4e6ad6da18366711da60464d9ea93b9ba435365 Signed-off-by: Kim Tae Soo --- include/playback-view.h | 2 - src/views/album-layout.cpp | 5 +- src/views/base-view.cpp | 119 +++++++++++++++++-------------------------- src/views/playback-view.cpp | 120 +++++++++++++++++++++++++++++++------------- 4 files changed, 133 insertions(+), 113 deletions(-) diff --git a/include/playback-view.h b/include/playback-view.h index 4d52667..914c6d2 100644 --- a/include/playback-view.h +++ b/include/playback-view.h @@ -109,8 +109,6 @@ private: struct SPlaybackView* m; private: - //static Eina_Bool sm_CbUpdateSlider(void *dt); - static Eina_Bool sm_CbLongpressTimer(void *dt); void m_OnLongpressTimer(void); diff --git a/src/views/album-layout.cpp b/src/views/album-layout.cpp index e12f4b5..3641a11 100644 --- a/src/views/album-layout.cpp +++ b/src/views/album-layout.cpp @@ -453,7 +453,6 @@ bool CAlbumLayout::Create(CLayoutMgr *mgr, const char *albumId) _CREATE_BEGIN{ Evas_Object *layout = NULL; - CAlbumSongsLayout *layoutAlbumSongs = NULL; SParcel parcel; _CHECK(m = new SAlbumLayout) @@ -466,7 +465,7 @@ bool CAlbumLayout::Create(CLayoutMgr *mgr, const char *albumId) _CHECK(CExtBaseLayout::Create(layout)) _CHECK(m->layoutAlbumSongs = new CAlbumSongsLayout(MUSIC_ALBUM_SONGS_LAYOUT)) _CHECK(m->layoutAlbumSongs->Create(mgr)) - _CHECK(mgr->AddLayout(layoutAlbumSongs)) + _CHECK(mgr->AddLayout(m->layoutAlbumSongs)) _WHEN_SUCCESS{ if (albumId) { @@ -490,7 +489,7 @@ bool CAlbumLayout::Create(CLayoutMgr *mgr, const char *albumId) m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel); } - _CHECK_FAIL{ mgr->RemoveLayout(layoutAlbumSongs); } + _CHECK_FAIL{ mgr->RemoveLayout(m->layoutAlbumSongs); } _CHECK_FAIL{ m->layoutAlbumSongs->Destroy(); } _CHECK_FAIL{ delete m->layoutAlbumSongs; } _CHECK_FAIL{ CExtBaseLayout::Destroy(); } diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index 9675994..b93bf68 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -733,70 +733,45 @@ bool CMusicBaseView::Create(void *data) ASSERT(!m); _CREATE_BEGIN{ - Evas_Object *win = NULL; - Evas_Object *base = NULL; - CMusicController *pController = 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(m->win = CViewMgr::GetInstance()->Window()) _CHECK(m->pController = new CMusicController) _CHECK(m->pController->Create()) - _CHECK(base = CCommonUI::AddBase(win, MUSIC_BASE_VIEW)) - _CHECK(lmgr = new CLayoutMgr) - _CHECK(lmgr->Create(base, NULL)) + _CHECK(m->base = CCommonUI::AddBase(m->win, MUSIC_BASE_VIEW)) + _CHECK(m->lmgr = new CLayoutMgr) + _CHECK(m->lmgr->Create(m->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(pController->AddListener(this)) + _CHECK(m->layoutSong = new CSongLayout(MUSIC_SONG_LAYOUT)) + _CHECK(m->layoutSong->Create(m->lmgr, m_Argument(data))) + _CHECK(m->lmgr->AddLayout(m->layoutSong)) + _CHECK(m->layoutAlbum = new CAlbumLayout(MUSIC_ALBUM_LAYOUT)) + _CHECK(m->layoutAlbum->Create(m->lmgr, m_Argument(data))) + _CHECK(m->lmgr->AddLayout(m->layoutAlbum)) + _CHECK(m->layoutArtist = new CArtistLayout(MUSIC_CATEGORY_ARTIST_LAYOUT)) + _CHECK(m->layoutArtist->Create(m->lmgr)) + _CHECK(m->lmgr->AddLayout(m->layoutArtist)) + _CHECK(m->layoutGenre = new CGenreLayout(MUSIC_CATEGORY_GENRE_LAYOUT)) + _CHECK(m->layoutGenre->Create(m->lmgr)) + _CHECK(m->lmgr->AddLayout(m->layoutGenre)) + _CHECK(m->layoutPlaylists = new CPlaylistLayout(MUSIC_CATEGORY_PLAYLISTS_LAYOUT)) + _CHECK(m->layoutPlaylists->Create(m->lmgr)) + _CHECK(m->lmgr->AddLayout(m->layoutPlaylists)) + _CHECK(m->layoutFolder = new CFolderLayout(MUSIC_FOLDER_LAYOUT)) + _CHECK(m->layoutFolder->Create(m->lmgr)) + _CHECK(m->lmgr->AddLayout(m->layoutFolder)) + _CHECK(m->pHandleVolume = new CHandleVolume) + _CHECK(m->pHandleVolume->Create(m->base)) + _CHECK(m->pController->AddListener(this)) _WHEN_SUCCESS{ - m->base = base; - m->win = win; - m->pController = pController; - 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); @@ -808,29 +783,29 @@ bool CMusicBaseView::Create(void *data) } _CHECK_FAIL{ m->pController->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{ m->pHandleVolume->Destroy(); } + _CHECK_FAIL{ delete m->pHandleVolume; } + _CHECK_FAIL{ m->lmgr->RemoveLayout(m->layoutFolder); } + _CHECK_FAIL{ m->layoutFolder->Destroy(); } + _CHECK_FAIL{ delete m->layoutFolder; } + _CHECK_FAIL{ m->lmgr->RemoveLayout(m->layoutPlaylists); } + _CHECK_FAIL{ m->layoutPlaylists->Destroy(); } + _CHECK_FAIL{ delete m->layoutPlaylists; } + _CHECK_FAIL{ m->lmgr->RemoveLayout(m->layoutGenre); } + _CHECK_FAIL{ m->layoutGenre->Destroy(); } + _CHECK_FAIL{ delete m->layoutGenre; } + _CHECK_FAIL{ m->lmgr->RemoveLayout(m->layoutArtist); } + _CHECK_FAIL{ m->layoutArtist->Destroy(); } + _CHECK_FAIL{ delete m->layoutArtist; } + _CHECK_FAIL{ m->lmgr->RemoveLayout(m->layoutAlbum); } + _CHECK_FAIL{ m->layoutAlbum->Destroy(); } + _CHECK_FAIL{ delete m->layoutAlbum; } + _CHECK_FAIL{ m->lmgr->RemoveLayout(m->layoutSong); } + _CHECK_FAIL{ m->layoutSong->Destroy(); } + _CHECK_FAIL{ delete m->layoutSong; } _CHECK_FAIL{ CBaseView::Destroy(); } - _CHECK_FAIL{ lmgr->Destroy(); } - _CHECK_FAIL{ delete lmgr; } + _CHECK_FAIL{ m->lmgr->Destroy(); } + _CHECK_FAIL{ delete m->lmgr; } _CHECK_FAIL{ evas_object_del(m->base); } _CHECK_FAIL{ m->pController->Destroy(); } _CHECK_FAIL{ delete m->pController; } diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index a989cbf..444ba46 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -174,6 +174,7 @@ bool CSliderWidget::Create(Evas_Object *eoBase) _CREATE_BEGIN{ _CHECK(m = new SSliderWidget) + _COMMAND{ m->eoBase = eoBase; } _CHECK(m->controller.Create()) _CHECK(m->controller.AddListener(this)) _CHECK(m_AddSlider()) @@ -453,7 +454,6 @@ struct SPlaybackView { Evas_Object *eoBtnEdit[TOTAL_EDIT_BTNS]; Evas_Object *eoAlbumCover; - //Evas_Object *eoSlider; CSliderWidget *pSliderWidget; Evas_Object *eoPressedObj; @@ -504,7 +504,6 @@ enum EEditBtns { }; enum ETimers { - //TIMER_SLIDER, TIMER_WAIT, TIMER_LONGPRESS, TIMER_VOLUME @@ -771,41 +770,74 @@ void CPlaybackView::m_UpdateControlBtns(void) int state; state = m->pController->PlayState(); - if (state != PLAY_STATUS_STOP) { - elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_FALSE); - elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_FALSE); - } - else { + switch (state) { + case PLAY_STATUS_INITIAL: + // Initial State, Do nothing + break; + + case PLAY_STATUS_STOP: if (!m->eoErrPopup) - elm_object_focus_set(m->eoBtnControl[BTN_PLAY], EINA_TRUE); + elm_object_focus_set(m->eoBtnControl[BTN_PLAY], EINA_TRUE); elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_TRUE); - elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_TRUE); - } + elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_TRUE); + break; - if (state == PLAY_STATUS_PLAY) { - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); - } - else { - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); + case PLAY_STATUS_PLAY: + elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_FALSE); + elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_FALSE); + elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], + MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); + break; + + case PLAY_STATUS_PAUSE: + elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_FALSE); + elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_FALSE); + elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], + MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); + break; + + default: + ASSERT(!"Invalid State"); + break; } state = m->pController->ShuffleState(); - if (state == SHUFFLE_STATUS_OFF) { - elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); - } - else { - elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); + switch (state) { + case SHUFFLE_STATUS_OFF: + elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], + MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); + break; + + case SHUFFLE_STATUS_ON: + elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], + MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); + break; + + default: + ASSERT(!"Invalid State"); + break; } state = m->pController->RepeatState(); - if (state == REPEAT_STATUS_NONE) { - elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); - } - else if (state == REPEAT_STATUS_ALL) { - elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], MUSIC_SIGNAL_REPEAT_ALL, MUSIC_PLAYBACK_VIEW); - } - else { - elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], MUSIC_SIGNAL_REPEAT_ONE, MUSIC_PLAYBACK_VIEW); + switch (state) { + case REPEAT_STATUS_NONE: + elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], + MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); + break; + + case REPEAT_STATUS_ALL: + elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], + MUSIC_SIGNAL_REPEAT_ALL, MUSIC_PLAYBACK_VIEW); + break; + + case REPEAT_STATUS_ONE: + elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], + MUSIC_SIGNAL_REPEAT_ONE, MUSIC_PLAYBACK_VIEW); + break; + + default: + ASSERT(!"Invalid State"); + break; } } @@ -930,17 +962,32 @@ void CPlaybackView::m_UpdatePlaymodeFocusSequence(void) { elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoPlaylist, ELM_FOCUS_UP); elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoBtnControl[BTN_PLAY], ELM_FOCUS_DOWN); - if (m->pController->PlayState() == PLAY_STATUS_STOP) { + switch (m->pController->PlayState()) { + case PLAY_STATUS_INITIAL: + // Do nothing + break; + + case PLAY_STATUS_STOP: elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnControl[BTN_PLAY], ELM_FOCUS_LEFT); elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], m->eoPlaylist, ELM_FOCUS_RIGHT); - } - else { + elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], m->eoBtnControl[BTN_REPEAT], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnControl[BTN_REPEAT], m->eoBtnControl[BTN_PLAY], ELM_FOCUS_RIGHT); + elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); + break; + + case PLAY_STATUS_PLAY: + case PLAY_STATUS_PAUSE: elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnControl[BTN_FORWARD], ELM_FOCUS_LEFT); elm_object_focus_next_object_set(m->eoBtnControl[BTN_FORWARD], m->eoPlaylist, ELM_FOCUS_RIGHT); elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], m->eoBtnControl[BTN_FORWARD], ELM_FOCUS_RIGHT); + break; + + default: + ASSERT(!"Invalid State"); + break; } } @@ -969,7 +1016,6 @@ void CPlaybackView::m_UpdateCurrentSongInfo(void) m_UpdateCurrentSongItem(index); m_UpdateCurrentSongLabels(); m_UpdateCurrentSongThumbnail(); - //m_UpdateCurrentSongProgressbar(); m_UpdateControlBtns(); m_UpdatePlaymodeFocusSequence(); } @@ -1121,7 +1167,7 @@ void CPlaybackView::m_HandleOnRepeated(void) obj = m->eoPressedObj; - m->pController->GetPosition(&value); //value = elm_slider_value_get(m->eoSlider); + m->pController->GetPosition(&value); duration = m->cs_itinfo->sinfo->Duration(); if (obj == m->eoBtnControl[BTN_REWIND]) { @@ -1167,6 +1213,7 @@ void CPlaybackView::m_DeleteSelectedItems(void) Eina_List *l = NULL, *l_next = NULL; SItemInfo *pItemInfo = NULL; void *obj = NULL; + bool updateFlag = false; int index; m_DisableEditButtons(true); @@ -1174,6 +1221,7 @@ void CPlaybackView::m_DeleteSelectedItems(void) pItemInfo = (SItemInfo *)obj; if (pItemInfo->check_status) { if (m->cs_itinfo == pItemInfo) { + updateFlag = true; m_UnselectItem(m->cs_itinfo); m->cs_itinfo = NULL; m->pController->SetPlayState(PLAY_STATUS_STOP); @@ -1194,6 +1242,9 @@ void CPlaybackView::m_DeleteSelectedItems(void) return; } + if (updateFlag) + m_UpdateCurrentSongInfo(); + elm_genlist_realized_items_update(m->eoPlaylist); elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); } @@ -1203,7 +1254,6 @@ void CPlaybackView::m_KeyBackPress(void) { if (m->eoCtxPopup) { m_DestroySettingsPopup(); - //elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_FALSE); elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_TRUE); return; } @@ -1360,7 +1410,6 @@ void CPlaybackView::m_AddCurrentSonginfo(void) m->pSliderWidget = new CSliderWidget; m->pSliderWidget->Create(m->eoBase); - //m_AddSlider(); } @@ -2317,5 +2366,4 @@ void CPlaybackView::OnStartPlayback(void) void CPlaybackView::OnStopPlayback(void) { - m_UpdateCurrentSongInfo(); } -- 2.7.4 From efe37d84885bf82ace25ed952e49be304a3f7b25 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Tue, 14 Apr 2015 22:38:45 +0900 Subject: [PATCH 12/16] Clean the source code Change-Id: I4972e6b7c9ce8d974dc869f37ea14fac64731d2d Signed-off-by: Kim Tae Soo --- res/edc/views/message-layout.edc | 1 + src/playback/MusicControllerImpl.cpp | 8 +- src/views/PlayListCtxPopup.cpp | 3 - src/views/category-layout.cpp | 16 +--- src/views/playback-view.cpp | 177 ++++++++++++++++------------------- 5 files changed, 88 insertions(+), 117 deletions(-) diff --git a/res/edc/views/message-layout.edc b/res/edc/views/message-layout.edc index b6e4603..1fb91ad 100644 --- a/res/edc/views/message-layout.edc +++ b/res/edc/views/message-layout.edc @@ -13,6 +13,7 @@ group { rel2.relative: 0.0 0.0; min: 960 1080-127; align: 0 0; + fixed: 1 1; visible: 0; } } diff --git a/src/playback/MusicControllerImpl.cpp b/src/playback/MusicControllerImpl.cpp index b09863d..e1f4e51 100644 --- a/src/playback/MusicControllerImpl.cpp +++ b/src/playback/MusicControllerImpl.cpp @@ -242,14 +242,12 @@ bool CMusicControllerImpl::Start(void) _CHECK(pPlayback->SetUri(songpath)) _CHECK(pPlayback->Prepare()) _CHECK(pPlayback->Start()) - _COMMAND{ m->statePlay = PLAY_STATUS_PLAY; } - _CHECK(m->pPlaylist->GetSonginfoFromIndex(index, &sinfo)) - _CHECK(media_id = sinfo->Id()) - _CHECK(m->pMediadata->SetPlayedTime(media_id)) + _CHECK(media_id = sinfo->Id()) + _CHECK(m->pMediadata->SetPlayedTime(media_id)) - _WHEN_SUCCESS{ + _WHEN_SUCCESS{ bus_send_signal(); } diff --git a/src/views/PlayListCtxPopup.cpp b/src/views/PlayListCtxPopup.cpp index 07f9b5a..e292200 100644 --- a/src/views/PlayListCtxPopup.cpp +++ b/src/views/PlayListCtxPopup.cpp @@ -120,9 +120,6 @@ void CPlayListCtxPopup::m_DeleteBtnString(void) bool CPlayListCtxPopup::Create(Evas_Object* base, const SCallback* callback, Eina_List *playList) { - //Eina_List *l = NULL; - //SCtxtPlaylistItem *item = NULL; - _CREATE_BEGIN{ _CHECK(m = new SPlayListCtxPopup) _CHECK(m->listSize = eina_list_count(playList)) diff --git a/src/views/category-layout.cpp b/src/views/category-layout.cpp index b70ee58..1c7f311 100644 --- a/src/views/category-layout.cpp +++ b/src/views/category-layout.cpp @@ -181,34 +181,26 @@ void CCategoryLayout::sm_CbEntrynameSet(void *dt, const char *name) void CCategoryLayout::m_OnEntrynameSet(const char *name) { Eina_List *idlist = NULL; - char *str = NULL; - - if (!name) - return; + ASSERT(name); idlist = m_GetSelectedList(m->layoutCatSongs->CategorySongItemInfoList(), (int)ID_TYPE_MEDIA); - str = strdup(name); t.epopup->Destroy(); - if (!strcmp(str, MUSIC_STR_EMPTY)) { + if (!strcmp(name, MUSIC_STR_EMPTY)) { CCommonUI::CreateMsgBox(Layout(), MUSIC_TEXT_EMPTY_NAME); - free(str); return; } - if (m->pController->MediaExistPlaylist(str)) { + if (m->pController->MediaExistPlaylist(name)) { CCommonUI::CreateMsgBox(Layout(), MUSIC_TEXT_INUSE_MSG); - free(str); return; } - if (!m->pController->MediaInsertPlaylist(str, idlist)) { + if (!m->pController->MediaInsertPlaylist(name, idlist)) { _ERR("Playlist creation failed "); - free(str); return; } - free(str); t.depth = E_DEPTH_CATEGORY; t_UpdateLayoutWithFocus(); diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index 444ba46..5946798 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -39,21 +39,17 @@ #include "Info.h" -#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0])) -#define TITLE_FONT_SIZE 50 -#define ARTIST_FONT_SIZE 30 -#define TOTAL_CONTROL_BTNS 6 -#define TOTAL_EDIT_BTNS 3 -#define S_INTERVAL 1 /* seconds */ -#define LP_INTERVAL 0.5 /* seconds */ -#define WAIT_INTERVAL 0.5 /* seconds */ -#define SLIDER_STEP 5000 /* milli seconds */ -#define LP_CHANGE 10000 /* milli seconds */ -#define S_INCREMENT 1000 /* milli seconds */ - - -//////////////////////////////////////////////////////////////////////////////// -// +#define TOTAL_CONTROL_BTNS 6 +#define TOTAL_EDIT_BTNS 3 +#define S_INTERVAL 1 /* seconds */ +#define LP_INTERVAL 0.5 /* seconds */ +#define WAIT_INTERVAL 0.5 /* seconds */ +#define SLIDER_STEP 5000 /* milli seconds */ +#define LP_CHANGE 10000 /* milli seconds */ +#define S_INCREMENT 1000 /* milli seconds */ + + +// SSliderWidget struct SSliderWidget { Evas_Object *eoSlider; Evas_Object *eoBase; @@ -312,10 +308,9 @@ void CSliderWidget::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mo if (!elm_object_focus_get(obj)) elm_object_focus_set(obj, EINA_TRUE); } -// -//////////////////////////////////////////////////////////////////////////////// +// STimer struct STimer { int count; int s, e; @@ -394,15 +389,10 @@ bool CTimer::SetTimer(int id, int ms) void CTimer::KillTimer(int id) { ASSERT(m); - - } - - - - +// CPlaybackView enum EEvasObject { EO_BASE, @@ -423,14 +413,31 @@ enum EEvasObject { }; -struct SItemInfo { - Elm_Object_Item *item; - CSongInfo *sinfo; - bool edit_mode; - bool check_status; - bool select_status; +enum EControlBtns { + BTN_SETTINGS, + BTN_SHUFFLE, + BTN_REPEAT, + BTN_REWIND, + BTN_PLAY, + BTN_FORWARD }; +enum ESettingBtns { + BTN_EDIT, + BTN_CLEAR +}; + +enum EEditBtns { + BTN_CANCEL, + BTN_DESELECT, + BTN_DELETE +}; + +enum ETimers { + TIMER_WAIT, + TIMER_LONGPRESS, + TIMER_VOLUME +}; enum EPressTypes { PRESS_SHORT, @@ -439,6 +446,13 @@ enum EPressTypes { PRESS_LONG_PAUSE, }; +struct SItemInfo { + Elm_Object_Item *item; + CSongInfo *sinfo; + bool edit_mode; + bool check_status; + bool select_status; +}; struct SPlaybackView { Evas_Object *eoWin; @@ -472,8 +486,6 @@ struct SPlaybackView { SPlaybackView() { memset(this, 0, sizeof(SPlaybackView)); } - ~SPlaybackView() { - } }; struct SBtnInfo { @@ -483,34 +495,6 @@ struct SBtnInfo { }; -enum EControlBtns { - BTN_SETTINGS, - BTN_SHUFFLE, - BTN_REPEAT, - BTN_REWIND, - BTN_PLAY, - BTN_FORWARD -}; - -enum ESettingBtns { - BTN_EDIT, - BTN_CLEAR -}; - -enum EEditBtns { - BTN_CANCEL, - BTN_DESELECT, - BTN_DELETE -}; - -enum ETimers { - TIMER_WAIT, - TIMER_LONGPRESS, - TIMER_VOLUME -}; - - - Eina_Bool CPlaybackView::sm_CbLongpressTimer(void *dt) { CPlaybackView *root = (CPlaybackView *)dt; @@ -2101,52 +2085,51 @@ void CPlaybackView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_ Elm_Object_Item *it = NULL; SContentInfo *ctxtinfo = NULL; SItemInfo *itinfo = NULL; + SParcel parcel; - if (strcmp(ev->keyname, KEY_MENU) && - strcmp(ev->keyname, KEY_MENU_REMOTE)) - return; - - it = elm_object_focused_item_get(obj); - if (!it) { - _ERR(" unable to get focused item "); - return; - } - m->focused_item = it; + if (!strcmp(ev->keyname, KEY_MENU) || + !strcmp(ev->keyname, KEY_MENU_REMOTE)) { + it = elm_object_focused_item_get(obj); + if (!it) { + _ERR(" unable to get focused item "); + return; + } + m->focused_item = it; - if (m->ctxtinfo) { - free(m->ctxtinfo); - m->ctxtinfo = NULL; - } + if (m->ctxtinfo) { + free(m->ctxtinfo); + m->ctxtinfo = NULL; + } - ctxtinfo = (SContentInfo *)calloc(1, sizeof(*ctxtinfo)); - if (!ctxtinfo) - return; + ctxtinfo = (SContentInfo *)calloc(1, sizeof(*ctxtinfo)); + if (!ctxtinfo) + return; - itinfo = m_FindItemInfoFromItem(m->elInfo, it); - if (!itinfo) { - free(ctxtinfo); - return; - } + itinfo = m_FindItemInfoFromItem(m->elInfo, it); + if (!itinfo) { + free(ctxtinfo); + return; + } - if (m->pController->PlayState() == PLAY_STATUS_PLAY && - itinfo == m->cs_itinfo) - ctxtinfo->status = PLAY_STATUS_PLAY; - else - ctxtinfo->status = PLAY_STATUS_PAUSE; + if (m->pController->PlayState() == PLAY_STATUS_PLAY && + itinfo == m->cs_itinfo) + ctxtinfo->status = PLAY_STATUS_PLAY; + else + ctxtinfo->status = PLAY_STATUS_PAUSE; - ctxtinfo->cbdata = this; - ctxtinfo->update = sm_CbCtxtUpdate; - ctxtinfo->close = sm_CbCtxtClose; - ctxtinfo->type = CONTEXT_TYPE_PLAYSONG; - ctxtinfo->context = itinfo->sinfo; + ctxtinfo->cbdata = this; + ctxtinfo->update = sm_CbCtxtUpdate; + ctxtinfo->close = sm_CbCtxtClose; + ctxtinfo->type = CONTEXT_TYPE_PLAYSONG; + ctxtinfo->context = itinfo->sinfo; - m->ctxtinfo = ctxtinfo; + m->ctxtinfo = ctxtinfo; - SParcel parcel; - memset(&parcel, 0, sizeof(SParcel)); - parcel.ctxtInfo = ctxtinfo; - if (!m->mgr->PushView(MUSIC_CONTEXT_VIEW, &parcel)) - _ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed"); + memset(&parcel, 0, sizeof(SParcel)); + parcel.ctxtInfo = ctxtinfo; + if (!m->mgr->PushView(MUSIC_CONTEXT_VIEW, &parcel)) + _ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed"); + } } default: -- 2.7.4 From 8ca728f1d2b9ac94e3c35510d371f4b1dc1a78e2 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Mon, 20 Apr 2015 11:50:20 +0900 Subject: [PATCH 13/16] Modification due to the refactoring of application-common Change-Id: I6f08e3c6385d1b9ef0d583d732cdcc2986224acc Signed-off-by: Kim Tae Soo --- include/ExtBaseLayout.h | 2 -- include/FolderStorage.h | 1 - include/album_info.h | 1 - include/base-view.h | 7 ++----- include/category_info.h | 3 --- include/common-ui.h | 2 -- include/context-view.h | 20 ++++++++------------ include/folder_info.h | 2 -- include/mediadata.h | 7 ++----- include/music-controller.h | 4 ---- include/playback-mgr.h | 1 - include/playback-view.h | 7 ++----- include/playlist-mgr.h | 4 ---- include/song_info.h | 2 -- include/volume-control.h | 1 - src/data/AlbumStorage.cpp | 2 +- src/data/CategoryStorage.cpp | 2 +- src/data/album_info.cpp | 2 +- src/data/category_info.cpp | 3 +-- src/data/folder_info.cpp | 3 +-- src/data/mediadata.cpp | 9 ++++----- src/data/song_info.cpp | 2 +- src/main.cpp | 10 +--------- src/playback/MusicControllerImpl.cpp | 9 ++++----- src/playback/MusicControllerImpl.h | 2 +- src/playback/playback-mgr.cpp | 2 +- src/playback/playlist-mgr.cpp | 3 +-- src/views/ExtBaseLayout.cpp | 7 +------ src/views/HandleVolume.cpp | 1 - src/views/Info.cpp | 6 ++---- src/views/PlayListCtxPopup.cpp | 19 ++++++------------- src/views/PlayListCtxPopup.h | 3 +-- src/views/PlaySettingCtxPopup.cpp | 14 ++++---------- src/views/PlaySettingCtxPopup.h | 3 +-- src/views/RemovePopupWindow.cpp | 8 ++------ src/views/RemovePopupWindow.h | 4 +--- src/views/SortCtxPopup.cpp | 15 +++++---------- src/views/SortCtxPopup.h | 2 +- src/views/SourceCtxPopup.cpp | 13 ++++--------- src/views/SourceCtxPopup.h | 2 +- src/views/album-layout.cpp | 13 +------------ src/views/album-songs-layout.cpp | 10 +--------- src/views/artist-layout.cpp | 8 +------- src/views/base-view.cpp | 18 ++++-------------- src/views/category-layout.cpp | 10 +--------- src/views/category-songs-layout.cpp | 11 ++--------- src/views/common-ui.cpp | 5 +---- src/views/context-view.cpp | 28 +++++++++++----------------- src/views/entry-popup.cpp | 7 +++---- src/views/folder-layout.cpp | 10 +--------- src/views/genre-layout.cpp | 8 +------- src/views/playback-view.cpp | 17 +++++------------ src/views/playlist-layout.cpp | 9 +-------- src/views/song-layout.cpp | 10 +--------- 54 files changed, 95 insertions(+), 279 deletions(-) diff --git a/include/ExtBaseLayout.h b/include/ExtBaseLayout.h index 224aa56..f9d6f0a 100644 --- a/include/ExtBaseLayout.h +++ b/include/ExtBaseLayout.h @@ -17,8 +17,6 @@ #ifndef __EXT_BASE_LAYOUT_H__ #define __EXT_BASE_LAYOUT_H -#include "BaseLayout.h" - class CExtBaseLayout : public CBaseLayout { private: bool m_bEmptyStatus; diff --git a/include/FolderStorage.h b/include/FolderStorage.h index ece70ce..b6ec191 100644 --- a/include/FolderStorage.h +++ b/include/FolderStorage.h @@ -14,7 +14,6 @@ * limitations under the License. */ - #ifndef __FOLDER_STORAGE_H__ #define __FOLDER_STORAGE_H__ diff --git a/include/album_info.h b/include/album_info.h index 49a9520..e9b4c94 100644 --- a/include/album_info.h +++ b/include/album_info.h @@ -17,7 +17,6 @@ #ifndef __ALBUM_INFO_H__ #define __ALBUM_INFO_H__ -#include class CAlbumInfo : public CExtNameInfo { private: diff --git a/include/base-view.h b/include/base-view.h index 0680e98..3a783ae 100644 --- a/include/base-view.h +++ b/include/base-view.h @@ -18,9 +18,6 @@ #define __MUSIC_BASE_VIEW_H__ -#include - - struct SArgList { char *album_id; char *uri; @@ -40,8 +37,8 @@ private: static void sm_CbHandleEmptyStatus(void *cookie, bool emptyStatus); void m_OnHandleEmptyStatus(bool emptyStatus); - static void sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, const char* text); - void m_CbCtxPopupBtnSelected(CCtxPopup* instance, const char* text); + static void sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text); + void m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text); static Eina_Bool sm_CbShowLayoutIdler(void *cookie); void m_OnShowLayoutIdler(void); diff --git a/include/category_info.h b/include/category_info.h index 493fb16..d3ff868 100644 --- a/include/category_info.h +++ b/include/category_info.h @@ -17,9 +17,6 @@ #ifndef __CATEGORY_INFO_H__ #define __CATEGORY_INFO_H__ - -#include -#include #include "album_info.h" class CCategoryInfo : public CExtNameInfo { diff --git a/include/common-ui.h b/include/common-ui.h index 2e0b2f1..d02ef9a 100644 --- a/include/common-ui.h +++ b/include/common-ui.h @@ -17,8 +17,6 @@ #ifndef __COMMON_UI_H__ #define __COMMON_UI_H__ -#include - enum EAddType; class CCommonUI { diff --git a/include/context-view.h b/include/context-view.h index 8461410..6395a3e 100644 --- a/include/context-view.h +++ b/include/context-view.h @@ -17,10 +17,6 @@ #ifndef __CONTEXT_VIEW_H__ #define __CONTEXT_VIEW_H__ - -#include -#include "PopupWindow.h" - struct SContentInfo; struct SRltvCtnt; @@ -33,19 +29,19 @@ private: private: static void sm_CbRltdCtntSelected(void *data, Evas_Object *obj, const char *emission, const char *source); - static void sm_CbRemove(void* cookie, CPopupWindow *instance); - void m_OnRemove(CPopupWindow *instance); + static void sm_CbRemove(void* cookie, CMessagePopup *instance); + void m_OnRemove(CMessagePopup *instance); - static void sm_CbCancel(void* cookie, CPopupWindow *instance); - void m_OnCancel(CPopupWindow *instance); + static void sm_CbCancel(void* cookie, CMessagePopup *instance); + void m_OnCancel(CMessagePopup *instance); static int sm_CbSortPlaylist(const void *d1, const void *d2); static Eina_Bool sm_CbSelectIdler(void *dt); Eina_Bool m_OnSelectIdler(void); - static void sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, const char* text); - void m_CbCtxPopupBtnSelected(CCtxPopup* instance, const char* text); + static void sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text); + void m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text); @@ -79,8 +75,8 @@ private: bool m_CreateMoreinfoLayout(SRltvCtnt *rctnt, Evas_Object *img); bool m_CreateInfoPart(void); bool m_CreateFullView(void); - CCtxPopup *m_CreatePlaylistPopup(void); - CPopupWindow *m_CreateRemovePopup(Evas_Object *base, const char *msg); + CContextPopup *m_CreatePlaylistPopup(void); + CMessagePopup *m_CreateRemovePopup(Evas_Object *base, const char *msg); void m_DestroyPopup(void); void m_HandleBtnSelected(int btnType); void m_HandleMoreinfoSelected(Evas_Object *obj); diff --git a/include/folder_info.h b/include/folder_info.h index 27f4981..2b10249 100644 --- a/include/folder_info.h +++ b/include/folder_info.h @@ -17,8 +17,6 @@ #ifndef __FOLDER_INFO_H__ #define __FOLDER_INFO_H__ -#include - class CFolderInfo : public CNameInfo { private: struct SFolderInfo *m; diff --git a/include/mediadata.h b/include/mediadata.h index 024107f..f626871 100644 --- a/include/mediadata.h +++ b/include/mediadata.h @@ -22,11 +22,8 @@ struct mediadata; struct album_info; struct category_info; - #include #include "common.h" -#include - class CPlaylistMgr { public: @@ -39,7 +36,7 @@ public: }; -class CMediadata : public CMediaContentDbUpdateListener, public CPlaylistMgr { +class CMediadata : public CMediaContentListener, public CPlaylistMgr { private: struct SMediadata* m; @@ -72,7 +69,7 @@ public: static Eina_List *PlaylistsForCtxt(void); public: - virtual void OnUpdated(const SEntity *entity); + virtual void OnDbUpdated(const SEntity *entity); }; diff --git a/include/music-controller.h b/include/music-controller.h index 018b18f..ff32a36 100644 --- a/include/music-controller.h +++ b/include/music-controller.h @@ -17,12 +17,8 @@ #ifndef __MUSIC_CONTROLLER_H__ #define __MUSIC_CONTROLLER_H__ - -#include -#include #include "playback-mgr.h" - class IMusicControllerListener { public: enum SUsbStorageStatus { diff --git a/include/playback-mgr.h b/include/playback-mgr.h index 0711439..71589aa 100644 --- a/include/playback-mgr.h +++ b/include/playback-mgr.h @@ -20,7 +20,6 @@ #include - class ICompleteListener { public: virtual void t_OnPlayComplete(void) = 0; diff --git a/include/playback-view.h b/include/playback-view.h index 914c6d2..cdb7445 100644 --- a/include/playback-view.h +++ b/include/playback-view.h @@ -19,12 +19,9 @@ #include "common.h" -#include "CtxPopup.h" - struct SItemInfo; - class CSliderWidget : public CListenerMgr, public IMusicControllerListener, @@ -121,8 +118,8 @@ private: static void sm_CbCtxtClose(void *dt); void m_OnCtxtClose(void); - static void sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, const char* text); - void m_CbCtxPopupBtnSelected(CCtxPopup* instance, const char* text); + static void sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text); + void m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text); private: void m_HandleKeyPress(char *keyname); diff --git a/include/playlist-mgr.h b/include/playlist-mgr.h index 12373e0..2ae0005 100644 --- a/include/playlist-mgr.h +++ b/include/playlist-mgr.h @@ -18,12 +18,8 @@ #define __PLAYLIST_MGR_H__ -#include - - struct SSongInfo; - class CPlaylist { private: struct SPlaylist* m; diff --git a/include/song_info.h b/include/song_info.h index 0e3a57e..a63285b 100644 --- a/include/song_info.h +++ b/include/song_info.h @@ -17,8 +17,6 @@ #ifndef __SONG_INFO_H__ #define __SONG_INFO_H__ -#include - class CSongInfo : public CExtNameInfo { private: struct SSongInfo *m; diff --git a/include/volume-control.h b/include/volume-control.h index 28041cb..ce88f2a 100644 --- a/include/volume-control.h +++ b/include/volume-control.h @@ -17,7 +17,6 @@ #ifndef __VOLUME_CONTROL_H__ #define __VOLUME_CONTROL_H__ - class CVolumeController { public: static bool Mute(void); diff --git a/src/data/AlbumStorage.cpp b/src/data/AlbumStorage.cpp index 91c0325..57892a5 100644 --- a/src/data/AlbumStorage.cpp +++ b/src/data/AlbumStorage.cpp @@ -15,11 +15,11 @@ */ -#include #include #include #include #include + #include "dbg.h" #include "i18n.h" #include "define.h" diff --git a/src/data/CategoryStorage.cpp b/src/data/CategoryStorage.cpp index 0e3642e..b740717 100644 --- a/src/data/CategoryStorage.cpp +++ b/src/data/CategoryStorage.cpp @@ -14,11 +14,11 @@ * limitations under the License. */ -#include #include #include #include #include + #include "dbg.h" #include "i18n.h" #include "define.h" diff --git a/src/data/album_info.cpp b/src/data/album_info.cpp index 255f001..722db2a 100644 --- a/src/data/album_info.cpp +++ b/src/data/album_info.cpp @@ -16,9 +16,9 @@ #include #include -#include #include "dbg.h" #include "i18n.h" +#include #include "album_info.h" diff --git a/src/data/category_info.cpp b/src/data/category_info.cpp index 979adeb..69a6639 100644 --- a/src/data/category_info.cpp +++ b/src/data/category_info.cpp @@ -16,10 +16,9 @@ #include #include -#include -#include #include "dbg.h" #include "i18n.h" +#include #include "define.h" #include "category_info.h" diff --git a/src/data/folder_info.cpp b/src/data/folder_info.cpp index b7742cf..5e722f3 100644 --- a/src/data/folder_info.cpp +++ b/src/data/folder_info.cpp @@ -16,10 +16,9 @@ #include #include -#include #include "dbg.h" #include "i18n.h" -#include +#include #include "folder_info.h" diff --git a/src/data/mediadata.cpp b/src/data/mediadata.cpp index 71ca524..532e9c4 100644 --- a/src/data/mediadata.cpp +++ b/src/data/mediadata.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include #include #include #include @@ -341,12 +340,12 @@ bool CMediadata::Create(void) _CREATE_BEGIN{ _CHECK(m = new SMediadata) _CHECK(media_content_connect() == MEDIA_CONTENT_ERROR_NONE) - _CHECK(CMediaContentDbUpdateListener::Create()) + _CHECK(CMediaContentListener::Create()) _WHEN_SUCCESS{ m->source_type = SOURCE_TYPE_NONE; } - _CHECK_FAIL{ CMediaContentDbUpdateListener::Destroy(); } + _CHECK_FAIL{ CMediaContentListener::Destroy(); } _CHECK_FAIL{ media_content_disconnect(); } _CHECK_FAIL{ delete m; m = NULL; } }_CREATE_END_AND_CATCH{ return false; } @@ -382,7 +381,7 @@ void CMediadata::Destroy(void) delete cbinfo; } - CMediaContentDbUpdateListener::Destroy(); + CMediaContentListener::Destroy(); r = media_content_disconnect(); if (r != MEDIA_CONTENT_ERROR_NONE) @@ -576,7 +575,7 @@ Eina_List *CMediadata::PlaylistsForCtxt(void) } -void CMediadata::OnUpdated(const SEntity *entity) +void CMediadata::OnDbUpdated(const SEntity *entity) { Eina_List *l = NULL; SCbInfo *cbinfo = NULL; diff --git a/src/data/song_info.cpp b/src/data/song_info.cpp index 481b4bb..b90a22f 100644 --- a/src/data/song_info.cpp +++ b/src/data/song_info.cpp @@ -16,9 +16,9 @@ #include #include -#include #include "dbg.h" #include "i18n.h" +#include #include "song_info.h" diff --git a/src/main.cpp b/src/main.cpp index d7bf819..3a1a133 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,22 +14,14 @@ * limitations under the License. */ -#include -#include #include "dbg.h" +#include - -#include -#include #include "song_info.h" #include "album_info.h" #include "define.h" #include "common.h" #include "music-controller.h" -#include "BaseApp.h" -#include "BaseView.h" -#include "BaseLayout.h" -#include "ViewMgr.h" #include "base-view.h" #include "playback-view.h" #include "context-view.h" diff --git a/src/playback/MusicControllerImpl.cpp b/src/playback/MusicControllerImpl.cpp index e1f4e51..0108e9d 100644 --- a/src/playback/MusicControllerImpl.cpp +++ b/src/playback/MusicControllerImpl.cpp @@ -13,12 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include + #include #include #include "dbg.h" #include "i18n.h" - #include #include "song_info.h" @@ -174,7 +173,7 @@ bool CMusicControllerImpl::Create(void) // Even if CUsbConnectionListener creation failed, // application should run properly. - if (!CUsbConnectionListener::Create()) + if (!CUsbListener::Create()) _DBG("CUsbConnectionListener::Create failed"); } @@ -196,8 +195,8 @@ bool CMusicControllerImpl::Create(void) void CMusicControllerImpl::Destroy(void) { - if (CUsbConnectionListener::FlagCreate()) - CUsbConnectionListener::Destroy(); + if (CUsbListener::FlagCreate()) + CUsbListener::Destroy(); if (!m->pPlayback->UnsetCallback()) _ERR(" playback remove completion callback failed"); diff --git a/src/playback/MusicControllerImpl.h b/src/playback/MusicControllerImpl.h index 251ecbb..6db31e8 100644 --- a/src/playback/MusicControllerImpl.h +++ b/src/playback/MusicControllerImpl.h @@ -19,7 +19,7 @@ class CMusicControllerImpl : - public CUsbConnectionListener, + public CUsbListener, public ICompleteListener { private: struct SMusicControllerImpl *m; diff --git a/src/playback/playback-mgr.cpp b/src/playback/playback-mgr.cpp index 2ab23fb..99fac0d 100644 --- a/src/playback/playback-mgr.cpp +++ b/src/playback/playback-mgr.cpp @@ -15,9 +15,9 @@ */ #include -#include #include "i18n.h" #include "dbg.h" +#include #include "playback-mgr.h" diff --git a/src/playback/playlist-mgr.cpp b/src/playback/playlist-mgr.cpp index f13c79e..23b53f1 100644 --- a/src/playback/playlist-mgr.cpp +++ b/src/playback/playlist-mgr.cpp @@ -14,12 +14,11 @@ * limitations under the License. */ -#include #include #include -#include #include "dbg.h" #include "i18n.h" +#include #include "song_info.h" #include "playlist-mgr.h" #include "time.h" diff --git a/src/views/ExtBaseLayout.cpp b/src/views/ExtBaseLayout.cpp index e13bffa..930da87 100644 --- a/src/views/ExtBaseLayout.cpp +++ b/src/views/ExtBaseLayout.cpp @@ -14,13 +14,8 @@ * limitations under the License. */ -#include -#include -#include -#include -#include -#include #include "dbg.h" +#include #include "ExtBaseLayout.h" diff --git a/src/views/HandleVolume.cpp b/src/views/HandleVolume.cpp index 10c4911..f96f9e7 100644 --- a/src/views/HandleVolume.cpp +++ b/src/views/HandleVolume.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include #include "dbg.h" #include "define.h" #include diff --git a/src/views/Info.cpp b/src/views/Info.cpp index 00584d8..01bebbb 100644 --- a/src/views/Info.cpp +++ b/src/views/Info.cpp @@ -14,14 +14,12 @@ * limitations under the License. */ -#include -#include -#include #include "i18n.h" +#include "dbg.h" #include "define.h" #include "common.h" -#include "ExtNameInfo.h" #include "Info.h" +#include struct SInfo { diff --git a/src/views/PlayListCtxPopup.cpp b/src/views/PlayListCtxPopup.cpp index e292200..905ab32 100644 --- a/src/views/PlayListCtxPopup.cpp +++ b/src/views/PlayListCtxPopup.cpp @@ -14,19 +14,12 @@ * limitations under the License. */ -#include -#include -#include -#include #include "i18n.h" #include "define.h" #include "dbg.h" +#include #include "common.h" #include "Info.h" -#include "CtxPopup.h" -#include -#include -#include #include "PlayListCtxPopup.h" @@ -41,7 +34,7 @@ struct SPlayListCtxPopup { void CPlayListCtxPopup::t_OnConfiguration(void) { t_SetList((const char **)m->settingTexts, m->listSize, 0, - CCtxPopup::TOPBTN_BASE, (const char **)m->btnIds, + CContextPopup::TOPBTN_BASE, (const char **)m->btnIds, POSITION_PLAY_LIST_POPUP_X, POSITION_PLAY_LIST_POPUP_Y, MUSIC_STYLE_LIST_POPUP, MUSIC_STYLE_TOPTEXT_BTN, MUSIC_STYLE_MIDDLETEXT_BTN, MUSIC_STYLE_BOTTOMTEXT_BTN); @@ -71,7 +64,7 @@ void CPlayListCtxPopup::t_OnBtnClicked(Evas_Object* obj, void* ev) return; CInfo::SetPlayListDbId(m->dbIds[index]); - CCtxPopup::t_OnBtnClicked(obj, ev); + CContextPopup::t_OnBtnClicked(obj, ev); Destroy(); } @@ -130,9 +123,9 @@ bool CPlayListCtxPopup::Create(Evas_Object* base, const SCallback* callback, Ein _CHECK(m->dbIds = new int[m->listSize]) _COMMAND{ memset(m->dbIds, 0, m->listSize * sizeof(int)); } _CHECK(m_SetBtnString(playList)) - _CHECK(CCtxPopup::Create(base, callback, true)) + _CHECK(CContextPopup::Create(base, callback, true)) - _CHECK_FAIL{ CCtxPopup::Destroy(); } + _CHECK_FAIL{ CContextPopup::Destroy(); } _CHECK_FAIL{ m_DeleteBtnString(); } _CHECK_FAIL{ delete[] m->dbIds; } _CHECK_FAIL{ delete[] m->btnIds; } @@ -147,7 +140,7 @@ bool CPlayListCtxPopup::Create(Evas_Object* base, const SCallback* callback, Ein void CPlayListCtxPopup::Destroy(void) { - CCtxPopup::Destroy(); + CContextPopup::Destroy(); m_DeleteBtnString(); diff --git a/src/views/PlayListCtxPopup.h b/src/views/PlayListCtxPopup.h index 6b6a34f..c530cf4 100644 --- a/src/views/PlayListCtxPopup.h +++ b/src/views/PlayListCtxPopup.h @@ -1,9 +1,8 @@ #ifndef __PLAYLIST_CTX_POPUP_H__ #define __PLAYLIST_CTX_POPUP_H__ -#include -class CPlayListCtxPopup : public CCtxPopup { +class CPlayListCtxPopup : public CContextPopup { private: struct SPlayListCtxPopup *m; diff --git a/src/views/PlaySettingCtxPopup.cpp b/src/views/PlaySettingCtxPopup.cpp index a6e45fe..8049089 100644 --- a/src/views/PlaySettingCtxPopup.cpp +++ b/src/views/PlaySettingCtxPopup.cpp @@ -14,20 +14,14 @@ * limitations under the License. */ -#include -#include -#include #include "i18n.h" #include "define.h" #include "common.h" #include "Info.h" -#include "CtxPopup.h" -#include -#include -#include +#include "dbg.h" +#include #include "PlaySettingCtxPopup.h" - #define TOTAL_SETTING_BTNS 2 const char *settingText[TOTAL_SETTING_BTNS] = { @@ -43,7 +37,7 @@ const char *settingBtnId[TOTAL_SETTING_BTNS] = { void CPlaySettingCtxPopup::t_OnConfiguration(void) { t_SetList(settingText, TOTAL_SETTING_BTNS, 0, - CCtxPopup::TOPBTN_BASE, settingBtnId, + CContextPopup::TOPBTN_BASE, settingBtnId, POSITION_PLAY_SETTING_POPUP_X, POSITION_PLAY_SETTING_POPUP_Y, NULL, MUSIC_STYLE_SETTING_BTN_T, MUSIC_STYLE_SETTING_BTN_T, MUSIC_STYLE_SETTING_BTN_B); @@ -73,7 +67,7 @@ void CPlaySettingCtxPopup::t_OnBtnClicked(Evas_Object* obj, void* ev) return; CInfo::SetPlaybackSettingType(index); - CCtxPopup::t_OnBtnClicked(obj, ev); + CContextPopup::t_OnBtnClicked(obj, ev); Destroy(); } \ No newline at end of file diff --git a/src/views/PlaySettingCtxPopup.h b/src/views/PlaySettingCtxPopup.h index 781d858..6286fbf 100644 --- a/src/views/PlaySettingCtxPopup.h +++ b/src/views/PlaySettingCtxPopup.h @@ -1,9 +1,8 @@ #ifndef __PLAYSETTING_CTX_POPUP_H__ #define __PLAYSETTING_CTX_POPUP_H__ -#include -class CPlaySettingCtxPopup : public CCtxPopup { +class CPlaySettingCtxPopup : public CContextPopup { protected: virtual void t_OnConfiguration(void); virtual void t_OnBtnClicked(Evas_Object* obj, void* ev); diff --git a/src/views/RemovePopupWindow.cpp b/src/views/RemovePopupWindow.cpp index 2c0aa51..0775e45 100644 --- a/src/views/RemovePopupWindow.cpp +++ b/src/views/RemovePopupWindow.cpp @@ -14,14 +14,10 @@ * limitations under the License. */ -#include -#include -#include -#include -#include #include "i18n.h" #include "define.h" #include "dbg.h" +#include #include "common.h" #include "RemovePopupWindow.h" @@ -42,7 +38,7 @@ bool CRemovePopupWindow::Create(Evas_Object* base, const SCallback* callback, co { m_msg = msg; - if (!CPopupWindow::Create(base, callback)) { + if (!CMessagePopup::Create(base, callback)) { _ERR("Creation of remove popup failed"); return false; } diff --git a/src/views/RemovePopupWindow.h b/src/views/RemovePopupWindow.h index 5fdbec7..912ddbb 100644 --- a/src/views/RemovePopupWindow.h +++ b/src/views/RemovePopupWindow.h @@ -18,9 +18,7 @@ #ifndef __REMOVE_POPUP_WINDOW_H__ #define __REMOVE_POPUP_WINDOW_H__ -#include - -class CRemovePopupWindow : public CPopupWindow { +class CRemovePopupWindow : public CMessagePopup { private: const char *m_msg; diff --git a/src/views/SortCtxPopup.cpp b/src/views/SortCtxPopup.cpp index 8706d59..2bb8fb0 100644 --- a/src/views/SortCtxPopup.cpp +++ b/src/views/SortCtxPopup.cpp @@ -14,17 +14,12 @@ * limitations under the License. */ -#include -#include -#include #include "i18n.h" #include "define.h" -#include #include "dbg.h" +#include #include "Info.h" -#include "CtxPopup.h" -#include #include "SortCtxPopup.h" const char *sortTextSong[] = { @@ -103,7 +98,7 @@ static int arraySize = 0; void CSortCtxPopup::t_OnConfiguration(void) { t_SetList(sortText, arraySize, (int)CInfo::SortType(), - CCtxPopup::TOPBTN_SORT, sortBtnIds, + CContextPopup::TOPBTN_SORT, sortBtnIds, POSITION_SORT_POPUP_X, POSITION_SORT_POPUP_Y, NULL, MUSIC_STYLE_HOVER_ENTRY, MUSIC_STYLE_HOVER_ENTRY, MUSIC_STYLE_HOVER_ENTRY); @@ -134,7 +129,7 @@ void CSortCtxPopup::t_OnBtnClicked(Evas_Object* obj, void* ev) if (index != CInfo::SortType()) { CInfo::SetSortType(index); - CCtxPopup::t_OnBtnClicked(obj, ev); + CContextPopup::t_OnBtnClicked(obj, ev); } Destroy(); @@ -186,9 +181,9 @@ bool CSortCtxPopup::Create(Evas_Object* base, const SCallback* callback, ESortBt break; } - bool r = CCtxPopup::Create(base, callback); + bool r = CContextPopup::Create(base, callback); if (r == false) { - _ERR("CCtxPopup::Create failed"); + _ERR("CContextPopup::Create failed"); return false; } diff --git a/src/views/SortCtxPopup.h b/src/views/SortCtxPopup.h index 024ef9e..d1e4d2a 100644 --- a/src/views/SortCtxPopup.h +++ b/src/views/SortCtxPopup.h @@ -2,7 +2,7 @@ #define __SORT_CTX_POPUP_H__ -class CSortCtxPopup : public CCtxPopup { +class CSortCtxPopup : public CContextPopup { public: enum ESortBtnType { diff --git a/src/views/SourceCtxPopup.cpp b/src/views/SourceCtxPopup.cpp index 11eba8d..fbacc77 100644 --- a/src/views/SourceCtxPopup.cpp +++ b/src/views/SourceCtxPopup.cpp @@ -14,17 +14,12 @@ * limitations under the License. */ -#include -#include -#include #include "i18n.h" #include "define.h" #include "common.h" #include "Info.h" -#include "CtxPopup.h" -#include -#include -#include +#include "dbg.h" +#include #include "SourceCtxPopup.h" const char *sourceText[] = { @@ -44,7 +39,7 @@ void CSourceCtxPopup::t_OnConfiguration(void) int size = (sizeof(sourceText) / sizeof(sourceText[0])); t_SetList(sourceText, size, (int)CInfo::SourceType(), - CCtxPopup::TOPBTN_SOURCE, srcBtnIds, + CContextPopup::TOPBTN_SOURCE, srcBtnIds, POSITION_SOURCE_POPUP_X, POSITION_SOURCE_POPUP_Y, NULL, MUSIC_STYLE_HOVER_ENTRY, MUSIC_STYLE_HOVER_ENTRY, MUSIC_STYLE_HOVER_ENTRY); @@ -76,7 +71,7 @@ void CSourceCtxPopup::t_OnBtnClicked(Evas_Object* obj, void* ev) if (index != CInfo::SourceType()) { CInfo::SetSourceType(index); - CCtxPopup::t_OnBtnClicked(obj, ev); + CContextPopup::t_OnBtnClicked(obj, ev); } Destroy(); diff --git a/src/views/SourceCtxPopup.h b/src/views/SourceCtxPopup.h index ce90500..2402921 100644 --- a/src/views/SourceCtxPopup.h +++ b/src/views/SourceCtxPopup.h @@ -2,7 +2,7 @@ #define __SOURCE_CTX_POPUP_H__ -class CSourceCtxPopup : public CCtxPopup { +class CSourceCtxPopup : public CContextPopup { protected: virtual void t_OnConfiguration(void); diff --git a/src/views/album-layout.cpp b/src/views/album-layout.cpp index 3641a11..09ebfea 100644 --- a/src/views/album-layout.cpp +++ b/src/views/album-layout.cpp @@ -14,29 +14,18 @@ * limitations under the License. */ -#include -#include - -#include -#include -#include - #include "dbg.h" +#include #include "i18n.h" #include "define.h" #include "common.h" #include "album_info.h" #include "song_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "common-ui.h" -#include "BaseView.h" -#include "BaseLayout.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "album-layout.h" #include "album-songs-layout.h" -#include "base-view.h" #include "Info.h" #define GENGRID_ITEM_SIZE_W (263+20) diff --git a/src/views/album-songs-layout.cpp b/src/views/album-songs-layout.cpp index a4b4f5a..8740290 100644 --- a/src/views/album-songs-layout.cpp +++ b/src/views/album-songs-layout.cpp @@ -14,24 +14,16 @@ * limitations under the License. */ -#include -#include - -#include "AppCommon.h" -#include "InputHandler.h" - #include "dbg.h" #include "i18n.h" +#include #include "define.h" #include "common.h" #include "song_info.h" #include "album_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "album-songs-layout.h" #include "base-view.h" diff --git a/src/views/artist-layout.cpp b/src/views/artist-layout.cpp index a32d7d5..f6b7a70 100644 --- a/src/views/artist-layout.cpp +++ b/src/views/artist-layout.cpp @@ -14,11 +14,8 @@ * limitations under the License. */ -#include -#include -#include "AppCommon.h" -#include #include "dbg.h" +#include #include "i18n.h" #include "define.h" @@ -27,12 +24,9 @@ #include "album_info.h" #include "song_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "entry-popup.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "category-layout.h" #include "base-view.h" #include "artist-layout.h" diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index b93bf68..d2d00f9 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -14,15 +14,10 @@ * limitations under the License. */ -#include -#include -#include "AppCommon.h" #include "i18n.h" #include "define.h" #include "dbg.h" - -#include "AppCommon.h" -#include "InputHandler.h" +#include #include "common.h" #include "song_info.h" @@ -30,12 +25,7 @@ #include "folder_info.h" #include "category_info.h" #include "music-controller.h" -#include "LayoutMgr.h" -#include "BaseView.h" -#include "BaseLayout.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" -#include #include "Info.h" #include "SourceCtxPopup.h" #include "SortCtxPopup.h" @@ -332,7 +322,7 @@ void CMusicBaseView::m_GotoPlayback(void) void CMusicBaseView::m_CreateCtxPopup(int btnType) { const char *layout_id = NULL; - CCtxPopup::SCallback cb; + CContextPopup::SCallback cb; cb.onSelected = sm_CbCtxPopupBtnSelected; cb.cookie = this; @@ -398,7 +388,7 @@ void CMusicBaseView::m_DestroyCtxPopup(void) } -void CMusicBaseView::sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, const char* text) +void CMusicBaseView::sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text) { CMusicBaseView *root = (CMusicBaseView*)cookie; if (root) @@ -406,7 +396,7 @@ void CMusicBaseView::sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, } -void CMusicBaseView::m_CbCtxPopupBtnSelected(CCtxPopup* instance, const char* text) +void CMusicBaseView::m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text) { if (m->btntype == BTN_SOURCE) { elm_object_text_set(m->srcbtn, _(text)); diff --git a/src/views/category-layout.cpp b/src/views/category-layout.cpp index 1c7f311..d78a415 100644 --- a/src/views/category-layout.cpp +++ b/src/views/category-layout.cpp @@ -14,13 +14,8 @@ * limitations under the License. */ -#include -#include - -#include "AppCommon.h" -#include -#include #include "dbg.h" +#include #include "i18n.h" #include "define.h" @@ -29,12 +24,9 @@ #include "album_info.h" #include "song_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "entry-popup.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "category-layout.h" #include "base-view.h" #include "Info.h" diff --git a/src/views/category-songs-layout.cpp b/src/views/category-songs-layout.cpp index e4aa7a6..8aff6ac 100644 --- a/src/views/category-songs-layout.cpp +++ b/src/views/category-songs-layout.cpp @@ -14,25 +14,18 @@ * limitations under the License. */ -#include -#include - -#include "AppCommon.h" -#include "InputHandler.h" - #include "dbg.h" #include "i18n.h" +#include + #include "define.h" #include "common.h" #include "song_info.h" #include "album_info.h" #include "category_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "category-songs-layout.h" #include "base-view.h" #include "category-layout.h" diff --git a/src/views/common-ui.cpp b/src/views/common-ui.cpp index c52004b..6d73506 100644 --- a/src/views/common-ui.cpp +++ b/src/views/common-ui.cpp @@ -14,15 +14,12 @@ * limitations under the License. */ -#include -#include #include "i18n.h" #include "define.h" #include "dbg.h" +#include #include "common.h" #include "common-ui.h" -#include "BaseView.h" -#include "ViewMgr.h" #include "song_info.h" diff --git a/src/views/context-view.cpp b/src/views/context-view.cpp index 0f3dec8..bb76472 100644 --- a/src/views/context-view.cpp +++ b/src/views/context-view.cpp @@ -14,12 +14,9 @@ * limitations under the License. */ -#include -#include -#include "AppCommon.h" -#include #include "dbg.h" #include "i18n.h" +#include #include "define.h" #include "song_info.h" #include "album_info.h" @@ -29,11 +26,8 @@ #include "common-ui.h" #include "music-controller.h" #include "mediadata.h" -#include "BaseView.h" -#include "ViewMgr.h" #include "context-view.h" #include "PlayListCtxPopup.h" -#include "PopupWindow.h" #include "RemovePopupWindow.h" #include "Info.h" @@ -172,7 +166,7 @@ void CContextView::sm_CbRltdCtntSelected(void *data, Evas_Object *obj, const cha } -void CContextView::sm_CbRemove(void* cookie, CPopupWindow *instance) +void CContextView::sm_CbRemove(void* cookie, CMessagePopup *instance) { CContextView *root = (CContextView *)cookie; if (root) @@ -180,7 +174,7 @@ void CContextView::sm_CbRemove(void* cookie, CPopupWindow *instance) } -void CContextView::m_OnRemove(CPopupWindow *instance) +void CContextView::m_OnRemove(CMessagePopup *instance) { SContentInfo *cinfo = NULL; @@ -199,7 +193,7 @@ void CContextView::m_OnRemove(CPopupWindow *instance) } -void CContextView::sm_CbCancel(void* cookie, CPopupWindow *instance) +void CContextView::sm_CbCancel(void* cookie, CMessagePopup *instance) { CContextView *root = (CContextView *)cookie; if (root) @@ -207,7 +201,7 @@ void CContextView::sm_CbCancel(void* cookie, CPopupWindow *instance) } -void CContextView::m_OnCancel(CPopupWindow *instance) +void CContextView::m_OnCancel(CMessagePopup *instance) { if (!instance) { _ERR("Invalid argument."); @@ -267,7 +261,7 @@ Eina_Bool CContextView::m_OnSelectIdler(void) } -void CContextView::sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, const char* text) +void CContextView::sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text) { CContextView *root = (CContextView*)cookie; if (root) @@ -275,7 +269,7 @@ void CContextView::sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, c } -void CContextView::m_CbCtxPopupBtnSelected(CCtxPopup* instance, const char* text) +void CContextView::m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text) { m->lid = CInfo::PlayListDbId(); m->idler = ecore_idler_add(sm_CbSelectIdler, this); @@ -1076,7 +1070,7 @@ bool CContextView::m_CreateFullView(void) } -CCtxPopup *CContextView::m_CreatePlaylistPopup(void) +CContextPopup *CContextView::m_CreatePlaylistPopup(void) { CPlayListCtxPopup *ctxpopup = NULL; Eina_List *list = NULL; @@ -1096,7 +1090,7 @@ CCtxPopup *CContextView::m_CreatePlaylistPopup(void) return NULL; } - CCtxPopup::SCallback cb; + CContextPopup::SCallback cb; cb.onSelected = sm_CbCtxPopupBtnSelected; cb.cookie = this; r = ctxpopup->Create(m->base, &cb, list); @@ -1110,7 +1104,7 @@ CCtxPopup *CContextView::m_CreatePlaylistPopup(void) } -CPopupWindow *CContextView::m_CreateRemovePopup(Evas_Object *base, const char *msg) +CMessagePopup *CContextView::m_CreateRemovePopup(Evas_Object *base, const char *msg) { CRemovePopupWindow *popup; @@ -1120,7 +1114,7 @@ CPopupWindow *CContextView::m_CreateRemovePopup(Evas_Object *base, const char *m return NULL; } - CPopupWindow::SCallback cb; + CMessagePopup::SCallback cb; cb.cookie = this; cb.onBtn1Pressed = sm_CbRemove; cb.onBtn2Pressed = sm_CbCancel; diff --git a/src/views/entry-popup.cpp b/src/views/entry-popup.cpp index d92147c..d4ed9a1 100644 --- a/src/views/entry-popup.cpp +++ b/src/views/entry-popup.cpp @@ -14,14 +14,13 @@ * limitations under the License. */ -#include #include "i18n.h" #include "define.h" -#include "common.h" -#include "common-ui.h" #include "dbg.h" #include -#include + +#include "common.h" +#include "common-ui.h" #include "entry-popup.h" diff --git a/src/views/folder-layout.cpp b/src/views/folder-layout.cpp index c956f3a..9dd0c50 100644 --- a/src/views/folder-layout.cpp +++ b/src/views/folder-layout.cpp @@ -14,15 +14,10 @@ * limitations under the License. */ -#include -#include - -#include "AppCommon.h" -#include #include "dbg.h" +#include #include "i18n.h" #include "define.h" -#include #include "common.h" #include "folder_info.h" @@ -30,11 +25,8 @@ #include "album_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "folder-layout.h" #include "base-view.h" #include "Info.h" diff --git a/src/views/genre-layout.cpp b/src/views/genre-layout.cpp index 1a774ab..7b25431 100644 --- a/src/views/genre-layout.cpp +++ b/src/views/genre-layout.cpp @@ -14,11 +14,8 @@ * limitations under the License. */ -#include -#include -#include "AppCommon.h" -#include #include "dbg.h" +#include #include "i18n.h" #include "define.h" @@ -27,12 +24,9 @@ #include "album_info.h" #include "song_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "entry-popup.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "category-layout.h" #include "base-view.h" #include "genre-layout.h" diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index 5946798..f052b2a 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -14,27 +14,20 @@ * limitations under the License. */ -#include -#include - -#include "AppCommon.h" -#include - #include "define.h" #include "common.h" #include "dbg.h" +#include + #include "song_info.h" #include "album_info.h" #include "music-controller.h" #include "volume-control.h" #include "i18n.h" #include "common-ui.h" -#include "BaseView.h" -#include "ViewMgr.h" #include "playback-view.h" #include "context-view.h" #include "HandleVolume.h" -#include #include "PlaySettingCtxPopup.h" #include "Info.h" @@ -625,7 +618,7 @@ void CPlaybackView::m_OnCtxtClose(void) } -void CPlaybackView::sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, const char* text) +void CPlaybackView::sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text) { CPlaybackView *root = (CPlaybackView *)cookie; if (root) @@ -633,7 +626,7 @@ void CPlaybackView::sm_CbCtxPopupBtnSelected(void* cookie, CCtxPopup* instance, } -void CPlaybackView::m_CbCtxPopupBtnSelected(CCtxPopup* instance, const char* text) +void CPlaybackView::m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text) { int type = CInfo::PlaybackSettingType(); @@ -1078,7 +1071,7 @@ void CPlaybackView::m_DestroyErrorPopup(void) void CPlaybackView::m_CreateSettingsPopup(void) { - CCtxPopup::SCallback cb; + CContextPopup::SCallback cb; cb.cookie = this; cb.onSelected = sm_CbCtxPopupBtnSelected; diff --git a/src/views/playlist-layout.cpp b/src/views/playlist-layout.cpp index 7187c34..aa12123 100644 --- a/src/views/playlist-layout.cpp +++ b/src/views/playlist-layout.cpp @@ -14,13 +14,9 @@ * limitations under the License. */ -#include -#include #include "dbg.h" #include "i18n.h" - -#include "AppCommon.h" -#include +#include #include "define.h" #include "common.h" @@ -28,12 +24,9 @@ #include "album_info.h" #include "song_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "entry-popup.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "category-layout.h" #include "base-view.h" #include "playlist-layout.h" diff --git a/src/views/song-layout.cpp b/src/views/song-layout.cpp index e60acea..4fd284f 100644 --- a/src/views/song-layout.cpp +++ b/src/views/song-layout.cpp @@ -14,25 +14,17 @@ * limitations under the License. */ -#include -#include #include "dbg.h" #include "i18n.h" - -#include "AppCommon.h" -#include "InputHandler.h" -#include +#include #include "define.h" #include "common.h" #include "song_info.h" #include "album_info.h" #include "music-controller.h" -#include "LayoutMgr.h" #include "common-ui.h" -#include "BaseView.h" #include "ExtBaseLayout.h" -#include "ViewMgr.h" #include "song-layout.h" #include "base-view.h" #include "Info.h" -- 2.7.4 From 3c2624e243a4a1106bd4709513167479f13394cf Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Mon, 20 Apr 2015 21:26:58 +0900 Subject: [PATCH 14/16] Refactoring of Playback View Change-Id: I38df5736e68767641328bef0e72090138b955c12 Signed-off-by: Kim Tae Soo --- CMakeLists.txt | 4 + include/Timer.h | 41 ++ include/common.h | 25 + include/music-controller.h | 12 + include/playback-view.h | 123 +--- src/data/FolderStorage.cpp | 1 - src/data/SongStorage.cpp | 2 - src/playback/MusicControllerImpl.cpp | 58 ++ src/playback/MusicControllerImpl.h | 4 + src/playback/music-controller.cpp | 21 + src/playback/volume-control.cpp | 2 +- src/views/ErrorPopupWindow.cpp | 46 ++ src/views/ErrorPopupWindow.h | 33 + src/views/PlaybackController.cpp | 843 ++++++++++++++++++++++ src/views/PlaybackController.h | 101 +++ src/views/RemovePopupWindow.cpp | 2 +- src/views/SliderWidget.cpp | 293 ++++++++ src/views/SliderWidget.h | 68 ++ src/views/Timer.cpp | 103 +++ src/views/playback-view.cpp | 1295 ++++------------------------------ 20 files changed, 1819 insertions(+), 1258 deletions(-) create mode 100644 include/Timer.h create mode 100644 src/views/ErrorPopupWindow.cpp create mode 100644 src/views/ErrorPopupWindow.h create mode 100644 src/views/PlaybackController.cpp create mode 100644 src/views/PlaybackController.h create mode 100644 src/views/SliderWidget.cpp create mode 100644 src/views/SliderWidget.h create mode 100644 src/views/Timer.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ce4e77..063b29a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,10 @@ SET(SRCS src/main.cpp src/views/PlaySettingCtxPopup.cpp src/views/PlayListCtxPopup.cpp src/views/RemovePopupWindow.cpp + src/views/PlaybackController.cpp + src/views/SliderWidget.cpp + src/views/Timer.cpp + src/views/ErrorPopupWindow.cpp src/playback/playlist-mgr.cpp src/playback/music-controller.cpp src/playback/MusicControllerImpl.cpp diff --git a/include/Timer.h b/include/Timer.h new file mode 100644 index 0000000..262ffd1 --- /dev/null +++ b/include/Timer.h @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef __TIMER_H__ +#define __TIMER_H__ + +class CTimer { +private: + struct STimer *m; + +private: + static Eina_Bool sm_CbTimer(void *data); + +protected: + virtual void t_OnTimer(int id); + +public: + CTimer() : m(0) {} + virtual ~CTimer() {} + + bool Create(void); + virtual void Destroy(void); + + bool SetTimer(int id, int ms); + void KillTimer(int id); +}; + +#endif // __TIMER_H__ \ No newline at end of file diff --git a/include/common.h b/include/common.h index b0f77fa..7a6e5b3 100644 --- a/include/common.h +++ b/include/common.h @@ -69,6 +69,31 @@ enum ERepeatStatus { REPEAT_STATUS_ONE }; +enum EPlayerMode { + MODE_PLAYBACK = 0, + MODE_PLAYLIST_EDIT +}; + +enum EPlayerControlBtns { + CTRL_BTN_SETTINGS, + CTRL_BTN_SHUFFLE, + CTRL_BTN_REPEAT, + CTRL_BTN_REWIND, + CTRL_BTN_PLAY, + CTRL_BTN_FORWARD +}; + +enum EPlayerEditBtns { + EDIT_BTN_CANCEL, + EDIT_BTN_DESELECT, + EDIT_BTN_DELETE +}; + +enum EPlayerBtnsEvent { + EVENT_PRESSED, + EVENT_UNPRESSED +}; + enum update_type { E_KEY_PRESS, E_KEY_RELEASE, diff --git a/include/music-controller.h b/include/music-controller.h index ff32a36..cdf36d0 100644 --- a/include/music-controller.h +++ b/include/music-controller.h @@ -45,6 +45,14 @@ public: virtual void OnResumePlayback(void) {} //! virtual void OnPosition(int milsec) {} + //! + virtual void OnEmptyPlaylist(void) {} + //! + virtual void OnPlayerModeChanged(EPlayerMode mode) {} + //! + virtual void OnEditButtonsPressed(EPlayerEditBtns editBtns) {} + //! + virtual void OnRemoteButtonEvent(Evas_Object *eoBtn, EPlayerBtnsEvent ev) {} }; @@ -106,6 +114,10 @@ public: bool SetRepeatState(ERepeatStatus state); ERepeatStatus RepeatState(void); + + void ChangePlayerMode(EPlayerMode mode); + void HandlePlaylistEditButtons(EPlayerEditBtns btnId); + void HandleRemoteButtons(Evas_Object *eoBtn, EPlayerBtnsEvent ev); }; diff --git a/include/playback-view.h b/include/playback-view.h index cdb7445..33985aa 100644 --- a/include/playback-view.h +++ b/include/playback-view.h @@ -17,87 +17,13 @@ #ifndef __PLAYBACK_VIEW_H__ #define __PLAYBACK_VIEW_H__ - +#include "Timer.h" #include "common.h" struct SItemInfo; -class CSliderWidget : - public CListenerMgr, - public IMusicControllerListener, - public IMouseMoveListener, - public IChangedListener { -private: - struct SSliderWidget *m; - -private: - static Eina_Bool sm_CbUpdateSlider(void *dt); - Eina_Bool m_OnUpdateSlider(void); - - bool m_AddSlider(void); - void m_RemoveTimer(void); - - void m_UpdateSongInfo(void); - -public: - CSliderWidget() : - IMouseMoveListener(this), - IChangedListener(this), - m(0) {} - virtual ~CSliderWidget() {} - - bool Create(Evas_Object *eoParent); - virtual void Destroy(void); - - Evas_Object* Base(void); - - void Init(void); - - //! This function is invoked when playback is complete. - virtual void OnComplete(void); - //! This function is invoked when new song is played. - virtual void OnStartPlayback(void); - //! - virtual void OnStopPlayback(void); - //! This function is invoked when playback is paused. - virtual void OnPausePlayback(void); - //! This function is invoked when playback is resumed. - virtual void OnResumePlayback(void); - //! - virtual void OnPosition(int milsec); - - virtual void OnChanged(int id, Evas_Object *obj); - virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev); -}; - - -class CTimer { -private: - struct STimer *m; - -private: - static Eina_Bool sm_CbTimer(void *data); - -protected: - virtual void t_OnTimer(int id); - -public: - CTimer() : m(0) {} - virtual ~CTimer() {} - - bool Create(void); - virtual void Destroy(void); - - bool SetTimer(int id, int ms); - void KillTimer(int id); -}; - - class CPlaybackView : public CBaseView, - public IMouseClickedListener, public IMouseMoveListener, - public IPressedListener, - public IUnpressedListener, public IRealizedListener, public IActivatedListener, public IMusicControllerListener, @@ -118,8 +44,8 @@ private: static void sm_CbCtxtClose(void *dt); void m_OnCtxtClose(void); - static void sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text); - void m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text); + static int sm_CbCurrentSongCount(void *cookie); + int m_CbCurrentSongCount(void); private: void m_HandleKeyPress(char *keyname); @@ -135,15 +61,10 @@ private: void m_KeyNextUnpress(void); void m_KeyPreviousUnpress(void); - void m_RemoveTimer(int timer_code); - void m_PlaybackPause(void); - void m_PlaybackResume(void); void m_ChangeEditmodeAll(Eina_List *list, bool flag); void m_DisableCheckAll(Eina_List *list); void m_SelectItem(SItemInfo *it_info); void m_UnselectItem(SItemInfo *it_info); - void m_UpdateControlBtns(void); - void m_UpdateCurrentSongProgressbar(void); void m_UpdateCurrentSongThumbnail(void); void m_UpdateCurrentSongLabels(void); void m_UpdateEmptySongInfo(void); @@ -153,49 +74,33 @@ private: void m_UpdatePlaymodeFocusSequence(void); void m_UpdateCurrentSongInfo(void); void m_DisableEditButtons(bool flag); - void m_CreateErrorPopup(void); - void m_DestroyErrorPopup(void); - void m_CreateSettingsPopup(void); - void m_DestroySettingsPopup(void); void m_FromEditToPlaybackMode(void); void m_FromPlaybackToEditMode(void); - void m_HandleOnRepeated(void); void m_DeleteSelectedItems(void); void m_AddAlbumCover(void); void m_AddCurrentSonginfo(void); - void m_AddEditPlaylistButtons(void); - void m_AddControlButtons(void); - struct SItemInfo *m_FindItemInfoFromSong(Eina_List *list, CSongInfo *sinfo); - struct SItemInfo *m_FindItemInfoFromItem(Eina_List *list, Elm_Object_Item *item); + SItemInfo *m_FindItemInfoFromSong(Eina_List *list, CSongInfo *sinfo); + SItemInfo *m_FindItemInfoFromItem(Eina_List *list, Elm_Object_Item *item); void m_UpdateItemCheck(SItemInfo *itinfo); Elm_Genlist_Item_Class *m_GetItemClass(); void m_AddGenlist(void); void m_AddPlaylist(void); void m_RemovePlaylist(void); - void m_HandleRewindBtnClicked(Evas_Object *obj); - void m_HandleForwardBtnClicked(Evas_Object *obj); - void m_HandleOnPressed(Evas_Object *obj); - void m_HandleOnUnpressed(Evas_Object *obj); void m_HandleGenlistItemActivated(Evas_Object *obj, Elm_Object_Item *genListItem); protected: - // When button is clicked. - void t_OnClickedSettings(Evas_Object *obj); - void t_OnClickedShuffle(Evas_Object *obj); - void t_OnClickedRepeat(Evas_Object *obj); - void t_OnClickedPlay(Evas_Object *obj); - -protected: virtual void t_OnShow(void); virtual void t_OnHide(void); virtual void t_OnUpdate(void* data); + virtual void t_OnTimer(int id); public: - CPlaybackView(const char *pViewId) : CBaseView(pViewId), - IMouseClickedListener(this), IMouseMoveListener(this), - IPressedListener(this), IUnpressedListener(this), - IRealizedListener(this), IActivatedListener(this), + CPlaybackView(const char *pViewId) : + CBaseView(pViewId), + IMouseMoveListener(this), + IRealizedListener(this), + IActivatedListener(this), m(0) {} virtual ~CPlaybackView() {} @@ -207,10 +112,7 @@ public: // Listener virtual function virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev); virtual void OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev); - virtual void OnMouseClicked(int id, Evas_Object *obj); virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev); - virtual void OnPressed(int id, Evas_Object *obj); - virtual void OnUnpressed(int id, Evas_Object *obj); virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item); virtual void OnActivated(int id, Evas_Object *obj, Elm_Object_Item *item); @@ -220,6 +122,9 @@ public: virtual void OnUpdateContent(void); virtual void OnStartPlayback(void); virtual void OnStopPlayback(void); + virtual void OnEmptyPlaylist(void); + virtual void OnPlayerModeChanged(EPlayerMode mode); + virtual void OnEditButtonsPressed(EPlayerEditBtns editBtns); }; diff --git a/src/data/FolderStorage.cpp b/src/data/FolderStorage.cpp index dc47a70..e64264c 100644 --- a/src/data/FolderStorage.cpp +++ b/src/data/FolderStorage.cpp @@ -15,7 +15,6 @@ */ -#include #include #include #include diff --git a/src/data/SongStorage.cpp b/src/data/SongStorage.cpp index aeeec0c..1565eb7 100644 --- a/src/data/SongStorage.cpp +++ b/src/data/SongStorage.cpp @@ -14,8 +14,6 @@ * limitations under the License. */ - -#include #include #include #include diff --git a/src/playback/MusicControllerImpl.cpp b/src/playback/MusicControllerImpl.cpp index 0108e9d..d8fd311 100644 --- a/src/playback/MusicControllerImpl.cpp +++ b/src/playback/MusicControllerImpl.cpp @@ -532,6 +532,16 @@ bool CMusicControllerImpl::EmptyPlaylist(void) m->pPlaylist->Destroy(); + Eina_List *l; + IMusicControllerListener *mcListener; + void * obj; + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnEmptyPlaylist(); + } + return true; } @@ -767,6 +777,54 @@ ERepeatStatus CMusicControllerImpl::RepeatState(void) } +void CMusicControllerImpl::ChangePlayerMode(EPlayerMode mode) +{ + ASSERT(m); + + Eina_List *l; + IMusicControllerListener *mcListener; + void * obj; + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnPlayerModeChanged(mode); + } +} + + +void CMusicControllerImpl::HandlePlaylistEditButtons(EPlayerEditBtns btnId) +{ + ASSERT(m); + + Eina_List *l; + IMusicControllerListener *mcListener; + void * obj; + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnEditButtonsPressed(btnId); + } +} + + +void CMusicControllerImpl::HandleRemoteButtons(Evas_Object *eoBtn, EPlayerBtnsEvent ev) +{ + ASSERT(m); + + Eina_List *l; + IMusicControllerListener *mcListener; + void * obj; + + EINA_LIST_FOREACH(m->elListener, l, obj) { + mcListener = (IMusicControllerListener *)obj; + if (mcListener) + mcListener->OnRemoteButtonEvent(eoBtn, ev); + } +} + + void CMusicControllerImpl::OnStatusChanged(SUsbHostDeviceInfo *changedDevice, SUsbHostDeviceStatus status) { diff --git a/src/playback/MusicControllerImpl.h b/src/playback/MusicControllerImpl.h index 6db31e8..e9ba9f2 100644 --- a/src/playback/MusicControllerImpl.h +++ b/src/playback/MusicControllerImpl.h @@ -98,6 +98,10 @@ public: bool SetRepeatState(ERepeatStatus state); ERepeatStatus RepeatState(void); + void ChangePlayerMode(EPlayerMode mode); + void HandlePlaylistEditButtons(EPlayerEditBtns btnId); + void HandleRemoteButtons(Evas_Object *eoBtn, EPlayerBtnsEvent ev); + public: virtual void OnStatusChanged(SUsbHostDeviceInfo *changedDevice, SUsbHostDeviceStatus status); diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index e11ed1c..fc05009 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -324,4 +324,25 @@ ERepeatStatus CMusicController::RepeatState(void) } +void CMusicController::ChangePlayerMode(EPlayerMode mode) +{ + ASSERT(m); + + m->ref.ChangePlayerMode(mode); +} + + +void CMusicController::HandlePlaylistEditButtons(EPlayerEditBtns editBtn) +{ + ASSERT(m); + + m->ref.HandlePlaylistEditButtons(editBtn); +} + + +void CMusicController::HandleRemoteButtons(Evas_Object *eoBtn, EPlayerBtnsEvent ev) +{ + ASSERT(m); + m->ref.HandleRemoteButtons(eoBtn, ev); +} \ No newline at end of file diff --git a/src/playback/volume-control.cpp b/src/playback/volume-control.cpp index 339f4b8..2d4da2f 100644 --- a/src/playback/volume-control.cpp +++ b/src/playback/volume-control.cpp @@ -15,10 +15,10 @@ */ #include -#include #include #include #include "dbg.h" +#include #define VOLUME_MUTE 1 diff --git a/src/views/ErrorPopupWindow.cpp b/src/views/ErrorPopupWindow.cpp new file mode 100644 index 0000000..27283ca --- /dev/null +++ b/src/views/ErrorPopupWindow.cpp @@ -0,0 +1,46 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "i18n.h" +#include "define.h" +#include "dbg.h" +#include +#include "common.h" +#include "ErrorPopupWindow.h" + + +#define NUM_BTNS 1 + +static const char *btnText[NUM_BTNS] = { + _(MUSIC_TEXT_OK), +}; + +void CErrorPopupWindow::t_OnConfiguration(void) +{ + t_SetParams(_("Error"), NULL, _(m_msg), NUM_BTNS, (const char **)btnText); +} + +bool CErrorPopupWindow::Create(Evas_Object* base, const SCallback* callback, const char *msg) +{ + m_msg = msg; + + if (!CMessagePopup::Create(base, callback)) { + _ERR("Creation of remove popup failed"); + return false; + } + + return true; +} \ No newline at end of file diff --git a/src/views/ErrorPopupWindow.h b/src/views/ErrorPopupWindow.h new file mode 100644 index 0000000..9cbb9fb --- /dev/null +++ b/src/views/ErrorPopupWindow.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __ERROR_POPUP_WINDOW_H__ +#define __ERROR_POPUP_WINDOW_H__ + +class CErrorPopupWindow : public CMessagePopup { +private: + const char *m_msg; + +protected: + virtual void t_OnConfiguration(void); + +public: + bool Create(Evas_Object* base, const SCallback* callback, const char *msg); +}; + + +#endif // __REMOVE_POPUP_WINDOW_H__ \ No newline at end of file diff --git a/src/views/PlaybackController.cpp b/src/views/PlaybackController.cpp new file mode 100644 index 0000000..7221ef4 --- /dev/null +++ b/src/views/PlaybackController.cpp @@ -0,0 +1,843 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "define.h" +#include "common.h" +#include "dbg.h" +#include + +#include "song_info.h" +#include "music-controller.h" +#include "i18n.h" +#include "common-ui.h" +#include "PlaySettingCtxPopup.h" +#include "ErrorPopupWindow.h" +#include "Info.h" +#include "PlaybackController.h" + + +#define TOTAL_CONTROL_BTNS 6 +#define TOTAL_EDIT_BTNS 3 +#define LP_INTERVAL 0.5 /* seconds */ +#define WAIT_INTERVAL 0.5 /* seconds */ +#define LP_CHANGE 10000 /* milli seconds */ + +enum EEvasObject { + EO_CANCEL, + EO_DESELECT, + EO_DELETE, // TOTAL_EDIT_BTNS + + EO_BTN_SETTINGS, + EO_BTN_SHUFFLE, + EO_BTN_REPEAT, + EO_BTN_REWIND, + EO_BTN_PLAY, + EO_BTN_FORWARD, // TOTAL_CONTROL_BTNS +}; + +struct SBtnInfo { + const char *txt; + const char *part; + EEvasObject type; +}; + +enum ESettingBtns { + BTN_EDIT, + BTN_CLEAR +}; + +enum ETimers { + TIMER_WAIT, + TIMER_LONGPRESS, + TIMER_VOLUME +}; + +enum EPressTypes { + PRESS_SHORT, + PRESS_SHORT_PAUSE, + PRESS_LONG, + PRESS_LONG_PAUSE, +}; + +struct SPlaybackController { + Evas_Object *eoBase; + CPlaySettingCtxPopup *eoCtxPopup; + CErrorPopupWindow *eoErrPopup; + Evas_Object *eoPressedObj; + + Evas_Object *eoBtnControl[TOTAL_CONTROL_BTNS]; + Evas_Object *eoBtnEdit[TOTAL_EDIT_BTNS]; + + Ecore_Timer *etWait; + Ecore_Timer *etLongPress; + + CMusicController controller; + EPressTypes press_status; + + CPlaybackController::SCallback cb; + + CSongInfo *pSongInfo; + int duration; + + SPlaybackController() { + memset(this, 0, sizeof(SPlaybackController)); + } +}; + + +void CPlaybackController::sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text) +{ + CPlaybackController *root = (CPlaybackController *)cookie; + if (root) + root->m_OnCtxPopupBtnSelected(instance, text); +} + + +void CPlaybackController::m_OnCtxPopupBtnSelected(CContextPopup* instance, const char* text) +{ + int type = CInfo::PlaybackSettingType(); + + switch (type) { + case BTN_EDIT: + m->controller.ChangePlayerMode(MODE_PLAYLIST_EDIT); + break; + + case BTN_CLEAR: + m->controller.Stop(); + m->controller.EmptyPlaylist(); + break; + + default: + break; + } +} + + +void CPlaybackController::sm_CbErrorPopupBtnSelected(void* cookie, CMessagePopup *instance) +{ + CPlaybackController *root = (CPlaybackController *)cookie; + if (root) + root->m_OnErrorPopupBtnSelected(instance); +} + + +void CPlaybackController::m_OnErrorPopupBtnSelected(CMessagePopup *instance) +{ + m_DestroyErrorPopup(); + elm_object_focus_set(m->eoBtnControl[CTRL_BTN_PLAY], EINA_TRUE); +} + + +Eina_Bool CPlaybackController::sm_CbWaitTimer(void *dt) +{ + CPlaybackController *root = (CPlaybackController *)dt; + if (root) + root->m_OnWaitTimer(); + + return ECORE_CALLBACK_CANCEL; +} + + +void CPlaybackController::m_OnWaitTimer(void) +{ + m->press_status = PRESS_LONG; + if (m->controller.PlayState() == PLAY_STATUS_PLAY) { + /* Handle long press */ + m->controller.Pause(); + m->etLongPress = ecore_timer_add(LP_INTERVAL, sm_CbLongpressTimer, this); + } + else { + m->press_status = PRESS_LONG_PAUSE; + } + + m->etWait = NULL; +} + + +Eina_Bool CPlaybackController::sm_CbLongpressTimer(void *dt) +{ + CPlaybackController *root = (CPlaybackController *)dt; + if (root) + root->m_OnLongpressTimer(); + + return ECORE_CALLBACK_RENEW; +} + + +void CPlaybackController::m_OnLongpressTimer(void) +{ + m_HandleOnRepeated(); +} + + +void CPlaybackController::m_AddControlButtons(void) +{ + Evas_Object *box = NULL; + int i; + SBtnInfo btninfo[TOTAL_CONTROL_BTNS]; + + btninfo[CTRL_BTN_SETTINGS].txt = MUSIC_STYLE_BTN_SETTINGS; + btninfo[CTRL_BTN_SETTINGS].type = EO_BTN_SETTINGS; + + btninfo[CTRL_BTN_SHUFFLE].txt = MUSIC_STYLE_BTN_SHUFFLE; + btninfo[CTRL_BTN_SHUFFLE].type = EO_BTN_SHUFFLE; + + btninfo[CTRL_BTN_REPEAT].txt = MUSIC_STYLE_BTN_REPEAT; + btninfo[CTRL_BTN_REPEAT].type = EO_BTN_REPEAT; + + btninfo[CTRL_BTN_REWIND].txt = MUSIC_STYLE_BTN_REWIND; + btninfo[CTRL_BTN_REWIND].type = EO_BTN_REWIND; + + btninfo[CTRL_BTN_PLAY].txt = MUSIC_STYLE_BTN_PLAY; + btninfo[CTRL_BTN_PLAY].type = EO_BTN_PLAY; + + btninfo[CTRL_BTN_FORWARD].txt = MUSIC_STYLE_BTN_FORWARD; + btninfo[CTRL_BTN_FORWARD].type = EO_BTN_FORWARD; + + box = elm_box_add(m->eoBase); + if (!box) + return; + + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0); + elm_box_horizontal_set(box, EINA_TRUE); + elm_box_padding_set(box, + MUSIC_CONTROL_BTNS_PADDING * elm_config_scale_get(), 0); + + for (i = 0; i < TOTAL_CONTROL_BTNS; i++) { + m->eoBtnControl[i] = elm_button_add(m->eoBase); + if (!m->eoBtnControl[i]) + continue; + + elm_object_style_set(m->eoBtnControl[i], btninfo[i].txt); + evas_object_size_hint_weight_set(m->eoBtnControl[i], + EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(box, m->eoBtnControl[i]); + + if (i == CTRL_BTN_REWIND || i == CTRL_BTN_FORWARD) { + Connect(m->eoBtnControl[i], btninfo[i].type, TYPE_PRESSED | TYPE_UNPRESSED | TYPE_MOUSE_MOVE); + } + else { + Connect(m->eoBtnControl[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE); + } + evas_object_show(m->eoBtnControl[i]); + } + + elm_object_part_content_set(m->eoBase, MUSIC_PART_CONTROLBTNS, box); +} + + +void CPlaybackController::m_AddEditPlaylistButtons(void) +{ + Evas_Object *box = NULL; + int i; + SBtnInfo btninfo[TOTAL_EDIT_BTNS]; + + btninfo[EDIT_BTN_CANCEL].txt = MUSIC_TEXT_CANCEL; + btninfo[EDIT_BTN_CANCEL].type = EO_CANCEL; + + btninfo[EDIT_BTN_DESELECT].txt = MUSIC_TEXT_DESELECT; + btninfo[EDIT_BTN_DESELECT].type = EO_DESELECT; + + btninfo[EDIT_BTN_DELETE].txt = MUSIC_TEXT_DELETE; + btninfo[EDIT_BTN_DELETE].type = EO_DELETE; + + box = CCommonUI::AddBox(m->eoBase); + if (!box) + return; + + elm_box_horizontal_set(box, EINA_TRUE); + elm_box_padding_set(box, MUSIC_EDIT_BTNS_PADDING * elm_config_scale_get(), 0); + + for (i = 0; i < TOTAL_EDIT_BTNS; i++) { + m->eoBtnEdit[i] = elm_button_add(m->eoBase); + if (!m->eoBtnEdit[i]) + continue; + + elm_object_style_set(m->eoBtnEdit[i], MUSIC_STYLE_EDIT_BTN); + evas_object_size_hint_weight_set(m->eoBtnEdit[i], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(box, m->eoBtnEdit[i]); + elm_object_text_set(m->eoBtnEdit[i], _(btninfo[i].txt)); + + Connect(m->eoBtnEdit[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE); + + evas_object_show(m->eoBtnEdit[i]); + } + elm_object_part_content_set(m->eoBase, MUSIC_PART_EDITBTNS, box); + elm_object_signal_emit(m->eoBase, MUSIC_SIGNAL_PLAYBACK_MODE, MUSIC_PLAYBACK_VIEW); +} + + +void CPlaybackController::m_UpdateForEmptySong(void) +{ + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_PLAY], + MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); + elm_object_focus_set(m->eoBtnControl[CTRL_BTN_SETTINGS], EINA_TRUE); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_REPEAT], + m->eoBtnControl[CTRL_BTN_REPEAT], ELM_FOCUS_RIGHT); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_FORWARD], EINA_TRUE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_REWIND], EINA_TRUE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_PLAY], EINA_TRUE); +} + + +void CPlaybackController::m_CreateErrorPopup(void) +{ + CMessagePopup::SCallback cb; + cb.cookie = this; + cb.onBtn1Pressed = sm_CbErrorPopupBtnSelected; + + m->eoErrPopup = new CErrorPopupWindow; + m->eoErrPopup->Create(m->eoBase, &cb, MUSIC_TEXT_PLAYBACK_ERROR); + + + return; +} + + +void CPlaybackController::m_DestroyErrorPopup(void) +{ + if (!m->eoErrPopup) + return; + + if (m->eoErrPopup->FlagCreate()) + m->eoErrPopup->Destroy(); + + delete m->eoErrPopup; + m->eoErrPopup = NULL; +} + + +void CPlaybackController::m_CreateSettingsPopup(void) +{ + CContextPopup::SCallback cb; + cb.cookie = this; + cb.onSelected = sm_CbCtxPopupBtnSelected; + + m->eoCtxPopup = new CPlaySettingCtxPopup; + m->eoCtxPopup->Create(m->eoBase, &cb); +} + + +void CPlaybackController::m_DestroySettingsPopup(void) +{ + if (!m->eoCtxPopup) + return; + + if (m->eoCtxPopup->FlagCreate()) + m->eoCtxPopup->Destroy(); + + delete m->eoCtxPopup; + m->eoCtxPopup = NULL; +} + + +void CPlaybackController::m_HandleForwardBtnClicked(Evas_Object *obj) +{ + elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, + MUSIC_PLAYBACK_VIEW); + + if (m->controller.PlayState() == PLAY_STATUS_STOP) + return; + + if (!m->controller.PlayNextSong()) { + _ERR(" music play next song failed "); + return; + } +} + + +void CPlaybackController::m_HandleRewindBtnClicked(Evas_Object *obj) +{ + elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, + MUSIC_PLAYBACK_VIEW); + + if (m->controller.PlayState() == PLAY_STATUS_STOP) + return; + + if (!m->controller.PlayPreviousSong()) { + _ERR(" music play previous song failed "); + return; + } +} + + +void CPlaybackController::m_HandleOnRepeated(void) +{ + Evas_Object *obj = NULL; + int value; + char *timestr = NULL; + + if (!m->eoPressedObj) + return; + + obj = m->eoPressedObj; + + + m->controller.GetPosition(&value); + + if (obj == m->eoBtnControl[CTRL_BTN_REWIND]) { + if (value == 0) { + m_RemoveTimer(TIMER_LONGPRESS); + return; + } + value = value - LP_CHANGE; + if (value <= 0) + value = 0; + } + else { + if (value == m->duration) { + m->controller.PlayNextSong(); + + m->press_status = PRESS_LONG_PAUSE; + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_PLAY], MUSIC_SIGNAL_PAUSE, + MUSIC_PLAYBACK_VIEW); + m->controller.Pause(); + m_RemoveTimer(TIMER_LONGPRESS); + + return; + } + value = value + LP_CHANGE; + if (value >= m->duration) + value = m->duration; + } + + m->controller.SetPosition(value); + timestr = CCommonUI::TimeStrFromMilSeconds(value); + if (timestr) { + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, + timestr); + free(timestr); + } + + return; +} + + +void CPlaybackController::m_RemoveTimer(int timer_code) +{ + ETimers timerCode = (ETimers)timer_code; + + switch (timerCode) { + case TIMER_WAIT: + if (m->etWait) { + ecore_timer_del(m->etWait); + m->etWait = NULL; + } + break; + + case TIMER_LONGPRESS: + if (m->etLongPress) { + ecore_timer_del(m->etLongPress); + m->etLongPress = NULL; + } + break; + + default: + _ERR(" invalid value "); + break; + } +} + + +void CPlaybackController::m_UpdateSongInfo(void) +{ + CSongInfo *sinfo = NULL; + int index; + + if (!m->controller.GetCurrentSongIndex(&index)) { + _ERR(" music get current song index failed "); + return; + } + + if (!m->controller.GetSonginfoFromIndex(index, &sinfo)) { + _ERR(" music get songinfo failed "); + return; + } + m->pSongInfo = sinfo; +} + + +void CPlaybackController::m_HandleOnPressed(Evas_Object *obj) +{ + m->press_status = PRESS_SHORT; + m->eoPressedObj = obj; + + m->etWait = ecore_timer_add(WAIT_INTERVAL, sm_CbWaitTimer, this); +} + + +void CPlaybackController::m_HandleOnUnpressed(Evas_Object *obj) +{ + m_RemoveTimer(TIMER_WAIT); + m_RemoveTimer(TIMER_LONGPRESS); + + if (m->press_status == PRESS_SHORT) { + /* Handle song change */ + if (m->controller.PlayState() == PLAY_STATUS_PLAY) + m->controller.Pause(); + + if (obj == m->eoBtnControl[CTRL_BTN_FORWARD]) + m_HandleForwardBtnClicked(obj); + else + m_HandleRewindBtnClicked(obj); + + if (m->controller.PlayState() != PLAY_STATUS_PLAY) + m->controller.Resume(); + } + else if (m->press_status == PRESS_LONG) { + if (m->controller.PlayState() != PLAY_STATUS_PLAY) + m->controller.Resume(); + } + + m->press_status = PRESS_SHORT; +} + + +bool CPlaybackController::Create(Evas_Object *eoBase, SCallback *cb) +{ + ASSERT(!m); + + _CREATE_BEGIN{ + _CHECK(m = new SPlaybackController) + _COMMAND{ m->eoBase = eoBase; } + _CHECK(m->controller.Create()) + _CHECK(m->controller.AddListener(this)) + + _WHEN_SUCCESS{ + m_AddControlButtons(); + m_AddEditPlaylistButtons(); + m->cb = *cb; + m->press_status = PRESS_SHORT; + } + + _CHECK_FAIL{ m->controller.RemoveListener(this); } + _CHECK_FAIL{ m->controller.Destroy(); } + + _CHECK_FAIL{ delete m; m = NULL; } + } _CREATE_END_AND_CATCH{ return false; } + + return true; +} + + +void CPlaybackController::Destroy(void) +{ + ASSERT(m); + + m_DestroyErrorPopup(); + m_DestroySettingsPopup(); + m->controller.RemoveListener(this); + + delete m; + m = NULL; +} + + +void CPlaybackController::Update(void) +{ + int state; + + state = m->controller.PlayState(); + switch (state) { + case PLAY_STATUS_INITIAL: + // Initial State, Do nothing + break; + + case PLAY_STATUS_STOP: + if (!m->eoErrPopup) + elm_object_focus_set(m->eoBtnControl[CTRL_BTN_PLAY], EINA_TRUE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_FORWARD], EINA_TRUE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_REWIND], EINA_TRUE); + break; + + case PLAY_STATUS_PLAY: + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_FORWARD], EINA_FALSE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_REWIND], EINA_FALSE); + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_PLAY], + MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); + break; + + case PLAY_STATUS_PAUSE: + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_FORWARD], EINA_FALSE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_REWIND], EINA_FALSE); + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_PLAY], + MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); + break; + + default: + ASSERT(!"Invalid State"); + break; + } + + state = m->controller.ShuffleState(); + switch (state) { + case SHUFFLE_STATUS_OFF: + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_SHUFFLE], + MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); + break; + + case SHUFFLE_STATUS_ON: + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_SHUFFLE], + MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); + break; + + default: + ASSERT(!"Invalid State"); + break; + } + + state = m->controller.RepeatState(); + switch (state) { + case REPEAT_STATUS_NONE: + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_REPEAT], + MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); + break; + + case REPEAT_STATUS_ALL: + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_REPEAT], + MUSIC_SIGNAL_REPEAT_ALL, MUSIC_PLAYBACK_VIEW); + break; + + case REPEAT_STATUS_ONE: + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_REPEAT], + MUSIC_SIGNAL_REPEAT_ONE, MUSIC_PLAYBACK_VIEW); + break; + + default: + ASSERT(!"Invalid State"); + break; + } +} + + +Evas_Object *CPlaybackController::ControlBtnsObject(EPlayerControlBtns id) +{ + ASSERT(m); + return m->eoBtnControl[id]; +} + + +Evas_Object *CPlaybackController::EditBtnsObject(EPlayerEditBtns id) +{ + ASSERT(m); + return m->eoBtnEdit[id]; +} + + +void CPlaybackController::OnComplete(void) +{ +} + + +void CPlaybackController::OnStartPlayback(void) +{ + m_UpdateSongInfo(); + m->duration = m->pSongInfo->Duration(); +} + + +void CPlaybackController::OnStopPlayback(void) +{ +} + + +void CPlaybackController::OnPausePlayback(void) +{ +} + + +void CPlaybackController::OnResumePlayback(void) +{ +} + + +void CPlaybackController::OnPosition(int milsec) +{ +} + + +void CPlaybackController::OnError(void) +{ + m_CreateErrorPopup(); +} + + +void CPlaybackController::OnEmptyPlaylist(void) +{ + m_UpdateForEmptySong(); +} + + +void CPlaybackController::OnRemoteButtonEvent(Evas_Object *eoBtn, EPlayerBtnsEvent ev) +{ + switch (ev) { + case EVENT_PRESSED: + m_HandleOnPressed(eoBtn); + break; + + case EVENT_UNPRESSED: + m_HandleOnUnpressed(eoBtn); + break; + + default: + ASSERT(!"Invalid Event."); + break; + } +} + + +void CPlaybackController::OnPressed(int id, Evas_Object *obj) +{ + switch (id) { + case EO_BTN_FORWARD: + case EO_BTN_REWIND: + m_HandleOnPressed(obj); + break; + + default: + break; + } +} + + +void CPlaybackController::OnUnpressed(int id, Evas_Object *obj) +{ + switch (id) { + case EO_BTN_FORWARD: + case EO_BTN_REWIND: + m_HandleOnUnpressed(obj); + break; + + default: + break; + } +} + + +void CPlaybackController::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) +{ + switch (id) { + case EO_CANCEL: + case EO_DESELECT: + case EO_DELETE: + case EO_BTN_FORWARD: + case EO_BTN_PLAY: + case EO_BTN_REPEAT: + case EO_BTN_REWIND: + case EO_BTN_SETTINGS: + case EO_BTN_SHUFFLE: + if (!elm_object_focus_get(obj)) + elm_object_focus_set(obj, EINA_TRUE); + break; + + default: + break; + } +} + + +void CPlaybackController::OnMouseClicked(int id, Evas_Object *obj) +{ + switch (id) { + case EO_CANCEL: + m->controller.HandlePlaylistEditButtons(EDIT_BTN_CANCEL); + m->controller.ChangePlayerMode(MODE_PLAYBACK); + + break; + + case EO_DESELECT: + m->controller.HandlePlaylistEditButtons(EDIT_BTN_DESELECT); + elm_object_focus_set(m->eoBtnEdit[EDIT_BTN_CANCEL], EINA_TRUE); + break; + + case EO_DELETE: + m->controller.HandlePlaylistEditButtons(EDIT_BTN_DELETE); + break; + + case EO_BTN_SETTINGS: + elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); + + if (m->cb.OnCurrentSongCount && + m->cb.OnCurrentSongCount(m->cb.cookie) == 0) + return; + + elm_object_signal_emit(obj, MUSIC_SIGNAL_CONTROL_SELECTED, MUSIC_PLAYBACK_VIEW); + m_DestroySettingsPopup(); + m_CreateSettingsPopup(); + break; + + case EO_BTN_SHUFFLE: + elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); + + switch (m->controller.ShuffleState()) { + case SHUFFLE_STATUS_OFF: + m->controller.SetShuffleState(SHUFFLE_STATUS_ON); + elm_object_signal_emit(obj, MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); + break; + + default: + m->controller.SetShuffleState(SHUFFLE_STATUS_OFF); + elm_object_signal_emit(obj, MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); + break; + } + break; + + case EO_BTN_REPEAT: + elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); + + switch (m->controller.RepeatState()) { + case REPEAT_STATUS_NONE: + m->controller.SetRepeatState(REPEAT_STATUS_ALL); + elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_ALL, MUSIC_PLAYBACK_VIEW); + break; + + case REPEAT_STATUS_ALL: + m->controller.SetRepeatState(REPEAT_STATUS_ONE); + elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_ONE, MUSIC_PLAYBACK_VIEW); + break; + + default: + m->controller.SetRepeatState(REPEAT_STATUS_NONE); + elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); + break; + } + break; + + case EO_BTN_PLAY: + elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); + + switch (m->controller.PlayState()) { + case PLAY_STATUS_PAUSE: + m->controller.Resume(); + elm_object_signal_emit(obj, MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); + break; + + case PLAY_STATUS_PLAY: + elm_object_signal_emit(obj, MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); + m->controller.Pause(); + break; + + default: + m->controller.Start(); + break; + } + break; + + default: + break; + } +} \ No newline at end of file diff --git a/src/views/PlaybackController.h b/src/views/PlaybackController.h new file mode 100644 index 0000000..e9dbd9e --- /dev/null +++ b/src/views/PlaybackController.h @@ -0,0 +1,101 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef __PLAYBACK_CONTROLLER_H__ +#define __PLAYBACK_CONTROLLER_H__ + +class CPlaybackController : + public CListenerMgr, + public IMusicControllerListener, + public IPressedListener, + public IUnpressedListener, + public IMouseMoveListener, + public IMouseClickedListener { +public: + struct SCallback { + void *cookie; + int(*OnCurrentSongCount)(void *cookie); + }; + +private: + struct SPlaybackController *m; + +private: + static void sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text); + void m_OnCtxPopupBtnSelected(CContextPopup* instance, const char* text); + + static void sm_CbErrorPopupBtnSelected(void* cookie, CMessagePopup *instance); + void m_OnErrorPopupBtnSelected(CMessagePopup *instance); + + static Eina_Bool sm_CbWaitTimer(void *dt); + void m_OnWaitTimer(void); + + static Eina_Bool sm_CbLongpressTimer(void *dt); + void m_OnLongpressTimer(void); + +private: + void m_AddControlButtons(void); + void m_AddEditPlaylistButtons(void); + void m_CreateErrorPopup(void); + void m_DestroyErrorPopup(void); + void m_CreateSettingsPopup(void); + void m_DestroySettingsPopup(void); + void m_UpdateForEmptySong(void); + + void m_HandleForwardBtnClicked(Evas_Object *obj); + void m_HandleRewindBtnClicked(Evas_Object *obj); + void m_HandleOnRepeated(void); + void m_HandleOnPressed(Evas_Object *obj); + void m_HandleOnUnpressed(Evas_Object *obj); + + void m_RemoveTimer(int timer_code); + void m_UpdateSongInfo(void); + +public: + CPlaybackController() : + IPressedListener(this), + IUnpressedListener(this), + IMouseMoveListener(this), + IMouseClickedListener(this), + m(0) {} + virtual ~CPlaybackController() {} + + bool Create(Evas_Object *eoBase, SCallback *cb); + virtual void Destroy(void); + + void Update(void); + + Evas_Object *ControlBtnsObject(EPlayerControlBtns id); + Evas_Object *EditBtnsObject(EPlayerEditBtns id); + +public: + virtual void OnComplete(void); + virtual void OnStartPlayback(void); + virtual void OnStopPlayback(void); + virtual void OnPausePlayback(void); + virtual void OnResumePlayback(void); + virtual void OnPosition(int milsec); + virtual void OnError(void); + virtual void OnEmptyPlaylist(void); + virtual void OnRemoteButtonEvent(Evas_Object *eoBtn, EPlayerBtnsEvent ev); + + virtual void OnPressed(int id, Evas_Object *obj); + virtual void OnUnpressed(int id, Evas_Object *obj); + virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev); + virtual void OnMouseClicked(int id, Evas_Object *obj); +}; + +#endif // __PLAYBACK_CONTROLLER_H__ \ No newline at end of file diff --git a/src/views/RemovePopupWindow.cpp b/src/views/RemovePopupWindow.cpp index 0775e45..8ca93e0 100644 --- a/src/views/RemovePopupWindow.cpp +++ b/src/views/RemovePopupWindow.cpp @@ -24,7 +24,7 @@ #define NUM_BTNS 2 -const char *btnText[NUM_BTNS] = { +static const char *btnText[NUM_BTNS] = { _(MUSIC_TEXT_REMOVE), _(MUSIC_TEXT_CANCEL) }; diff --git a/src/views/SliderWidget.cpp b/src/views/SliderWidget.cpp new file mode 100644 index 0000000..b3362d7 --- /dev/null +++ b/src/views/SliderWidget.cpp @@ -0,0 +1,293 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "define.h" +#include "common.h" +#include "dbg.h" +#include + +#include "song_info.h" +#include "music-controller.h" +#include "i18n.h" +#include "common-ui.h" +#include "SliderWidget.h" + + +#define S_INCREMENT 1000 /* milli seconds */ +#define S_INTERVAL 1 /* seconds */ +#define SLIDER_STEP 5000 /* milli seconds */ + + +struct SSliderWidget { + Evas_Object *eoSlider; + Evas_Object *eoBase; + + Ecore_Timer *etSlider; + + CSongInfo *pSongInfo; + + CMusicController controller; + + SSliderWidget() { + eoSlider = NULL; + eoBase = NULL; + etSlider = NULL; + pSongInfo = NULL; + } +}; + + +Eina_Bool CSliderWidget::sm_CbUpdateSlider(void *dt) +{ + CSliderWidget *root = (CSliderWidget*)dt; + Eina_Bool ret = ECORE_CALLBACK_CANCEL; + + if (root) + ret = root->m_OnUpdateSlider(); + + return ret; +} + + +Eina_Bool CSliderWidget::m_OnUpdateSlider(void) +{ + char *timestr = NULL; + int value; + int duration; + + if (!m->controller.GetPosition(&value)) { + m->etSlider = NULL; + return ECORE_CALLBACK_CANCEL; + } + + m_UpdateSongInfo(); + + duration = m->pSongInfo->Duration(); + + value = value + S_INCREMENT; + if (value > duration) { + m->etSlider = NULL; + return ECORE_CALLBACK_CANCEL; + } + + elm_slider_value_set(m->eoSlider, value); + timestr = CCommonUI::TimeStrFromMilSeconds(value); + if (timestr) { + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, + timestr); + free(timestr); + } + + return ECORE_CALLBACK_RENEW; +} + + +bool CSliderWidget::m_AddSlider(void) +{ + Evas_Object *eoSlider = NULL; + + eoSlider = elm_slider_add(m->eoBase); + if (!eoSlider) + return false; + + elm_slider_indicator_show_set(eoSlider, EINA_FALSE); + elm_slider_indicator_show_on_focus_set(eoSlider, EINA_FALSE); + elm_object_style_set(eoSlider, MUSIC_STYLE_SLIDER); + elm_slider_horizontal_set(eoSlider, EINA_TRUE); + elm_object_part_content_set(m->eoBase, MUSIC_PART_PROGRESSBAR, eoSlider); + + Connect(eoSlider, TYPE_CHANGED | TYPE_MOUSE_MOVE); + + evas_object_show(eoSlider); + m->eoSlider = eoSlider; + + return true; +} + + +void CSliderWidget::m_RemoveTimer(void) +{ + if (m->etSlider) { + ecore_timer_del(m->etSlider); + m->etSlider = NULL; + } +} + + +void CSliderWidget::m_UpdateSongInfo(void) +{ + CSongInfo *sinfo = NULL; + int index; + + if (!m->controller.GetCurrentSongIndex(&index)) { + _ERR(" music get current song index failed "); + return; + } + + if (!m->controller.GetSonginfoFromIndex(index, &sinfo)) { + _ERR(" music get songinfo failed "); + return; + } + m->pSongInfo = sinfo; +} + + +bool CSliderWidget::Create(Evas_Object *eoBase) +{ + ASSERT(!m); + + _CREATE_BEGIN{ + _CHECK(m = new SSliderWidget) + _COMMAND{ m->eoBase = eoBase; } + _CHECK(m->controller.Create()) + _CHECK(m->controller.AddListener(this)) + _CHECK(m_AddSlider()) + + _CHECK_FAIL{} + _CHECK_FAIL{ m->controller.RemoveListener(this); } + _CHECK_FAIL{ m->controller.Destroy(); } + _CHECK_FAIL{ delete m; m = NULL; } + } _CREATE_END_AND_CATCH{ return false; } + + return true; +} + + +void CSliderWidget::Destroy(void) +{ + ASSERT(m); + + m->controller.RemoveListener(this); + m_RemoveTimer(); + + delete m; + m = NULL; +} + + +Evas_Object* CSliderWidget::Base(void) +{ + ASSERT(m); + + return m->eoSlider; +} + + +void CSliderWidget::Init(void) +{ + elm_object_disabled_set(m->eoSlider, EINA_TRUE); + elm_slider_value_set(m->eoSlider, 0); + elm_object_part_text_set(m->eoBase, MUSIC_PART_FULLTIME, "00:00"); + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); +} + + +void CSliderWidget::OnComplete(void) +{ +} + + +void CSliderWidget::OnStartPlayback(void) +{ + int duration; + char *timestr = NULL; + double step; + + elm_slider_value_set(m->eoSlider, 0); + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); + + elm_object_disabled_set(m->eoSlider, EINA_FALSE); + + m_UpdateSongInfo(); + duration = m->pSongInfo->Duration(); + + m_RemoveTimer(); + m->etSlider = ecore_timer_add(S_INTERVAL, sm_CbUpdateSlider, this); + + elm_slider_min_max_set(m->eoSlider, 0, duration); + timestr = CCommonUI::TimeStrFromMilSeconds(duration); + if (timestr) { + elm_object_part_text_set(m->eoBase, + MUSIC_PART_FULLTIME, timestr); + free(timestr); + } + + step = (double)SLIDER_STEP / (double)duration; + elm_slider_step_set(m->eoSlider, step); +} + + +void CSliderWidget::OnStopPlayback(void) +{ + elm_slider_value_set(m->eoSlider, 0); + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); + + elm_object_disabled_set(m->eoSlider, EINA_TRUE); + m_RemoveTimer(); +} + + +void CSliderWidget::OnPausePlayback(void) +{ + if (m->etSlider) + ecore_timer_freeze(m->etSlider); +} + + +void CSliderWidget::OnResumePlayback(void) +{ + if (m->etSlider) + ecore_timer_thaw(m->etSlider); +} + + +void CSliderWidget::OnPosition(int milsec) +{ + elm_slider_value_set(m->eoSlider, milsec); +} + + +void CSliderWidget::OnChanged(int id, Evas_Object *obj) +{ + char *timestr = NULL; + int value; + + if (m->controller.PlayState() == PLAY_STATUS_PLAY) { + if (m->etSlider) + ecore_timer_freeze(m->etSlider); + } + + value = elm_slider_value_get(obj); + m->controller.SetPosition(value); + timestr = CCommonUI::TimeStrFromMilSeconds(value); + if (timestr) { + elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, + timestr); + free(timestr); + } + + if (m->controller.PlayState() == PLAY_STATUS_PLAY) { + if (m->etSlider) + ecore_timer_thaw(m->etSlider); + } +} + + +void CSliderWidget::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) +{ + if (!elm_object_focus_get(obj)) + elm_object_focus_set(obj, EINA_TRUE); +} \ No newline at end of file diff --git a/src/views/SliderWidget.h b/src/views/SliderWidget.h new file mode 100644 index 0000000..78637ff --- /dev/null +++ b/src/views/SliderWidget.h @@ -0,0 +1,68 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef __SLIDER_WIDGET_H__ +#define __SLIDER_WIDGET_H__ + +class CSliderWidget : + public CListenerMgr, + public IMusicControllerListener, + public IMouseMoveListener, + public IChangedListener { +private: + struct SSliderWidget *m; + +private: + static Eina_Bool sm_CbUpdateSlider(void *dt); + Eina_Bool m_OnUpdateSlider(void); + + bool m_AddSlider(void); + void m_RemoveTimer(void); + + void m_UpdateSongInfo(void); + +public: + CSliderWidget() : + IMouseMoveListener(this), + IChangedListener(this), + m(0) {} + virtual ~CSliderWidget() {} + + bool Create(Evas_Object *eoParent); + virtual void Destroy(void); + + Evas_Object* Base(void); + + void Init(void); + + //! This function is invoked when playback is complete. + virtual void OnComplete(void); + //! This function is invoked when new song is played. + virtual void OnStartPlayback(void); + //! + virtual void OnStopPlayback(void); + //! This function is invoked when playback is paused. + virtual void OnPausePlayback(void); + //! This function is invoked when playback is resumed. + virtual void OnResumePlayback(void); + //! + virtual void OnPosition(int milsec); + + virtual void OnChanged(int id, Evas_Object *obj); + virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev); +}; + +#endif // __PLAYBACK_VIEW_H__ \ No newline at end of file diff --git a/src/views/Timer.cpp b/src/views/Timer.cpp new file mode 100644 index 0000000..efde40a --- /dev/null +++ b/src/views/Timer.cpp @@ -0,0 +1,103 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the License); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an AS IS BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + + +#include "define.h" +#include "common.h" +#include "dbg.h" +#include +#include "Timer.h" + + +struct STimer { + int count; + int s, e; + struct SCookie { + Ecore_Timer *etTimer; + CTimer *root; + int id; + SCookie(CTimer *timer, int _id) { + root = timer; + id = _id; + } + }; + + Eina_List *elList; +}; + + +Eina_Bool CTimer::sm_CbTimer(void *data) +{ + STimer::SCookie *cookie = (STimer::SCookie*)data; + + if (cookie->root) + cookie->root->t_OnTimer(cookie->id); + + cookie->root->m->elList = eina_list_remove(cookie->root->m->elList, cookie); + + delete cookie; + + return EINA_FALSE; +} + + +void CTimer::t_OnTimer(int id) +{ +} + + +bool CTimer::Create(void) +{ + ASSERT(!m); + + m = new STimer; + if (!m) + return false; + + m->elList = NULL; + + return true; +} + + +void CTimer::Destroy(void) +{ + ASSERT(m); + + delete m; + m = NULL; +} + + +bool CTimer::SetTimer(int id, int ms) +{ + ASSERT(m); + + + STimer::SCookie *cookie = new STimer::SCookie(this, id); + if (!cookie) + return false; + + m->elList = eina_list_append(m->elList, cookie); + cookie->etTimer = ecore_timer_add(ms, sm_CbTimer, cookie); + return true; +} + + +void CTimer::KillTimer(int id) +{ + ASSERT(m); +} diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index f052b2a..e0b7f07 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -19,6 +19,7 @@ #include "dbg.h" #include +#include "Timer.h" #include "song_info.h" #include "album_info.h" #include "music-controller.h" @@ -30,415 +31,19 @@ #include "HandleVolume.h" #include "PlaySettingCtxPopup.h" #include "Info.h" +#include "SliderWidget.h" +#include "PlaybackController.h" #define TOTAL_CONTROL_BTNS 6 #define TOTAL_EDIT_BTNS 3 -#define S_INTERVAL 1 /* seconds */ -#define LP_INTERVAL 0.5 /* seconds */ -#define WAIT_INTERVAL 0.5 /* seconds */ -#define SLIDER_STEP 5000 /* milli seconds */ -#define LP_CHANGE 10000 /* milli seconds */ -#define S_INCREMENT 1000 /* milli seconds */ -// SSliderWidget -struct SSliderWidget { - Evas_Object *eoSlider; - Evas_Object *eoBase; - - Ecore_Timer *etSlider; - - CSongInfo *pSongInfo; - - CMusicController controller; - - SSliderWidget() { - eoSlider = NULL; - eoBase = NULL; - etSlider = NULL; - pSongInfo = NULL; - } -}; - - -Eina_Bool CSliderWidget::sm_CbUpdateSlider(void *dt) -{ - CSliderWidget *root = (CSliderWidget*)dt; - Eina_Bool ret = ECORE_CALLBACK_CANCEL; - - if (root) - ret = root->m_OnUpdateSlider(); - - return ret; -} - - -Eina_Bool CSliderWidget::m_OnUpdateSlider(void) -{ - char *timestr = NULL; - int value; - int duration; - - if (!m->controller.GetPosition(&value)) { - m->etSlider = NULL; - return ECORE_CALLBACK_CANCEL; - } - - m_UpdateSongInfo(); - - duration = m->pSongInfo->Duration(); - - value = value + S_INCREMENT; - if (value > duration) { - m->etSlider = NULL; - return ECORE_CALLBACK_CANCEL; - } - - elm_slider_value_set(m->eoSlider, value); - timestr = CCommonUI::TimeStrFromMilSeconds(value); - if (timestr) { - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, - timestr); - free(timestr); - } - - return ECORE_CALLBACK_RENEW; -} - - -bool CSliderWidget::m_AddSlider(void) -{ - Evas_Object *eoSlider = NULL; - - eoSlider = elm_slider_add(m->eoBase); - if (!eoSlider) - return false; - - elm_slider_indicator_show_set(eoSlider, EINA_FALSE); - elm_slider_indicator_show_on_focus_set(eoSlider, EINA_FALSE); - elm_object_style_set(eoSlider, MUSIC_STYLE_SLIDER); - elm_slider_horizontal_set(eoSlider, EINA_TRUE); - elm_object_part_content_set(m->eoBase, MUSIC_PART_PROGRESSBAR, eoSlider); - - Connect(eoSlider, TYPE_CHANGED | TYPE_MOUSE_MOVE); - - evas_object_show(eoSlider); - m->eoSlider = eoSlider; - - return true; -} - - -void CSliderWidget::m_RemoveTimer(void) -{ - if (m->etSlider) { - ecore_timer_del(m->etSlider); - m->etSlider = NULL; - } -} - - -void CSliderWidget::m_UpdateSongInfo(void) -{ - CSongInfo *sinfo = NULL; - int index; - - if (!m->controller.GetCurrentSongIndex(&index)) { - _ERR(" music get current song index failed "); - return; - } - - if (!m->controller.GetSonginfoFromIndex(index, &sinfo)) { - _ERR(" music get songinfo failed "); - return; - } - m->pSongInfo = sinfo; -} - - -bool CSliderWidget::Create(Evas_Object *eoBase) -{ - ASSERT(!m); - - _CREATE_BEGIN{ - _CHECK(m = new SSliderWidget) - _COMMAND{ m->eoBase = eoBase; } - _CHECK(m->controller.Create()) - _CHECK(m->controller.AddListener(this)) - _CHECK(m_AddSlider()) - - _CHECK_FAIL{} - _CHECK_FAIL{ m->controller.RemoveListener(this); } - _CHECK_FAIL{ m->controller.Destroy(); } - _CHECK_FAIL{ delete m; m = NULL; } - } _CREATE_END_AND_CATCH{ return false; } - - return true; -} - - -void CSliderWidget::Destroy(void) -{ - ASSERT(m); - - m->controller.RemoveListener(this); - m_RemoveTimer(); - - delete m; - m = NULL; -} - - -Evas_Object* CSliderWidget::Base(void) -{ - ASSERT(m); - - return m->eoSlider; -} - - -void CSliderWidget::Init(void) -{ - elm_object_disabled_set(m->eoSlider, EINA_TRUE); - elm_slider_value_set(m->eoSlider, 0); -} - - -void CSliderWidget::OnComplete(void) -{ -} - - -void CSliderWidget::OnStartPlayback(void) -{ - int duration; - char *timestr = NULL; - double step; - - elm_slider_value_set(m->eoSlider, 0); - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); - - elm_object_disabled_set(m->eoSlider, EINA_FALSE); - - m_UpdateSongInfo(); - duration = m->pSongInfo->Duration(); - - m_RemoveTimer(); - m->etSlider = ecore_timer_add(S_INTERVAL, sm_CbUpdateSlider, this); - - elm_slider_min_max_set(m->eoSlider, 0, duration); - timestr = CCommonUI::TimeStrFromMilSeconds(duration); - if (timestr) { - elm_object_part_text_set(m->eoBase, - MUSIC_PART_FULLTIME, timestr); - free(timestr); - } - - step = (double)SLIDER_STEP / (double)duration; - elm_slider_step_set(m->eoSlider, step); -} - - -void CSliderWidget::OnStopPlayback(void) -{ - elm_slider_value_set(m->eoSlider, 0); - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); - - elm_object_disabled_set(m->eoSlider, EINA_TRUE); - m_RemoveTimer(); -} - - -void CSliderWidget::OnPausePlayback(void) -{ - if (m->etSlider) - ecore_timer_freeze(m->etSlider); -} - - -void CSliderWidget::OnResumePlayback(void) -{ - if (m->etSlider) - ecore_timer_thaw(m->etSlider); -} - - -void CSliderWidget::OnPosition(int milsec) -{ - elm_slider_value_set(m->eoSlider, milsec); -} - - -void CSliderWidget::OnChanged(int id, Evas_Object *obj) -{ - char *timestr = NULL; - int value; - - if (m->controller.PlayState() == PLAY_STATUS_PLAY) { - if (m->etSlider) - ecore_timer_freeze(m->etSlider); - } - - value = elm_slider_value_get(obj); - m->controller.SetPosition(value); - timestr = CCommonUI::TimeStrFromMilSeconds(value); - if (timestr) { - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, - timestr); - free(timestr); - } - - if (m->controller.PlayState() == PLAY_STATUS_PLAY) { - if (m->etSlider) - ecore_timer_thaw(m->etSlider); - } -} - - -void CSliderWidget::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) -{ - if (!elm_object_focus_get(obj)) - elm_object_focus_set(obj, EINA_TRUE); -} - - -// STimer -struct STimer { - int count; - int s, e; - struct SCookie { - Ecore_Timer *etTimer; - CTimer *root; - int id; - SCookie(CTimer *timer, int _id) { - root = timer; - id = _id; - } - }; - - Eina_List *elList; -}; - - -Eina_Bool CTimer::sm_CbTimer(void *data) -{ - STimer::SCookie *cookie = (STimer::SCookie*)data; - - if (cookie->root) - cookie->root->t_OnTimer(cookie->id); - - cookie->root->m->elList = eina_list_remove(cookie->root->m->elList, cookie); - - delete cookie; - - return EINA_FALSE; -} - - -void CTimer::t_OnTimer(int id) -{ -} - - -bool CTimer::Create(void) -{ - ASSERT(!m); - - m = new STimer; - if (!m) - return false; - - m->elList = NULL; - - return true; -} - - -void CTimer::Destroy(void) -{ - ASSERT(m); - - delete m; - m = NULL; -} - - -bool CTimer::SetTimer(int id, int ms) -{ - ASSERT(m); - - - STimer::SCookie *cookie = new STimer::SCookie(this, id); - if (!cookie) - return false; - - m->elList = eina_list_append(m->elList, cookie); - cookie->etTimer = ecore_timer_add(ms, sm_CbTimer, cookie); - return true; -} - - -void CTimer::KillTimer(int id) -{ - ASSERT(m); -} - - -// CPlaybackView enum EEvasObject { EO_BASE, - - EO_ERROR_POPUP_BUTTON, - - EO_CANCEL, - EO_DESELECT, - EO_DELETE, // TOTAL_EDIT_BTNS - - EO_BTN_SETTINGS, - EO_BTN_SHUFFLE, - EO_BTN_REPEAT, - EO_BTN_REWIND, - EO_BTN_PLAY, - EO_BTN_FORWARD, // TOTAL_CONTROL_BTNS - EO_PLAYLIST, }; - -enum EControlBtns { - BTN_SETTINGS, - BTN_SHUFFLE, - BTN_REPEAT, - BTN_REWIND, - BTN_PLAY, - BTN_FORWARD -}; - -enum ESettingBtns { - BTN_EDIT, - BTN_CLEAR -}; - -enum EEditBtns { - BTN_CANCEL, - BTN_DESELECT, - BTN_DELETE -}; - -enum ETimers { - TIMER_WAIT, - TIMER_LONGPRESS, - TIMER_VOLUME -}; - -enum EPressTypes { - PRESS_SHORT, - PRESS_SHORT_PAUSE, - PRESS_LONG, - PRESS_LONG_PAUSE, -}; - struct SItemInfo { Elm_Object_Item *item; CSongInfo *sinfo; @@ -451,28 +56,24 @@ struct SPlaybackView { Evas_Object *eoWin; Evas_Object *eoBase; - CPlaySettingCtxPopup *eoCtxPopup; - Evas_Object *eoErrPopup; Evas_Object *eoPlaylist; Elm_Object_Item *focused_item; + CPlaybackController *pPlaybackController; + // These are reference values. Evas_Object *eoBtnControl[TOTAL_CONTROL_BTNS]; Evas_Object *eoBtnEdit[TOTAL_EDIT_BTNS]; Evas_Object *eoAlbumCover; CSliderWidget *pSliderWidget; - Evas_Object *eoPressedObj; - Eina_List *elInfo; - Ecore_Timer *etLongPress; - Ecore_Timer *etWait; + Eina_List *elInfo; CMusicController *pController; //! NOT NULL CSongInfo *csinfo; CViewMgr *mgr; SItemInfo *cs_itinfo; SContentInfo *ctxtinfo; - EPressTypes press_status; CHandleVolume *pHandleVolume; @@ -481,54 +82,6 @@ struct SPlaybackView { } }; -struct SBtnInfo { - const char *txt; - const char *part; - EEvasObject type; -}; - - -Eina_Bool CPlaybackView::sm_CbLongpressTimer(void *dt) -{ - CPlaybackView *root = (CPlaybackView *)dt; - if (root) - root->m_OnLongpressTimer(); - - return ECORE_CALLBACK_RENEW; -} - - -void CPlaybackView::m_OnLongpressTimer(void) -{ - m_HandleOnRepeated(); -} - - -Eina_Bool CPlaybackView::sm_CbWaitTimer(void *dt) -{ - CPlaybackView *root = (CPlaybackView *)dt; - if (root) - root->m_OnWaitTimer(); - - return ECORE_CALLBACK_CANCEL; -} - - -void CPlaybackView::m_OnWaitTimer(void) -{ - m->press_status = PRESS_LONG; - if (m->pController->PlayState() == PLAY_STATUS_PLAY) { - /* Handle long press */ - m_PlaybackPause(); - m->etLongPress = ecore_timer_add(LP_INTERVAL, sm_CbLongpressTimer, this); - } - else { - m->press_status = PRESS_LONG_PAUSE; - } - - m->etWait = NULL; -} - void CPlaybackView::sm_CbCtxtUpdate(void *dt, enum EActionType type, int lid) { @@ -618,77 +171,20 @@ void CPlaybackView::m_OnCtxtClose(void) } -void CPlaybackView::sm_CbCtxPopupBtnSelected(void* cookie, CContextPopup* instance, const char* text) +int CPlaybackView::sm_CbCurrentSongCount(void *cookie) { CPlaybackView *root = (CPlaybackView *)cookie; + int ret = 0; if (root) - root->m_CbCtxPopupBtnSelected(instance, text); -} - - -void CPlaybackView::m_CbCtxPopupBtnSelected(CContextPopup* instance, const char* text) -{ - int type = CInfo::PlaybackSettingType(); - - switch (type) { - case BTN_EDIT: - m_FromPlaybackToEditMode(); - break; - - case BTN_CLEAR: - m->pController->Stop(); - m->pController->EmptyPlaylist(); - eina_list_free(m->elInfo); - m->elInfo = NULL; - elm_genlist_clear(m->eoPlaylist); - m_UpdateEmptySongInfo(); - break; - - default: - break; - } -} + ret = root->m_CbCurrentSongCount(); - -void CPlaybackView::m_RemoveTimer(int timer_code) -{ - ETimers timerCode = (ETimers)timer_code; - - switch (timerCode) { - case TIMER_WAIT: - if (m->etWait) { - ecore_timer_del(m->etWait); - m->etWait = NULL; - } - break; - - case TIMER_LONGPRESS: - if (m->etLongPress) { - ecore_timer_del(m->etLongPress); - m->etLongPress = NULL; - } - break; - - case TIMER_VOLUME: - m->pHandleVolume->RemoveTimer(); - break; - - default: - _ERR(" invalid value "); - break; - } -} - - -void CPlaybackView::m_PlaybackPause(void) -{ - m->pController->Pause(); + return ret; } -void CPlaybackView::m_PlaybackResume(void) +int CPlaybackView::m_CbCurrentSongCount(void) { - m->pController->Resume(); + return eina_list_count(m->elInfo); } @@ -742,83 +238,6 @@ void CPlaybackView::m_UnselectItem(SItemInfo *pItemInfo) } -void CPlaybackView::m_UpdateControlBtns(void) -{ - int state; - - state = m->pController->PlayState(); - switch (state) { - case PLAY_STATUS_INITIAL: - // Initial State, Do nothing - break; - - case PLAY_STATUS_STOP: - if (!m->eoErrPopup) - elm_object_focus_set(m->eoBtnControl[BTN_PLAY], EINA_TRUE); - elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_TRUE); - elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_TRUE); - break; - - case PLAY_STATUS_PLAY: - elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_FALSE); - elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_FALSE); - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], - MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); - break; - - case PLAY_STATUS_PAUSE: - elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_FALSE); - elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_FALSE); - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], - MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); - break; - - default: - ASSERT(!"Invalid State"); - break; - } - - state = m->pController->ShuffleState(); - switch (state) { - case SHUFFLE_STATUS_OFF: - elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], - MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); - break; - - case SHUFFLE_STATUS_ON: - elm_object_signal_emit(m->eoBtnControl[BTN_SHUFFLE], - MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); - break; - - default: - ASSERT(!"Invalid State"); - break; - } - - state = m->pController->RepeatState(); - switch (state) { - case REPEAT_STATUS_NONE: - elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], - MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); - break; - - case REPEAT_STATUS_ALL: - elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], - MUSIC_SIGNAL_REPEAT_ALL, MUSIC_PLAYBACK_VIEW); - break; - - case REPEAT_STATUS_ONE: - elm_object_signal_emit(m->eoBtnControl[BTN_REPEAT], - MUSIC_SIGNAL_REPEAT_ONE, MUSIC_PLAYBACK_VIEW); - break; - - default: - ASSERT(!"Invalid State"); - break; - } -} - - void CPlaybackView::m_UpdateCurrentSongThumbnail(void) { char *path = NULL; @@ -859,17 +278,6 @@ void CPlaybackView::m_UpdateEmptySongInfo(void) { char buf[MAX_LENGTH]; - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], - MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); - elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_TRUE); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_REPEAT], - m->eoBtnControl[BTN_REPEAT], ELM_FOCUS_RIGHT); - elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_TRUE); - elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_TRUE); - elm_object_disabled_set(m->eoBtnControl[BTN_PLAY], EINA_TRUE); - elm_object_part_text_set(m->eoBase, MUSIC_PART_FULLTIME, "00:00"); - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, "00:00"); - m->pSliderWidget->Init(); elm_object_part_text_set(m->eoBase, MUSIC_PART_SONG_TITLE, @@ -929,37 +337,39 @@ void CPlaybackView::m_UpdateCurrentSongItem(int index) void CPlaybackView::m_UpdateEditmodeFocusSequence(void) { - elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnEdit[BTN_CANCEL], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(m->eoBtnEdit[BTN_CANCEL], m->eoPlaylist, ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoBtnEdit[BTN_CANCEL], ELM_FOCUS_DOWN); + elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnEdit[EDIT_BTN_CANCEL], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnEdit[EDIT_BTN_CANCEL], m->eoPlaylist, ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoBtnEdit[EDIT_BTN_CANCEL], ELM_FOCUS_DOWN); } void CPlaybackView::m_UpdatePlaymodeFocusSequence(void) { - elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoPlaylist, ELM_FOCUS_UP); - elm_object_focus_next_object_set(m->pSliderWidget->Base(), m->eoBtnControl[BTN_PLAY], ELM_FOCUS_DOWN); switch (m->pController->PlayState()) { case PLAY_STATUS_INITIAL: // Do nothing break; case PLAY_STATUS_STOP: - elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnControl[BTN_PLAY], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], m->eoPlaylist, ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], m->eoBtnControl[BTN_REPEAT], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_REPEAT], m->eoBtnControl[BTN_PLAY], ELM_FOCUS_RIGHT); - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); + elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnControl[CTRL_BTN_PLAY], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_PLAY], m->eoPlaylist, ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_PLAY], m->eoBtnControl[CTRL_BTN_REPEAT], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_REPEAT], m->eoBtnControl[CTRL_BTN_PLAY], ELM_FOCUS_RIGHT); + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_PLAY], MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); break; case PLAY_STATUS_PLAY: case PLAY_STATUS_PAUSE: elm_object_focus_next_object_set(m->eoPlaylist, - m->eoBtnControl[BTN_FORWARD], ELM_FOCUS_LEFT); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_FORWARD], + m->eoBtnControl[CTRL_BTN_FORWARD], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_FORWARD], m->eoPlaylist, ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_PLAY], - m->eoBtnControl[BTN_FORWARD], ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_PLAY], + m->eoBtnControl[CTRL_BTN_FORWARD], ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_PLAY], + m->eoBtnControl[CTRL_BTN_REWIND], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_REPEAT], + m->eoBtnControl[CTRL_BTN_REWIND], ELM_FOCUS_RIGHT); break; default: @@ -992,104 +402,29 @@ void CPlaybackView::m_UpdateCurrentSongInfo(void) m_UpdateCurrentSongItem(index); m_UpdateCurrentSongLabels(); - m_UpdateCurrentSongThumbnail(); - m_UpdateControlBtns(); - m_UpdatePlaymodeFocusSequence(); -} - - -void CPlaybackView::m_DisableEditButtons(bool flag) -{ - /* flag - 1 means disable edit buttons and 0 means enable */ - if (flag) - elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); - - elm_object_disabled_set(m->eoBtnEdit[BTN_DELETE], (Eina_Bool)flag); - elm_object_disabled_set(m->eoBtnEdit[BTN_DESELECT], (Eina_Bool)flag); - if (flag) { - m_UpdateEditmodeFocusSequence(); - elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); - } - else { - elm_object_focus_next_object_set(m->eoBtnEdit[BTN_CANCEL], m->eoBtnEdit[BTN_DESELECT], ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->eoBtnEdit[BTN_DELETE], m->eoPlaylist, ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnEdit[BTN_DELETE], ELM_FOCUS_LEFT); - } -} - - -void CPlaybackView::m_CreateErrorPopup(void) -{ - Evas_Object *popup = NULL, *btn = NULL, *label = NULL; - - popup = elm_popup_add(m->eoBase); - if (!popup) - return; - - elm_object_style_set(popup, MUSIC_STYLE_ERROR_POPUP); - evas_object_show(popup); - - label = elm_label_add(popup); - if (!label) { - evas_object_del(popup); - return; - } - - elm_object_style_set(label, MUSIC_STYLE_ERROR_LABEL); - elm_object_text_set(label, MUSIC_TEXT_PLAYBACK_ERROR); - elm_object_content_set(popup, label); - - btn = elm_button_add(popup); - if (!btn) { - evas_object_del(popup); - return; - } - - elm_object_style_set(btn, MUSIC_STYLE_EDIT_BTN); - elm_object_text_set(btn, MUSIC_TEXT_OK); - elm_object_part_content_set(popup, MUSIC_PART_POPUP_BUTTON, btn); - - m->eoErrPopup = popup; - - Connect(btn, EO_ERROR_POPUP_BUTTON, TYPE_CLICKED | TYPE_KEY_DOWN); - - elm_object_focus_set(btn, EINA_TRUE); - - return; -} - - -void CPlaybackView::m_DestroyErrorPopup(void) -{ - if (!m->eoErrPopup) - return; - - evas_object_del(m->eoErrPopup); - m->eoErrPopup = NULL; -} - - -void CPlaybackView::m_CreateSettingsPopup(void) -{ - CContextPopup::SCallback cb; - cb.cookie = this; - cb.onSelected = sm_CbCtxPopupBtnSelected; - - m->eoCtxPopup = new CPlaySettingCtxPopup; - m->eoCtxPopup->Create(m->eoWin, &cb); + m_UpdateCurrentSongThumbnail(); + m->pPlaybackController->Update(); + m_UpdatePlaymodeFocusSequence(); } -void CPlaybackView::m_DestroySettingsPopup(void) +void CPlaybackView::m_DisableEditButtons(bool flag) { - if (!m->eoCtxPopup) - return; - - if (m->eoCtxPopup->FlagCreate()) - m->eoCtxPopup->Destroy(); + /* flag - 1 means disable edit buttons and 0 means enable */ + if (flag) + elm_object_focus_set(m->eoBtnEdit[EDIT_BTN_CANCEL], EINA_TRUE); - delete m->eoCtxPopup; - m->eoCtxPopup = NULL; + elm_object_disabled_set(m->eoBtnEdit[EDIT_BTN_DELETE], (Eina_Bool)flag); + elm_object_disabled_set(m->eoBtnEdit[EDIT_BTN_DESELECT], (Eina_Bool)flag); + if (flag) { + m_UpdateEditmodeFocusSequence(); + elm_object_focus_set(m->eoBtnEdit[EDIT_BTN_CANCEL], EINA_TRUE); + } + else { + elm_object_focus_next_object_set(m->eoBtnEdit[EDIT_BTN_CANCEL], m->eoBtnEdit[EDIT_BTN_DESELECT], ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->eoBtnEdit[EDIT_BTN_DELETE], m->eoPlaylist, ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(m->eoPlaylist, m->eoBtnEdit[EDIT_BTN_DELETE], ELM_FOCUS_LEFT); + } } @@ -1104,7 +439,7 @@ void CPlaybackView::m_FromEditToPlaybackMode(void) elm_object_signal_emit(m->eoBase, MUSIC_SIGNAL_PLAYBACK_MODE, MUSIC_PLAYBACK_VIEW); - elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_TRUE); + elm_object_focus_set(m->eoBtnControl[CTRL_BTN_SETTINGS], EINA_TRUE); m_ChangeEditmodeAll(m->elInfo, false); @@ -1121,7 +456,7 @@ void CPlaybackView::m_FromPlaybackToEditMode(void) m_DisableEditButtons(true); - elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); + elm_object_focus_set(m->eoBtnEdit[EDIT_BTN_CANCEL], EINA_TRUE); m_ChangeEditmodeAll(m->elInfo, true); @@ -1131,60 +466,6 @@ void CPlaybackView::m_FromPlaybackToEditMode(void) } -void CPlaybackView::m_HandleOnRepeated(void) -{ - Evas_Object *obj = NULL; - int value; - int duration; - char *timestr = NULL; - - if (!m->eoPressedObj) - return; - - obj = m->eoPressedObj; - - - m->pController->GetPosition(&value); - duration = m->cs_itinfo->sinfo->Duration(); - - if (obj == m->eoBtnControl[BTN_REWIND]) { - if (value == 0) { - m_RemoveTimer(TIMER_LONGPRESS); - return; - } - value = value - LP_CHANGE; - if (value <= 0) - value = 0; - } - else { - if (value == duration) { - m->pController->PlayNextSong(); - - m->press_status = PRESS_LONG_PAUSE; - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], MUSIC_SIGNAL_PAUSE, - MUSIC_PLAYBACK_VIEW); - m_PlaybackPause(); - m_RemoveTimer(TIMER_LONGPRESS); - - return; - } - value = value + LP_CHANGE; - if (value >= duration) - value = duration; - } - - m->pController->SetPosition(value); - timestr = CCommonUI::TimeStrFromMilSeconds(value); - if (timestr) { - elm_object_part_text_set(m->eoBase, MUSIC_PART_PROGRESSTIME, - timestr); - free(timestr); - } - - return; -} - - void CPlaybackView::m_DeleteSelectedItems(void) { Eina_List *l = NULL, *l_next = NULL; @@ -1215,7 +496,7 @@ void CPlaybackView::m_DeleteSelectedItems(void) if (eina_list_count(m->elInfo) == 0) { m_UpdateEmptySongInfo(); elm_genlist_realized_items_update(m->eoPlaylist); - elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); + elm_object_focus_set(m->eoBtnEdit[EDIT_BTN_CANCEL], EINA_TRUE); return; } @@ -1223,18 +504,12 @@ void CPlaybackView::m_DeleteSelectedItems(void) m_UpdateCurrentSongInfo(); elm_genlist_realized_items_update(m->eoPlaylist); - elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); + elm_object_focus_set(m->eoBtnEdit[EDIT_BTN_CANCEL], EINA_TRUE); } void CPlaybackView::m_KeyBackPress(void) { - if (m->eoCtxPopup) { - m_DestroySettingsPopup(); - elm_object_focus_set(m->eoBtnControl[BTN_SETTINGS], EINA_TRUE); - return; - } - t_OnHide(); if (!CViewMgr::GetInstance()->ShowView(MUSIC_BASE_VIEW)) @@ -1261,13 +536,13 @@ void CPlaybackView::m_KeyPlayPress(void) { int state; - if (elm_object_disabled_get(m->eoBtnControl[BTN_PLAY])) + if (elm_object_disabled_get(m->eoBtnControl[CTRL_BTN_PLAY])) return; state = m->pController->PlayState(); if (state == PLAY_STATUS_PAUSE) { - m_PlaybackResume(); - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], + m->pController->Resume(); + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_PLAY], MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); } else if (state != PLAY_STATUS_PLAY) { @@ -1280,51 +555,51 @@ void CPlaybackView::m_KeyPausePress(void) { int state; - if (elm_object_disabled_get(m->eoBtnControl[BTN_PLAY])) + if (elm_object_disabled_get(m->eoBtnControl[CTRL_BTN_PLAY])) return; state = m->pController->PlayState(); if (state == PLAY_STATUS_PLAY) { - elm_object_signal_emit(m->eoBtnControl[BTN_PLAY], + elm_object_signal_emit(m->eoBtnControl[CTRL_BTN_PLAY], MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); - m_PlaybackPause(); + m->pController->Pause(); } } void CPlaybackView::m_KeyNextPress(void) { - if (elm_object_disabled_get(m->eoBtnControl[BTN_FORWARD])) + if (elm_object_disabled_get(m->eoBtnControl[CTRL_BTN_FORWARD])) return; - m_HandleOnPressed(m->eoBtnControl[BTN_FORWARD]); + m->pController->HandleRemoteButtons(m->eoBtnControl[CTRL_BTN_FORWARD], EVENT_PRESSED); } void CPlaybackView::m_KeyPreviousPress(void) { - if (elm_object_disabled_get(m->eoBtnControl[BTN_REWIND])) + if (elm_object_disabled_get(m->eoBtnControl[CTRL_BTN_REWIND])) return; - m_HandleOnPressed(m->eoBtnControl[BTN_REWIND]); + m->pController->HandleRemoteButtons(m->eoBtnControl[CTRL_BTN_REWIND], EVENT_PRESSED); } void CPlaybackView::m_KeyNextUnpress(void) { - if (elm_object_disabled_get(m->eoBtnControl[BTN_FORWARD])) + if (elm_object_disabled_get(m->eoBtnControl[CTRL_BTN_FORWARD])) return; - m_HandleOnUnpressed(m->eoBtnControl[BTN_FORWARD]); + m->pController->HandleRemoteButtons(m->eoBtnControl[CTRL_BTN_FORWARD], EVENT_UNPRESSED); } void CPlaybackView::m_KeyPreviousUnpress(void) { - if (elm_object_disabled_get(m->eoBtnControl[BTN_REWIND])) + if (elm_object_disabled_get(m->eoBtnControl[CTRL_BTN_REWIND])) return; - m_HandleOnUnpressed(m->eoBtnControl[BTN_REWIND]); + m->pController->HandleRemoteButtons(m->eoBtnControl[CTRL_BTN_REWIND], EVENT_UNPRESSED); } @@ -1343,11 +618,14 @@ void CPlaybackView::m_HandleKeyPress(char *keyname) m_KeyNextPress(); else if (!strcmp(keyname, (char *)KEY_PREVIOUS)) m_KeyPreviousPress(); - else if (!strcmp(keyname, (char *)KEY_VOLUMEUP)) + else if (!strcmp(keyname, (char *)KEY_VOLUMEUP) || + !strcmp(keyname, (char *)KEY_VOLUMEUP_REMOTE)) m->pHandleVolume->Up(); - else if (!strcmp(keyname, (char *)KEY_VOLUMEDOWN)) + else if (!strcmp(keyname, (char *)KEY_VOLUMEDOWN) || + !strcmp(keyname, (char *)KEY_VOLUMEDOWN_REMOTE)) m->pHandleVolume->Down(); - else if (!strcmp(keyname, (char *)KEY_MUTE)) + else if (!strcmp(keyname, (char *)KEY_MUTE) || + !strcmp(keyname, (char *)KEY_MUTE_REMOTE)) m->pHandleVolume->Mute(); } @@ -1390,104 +668,6 @@ void CPlaybackView::m_AddCurrentSonginfo(void) } -void CPlaybackView::m_AddEditPlaylistButtons(void) -{ - Evas_Object *box = NULL; - int i; - SBtnInfo btninfo[TOTAL_EDIT_BTNS]; - - btninfo[BTN_CANCEL].txt = MUSIC_TEXT_CANCEL; - btninfo[BTN_CANCEL].type = EO_CANCEL; - - btninfo[BTN_DESELECT].txt = MUSIC_TEXT_DESELECT; - btninfo[BTN_DESELECT].type = EO_DESELECT; - - btninfo[BTN_DELETE].txt = MUSIC_TEXT_DELETE; - btninfo[BTN_DELETE].type = EO_DELETE; - - box = CCommonUI::AddBox(m->eoBase); - if (!box) - return; - - elm_box_horizontal_set(box, EINA_TRUE); - elm_box_padding_set(box, MUSIC_EDIT_BTNS_PADDING * elm_config_scale_get(), 0); - - for (i = 0; i < TOTAL_EDIT_BTNS; i++) { - m->eoBtnEdit[i] = elm_button_add(m->eoBase); - if (!m->eoBtnEdit[i]) - continue; - - elm_object_style_set(m->eoBtnEdit[i], MUSIC_STYLE_EDIT_BTN); - evas_object_size_hint_weight_set(m->eoBtnEdit[i], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_box_pack_end(box, m->eoBtnEdit[i]); - elm_object_text_set(m->eoBtnEdit[i], _(btninfo[i].txt)); - - Connect(m->eoBtnEdit[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE); - - evas_object_show(m->eoBtnEdit[i]); - } - elm_object_part_content_set(m->eoBase, MUSIC_PART_EDITBTNS, box); - elm_object_signal_emit(m->eoBase, MUSIC_SIGNAL_PLAYBACK_MODE, MUSIC_PLAYBACK_VIEW); -} - - -void CPlaybackView::m_AddControlButtons(void) -{ - Evas_Object *box = NULL; - int i; - SBtnInfo btninfo[TOTAL_CONTROL_BTNS]; - - btninfo[BTN_SETTINGS].txt = MUSIC_STYLE_BTN_SETTINGS; - btninfo[BTN_SETTINGS].type = EO_BTN_SETTINGS; - - btninfo[BTN_SHUFFLE].txt = MUSIC_STYLE_BTN_SHUFFLE; - btninfo[BTN_SHUFFLE].type = EO_BTN_SHUFFLE; - - btninfo[BTN_REPEAT].txt = MUSIC_STYLE_BTN_REPEAT; - btninfo[BTN_REPEAT].type = EO_BTN_REPEAT; - - btninfo[BTN_REWIND].txt = MUSIC_STYLE_BTN_REWIND; - btninfo[BTN_REWIND].type = EO_BTN_REWIND; - - btninfo[BTN_PLAY].txt = MUSIC_STYLE_BTN_PLAY; - btninfo[BTN_PLAY].type = EO_BTN_PLAY; - - btninfo[BTN_FORWARD].txt = MUSIC_STYLE_BTN_FORWARD; - btninfo[BTN_FORWARD].type = EO_BTN_FORWARD; - - box = elm_box_add(m->eoBase); - if (!box) - return; - - evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0); - evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0); - elm_box_horizontal_set(box, EINA_TRUE); - elm_box_padding_set(box, - MUSIC_CONTROL_BTNS_PADDING * elm_config_scale_get(), 0); - - for (i = 0; i < TOTAL_CONTROL_BTNS; i++) { - m->eoBtnControl[i] = elm_button_add(m->eoBase); - if (!m->eoBtnControl[i]) - continue; - - elm_object_style_set(m->eoBtnControl[i], btninfo[i].txt); - evas_object_size_hint_weight_set(m->eoBtnControl[i], - EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_box_pack_end(box, m->eoBtnControl[i]); - - if (i == BTN_REWIND || i == BTN_FORWARD) { - Connect(m->eoBtnControl[i], btninfo[i].type, TYPE_PRESSED | TYPE_UNPRESSED | TYPE_MOUSE_MOVE); - } - else { - Connect(m->eoBtnControl[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE); - } - evas_object_show(m->eoBtnControl[i]); - } - - elm_object_part_content_set(m->eoBase, MUSIC_PART_CONTROLBTNS, box); -} - - SItemInfo *CPlaybackView::m_FindItemInfoFromSong(Eina_List *list, CSongInfo *sinfo) { Eina_List *l = NULL; @@ -1736,72 +916,6 @@ void CPlaybackView::m_RemovePlaylist(void) } -void CPlaybackView::m_HandleRewindBtnClicked(Evas_Object *obj) -{ - elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, - MUSIC_PLAYBACK_VIEW); - - if (m->pController->PlayState() == PLAY_STATUS_STOP) - return; - - if (!m->pController->PlayPreviousSong()){ - _ERR(" music play previous song failed "); - return; - } -} - - -void CPlaybackView::m_HandleForwardBtnClicked(Evas_Object *obj) -{ - elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, - MUSIC_PLAYBACK_VIEW); - - if (m->pController->PlayState() == PLAY_STATUS_STOP) - return; - - if (!m->pController->PlayNextSong()) { - _ERR(" music play next song failed "); - return; - } -} - - -void CPlaybackView::m_HandleOnPressed(Evas_Object *obj) -{ - m->press_status = PRESS_SHORT; - m->eoPressedObj = obj; - - m->etWait = ecore_timer_add(WAIT_INTERVAL, sm_CbWaitTimer, this); -} - - -void CPlaybackView::m_HandleOnUnpressed(Evas_Object *obj) -{ - m_RemoveTimer(TIMER_WAIT); - m_RemoveTimer(TIMER_LONGPRESS); - - if (m->press_status == PRESS_SHORT) { - /* Handle song change */ - if (m->pController->PlayState() == PLAY_STATUS_PLAY) - m_PlaybackPause(); - - if (obj == m->eoBtnControl[BTN_FORWARD]) - m_HandleForwardBtnClicked(obj); - else - m_HandleRewindBtnClicked(obj); - - if (m->pController->PlayState() != PLAY_STATUS_PLAY) - m_PlaybackResume(); - } - else if (m->press_status == PRESS_LONG) { - if (m->pController->PlayState() != PLAY_STATUS_PLAY) - m_PlaybackResume(); - } - - m->press_status = PRESS_SHORT; -} - - void CPlaybackView::m_HandleGenlistItemActivated(Evas_Object *obj, Elm_Object_Item *genListItem) { int index; @@ -1832,6 +946,8 @@ bool CPlaybackView::Create(void *data) { ASSERT(!m); + CPlaybackController::SCallback cb; + _CREATE_BEGIN{ _CHECK(m = new SPlaybackView) _CHECK(m->mgr = CViewMgr::GetInstance()) @@ -1842,16 +958,23 @@ bool CPlaybackView::Create(void *data) _CHECK(CBaseView::Create(data)) _CHECK(CTimer::Create()); _CHECK(m->pController->AddListener(this)) + _CHECK(m->pPlaybackController = new CPlaybackController) + _COMMAND{ cb.cookie = this; cb.OnCurrentSongCount = sm_CbCurrentSongCount; } + _CHECK(m->pPlaybackController->Create(m->eoBase, &cb)) _WHEN_SUCCESS{ - m->press_status = PRESS_SHORT; evas_object_data_set(m->eoBase, PLAYBACK_VIEW_DATA, m); - m_AddControlButtons(); - m_AddEditPlaylistButtons(); m_AddCurrentSonginfo(); m_AddPlaylist(); + int i; + for (i = 0; i < TOTAL_CONTROL_BTNS; i++) + m->eoBtnControl[i] = m->pPlaybackController->ControlBtnsObject((EPlayerControlBtns)i); + + for (i = 0; i < TOTAL_EDIT_BTNS; i++) + m->eoBtnEdit[i] = m->pPlaybackController->EditBtnsObject((EPlayerEditBtns)i); + m->pHandleVolume = new CHandleVolume; m->pHandleVolume->Create(m->eoBase); m_UpdatePlaymodeFocusSequence(); @@ -1859,6 +982,8 @@ bool CPlaybackView::Create(void *data) Connect(m->eoBase, EO_BASE, TYPE_KEY_DOWN | TYPE_KEY_UP); } + _CHECK_FAIL{ m->pPlaybackController->Destroy(); } + _CHECK_FAIL{ delete m->pPlaybackController; } _CHECK_FAIL{ m->pController->RemoveListener(this); } _CHECK_FAIL{ CTimer::Destroy(); } _CHECK_FAIL{ CBaseView::Destroy(); } @@ -1879,15 +1004,14 @@ void CPlaybackView::Destroy(void) ASSERT(m); Disconnect(m->eoBase); - m->pController->RemoveListener(this); - m_DestroyErrorPopup(); + m->pPlaybackController->Destroy(); + delete m->pPlaybackController; - m->pSliderWidget->Destroy(); + m->pController->RemoveListener(this); - m_RemoveTimer(TIMER_WAIT); - m_RemoveTimer(TIMER_LONGPRESS); - m_DestroySettingsPopup(); + m->pSliderWidget->Destroy(); + delete m->pSliderWidget; m->pHandleVolume->Destroy(); delete m->pHandleVolume; @@ -1908,83 +1032,6 @@ Evas_Object* CPlaybackView::Base(void) } -void CPlaybackView::t_OnClickedSettings(Evas_Object *obj) -{ - elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - - if (eina_list_count(m->elInfo) == 0) - return; - - elm_object_signal_emit(obj, MUSIC_SIGNAL_CONTROL_SELECTED, MUSIC_PLAYBACK_VIEW); - m_DestroySettingsPopup(); - m_CreateSettingsPopup(); -} - - -void CPlaybackView::t_OnClickedShuffle(Evas_Object *obj) -{ - elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - - switch (m->pController->ShuffleState()) { - case SHUFFLE_STATUS_OFF: - m->pController->SetShuffleState(SHUFFLE_STATUS_ON); - elm_object_signal_emit(obj, MUSIC_SIGNAL_SHUFFLE_ON, MUSIC_PLAYBACK_VIEW); - break; - - default: - m->pController->SetShuffleState(SHUFFLE_STATUS_OFF); - elm_object_signal_emit(obj, MUSIC_SIGNAL_SHUFFLE_OFF, MUSIC_PLAYBACK_VIEW); - break; - } -} - - -void CPlaybackView::t_OnClickedRepeat(Evas_Object *obj) -{ - elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - - switch (m->pController->RepeatState()) { - case REPEAT_STATUS_NONE: - m->pController->SetRepeatState(REPEAT_STATUS_ALL); - elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_ALL, MUSIC_PLAYBACK_VIEW); - break; - - case REPEAT_STATUS_ALL: - m->pController->SetRepeatState(REPEAT_STATUS_ONE); - elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_ONE, MUSIC_PLAYBACK_VIEW); - break; - - default: - m->pController->SetRepeatState(REPEAT_STATUS_NONE); - elm_object_signal_emit(obj, MUSIC_SIGNAL_REPEAT_OFF, MUSIC_PLAYBACK_VIEW); - break; - } -} - - -void CPlaybackView::t_OnClickedPlay(Evas_Object *obj) -{ - elm_object_signal_emit(obj, MUSIC_SIGNAL_BTN_CLICKED, MUSIC_PLAYBACK_VIEW); - - switch (m->pController->PlayState()) { - case PLAY_STATUS_PAUSE: - m_PlaybackResume(); - elm_object_signal_emit(obj, MUSIC_SIGNAL_PLAY, MUSIC_PLAYBACK_VIEW); - break; - - case PLAY_STATUS_PLAY: - elm_object_signal_emit(obj, MUSIC_SIGNAL_PAUSE, MUSIC_PLAYBACK_VIEW); - m_PlaybackPause(); - break; - - default: - if (m->pController) - m->pController->Start(); - break; - } -} - - void CPlaybackView::t_OnShow(void) { ASSERT(m); @@ -2028,11 +1075,11 @@ void CPlaybackView::t_OnUpdate(void *data) case E_PLAYLIST_UPDATE: m_RemovePlaylist(); m_AddPlaylist(); - elm_object_disabled_set(m->eoBtnControl[BTN_FORWARD], EINA_FALSE); - elm_object_disabled_set(m->eoBtnControl[BTN_REWIND], EINA_FALSE); - elm_object_disabled_set(m->eoBtnControl[BTN_PLAY], EINA_FALSE); - elm_object_focus_next_object_set(m->eoBtnControl[BTN_REPEAT], - m->eoBtnControl[BTN_REWIND], ELM_FOCUS_RIGHT); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_FORWARD], EINA_FALSE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_REWIND], EINA_FALSE); + elm_object_disabled_set(m->eoBtnControl[CTRL_BTN_PLAY], EINA_FALSE); + elm_object_focus_next_object_set(m->eoBtnControl[CTRL_BTN_REPEAT], + m->eoBtnControl[CTRL_BTN_REWIND], ELM_FOCUS_RIGHT); m_FromEditToPlaybackMode(); break; @@ -2050,6 +1097,11 @@ void CPlaybackView::t_OnUpdate(void *data) } +void CPlaybackView::t_OnTimer(int id) +{ +} + + void CPlaybackView::t_OnHide(void) { ASSERT(m); @@ -2065,14 +1117,6 @@ void CPlaybackView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_ m_HandleKeyPress(ev->keyname); break; - case EO_ERROR_POPUP_BUTTON: - if (!strcmp(ev->keyname, KEY_BACK) || - !strcmp(ev->keyname, KEY_BACK_REMOTE)) { - m_DestroyErrorPopup(); - elm_object_focus_set(m->eoBtnControl[BTN_PLAY], EINA_TRUE); - } - break; - case EO_PLAYLIST: { Elm_Object_Item *it = NULL; @@ -2144,69 +1188,9 @@ void CPlaybackView::OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up } -void CPlaybackView::OnMouseClicked(int id, Evas_Object *obj) -{ - switch (id) { - case EO_ERROR_POPUP_BUTTON: - m_DestroyErrorPopup(); - elm_object_focus_set(m->eoBtnControl[BTN_PLAY], EINA_TRUE); - break; - - case EO_CANCEL: - m_DisableCheckAll(m->elInfo); - m_DisableEditButtons(true); - m_FromEditToPlaybackMode(); - break; - - case EO_DESELECT: - m_DisableCheckAll(m->elInfo); - m_DisableEditButtons(true); - elm_genlist_realized_items_update(m->eoPlaylist); - elm_object_focus_set(m->eoBtnEdit[BTN_CANCEL], EINA_TRUE); - break; - - case EO_DELETE: - m_DeleteSelectedItems(); - break; - - case EO_BTN_SETTINGS: - t_OnClickedSettings(obj); - break; - - case EO_BTN_SHUFFLE: - t_OnClickedShuffle(obj); - break; - - case EO_BTN_REPEAT: - t_OnClickedRepeat(obj); - break; - - case EO_BTN_PLAY: - t_OnClickedPlay(obj); - break; - - default: - break; - } -} - - void CPlaybackView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) { switch (id) { - case EO_CANCEL: - case EO_DESELECT: - case EO_DELETE: - case EO_BTN_FORWARD: - case EO_BTN_PLAY: - case EO_BTN_REPEAT: - case EO_BTN_REWIND: - case EO_BTN_SETTINGS: - case EO_BTN_SHUFFLE: - if (!elm_object_focus_get(obj)) - elm_object_focus_set(obj, EINA_TRUE); - break; - case EO_PLAYLIST: { Elm_Object_Item *item; @@ -2227,34 +1211,6 @@ void CPlaybackView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mo } -void CPlaybackView::OnPressed(int id, Evas_Object *obj) -{ - switch (id) { - case EO_BTN_FORWARD: - case EO_BTN_REWIND: - m_HandleOnPressed(obj); - break; - - default: - break; - } -} - - -void CPlaybackView::OnUnpressed(int id, Evas_Object *obj) -{ - switch (id) { - case EO_BTN_FORWARD: - case EO_BTN_REWIND: - m_HandleOnUnpressed(obj); - break; - - default: - break; - } -} - - void CPlaybackView::OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item) { switch (id) { @@ -2320,7 +1276,6 @@ void CPlaybackView::OnComplete(void) void CPlaybackView::OnError(void) { - m_CreateErrorPopup(); } @@ -2343,3 +1298,55 @@ void CPlaybackView::OnStartPlayback(void) void CPlaybackView::OnStopPlayback(void) { } + + +void CPlaybackView::OnEmptyPlaylist(void) +{ + eina_list_free(m->elInfo); + m->elInfo = NULL; + elm_genlist_clear(m->eoPlaylist); + m_UpdateEmptySongInfo(); +} + + +void CPlaybackView::OnPlayerModeChanged(EPlayerMode mode) +{ + switch (mode) { + case MODE_PLAYLIST_EDIT: + m_FromPlaybackToEditMode(); + break; + + case MODE_PLAYBACK: + m_FromEditToPlaybackMode(); + break; + + default: + ASSERT(!"Invalid Player Mode"); + break; + } +} + + +void CPlaybackView::OnEditButtonsPressed(EPlayerEditBtns editBtns) +{ + switch (editBtns) { + case EDIT_BTN_CANCEL: + m_DisableCheckAll(m->elInfo); + m_DisableEditButtons(true); + break; + + case EDIT_BTN_DESELECT: + m_DisableCheckAll(m->elInfo); + m_DisableEditButtons(true); + elm_genlist_realized_items_update(m->eoPlaylist); + break; + + case EDIT_BTN_DELETE: + m_DeleteSelectedItems(); + break; + + default: + ASSERT(!"Invalid Edit Button"); + break; + } +} \ No newline at end of file -- 2.7.4 From 7d72bdd3654991f8b76a41ca5cf5884fc19db5e9 Mon Sep 17 00:00:00 2001 From: Kim Youngjin Date: Tue, 21 Apr 2015 08:05:23 +0900 Subject: [PATCH 15/16] dbg.h file is removed. Change-Id: Ibbf1b636dfb25343a86089d67e35062732bfe431 Signed-off-by: Kim Youngjin --- include/dbg.h | 45 ------------------------------------ src/data/AlbumStorage.cpp | 1 - src/data/CategoryStorage.cpp | 1 - src/data/FolderStorage.cpp | 1 - src/data/SongStorage.cpp | 1 - src/data/album_info.cpp | 1 - src/data/bus.cpp | 7 +++--- src/data/category_info.cpp | 2 +- src/data/folder_info.cpp | 1 - src/data/mediadata.cpp | 1 - src/data/song_info.cpp | 1 - src/main.cpp | 4 +++- src/playback/MusicControllerImpl.cpp | 1 - src/playback/music-controller.cpp | 1 - src/playback/playback-mgr.cpp | 1 - src/playback/playlist-mgr.cpp | 1 - src/playback/volume-control.cpp | 1 - src/views/ErrorPopupWindow.cpp | 1 - src/views/ExtBaseLayout.cpp | 1 - src/views/HandleVolume.cpp | 1 - src/views/Info.cpp | 1 - src/views/PlayListCtxPopup.cpp | 1 - src/views/PlaySettingCtxPopup.cpp | 1 - src/views/PlaybackController.cpp | 1 - src/views/RemovePopupWindow.cpp | 1 - src/views/SliderWidget.cpp | 1 - src/views/SortCtxPopup.cpp | 1 - src/views/SourceCtxPopup.cpp | 1 - src/views/Timer.cpp | 1 - src/views/album-layout.cpp | 1 - src/views/album-songs-layout.cpp | 1 - src/views/artist-layout.cpp | 1 - src/views/base-view.cpp | 1 - src/views/category-layout.cpp | 1 - src/views/category-songs-layout.cpp | 1 - src/views/common-ui.cpp | 2 +- src/views/context-view.cpp | 1 - src/views/entry-popup.cpp | 1 - src/views/folder-layout.cpp | 1 - src/views/genre-layout.cpp | 1 - src/views/playback-view.cpp | 1 - src/views/playlist-layout.cpp | 1 - src/views/song-layout.cpp | 1 - 43 files changed, 9 insertions(+), 89 deletions(-) delete mode 100644 include/dbg.h diff --git a/include/dbg.h b/include/dbg.h deleted file mode 100644 index 6163a5c..0000000 --- a/include/dbg.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __DBG_H__ -#define __DBG_H__ - -#include - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "org.tizen.music-player-tv-ref" - -#ifndef _ERR -#define _ERR(fmt, args...) LOGE("[%s:%d] "fmt"\n", __func__, __LINE__, ##args) -#endif - -#ifndef _DBG -#define _DBG(fmt, args...) LOGD("[%s:%d] "fmt"\n", __func__, __LINE__, ##args) -#endif - -#ifndef _INFO -#define _INFO(fmt, args...) LOGI("[%s:%d] "fmt"\n", __func__, __LINE__, ##args) -#endif - -/* enums */ -enum music_error_status { - MUSIC_ERROR = -1, - MUSIC_ERROR_NONE -}; - -#endif /* __DBG_H__ */ diff --git a/src/data/AlbumStorage.cpp b/src/data/AlbumStorage.cpp index 57892a5..045018c 100644 --- a/src/data/AlbumStorage.cpp +++ b/src/data/AlbumStorage.cpp @@ -20,7 +20,6 @@ #include #include -#include "dbg.h" #include "i18n.h" #include "define.h" diff --git a/src/data/CategoryStorage.cpp b/src/data/CategoryStorage.cpp index b740717..11cbed3 100644 --- a/src/data/CategoryStorage.cpp +++ b/src/data/CategoryStorage.cpp @@ -19,7 +19,6 @@ #include #include -#include "dbg.h" #include "i18n.h" #include "define.h" diff --git a/src/data/FolderStorage.cpp b/src/data/FolderStorage.cpp index e64264c..53f6c98 100644 --- a/src/data/FolderStorage.cpp +++ b/src/data/FolderStorage.cpp @@ -19,7 +19,6 @@ #include #include #include -#include "dbg.h" #include "i18n.h" #include "define.h" diff --git a/src/data/SongStorage.cpp b/src/data/SongStorage.cpp index 1565eb7..a80f5ac 100644 --- a/src/data/SongStorage.cpp +++ b/src/data/SongStorage.cpp @@ -18,7 +18,6 @@ #include #include #include -#include "dbg.h" #include "i18n.h" #include "define.h" diff --git a/src/data/album_info.cpp b/src/data/album_info.cpp index 722db2a..27490a2 100644 --- a/src/data/album_info.cpp +++ b/src/data/album_info.cpp @@ -16,7 +16,6 @@ #include #include -#include "dbg.h" #include "i18n.h" #include #include "album_info.h" diff --git a/src/data/bus.cpp b/src/data/bus.cpp index 06dd8ad..bfcbe0a 100644 --- a/src/data/bus.cpp +++ b/src/data/bus.cpp @@ -16,11 +16,12 @@ #include #include -#include -#define BUS_NAME "org.tizen.tv.homescreen.music" +#include + +#define BUS_NAME "org.tizen.tv.homescreen.music" #define BUS_OBJECT_PATH "/org/tizen/tv/music" -#define BUS_INTERFACE "org.tizen.tv.homescreen.dynamicbox" +#define BUS_INTERFACE "org.tizen.tv.homescreen.dynamicbox" #define BUS_SIGNAL_UPDATE "Update" #define BUS_TYPE G_BUS_TYPE_SYSTEM diff --git a/src/data/category_info.cpp b/src/data/category_info.cpp index 69a6639..edf40f8 100644 --- a/src/data/category_info.cpp +++ b/src/data/category_info.cpp @@ -16,8 +16,8 @@ #include #include -#include "dbg.h" #include "i18n.h" + #include #include "define.h" #include "category_info.h" diff --git a/src/data/folder_info.cpp b/src/data/folder_info.cpp index 5e722f3..3b44ee2 100644 --- a/src/data/folder_info.cpp +++ b/src/data/folder_info.cpp @@ -16,7 +16,6 @@ #include #include -#include "dbg.h" #include "i18n.h" #include #include "folder_info.h" diff --git a/src/data/mediadata.cpp b/src/data/mediadata.cpp index 532e9c4..83bbfe4 100644 --- a/src/data/mediadata.cpp +++ b/src/data/mediadata.cpp @@ -18,7 +18,6 @@ #include #include #include -#include "dbg.h" #include "i18n.h" #include "define.h" diff --git a/src/data/song_info.cpp b/src/data/song_info.cpp index b90a22f..d4e5361 100644 --- a/src/data/song_info.cpp +++ b/src/data/song_info.cpp @@ -16,7 +16,6 @@ #include #include -#include "dbg.h" #include "i18n.h" #include #include "song_info.h" diff --git a/src/main.cpp b/src/main.cpp index 3a1a133..1ec108c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include #include "song_info.h" @@ -32,6 +31,9 @@ #define MUSIC_WIN_TITLE "Music Player" +SET_TAG("org.tizen.music-player-tv-ref"); + + class CApp : public CBaseApp { private: diff --git a/src/playback/MusicControllerImpl.cpp b/src/playback/MusicControllerImpl.cpp index d8fd311..b5d98f9 100644 --- a/src/playback/MusicControllerImpl.cpp +++ b/src/playback/MusicControllerImpl.cpp @@ -16,7 +16,6 @@ #include #include -#include "dbg.h" #include "i18n.h" #include diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index fc05009..c4b012c 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -1,6 +1,5 @@ #include #include -#include "dbg.h" #include #include "song_info.h" #include "common.h" diff --git a/src/playback/playback-mgr.cpp b/src/playback/playback-mgr.cpp index 99fac0d..f18fa38 100644 --- a/src/playback/playback-mgr.cpp +++ b/src/playback/playback-mgr.cpp @@ -16,7 +16,6 @@ #include #include "i18n.h" -#include "dbg.h" #include #include "playback-mgr.h" diff --git a/src/playback/playlist-mgr.cpp b/src/playback/playlist-mgr.cpp index 23b53f1..60cf351 100644 --- a/src/playback/playlist-mgr.cpp +++ b/src/playback/playlist-mgr.cpp @@ -16,7 +16,6 @@ #include #include -#include "dbg.h" #include "i18n.h" #include #include "song_info.h" diff --git a/src/playback/volume-control.cpp b/src/playback/volume-control.cpp index 2d4da2f..b9a23cd 100644 --- a/src/playback/volume-control.cpp +++ b/src/playback/volume-control.cpp @@ -17,7 +17,6 @@ #include #include #include -#include "dbg.h" #include diff --git a/src/views/ErrorPopupWindow.cpp b/src/views/ErrorPopupWindow.cpp index 27283ca..352de4f 100644 --- a/src/views/ErrorPopupWindow.cpp +++ b/src/views/ErrorPopupWindow.cpp @@ -16,7 +16,6 @@ #include "i18n.h" #include "define.h" -#include "dbg.h" #include #include "common.h" #include "ErrorPopupWindow.h" diff --git a/src/views/ExtBaseLayout.cpp b/src/views/ExtBaseLayout.cpp index 930da87..4a84a0c 100644 --- a/src/views/ExtBaseLayout.cpp +++ b/src/views/ExtBaseLayout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include #include "ExtBaseLayout.h" diff --git a/src/views/HandleVolume.cpp b/src/views/HandleVolume.cpp index f96f9e7..ec0abdc 100644 --- a/src/views/HandleVolume.cpp +++ b/src/views/HandleVolume.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include "define.h" #include #include "common.h" diff --git a/src/views/Info.cpp b/src/views/Info.cpp index 01bebbb..0c09e22 100644 --- a/src/views/Info.cpp +++ b/src/views/Info.cpp @@ -15,7 +15,6 @@ */ #include "i18n.h" -#include "dbg.h" #include "define.h" #include "common.h" #include "Info.h" diff --git a/src/views/PlayListCtxPopup.cpp b/src/views/PlayListCtxPopup.cpp index 905ab32..124192e 100644 --- a/src/views/PlayListCtxPopup.cpp +++ b/src/views/PlayListCtxPopup.cpp @@ -16,7 +16,6 @@ #include "i18n.h" #include "define.h" -#include "dbg.h" #include #include "common.h" #include "Info.h" diff --git a/src/views/PlaySettingCtxPopup.cpp b/src/views/PlaySettingCtxPopup.cpp index 8049089..097361f 100644 --- a/src/views/PlaySettingCtxPopup.cpp +++ b/src/views/PlaySettingCtxPopup.cpp @@ -18,7 +18,6 @@ #include "define.h" #include "common.h" #include "Info.h" -#include "dbg.h" #include #include "PlaySettingCtxPopup.h" diff --git a/src/views/PlaybackController.cpp b/src/views/PlaybackController.cpp index 7221ef4..7628753 100644 --- a/src/views/PlaybackController.cpp +++ b/src/views/PlaybackController.cpp @@ -16,7 +16,6 @@ #include "define.h" #include "common.h" -#include "dbg.h" #include #include "song_info.h" diff --git a/src/views/RemovePopupWindow.cpp b/src/views/RemovePopupWindow.cpp index 8ca93e0..8b19d0b 100644 --- a/src/views/RemovePopupWindow.cpp +++ b/src/views/RemovePopupWindow.cpp @@ -16,7 +16,6 @@ #include "i18n.h" #include "define.h" -#include "dbg.h" #include #include "common.h" #include "RemovePopupWindow.h" diff --git a/src/views/SliderWidget.cpp b/src/views/SliderWidget.cpp index b3362d7..5eb87d1 100644 --- a/src/views/SliderWidget.cpp +++ b/src/views/SliderWidget.cpp @@ -16,7 +16,6 @@ #include "define.h" #include "common.h" -#include "dbg.h" #include #include "song_info.h" diff --git a/src/views/SortCtxPopup.cpp b/src/views/SortCtxPopup.cpp index 2bb8fb0..62003ad 100644 --- a/src/views/SortCtxPopup.cpp +++ b/src/views/SortCtxPopup.cpp @@ -16,7 +16,6 @@ #include "i18n.h" #include "define.h" -#include "dbg.h" #include #include "Info.h" diff --git a/src/views/SourceCtxPopup.cpp b/src/views/SourceCtxPopup.cpp index fbacc77..1d79e81 100644 --- a/src/views/SourceCtxPopup.cpp +++ b/src/views/SourceCtxPopup.cpp @@ -18,7 +18,6 @@ #include "define.h" #include "common.h" #include "Info.h" -#include "dbg.h" #include #include "SourceCtxPopup.h" diff --git a/src/views/Timer.cpp b/src/views/Timer.cpp index efde40a..0c447c5 100644 --- a/src/views/Timer.cpp +++ b/src/views/Timer.cpp @@ -17,7 +17,6 @@ #include "define.h" #include "common.h" -#include "dbg.h" #include #include "Timer.h" diff --git a/src/views/album-layout.cpp b/src/views/album-layout.cpp index 09ebfea..e89e374 100644 --- a/src/views/album-layout.cpp +++ b/src/views/album-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include #include "i18n.h" #include "define.h" diff --git a/src/views/album-songs-layout.cpp b/src/views/album-songs-layout.cpp index 8740290..4e327f2 100644 --- a/src/views/album-songs-layout.cpp +++ b/src/views/album-songs-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include "i18n.h" #include #include "define.h" diff --git a/src/views/artist-layout.cpp b/src/views/artist-layout.cpp index f6b7a70..32efc3a 100644 --- a/src/views/artist-layout.cpp +++ b/src/views/artist-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include #include "i18n.h" #include "define.h" diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index d2d00f9..d5c943c 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -16,7 +16,6 @@ #include "i18n.h" #include "define.h" -#include "dbg.h" #include #include "common.h" diff --git a/src/views/category-layout.cpp b/src/views/category-layout.cpp index d78a415..827fc28 100644 --- a/src/views/category-layout.cpp +++ b/src/views/category-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include #include "i18n.h" #include "define.h" diff --git a/src/views/category-songs-layout.cpp b/src/views/category-songs-layout.cpp index 8aff6ac..6294f43 100644 --- a/src/views/category-songs-layout.cpp +++ b/src/views/category-songs-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include "i18n.h" #include diff --git a/src/views/common-ui.cpp b/src/views/common-ui.cpp index 6d73506..af07e9c 100644 --- a/src/views/common-ui.cpp +++ b/src/views/common-ui.cpp @@ -16,7 +16,7 @@ #include "i18n.h" #include "define.h" -#include "dbg.h" + #include #include "common.h" #include "common-ui.h" diff --git a/src/views/context-view.cpp b/src/views/context-view.cpp index bb76472..a99cba3 100644 --- a/src/views/context-view.cpp +++ b/src/views/context-view.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include "i18n.h" #include #include "define.h" diff --git a/src/views/entry-popup.cpp b/src/views/entry-popup.cpp index d4ed9a1..8395295 100644 --- a/src/views/entry-popup.cpp +++ b/src/views/entry-popup.cpp @@ -16,7 +16,6 @@ #include "i18n.h" #include "define.h" -#include "dbg.h" #include #include "common.h" diff --git a/src/views/folder-layout.cpp b/src/views/folder-layout.cpp index 9dd0c50..237905c 100644 --- a/src/views/folder-layout.cpp +++ b/src/views/folder-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include #include "i18n.h" #include "define.h" diff --git a/src/views/genre-layout.cpp b/src/views/genre-layout.cpp index 7b25431..36ebff2 100644 --- a/src/views/genre-layout.cpp +++ b/src/views/genre-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include #include "i18n.h" #include "define.h" diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index e0b7f07..077fd2b 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -16,7 +16,6 @@ #include "define.h" #include "common.h" -#include "dbg.h" #include #include "Timer.h" diff --git a/src/views/playlist-layout.cpp b/src/views/playlist-layout.cpp index aa12123..f55c086 100644 --- a/src/views/playlist-layout.cpp +++ b/src/views/playlist-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include "i18n.h" #include diff --git a/src/views/song-layout.cpp b/src/views/song-layout.cpp index 4fd284f..d212091 100644 --- a/src/views/song-layout.cpp +++ b/src/views/song-layout.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "dbg.h" #include "i18n.h" #include -- 2.7.4 From 36078ef01f9919a97775493bf99c15fd678865d0 Mon Sep 17 00:00:00 2001 From: Kim Tae Soo Date: Tue, 21 Apr 2015 15:01:47 +0900 Subject: [PATCH 16/16] Clean source codes Change-Id: Ib658635d06f4971415c78d48d94dcb4bae062225 Signed-off-by: Kim Tae Soo --- src/data/AlbumStorage.cpp | 4 +-- src/data/CategoryStorage.cpp | 4 +-- src/data/FolderStorage.cpp | 4 +-- src/data/SongStorage.cpp | 3 +-- src/data/album_info.cpp | 2 +- src/data/bus.cpp | 11 ++++---- src/data/category_info.cpp | 3 +-- src/data/folder_info.cpp | 2 +- src/data/mediadata.cpp | 11 ++++---- src/data/song_info.cpp | 2 +- src/main.cpp | 50 +++--------------------------------- src/playback/MusicControllerImpl.cpp | 3 +-- src/playback/music-controller.cpp | 16 ++++++++++++ src/playback/playback-mgr.cpp | 2 +- src/playback/playlist-mgr.cpp | 2 +- src/playback/volume-control.cpp | 3 ++- src/views/ErrorPopupWindow.cpp | 30 +++++++++++----------- src/views/HandleVolume.cpp | 2 +- src/views/Info.cpp | 31 +++++++++++----------- src/views/PlayListCtxPopup.cpp | 30 +++++++++++----------- src/views/PlaySettingCtxPopup.cpp | 32 ++++++++++++----------- src/views/PlaybackController.cpp | 34 ++++++++++++------------ src/views/RemovePopupWindow.cpp | 30 +++++++++++----------- src/views/SliderWidget.cpp | 33 ++++++++++++------------ src/views/SortCtxPopup.cpp | 32 +++++++++++------------ src/views/SourceCtxPopup.cpp | 31 +++++++++++----------- src/views/Timer.cpp | 31 +++++++++++----------- src/views/album-layout.cpp | 2 +- src/views/album-songs-layout.cpp | 2 +- src/views/artist-layout.cpp | 1 - src/views/base-view.cpp | 3 +-- src/views/category-layout.cpp | 1 - src/views/category-songs-layout.cpp | 3 +-- src/views/common-ui.cpp | 3 +-- src/views/context-view.cpp | 2 +- src/views/entry-popup.cpp | 3 +-- src/views/folder-layout.cpp | 1 - src/views/genre-layout.cpp | 2 -- src/views/playback-view.cpp | 5 ++-- src/views/playlist-layout.cpp | 3 +-- src/views/song-layout.cpp | 3 +-- 41 files changed, 212 insertions(+), 260 deletions(-) diff --git a/src/data/AlbumStorage.cpp b/src/data/AlbumStorage.cpp index 045018c..8e454a1 100644 --- a/src/data/AlbumStorage.cpp +++ b/src/data/AlbumStorage.cpp @@ -19,11 +19,9 @@ #include #include #include - +#include #include "i18n.h" #include "define.h" - -#include #include "song_info.h" #include "album_info.h" #include "category_info.h" diff --git a/src/data/CategoryStorage.cpp b/src/data/CategoryStorage.cpp index 11cbed3..e0e9c83 100644 --- a/src/data/CategoryStorage.cpp +++ b/src/data/CategoryStorage.cpp @@ -18,11 +18,9 @@ #include #include #include - +#include #include "i18n.h" #include "define.h" - -#include #include "song_info.h" #include "album_info.h" #include "category_info.h" diff --git a/src/data/FolderStorage.cpp b/src/data/FolderStorage.cpp index 53f6c98..2cabd5e 100644 --- a/src/data/FolderStorage.cpp +++ b/src/data/FolderStorage.cpp @@ -14,15 +14,13 @@ * limitations under the License. */ - #include #include #include #include +#include #include "i18n.h" #include "define.h" - -#include #include "song_info.h" #include "album_info.h" #include "category_info.h" diff --git a/src/data/SongStorage.cpp b/src/data/SongStorage.cpp index a80f5ac..cb0e953 100644 --- a/src/data/SongStorage.cpp +++ b/src/data/SongStorage.cpp @@ -18,10 +18,9 @@ #include #include #include +#include #include "i18n.h" #include "define.h" - -#include #include "song_info.h" #include "album_info.h" #include "category_info.h" diff --git a/src/data/album_info.cpp b/src/data/album_info.cpp index 27490a2..b210da4 100644 --- a/src/data/album_info.cpp +++ b/src/data/album_info.cpp @@ -16,8 +16,8 @@ #include #include -#include "i18n.h" #include +#include "i18n.h" #include "album_info.h" diff --git a/src/data/bus.cpp b/src/data/bus.cpp index bfcbe0a..577577b 100644 --- a/src/data/bus.cpp +++ b/src/data/bus.cpp @@ -16,14 +16,13 @@ #include #include +#include -#include - -#define BUS_NAME "org.tizen.tv.homescreen.music" -#define BUS_OBJECT_PATH "/org/tizen/tv/music" -#define BUS_INTERFACE "org.tizen.tv.homescreen.dynamicbox" +#define BUS_NAME "org.tizen.tv.homescreen.music" +#define BUS_OBJECT_PATH "/org/tizen/tv/music" +#define BUS_INTERFACE "org.tizen.tv.homescreen.dynamicbox" #define BUS_SIGNAL_UPDATE "Update" -#define BUS_TYPE G_BUS_TYPE_SYSTEM +#define BUS_TYPE G_BUS_TYPE_SYSTEM static void _proxy_cb(GObject *obj, GAsyncResult *res, gpointer data) { diff --git a/src/data/category_info.cpp b/src/data/category_info.cpp index edf40f8..507f8a5 100644 --- a/src/data/category_info.cpp +++ b/src/data/category_info.cpp @@ -16,9 +16,8 @@ #include #include -#include "i18n.h" - #include +#include "i18n.h" #include "define.h" #include "category_info.h" diff --git a/src/data/folder_info.cpp b/src/data/folder_info.cpp index 3b44ee2..0319fbe 100644 --- a/src/data/folder_info.cpp +++ b/src/data/folder_info.cpp @@ -16,8 +16,8 @@ #include #include -#include "i18n.h" #include +#include "i18n.h" #include "folder_info.h" diff --git a/src/data/mediadata.cpp b/src/data/mediadata.cpp index 83bbfe4..b45fae2 100644 --- a/src/data/mediadata.cpp +++ b/src/data/mediadata.cpp @@ -18,10 +18,9 @@ #include #include #include +#include #include "i18n.h" #include "define.h" - -#include #include "song_info.h" #include "album_info.h" #include "category_info.h" @@ -33,10 +32,10 @@ #include "mediadata.h" #include "common.h" -#define MEDIA_CONDITION_MUSIC "(MEDIA_TYPE=3)" -#define MEDIA_CONDITION_INTERNAL "(MEDIA_STORAGE_TYPE=0)" -#define MEDIA_CONDITION_EXTERNAL "(MEDIA_STORAGE_TYPE=1)" -#define MUSIC_STR_UNKNOWN N_("Unknown") +#define MEDIA_CONDITION_MUSIC "(MEDIA_TYPE=3)" +#define MEDIA_CONDITION_INTERNAL "(MEDIA_STORAGE_TYPE=0)" +#define MEDIA_CONDITION_EXTERNAL "(MEDIA_STORAGE_TYPE=1)" +#define MUSIC_STR_UNKNOWN N_("Unknown") struct SMediadata { diff --git a/src/data/song_info.cpp b/src/data/song_info.cpp index d4e5361..20f9391 100644 --- a/src/data/song_info.cpp +++ b/src/data/song_info.cpp @@ -16,8 +16,8 @@ #include #include -#include "i18n.h" #include +#include "i18n.h" #include "song_info.h" diff --git a/src/main.cpp b/src/main.cpp index 1ec108c..ec5e952 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,7 +15,6 @@ */ #include - #include "song_info.h" #include "album_info.h" #include "define.h" @@ -25,10 +24,10 @@ #include "playback-view.h" #include "context-view.h" -#define PARAM_ALBUM "album_id" -#define PARAM_URI "uri" -#define PARAM_SOURCE "source" -#define MUSIC_WIN_TITLE "Music Player" +#define PARAM_ALBUM "album_id" +#define PARAM_URI "uri" +#define PARAM_SOURCE "source" +#define MUSIC_WIN_TITLE "Music Player" SET_TAG("org.tizen.music-player-tv-ref"); @@ -83,8 +82,6 @@ protected: { Evas_Object *win; - // To fix ghost phenomenon - //win = elm_win_add(NULL, name, ELM_WIN_BASIC); win = elm_win_util_standard_add(name, NULL); if (!win) return NULL; @@ -231,7 +228,6 @@ public: virtual int Run(int argc, char **argv) { memset(&ad, 0x00, sizeof(_appdata)); - //ad.name = PACKAGE; return CBaseApp::Run(argc, argv); } @@ -245,41 +241,3 @@ int main(int argc, char **argv) return 0; } -#if 0 -static int depth = 0; -const char* szDepth[] = { - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", -}; - -void __cyg_profile_func_enter(void *this_fn, void *call_site) __attribute__((no_instrument_function)); -void __cyg_profile_func_enter(void *this_fn, void *call_site) -{ - if (depth <= 10) { - printf("%s", szDepth[depth]); - _DBG("%s>%p/%p", szDepth[depth], call_site, this_fn); - } - printf(">%p/%p\n", call_site, this_fn); - depth++; -} -/* __cyg_profile_func_enter */ -void __cyg_profile_func_exit(void *this_fn, void *call_site) __attribute__((no_instrument_function)); -void __cyg_profile_func_exit(void *this_fn, void *call_site) -{ - depth--; - if (depth <= 10) { - printf("%s", szDepth[depth]); - _DBG("%s<%p/%p", szDepth[depth], call_site, this_fn); - } - printf("<%p/%p\n", call_site, this_fn); -} /* __cyg_profile_func_enter */ -#endif diff --git a/src/playback/MusicControllerImpl.cpp b/src/playback/MusicControllerImpl.cpp index b5d98f9..6d8e083 100644 --- a/src/playback/MusicControllerImpl.cpp +++ b/src/playback/MusicControllerImpl.cpp @@ -16,9 +16,8 @@ #include #include -#include "i18n.h" #include - +#include "i18n.h" #include "song_info.h" #include "album_info.h" #include "folder_info.h" diff --git a/src/playback/music-controller.cpp b/src/playback/music-controller.cpp index c4b012c..66e16fb 100644 --- a/src/playback/music-controller.cpp +++ b/src/playback/music-controller.cpp @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #include #include #include diff --git a/src/playback/playback-mgr.cpp b/src/playback/playback-mgr.cpp index f18fa38..4f802f2 100644 --- a/src/playback/playback-mgr.cpp +++ b/src/playback/playback-mgr.cpp @@ -15,8 +15,8 @@ */ #include -#include "i18n.h" #include +#include "i18n.h" #include "playback-mgr.h" diff --git a/src/playback/playlist-mgr.cpp b/src/playback/playlist-mgr.cpp index 60cf351..91ca518 100644 --- a/src/playback/playlist-mgr.cpp +++ b/src/playback/playlist-mgr.cpp @@ -16,8 +16,8 @@ #include #include -#include "i18n.h" #include +#include "i18n.h" #include "song_info.h" #include "playlist-mgr.h" #include "time.h" diff --git a/src/playback/volume-control.cpp b/src/playback/volume-control.cpp index b9a23cd..8c11e3b 100644 --- a/src/playback/volume-control.cpp +++ b/src/playback/volume-control.cpp @@ -16,13 +16,14 @@ #include #include -#include #include +#include "volume-control.h" #define VOLUME_MUTE 1 #define VOLUME_UNMUTE 0 + struct SVolumeController { int currentVolume; bool flagMute; diff --git a/src/views/ErrorPopupWindow.cpp b/src/views/ErrorPopupWindow.cpp index 352de4f..824ba76 100644 --- a/src/views/ErrorPopupWindow.cpp +++ b/src/views/ErrorPopupWindow.cpp @@ -1,22 +1,22 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "i18n.h" #include "define.h" -#include #include "common.h" #include "ErrorPopupWindow.h" diff --git a/src/views/HandleVolume.cpp b/src/views/HandleVolume.cpp index ec0abdc..a16f26f 100644 --- a/src/views/HandleVolume.cpp +++ b/src/views/HandleVolume.cpp @@ -14,8 +14,8 @@ * limitations under the License. */ -#include "define.h" #include +#include "define.h" #include "common.h" #include "common-ui.h" #include "HandleVolume.h" diff --git a/src/views/Info.cpp b/src/views/Info.cpp index 0c09e22..0ac9801 100644 --- a/src/views/Info.cpp +++ b/src/views/Info.cpp @@ -1,24 +1,24 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "i18n.h" #include "define.h" #include "common.h" #include "Info.h" -#include struct SInfo { @@ -30,6 +30,7 @@ struct SInfo { static SInfo g_info; + void CInfo::SetSourceType(int type) { g_info.sourceType = type; diff --git a/src/views/PlayListCtxPopup.cpp b/src/views/PlayListCtxPopup.cpp index 124192e..09a0d39 100644 --- a/src/views/PlayListCtxPopup.cpp +++ b/src/views/PlayListCtxPopup.cpp @@ -1,22 +1,22 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "i18n.h" #include "define.h" -#include #include "common.h" #include "Info.h" #include "PlayListCtxPopup.h" diff --git a/src/views/PlaySettingCtxPopup.cpp b/src/views/PlaySettingCtxPopup.cpp index 097361f..2bfdd01 100644 --- a/src/views/PlaySettingCtxPopup.cpp +++ b/src/views/PlaySettingCtxPopup.cpp @@ -1,26 +1,27 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "i18n.h" #include "define.h" #include "common.h" #include "Info.h" -#include #include "PlaySettingCtxPopup.h" + #define TOTAL_SETTING_BTNS 2 const char *settingText[TOTAL_SETTING_BTNS] = { @@ -33,6 +34,7 @@ const char *settingBtnId[TOTAL_SETTING_BTNS] = { "clear" }; + void CPlaySettingCtxPopup::t_OnConfiguration(void) { t_SetList(settingText, TOTAL_SETTING_BTNS, 0, diff --git a/src/views/PlaybackController.cpp b/src/views/PlaybackController.cpp index 7628753..a606020 100644 --- a/src/views/PlaybackController.cpp +++ b/src/views/PlaybackController.cpp @@ -1,33 +1,31 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include "i18n.h" #include "define.h" #include "common.h" -#include - #include "song_info.h" #include "music-controller.h" -#include "i18n.h" #include "common-ui.h" #include "PlaySettingCtxPopup.h" #include "ErrorPopupWindow.h" #include "Info.h" #include "PlaybackController.h" - #define TOTAL_CONTROL_BTNS 6 #define TOTAL_EDIT_BTNS 3 #define LP_INTERVAL 0.5 /* seconds */ diff --git a/src/views/RemovePopupWindow.cpp b/src/views/RemovePopupWindow.cpp index 8b19d0b..9afc293 100644 --- a/src/views/RemovePopupWindow.cpp +++ b/src/views/RemovePopupWindow.cpp @@ -1,22 +1,22 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "i18n.h" #include "define.h" -#include #include "common.h" #include "RemovePopupWindow.h" diff --git a/src/views/SliderWidget.cpp b/src/views/SliderWidget.cpp index 5eb87d1..51d570c 100644 --- a/src/views/SliderWidget.cpp +++ b/src/views/SliderWidget.cpp @@ -1,26 +1,25 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include "i18n.h" #include "define.h" #include "common.h" -#include - #include "song_info.h" #include "music-controller.h" -#include "i18n.h" #include "common-ui.h" #include "SliderWidget.h" diff --git a/src/views/SortCtxPopup.cpp b/src/views/SortCtxPopup.cpp index 62003ad..566d15a 100644 --- a/src/views/SortCtxPopup.cpp +++ b/src/views/SortCtxPopup.cpp @@ -1,26 +1,26 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "i18n.h" #include "define.h" -#include - #include "Info.h" #include "SortCtxPopup.h" + const char *sortTextSong[] = { N_("Title A-Z"), N_("Title Z-A"), diff --git a/src/views/SourceCtxPopup.cpp b/src/views/SourceCtxPopup.cpp index 1d79e81..d79ec74 100644 --- a/src/views/SourceCtxPopup.cpp +++ b/src/views/SourceCtxPopup.cpp @@ -1,26 +1,27 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "i18n.h" #include "define.h" #include "common.h" #include "Info.h" -#include #include "SourceCtxPopup.h" + const char *sourceText[] = { N_("All Source"), N_("TV"), diff --git a/src/views/Timer.cpp b/src/views/Timer.cpp index 0c447c5..28d4ed2 100644 --- a/src/views/Timer.cpp +++ b/src/views/Timer.cpp @@ -1,23 +1,22 @@ /* -* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -* -* Licensed under the Apache License, Version 2.0 (the License); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include #include "define.h" #include "common.h" -#include #include "Timer.h" diff --git a/src/views/album-layout.cpp b/src/views/album-layout.cpp index e89e374..1d9dc89 100644 --- a/src/views/album-layout.cpp +++ b/src/views/album-layout.cpp @@ -12,7 +12,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. -*/ + */ #include #include "i18n.h" diff --git a/src/views/album-songs-layout.cpp b/src/views/album-songs-layout.cpp index 4e327f2..2d73eba 100644 --- a/src/views/album-songs-layout.cpp +++ b/src/views/album-songs-layout.cpp @@ -14,8 +14,8 @@ * limitations under the License. */ -#include "i18n.h" #include +#include "i18n.h" #include "define.h" #include "common.h" #include "song_info.h" diff --git a/src/views/artist-layout.cpp b/src/views/artist-layout.cpp index 32efc3a..4367429 100644 --- a/src/views/artist-layout.cpp +++ b/src/views/artist-layout.cpp @@ -17,7 +17,6 @@ #include #include "i18n.h" #include "define.h" - #include "common.h" #include "category_info.h" #include "album_info.h" diff --git a/src/views/base-view.cpp b/src/views/base-view.cpp index d5c943c..98f9b4e 100644 --- a/src/views/base-view.cpp +++ b/src/views/base-view.cpp @@ -14,10 +14,9 @@ * limitations under the License. */ +#include #include "i18n.h" #include "define.h" -#include - #include "common.h" #include "song_info.h" #include "album_info.h" diff --git a/src/views/category-layout.cpp b/src/views/category-layout.cpp index 827fc28..8cd5831 100644 --- a/src/views/category-layout.cpp +++ b/src/views/category-layout.cpp @@ -17,7 +17,6 @@ #include #include "i18n.h" #include "define.h" - #include "common.h" #include "category_info.h" #include "album_info.h" diff --git a/src/views/category-songs-layout.cpp b/src/views/category-songs-layout.cpp index 6294f43..9d9214c 100644 --- a/src/views/category-songs-layout.cpp +++ b/src/views/category-songs-layout.cpp @@ -14,9 +14,8 @@ * limitations under the License. */ -#include "i18n.h" #include - +#include "i18n.h" #include "define.h" #include "common.h" #include "song_info.h" diff --git a/src/views/common-ui.cpp b/src/views/common-ui.cpp index af07e9c..d1eae37 100644 --- a/src/views/common-ui.cpp +++ b/src/views/common-ui.cpp @@ -14,10 +14,9 @@ * limitations under the License. */ +#include #include "i18n.h" #include "define.h" - -#include #include "common.h" #include "common-ui.h" #include "song_info.h" diff --git a/src/views/context-view.cpp b/src/views/context-view.cpp index a99cba3..933ee5b 100644 --- a/src/views/context-view.cpp +++ b/src/views/context-view.cpp @@ -14,8 +14,8 @@ * limitations under the License. */ -#include "i18n.h" #include +#include "i18n.h" #include "define.h" #include "song_info.h" #include "album_info.h" diff --git a/src/views/entry-popup.cpp b/src/views/entry-popup.cpp index 8395295..1d052b0 100644 --- a/src/views/entry-popup.cpp +++ b/src/views/entry-popup.cpp @@ -14,10 +14,9 @@ * limitations under the License. */ +#include #include "i18n.h" #include "define.h" -#include - #include "common.h" #include "common-ui.h" #include "entry-popup.h" diff --git a/src/views/folder-layout.cpp b/src/views/folder-layout.cpp index 237905c..8b7fc6b 100644 --- a/src/views/folder-layout.cpp +++ b/src/views/folder-layout.cpp @@ -17,7 +17,6 @@ #include #include "i18n.h" #include "define.h" - #include "common.h" #include "folder_info.h" #include "song_info.h" diff --git a/src/views/genre-layout.cpp b/src/views/genre-layout.cpp index 36ebff2..5ea77a2 100644 --- a/src/views/genre-layout.cpp +++ b/src/views/genre-layout.cpp @@ -17,7 +17,6 @@ #include #include "i18n.h" #include "define.h" - #include "common.h" #include "category_info.h" #include "album_info.h" @@ -32,7 +31,6 @@ struct SGenreLayout { - }; diff --git a/src/views/playback-view.cpp b/src/views/playback-view.cpp index 077fd2b..97ef925 100644 --- a/src/views/playback-view.cpp +++ b/src/views/playback-view.cpp @@ -14,16 +14,15 @@ * limitations under the License. */ +#include +#include "i18n.h" #include "define.h" #include "common.h" -#include - #include "Timer.h" #include "song_info.h" #include "album_info.h" #include "music-controller.h" #include "volume-control.h" -#include "i18n.h" #include "common-ui.h" #include "playback-view.h" #include "context-view.h" diff --git a/src/views/playlist-layout.cpp b/src/views/playlist-layout.cpp index f55c086..1404220 100644 --- a/src/views/playlist-layout.cpp +++ b/src/views/playlist-layout.cpp @@ -14,9 +14,8 @@ * limitations under the License. */ -#include "i18n.h" #include - +#include "i18n.h" #include "define.h" #include "common.h" #include "category_info.h" diff --git a/src/views/song-layout.cpp b/src/views/song-layout.cpp index d212091..1cd0321 100644 --- a/src/views/song-layout.cpp +++ b/src/views/song-layout.cpp @@ -14,9 +14,8 @@ * limitations under the License. */ -#include "i18n.h" #include - +#include "i18n.h" #include "define.h" #include "common.h" #include "song_info.h" -- 2.7.4