From: luozheng <1732036298@qq.com> Date: Fri, 9 Aug 2024 11:09:40 +0000 (+0800) Subject: 音乐播放器中音乐列表。 X-Git-Tag: release_V1.2.70_20241020_135402~689 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=687aefc0b6b0b05a681cdbc189146e0a5a354589;p=mirrors%2FFD230.git 音乐播放器中音乐列表。 1.删除音乐视图优化,2.音乐删除同步刷新到还未验证。 3.音乐列表在歌曲不在情况下还需添加提示 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h index 23ea991cb..2108562cf 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-05 15:20:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-06 18:31:14 + * @LastEditTime: 2024-08-09 18:23:38 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h */ @@ -17,8 +17,6 @@ namespace OHOS { - static constexpr const char *ENSURE_DELETE_BUTTON = "ensureDeleteButton"; - static constexpr const char *CANCEL_DELETE_BUTTON = "cancelDeleteButton"; class PlayerListDelSongView { public: @@ -39,16 +37,17 @@ namespace OHOS int16_t y; int16_t w; int16_t h; - const char *ViewId; const char *src; }; PlayerListDelSongView(); virtual ~PlayerListDelSongView(); static PlayerListDelSongView *GetInstance(void); - UIScrollView *InitDelSongView(); + UIViewGroup *CreatePlayerListDelSongView(); void SetTheSongLabelStyle(const char *songName); void DeleteSongNameFile(void); + UIButton *GetEnsureDeleteButton(void); + UIButton *GetCancelDeleteButton(void); private: void ClearAll(void); @@ -57,6 +56,7 @@ namespace OHOS bool CreatePlayerListDelSongViewLabel(void); bool CreatPlayerListDelSongViewButton(void); bool CreatePlayerListDelSongViewScrollView(void); + UIViewGroup *group{nullptr}; UIScrollView *scrollView{nullptr}; UILabelExt *title{nullptr}; UILabelExt *deleteNotelabel{nullptr}; @@ -65,6 +65,8 @@ namespace OHOS UIButton *cancelDeleteButton{nullptr}; std::string delSongName; + UIView::OnDragListener *dragListener{nullptr}; + UIView::OnClickListener *buttonClickListener{nullptr}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h index f896c5ddd..c0367436d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-05 15:20:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-06 18:31:23 + * @LastEditTime: 2024-08-09 16:49:16 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h */ @@ -14,9 +14,10 @@ #include "components/ui_view_group.h" #include "components/ui_button.h" #include "player/include/PlayersCaseListAdapter.h" -#include "PlayersPresenter.h" +#include "player/include/PlayersPresenter.h" namespace OHOS { + class PlayerListItemView : public UIViewGroup { public: @@ -33,11 +34,13 @@ namespace OHOS { return &sButton; } + void UpdateItemViewStyle(bool isplaying); + private: PlayerListItemView(const PlayerListItemView &); UILabel sLabel; UIButton sButton; - PlayerListItem sItemInfo{0,nullptr}; + PlayerListItem sItemInfo{0, nullptr, nullptr}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h index ac102f6ae..f9e4f1fdb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h @@ -2,62 +2,37 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-05 15:20:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-06 18:31:31 + * @LastEditTime: 2024-08-09 16:46:56 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h */ #ifndef MUSIC_PLAYERS_CASE_LIST_ADAPTER_H #define MUSIC_PLAYERS_CASE_LIST_ADAPTER_H -#include -#include #include "components/abstract_adapter.h" #include "components/ui_label.h" -#include "components/ui_label_ext.h" #include "components/ui_label_button.h" -#include "components/ui_scroll_view.h" #include "UiConfig.h" -namespace OHOS { -class PlayersCaseListAdapter; -class BtnOnClickListListener : public UIView::OnClickListener { -public: - BtnOnClickListListener(){} - ~BtnOnClickListListener(){} - bool OnClick(UIView& view, const ClickEvent& event) override; - void SetButtonAndLabel(UILabel *label,UIButton *button,int index,UIView::OnClickListener *listener) - { - m_label[index] = label; - m_label[index]->SetTouchable(true); - m_label[index]->SetOnClickListener(listener); - m_button[index] = button; - m_button[index]->SetOnClickListener(listener); - } - void SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index); - void SongNotClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index); -private: - void BtnOnListData(UIView& view); - UILabel * m_label[256]{nullptr}; - UIButton *m_button[256]{nullptr}; - int playOrDeleteStatus[256]{0}; - char *sliceId_{nullptr};//歌名 - int16_t index_{0}; //歌曲索引 -}; -typedef struct +namespace OHOS { - int index; - const char *label; // 标签 -} PlayerListItem; -class PlayersCaseListAdapter : public AbstractAdapter { -public: - PlayersCaseListAdapter(); - ~PlayersCaseListAdapter(); - static PlayersCaseListAdapter *GetInstance(void); - UIView *GetView(UIView *inView, int16_t index) override; - uint16_t GetCount() override; - BtnOnClickListListener *p_BtnOnClickListListener{nullptr}; -private: - UIView::OnClickListener *listener{nullptr}; -}; + typedef struct + { + int index; + const char *musicName; + UIView::OnClickListener *listener; + } PlayerListItem; + + class PlayersCaseListAdapter : public AbstractAdapter + { + public: + PlayersCaseListAdapter() {} + ~PlayersCaseListAdapter(); + UIView *GetView(UIView *inView, int16_t index) override; + uint16_t GetCount() override; + + private: + UIView::OnClickListener *listener{nullptr}; + }; } // namespace OHOS #endif // PLAYERS_CASE_LIST_ADAPTER_H \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h index 34465554a..ed11ebf21 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-05 15:20:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-08 18:32:13 + * @LastEditTime: 2024-08-09 18:31:29 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h */ @@ -95,6 +95,7 @@ public: void ClearActivateAudioInterrupt(void); void GetDuration(int64_t &duration); public: + std::string GetMusicPlayPath(void); bool GetMusicSource(); void SetMusicSource(bool value); private: @@ -118,11 +119,12 @@ private: void SequencePlayout(void); void RandomPlayout(void); void NextSong(int16_t index); - int16_t currentIndex{0}; + int16_t currentIndex{0}; //当前在播哪一首歌的索引 int16_t playerModel{0}; char *currentSongName{nullptr}; bool isStopAndReset{false}; bool isActivateAudioInterrupt{false}; + std::string musicPlayPath = APP_MUSIC_PATH; /*音乐播放路径*/ }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h index 291a708a2..9bffa44d9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-05 15:20:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-08 19:03:35 + * @LastEditTime: 2024-08-09 18:07:21 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h */ @@ -53,6 +53,8 @@ class VolumeSettingView; #define BLUETOOTH_OPTIONS_VIEW "BluetoothOptionsView" #define BLUETOOTH_RECONNECT_VIEW "BluetoothReconnectView" #define MUSIC_PLAYER_SOURCE_VIEW "MusicPlayerSourceView" //音乐来源视图的滑动监听 +#define MUSIC_PLAYER_LIST_VIEW "MusicPlayerListView" //音乐列表的滑动监听 +#define MUSIC_PLAYER_DELETE_VIEW "MusicPlayerDeleteView" //音乐删除视图的滑动监听 #define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView" #define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView" #define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView" @@ -97,11 +99,6 @@ public: ButtonOnClickListener() {} ButtonOnClickListener(UIView *view) : view_(view) {} ~ButtonOnClickListener(); - static ButtonOnClickListener *GetInstance() - { - static ButtonOnClickListener instance; - return &instance; - } bool OnClick(UIView& view, const ClickEvent& event) override; private: UIView *view_{nullptr}; @@ -109,7 +106,7 @@ private: void SoundButtonOnClick(); void PlayerModelButtonOnClick(); void OptionsButtonOnClick(); - PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr}; + void MusicListButtonOnClick(); VolumeSettingView *volumeSettingView{nullptr}; }; @@ -165,7 +162,9 @@ public: static PlayerOnDragListener *GetInstance(); private: void OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan); - void OnDragChangBluetoothView(const DragEvent& event); + void OnDragChangMusicPlayerSourceView(const DragEvent& event); + void OnDragChangMusicPlayerListView(const DragEvent& event); + void OnDragChangMusicPlayerDeleteView(const DragEvent& event); void DropEarPhoneView(const DragEvent& event); void DropEarListView(const DragEvent& event); void CorrespondingJump(const DragEvent& event, int16_t hideView); @@ -240,7 +239,6 @@ public: void SetPlayerState(bool value); void PlayerbackReset(void); void PlayerHeadsetReset(void); - void ShowPlayerListGroup(void); private: bool OnClick(UIView& view, const ClickEvent& event) override; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h index 7d177e0ba..1062b1577 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-05 15:20:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-08 18:43:24 + * @LastEditTime: 2024-08-09 18:19:34 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h */ @@ -81,10 +81,6 @@ namespace OHOS void SetVolumeAddOne(void); void SetPlayerCtrVolume(float leftVolume, float rightVolume); - void SetPlayerListGroupStatus(bool status); - void ShowUpDelSongView(void); - void SetPlayerDelSongViewStatus(bool status); - UIButton *GetMusicListButton(void); UIButton *GetPreButton(void); UIButton *GetNextButton(void); @@ -92,8 +88,9 @@ namespace OHOS UIButton *GetOptionsButton(void); UIButton *GetSoundButton(void); UICheckBox *GetPlayerButton(void); + PlayersCaseListAdapter *GetMusicListAdapter(void); - UIList *GetPlayerList(void); + UIList *GetMusicListList(void); UICircleProgress *GetPlaybackProgress(void); UICheckBox::UICheckBoxState GetPlayerButtonState(void); @@ -107,6 +104,8 @@ namespace OHOS bool ChangeToMainMusicPlayerView(int16_t thisView); bool ChangeToMusicSourceView(int16_t thisView); bool ChangeToVolumeControlView(int16_t thisView); + bool ChangeToMusicListView(int16_t thisView); + bool ChangeToMusicDeleteView(int16_t thisView); private: UIButton *PlayerViewButtonInit(ButtonConfig &buttonconfig); @@ -118,6 +117,7 @@ namespace OHOS bool CreatePlayerButtonView(void); bool CreatePlayerScrollView(void); bool CreatePlayerView(void); + UIViewGroup *CreateMusicListGroupView(void); void ClearAll(void); bool LoadPlayerButtonImage(UIButton *button, uint32_t resId); bool LoadPlayerCheckBoxButtonImage(UICheckBox *button, uint32_t resId, uint32_t hlResId); @@ -140,6 +140,7 @@ namespace OHOS VolumeSettingView *volumeSettingView{nullptr}; // 声音设置 MusicPlayerSourceView *musicPlayerSourceView{nullptr}; // 音乐来源 PlayerListDelSongView *playerListDelSongView{nullptr}; // 音乐删除视图 + UIViewGroup *musicListGroupView{nullptr}; // 音乐列表视图 private: UIView::OnClickListener *clickListener{nullptr}; @@ -157,10 +158,8 @@ namespace OHOS UILabelExt *MusciSourceLabel{nullptr}; // 音乐来源标签 UILabelExt *PhoneMusicConnectStatusLabel{nullptr}; // 手机音乐连接状态标签 - UIScrollView *DelSongView{nullptr}; - - UIScrollView *listGroup{nullptr}; // 音乐列表容器视图 - UILabel *musicListTitle{nullptr}; // 音乐列表的标题 + UIScrollView *musicListScrollView{nullptr}; // 音乐列表容器视图 + UILabelExt *musicListTitle{nullptr}; // 音乐列表的标题 UIList *musicList{nullptr}; // 音乐列表 PlayersCaseListAdapter *musicAdapter{nullptr}; // 音乐列表适配器 diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp index 34737b81e..434c4aabd 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp @@ -55,6 +55,7 @@ namespace OHOS UpdateBluetoothHeadSetViewIsVisible(); // 1.a2dp未连接,向手机发起a2dp连接 + // 如果蓝牙没连接直接是跳转到蓝牙连接失败视图,连接了就有一个主动去连手机的a2dp过程,5秒超市 playersPresenter->UpdatePlayerView(); } @@ -74,80 +75,6 @@ namespace OHOS return true; } - // class BluetoothOnClickListener : public UIView::OnClickListener - // { - // public: - // BluetoothOnClickListener(UIView *view) : view_(view) {} - // ~BluetoothOnClickListener() {} - - // bool OnClick(UIView &view, const ClickEvent &event) override - // { - // UNUSED(view); - // UNUSED(event); - // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListener OnClick"); - // MusicPlayerSourceView *bluetoothView = MusicPlayerSourceView::GetInstance(); - // PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance(); - // ImageInfo *image; - // if (bluetoothView == nullptr) - // { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView is nullptr"); - // return false; - // } - // if (view_ == (UIView *)bluetoothView->GetWatchButton()) - // { - // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "watchButton OnClick"); // 手表音乐 - // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES); - // playersPresenter->SetOptionsButtonImageStyle(image); - // playersPresenter->SetPhoneMusicConnectStatusLabelIsVisible(false); - // playersPresenter->SetMusicListButtonIsVisible(true); - // playersPresenter->SetMusicSourceSetText("本地音乐"); - // } - // else if (view_ == (UIView *)bluetoothView->GetPhoneButton()) - // { - // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneButton OnClick"); // 手机音乐 - // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PHONE_COLOR, PLAYER_IAMGES); - // playersPresenter->SetOptionsButtonImageStyle(image); - // playersPresenter->SetPhoneMusicConnectStatusLabelIsVisible(true); - // playersPresenter->SetMusicListButtonIsVisible(false); - // /* -------------------------------------------------------------------------- */ - // // 以后会用 - // // std::string phonemusic_connect_status_text = ""; - // // if(获取连接状态。。。) - // // { - // // 获取成功。。。 - // // phonemusic_connect_status_text = "已连接"; - // // } - // // else - // // { - // // 获取失败。。。 - // // phonemusic_connect_status_text = "未连接"; - // // } - // // playersPresenter->SetPhoneMusicConnectStatusSetText(phonemusic_connect_status_text.c_str()); - // /* -------------------------------------------------------------------------- */ - // playersPresenter->SetPhoneMusicConnectStatusSetText("未连接"); - // playersPresenter->SetMusicSourceSetText("手机音乐"); // 还有小bug,切换到其他界面时标签内容为“手机音乐”,会被还原成本地音乐 - // } - // else if (view_ == (UIView *)bluetoothView->GetSettingButton()) - // { - // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "settingButton OnClick"); - // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_EARPHONE_COLOR, PLAYER_IAMGES); - // playersPresenter->SetOptionsButtonImageStyle(image); - // JumpView *jumpView = JumpView::GetInstance(); - // if (jumpView == nullptr) - // { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail"); - // return false; - // } - // jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, - // JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW); - // } - // return true; - // } - - // private: - // UIView *view_ = nullptr; - // }; - void MusicPlayerSourceView::ClearAll() { if (group != nullptr) @@ -156,57 +83,57 @@ namespace OHOS if (scrollView != nullptr) { scrollView->RemoveAll(); - if (titleLabel) + if (titleLabel != nullptr) { delete titleLabel; titleLabel = nullptr; } - if (phoneLableButton) + if (phoneLableButton != nullptr) { delete phoneLableButton; phoneLableButton = nullptr; } - if (watchLableButton) + if (watchLableButton != nullptr) { delete watchLableButton; watchLableButton = nullptr; } - if (bluetoothHeadsetLableButton) + if (bluetoothHeadsetLableButton != nullptr) { delete bluetoothHeadsetLableButton; bluetoothHeadsetLableButton = nullptr; } - if (phoneImage) + if (phoneImage != nullptr) { delete phoneImage; phoneImage = nullptr; } - if (watchImage) + if (watchImage != nullptr) { delete watchImage; watchImage = nullptr; } - if (bluetoothHeadsetImage) + if (bluetoothHeadsetImage != nullptr) { delete bluetoothHeadsetImage; bluetoothHeadsetImage = nullptr; } - if (phoneLabel) + if (phoneLabel != nullptr) { delete phoneLabel; phoneLabel = nullptr; } - if (watchLabel) + if (watchLabel != nullptr) { delete watchLabel; watchLabel = nullptr; } - if (bluetoothHeadsetLabel) + if (bluetoothHeadsetLabel != nullptr) { delete bluetoothHeadsetLabel; bluetoothHeadsetLabel = nullptr; } - if (bluetoothHeadsetConnectState) + if (bluetoothHeadsetConnectState != nullptr) { delete bluetoothHeadsetConnectState; bluetoothHeadsetConnectState = nullptr; diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListDelSongView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListDelSongView.cpp index 83ac59b26..d857da0f6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListDelSongView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListDelSongView.cpp @@ -29,39 +29,56 @@ namespace OHOS void PlayerListDelSongView::ClearAll(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::ClearAll"); - if (scrollView != nullptr) + if (group != nullptr) { - scrollView->RemoveAll(); + group->RemoveAll(); - if (title != nullptr) + if (dragListener != nullptr) { - delete title; - title = nullptr; + delete dragListener; + dragListener = nullptr; } - - if (deleteNotelabel != nullptr) - { - delete deleteNotelabel; - deleteNotelabel = nullptr; - } - if (songNameLabel != nullptr) - { - delete songNameLabel; - songNameLabel = nullptr; - } - if (ensureDeleteButton != nullptr) + if (buttonClickListener != nullptr) { - delete ensureDeleteButton; - ensureDeleteButton = nullptr; + delete buttonClickListener; + buttonClickListener = nullptr; } - if (cancelDeleteButton != nullptr) + if (scrollView != nullptr) { - delete cancelDeleteButton; - cancelDeleteButton = nullptr; - } + scrollView->RemoveAll(); + + if (title != nullptr) + { + delete title; + title = nullptr; + } + + if (deleteNotelabel != nullptr) + { + delete deleteNotelabel; + deleteNotelabel = nullptr; + } + if (songNameLabel != nullptr) + { + delete songNameLabel; + songNameLabel = nullptr; + } + if (ensureDeleteButton != nullptr) + { + delete ensureDeleteButton; + ensureDeleteButton = nullptr; + } + if (cancelDeleteButton != nullptr) + { + delete cancelDeleteButton; + cancelDeleteButton = nullptr; + } - delete scrollView; - scrollView = nullptr; + delete scrollView; + scrollView = nullptr; + } + delete group; + group = nullptr; } } @@ -74,6 +91,7 @@ namespace OHOS songNameLabel->Invalidate(); } + // 删除歌曲文件 void PlayerListDelSongView::DeleteSongNameFile(void) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " whill Deleted file:", delSongName.c_str()); @@ -89,6 +107,16 @@ namespace OHOS } } + UIButton *PlayerListDelSongView::GetEnsureDeleteButton(void) + { + return ensureDeleteButton; + } + + UIButton *PlayerListDelSongView::GetCancelDeleteButton(void) + { + return cancelDeleteButton; + } + UILabelExt *PlayerListDelSongView::PlayerListDelSongViewLabelInit(LabelConfig &labelconfig) { UILabelExt *label = new UILabelExt(); @@ -114,7 +142,6 @@ namespace OHOS return nullptr; } button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); - button->SetViewId(buttonconfig.ViewId); button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); @@ -128,13 +155,13 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::CreatePlayerListDelSongViewLabel"); LabelConfig labelConfig = { .left = 83, - .top = 52, + .top = 50, .width = 300, .height = 35, .fontSize = 30, .lineHeigh = 35, .textId = STR_MUSIC_LIST, - .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION, }; title = PlayerListDelSongViewLabelInit(labelConfig); if (title == nullptr) @@ -152,7 +179,8 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deleteNotelabel new fail!"); return false; } - deleteNotelabel->SetText("是否删除"); + // deleteNotelabel->SetText("是否永久删除"); + deleteNotelabel->SetTextId(STR_DELETE_PERMANENTLY); deleteNotelabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); /* -------------------------------------------------------------------------- */ labelConfig.top = 220; @@ -176,26 +204,24 @@ namespace OHOS .y = 299, .w = 100, .h = 100, - .ViewId = CANCEL_DELETE_BUTTON, .src = PNG_SYSTEM_CHECK_OFF_IMAGE, }; - ensureDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig); - if (ensureDeleteButton == nullptr) + cancelDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig); + if (cancelDeleteButton == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureDeleteButton new fail!"); return false; } /* -------------------------------------------------------------------------- */ buttonconfig.x = 256; - buttonconfig.ViewId = ENSURE_DELETE_BUTTON, buttonconfig.src = PNG_SYSTEM_CHECK_ON_IMAGE; - cancelDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig); - if (cancelDeleteButton == nullptr) + ensureDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig); + if (ensureDeleteButton == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cancelDeleteButton new fail!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureDeleteButton new fail!"); return false; } - UIView::OnClickListener *buttonClickListener = static_cast(ButtonOnClickListener::GetInstance()); + buttonClickListener = static_cast(new ButtonOnClickListener()); if (buttonClickListener == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener::GetInstance fail"); @@ -219,22 +245,40 @@ namespace OHOS return false; } scrollView->SetPosition(0, 0, 466, 466); - // UIView::OnDragListener *dragListener = static_cast(AiVoicePresenter::GetInstance()); - // if (dragListener == nullptr) - // { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::dragListener new fail!"); - // return false; - // } - // scrollView->SetOnDragListener(dragListener); scrollView->SetTouchable(true); scrollView->SetDraggable(true); } return true; } - UIScrollView *PlayerListDelSongView::InitDelSongView() + UIViewGroup *PlayerListDelSongView::CreatePlayerListDelSongView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::InitDelSongView"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::CreatePlayerListDelSongView"); + if (group == nullptr) + { + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail"); + return nullptr; + } + } + group->SetPosition(0, 0, 466, 466); + group->SetStyle(STYLE_BACKGROUND_OPA, 0); + group->SetTouchable(true); + group->SetDraggable(true); + group->SetIntercept(true); + group->SetViewId(MUSIC_PLAYER_DELETE_VIEW); + if (dragListener == nullptr) + { + dragListener = static_cast(new PlayerOnDragListener()); + if (dragListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener new fail"); + return nullptr; + } + } + group->SetOnDragListener(dragListener); if (!CreatePlayerListDelSongViewScrollView() || !CreatePlayerListDelSongViewLabel() || !CreatPlayerListDelSongViewButton()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::InitDelSongView fail!!"); @@ -244,8 +288,9 @@ namespace OHOS scrollView->Add(songNameLabel); scrollView->Add(ensureDeleteButton); scrollView->Add(cancelDeleteButton); + group->Add(scrollView); - return scrollView; + return group; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp index a264c0cad..0ef6f0c41 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-12 14:15:45 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-06 16:18:03 + * @LastEditTime: 2024-08-09 17:34:29 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp */ #include "player/include/PlayerListitemView.h" @@ -13,10 +13,10 @@ namespace OHOS PlayerListItemView::PlayerListItemView() { - SetPosition(0, 0, 332, 78); // 每一首歌曲的itemview宽高要配置好,因为每一首加到list歌曲都是以这个视图为基准 + SetPosition(0, 0, 330, 70); SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); SetStyle(STYLE_BACKGROUND_OPA, 255); - SetTouchable(true); + SetTouchable(false); SetUpChild(); Add(&sLabel); Add(&sButton); @@ -33,28 +33,34 @@ namespace OHOS void PlayerListItemView::SetItemInfo(const PlayerListItem itemInfo) { sItemInfo = itemInfo; - sLabel.SetText(itemInfo.label); + sLabel.SetText(itemInfo.musicName); + if (itemInfo.listener != nullptr) + { + sLabel.SetOnClickListener(itemInfo.listener); + sButton.SetOnClickListener(itemInfo.listener); + } } /// @brief 设置每一个itemview上的组件 void PlayerListItemView::SetUpChild() { - sLabel.SetPosition(0, 0, 200, 40); + sLabel.SetPosition(0, 0, 260, 70); sLabel.SetStyle(STYLE_TEXT_FONT, 30); - sLabel.SetStyle(STYLE_LINE_HEIGHT, 36); - sLabel.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + sLabel.SetStyle(STYLE_LINE_HEIGHT, 35); + sLabel.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff)); + sLabel.SetRollSpeed(70); sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + sLabel.SetTouchable(true); + sLabel.SetAlign(TEXT_ALIGNMENT_LEFT,TEXT_ALIGNMENT_TOP); - sButton.SetPosition(292, 0, 78, 78); + sButton.SetPosition(260, 0, 70, 70); sButton.SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); sButton.SetStyle(STYLE_BACKGROUND_OPA, 0x00); - sButton.SetStyle(STYLE_BORDER_RADIUS, 0); ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES); sButton.SetImageSrc(image, image); - sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4fc34c, UIButton::PRESSED); - sButton.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - sButton.SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED); + sButton.SetImagePosition(30, 0); + sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED); } /// @brief 获取list歌单的中每首歌的在list的下标 @@ -64,4 +70,32 @@ namespace OHOS return sItemInfo.index; } + void PlayerListItemView::UpdateItemViewStyle(bool isplaying) + { + ImageInfo *image; + if (isplaying) + { + image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAYING, PLAYER_IAMGES); + if (image == nullptr) + { + return; + } + sButton.SetImageSrc(image, image); + sButton.SetTouchable(false); + sLabel.SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff)); + } + else + { + image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES); + if (image == nullptr) + { + return; + } + sButton.SetImageSrc(image, image); + sButton.SetTouchable(true); + sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff)); + } + Invalidate(); + } + } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp index 63a7437b5..bbeb2e56d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp @@ -5,208 +5,178 @@ * Create: 2021-07-26 */ #include -#include "player/include/PlayersCaseListAdapter.h" +#include "PlayersCaseListAdapter.h" #include "gfx_utils/list.h" #include "player/include/PlayersView.h" #include "player/include/PlayersPresenter.h" -#include "wearable_log.h" #include "player/include/PlayersModel.h" #include "player/include/PlayerListitemView.h" -#include "ui_resource_image.h" -#include "common/image_cache_manager.h" -namespace OHOS { -constexpr uint16_t TESTCASE_BUTTON_HEIGHT = 64; -constexpr uint16_t STYLE_BORDER_WIDTH_VALUE = 4; -constexpr uint16_t STYLE_BORDER_RADIUS_VALUE = 12; -static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333; - -static PlayersCaseListAdapter *g_PlayersCaseListAdapter{nullptr}; -PlayersCaseListAdapter::PlayersCaseListAdapter() -{ - g_PlayersCaseListAdapter = this; -} +#include "wearable_log.h" -PlayersCaseListAdapter::~PlayersCaseListAdapter() +namespace OHOS { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter"); - delete listener; - listener = nullptr; - - g_PlayersCaseListAdapter = nullptr; + constexpr uint16_t TESTCASE_BUTTON_HEIGHT = 64; + constexpr uint16_t STYLE_BORDER_WIDTH_VALUE = 4; + constexpr uint16_t STYLE_BORDER_RADIUS_VALUE = 12; + static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333; - if(p_BtnOnClickListListener != nullptr) + class BtnOnClickListListener : public UIView::OnClickListener { - delete p_BtnOnClickListListener; - p_BtnOnClickListListener = nullptr; - } -} + public: + BtnOnClickListListener() {} + ~BtnOnClickListListener() {} + bool OnClick(UIView &view, const ClickEvent &event) override; -PlayersCaseListAdapter *PlayersCaseListAdapter::GetInstance(void) -{ - return g_PlayersCaseListAdapter; -} + private: + void BtnOnListData(UIView &view); + char *musicPlayName{nullptr}; + int16_t index_{0}; + }; -uint16_t PlayersCaseListAdapter::GetCount() -{ - return PlayersListGroup::GetInstance()->GetCase().Size(); -} + bool BtnOnClickListListener::OnClick(UIView &view, const ClickEvent &event) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener OnClick:"); + UNUSED(event); + int ret; + int32_t playerState; /*获取Player的状态*/ + uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM; /*获取音乐播放和暂停复选按钮的状态*/ + PlayersView *playersView = PlayersView::GetInstance(); + if (playersView == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!"); + return false; + } + BtnOnListData(view); + /* --------------------------- 若点击的是View类型是Button --------------------------- */ + if (view.GetViewType() == UIViewType::UI_BUTTON) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetViewType = %d", view.GetViewType()); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d ,uri = %s.", view.GetViewIndex(), musicPlayName); + playersView->ChangeView(PlayersView::MUSIC_LIST_VIEW,PlayersView::MUSIC_DELETE_VIEW); + return true; + } + /* -------------------------------------------------------------------------- */ + // 标记当前播放歌曲index_ + PlayersModel::GetInstance()->SetCurrentIndex(index_); + // 本地播放文件路径和状态 + std::string strSrcMusic(APP_MUSIC_PATH); + std::string tempStr("/"); + std::string strName = musicPlayName; + PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName); // 设置播放路径Uri -void BtnOnClickListListener::SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index) -{ - ImageInfo *imagePlaying = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAY, PLAYER_IAMGES); - P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index]->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff)); - P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetImageSrc(imagePlaying,imagePlaying); - //P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetViewId("playing"); - P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index] = 1; -} -void BtnOnClickListListener::SongNotClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index) -{ - ImageInfo *imageDeleye = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES); - P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index]->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff)); - P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetImageSrc(imageDeleye,nullptr); - //std::string viewId = "delete"; - //P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetViewId(viewId.c_str()); - P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index] = 0; -} -/// @brief 这个函数是一个按钮点击事件监听器的回调函数 -/// @param view -/// @param event -/// @return -bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event) -{ - PlayersView *playersView = PlayersView::GetInstance(); - PlayersCaseListAdapter *P_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance(); - //BtnOnListData该函数的作用是从传入的视图中提取相关数据 - BtnOnListData(view); - if((&view == P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index_]) && - P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index_] == 0) - { - playersView->GetPlayerListDelSongView()->SetTheSongLabelStyle(sliceId_); - playersView->SetPlayerDelSongViewStatus(true); - return false; - } - else if((&view == P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index_])){ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener sliceId_: %s.", sliceId_); - UNUSED(event); - int ret; - int32_t playerState; - uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM; - if (playersView == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!"); - return false; + state = playersView->GetPlayerButtonState(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state); + if (state == UICheckBox::UICheckBoxState::UNSELECTED) + { + playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED); + /* start play */ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play"); + PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState); + if (playerState == PlayerStates::PLAYER_PAUSED) + { + ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret); + } + PlayersModel::GetInstance()->PlayerStat(); // 播放 + } + else if (state == UICheckBox::UICheckBoxState::SELECTED) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play"); + PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState); + if (playerState == PlayerStates::PLAYER_STARTED) + { + ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret); + ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret); + } + PlayersModel::GetInstance()->PlayerStat(); + } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d ,uri = %s.", PlayersModel::GetInstance()->GetCurrentIndex(), PlayersModel::GetInstance()->GetPlayerUri().c_str()); + return true; } - // 标记当前播放歌曲index_ - PlayersModel::GetInstance()->SetCurrentIndex(index_); //当前正在播放的歌曲 - // 本地播放文件路径和状态 - std::string strSrcMusic(APP_MUSIC_PATH);//"/user/music" - std::string tempStr("/"); - std::string strName = sliceId_; - PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "uri: %s.", PlayersModel::GetInstance()->GetPlayerUri().c_str()); - std::string strSongName = sliceId_; - std::string pureName = strSongName.substr(0, strSongName.rfind(".")); //获取纯粹歌曲名 - const char *songName = pureName.c_str(); - //playersView->SetPlayerListGroupStatus(false);//这是点击歌曲后就会播放歌曲歌单隐藏 - /* -------------------------------------------------------------------------- */ - SongClick(P_PlayersCaseListAdapter,index_); - for(int i= 0;iGetCount();i++) + + void BtnOnClickListListener::BtnOnListData(UIView &view) { - if(i != index_) + // index_ = view.GetViewIndex(); + index_ = view.GetParent()->GetViewIndex(); + List &playersCaseList = PlayersListGroup::GetInstance()->GetCase(); + ListNode *node = playersCaseList.Begin(); + for (uint16_t i = 0; i < index_; i++) { - SongNotClick(P_PlayersCaseListAdapter,i); + node = node->next_; } + musicPlayName = node->data_.sliceId; } - /* -------------------------------------------------------------------------- */ - // 刷新UI - RootView::GetInstance()->Invalidate(); - state = playersView->GetPlayerButtonState(); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state); - if (state == UICheckBox::UICheckBoxState::UNSELECTED) { - playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED); - /* start play */ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play"); - PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState); - if (playerState == PlayerStates::PLAYER_PAUSED) { - ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset(); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret); - } - PlayersModel::GetInstance()->PlayerStat(); // 播放 - } else if (state == UICheckBox::UICheckBoxState::SELECTED) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play"); - PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState); - if (playerState == PlayerStates::PLAYER_STARTED) { - ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止 - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret); - ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset(); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret); + PlayersCaseListAdapter::~PlayersCaseListAdapter() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter"); + if (listener != nullptr) + { + delete listener; + listener = nullptr; } - PlayersModel::GetInstance()->PlayerStat(); } - } - return true; -} -void BtnOnClickListListener::BtnOnListData(UIView& view) -{ - //index_ = view.GetViewIndex(); - index_ = view.GetParent()->GetViewIndex(); //list中如果其他组件,想点击里面组件,得先获取父视图 - List &playersCaseList = PlayersListGroup::GetInstance()->GetCase(); - ListNode* node = playersCaseList.Begin(); - for (uint16_t i = 0; i < index_; i++) { - node = node->next_; - } - if(node != nullptr) + uint16_t PlayersCaseListAdapter::GetCount() { - sliceId_ = node->data_.sliceId; + return PlayersListGroup::GetInstance()->GetCase().Size(); } -} -UIView *PlayersCaseListAdapter::GetView(UIView* inView, int16_t index) -{ - List &playersCaseList = PlayersListGroup::GetInstance()->GetCase(); - if (playersCaseList.IsEmpty()) { - return nullptr; - } - if ((index > playersCaseList.Size() - 1) || (index < 0)) { - return nullptr; - } - ListNode* node = playersCaseList.Begin(); - for (uint16_t i = 0; i < index; i++) { - node = node->next_; - } - std::string strSongName = node->data_.sliceId; - std::string pureName = strSongName.substr(0, strSongName.rfind(".")); - const char *songName = pureName.c_str(); - PlayerListItemView *listitem = nullptr; - PlayerListItem listitemData; - listitemData.index = index; - listitemData.label = songName; - if (inView == nullptr) { - listitem = new PlayerListItemView(); - } else { - listitem = static_cast(inView); - } - listitem->SetItemInfo(listitemData); - if(listener == nullptr) + UIView *PlayersCaseListAdapter::GetView(UIView *inView, int16_t index) { - listener = new BtnOnClickListListener(); - p_BtnOnClickListListener = new BtnOnClickListListener(); - if(listener == nullptr) + List &playersCaseList = PlayersListGroup::GetInstance()->GetCase(); + if (playersCaseList.IsEmpty()) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "listener == nullptr"); return nullptr; } - //listitem->SetOnClickListener(listener); - p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener); - } - else - { - //listitem->SetOnClickListener(listener); - p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener); + if ((index > playersCaseList.Size() - 1) || (index < 0)) + { + return nullptr; + } + ListNode *node = playersCaseList.Begin(); + for (uint16_t i = 0; i < index; i++) + { + node = node->next_; + } + /* -------------------------------------------------------------------------- */ + std::string strSongName = node->data_.sliceId; + std::string pureName = strSongName.substr(0, strSongName.rfind(".")); + const char *songName = pureName.c_str(); // 获取纯净歌曲名 + /* -------------------------------------------------------------------------- */ + PlayerListItemView *item = nullptr; + PlayerListItem listitemData; + + if (inView == nullptr) + { + item = new PlayerListItemView(); + } + else + { + item = static_cast(inView); + } + if (PlayersModel::GetInstance()->GetCurrentIndex() == index) + { + item->UpdateItemViewStyle(true); + } + else + { + item->UpdateItemViewStyle(false); + } + if (listener == nullptr) + { + listener = new BtnOnClickListListener(); + if (listener == nullptr) + { + return nullptr; + } + } + listitemData.index = index; + listitemData.musicName = songName; + listitemData.listener = listener; + item->SetItemInfo(listitemData); + return item; } - return listitem; - } -} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp index 141305fa2..4d7b87bad 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp @@ -171,20 +171,15 @@ void PlayersModel::SetCurrentIndex(int16_t value) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersModel::SetCurrentIndex,value = %d",value); currentIndex = value; - /* -------------------------------------------------------------------------- */ - m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance(); - if(m_PlayersCaseListAdapter!=nullptr) - { - m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongClick(m_PlayersCaseListAdapter,currentIndex); - for(int i= 0;iGetCount();i++) - { - if(i != currentIndex) - { - m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongNotClick(m_PlayersCaseListAdapter,i); - } - } + /* --------------------------------- 刷新音乐列表 --------------------------------- */ + PlayersView *playersView = PlayersView::GetInstance(); + if (playersView == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView null!"); + return; + } + if(playersView->GetMusicListList()!=nullptr){ + playersView->GetMusicListList()->RefreshList(); } - PlayersView::GetInstance()->GetPlayerList(); /* -------------------------------------------------------------------------- */ } @@ -750,6 +745,12 @@ void PlayersModel::GetDuration(int64_t &duration) duration = duration_; } +/*获取音乐播放路径*/ +std::string PlayersModel::GetMusicPlayPath(void) +{ + return musicPlayPath; +} + bool PlayersModel::GetMusicSource() { return musicSourceFlag; diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp index fa2de102a..3452ab1cf 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp @@ -450,7 +450,7 @@ char *PlayersListGroup::GetCase(int16_t index) return nullptr; } -// 读取文件夹下文件名信息 +// 读取指定目录(APP_MUSIC_PATH)下的文件,并将文件名等信息填充到提供的列表中 int PlayersListGroup::GetAllFiles(List *playersCaseList) { int ret; @@ -490,7 +490,7 @@ ButtonOnClickListener::~ButtonOnClickListener() volumeSettingView = nullptr; } -// Button OnClick +/*播放或暂停按钮被点击时调用*/ void ButtonOnClickListener::PlayerButtonOnClick() { PlayersView *playersView = PlayersView::GetInstance(); @@ -533,18 +533,6 @@ void ButtonOnClickListener::PlayerButtonOnClick() PlayersModel::GetInstance()->ConnectBtAndLocalPause(connCtState, connTgState); } /* -------------------------------------------------------------------------- */ - //点击播放音乐时,音乐列表当前歌曲名要变颜色 - m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance(); - m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongClick(m_PlayersCaseListAdapter,PlayersModel::GetInstance()->GetCurrentIndex()); - for(int i= 0;iGetCount();i++) - { - if(i != PlayersModel::GetInstance()->GetCurrentIndex()) - { - m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongNotClick(m_PlayersCaseListAdapter,i); - } - } - PlayersView::GetInstance()->GetPlayerList(); - /* -------------------------------------------------------------------------- */ } /*当声音按钮被点击时候调用*/ @@ -582,6 +570,18 @@ void ButtonOnClickListener::OptionsButtonOnClick() playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_SOURCE_VIEW); return; } +//当音乐列表按钮被点击时候调用 +void ButtonOnClickListener::MusicListButtonOnClick() +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener MusicListButtonOnClick"); + PlayersView *playersView = PlayersView::GetInstance(); + if (playersView == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OptionsButtonOnClick playersView nullptr err"); + return; + } + playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW); + return; +} void ButtonOnClickListener::PlayerModelButtonOnClick() { @@ -642,18 +642,20 @@ bool ButtonOnClickListener::OnClick(UIView& view, const ClickEvent& event) SoundButtonOnClick(); } else if (&view == (UIView *)playersView->GetOptionsButton()) { OptionsButtonOnClick(); - }else if(&view == playersView->GetMusicListButton()) - { - PlayersPresenter::GetInstance()->ShowPlayerListGroup(); + }else if(&view == (UIView *)playersView->GetMusicListButton()) { + MusicListButtonOnClick(); } - else if(strcmp(view.GetViewId(),ENSURE_DELETE_BUTTON) == 0) //删除音乐 + if(playersView->GetPlayerListDelSongView()!=nullptr && playersView->GetPlayerListDelSongView()->GetEnsureDeleteButton()!=nullptr) { + //删除音乐回到音乐列表 playersView->GetPlayerListDelSongView()->DeleteSongNameFile(); + PlayersListGroup::GetInstance()->SetUpListCase(); + playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW); } - else if(strcmp(view.GetViewId(),CANCEL_DELETE_BUTTON) == 0) //不删除音乐 + else if(playersView->GetPlayerListDelSongView()!=nullptr && playersView->GetPlayerListDelSongView()->GetCancelDeleteButton()!=nullptr) { - playersView->SetPlayerDelSongViewStatus(false); - playersView->SetPlayerListGroupStatus(true); + //不删除音乐回到音乐列表 + playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW); } return true; } @@ -937,9 +939,9 @@ void PlayerOnDragListener::OnDragChangView(const DragEvent& event, int16_t hideV } /*从音乐来源视图回到音乐主视图*/ -void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event) +void PlayerOnDragListener::OnDragChangMusicPlayerSourceView(const DragEvent& event) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangBluetoothView"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerSourceView"); if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) { PlayersView *playersView = PlayersView::GetInstance(); if (playersView == nullptr) { @@ -951,6 +953,35 @@ void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event) } } +/*从音乐列表视图回到音乐主视图*/ +void PlayerOnDragListener::OnDragChangMusicPlayerListView(const DragEvent& event) +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerListView"); + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) { + PlayersView *playersView = PlayersView::GetInstance(); + if (playersView == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail"); + return; + } + playersView->ChangeView(PlayersView::MUSIC_LIST_VIEW,PlayersView::MAIN_MUSICPLAYER_VIEW); + X_DRAG_FLAG = true; + } +} + +/*从音乐删除视图回到音乐列表视图*/ +void PlayerOnDragListener::OnDragChangMusicPlayerDeleteView(const DragEvent& event) +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerDeleteView"); + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) { + PlayersView *playersView = PlayersView::GetInstance(); + if (playersView == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail"); + return; + } + playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW); + X_DRAG_FLAG = true; + } +} void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event) { bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView(); @@ -1026,12 +1057,19 @@ bool PlayerOnDragListener::OnDragEnd(UIView& view, const DragEvent& event) } else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONS_VIEW) == 0) { OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false); - } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_SOURCE_VIEW) == 0) { - OnDragChangBluetoothView(event); - return false; } else if (strcmp(view.GetViewId(), BLUETOOTH_DEVICE_LIST_VIEW) == 0) { OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, false); + } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_SOURCE_VIEW) == 0) { + OnDragChangMusicPlayerSourceView(event); + return false; + } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_LIST_VIEW) == 0) { + OnDragChangMusicPlayerListView(event); + return false; + } + else if (strcmp(view.GetViewId(), MUSIC_PLAYER_DELETE_VIEW) == 0) { + OnDragChangMusicPlayerDeleteView(event); + return false; } return true; } @@ -1380,19 +1418,4 @@ void PlayersPresenter::PlayerHeadsetReset(void) playersView->GetPlayerButton()->Invalidate(); } - -void PlayersPresenter::ShowPlayerListGroup() -{ - PlayersView *playersView = PlayersView::GetInstance(); - if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail"); - return; - } - // 添加list - playersView->SetPlayerListGroupStatus(true); - // 刷新UI - RootView::GetInstance()->Invalidate(); - return; -} - } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp index 63e20e0a0..8a79d7114 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp @@ -12,7 +12,6 @@ #include "player/include/PlayersModel.h" #include "player/include/PlayersCaseListAdapter.h" #include "main/include/MainViewSample.h" -#include "traing/training_card/include/TraingCardView.h" #include "wearable_log.h" #include "settings/include/SettingModel.h" namespace OHOS @@ -38,27 +37,7 @@ namespace OHOS } RemoveAll(); ClearAll(); - if (listGroup) - { - listGroup->RemoveAll(); - if (musicListTitle) - { - delete musicListTitle; - musicListTitle = nullptr; - } - if (musicAdapter) - { - delete musicAdapter; - musicAdapter = nullptr; - } - if (musicList) - { - delete musicList; - musicList = nullptr; - } - delete listGroup; - listGroup = nullptr; - } + if (jumpView) { delete jumpView; @@ -142,11 +121,17 @@ namespace OHOS } /*获取音乐列表*/ - UIList *PlayersView::GetPlayerList(void) + UIList *PlayersView::GetMusicListList(void) { return musicList; } + /*获取音乐列表的适配器*/ + PlayersCaseListAdapter *PlayersView::GetMusicListAdapter(void) + { + return musicAdapter; + } + /*获取声音设置视图*/ VolumeSettingView *PlayersView::GetVolumeSettingView() { @@ -169,6 +154,7 @@ namespace OHOS return play_or_pause_Button->GetState(); } + // 设置播放或暂停按钮的状态 void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state) { if (play_or_pause_Button == nullptr) @@ -179,66 +165,6 @@ namespace OHOS return play_or_pause_Button->SetState(state); } - /// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。 - /// @param status - void PlayersView::SetPlayerListGroupStatus(bool status) - { - if (listGroup == nullptr) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL"); - return; - } - if (MainViewSample::GetInstance() != nullptr) - { - UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup(); - if (vew != nullptr) - { - vew->SetVisible(!status); - } - } - if (TraingCardView::GetInstance() != nullptr) - { - UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad(); - if (cardview != nullptr) - { - cardview->SetVisible(!status); - } - } - listGroup->SetVisible(status); - return; - } - - /// @brief 根据传入的status参数来控制删除歌曲视图的显示与隐藏。 - /// @param status - void PlayersView::SetPlayerDelSongViewStatus(bool status) - { - if (DelSongView == nullptr) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView DelSongView is NULL"); - return; - } - if (MainViewSample::GetInstance() != nullptr) - { - UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup(); - if (vew != nullptr) - { - vew->SetVisible(!status); - } - } - // /*增加训练卡片控制*/ - if (TraingCardView::GetInstance() != nullptr) - { - UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad(); - if (cardview != nullptr) - { - cardview->SetVisible(!status); - } - } - DelSongView->SetVisible(status); - RootView::GetInstance()->Invalidate(); - return; - } - void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume) { PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume); @@ -249,86 +175,6 @@ namespace OHOS return g_pPlayersView; } - // 显示音乐列表 - void PlayersView::ShowUpListView() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView"); - listGroup = new UIScrollView(); - if (listGroup == nullptr) - { - return; - } - listGroup->SetPosition(0, 0); - listGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); - listGroup->SetScrollBlankSize(20); - listGroup->SetReboundSize(50); - listGroup->SetDirection(1); - - musicListTitle = new UILabel(); - if (musicListTitle == nullptr) - { - return; - } - musicListTitle->SetPosition(173, 52, 120, 35); - musicListTitle->SetStyle(STYLE_TEXT_FONT, 30); - musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 36); - musicListTitle->SetText("音乐列表"); - musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); - musicListTitle->SetTextColor(Color::GetColorFromRGBA(0xff, 0xf3, 0xff, 0xff)); - musicListTitle->SetRollSpeed(0); - musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - listGroup->Add(musicListTitle); - - if (musicAdapter == nullptr) - { - musicAdapter = new PlayersCaseListAdapter(); - if (musicAdapter == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicAdapter new fail"); - return; - } - } - if (musicList == nullptr) - { - musicList = new UIList(UIList::VERTICAL); - if (musicList == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicList new fail"); - return; - } - musicList->SetPosition(67, 138, 332, 500); - musicList->SetStartIndex(0); - musicList->SetAdapter(musicAdapter); - } - listGroup->Add(musicList); - RootView::GetInstance()->Add(listGroup); - UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance(); - if (dragListener == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::OnDragListener fail"); - return; - } - listGroup->SetDraggable(true); - listGroup->SetTouchable(true); - listGroup->SetOnDragListener(dragListener); - listGroup->SetVisible(false); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView end"); - } - - /// @brief 创建删除歌曲视图 - /// @param songName - void PlayersView::ShowUpDelSongView() - { - if (playerListDelSongView == nullptr) - { - playerListDelSongView = new PlayerListDelSongView(); - } - DelSongView = playerListDelSongView->InitDelSongView(); - RootView::GetInstance()->Add(DelSongView); - DelSongView->SetTouchable(true); - DelSongView->SetVisible(false); - } - // 创建跳转视图 void PlayersView::CreateJumpView(void) { @@ -369,6 +215,98 @@ namespace OHOS } } + /*创建音乐列表视图*/ + UIViewGroup *PlayersView::CreateMusicListGroupView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceView"); + if (musicListGroupView == nullptr) + { + musicListGroupView = new UIViewGroup(); + if (musicListGroupView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListGroupView new fail"); + return nullptr; + } + } + musicListGroupView->SetPosition(0, 0, 466, 466); + musicListGroupView->SetStyle(STYLE_BACKGROUND_OPA, 0); + musicListGroupView->SetTouchable(true); + musicListGroupView->SetDraggable(true); + musicListGroupView->SetIntercept(true); + musicListGroupView->SetViewId(MUSIC_PLAYER_LIST_VIEW); + if (nullptr == playerOnDragListener) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail"); + return nullptr; + } + musicListGroupView->SetOnDragListener(playerOnDragListener); + /* -------------------------------------------------------------------------- */ + if (musicListScrollView == nullptr) + { + musicListScrollView = new UIScrollView(); + if (musicListScrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListScrollView new fail"); + return nullptr; + } + } + musicListScrollView->SetPosition(0, 0, 466, 466); + musicListScrollView->SetScrollBlankSize(35); + musicListScrollView->SetReboundSize(35); + musicListScrollView->SetDirection(UIScrollView::VERTICAL); + /* -------------------------------------------------------------------------- */ + musicListTitle = new UILabelExt(); + if (musicListTitle == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListTitle new fail"); + return nullptr; + } + musicListTitle->SetPosition(83, 50, 300, 35); + musicListTitle->SetStyle(STYLE_TEXT_FONT, 30); + musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 35); + musicListTitle->SetTextId(STR_MUSIC_LIST); + musicListTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + musicListTitle->SetRollSpeed(70); + musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + /* -------------------------------------------------------------------------- */ + if (musicAdapter == nullptr) + { + musicAdapter = new PlayersCaseListAdapter(); + if (musicAdapter == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicAdapter new fail"); + return nullptr; + } + } + if (musicList == nullptr) + { + musicList = new UIList(UIList::VERTICAL); + if (musicList == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicList new fail"); + return nullptr; + } + musicList->SetPosition(68, 120, 330, 320); + musicList->SetStartIndex(0); + musicList->SetThrowDrag(true); + musicList->SetIntercept(true); + musicList->SetMaxScrollDistance(1000); + musicList->SetDragACCLevel(5); + musicList->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/ + musicList->SetReboundSize(35); + // 增加表冠控制 + musicList->SetRotateFactor(1.0); + musicList->RequestFocus(); + musicList->SetAdapter(musicAdapter); + } + musicListScrollView->Add(musicListTitle); + musicListScrollView->Add(musicList); + musicListGroupView->Add(musicListScrollView); + /* -------------------------------------------------------------------------- */ + return musicListGroupView; + } + /*删除容器上所有组件*/ void PlayersView::ClearAll(void) { @@ -426,12 +364,12 @@ namespace OHOS delete soundButton; soundButton = nullptr; } - if (MusciSourceLabel) + if (MusciSourceLabel != nullptr) { delete MusciSourceLabel; MusciSourceLabel = nullptr; } - if (PhoneMusicConnectStatusLabel) + if (PhoneMusicConnectStatusLabel != nullptr) { delete PhoneMusicConnectStatusLabel; PhoneMusicConnectStatusLabel = nullptr; @@ -454,6 +392,38 @@ namespace OHOS delete musicPlayerSourceView; musicPlayerSourceView = nullptr; } + if (musicListGroupView != nullptr) + { + musicListGroupView->RemoveAll(); + if (musicListScrollView != nullptr) + { + musicListScrollView->RemoveAll(); + if (musicListTitle != nullptr) + { + delete musicListTitle; + musicListTitle = nullptr; + } + if (musicAdapter != nullptr) + { + delete musicAdapter; + musicAdapter = nullptr; + } + if (musicList != nullptr) + { + delete musicList; + musicList = nullptr; + } + delete musicListScrollView; + musicListScrollView = nullptr; + } + delete musicListGroupView; + musicListGroupView = nullptr; + } + if (playerListDelSongView != nullptr) + { + delete playerListDelSongView; + playerListDelSongView = nullptr; + } for (int i = MAIN_MUSICPLAYER_VIEW; i < MUSICPLAYERJUMPVIEWID_MAX; i++) { @@ -712,7 +682,6 @@ namespace OHOS group[MAIN_MUSICPLAYER_VIEW]->Add(playbackProgress); group[MAIN_MUSICPLAYER_VIEW]->Add(play_or_pause_Button); group[MAIN_MUSICPLAYER_VIEW]->Add(music_list_button); - group[MAIN_MUSICPLAYER_VIEW]->Add(musicSourceButton); group[MAIN_MUSICPLAYER_VIEW]->Add(preMusicButton); group[MAIN_MUSICPLAYER_VIEW]->Add(nextMusicButton); group[MAIN_MUSICPLAYER_VIEW]->Add(playerModelButton); @@ -817,13 +786,13 @@ namespace OHOS { PhoneMusicConnectStatusLabelSetText(STR_CONNECTED); /*已连接*/ MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐 - PhoneMusicConnectStatusLabelColor(false); + PhoneMusicConnectStatusLabelColor(true); } else { PhoneMusicConnectStatusLabelSetText(STR_DISCONNECTED); /*未连接*/ MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐 - PhoneMusicConnectStatusLabelColor(true); + PhoneMusicConnectStatusLabelColor(false); } } else @@ -846,6 +815,13 @@ namespace OHOS bool PlayersView::InitView(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView"); + // changeView + CreateJumpView(); + // OnClick + CreatePlayersPresenter(); + // OnDrag + CreatePlayerOnDragListener(); + /* -------------------------------------------------------------------------- */ if (CreatePlayerView() == false) { return false; @@ -853,18 +829,9 @@ namespace OHOS /* -------------------------------------------------------------------------- */ UpdatePlayerView(); /* -------------------------------------------------------------------------- */ - // changeView - CreateJumpView(); - // OnClick - CreatePlayersPresenter(); - // OnDrag - CreatePlayerOnDragListener(); - // 按键设置 PlayersListGroup::GetInstance()->SetUpListCase(); PlayersModel::GetInstance()->PlayerInit(); - ShowUpListView(); - ShowUpDelSongView(); SetTouchable(true); SetDraggable(true); return true; @@ -1103,6 +1070,8 @@ namespace OHOS {PlayersView::MAIN_MUSICPLAYER_VIEW, &PlayersView::ChangeToMainMusicPlayerView}, {PlayersView::MUSIC_SOURCE_VIEW, &PlayersView::ChangeToMusicSourceView}, {PlayersView::MUSIC_VOLUME_CONTROL_VIEW, &PlayersView::ChangeToVolumeControlView}, + {PlayersView::MUSIC_LIST_VIEW, &PlayersView::ChangeToMusicListView}, + {PlayersView::MUSIC_DELETE_VIEW, &PlayersView::ChangeToMusicDeleteView}, }; /*根据传入的 interface 值,在 ViewMapper 数组中查找匹配的 viewId*/ @@ -1221,4 +1190,46 @@ namespace OHOS } return true; } + + /*切换到音乐列表视图*/ + bool PlayersView::ChangeToMusicListView(int16_t thisView) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicListView"); + if (group[thisView] == nullptr) + { + UIViewGroup *groupview = CreateMusicListGroupView(); + if (groupview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView); + return false; + } + group[thisView] = groupview; + Add(group[thisView]); + } + return true; + } + + /*切换到音乐删除视图*/ + bool PlayersView::ChangeToMusicDeleteView(int16_t thisView) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicDeleteView"); + if (group[thisView] == nullptr) + { + playerListDelSongView = new PlayerListDelSongView(); + if (playerListDelSongView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new playerListDelSongView fail"); + return false; + } + UIViewGroup *groupview = playerListDelSongView->CreatePlayerListDelSongView(); + if (groupview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView); + return false; + } + group[thisView] = groupview; + Add(group[thisView]); + } + return true; + } } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index b1247b5be..960138e2c 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -1878,11 +1878,12 @@ int uapi_save_exc(void) void uapi_restore_factory_setting(void) { - char *filebuf[3] = {"/system/ConfigModel.json", + char *filebuf[] = {"/system/ConfigModel.json", "/user/userdata", - "/system/kvstore" + "/system/kvstore", + "/user/music" }; - for(int i = 0; i < 3; i++) + for(int i = 0; i < (sizeof(filebuf)/sizeof(filebuf[0])); i++) uapi_delete_files(filebuf[i]); bluetooth_factory_reset();