音乐播放器优化
authorluozheng <1732036298@qq.com>
Thu, 8 Aug 2024 11:09:59 +0000 (19:09 +0800)
committerluozheng <1732036298@qq.com>
Thu, 8 Aug 2024 11:09:59 +0000 (19:09 +0800)
18 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/include/BluetoothView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerSourceView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.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/BluetoothView.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.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/MainCard/player.bin

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