${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/MusicPlayerBluetoothDisConView.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
STR_IFLYTEK_SPARK = 500,\r
STR_DISTURBNOTE_OFF = 501,\r
STR_4G_NOTE = 502,\r
- STR_MAX_ID = 503,\r
+ STR_MUSIC_PLAYER_SOURCE_NOTE = 503,\r
+ STR_MAX_ID = 504,\r
}; // UIResourceTextId\r
\r
enum FontLanguageId : uint8_t {\r
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-10 16:23:34
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-10 17:42:47
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerBluetoothDisConView.h
+ */
+#ifndef MUSIC_PLAYER_BLUETOOTH_DISCON_VIEW_H
+#define MUSIC_PLAYER_BLUETOOTH_DISCON_VIEW_H
+#include "components/ui_label_ext.h"
+#include "components/ui_image_view.h"
+#include "components/ui_view_group.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_button.h"
+
+namespace OHOS
+{
+ class MusicPlayerBluetoothDisConView : public UIView::OnClickListener
+ {
+ 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;
+ };
+ MusicPlayerBluetoothDisConView();
+ ~MusicPlayerBluetoothDisConView();
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ UIViewGroup *CreateMusicPlayerBluetoothDisConView(void);
+
+ private:
+ UILabelExt *MusicPlayerBluetoothDisConViewLabelInit(LabelConfig &labelconfig);
+ bool CreateMusicPlayerBluetoothDisConViewLabel(void);
+ bool CreateMusicPlayerBluetoothDisConViewImage(void);
+ bool CreateMusicPlayerBluetoothDisConViewButton(void);
+
+ void ClearAll();
+ UIViewGroup *group{nullptr};
+ UIScrollView *scrollView{nullptr};
+ UILabelExt *titleLabel{nullptr}; // 标题
+ UIImageView *bluetoothImage{nullptr};
+ UIImageView *image66{nullptr};
+ UIImageView *image99{nullptr};
+ UILabelExt *noteLabel{nullptr};
+ UIButton *OkButton{nullptr};
+ UILabelExt *OkLabel{nullptr};
+ UIView::OnDragListener *dragListener{nullptr};
+ };
+}
+#endif
\ No newline at end of file
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-08 16:15:50\r
+ * @LastEditTime: 2024-08-10 16:29:34\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerSourceView.h\r
*/\r
\r
UIViewGroup *CreateMusicPlayerSourceView(void);\r
void UpdateBluetoothHeadSetViewIsVisible(void);\r
void UpdateBluetoothHeadsetConnectLabel(void);\r
- UIViewGroup *group{nullptr};\r
\r
private:\r
UILabelButton *MusicPlayerSourceViewLabelButtonInit(ButtonConfig &buttonconfig);\r
bool CreateMusicPlayerSourceViewLabel(void);\r
bool CreateMusicPlayerSourceViewImage(void);\r
void ClearAll();\r
-\r
+ UIViewGroup *group{nullptr};\r
UIScrollView *scrollView{nullptr};\r
UILabelExt *titleLabel{nullptr}; // 标题\r
\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-09 18:07:21\r
+ * @LastEditTime: 2024-08-10 17:54:49\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h\r
*/\r
\r
#define MUSIC_PLAYER_SOURCE_VIEW "MusicPlayerSourceView" //音乐来源视图的滑动监听\r
#define MUSIC_PLAYER_LIST_VIEW "MusicPlayerListView" //音乐列表的滑动监听\r
#define MUSIC_PLAYER_DELETE_VIEW "MusicPlayerDeleteView" //音乐删除视图的滑动监听\r
+#define MUSIC_PLAYER_DELETE_VIEW "MusicPlayerDeleteView" //音乐删除视图的滑动监听\r
+#define MUISC_PLAYER_BLUETOOTH_DISCONN_VIEW "MusicPlayerBluetoothDisConView"\r
#define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView" \r
#define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"\r
#define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"\r
void OnClickSuccBack(void);\r
void OnClickConnFailBack(void);\r
void OnClickFailBack(void);\r
- void UpdatePlayerView(void);\r
+ void UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus);\r
void SetPlaybackProgress(int64_t value);\r
void SetPlayerState(bool value);\r
void PlayerbackReset(void);\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-09 18:19:34\r
+ * @LastEditTime: 2024-08-10 18:09:09\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h\r
*/\r
\r
#include "common/image_cache_manager.h"\r
#include "VolumeSettingView.h"\r
#include "player/include/MusicPlayerSourceView.h"\r
+#include "player/include/MusicPlayerBluetoothDisConView.h"\r
namespace OHOS\r
{\r
#define PLAY_PROGRESS_MIN 0\r
MUSIC_VOLUME_CONTROL_VIEW, // 音量调节视图\r
MUSIC_LIST_VIEW, // 音乐列表视图\r
MUSIC_DELETE_VIEW, // 音乐删除视图\r
+ MUSIC_BLUETOOTH_DISCONN_VIEW, // 音乐蓝牙未连接视图\r
MUISC_CONNECTING, // 连接动画视图\r
MUISC_BLUETOOTH_HEADSET_LIST_VIEW, // 蓝牙耳机列表视图\r
MUSIC_CONNECTED_BLUETOOTH_HEADSET_VIEW, // 已连接的蓝牙耳机设备视图\r
UICircleProgress *GetPlaybackProgress(void);\r
UICheckBox::UICheckBoxState GetPlayerButtonState(void);\r
\r
- void UpdatePlayerView(void);\r
+ void UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus);\r
\r
VolumeSettingView *GetVolumeSettingView();\r
PlayerListDelSongView *GetPlayerListDelSongView();\r
bool ChangeToVolumeControlView(int16_t thisView);\r
bool ChangeToMusicListView(int16_t thisView);\r
bool ChangeToMusicDeleteView(int16_t thisView);\r
+ bool ChangeToMusicBluetoothDisConnectView(int16_t thisView);\r
\r
private:\r
UIButton *PlayerViewButtonInit(ButtonConfig &buttonconfig);\r
void PhoneMusicConnectStatusLabelIsSetVisible(bool status);\r
void PhoneMusicConnectStatusLabelColor(bool state);\r
void OptionsButtonSetImageStyle(ImageInfo *image);\r
- void UpdateMusicPlayerModelButton(void);\r
+ void SetMusicPlayerButtonIsTouchable(bool musicSourceType, bool phoneMusicConnectStatus);\r
\r
private:\r
- VolumeSettingView *volumeSettingView{nullptr}; // 声音设置\r
- MusicPlayerSourceView *musicPlayerSourceView{nullptr}; // 音乐来源\r
- PlayerListDelSongView *playerListDelSongView{nullptr}; // 音乐删除视图\r
- UIViewGroup *musicListGroupView{nullptr}; // 音乐列表视图\r
+ VolumeSettingView *volumeSettingView{nullptr}; // 声音设置\r
+ MusicPlayerSourceView *musicPlayerSourceView{nullptr}; // 音乐来源\r
+ PlayerListDelSongView *playerListDelSongView{nullptr}; // 音乐删除视图\r
+ UIViewGroup *musicListGroupView{nullptr}; // 音乐列表视图\r
+ MusicPlayerBluetoothDisConView *musicPlayerBluetoothDisConView{nullptr}; // 蓝牙未连接视图\r
\r
private:\r
UIView::OnClickListener *clickListener{nullptr};\r
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-10 16:23:46
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-10 19:11:52
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBluetoothDisConView.cpp
+ */
+#include "player/include/MusicPlayerBluetoothDisConView.h"
+#include "wearable_log.h"
+#include "ui_resource_string.h"
+#include "player/include/PlayersPresenter.h"
+#include "player/include/PlayersView.h"
+#include "ui_resource_image.h"
+namespace OHOS
+{
+ MusicPlayerBluetoothDisConView::MusicPlayerBluetoothDisConView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerBluetoothDisConView::MusicPlayerBluetoothDisConView");
+ }
+
+ MusicPlayerBluetoothDisConView::~MusicPlayerBluetoothDisConView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerBluetoothDisConView::~MusicPlayerBluetoothDisConView");
+ ClearAll();
+ }
+
+ bool MusicPlayerBluetoothDisConView::OnClick(UIView &view, const ClickEvent &event)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerBluetoothDisConView::OnClick");
+ UILabelButton *button = dynamic_cast<UILabelButton *>(&view);
+ if (!button)
+ {
+ return false;
+ }
+ PlayersView *playersView = PlayersView::GetInstance();
+ if (!playersView)
+ {
+ return false;
+ }
+ if (button == OkButton)
+ {
+ playersView->ChangeView(PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW, PlayersView::MAIN_MUSICPLAYER_VIEW);
+ }
+ return true;
+ }
+
+ void MusicPlayerBluetoothDisConView::ClearAll()
+ {
+ if (group != nullptr)
+ {
+ group->RemoveAll();
+ if (scrollView != nullptr)
+ {
+ scrollView->RemoveAll();
+ if (titleLabel != nullptr)
+ {
+ delete titleLabel;
+ titleLabel = nullptr;
+ }
+ if (bluetoothImage != nullptr)
+ {
+ delete bluetoothImage;
+ bluetoothImage = nullptr;
+ }
+ if (image66 != nullptr)
+ {
+ delete image66;
+ image66 = nullptr;
+ }
+ if (image99 != nullptr)
+ {
+ delete image99;
+ image99 = nullptr;
+ }
+ if (noteLabel != nullptr)
+ {
+ delete noteLabel;
+ noteLabel = nullptr;
+ }
+ delete scrollView;
+ scrollView = nullptr;
+ }
+ if (OkButton != nullptr)
+ {
+ delete OkButton;
+ OkButton = nullptr;
+ }
+ if (OkLabel != nullptr)
+ {
+ delete OkLabel;
+ OkLabel = nullptr;
+ }
+ delete group;
+ group = nullptr;
+ }
+ }
+
+ UILabelExt *MusicPlayerBluetoothDisConView::MusicPlayerBluetoothDisConViewLabelInit(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;
+ }
+
+ bool MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConViewLabel(void)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConViewLabel");
+ LabelConfig labelConfig = {
+ .left = 83,
+ .top = 50,
+ .width = 300,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_BLUETOOTH_DISCONNECTED, /*蓝牙未连接*/
+ .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,
+ };
+ titleLabel = MusicPlayerBluetoothDisConViewLabelInit(labelConfig);
+ if (nullptr == titleLabel)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail!!");
+ return false;
+ }
+ scrollView->Add(titleLabel);
+ /* -------------------------------------------------------------------------- */
+ labelConfig = {
+ .left = 53,
+ .top = 230,
+ .width = 360,
+ .height = 105,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_MUSIC_PLAYER_SOURCE_NOTE, /*请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试*/
+ .lineBreakMode = UILabel::LINE_BREAK_WRAP,
+ };
+ noteLabel = MusicPlayerBluetoothDisConViewLabelInit(labelConfig);
+ if (nullptr == noteLabel)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "noteLabel new fail!!");
+ return false;
+ }
+ scrollView->Add(noteLabel);
+ /* -------------------------------------------------------------------------- */
+ int16_t y = noteLabel->GetY() + noteLabel->GetTextHeight() + 30 + 33;
+ labelConfig = {
+ .left = 133,
+ .top = y,
+ .width = 200,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_KONW, /*知道了*/
+ .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,
+ };
+ OkLabel = MusicPlayerBluetoothDisConViewLabelInit(labelConfig);
+ if (nullptr == OkLabel)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OkLabel new fail!!");
+ return false;
+ }
+ scrollView->Add(OkLabel);
+ return true;
+ }
+
+ bool MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConViewImage(void)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConViewImage");
+ if (bluetoothImage == nullptr)
+ {
+ bluetoothImage = new UIImageView();
+ if (bluetoothImage == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
+ return false;
+ }
+ bluetoothImage->SetPosition(209, 120, 48, 80);
+ if (!PlayersView::LoadPlayerImage(bluetoothImage, PLAYER_BLUETOOTH_COLOR))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage LoadPlayerImage fail");
+ return false;
+ }
+ }
+ scrollView->Add(bluetoothImage);
+ /* -------------------------------------------------------------------------- */
+ if (image66 == nullptr)
+ {
+ image66 = new UIImageView();
+ if (image66 == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
+ return false;
+ }
+ image66->SetPosition(33, 200, 74, 52);
+ if (!PlayersView::LoadPlayerImage(image66, PLAYER_UP_66))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage LoadPlayerImage fail");
+ return false;
+ }
+ }
+ scrollView->Add(image66);
+ if (image99 == nullptr)
+ {
+ image99 = new UIImageView();
+ if (image99 == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
+ return false;
+ }
+ image99->SetPosition(344, 296, 74, 52);
+ if (!PlayersView::LoadPlayerImage(image99, PLAYER_DOWM_66))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage LoadPlayerImage fail");
+ return false;
+ }
+ }
+ scrollView->Add(image99);
+
+ return true;
+ }
+
+ bool MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConViewButton(void)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConViewButton");
+ if (OkButton == nullptr)
+ {
+ OkButton = new UIButton();
+ if (OkButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OkButton new fail!!");
+ return false;
+ }
+ }
+ OkButton->SetPosition(0, noteLabel->GetY() + noteLabel->GetTextHeight() + 30, 466, 100);
+ OkButton->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);
+ OkButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED);
+ OkButton->SetOnClickListener(this);
+
+ scrollView->Add(OkButton);
+
+ return true;
+ }
+
+ UIViewGroup *MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConView(void)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerBluetoothDisConView::CreateMusicPlayerBluetoothDisConView");
+ 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(MUISC_PLAYER_BLUETOOTH_DISCONN_VIEW);
+ if (dragListener == nullptr)
+ {
+ dragListener = static_cast<UIView::OnDragListener *>(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(35);
+ scrollView->SetReboundSize(35);
+ scrollView->SetDirection(UIScrollView::VERTICAL);
+
+ if (!CreateMusicPlayerBluetoothDisConViewLabel() || !CreateMusicPlayerBluetoothDisConViewImage() || !CreateMusicPlayerBluetoothDisConViewButton())
+ {
+ return nullptr;
+ }
+
+ group->Add(scrollView);
+ return group;
+ }
+}
{\r
return false;\r
}\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (!playersView)\r
+ {\r
+ return false;\r
+ }\r
ImageInfo *image;\r
- if (button == phoneLableButton) // 若点击的是手机音乐按钮\r
+ bool phonebluetoothcon = SettingModel::GetInstance().GetPhoneConnectStatus(); // 获取手机连接状态\r
+ bool a2dp = uapi_a2dp_snk_get_device_connect_state(); // 获取a2dp连接状态\r
+ if (button == phoneLableButton) // 若点击的是手机音乐按钮\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick phoneLableButton");\r
PlayersModel::GetInstance()->SetMusicSource(true);\r
// 1.a2dp未连接,向手机发起a2dp连接\r
// 如果蓝牙没连接直接是跳转到蓝牙连接失败视图,连接了就有一个主动去连手机的a2dp过程,5秒超市\r
\r
- playersPresenter->UpdatePlayerView();\r
+ playersPresenter->UpdatePlayerView(PlayersModel::GetInstance()->GetMusicSource(), phonebluetoothcon && a2dp);\r
+\r
+ if (!phonebluetoothcon)\r
+ {\r
+ playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW);\r
+ }\r
+ else if (phonebluetoothcon && !a2dp)\r
+ {\r
+ }\r
+ else if (phonebluetoothcon && a2dp)\r
+ {\r
+ }\r
}\r
else if (button == watchLableButton) // 若点击的是手表音乐按钮\r
{\r
PlayersModel::GetInstance()->SetMusicSource(false);\r
UpdateBluetoothHeadSetViewIsVisible();\r
\r
- playersPresenter->UpdatePlayerView();\r
+ playersPresenter->UpdatePlayerView(PlayersModel::GetInstance()->GetMusicSource(), phonebluetoothcon && a2dp);\r
}\r
else if (button == bluetoothHeadsetLableButton)\r
{\r
return false;\r
}\r
\r
-void PlayersPresenter::UpdatePlayerView(void)\r
+void PlayersPresenter::UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus)\r
{\r
PlayersView *playersView = PlayersView::GetInstance();\r
if (playersView == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
return;\r
}\r
- playersView->UpdatePlayerView();\r
+ playersView->UpdatePlayerView(musicSourceType,phoneMusicConnectStatus);\r
}\r
\r
void PlayersPresenter::SetPlaybackProgress(int64_t value)\r
delete playerListDelSongView;\r
playerListDelSongView = nullptr;\r
}\r
+ if (musicPlayerBluetoothDisConView != nullptr)\r
+ {\r
+ delete musicPlayerBluetoothDisConView;\r
+ musicPlayerBluetoothDisConView = nullptr;\r
+ }\r
\r
for (int i = MAIN_MUSICPLAYER_VIEW; i < MUSICPLAYERJUMPVIEWID_MAX; i++)\r
{\r
LoadPlayerButtonImage(playerModelButton, playMode);\r
}\r
\r
- /*更新音乐播放模式按钮*/\r
- void PlayersView::UpdateMusicPlayerModelButton(void)\r
+ /// @brief 设置音乐播放按钮是否可点击\r
+ /// @param musicSourceType 音乐来源类型 false:手表音乐 true 手机音乐\r
+ /// @param phoneMusicConnectStatus 手机音乐连接状态\r
+ void PlayersView::SetMusicPlayerButtonIsTouchable(bool musicSourceType, bool phoneMusicConnectStatus)\r
{\r
- if (PlayersModel::GetInstance()->GetMusicSource())\r
- {\r
- playerModelButton->SetTouchable(false);\r
- }\r
- else\r
- {\r
- playerModelButton->SetTouchable(true);\r
- }\r
+ // 1.如果为手机音乐且手机音乐已连接那么上一首,下一首,播放或暂停,声音等按钮设置为可点击.\r
+ // 2.如果不为手机音乐按钮就可点击\r
+ /* -------------------------------------------------------------------------- */\r
+ bool touchableState = (musicSourceType && phoneMusicConnectStatus) || !musicSourceType;\r
+ play_or_pause_Button->SetTouchable(touchableState);\r
+ preMusicButton->SetTouchable(touchableState);\r
+ nextMusicButton->SetTouchable(touchableState);\r
+ soundButton->SetTouchable(touchableState);\r
+ /* ------------------------- 如果音乐来源为手机音乐,播放顺序按钮就不可用 ------------------------- */\r
+ playerModelButton->SetTouchable(!musicSourceType);\r
+ /* -------------------------------------------------------------------------- */\r
PreLoadPlayerModeImageRes();\r
}\r
\r
- void PlayersView::UpdatePlayerView(void)\r
+ void PlayersView::UpdatePlayerView(bool musicSourceType, bool phoneMusicConnectStatus)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdatePlayerView");\r
// 1.a2dp未连接,向手机发起a2dp连接\r
\r
// 2.\r
ImageInfo *image;\r
- if (PlayersModel::GetInstance()->GetMusicSource())\r
+ if (musicSourceType)\r
{\r
image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PHONE_COLOR, PLAYER_IAMGES);\r
if (!image)\r
OptionsButtonSetImageStyle(image);\r
PhoneMusicConnectStatusLabelIsSetVisible(true);\r
MusicListButtonIsSetVisible(false);\r
- UpdateMusicPlayerModelButton();\r
\r
- bool phonecon = SettingModel::GetInstance().GetPhoneConnectStatus(); // 获取手机连接状态\r
- bool a2dp = uapi_a2dp_snk_get_device_connect_state(); // 获取a2dp连接状态\r
- if (phonecon && a2dp)\r
+ if (phoneMusicConnectStatus)\r
{\r
PhoneMusicConnectStatusLabelSetText(STR_CONNECTED); /*已连接*/\r
MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐\r
MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐\r
PhoneMusicConnectStatusLabelColor(false);\r
}\r
+ SetMusicPlayerButtonIsTouchable(musicSourceType, phoneMusicConnectStatus);\r
}\r
else\r
{\r
PhoneMusicConnectStatusLabelIsSetVisible(false);\r
MusicListButtonIsSetVisible(true);\r
MusicSourceLabelSetText(STR_WATCH_MUSIC); /*手表音乐*/\r
- UpdateMusicPlayerModelButton();\r
+ SetMusicPlayerButtonIsTouchable(musicSourceType, phoneMusicConnectStatus);\r
}\r
}\r
\r
return false;\r
}\r
/* -------------------------------------------------------------------------- */\r
- UpdatePlayerView();\r
+ bool phonebluetoothcon = SettingModel::GetInstance().GetPhoneConnectStatus(); // 获取手机连接状态\r
+ bool a2dp = uapi_a2dp_snk_get_device_connect_state(); // 获取a2dp连接状态\r
+ UpdatePlayerView(PlayersModel::GetInstance()->GetMusicSource(), phonebluetoothcon && a2dp);\r
/* -------------------------------------------------------------------------- */\r
\r
PlayersListGroup::GetInstance()->SetUpListCase();\r
{PlayersView::MUSIC_VOLUME_CONTROL_VIEW, &PlayersView::ChangeToVolumeControlView},\r
{PlayersView::MUSIC_LIST_VIEW, &PlayersView::ChangeToMusicListView},\r
{PlayersView::MUSIC_DELETE_VIEW, &PlayersView::ChangeToMusicDeleteView},\r
+ {PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW, &PlayersView::ChangeToMusicBluetoothDisConnectView},\r
};\r
\r
/*根据传入的 interface 值,在 ViewMapper 数组中查找匹配的 viewId*/\r
}\r
return true;\r
}\r
+\r
+ /*切换到蓝牙未连接视图*/\r
+ bool PlayersView::ChangeToMusicBluetoothDisConnectView(int16_t thisView)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicBluetoothDisConnectView");\r
+ if (group[thisView] == nullptr)\r
+ {\r
+ musicPlayerBluetoothDisConView = new MusicPlayerBluetoothDisConView();\r
+ if (musicPlayerBluetoothDisConView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new playerListDelSongView fail");\r
+ return false;\r
+ }\r
+ UIViewGroup *groupview = musicPlayerBluetoothDisConView->CreateMusicPlayerBluetoothDisConView();\r
+ if (groupview == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
+ return false;\r
+ }\r
+ group[thisView] = groupview;\r
+ Add(group[thisView]);\r
+ }\r
+ return true;\r
+ }\r
}\r
STR_IFLYTEK_SPARK = 500,\r
STR_DISTURBNOTE_OFF = 501,\r
STR_4G_NOTE = 502,\r
- STR_MAX_ID = 503,\r
+ STR_MUSIC_PLAYER_SOURCE_NOTE = 503,\r
+ STR_MAX_ID = 504,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {
STR_TONGYI_QIANWEN$Tongyi Qianwen\r
STR_IFLYTEK_SPARK$Xunfei Spark\r
STR_DISTURBNOTE_OFF$Do not disturb mode is enabled or disabled\r
-STR_4G_NOTE$Note: After opening, the power consumption of the watch will be increased and the standby time will be shortened
\ No newline at end of file
+STR_4G_NOTE$Note: After opening, the power consumption of the watch will be increased and the standby time will be shortened\r
+STR_MUSIC_PLAYER_SOURCE_NOTE$Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again
\ No newline at end of file
STR_TONGYI_QIANWEN$通义千问\r
STR_IFLYTEK_SPARK$讯飞星火\r
STR_DISTURBNOTE_OFF$勿扰模式已开启是否关闭\r
-STR_4G_NOTE$注:开启后,手表功耗会提高,待机时间会缩短
\ No newline at end of file
+STR_4G_NOTE$注:开启后,手表功耗会提高,待机时间会缩短\r
+STR_MUSIC_PLAYER_SOURCE_NOTE$请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试
\ No newline at end of file
<lanstr id="STR_IFLYTEK_SPARK" value="Xunfei Spark"/>
<lanstr id="STR_DISTURBNOTE_OFF" value="Do not disturb mode is enabled or disabled"/>
<lanstr id="STR_4G_NOTE" value="Note: After opening, the power consumption of the watch will be increased and the standby time will be shortened"/>
+ <lanstr id="STR_MUSIC_PLAYER_SOURCE_NOTE" value="Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again"/>
</language>
<lanstr id="STR_IFLYTEK_SPARK" value="讯飞星火"/>
<lanstr id="STR_DISTURBNOTE_OFF" value="勿扰模式已开启是否关闭"/>
<lanstr id="STR_4G_NOTE" value="注:开启后,手表功耗会提高,待机时间会缩短"/>
+ <lanstr id="STR_MUSIC_PLAYER_SOURCE_NOTE" value="请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试"/>
</language>
STR_IFLYTEK_SPARK = 500,\r
STR_DISTURBNOTE_OFF = 501,\r
STR_4G_NOTE = 502,\r
- STR_MAX_ID = 503,\r
+ STR_MUSIC_PLAYER_SOURCE_NOTE = 503,\r
+ STR_MAX_ID = 504,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {