音乐视图添加蓝牙未连接视图
authorluozheng <1732036298@qq.com>
Sat, 10 Aug 2024 11:12:06 +0000 (19:12 +0800)
committerluozheng <1732036298@qq.com>
Sat, 10 Aug 2024 11:12:06 +0000 (19:12 +0800)
20 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/ui_resource_string.h
code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerBluetoothDisConView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerSourceView.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBluetoothDisConView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/ui_resource_string.h
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang
tools/language_tool/Language_xml/input_list_en.txt
tools/language_tool/Language_xml/input_list_zh.txt
tools/language_tool/Language_xml/language_en.xml
tools/language_tool/Language_xml/language_zh.xml
tools/language_tool/font/en.lang
tools/language_tool/font/ui_resource_string.h
tools/language_tool/font/zh.lang

index 6dceb01..fd9e954 100644 (file)
@@ -243,6 +243,7 @@ set(SOURCES
     ${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
index 333c7c9..a501aad 100644 (file)
@@ -513,7 +513,8 @@ enum UIResourceTextId : uint16_t {
     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
diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerBluetoothDisConView.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerBluetoothDisConView.h
new file mode 100644 (file)
index 0000000..b82f18b
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * @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
index 3fd4fca..1f35231 100644 (file)
@@ -2,7 +2,7 @@
  * @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
@@ -53,7 +53,6 @@ namespace OHOS
         UIViewGroup *CreateMusicPlayerSourceView(void);\r
         void UpdateBluetoothHeadSetViewIsVisible(void);\r
         void UpdateBluetoothHeadsetConnectLabel(void);\r
-        UIViewGroup *group{nullptr};\r
 \r
     private:\r
         UILabelButton *MusicPlayerSourceViewLabelButtonInit(ButtonConfig &buttonconfig);\r
@@ -62,7 +61,7 @@ namespace OHOS
         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
index 9bffa44..9e1a75c 100644 (file)
@@ -2,7 +2,7 @@
  * @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
@@ -55,6 +55,8 @@ class VolumeSettingView;
 #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
@@ -234,7 +236,7 @@ public:
     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
index 1062b15..d2c4c40 100644 (file)
@@ -2,7 +2,7 @@
  * @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
@@ -32,6 +32,7 @@
 #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
@@ -58,6 +59,7 @@ namespace OHOS
             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
@@ -94,7 +96,7 @@ namespace OHOS
         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
@@ -106,6 +108,7 @@ namespace OHOS
         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
@@ -134,13 +137,14 @@ namespace OHOS
         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
diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBluetoothDisConView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBluetoothDisConView.cpp
new file mode 100644 (file)
index 0000000..bf0b7bb
--- /dev/null
@@ -0,0 +1,305 @@
+/*
+ * @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;
+    }
+}
index 434c4aa..5151ab5 100644 (file)
@@ -47,8 +47,15 @@ namespace OHOS
         {\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
@@ -57,7 +64,18 @@ namespace OHOS
             // 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
@@ -65,7 +83,7 @@ namespace OHOS
             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
index 3452ab1..1aabce4 100644 (file)
@@ -1351,14 +1351,14 @@ bool PlayersPresenter::OnClick(UIView &view, const ClickEvent &event)
     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
index 8a79d71..d701a67 100644 (file)
@@ -424,6 +424,11 @@ namespace OHOS
             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
@@ -745,28 +750,33 @@ namespace OHOS
         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
@@ -778,11 +788,8 @@ namespace OHOS
             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
@@ -794,6 +801,7 @@ namespace OHOS
                 MusicSourceLabelSetText(STR_MOBILE_MUSIC);             // 手机音乐\r
                 PhoneMusicConnectStatusLabelColor(false);\r
             }\r
+            SetMusicPlayerButtonIsTouchable(musicSourceType, phoneMusicConnectStatus);\r
         }\r
         else\r
         {\r
@@ -807,7 +815,7 @@ namespace OHOS
             PhoneMusicConnectStatusLabelIsSetVisible(false);\r
             MusicListButtonIsSetVisible(true);\r
             MusicSourceLabelSetText(STR_WATCH_MUSIC); /*手表音乐*/\r
-            UpdateMusicPlayerModelButton();\r
+            SetMusicPlayerButtonIsTouchable(musicSourceType, phoneMusicConnectStatus);\r
         }\r
     }\r
 \r
@@ -827,7 +835,9 @@ namespace OHOS
             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
@@ -1072,6 +1082,7 @@ namespace OHOS
         {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
@@ -1232,4 +1243,28 @@ namespace OHOS
         }\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
index c67adb7..f2c9f8a 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang differ
index 9443534..dc7dd21 100644 (file)
@@ -513,7 +513,8 @@ enum UIResourceTextId : uint16_t {
     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 {
index 9c38b26..558c19b 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang differ
index 6830f46..b5f0d6e 100644 (file)
@@ -500,4 +500,5 @@ STR_AVG_PACE$Average pace
 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
index 2ca45f0..00f2f78 100644 (file)
@@ -500,4 +500,5 @@ STR_AVG_PACE$平均配速
 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
index 7e54f22..8011621 100644 (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>
index 8bce54a..8171c7a 100644 (file)
        <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>
index c67adb7..f2c9f8a 100644 (file)
Binary files a/tools/language_tool/font/en.lang and b/tools/language_tool/font/en.lang differ
index 9443534..dc7dd21 100644 (file)
@@ -513,7 +513,8 @@ enum UIResourceTextId : uint16_t {
     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 {
index 9c38b26..558c19b 100644 (file)
Binary files a/tools/language_tool/font/zh.lang and b/tools/language_tool/font/zh.lang differ