From: luozheng <1732036298@qq.com> Date: Thu, 8 Aug 2024 11:09:59 +0000 (+0800) Subject: 音乐播放器优化 X-Git-Tag: release_V1.2.70_20241020_135402~691 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=cc604b0794631dbb59ccf41f62ada40356690044;p=mirrors%2FFD230.git 音乐播放器优化 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 6976147df..a46f8e71b 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -235,13 +235,15 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/src/MainCallingView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/VolumeSettingView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/VolumeSettingPresenter.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/BluetoothView.cpp + #音乐 + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/MusicPlayerSourceView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersPresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersModel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersCaseListAdapter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListDelSongView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListitemView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/MainActivityView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityWeekView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityPresenter.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp index 5836ceb19..167e0dc40 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp @@ -9,7 +9,7 @@ #include "BluetoothWrapper.h" #include "BluetoothPresenter.h" #include "ConnectPhonePresenter.h" -#include "BluetoothView.h" +#include "MusicPlayerSourceView.h" #include "BluetoothItemView.h" #include "PlayersModel.h" #include "PhoneAudio.h" diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp index d823c7484..b19428c21 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp @@ -166,8 +166,7 @@ bool VolumeSliderEventListener::OnDrag(UIView& view, const DragEvent& event) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDrag:playersView new fail"); return false; } - volumeSettingView->SetVisible(false); - playersView->SetVisible(true); + playersView->ChangeView(PlayersView::MUSIC_VOLUME_CONTROL_VIEW,PlayersView::MAIN_MUSICPLAYER_VIEW); } if (playerCoefficients == VOLUMEPHONE) { MainCallingView *mainCallView = MainCallingView::GetInstance(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/BluetoothView.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/BluetoothView.h deleted file mode 100644 index 5d7b75a18..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/BluetoothView.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: Bluetooth view 设置页面 - * Create: 2021-09-5 - */ - -#ifndef BLUETOOTH_VIEW_H -#define BLUETOOTH_VIEW_H - -#include "components/ui_label.h" -#include "components/ui_label_ext.h" -#include "components/ui_image_view.h" -#include "components/ui_radio_button.h" -#include "components/ui_label_button.h" -#include "components/ui_view_group.h" -#include "components/ui_scroll_view.h" -#include "BaseView.h" - -namespace OHOS { -class PlayerOnDragListener; -class BluetoothView { -public: - BluetoothView(); - virtual ~BluetoothView(); - UIViewGroup *LoadMusicSourceView(void); - static BluetoothView *GetInstance(void); - UIViewGroup *group{nullptr}; - UIScrollView *scrollView{nullptr}; - UIRadioButton *GetPhoneButton(void); - UIRadioButton *GetWatchButton(void); - UIButton *GetSettingButton(void); -private: - UILabel *titleLabel{nullptr}; - UIImageView *phoneBackground{nullptr}; - UIImageView *watchBackground{nullptr}; - UIImageView *bluetoothBackground{nullptr}; - UILabel *watchLabel{nullptr}; - UILabel *phoneLabel{nullptr}; - UILabel *bluetoothLabel{nullptr}; - UIImageView *watchImage{nullptr}; - UIImageView *phoneImage{nullptr}; - UIImageView *bluetoothImage{nullptr}; - UIRadioButton *watchButton{nullptr}; - UIRadioButton *phoneButton{nullptr}; - UIButton *settingButton{nullptr}; - int LoadTitleLabel(void); - int LoadImageBackGround(void); - int LoadRadioButton(void); - int LoadButtonView(void); - int LoadLabel(void); - int LoadImage(void); -}; -} // namespace OHOS -#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerSourceView.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerSourceView.h new file mode 100644 index 000000000..3fd4fcaeb --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerSourceView.h @@ -0,0 +1,85 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-08-05 15:20:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-08-08 16:15:50 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerSourceView.h + */ + +#ifndef MUSIC_PLAYER_SOURCE_VIEW_H +#define MUSIC_PLAYER_SOURCE_VIEW_H + +#include "components/ui_label_ext.h" +#include "components/ui_image_view.h" +#include "components/ui_radio_button.h" +#include "components/ui_label_button.h" +#include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" +#include "BaseView.h" + +namespace OHOS +{ + static constexpr const char *PHONE_MUSIC_LABEL_BUTTON = "phone_music_label_button"; + static constexpr const char *WATCH_MUSIC_LABEL_BUTTON = "watch_music_label_button"; + static constexpr const char *BLUETOOTH_HEADSET_LABEL_BUTTON = "bluetooth_headset_label_button"; + class PlayerOnDragListener; + class MusicPlayerSourceView : public UIView::OnClickListener, public UIView::OnDragListener + { + public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; + int16_t lineHeigh; + uint16_t textId; + uint8_t lineBreakMode; + }; + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *viewId; + bool flag; + }; + MusicPlayerSourceView(); + ~MusicPlayerSourceView(); + static MusicPlayerSourceView *GetInstance(void); + bool OnClick(UIView &view, const ClickEvent &event) override; + UIViewGroup *CreateMusicPlayerSourceView(void); + void UpdateBluetoothHeadSetViewIsVisible(void); + void UpdateBluetoothHeadsetConnectLabel(void); + UIViewGroup *group{nullptr}; + + private: + UILabelButton *MusicPlayerSourceViewLabelButtonInit(ButtonConfig &buttonconfig); + UILabelExt *MusicPlayerSourceViewLabelInit(LabelConfig &labelconfig); + bool CreateMusicPlayerSourceViewLabelButton(void); + bool CreateMusicPlayerSourceViewLabel(void); + bool CreateMusicPlayerSourceViewImage(void); + void ClearAll(); + + UIScrollView *scrollView{nullptr}; + UILabelExt *titleLabel{nullptr}; // 标题 + + UILabelExt *phoneLabel{nullptr}; // 手机音乐 + UIImageView *phoneImage{nullptr}; + UILabelButton *phoneLableButton{nullptr}; + + UILabelExt *watchLabel{nullptr}; // 手表音乐 + UIImageView *watchImage{nullptr}; + UILabelButton *watchLableButton{nullptr}; + + UILabelExt *bluetoothHeadsetLabel{nullptr}; // 蓝牙耳机 + UIImageView *bluetoothHeadsetImage{nullptr}; + UILabelButton *bluetoothHeadsetLableButton{nullptr}; + UILabelExt *bluetoothHeadsetConnectState{nullptr}; // 蓝牙耳机配对状态 + + UIView::OnDragListener *dragListener{nullptr}; + }; +} +#endif \ No newline at end of file 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 7e6b3ddfa..23ea991cb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h @@ -1,5 +1,13 @@ -#ifndef PLAYER_LIST_DEL_SONG_VIEW_H -#define PLAYER_LIST_DEL_SONG_VIEW_H +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-08-05 15:20:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-08-06 18:31:14 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h + */ + +#ifndef MUSIC_PLAYER_LIST_DEL_SONG_VIEW_H +#define MUSIC_PLAYER_LIST_DEL_SONG_VIEW_H #include "string" #include "iostream" 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 73aa781f8..f896c5ddd 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h @@ -1,5 +1,13 @@ -#ifndef PLAYER_LIST_ITEM_VIEW_H -#define PLAYER_LIST_ITEM_VIEW_H +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-08-05 15:20:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-08-06 18:31:23 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h + */ + +#ifndef MUSIC_PLAYER_LIST_ITEM_VIEW_H +#define MUSIC_PLAYER_LIST_ITEM_VIEW_H #include "components/ui_label.h" #include "components/ui_label_ext.h" 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 39f2da3ce..ac102f6ae 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h @@ -1,12 +1,13 @@ /* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: Player view - * Author: - * Create: 2021-07-26 + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-08-05 15:20:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-08-06 18:31:31 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h */ -#ifndef PLAYERS_CASE_LIST_ADAPTER_H -#define PLAYERS_CASE_LIST_ADAPTER_H +#ifndef MUSIC_PLAYERS_CASE_LIST_ADAPTER_H +#define MUSIC_PLAYERS_CASE_LIST_ADAPTER_H #include #include 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 2df70c160..34465554a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h @@ -1,12 +1,13 @@ /* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: Player view - * Author: - * Create: 2021-07-26 + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-08-05 15:20:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-08-08 18:32:13 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h */ -#ifndef PLAYERS_MODEL_H -#define PLAYERS_MODEL_H +#ifndef MUSIC_PLAYERS_MODEL_H +#define MUSIC_PLAYERS_MODEL_H #include "stdio.h" #include "gfx_utils/list.h" @@ -93,6 +94,11 @@ public: void ConncetBtResetButton(); void ClearActivateAudioInterrupt(void); void GetDuration(int64_t &duration); +public: + bool GetMusicSource(); + void SetMusicSource(bool value); +private: + bool musicSourceFlag{false};//音乐来源标志:false:默认为手表音乐,true:手机音乐 private: PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr}; int64_t duration_{0}; 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 02d263b41..291a708a2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h @@ -1,19 +1,20 @@ /* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: Player view - * Author: - * Create: 2021-07-26 + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-08-05 15:20:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-08-08 19:03:35 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h */ -#ifndef PLAYERS_PRESENTER_H -#define PLAYERS_PRESENTER_H +#ifndef MUSIC_PLAYERS_PRESENTER_H +#define MUSIC_PLAYERS_PRESENTER_H #include "gfx_utils/list.h" #include "ohos_types.h" #include "components/ui_view.h" #include "player.h" #include "audio_manager.h" #include "audio_base_type.h" -#include "BluetoothView.h" +#include "MusicPlayerSourceView.h" #include "VolumeSettingView.h" #include "VolumeSettingPresenter.h" #include "BluetoothModel.h" @@ -51,8 +52,8 @@ class VolumeSettingView; #define BLUETOOTH_EAR_PHONE_VIEW "BluetoothEarPhoneView" #define BLUETOOTH_OPTIONS_VIEW "BluetoothOptionsView" #define BLUETOOTH_RECONNECT_VIEW "BluetoothReconnectView" -#define BLUETOOTH_VIEW "BluetoothView" -#define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView" +#define MUSIC_PLAYER_SOURCE_VIEW "MusicPlayerSourceView" //音乐来源视图的滑动监听 +#define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView" #define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView" #define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView" @@ -159,8 +160,8 @@ class PlayerOnDragListener : public UIView::OnDragListener { public: PlayerOnDragListener(); ~PlayerOnDragListener(); - virtual bool OnDragEnd(UIView& view, const DragEvent& event) override; bool OnDrag(UIView& view, const DragEvent& event) override; + bool OnDragEnd(UIView& view, const DragEvent& event) override; static PlayerOnDragListener *GetInstance(); private: void OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan); @@ -168,6 +169,7 @@ private: void DropEarPhoneView(const DragEvent& event); void DropEarListView(const DragEvent& event); void CorrespondingJump(const DragEvent& event, int16_t hideView); + bool X_DRAG_FLAG{false}; }; // Bluetooth View redirection @@ -207,7 +209,7 @@ private: UIViewGroup *container[BLUETOOTHEJUMP_MAX]{nullptr}; // CONTAINER_NUM :蓝牙耳机连接的9个界面容器 BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr}; BluetoothEarListView *bluetoothEarListView{nullptr}; - BluetoothView *bluetoothView{nullptr}; + MusicPlayerSourceView *bluetoothView{nullptr}; BluetoothOptionsView *bluetoothOptionsView{nullptr}; BluetoothDeviceListView *bluetoothDeviceListView{nullptr}; BluetoothReconnectView *bluetoothReconnectView{nullptr}; @@ -233,12 +235,7 @@ public: void OnClickSuccBack(void); void OnClickConnFailBack(void); void OnClickFailBack(void); - void SetTitleSetText(const char *text); - void SetMusicSourceSetText(const char *text); - void SetPhoneMusicConnectStatusSetText(const char *text); - void SetPhoneMusicConnectStatusLabelIsVisible(bool status); - void SetMusicListButtonIsVisible(bool status); - void SetOptionsButtonImageStyle(ImageInfo *image); + void UpdatePlayerView(void); void SetPlaybackProgress(int64_t value); void SetPlayerState(bool value); void PlayerbackReset(void); 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 ae5c95891..7d177e0ba 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h @@ -1,12 +1,13 @@ /* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: Player view - * Author: - * Create: 2021-07-26 + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-08-05 15:20:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-08-08 18:43:24 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h */ -#ifndef PLAYERS_VIEW_H -#define PLAYERS_VIEW_H +#ifndef MUSIC_PLAYERS_VIEW_H +#define MUSIC_PLAYERS_VIEW_H #include #include "components/ui_image_view.h" @@ -29,118 +30,147 @@ #include "components/ui_scroll_view.h" #include "PlayerListDelSongView.h" #include "common/image_cache_manager.h" -namespace OHOS { +#include "VolumeSettingView.h" +#include "player/include/MusicPlayerSourceView.h" +namespace OHOS +{ #define PLAY_PROGRESS_MIN 0 #define PLAY_PROGRESS_MAX 100 -class JumpView; -class PlayersPresenter; -class PlayersCaseListAdapter; -class PlayersView : public UICardPage{ -public: - PlayersView(); - virtual ~PlayersView(); - static PlayersView *GetInstance(void); - bool InitView(void); - void PreLoad(void) override; - void UnLoad(void) override; - bool OnDragEvent(const DragEvent& event) override; - - void SetUpLabel(const char *title, int16_t x, int16_t y); - void ShowUpListView(void); - void TitleSetText(const char *text); - void PlayerModelButtonSetSrc(uint32_t playMode); - void CreateMusicSourceLabel(void); - void MusicSourceLabelSetText(const char *text); - void CreatePhoneMusicConnectStatusLabel(void); - void PhoneMusicConnectStatusLabelSetText(const char *text); - void PhoneMusicConnectStatusLabelIsSetVisible(bool status); - void MusicListButtonIsSetVisible(bool status); - void OptionsButtonSetImageStyle(ImageInfo *image); - int16_t GetVolumeRank(void); - void SetVolumeRank(int16_t value); - void SetVolumeAddOne(void); - UILabelButton *GetBackButton(void); - UIButton *GetPullButton(void); - UIButton *GetOptionsButton(void); - UIButton *GetPreButton(void); - UIButton *GetNextButton(void); - UIButton *GetMusicListButton(void); - UILabel *GetTitleLabel(void); - UILabel *GetMusicSourceLabel(void); - UILabel *GetPhoneMusicConnectStatusLabel(void); - UICheckBox *GetPlayerButton(void); - UIImageView *GetSoundButton(void); - UIImageView *GetPlayerModelButton(void); - UICircleProgress *GetPlaybackProgress(void); - UICheckBox::UICheckBoxState GetPlayerButtonState(void); - void SetPlayerButtonState(UICheckBox::UICheckBoxState state); - UIList *GetPlayerList(void); - void SetPlayerListGroupStatus(bool status); - void SetPlayerCtrVolume(float leftVolume, float rightVolume); - void CreateJumpView(void); - void CreatePlayersPresenter(void); - void CreatePlayerOnDragListener(void); - void ShowUpDelSongView(void); - void SetPlayerDelSongViewStatus(bool status); - PlayerListDelSongView *GetDelSongView() + class VolumeSettingView; + class JumpView; + class PlayersPresenter; + class PlayersCaseListAdapter; + class PlayersView : public UICardPage { - return p_PlayerListDelSongView; - } -private: - void PreLoadPlayerImageRes(void); - void UnLoadPlayerImageRes(void); -private: - bool InitBackGround(void); - void TearDownView(); - void CreatePlayerMusicName(); - int ShowUpCheckBoxButton(); - int ShowUpButton(); - int ShowUpButtonOptions(); - int ShowUpButtonView(); - int ShowUpCircleProgress(); - int ShowUpMusicListbutton(); - bool ShowUpPlayerMode(); - void SetUpButton(UIButton *btn, const Point& point, int16_t width, int16_t height, - UIView::OnClickListener *listener); - bool LoadPlayerImage(UIImageView *View, uint32_t resId); - bool LoadPlayerButtonImage(UIButton *button, uint32_t resId); + public: + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + UIView::OnClickListener *clickListener; + }; + enum MUSICPLAYERVIEWID : uint8_t + { + MAIN_MUSICPLAYER_VIEW = 0, // 音乐播放器主视图 + MUSIC_SOURCE_VIEW, // 音乐来源视图 + MUSIC_VOLUME_CONTROL_VIEW, // 音量调节视图 + MUSIC_LIST_VIEW, // 音乐列表视图 + MUSIC_DELETE_VIEW, // 音乐删除视图 + MUISC_CONNECTING, // 连接动画视图 + MUISC_BLUETOOTH_HEADSET_LIST_VIEW, // 蓝牙耳机列表视图 + MUSIC_CONNECTED_BLUETOOTH_HEADSET_VIEW, // 已连接的蓝牙耳机设备视图 + MUSIC_PHONE_BLUETOOTH_CONNECT_FAIL_VIEW, // 与手机蓝牙连接失败视图 + MUSICPLAYERJUMPVIEWID_MAX, + }; + PlayersView(); + virtual ~PlayersView(); + static PlayersView *GetInstance(void); + bool InitView(void); + void PreLoad(void) override; + void UnLoad(void) override; + void CreateJumpView(void); + void CreatePlayersPresenter(void); + void CreatePlayerOnDragListener(void); + void SetPlayerButtonState(UICheckBox::UICheckBoxState state); + void PlayerModelButtonSetSrc(uint32_t playMode); + void ShowUpListView(void); + int16_t GetVolumeRank(void); + void SetVolumeRank(int16_t value); + 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); + UIButton *GetPlayerModelButton(void); + UIButton *GetOptionsButton(void); + UIButton *GetSoundButton(void); + UICheckBox *GetPlayerButton(void); + + UIList *GetPlayerList(void); + UICircleProgress *GetPlaybackProgress(void); + UICheckBox::UICheckBoxState GetPlayerButtonState(void); + + void UpdatePlayerView(void); + + VolumeSettingView *GetVolumeSettingView(); + PlayerListDelSongView *GetPlayerListDelSongView(); + UIViewGroup *GetPlayerGroupView(int index); + static bool LoadPlayerImage(UIImageView *View, uint32_t resId); + void ChangeView(int16_t hideView, int16_t showView); + bool ChangeToMainMusicPlayerView(int16_t thisView); + bool ChangeToMusicSourceView(int16_t thisView); + bool ChangeToVolumeControlView(int16_t thisView); + + private: + UIButton *PlayerViewButtonInit(ButtonConfig &buttonconfig); + bool CreatePlayerOnClickListener(void); + bool CreatePlayerImageView(void); + bool CreatePlayerLabelView(void); + bool CreatePlayerProgressView(void); + bool CreatePlayerCheckBoxButtonView(void); + bool CreatePlayerButtonView(void); + bool CreatePlayerScrollView(void); + bool CreatePlayerView(void); + void ClearAll(void); + bool LoadPlayerButtonImage(UIButton *button, uint32_t resId); + bool LoadPlayerCheckBoxButtonImage(UICheckBox *button, uint32_t resId, uint32_t hlResId); + bool PreLoadPlayerModeImageRes(); + bool UnLoadPlayerModeImageRes(); + void PreLoadPlayerImageRes(void); + void UnLoadPlayerImageRes(void); + bool ClickFunc(int16_t interface); + bool CheckViewParam(int16_t hideView, int16_t showView); + void DestroyTempView(int16_t hideView); + void MusicSourceLabelSetText(int textId); + void MusicListButtonIsSetVisible(bool status); + void PhoneMusicConnectStatusLabelSetText(int textId); + void PhoneMusicConnectStatusLabelIsSetVisible(bool status); + void PhoneMusicConnectStatusLabelColor(bool state); + void OptionsButtonSetImageStyle(ImageInfo *image); + void UpdateMusicPlayerModelButton(void); + + private: + VolumeSettingView *volumeSettingView{nullptr}; // 声音设置 + MusicPlayerSourceView *musicPlayerSourceView{nullptr}; // 音乐来源 + PlayerListDelSongView *playerListDelSongView{nullptr}; // 音乐删除视图 + + private: + UIView::OnClickListener *clickListener{nullptr}; + UIViewGroup *group[MUSICPLAYERJUMPVIEWID_MAX]{nullptr}; + UIImageView *musicPlayerBackGround{nullptr}; // 音乐播放器背景 + UIImageView *elipse{nullptr}; // 放复选框的绿色椭圆图片 + UICircleProgress *playbackProgress{nullptr}; // 音乐播放进度条 + UICheckBox *play_or_pause_Button{nullptr}; // 音乐播放和暂停复选按钮 + UIButton *music_list_button{nullptr}; // 音乐列表按钮 + UIButton *musicSourceButton{nullptr}; // 音乐来源按钮 + UIButton *preMusicButton{nullptr}; // 上一首音乐按钮 + UIButton *nextMusicButton{nullptr}; // 下一首音乐按钮 + UIButton *playerModelButton{nullptr}; // 音乐播放模式按钮 + UIButton *soundButton{nullptr}; // 调节声音按钮 + UILabelExt *MusciSourceLabel{nullptr}; // 音乐来源标签 + UILabelExt *PhoneMusicConnectStatusLabel{nullptr}; // 手机音乐连接状态标签 + + UIScrollView *DelSongView{nullptr}; + + UIScrollView *listGroup{nullptr}; // 音乐列表容器视图 + UILabel *musicListTitle{nullptr}; // 音乐列表的标题 + UIList *musicList{nullptr}; // 音乐列表 + PlayersCaseListAdapter *musicAdapter{nullptr}; // 音乐列表适配器 + + JumpView *jumpView{nullptr}; + PlayersPresenter *playersPresenter{nullptr}; + PlayerOnDragListener *playerOnDragListener{nullptr}; - UIImageView *backGround{nullptr}; //音乐播放器背景 - UIImageView *elipse{nullptr}; //放复选框的绿色椭圆图片 - UIButton * music_list_button{nullptr}; //音乐列表按钮 - UILabel *subTitleLabel{nullptr}; //副标题标签:在这里为音乐作者 - PlayersCaseListAdapter *adapterText{nullptr}; - UILabel *titleLabel{nullptr}; //主标题标签:在这里为音乐名 - UILabelButton *backButton{nullptr}; //返回按钮 - UIButton *pullButton{nullptr}; //上拉按钮 - UIButton *optionsButton{nullptr}; //选项按钮 - UIButton *preButton{nullptr}; //上一首按钮 - UIButton *nextButton{nullptr}; //下一首按钮 - UIScrollView *listGroup{nullptr}; //列表组:可能是歌单~暂定 - UIImageView *soundButton{nullptr}; //声音按钮 - UIImageView *playerModelButton{nullptr}; //播放模式按钮 - UICheckBox *playerButton{nullptr}; //播放按钮 - UICircleProgress *playbackProgress{nullptr};//播放进度条 - UILabel *musicListTitle{nullptr}; //歌单列表名 - int16_t volumeSet{0}; //声音值的大小设置 - PlayerListDelSongView *p_PlayerListDelSongView{nullptr}; - UILabel *MusciSourceLabel{nullptr}; //音乐来源标签 - UILabel *PhoneMusicConnectStatusLabel{nullptr};//手机音乐连接状态标签 - UIScrollView *DelSongView{nullptr}; - UIList *list{nullptr}; - JumpView *jumpView{nullptr}; - PlayersPresenter *playersPresenter{nullptr}; - PlayerOnDragListener *playerOnDragListener{nullptr}; - uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM; - UIView::OnClickListener *playerlistener{nullptr}; - UIView::OnClickListener *soundlistener{nullptr}; - UIView::OnClickListener *nextlistener{nullptr}; - UIView::OnClickListener *prelistener{nullptr}; - UIView::OnClickListener *modellistener{nullptr}; - UIView::OnClickListener *optionslistener{nullptr}; - UIView::OnClickListener *music_list_button_listener{nullptr}; - bool viewiInitStatus{false}; - bool resLoadStatus{false}; -}; + int16_t volumeSet{0}; // 声音值的大小设置 + bool viewiInitStatus{false}; + bool resLoadStatus{false}; + }; } // namespace OHOS -#endif // MAIN_VIEW_H +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/BluetoothView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/BluetoothView.cpp deleted file mode 100644 index d1cdfd87e..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/BluetoothView.cpp +++ /dev/null @@ -1,455 +0,0 @@ -/* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: bluetooth view 设置页面 - * Create: 2021-09-5 - */ -#include "player/include/BluetoothView.h" -#include "player/include/PlayersView.h" -#include "UiConfig.h" -#include "BluetoothEarPhoneView.h" -#include "PlayersPresenter.h" -#include "ui_resource_image.h" -#include "common/image_cache_manager.h" -namespace OHOS { -static BluetoothView *g_bluetoothView{nullptr}; -static constexpr uint16_t TEXT_WIDTH = 120; -static constexpr uint16_t TEXT_HEIGHT = 35; -static constexpr uint16_t HEIGHT = 55; -static constexpr uint16_t HEIGHT2 = 40; -static constexpr uint16_t WIDTH = 80; -static constexpr uint16_t WIDTH2 = 80; -static constexpr uint16_t BUTTON_WIDTH = 180; -static constexpr uint16_t BUTTON_HEIGHT = 40; - -constexpr uint16_t BLUETOOTH_OK = 0; -constexpr int16_t BLUETOOTH_ERROR = (-1); - -static constexpr uint16_t IMAGE_X = 83; -static constexpr uint16_t IMAGE_Y = 150; -static constexpr uint16_t IMAGE_Y2 = 270; -static constexpr uint16_t IMAGE_Y3 = 390; -static constexpr uint16_t STEP_LABEL_X = 143; -static constexpr uint16_t BUTTON_X = 300; -static constexpr uint16_t BUTTON_X2 = 326; -static constexpr uint16_t BUTTON_X3 = 135; -static constexpr uint16_t BUTTON_Y = 140; -static constexpr uint16_t BUTTON_Y2 = 260; -static constexpr uint16_t BUTTON_Y3 = 397; -static constexpr uint16_t BUTTON_Y4 = 402; -static constexpr uint16_t STEP_LABEL_Y = 153; -static constexpr uint16_t STEP_LABEL_Y2 = 273; -static constexpr uint16_t STEP_LABEL_Y3 = 393; - -BluetoothView::BluetoothView() -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::BluetoothView"); - g_bluetoothView = this; - -} - -BluetoothView::~BluetoothView() -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::~BluetoothView"); - group->RemoveAll(); - UIView::OnClickListener *click = watchButton->GetOnClickListener(); - if (click != nullptr) { - delete click; - } - delete watchButton; - watchButton = nullptr; - click = phoneButton->GetOnClickListener(); - if (click != nullptr) { - delete click; - } - click = nullptr; - delete phoneButton; - phoneButton = nullptr; - delete settingButton; - settingButton = nullptr; - delete titleLabel; - titleLabel = nullptr; - delete phoneBackground; - phoneBackground = nullptr; - delete watchBackground; - watchBackground = nullptr; - delete bluetoothBackground; - bluetoothBackground = nullptr; - delete watchLabel; - watchLabel = nullptr; - delete phoneLabel; - phoneLabel = nullptr; - delete bluetoothLabel; - bluetoothLabel = nullptr; - delete watchImage; - watchImage = nullptr; - delete phoneImage; - phoneImage = nullptr; - delete bluetoothImage; - bluetoothImage = nullptr; - delete scrollView; - scrollView = nullptr; - delete group; - group = nullptr; - g_bluetoothView = nullptr; -} - -BluetoothView *BluetoothView::GetInstance(void) -{ - return g_bluetoothView; -} - -UIButton *BluetoothView::GetSettingButton(void) -{ - return settingButton; -} - -UIRadioButton *BluetoothView::GetWatchButton(void) -{ - return watchButton; -} - -UIRadioButton *BluetoothView::GetPhoneButton(void) -{ - return phoneButton; -} - -// Button OnClick -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"); - BluetoothView *bluetoothView = BluetoothView::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; -}; - -/// @brief 加载标题文本:音乐来源 -/// @return -int BluetoothView::LoadTitleLabel(void) -{ - if (titleLabel == nullptr) { - titleLabel = new UILabel(); - if (titleLabel == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail"); - return BLUETOOTH_ERROR; - } - } - titleLabel->SetPosition(173, 52, 120, 35); - titleLabel->SetText("音乐来源"); - titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE); - return BLUETOOTH_OK; -} - -/// @brief 加载要放置各种组件的背景图片,一共三个 -/// @return -int BluetoothView::LoadImageBackGround(void) -{ - if(phoneBackground == nullptr){ - phoneBackground = new UIImageView(); - if (phoneBackground == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneBackground UIImageView new fail"); - return BLUETOOTH_ERROR; - } - } - if(watchBackground == nullptr){ - watchBackground = new UIImageView(); - if (watchBackground == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchBackground UIImageView new fail"); - return BLUETOOTH_ERROR; - } - } - if(bluetoothBackground == nullptr){ - bluetoothBackground = new UIImageView(); - if (bluetoothBackground == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothBackground UIImageView new fail"); - return BLUETOOTH_ERROR; - } - } - - const char* BackgroundImage = "/user/res/SETTING_BACKGROUND.bin"; - phoneBackground->SetPosition(43,120); - phoneBackground->SetStyle(STYLE_BORDER_RADIUS, 100); - phoneBackground->SetSrc(BackgroundImage); - - watchBackground->SetPosition(43,240); - watchBackground->SetStyle(STYLE_BORDER_RADIUS, 100); - watchBackground->SetSrc(BackgroundImage); - - bluetoothBackground->SetPosition(43,360); - bluetoothBackground->SetStyle(STYLE_BORDER_RADIUS, 100); - bluetoothBackground->SetSrc(BackgroundImage); - return BLUETOOTH_OK; -} - -/// @brief 加载图片图标 -/// @param -/// @return -int BluetoothView::LoadImage(void) -{ - ImageInfo *image; - // 图片图标 - phoneImage = new UIImageView(); - if (phoneImage == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage new fail"); - return BLUETOOTH_ERROR; - } - phoneImage->SetPosition(IMAGE_X, IMAGE_Y, WIDTH2, HEIGHT2); - image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PHONE_WHITE, PLAYER_IAMGES); - phoneImage->SetSrc(image); - - - watchImage = new UIImageView(); - if (watchImage == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchImage new fail"); - return BLUETOOTH_ERROR; - } - watchImage->SetPosition(IMAGE_X, IMAGE_Y2, WIDTH2, HEIGHT2); - image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_WHITE, PLAYER_IAMGES); - watchImage->SetSrc(image); - - bluetoothImage = new UIImageView(); - if (bluetoothImage == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothImage new fail"); - return BLUETOOTH_ERROR; - } - bluetoothImage->SetPosition(IMAGE_X, IMAGE_Y3, WIDTH2, HEIGHT2); - image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_EARPHONE_WHITE, PLAYER_IAMGES); - bluetoothImage->SetSrc(image); - return BLUETOOTH_OK; -} - -/// @brief 加载文本 -/// @param -/// @return -int BluetoothView::LoadLabel(void) -{ - /* -------------------------------------------------------------------------- */ - if (phoneLabel == nullptr) { - phoneLabel = new UILabel(); - if (phoneLabel == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneLabel new fail"); - return BLUETOOTH_ERROR; - } - } - phoneLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y, TEXT_WIDTH, TEXT_HEIGHT); - phoneLabel->SetText("手机音乐"); - phoneLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE); - /* -------------------------------------------------------------------------- */ - if (watchLabel == nullptr) { - watchLabel = new UILabel(); - if (watchLabel == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchLabel new fail"); - return BLUETOOTH_ERROR; - } - } - watchLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y2, TEXT_WIDTH, TEXT_HEIGHT); - watchLabel->SetText("本地音乐"); - watchLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE); - /* -------------------------------------------------------------------------- */ - if (bluetoothLabel == nullptr) { - bluetoothLabel = new UILabel(); - if (bluetoothLabel == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothLabel new fail"); - return BLUETOOTH_ERROR; - } - } - bluetoothLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y3, TEXT_WIDTH, TEXT_HEIGHT); - bluetoothLabel->SetText("蓝牙音乐"); - bluetoothLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE); - /* -------------------------------------------------------------------------- */ - return BLUETOOTH_OK; -} - -/// @brief 加载两个radiobutton -/// @return -int BluetoothView::LoadRadioButton(void) -{ - /* -------------------------------------------------------------------------- */ - if (phoneButton == nullptr) { - phoneButton = new UIRadioButton("MusicCategory"); - if (phoneButton == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneButton UIRadio new fail"); - return BLUETOOTH_ERROR; - } - } - UIView::OnClickListener *listener1 = new BluetoothOnClickListener(reinterpret_cast(phoneButton)); - if (listener1 == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener1 new fail"); - return BLUETOOTH_ERROR; - } - phoneButton->SetPosition(BUTTON_X, BUTTON_Y, WIDTH, HEIGHT); - - phoneButton->SetImages(PNG_CHECKBOX_ON_IMAGE,PNG_CHECKBOX_OFF_IMAGE); - phoneButton->SetOnClickListener(listener1); - - /* -------------------------------------------------------------------------- */ - if (watchButton == nullptr) { - watchButton = new UIRadioButton("MusicCategory"); - if (watchButton == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchButton UIRadio new fail"); - return BLUETOOTH_ERROR; - } - } - UIView::OnClickListener *listener2 = new BluetoothOnClickListener(reinterpret_cast(watchButton)); - if (listener2 == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener2 new fail"); - return BLUETOOTH_ERROR; - } - watchButton->SetState(UICheckBox::SELECTED); - watchButton->SetPosition(BUTTON_X, BUTTON_Y2, WIDTH, HEIGHT); - watchButton->SetImages(PNG_CHECKBOX_ON_IMAGE,PNG_CHECKBOX_OFF_IMAGE); - watchButton->SetOnClickListener(listener2); - /* -------------------------------------------------------------------------- */ - return BLUETOOTH_OK; -} - -/// @brief 加载蓝牙耳机按钮视图 -/// @return -int BluetoothView::LoadButtonView(void) -{ - if (settingButton == nullptr) { - settingButton = new UIButton(); - if (settingButton == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "settingButton UIButton new fail"); - return BLUETOOTH_ERROR; - } - } - // 跳转按钮 - UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance(); - if (clickListener == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail"); - return BLUETOOTH_ERROR; - } - settingButton->SetPosition(BUTTON_X2,BUTTON_Y3, WIDTH, HEIGHT); - settingButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); - settingButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - settingButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); - settingButton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED); - settingButton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED); - settingButton->SetOnClickListener(clickListener); - settingButton->SetImageSrc(PNG_SETTING_NEXT_IMAGE, PNG_SETTING_NEXT_IMAGE); - settingButton->SetViewId(BLUETOOTH_SETTING_BUTTON); - return BLUETOOTH_OK; -} - - -/// @brief 加载音乐来源视图 -/// @return -UIViewGroup *BluetoothView::LoadMusicSourceView(void) -{ - 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); - if (scrollView == nullptr) { - scrollView = new UIScrollView(); - if (scrollView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail"); - return nullptr; - } - } - scrollView->SetPosition(0, 0,466,466); - scrollView->SetScrollBlankSize(40); - scrollView->SetReboundSize(50); - scrollView->SetDirection(1); - group->Add(scrollView); - - LoadTitleLabel(); - LoadImageBackGround(); - LoadImage(); - LoadLabel(); - LoadRadioButton(); - LoadButtonView(); - - scrollView->Add(titleLabel); - - scrollView->Add(phoneBackground); - scrollView->Add(watchBackground); - scrollView->Add(bluetoothBackground); - - scrollView->Add(watchImage); - scrollView->Add(phoneImage); - scrollView->Add(bluetoothImage); - - scrollView->Add(watchLabel); - scrollView->Add(phoneLabel); - scrollView->Add(bluetoothLabel); - - scrollView->Add(watchButton); - scrollView->Add(phoneButton); - scrollView->Add(settingButton); - - UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance(); - if (earDragListener == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail"); - return nullptr; - } - group->SetOnDragListener(earDragListener); - group->SetViewId(BLUETOOTH_VIEW); - group->SetDraggable(true); - group->SetTouchable(true); - return group; -} -} diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp new file mode 100644 index 000000000..34737b81e --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp @@ -0,0 +1,539 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: bluetooth view 设置页面 + * Create: 2021-09-5 + */ +#include "player/include/MusicPlayerSourceView.h" +#include "player/include/PlayersView.h" +#include "player/include/PlayersModel.h" +#include "UiConfig.h" +#include "BluetoothEarPhoneView.h" +#include "player/include/PlayersPresenter.h" +#include "ui_resource_image.h" +#include "ui_resource_string.h" +#include "settings/include/SettingModel.h" +#include "ui_resource_string.h" +namespace OHOS +{ + static MusicPlayerSourceView *g_bluetoothView{nullptr}; + MusicPlayerSourceView::MusicPlayerSourceView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::MusicPlayerSourceView"); + g_bluetoothView = this; + } + + MusicPlayerSourceView::~MusicPlayerSourceView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::~MusicPlayerSourceView"); + ClearAll(); + g_bluetoothView = nullptr; + } + + MusicPlayerSourceView *MusicPlayerSourceView::GetInstance(void) + { + return g_bluetoothView; + } + + bool MusicPlayerSourceView::OnClick(UIView &view, const ClickEvent &event) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::OnClick"); + UILabelButton *button = dynamic_cast(&view); + if (!button) + { + return false; + } + PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance(); + if (!playersPresenter) + { + return false; + } + ImageInfo *image; + if (button == phoneLableButton) // 若点击的是手机音乐按钮 + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick phoneLableButton"); + PlayersModel::GetInstance()->SetMusicSource(true); + UpdateBluetoothHeadSetViewIsVisible(); + + // 1.a2dp未连接,向手机发起a2dp连接 + + playersPresenter->UpdatePlayerView(); + } + else if (button == watchLableButton) // 若点击的是手表音乐按钮 + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick watchLableButton"); + PlayersModel::GetInstance()->SetMusicSource(false); + UpdateBluetoothHeadSetViewIsVisible(); + + playersPresenter->UpdatePlayerView(); + } + else if (button == bluetoothHeadsetLableButton) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothHeadsetLableButton"); + } + + 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) + { + group->RemoveAll(); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + if (titleLabel) + { + delete titleLabel; + titleLabel = nullptr; + } + if (phoneLableButton) + { + delete phoneLableButton; + phoneLableButton = nullptr; + } + if (watchLableButton) + { + delete watchLableButton; + watchLableButton = nullptr; + } + if (bluetoothHeadsetLableButton) + { + delete bluetoothHeadsetLableButton; + bluetoothHeadsetLableButton = nullptr; + } + if (phoneImage) + { + delete phoneImage; + phoneImage = nullptr; + } + if (watchImage) + { + delete watchImage; + watchImage = nullptr; + } + if (bluetoothHeadsetImage) + { + delete bluetoothHeadsetImage; + bluetoothHeadsetImage = nullptr; + } + if (phoneLabel) + { + delete phoneLabel; + phoneLabel = nullptr; + } + if (watchLabel) + { + delete watchLabel; + watchLabel = nullptr; + } + if (bluetoothHeadsetLabel) + { + delete bluetoothHeadsetLabel; + bluetoothHeadsetLabel = nullptr; + } + if (bluetoothHeadsetConnectState) + { + delete bluetoothHeadsetConnectState; + bluetoothHeadsetConnectState = nullptr; + } + delete scrollView; + scrollView = nullptr; + } + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_PHONE_WHITE, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_LOCAL_MUSIC_WHITE, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_EARPHONE_WHITE, PLAYER_IAMGES); + if (dragListener) + { + delete dragListener; + dragListener = nullptr; + } + delete group; + group = nullptr; + } + } + + UILabelExt *MusicPlayerSourceView::MusicPlayerSourceViewLabelInit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + // label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(70); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + UILabelButton *MusicPlayerSourceView::MusicPlayerSourceViewLabelButtonInit(ButtonConfig &buttonconfig) + { + UILabelButton *button = new UILabelButton(); + if (button == nullptr) + { + 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, 0xff000000, UIButton::PRESSED); + button->SetOnClickListener(this); + if (buttonconfig.flag) + { + button->SetImagePosition(300, 30); + button->SetImageSrc(PNG_CHECKBOX_OFF_IMAGE, PNG_CHECKBOX_OFF_IMAGE); + } + else + { + button->SetImagePosition(326, 37); + button->SetImageSrc(PNG_SETTING_NEXT_IMAGE, PNG_SETTING_NEXT_IMAGE); + } + return button; + } + + bool MusicPlayerSourceView::CreateMusicPlayerSourceViewLabelButton(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceViewLabelButton"); + ButtonConfig buttonconfig = { + .x = 43, + .y = 120, + .w = 380, + .h = 100, + .viewId = PHONE_MUSIC_LABEL_BUTTON, + .flag = true, + }; + phoneLableButton = MusicPlayerSourceViewLabelButtonInit(buttonconfig); + if (nullptr == phoneLableButton) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneLableButton new fail!!"); + return false; + } + /* ---------------------------- watchLableButton ---------------------------- */ + buttonconfig.y += 120; + buttonconfig.viewId = WATCH_MUSIC_LABEL_BUTTON; + watchLableButton = MusicPlayerSourceViewLabelButtonInit(buttonconfig); + if (nullptr == watchLableButton) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchLableButton new fail!!"); + return false; + } + /* ----------------------- bluetoothHeadsetLableButton ---------------------- */ + buttonconfig.y += 120; + buttonconfig.viewId = BLUETOOTH_HEADSET_LABEL_BUTTON; + buttonconfig.flag = false; + bluetoothHeadsetLableButton = MusicPlayerSourceViewLabelButtonInit(buttonconfig); + if (nullptr == bluetoothHeadsetLableButton) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothHeadsetLableButton new fail!!"); + return false; + } + + return true; + } + + bool MusicPlayerSourceView::CreateMusicPlayerSourceViewLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceViewLabel"); + LabelConfig labelConfig = { + .left = 83, + .top = 50, + .width = 300, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_MUSIC_SOURCE, /*音乐来源*/ + .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION, + }; + titleLabel = MusicPlayerSourceViewLabelInit(labelConfig); + if (nullptr == titleLabel) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail!!"); + return false; + } + titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + /* ------------------------------- phoneLabel ------------------------------- */ + labelConfig = { + .left = 143, + .top = 153, + .width = 180, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_MOBILE_MUSIC, /*手机音乐*/ + .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION, + }; + phoneLabel = MusicPlayerSourceViewLabelInit(labelConfig); + if (nullptr == phoneLabel) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneLabel new fail!!"); + return false; + } + /* ------------------------------- watchLabel ------------------------------- */ + labelConfig.top += 120; + labelConfig.textId = STR_WATCH_MUSIC; // 手表音乐 + watchLabel = MusicPlayerSourceViewLabelInit(labelConfig); + if (nullptr == watchLabel) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchLabel new fail!!"); + return false; + } + /* -------------------------- bluetoothHeadsetLabel ------------------------- */ + labelConfig.top = 381; + labelConfig.textId = STR_BLUETOOTH_HEADPHONES; // 蓝牙耳机 + bluetoothHeadsetLabel = MusicPlayerSourceViewLabelInit(labelConfig); + if (nullptr == bluetoothHeadsetLabel) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothHeadsetLabel new fail!!"); + return false; + } + /* ---------------------- bluetoothHeadsetConnectState ---------------------- */ + labelConfig.top = 413; + labelConfig.textId = (SettingModel::GetInstance().GetEarPhoneConnectStatus()) ? STR_PAIRED : STR_NOT_PAIRED; + bluetoothHeadsetConnectState = MusicPlayerSourceViewLabelInit(labelConfig); + if (nullptr == bluetoothHeadsetConnectState) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothHeadsetConnectState new fail!!"); + return false; + } + return true; + } + + bool MusicPlayerSourceView::CreateMusicPlayerSourceViewImage(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceViewImage"); + ImageInfo *image; + /* ------------------------------- phoneImage ------------------------------- */ + int x = 83; + int y = 150; + int w = 40; + int h = 40; + phoneImage = new UIImageView(); + if (phoneImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage new fail"); + return false; + } + phoneImage->SetPosition(x, y, w, h); + if (!PlayersView::LoadPlayerImage(phoneImage, PLAYER_PHONE_WHITE)) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage LoadPlayerImage fail"); + return false; + } + /* ------------------------------- watchImage ------------------------------- */ + y += 120; + watchImage = new UIImageView(); + if (watchImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchImage new fail"); + return false; + } + watchImage->SetPosition(x, y, w, h); + if (!PlayersView::LoadPlayerImage(watchImage, PLAYER_LOCAL_MUSIC_WHITE)) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage LoadPlayerImage fail"); + return false; + } + /* -------------------------- bluetoothHeadsetImage ------------------------- */ + y += 120; + bluetoothHeadsetImage = new UIImageView(); + if (bluetoothHeadsetImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothHeadsetImage new fail"); + return false; + } + bluetoothHeadsetImage->SetPosition(x, y, w, h); + if (!PlayersView::LoadPlayerImage(bluetoothHeadsetImage, PLAYER_EARPHONE_WHITE)) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage LoadPlayerImage fail"); + return false; + } + return true; + } + + UIViewGroup *MusicPlayerSourceView::CreateMusicPlayerSourceView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceView"); + 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_SOURCE_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 (scrollView == nullptr) + { + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail"); + return nullptr; + } + } + scrollView->SetPosition(0, 0, 466, 466); + scrollView->SetScrollBlankSize(75); + scrollView->SetReboundSize(35); + scrollView->SetDirection(UIScrollView::VERTICAL); + group->Add(scrollView); + + if (!CreateMusicPlayerSourceViewLabelButton() || !CreateMusicPlayerSourceViewLabel() || !CreateMusicPlayerSourceViewImage()) + { + return nullptr; + } + + UpdateBluetoothHeadsetConnectLabel(); + UpdateBluetoothHeadSetViewIsVisible(); + /* ----------------------------------- Add ---------------------------------- */ + + scrollView->Add(titleLabel); + scrollView->Add(phoneLableButton); + scrollView->Add(watchLableButton); + scrollView->Add(bluetoothHeadsetLableButton); + scrollView->Add(phoneImage); + scrollView->Add(watchImage); + scrollView->Add(bluetoothHeadsetImage); + scrollView->Add(phoneLabel); + scrollView->Add(watchLabel); + scrollView->Add(bluetoothHeadsetLabel); + scrollView->Add(bluetoothHeadsetConnectState); + /* -------------------------------------------------------------------------- */ + return group; + } + + void MusicPlayerSourceView::UpdateBluetoothHeadSetViewIsVisible(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceViewImage"); + bool value = PlayersModel::GetInstance()->GetMusicSource(); + if (bluetoothHeadsetLabel && bluetoothHeadsetImage && bluetoothHeadsetLableButton && bluetoothHeadsetConnectState) + { + bluetoothHeadsetLabel->SetVisible(value ? false : true); + bluetoothHeadsetImage->SetVisible(value ? false : true); + bluetoothHeadsetLableButton->SetVisible(value ? false : true); + bluetoothHeadsetConnectState->SetVisible(value ? false : true); + } + if (phoneLableButton && watchLableButton) + { + if (value) + { + phoneLableButton->SetImageSrc(PNG_CHECKBOX_ON_IMAGE, PNG_CHECKBOX_ON_IMAGE); + watchLableButton->SetImageSrc(PNG_CHECKBOX_OFF_IMAGE, PNG_CHECKBOX_OFF_IMAGE); + } + else + { + phoneLableButton->SetImageSrc(PNG_CHECKBOX_OFF_IMAGE, PNG_CHECKBOX_OFF_IMAGE); + watchLableButton->SetImageSrc(PNG_CHECKBOX_ON_IMAGE, PNG_CHECKBOX_ON_IMAGE); + } + } + scrollView->Invalidate(); + } + + void MusicPlayerSourceView::UpdateBluetoothHeadsetConnectLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::UpdateBluetoothHeadsetConnectLabel"); + if (bluetoothHeadsetConnectState) + { + bool state = SettingModel::GetInstance().GetEarPhoneConnectStatus(); + bluetoothHeadsetConnectState->SetTextId(state ? STR_PAIRED : STR_NOT_PAIRED); + bluetoothHeadsetConnectState->SetTextColor(state ? Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff) : Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + bluetoothHeadsetConnectState->Invalidate(); + } + } +} 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 17b87d47d..63a7437b5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp @@ -82,7 +82,7 @@ bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event) if((&view == P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index_]) && P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index_] == 0) { - playersView->GetDelSongView()->SetTheSongLabelStyle(sliceId_); + playersView->GetPlayerListDelSongView()->SetTheSongLabelStyle(sliceId_); playersView->SetPlayerDelSongViewStatus(true); return false; } @@ -107,7 +107,6 @@ bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event) std::string strSongName = sliceId_; std::string pureName = strSongName.substr(0, strSongName.rfind(".")); //获取纯粹歌曲名 const char *songName = pureName.c_str(); - //playersView->TitleSetText(songName); //playersView->SetPlayerListGroupStatus(false);//这是点击歌曲后就会播放歌曲歌单隐藏 /* -------------------------------------------------------------------------- */ SongClick(P_PlayersCaseListAdapter,index_); 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 3d06328e8..141305fa2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp @@ -267,7 +267,6 @@ int PlayersModel::PlayerInit(void) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerInit playersPresenter GetInstance fail"); return OHOS_FAILURE; } - // playersPresenter->SetTitleSetText(songName); playersPresenter->SetPlaybackProgress(circleProgress); playersPresenter->SetPlayerState(playButtonState); // PlayerStat(); @@ -294,7 +293,6 @@ void PlayersModel::NextSong(int16_t index) const char *songName = pureName.c_str(); PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance(); if (playersPresenter != nullptr) { - // playersPresenter->SetTitleSetText(songName); playersPresenter->SetPlaybackProgress(0); // 0:进度0% } int32_t ret; @@ -752,4 +750,14 @@ void PlayersModel::GetDuration(int64_t &duration) duration = duration_; } +bool PlayersModel::GetMusicSource() +{ + return musicSourceFlag; +} + +void PlayersModel::SetMusicSource(bool value) +{ + musicSourceFlag = value; +} + } \ No newline at end of file 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 ef2e46c6f..fa2de102a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp @@ -23,6 +23,7 @@ #include "bts_avrcp_controller.h" #include "bts_avrcp_target.h" #include +#include "ConfigModel.h" namespace OHOS { static PlayerOnDragListener *g_pPlayerOnDragListener = nullptr; @@ -150,10 +151,11 @@ bool JumpView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView) //切换到音乐来源视图 bool JumpView::ChangeBluetoothView(int16_t hideView, int16_t thisView) { + /* UNUSED(hideView); if (container[thisView] == nullptr) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothView"); - bluetoothView = new BluetoothView(); + bluetoothView = new MusicPlayerSourceView(); if (bluetoothView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView new fail"); return false; @@ -169,6 +171,7 @@ bool JumpView::ChangeBluetoothView(int16_t hideView, int16_t thisView) } WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeBluetoothView"); BluetoothModel::GetInstance()->SetTagConnectView(false); + */ return true; } @@ -496,7 +499,7 @@ void ButtonOnClickListener::PlayerButtonOnClick() return; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerButton OnClick"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play_or_pause_Button OnClick"); uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM; int32_t playerState; int32_t connCtState = avrcp_ct_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr()); @@ -544,61 +547,40 @@ void ButtonOnClickListener::PlayerButtonOnClick() /* -------------------------------------------------------------------------- */ } +/*当声音按钮被点击时候调用*/ void ButtonOnClickListener::SoundButtonOnClick() { - + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener SoundButtonOnClick"); PlayersView *playersView = PlayersView::GetInstance(); if (playersView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick playersView nullptr err"); return; } - if (volumeSettingView == nullptr) { - volumeSettingView = new VolumeSettingView(); - if (volumeSettingView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting nullptr err"); - return; - } - if (!volumeSettingView->SetUpVolume()) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting SetUpVolume fail"); - return; - } - RootView::GetInstance()->Add(volumeSettingView); - } - int32_t volume = AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC); + playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_VOLUME_CONTROL_VIEW); + int32_t volume = ConfigModel::GetInstance()->GetSystemVolume(); WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "current volume = %d", volume); - volumeSettingView->GetProgress()->SetValue(volume); - if (volume == 0) { - ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES); - volumeSettingView->GetDecreaseButton()->SetImageSrc(image, image); + if( playersView->GetVolumeSettingView()->GetProgress()) { + playersView->GetVolumeSettingView()->GetProgress()->SetValue(volume); } - VolumeSliderEventListener *volumeSliderEventListener = volumeSettingView->GetVolumeEventListener(); + VolumeSliderEventListener *volumeSliderEventListener = playersView->GetVolumeSettingView()->GetVolumeEventListener(); if (volumeSliderEventListener == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick volumeSliderEventListener nullptr err"); return; } volumeSliderEventListener->SetPlayerCoefficients(VOLUMEPLAYERS); // 进度条系数 - playersView->SetVisible(false); - volumeSettingView->SetVisible(true); - // 刷新UI - RootView::GetInstance()->Invalidate(); - + return; } - +//当音乐来源按钮被点击时候调用 void ButtonOnClickListener::OptionsButtonOnClick() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener OptionsButtonOnClick"); PlayersView *playersView = PlayersView::GetInstance(); if (playersView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OptionsButtonOnClick playersView nullptr err"); return; } - JumpView *jumpView = JumpView::GetInstance(); - if (jumpView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail"); - return; - } - playersView->SetVisible(false); - jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEJUMP_MAX, - JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW); + playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_SOURCE_VIEW); + return; } void ButtonOnClickListener::PlayerModelButtonOnClick() @@ -629,49 +611,44 @@ void ButtonOnClickListener::PlayerModelButtonOnClick() bool ButtonOnClickListener::OnClick(UIView& view, const ClickEvent& event) { - + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener OnClick"); UNUSED(event); PlayersView *playersView = PlayersView::GetInstance(); if (playersView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::GetInstance"); return false; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener OnClick"); - if (view_ == (UIView *)playersView->GetPlayerButton()) { + if (&view == (UIView *)playersView->GetPlayerButton()) { PlayerButtonOnClick(); - } else if (view_ == (UIView *)playersView->GetNextButton()) { + } else if (&view == (UIView *)playersView->GetNextButton()) { if (playersView->GetPlaybackProgress() != nullptr) { playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0% playersView->GetPlaybackProgress()->Invalidate(); } PlayersModel::GetInstance()->LoopingPlayout(); - } else if (view_ == (UIView *)playersView->GetPreButton()) { + } else if (&view == (UIView *)playersView->GetPreButton()) { if (playersView->GetPlaybackProgress() != nullptr) { playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0% playersView->GetPlaybackProgress()->Invalidate(); } PlayersModel::GetInstance()->PreviousPlayout(); - } else if (view_ == (UIView *)playersView->GetPlayerModelButton()) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModelButton OnClick"); + } else if (&view == (UIView *)playersView->GetPlayerModelButton()) { PlayersModel::GetInstance()->SetPlayerModelAddOne(); if (PlayersModel::GetInstance()->GetPlayerModel() > RANDOM) { PlayersModel::GetInstance()->SetPlayerModel(LOOP); } PlayerModelButtonOnClick(); - } else if (view_ == (UIView *)playersView->GetSoundButton()) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "soundButton OnClick"); + } else if (&view == (UIView *)playersView->GetSoundButton()) { SoundButtonOnClick(); - } else if (view_ == (UIView *)playersView->GetOptionsButton()) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "optionsButton OnClick"); + } else if (&view == (UIView *)playersView->GetOptionsButton()) { OptionsButtonOnClick(); - } - if(strcmp(view.GetViewId(),"music_list_button") == 0) + }else if(&view == playersView->GetMusicListButton()) { PlayersPresenter::GetInstance()->ShowPlayerListGroup(); } else if(strcmp(view.GetViewId(),ENSURE_DELETE_BUTTON) == 0) //删除音乐 { - playersView->GetDelSongView()->DeleteSongNameFile(); + playersView->GetPlayerListDelSongView()->DeleteSongNameFile(); } else if(strcmp(view.GetViewId(),CANCEL_DELETE_BUTTON) == 0) //不删除音乐 { @@ -959,25 +936,18 @@ void PlayerOnDragListener::OnDragChangView(const DragEvent& event, int16_t hideV } } +/*从音乐来源视图回到音乐主视图*/ void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangBluetoothView"); - if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DIRECTION_LEFT_TO_RIGHT"); + 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; } - BluetoothView *bluetoothView = BluetoothView::GetInstance(); - if (bluetoothView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView GetInstance fail"); - return; - } - bluetoothView->group->SetVisible(false); - playersView->SetVisible(true); - // 刷新UI - RootView::GetInstance()->Invalidate(); + playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW,PlayersView::MAIN_MUSICPLAYER_VIEW); + X_DRAG_FLAG = true; } } @@ -1017,6 +987,17 @@ void PlayerOnDragListener::DropEarListView(const DragEvent& event) JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true); } +bool PlayerOnDragListener::OnDrag(UIView& view, const DragEvent& event) +{ + UNUSED(view); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::OnDrag"); + if ((event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) // 拖动过程中判断是否是水平滑动 + { + X_DRAG_FLAG = true; + } + return true; +} + bool PlayerOnDragListener::OnDragEnd(UIView& view, const DragEvent& event) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::OnDragEnd- %s", view.GetViewId()); @@ -1045,8 +1026,9 @@ 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(), BLUETOOTH_VIEW) == 0) { + } 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); @@ -1079,21 +1061,6 @@ void PlayerOnDragListener::CorrespondingJump(const DragEvent& event, int16_t hid return; } -bool PlayerOnDragListener::OnDrag(UIView& view, const DragEvent& event) -{ - UNUSED(view); - if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - PlayersView *playersView = PlayersView::GetInstance(); - if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail"); - return false; - } - playersView->SetPlayerListGroupStatus(false); - RootView::GetInstance()->Invalidate(); - } - return false; -} - void PlayersPresenter::OnClickRescanButton(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RescanButtonOnClickListener OnClick"); @@ -1346,98 +1313,14 @@ bool PlayersPresenter::OnClick(UIView &view, const ClickEvent &event) return false; } -void PlayersPresenter::SetTitleSetText(const char *text) +void PlayersPresenter::UpdatePlayerView(void) { PlayersView *playersView = PlayersView::GetInstance(); if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText playersView GetInstance fail"); - return; - } - if (playersView->GetTitleLabel() == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText titleLabel nullptr"); - return; - } - playersView->TitleSetText(text); -} - -/// @brief 设置音乐来源标签内容 -/// @param text 文本内容 -void PlayersPresenter::SetMusicSourceSetText(const char *text) -{ - PlayersView *playersView = PlayersView::GetInstance(); - if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicSourceSetText playersView GetInstance fail"); - return; - } - if (playersView->GetMusicSourceLabel() == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicSourceSetText MusciSourceLabel nullptr"); - return; - } - playersView->MusicSourceLabelSetText(text); -} - -/// @brief 设置手机音乐连接状态文本内容 -/// @param text 文本内容 -void PlayersPresenter::SetPhoneMusicConnectStatusSetText(const char *text) -{ - PlayersView *playersView = PlayersView::GetInstance(); - if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusSetText playersView GetInstance fail"); - return; - } - if (playersView->GetPhoneMusicConnectStatusLabel() == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusSetText PhoneMusicConnectStatusLabel nullptr"); - return; - } - playersView->PhoneMusicConnectStatusLabelSetText(text); -} - -/// @brief 设置手机音乐连接状态标签是否可见 -/// @param status true 可见 false 阴藏 -void PlayersPresenter::SetPhoneMusicConnectStatusLabelIsVisible(bool status) -{ - PlayersView *playersView = PlayersView::GetInstance(); - if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusLabelIsVisible playersView GetInstance fail"); - return; - } - if (playersView->GetPhoneMusicConnectStatusLabel() == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusLabelIsVisible PhoneMusicConnectStatusLabel nullptr"); - return; - } - playersView->PhoneMusicConnectStatusLabelIsSetVisible(status); -} - -/// @brief 设置音乐列表按钮是否可见 -/// @param status true 可见 false 阴藏 -void PlayersPresenter::SetMusicListButtonIsVisible(bool status) -{ - PlayersView *playersView = PlayersView::GetInstance(); - if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicListButtonIsVisible playersView GetInstance fail"); - return; - } - if (playersView->GetMusicListButton() == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicListButtonIsVisible music_list_button nullptr"); - return; - } - playersView->MusicListButtonIsSetVisible(status); -} - -/// @brief 设置选项按钮的图片样式:点击该按钮后进入音乐来源视图,点击里面的按钮,改选项按钮会被替换相应图片 -/// @param image 图片信息 -void PlayersPresenter::SetOptionsButtonImageStyle(ImageInfo *image) -{ - PlayersView *playersView = PlayersView::GetInstance(); - if (playersView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetOptionsButtonImageStyle playersView GetInstance fail"); - return; - } - if (playersView->GetOptionsButton() == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetOptionsButtonImageStyle optionsButton nullptr"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail"); return; } - playersView->OptionsButtonSetImageStyle(image); + playersView->UpdatePlayerView(); } void PlayersPresenter::SetPlaybackProgress(int64_t value) 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 ccefa9d83..63e20e0a0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp @@ -6,7 +6,6 @@ */ #include #include -#include "common/image_cache_manager.h" #include "ui_resource_image.h" #include "player/include/PlayersView.h" #include "UiConfig.h" @@ -14,7 +13,8 @@ #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 { static PlayersView *g_pPlayersView = nullptr; @@ -31,74 +31,53 @@ namespace OHOS if (viewiInitStatus == true) { UnLoadPlayerImageRes(); - state = GetPlayerButtonState(); + uint8_t state = GetPlayerButtonState(); if (state == UICheckBox::UICheckBoxState::SELECTED) { PlayersModel::GetInstance()->SetPlayButtonState(true); } RemoveAll(); - listGroup->RemoveAll(); - delete list; - list = nullptr; - delete playerlistener; - playerlistener = nullptr; - delete playerButton; - playerButton = nullptr; - delete soundlistener; - soundlistener = nullptr; - delete nextButton; - nextButton = nullptr; - delete nextlistener; - nextlistener = nullptr; - delete preButton; - preButton = nullptr; - TearDownView(); - delete adapterText; - adapterText = nullptr; - delete backGround; - delete titleLabel; - delete subTitleLabel; - delete MusciSourceLabel; - MusciSourceLabel = nullptr; - if (music_list_button != nullptr) + ClearAll(); + if (listGroup) { - delete music_list_button; - music_list_button = nullptr; + 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 (PhoneMusicConnectStatusLabel != nullptr) + if (jumpView) { - delete PhoneMusicConnectStatusLabel; - PhoneMusicConnectStatusLabel = nullptr; + delete jumpView; + jumpView = nullptr; + } + if (playersPresenter) + { + delete playersPresenter; + playersPresenter = nullptr; + } + if (playerOnDragListener) + { + delete playerOnDragListener; + playerOnDragListener = nullptr; } - backGround = nullptr; - titleLabel = nullptr; - subTitleLabel = nullptr; - delete playbackProgress; - playbackProgress = nullptr; - delete jumpView; - jumpView = nullptr; - delete playersPresenter; - playersPresenter = nullptr; - delete playerOnDragListener; - playerOnDragListener = nullptr; } g_pPlayersView = nullptr; } - void PlayersView::TitleSetText(const char *text) - { - titleLabel->SetText(text); - titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); - titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, - UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER); - } - - void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode) - { - ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(playMode, PLAYER_IAMGES); - playerModelButton->SetSrc(image); - } - int16_t PlayersView::GetVolumeRank(void) { return volumeSet; @@ -114,24 +93,22 @@ namespace OHOS volumeSet++; } - UIButton *PlayersView::GetPullButton(void) - { - return pullButton; - } - + /*获取音乐来源按钮*/ UIButton *PlayersView::GetOptionsButton(void) { - return optionsButton; + return musicSourceButton; } + /*获取上一首音乐按钮*/ UIButton *PlayersView::GetPreButton(void) { - return preButton; + return preMusicButton; } + /*获取下一首音乐按钮*/ UIButton *PlayersView::GetNextButton(void) { - return nextButton; + return nextMusicButton; } // 获取音乐列表按钮 @@ -140,62 +117,68 @@ namespace OHOS return music_list_button; } - UILabel *PlayersView::GetTitleLabel(void) + /*获取播放模式按钮*/ + UIButton *PlayersView::GetPlayerModelButton(void) { - return titleLabel; + return playerModelButton; } - // 获取音乐来源标签 - UILabel *PlayersView::GetMusicSourceLabel(void) + /*获取声音调节按钮*/ + UIButton *PlayersView::GetSoundButton(void) { - return MusciSourceLabel; + return soundButton; } - // 获手机音乐连接状态标签 - UILabel *PlayersView::GetPhoneMusicConnectStatusLabel(void) + /*获取音乐播放和暂停复选按钮*/ + UICheckBox *PlayersView::GetPlayerButton(void) { - return PhoneMusicConnectStatusLabel; + return play_or_pause_Button; } - UICheckBox *PlayersView::GetPlayerButton(void) + /*获取音乐播放进度条*/ + UICircleProgress *PlayersView::GetPlaybackProgress(void) { - return playerButton; + return playbackProgress; } - UIImageView *PlayersView::GetSoundButton(void) + /*获取音乐列表*/ + UIList *PlayersView::GetPlayerList(void) { - return soundButton; + return musicList; } - UICircleProgress *PlayersView::GetPlaybackProgress(void) + /*获取声音设置视图*/ + VolumeSettingView *PlayersView::GetVolumeSettingView() { - return playbackProgress; + return volumeSettingView; } - UIImageView *PlayersView::GetPlayerModelButton(void) + PlayerListDelSongView *PlayersView::GetPlayerListDelSongView() { - return playerModelButton; + return playerListDelSongView; + } + + UIViewGroup *PlayersView::GetPlayerGroupView(int index) + { + return group[index]; } + /*获取音乐播放和暂停复选按钮的状态*/ UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void) { - return playerButton->GetState(); + return play_or_pause_Button->GetState(); } void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state) { - if (playerButton == nullptr) + if (play_or_pause_Button == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState playerButton NULL"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState play_or_pause_Button NULL"); return; } - return playerButton->SetState(state); + return play_or_pause_Button->SetState(state); } - UIList *PlayersView::GetPlayerList(void) - { - return list; - } /// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。 /// @param status void PlayersView::SetPlayerListGroupStatus(bool status) @@ -261,26 +244,6 @@ namespace OHOS PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume); } - void PlayersView::TearDownView() - { - delete prelistener; - prelistener = nullptr; - delete playerModelButton; - playerModelButton = nullptr; - delete modellistener; - modellistener = nullptr; - delete soundButton; - soundButton = nullptr; - delete optionslistener; - optionslistener = nullptr; - delete optionsButton; - optionsButton = nullptr; - delete pullButton; - pullButton = nullptr; - delete listGroup; - listGroup = nullptr; - } - PlayersView *PlayersView::GetInstance(void) { return g_pPlayersView; @@ -316,29 +279,28 @@ namespace OHOS musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); listGroup->Add(musicListTitle); - // list type - if (adapterText == nullptr) + if (musicAdapter == nullptr) { - adapterText = new PlayersCaseListAdapter(); - if (adapterText == nullptr) + musicAdapter = new PlayersCaseListAdapter(); + if (musicAdapter == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adapterText new fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicAdapter new fail"); return; } } - if (list == nullptr) + if (musicList == nullptr) { - list = new UIList(UIList::VERTICAL); - if (list == nullptr) + musicList = new UIList(UIList::VERTICAL); + if (musicList == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "list new fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicList new fail"); return; } - list->SetPosition(67, 138, 332, 500); - list->SetStartIndex(0); // 0 : list start index - list->SetAdapter(adapterText); + musicList->SetPosition(67, 138, 332, 500); + musicList->SetStartIndex(0); + musicList->SetAdapter(musicAdapter); } - listGroup->Add(list); + listGroup->Add(musicList); RootView::GetInstance()->Add(listGroup); UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance(); if (dragListener == nullptr) @@ -357,300 +319,259 @@ namespace OHOS /// @param songName void PlayersView::ShowUpDelSongView() { - if (p_PlayerListDelSongView == nullptr) + if (playerListDelSongView == nullptr) { - p_PlayerListDelSongView = new PlayerListDelSongView(); + playerListDelSongView = new PlayerListDelSongView(); } - DelSongView = p_PlayerListDelSongView->InitDelSongView(); + DelSongView = playerListDelSongView->InitDelSongView(); RootView::GetInstance()->Add(DelSongView); DelSongView->SetTouchable(true); DelSongView->SetVisible(false); } - // 设置按钮的位置和监听 - void PlayersView::SetUpButton(UIButton *btn, const Point &point, - int16_t width, int16_t height, UIView::OnClickListener *listener) + // 创建跳转视图 + void PlayersView::CreateJumpView(void) { - if (btn == nullptr) + if (jumpView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetUpButton nullptr"); - return; + jumpView = new JumpView(); + if (jumpView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail"); + return; + } } - Add(btn); - btn->SetPosition(point.x, point.y, width, height); - btn->SetOnClickListener(listener); } - // 复选框:选中播放未选中暂停 - int PlayersView::ShowUpCheckBoxButton() + // 创建一个音乐播放器的逻辑层 + void PlayersView::CreatePlayersPresenter(void) { - ImageInfo *ImagePlay; - ImageInfo *ImagerPause; - if (playerButton == nullptr) - { - playerButton = new UICheckBox(); - } - if (soundButton == nullptr) - { - soundButton = new UIImageView(); - } - if ((playerButton == nullptr) || (soundButton == nullptr)) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new fail"); - return OHOS_FAILURE; - } - playerlistener = new ButtonOnClickListener(reinterpret_cast(playerButton)); - if (playerlistener == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerlistener new fail"); - return OHOS_FAILURE; - } - playerButton->SetPosition(195, 195, 80, 80); // 140:x 139:y 172:width 172:height - playerButton->SetOnClickListener(playerlistener); - // ImagePlay = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAY, PLAYER_IAMGES); // 播放图片 - // ImagerPause = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PAUSE, PLAYER_IAMGES); // 暂停图片 - // playerButton->SetImages(ImagePlay, ImagerPause); - Add(playerButton); - - soundlistener = new ButtonOnClickListener(reinterpret_cast(soundButton)); - if (soundlistener == nullptr) + if (playersPresenter == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundlistener new fail"); - return OHOS_FAILURE; + playersPresenter = new PlayersPresenter(); + if (playersPresenter == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail"); + return; + } } - soundButton->SetTouchable(true); - soundButton->SetPosition(321, 321, 60, 60); - soundButton->SetOnClickListener(soundlistener); - // if (LoadPlayerImage(soundButton, PLAYER_MUSIC_VOICE) == false) - // { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton LoadPlayerImage fail"); - // return false; - // } - Add(soundButton); - return OHOS_SUCCESS; } - // 显示按钮:下一首,上一首,播放模式 - int PlayersView::ShowUpButton() - { - struct Point pointBtn; - ImageInfo *image; - pointBtn.x = 366; // 366:x - pointBtn.y = 213; // 213:y - nextlistener = new ButtonOnClickListener(reinterpret_cast(nextButton)); - if (nextlistener == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextlistener new fail"); - return OHOS_FAILURE; - } - SetUpButton(nextButton, pointBtn, 60, 60, nextlistener); // 93:width 116:height - // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_NEXT, PLAYER_IAMGES); - // nextButton->SetImageSrc(image, image); - nextButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); - nextButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - nextButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED); - nextButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); - nextButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - pointBtn.x = 60; // 60:x - pointBtn.y = 213; // 213:y - prelistener = new ButtonOnClickListener(reinterpret_cast(preButton)); - if (prelistener == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "prelistener new fail"); - return OHOS_FAILURE; - } - SetUpButton(preButton, pointBtn, 60, 60, prelistener); // 86:width 116:height - // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PROVE, PLAYER_IAMGES); - // preButton->SetImageSrc(image, image); - preButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); - preButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - preButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED); - preButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); - preButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - pointBtn.x = 105; // 105:x - pointBtn.y = 321; // 321:y - modellistener = new ButtonOnClickListener(reinterpret_cast(playerModelButton)); - if (modellistener == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modellistener new fail"); - return OHOS_FAILURE; - } - playerModelButton->SetTouchable(true); - playerModelButton->SetPosition(pointBtn.x, pointBtn.y, 60, 60); - playerModelButton->SetOnClickListener(modellistener); - // if (ShowUpPlayerMode() == false) - // { - // return OHOS_FAILURE; - // } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel()); - Add(playerModelButton); - - return OHOS_SUCCESS; - } - // 显示音乐播放模式:LOOP 循环播放 SEQUENCE 循序播放 REPEATS 单曲循环 RANDOM 随机播放 - bool PlayersView::ShowUpPlayerMode() + // 创建一个音乐播放器的拖拽监听 + void PlayersView::CreatePlayerOnDragListener(void) { - if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP) + if (playerOnDragListener == nullptr) { - if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false) + playerOnDragListener = new PlayerOnDragListener(); + if (playerOnDragListener == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail"); - return false; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail"); + return; } } - else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE) + } + + /*删除容器上所有组件*/ + void PlayersView::ClearAll(void) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ClearAll"); + if (group[MAIN_MUSICPLAYER_VIEW] != nullptr) { - if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false) + group[MAIN_MUSICPLAYER_VIEW]->RemoveAll(); + if (musicPlayerBackGround != nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail"); - return false; + delete musicPlayerBackGround; + musicPlayerBackGround = nullptr; } - } - else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS) - { - if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false) + if (elipse != nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail"); - return false; + delete elipse; + elipse = nullptr; } - } - else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM) - { - if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false) + if (playbackProgress != nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail"); - return false; + delete playbackProgress; + playbackProgress = nullptr; } + if (play_or_pause_Button != nullptr) + { + delete play_or_pause_Button; + play_or_pause_Button = nullptr; + } + if (music_list_button != nullptr) + { + delete music_list_button; + music_list_button = nullptr; + } + if (musicSourceButton != nullptr) + { + delete musicSourceButton; + musicSourceButton = nullptr; + } + if (preMusicButton != nullptr) + { + delete preMusicButton; + preMusicButton = nullptr; + } + if (nextMusicButton != nullptr) + { + delete nextMusicButton; + nextMusicButton = nullptr; + } + if (playerModelButton != nullptr) + { + delete playerModelButton; + playerModelButton = nullptr; + } + if (soundButton != nullptr) + { + delete soundButton; + soundButton = nullptr; + } + if (MusciSourceLabel) + { + delete MusciSourceLabel; + MusciSourceLabel = nullptr; + } + if (PhoneMusicConnectStatusLabel) + { + delete PhoneMusicConnectStatusLabel; + PhoneMusicConnectStatusLabel = nullptr; + } + if (clickListener != nullptr) + { + delete clickListener; + clickListener = nullptr; + } + delete group[MAIN_MUSICPLAYER_VIEW]; + group[MAIN_MUSICPLAYER_VIEW] = nullptr; } - return true; - } - // 显示按钮视图 - int PlayersView::ShowUpButtonView() - { - int ret; - ret = ShowUpCheckBoxButton(); - if (ret == OHOS_FAILURE) - { - return OHOS_FAILURE; - } - if (nextButton == nullptr) - { - nextButton = new UIButton(); - } - if (preButton == nullptr) - { - preButton = new UIButton(); - } - if (optionsButton == nullptr) - { - optionsButton = new UIButton(); - } - if (music_list_button == nullptr) - { - music_list_button = new UIButton(); - } - if (pullButton == nullptr) + if (volumeSettingView != nullptr) { - pullButton = new UIButton(); + delete volumeSettingView; + volumeSettingView = nullptr; } - if (playerModelButton == nullptr) + if (musicPlayerSourceView != nullptr) { - playerModelButton = new UIImageView(); + delete musicPlayerSourceView; + musicPlayerSourceView = nullptr; } - if ((nextButton == nullptr) || (preButton == nullptr) || (playerModelButton == nullptr) || (optionsButton == nullptr) || - (pullButton == nullptr)) + + for (int i = MAIN_MUSICPLAYER_VIEW; i < MUSICPLAYERJUMPVIEWID_MAX; i++) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIButton new fail"); - return OHOS_FAILURE; + group[i] = nullptr; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpButtonView"); + } - ret = ShowUpButton(); - if (ret == OHOS_FAILURE) + UIButton *PlayersView::PlayerViewButtonInit(ButtonConfig &buttonconfig) + { + UIButton *button = new UIButton(); + if (button == nullptr) { - return OHOS_FAILURE; + return nullptr; } - ret = ShowUpButtonOptions(); - if (ret == OHOS_FAILURE) + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + button->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED); + button->SetOnClickListener(buttonconfig.clickListener); + + return button; + } + + /*创建音乐播放器的点击监听*/ + bool PlayersView::CreatePlayerOnClickListener(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerOnClickListener"); + clickListener = static_cast(new ButtonOnClickListener()); + if (clickListener == nullptr) { - return OHOS_FAILURE; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener new fail!!"); + return false; } - ret = ShowUpCircleProgress(); - if (ret == OHOS_FAILURE) + return true; + } + + /*创建音乐播放器的图片视图*/ + bool PlayersView::CreatePlayerImageView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerImageVIew"); + /* -------------------------- musicPlayerBackGround ------------------------- */ + if (musicPlayerBackGround == nullptr) { - return OHOS_FAILURE; + musicPlayerBackGround = new UIImageView(); + if (musicPlayerBackGround == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicPlayerBackGround new fail"); + return false; + } } - ret = ShowUpMusicListbutton(); - if (ret == OHOS_FAILURE) + musicPlayerBackGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + /* --------------------------------- elipse --------------------------------- */ + if (elipse == nullptr) { - return OHOS_FAILURE; + elipse = new UIImageView(); + if (elipse == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse new fail"); + return false; + } } - return OHOS_SUCCESS; + elipse->SetPosition(173, 173, 120, 120); + + return true; } - // 显示音乐列表按钮 - int PlayersView::ShowUpMusicListbutton() + /*创建音乐播放器的标签视图*/ + bool PlayersView::CreatePlayerLabelView(void) { - struct Point pointBtn; - pointBtn.x = 213; - pointBtn.y = 35; - music_list_button_listener = new ButtonOnClickListener(reinterpret_cast(music_list_button)); - if (music_list_button_listener == nullptr) + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerLabelView"); + if (MusciSourceLabel == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button_listener new fail"); - return OHOS_FAILURE; + MusciSourceLabel = new UILabelExt(); + if (MusciSourceLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusciSourceLabel new fail"); + return false; + } } - SetUpButton(music_list_button, pointBtn, 60, 60, music_list_button_listener); // 75:width 76:height - // ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_LIST, PLAYER_IAMGES); - // music_list_button->SetImageSrc(image, image); - music_list_button->SetViewId("music_list_button"); - music_list_button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); - music_list_button->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - music_list_button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED); - music_list_button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); - music_list_button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - - return OHOS_SUCCESS; - } - /* - 创建了两个按钮:optionslistener:显示选项按钮,点击后里面有三种模式:1手机音乐,2本地音乐,3蓝牙耳机 - pullButton:上拉按钮上拉后显示歌单 - */ - int PlayersView::ShowUpButtonOptions() - { - struct Point pointBtn; - pointBtn.x = 213; - pointBtn.y = 366; - optionslistener = new ButtonOnClickListener(reinterpret_cast(optionsButton)); - if (optionslistener == nullptr) + MusciSourceLabel->SetPosition(83, 90, 300, 35); + MusciSourceLabel->SetStyle(STYLE_TEXT_FONT, 30); + MusciSourceLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + MusciSourceLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + MusciSourceLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + MusciSourceLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + /* -------------------------------------------------------------------------- */ + if (PhoneMusicConnectStatusLabel == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionslistener new fail"); - return OHOS_FAILURE; + PhoneMusicConnectStatusLabel = new UILabelExt(); + if (PhoneMusicConnectStatusLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PhoneMusicConnectStatusLabel new fail"); + return false; + } } - SetUpButton(optionsButton, pointBtn, 60, 60, optionslistener); // 75:width 76:height - // ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES); - // optionsButton->SetImageSrc(image, image); - optionsButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); - optionsButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - optionsButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED); - optionsButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); - optionsButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + PhoneMusicConnectStatusLabel->SetPosition(83, 40, 300, 35); + PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff)); + PhoneMusicConnectStatusLabel->SetStyle(STYLE_TEXT_FONT, 30); + PhoneMusicConnectStatusLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + PhoneMusicConnectStatusLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + PhoneMusicConnectStatusLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + PhoneMusicConnectStatusLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + PhoneMusicConnectStatusLabel->SetVisible(false); - pointBtn.x = 178; // 178:x - pointBtn.y = 394; // 394:y - SetUpButton(pullButton, pointBtn, 95, 48, nullptr); // 95:width 48:height - pullButton->SetImageSrc(PNG_PULLBUTTON_FACE_IMAGE, PNG_PULLBUTTON_FACE_IMAGE); - pullButton->SetVisible(false); - return OHOS_SUCCESS; + return true; } - // 显示播放进度条 - int PlayersView::ShowUpCircleProgress() + + /*创建音乐播放器的进度条组件视图*/ + bool PlayersView::CreatePlayerProgressView(void) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerProgressView"); if (playbackProgress == nullptr) { playbackProgress = new UICircleProgress(); if (playbackProgress == nullptr) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playbackProgress new fail"); - return OHOS_FAILURE; + return false; } } playbackProgress->SetPosition(158, 158, 150, 150); @@ -668,229 +589,270 @@ namespace OHOS playbackProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xffffffff); playbackProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xffffffff); playbackProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 6); // 6:width - Add(playbackProgress); - return OHOS_SUCCESS; + + return true; } - // 创建跳转视图 - void PlayersView::CreateJumpView(void) + + /*创建音乐播放器的播放和暂停按钮组件视图*/ + bool PlayersView::CreatePlayerCheckBoxButtonView(void) { - if (jumpView == nullptr) + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerCheckBoxButtonView"); + if (play_or_pause_Button == nullptr) { - jumpView = new JumpView(); - if (jumpView == nullptr) + play_or_pause_Button = new UICheckBox(); + if (play_or_pause_Button == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail"); - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new fail"); + return false; } } + play_or_pause_Button->SetPosition(195, 195, 80, 80); + play_or_pause_Button->SetOnClickListener(clickListener); + return true; } - // 创建一个音乐播放器的逻辑层 - void PlayersView::CreatePlayersPresenter(void) + + /*创建音乐播放器的按钮视图*/ + bool PlayersView::CreatePlayerButtonView(void) { - if (playersPresenter == nullptr) + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerImageVIew"); + ButtonConfig buttonConfig = { + .x = 213, + .y = 35, + .w = 60, + .h = 60, + .clickListener = clickListener, + }; + /* ---------------------------- music_list_button --------------------------- */ + music_list_button = PlayerViewButtonInit(buttonConfig); + if (nullptr == music_list_button) { - playersPresenter = new PlayersPresenter(); - if (playersPresenter == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail"); - return; - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button new fail!!"); + return false; } - } - // 创建一个音乐播放器的拖拽监听 - void PlayersView::CreatePlayerOnDragListener(void) - { - if (playerOnDragListener == nullptr) + /* ----------------------------- preMusicButton ----------------------------- */ + buttonConfig.x = 60; + buttonConfig.y = 213; + preMusicButton = PlayerViewButtonInit(buttonConfig); + if (nullptr == preMusicButton) { - playerOnDragListener = new PlayerOnDragListener(); - if (playerOnDragListener == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail"); - return; - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "preMusicButton new fail!!"); + return false; } - } - // 初始化背景图片 - bool PlayersView::InitBackGround(void) - { - if (backGround == nullptr) + /* ----------------------------- nextMusicButton ---------------------------- */ + buttonConfig.x = 366; + buttonConfig.y = 213; + nextMusicButton = PlayerViewButtonInit(buttonConfig); + if (nullptr == nextMusicButton) { - backGround = new UIImageView(); - if (backGround == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround new fail"); - return false; - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextMusicButton new fail!!"); + return false; } - backGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); - // if (LoadPlayerImage(backGround, PLAYER_BACKGROUND) == false) - // { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail"); - // return false; - // } - /* -------------------------------------------------------------------------- */ - if (elipse == nullptr) + /* ---------------------------- playerModelButton --------------------------- */ + buttonConfig.x = 105; + buttonConfig.y = 321; + playerModelButton = PlayerViewButtonInit(buttonConfig); + if (nullptr == playerModelButton) { - elipse = new UIImageView(); - if (elipse == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse new fail"); - return false; - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton new fail!!"); + return false; } - elipse->SetPosition(173, 173, 120, 120); - // if (LoadPlayerImage(elipse, PLAYER_ELLIPSE) == false) - // { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse LoadPlayerImage fail"); - // return false; - // } - Add(backGround); - Add(elipse); - return true; - } - // 创建音乐名,作者名 - void PlayersView::CreatePlayerMusicName() - { - if (titleLabel == nullptr) + /* ------------------------------ musicSourceButton ----------------------------- */ + buttonConfig.x = 213; + buttonConfig.y = 366; + musicSourceButton = PlayerViewButtonInit(buttonConfig); + if (nullptr == musicSourceButton) { - titleLabel = new UILabel(); - if (titleLabel == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail"); - return; - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicSourceButton new fail!!"); + return false; } - titleLabel->SetPosition(127, 35, 200, 53); // 127:x 35:y 200:width 53:height - titleLabel->SetText("Music Name"); - titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE); - Add(titleLabel); - - if (subTitleLabel == nullptr) + /* ------------------------------- soundButton ------------------------------ */ + buttonConfig.x = 321; + buttonConfig.y = 321; + soundButton = PlayerViewButtonInit(buttonConfig); + if (nullptr == soundButton) { - subTitleLabel = new UILabel(); - if (subTitleLabel == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "subTitleLabel new fail"); - return; - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundButton new fail!!"); + return false; } - subTitleLabel->SetPosition(77, 92, 300, 38); // 77:x 92:y 300:width 38:height - subTitleLabel->SetText("Musical Authors"); - subTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data - subTitleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER); - Add(subTitleLabel); - return; - } - // 拖拽监听:从下到上拖拽后显示音乐列表 - bool PlayersView::OnDragEvent(const DragEvent &event) - { - /* 300: y limit of drag start point */ - // if ((event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) && (event.GetStartPoint().y > 300)) { - // PlayersPresenter::GetInstance()->ShowPlayerListGroup(); - // return true; - // } - return false; + + return true; } - /// @brief 创建音乐来源标签 - /// @param - void PlayersView::CreateMusicSourceLabel(void) + bool PlayersView::CreatePlayerScrollView(void) { - if (MusciSourceLabel == nullptr) + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerScrollVIew"); + if (group[MAIN_MUSICPLAYER_VIEW] == nullptr) { - MusciSourceLabel = new UILabel(); - if (MusciSourceLabel == nullptr) + group[MAIN_MUSICPLAYER_VIEW] = new UIScrollView(); + if (group[MAIN_MUSICPLAYER_VIEW] == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusciSourceLabel new fail"); - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group[MAIN_MUSICPLAYER_VIEW] new fail!"); + return false; } + group[MAIN_MUSICPLAYER_VIEW]->SetPosition(0, 0, 466, 466); + group[MAIN_MUSICPLAYER_VIEW]->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + group[MAIN_MUSICPLAYER_VIEW]->SetTouchable(true); + group[MAIN_MUSICPLAYER_VIEW]->SetDraggable(true); } - MusciSourceLabel->SetPosition(163, 90, 140, 41); - MusciSourceLabel->SetText("本地音乐"); - MusciSourceLabel->SetStyle(STYLE_TEXT_FONT, 35); - MusciSourceLabel->SetStyle(STYLE_LINE_HEIGHT, 41); - MusciSourceLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - MusciSourceLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - MusciSourceLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); - Add(MusciSourceLabel); + return true; } - /// @brief 设置音乐来源标签内容 - /// @param text 文本内容 - void PlayersView::MusicSourceLabelSetText(const char *text) + bool PlayersView::CreatePlayerView(void) { - MusciSourceLabel->SetText(text); - MusciSourceLabel->Invalidate(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerVIew"); + if (!CreatePlayerOnClickListener() || !CreatePlayerScrollView() || !CreatePlayerImageView() || + !CreatePlayerProgressView() || !CreatePlayerCheckBoxButtonView() || !CreatePlayerButtonView() || !CreatePlayerLabelView()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::CreatePlayerVIew"); + return false; + } + /* ----------------------------------- Add ---------------------------------- */ + group[MAIN_MUSICPLAYER_VIEW]->Add(musicPlayerBackGround); + group[MAIN_MUSICPLAYER_VIEW]->Add(elipse); + 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); + group[MAIN_MUSICPLAYER_VIEW]->Add(musicSourceButton); + group[MAIN_MUSICPLAYER_VIEW]->Add(soundButton); + group[MAIN_MUSICPLAYER_VIEW]->Add(MusciSourceLabel); + group[MAIN_MUSICPLAYER_VIEW]->Add(PhoneMusicConnectStatusLabel); + Add(group[MAIN_MUSICPLAYER_VIEW]); + /* -------------------------------------------------------------------------- */ + return true; } - /// @brief 创建手机音乐连接状态标签 - /// @param - void PlayersView::CreatePhoneMusicConnectStatusLabel(void) + /*设置音乐来源标签内容*/ + void PlayersView::MusicSourceLabelSetText(int textId) { - if (PhoneMusicConnectStatusLabel == nullptr) - { - PhoneMusicConnectStatusLabel = new UILabel(); - if (PhoneMusicConnectStatusLabel == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PhoneMusicConnectStatusLabel new fail"); - return; - } - } - PhoneMusicConnectStatusLabel->SetPosition(188, 40, 90, 35); - PhoneMusicConnectStatusLabel->SetText("未连接"); - PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff)); - PhoneMusicConnectStatusLabel->SetStyle(STYLE_TEXT_FONT, 30); - PhoneMusicConnectStatusLabel->SetStyle(STYLE_LINE_HEIGHT, 35); - PhoneMusicConnectStatusLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - PhoneMusicConnectStatusLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - PhoneMusicConnectStatusLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - PhoneMusicConnectStatusLabel->SetVisible(false); - Add(PhoneMusicConnectStatusLabel); + MusciSourceLabel->SetTextId(textId); + MusciSourceLabel->ForceResetText(); } /// @brief 设置手机音乐连接状态标签内容 - /// @param text 文本内容 - void PlayersView::PhoneMusicConnectStatusLabelSetText(const char *text) + void PlayersView::PhoneMusicConnectStatusLabelSetText(int textId) { - PhoneMusicConnectStatusLabel->SetText(text); + PhoneMusicConnectStatusLabel->SetTextId(textId); PhoneMusicConnectStatusLabel->Invalidate(); } /// @brief 设置手机连接状态标签是否可见 - /// @param status void PlayersView::PhoneMusicConnectStatusLabelIsSetVisible(bool status) { PhoneMusicConnectStatusLabel->SetVisible(status); } - /// @brief 设置音乐列表按钮是否可见 - /// @param status + // 设置手机音乐连接状态标签颜色 + void PlayersView::PhoneMusicConnectStatusLabelColor(bool state) + { + if (state) + { + PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); + } + else + { + PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff)); + } + } + + /*设置音乐列表按钮是否可见*/ void PlayersView::MusicListButtonIsSetVisible(bool status) { music_list_button->SetVisible(status); } /// @brief 设置选项按钮的图片样式:点击该按钮后进入音乐来源视图,点击里面的按钮,改选项按钮会被替换相应图片 - /// @param image 图片信息 void PlayersView::OptionsButtonSetImageStyle(ImageInfo *image) { - optionsButton->SetImageSrc(image, image); - optionsButton->Invalidate(); + musicSourceButton->SetImageSrc(image, image); + musicSourceButton->Invalidate(); } + + void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode) + { + LoadPlayerButtonImage(playerModelButton, playMode); + } + + /*更新音乐播放模式按钮*/ + void PlayersView::UpdateMusicPlayerModelButton(void) + { + if (PlayersModel::GetInstance()->GetMusicSource()) + { + playerModelButton->SetTouchable(false); + } + else + { + playerModelButton->SetTouchable(true); + } + PreLoadPlayerModeImageRes(); + } + + void PlayersView::UpdatePlayerView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdatePlayerView"); + // 1.a2dp未连接,向手机发起a2dp连接 + + // 2. + ImageInfo *image; + if (PlayersModel::GetInstance()->GetMusicSource()) + { + image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PHONE_COLOR, PLAYER_IAMGES); + if (!image) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LoadImage fail!!"); + return; + } + + OptionsButtonSetImageStyle(image); + PhoneMusicConnectStatusLabelIsSetVisible(true); + MusicListButtonIsSetVisible(false); + UpdateMusicPlayerModelButton(); + + bool phonecon = SettingModel::GetInstance().GetPhoneConnectStatus(); // 获取手机连接状态 + bool a2dp = uapi_a2dp_snk_get_device_connect_state(); // 获取a2dp连接状态 + if (phonecon && a2dp) + { + PhoneMusicConnectStatusLabelSetText(STR_CONNECTED); /*已连接*/ + MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐 + PhoneMusicConnectStatusLabelColor(false); + } + else + { + PhoneMusicConnectStatusLabelSetText(STR_DISCONNECTED); /*未连接*/ + MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐 + PhoneMusicConnectStatusLabelColor(true); + } + } + else + { + image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES); + if (!image) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LoadImage fail!!"); + return; + } + OptionsButtonSetImageStyle(image); + PhoneMusicConnectStatusLabelIsSetVisible(false); + MusicListButtonIsSetVisible(true); + MusicSourceLabelSetText(STR_WATCH_MUSIC); /*手表音乐*/ + UpdateMusicPlayerModelButton(); + } + } + // 初始化音乐播放器主视图 bool PlayersView::InitView(void) { - int ret; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView"); - - if (InitBackGround() == false) + if (CreatePlayerView() == false) { return false; } - - // CreatePlayerMusicName(); - CreatePhoneMusicConnectStatusLabel(); - CreateMusicSourceLabel(); + /* -------------------------------------------------------------------------- */ + UpdatePlayerView(); + /* -------------------------------------------------------------------------- */ // changeView CreateJumpView(); // OnClick @@ -898,15 +860,7 @@ namespace OHOS // OnDrag CreatePlayerOnDragListener(); // 按键设置 - ret = ShowUpButtonView(); - if (ret == OHOS_FAILURE) - { - return false; - } - // 需要一个模拟信息,假装发生了按键点击,开始播放音乐 - // 调用 OnClick 回调函数来处理点击事件 - // playerButton.OnClick(,); - // 遍历文件名到list链表 + PlayersListGroup::GetInstance()->SetUpListCase(); PlayersModel::GetInstance()->PlayerInit(); ShowUpListView(); @@ -934,7 +888,8 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::UnLoad"); UnLoadPlayerImageRes(); } - // 加载音乐图片 + + // 加载图片组件音乐图片 bool PlayersView::LoadPlayerImage(UIImageView *view, uint32_t resId) { std::string file = PLAYER_IAMGES; @@ -948,6 +903,7 @@ namespace OHOS return true; } + // 加载按钮组件音乐图片 bool PlayersView::LoadPlayerButtonImage(UIButton *button, uint32_t resId) { std::string file = PLAYER_IAMGES; @@ -957,100 +913,312 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId); return false; } - button->SetImageSrc(image,image); + button->SetImageSrc(image, image); return true; } - /*预加载音乐播放器资源*/ - void PlayersView::PreLoadPlayerImageRes(void) + bool PlayersView::LoadPlayerCheckBoxButtonImage(UICheckBox *button, uint32_t resId, uint32_t hlResId) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::playerResPreLoad"); - if(!resLoadStatus) + std::string file = PLAYER_IAMGES; + ImageInfo *image1 = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file); + ImageInfo *image2 = ImageCacheManager::GetInstance().LoadOneInMultiRes(hlResId, file); + if (image1 == nullptr || image2 == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage resId = %x,hlResId = %x fail", resId, hlResId); + return false; + } + button->SetImages(image1, image2); + return true; + } + + // 显示音乐播放模式:LOOP 循环播放 SEQUENCE 循序播放 REPEATS 单曲循环 RANDOM 随机播放 + /*预加载音乐播放模式的图片*/ + bool PlayersView::PreLoadPlayerModeImageRes(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::PreLoadPlayerModeImageRes"); + if (PlayersModel::GetInstance()->GetMusicSource()) + { + if (LoadPlayerButtonImage(playerModelButton, PLAYER_PLAYERSMODEL_UNUSABLE) == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail"); + return false; + } + return true; + } + /* -------------------------------------------------------------------------- */ + if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP) + { + if (LoadPlayerButtonImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail"); + return false; + } + } + else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE) { - if (LoadPlayerImage(soundButton, PLAYER_MUSIC_VOICE) == false) + if (LoadPlayerButtonImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton LoadPlayerImage fail"); - return ; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail"); + return false; } - if (LoadPlayerImage(backGround, PLAYER_BACKGROUND) == false) + } + else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS) + { + if (LoadPlayerButtonImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail"); + return false; + } + } + else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM) + { + if (LoadPlayerButtonImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail"); - return ; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail"); + return false; } + } + return true; + } + /*卸载音乐播放模式的图片*/ + bool PlayersView::UnLoadPlayerModeImageRes(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::UnLoadPlayerModeImageRes"); + int16_t playermodel = PlayersModel::GetInstance()->GetPlayerModel(); + switch (playermodel) + { + case LOOP: + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_PLAYERSMODEL_LOOP, PLAYER_IAMGES); + break; + case SEQUENCE: + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_PLAYERSMODEL_SEQUENCE, PLAYER_IAMGES); + break; + case REPEATS: + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_PLAYERSMODEL_REPEATS, PLAYER_IAMGES); + break; + case RANDOM: + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_PLAYERSMODEL_RANDOM, PLAYER_IAMGES); + break; + default: + break; + } + return true; + } + + /*预加载音乐播放器资源*/ + void PlayersView::PreLoadPlayerImageRes(void) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::playerResPreLoad"); + if (!resLoadStatus) + { + if (LoadPlayerImage(musicPlayerBackGround, PLAYER_BACKGROUND) == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicPlayerBackGround LoadPlayerImage fail"); + return; + } if (LoadPlayerImage(elipse, PLAYER_ELLIPSE) == false) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse LoadPlayerImage fail"); - return ; + return; } - - if(!ShowUpPlayerMode()) + if (LoadPlayerButtonImage(music_list_button, PLAYER_MUSIC_LIST) == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpPlayerMode fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button LoadPlayerImage fail"); return; } - - ImageInfo *ImagePlay; - ImageInfo *ImagerPause; - ImagePlay = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAY, PLAYER_IAMGES); // 播放图片 - ImagerPause = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PAUSE, PLAYER_IAMGES); // 暂停图片 - playerButton->SetImages(ImagePlay, ImagerPause); - - if(LoadPlayerButtonImage(nextButton,PLAYER_MUSIC_NEXT) == false) + if (LoadPlayerCheckBoxButtonImage(play_or_pause_Button, PLAYER_MUSIC_PLAY, PLAYER_MUSIC_PAUSE) == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextButton LoadPlayerImage fail"); - return ; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "play_or_pause_Button LoadPlayerCheckBoxButtonImage fail"); + return; } - - if(LoadPlayerButtonImage(preButton,PLAYER_MUSIC_PROVE) == false) + if (LoadPlayerButtonImage(preMusicButton, PLAYER_MUSIC_PROVE) == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "preButton LoadPlayerImage fail"); - return ; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "preMusicButton LoadPlayerImage fail"); + return; } - - if(LoadPlayerButtonImage(music_list_button,PLAYER_MUSIC_LIST) == false) + if (LoadPlayerButtonImage(nextMusicButton, PLAYER_MUSIC_NEXT) == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button LoadPlayerImage fail"); - return ; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextMusicButton LoadPlayerImage fail"); + return; } - - if(LoadPlayerButtonImage(optionsButton,PLAYER_LOCAL_MUSIC_COLOR) == false) + if (PreLoadPlayerModeImageRes() == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionsButton LoadPlayerImage fail"); - return ; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PreLoadPlayerModeImageRes fail"); + return; + } + if (LoadPlayerButtonImage(musicSourceButton, PLAYER_LOCAL_MUSIC_COLOR) == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicSourceButton LoadPlayerImage fail"); + return; + } + if (LoadPlayerButtonImage(soundButton, PLAYER_MUSIC_VOICE) == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundButton LoadPlayerImage fail"); + return; } - resLoadStatus = true; } } - + /*卸载音乐播放器资源*/ void PlayersView::UnLoadPlayerImageRes(void) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::playerResUnLoad"); - if(resLoadStatus) + if (resLoadStatus) { ImageInfo *image = nullptr; - soundButton->SetSrc(image); - backGround->SetSrc(image); + musicPlayerBackGround->SetSrc(image); elipse->SetSrc(image); + music_list_button->SetImageSrc(image, image); + play_or_pause_Button->SetImages(image, image); + preMusicButton->SetImageSrc(image, image); + nextMusicButton->SetImageSrc(image, image); + playerModelButton->SetImageSrc(image, image); + musicSourceButton->SetImageSrc(image, image); + soundButton->SetImageSrc(image, image); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_BACKGROUND, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_ELLIPSE, PLAYER_IAMGES); + + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_LIST, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_PLAY, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_PAUSE, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_PROVE, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_NEXT, PLAYER_IAMGES); + UnLoadPlayerModeImageRes(); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES); + ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_VOICE, PLAYER_IAMGES); - playerButton->SetImages(image,image); - nextButton->SetImageSrc(image,image); - preButton->SetImageSrc(image,image); - music_list_button->SetImageSrc(image,image); - optionsButton->SetImageSrc(image,image); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_VOICE,PLAYER_IAMGES); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_BACKGROUND,PLAYER_IAMGES); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_ELLIPSE,PLAYER_IAMGES); - - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_PLAY,PLAYER_IAMGES); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_PAUSE,PLAYER_IAMGES); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_NEXT,PLAYER_IAMGES); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_PROVE,PLAYER_IAMGES); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_MUSIC_LIST,PLAYER_IAMGES); - ImageCacheManager::GetInstance().UnloadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR,PLAYER_IAMGES); resLoadStatus = false; } } + + struct MusicPlayerJumpViewMapper + { + const int16_t viewId; + bool (PlayersView::*func)(int16_t thisView); + }; + + static const MusicPlayerJumpViewMapper ViewMapper[] = { + {PlayersView::MAIN_MUSICPLAYER_VIEW, &PlayersView::ChangeToMainMusicPlayerView}, + {PlayersView::MUSIC_SOURCE_VIEW, &PlayersView::ChangeToMusicSourceView}, + {PlayersView::MUSIC_VOLUME_CONTROL_VIEW, &PlayersView::ChangeToVolumeControlView}, + }; + + /*根据传入的 interface 值,在 ViewMapper 数组中查找匹配的 viewId*/ + bool PlayersView::ClickFunc(int16_t interface) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::ClickFunc"); + int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]); + for (int i = 0; i < funcSize; i++) + { + if (interface == ViewMapper[i].viewId) + { + bool jug = (this->*(ViewMapper[i].func))(interface); + if (jug == false) + { + return false; + } + return true; + } + } + return false; + } + + /*检查要切换视图参数是否有效*/ + bool PlayersView::CheckViewParam(int16_t hideView, int16_t showView) + { + if (showView < 0 || showView >= MUSICPLAYERJUMPVIEWID_MAX) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::CheckViewParam showView err."); + return false; + } + + if (hideView < 0 || hideView > MUSICPLAYERJUMPVIEWID_MAX) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::CheckViewParam hideView err."); + return false; + } + + return true; + } + + /*删除临时视图*/ + void PlayersView::DestroyTempView(int16_t hideView) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::DestroyTempView"); + } + + /*视图切换*/ + void PlayersView::ChangeView(int16_t hideView, int16_t showView) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeView"); + if (!CheckViewParam(hideView, showView)) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeView check param err %d %d.", hideView, showView); + return; + } + group[hideView]->SetVisible(false); + ClickFunc(showView); + group[showView]->SetVisible(true); + + if (RootView::GetInstance() != nullptr) + { + RootView::GetInstance()->Invalidate(); + } + + DestroyTempView(hideView); + } + + /*切换到音乐播放器主视图*/ + bool PlayersView::ChangeToMainMusicPlayerView(int16_t thisView) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMainMusicPlayerView"); + if (group[thisView] == nullptr) + { + Add(group[thisView]); + } + return true; + } + + /*切换到音乐来源视图*/ + bool PlayersView::ChangeToMusicSourceView(int16_t thisView) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicSourceView"); + if (group[thisView] == nullptr) + { + musicPlayerSourceView = new MusicPlayerSourceView(); + if (musicPlayerSourceView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView); + return false; + } + group[thisView] = musicPlayerSourceView->CreateMusicPlayerSourceView(); + Add(group[thisView]); + } + return true; + } + + /*切换到声音调节视图*/ + bool PlayersView::ChangeToVolumeControlView(int16_t thisView) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToVolumeControlView"); + if (group[thisView] == nullptr) + { + volumeSettingView = new VolumeSettingView(); + if (volumeSettingView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView); + return false; + } + if (!volumeSettingView->SetUpVolume()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting SetUpVolume fail"); + return false; + } + group[thisView] = volumeSettingView; + Add(group[thisView]); + } + return true; + } } diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/MainCard/player.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/MainCard/player.bin index a2e448641..d3cc3d21b 100644 --- a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/MainCard/player.bin +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/MainCard/player.bin @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d533f534345e85d1b84fa56e5887c37eb606d7f5f91077c4c9df6351208f86a -size 199320 +oid sha256:38a3e44d96390c1ef0c6e1819b4966df60f079ff84bb80de6183e68a53524871 +size 228024