音乐视图修改附带资源上传
author罗正yun <1732036298@qq.com>
Thu, 18 Jan 2024 12:27:37 +0000 (20:27 +0800)
committer罗正yun <1732036298@qq.com>
Thu, 18 Jan 2024 12:27:37 +0000 (20:27 +0800)
28 files changed:
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/ui_resource_image.h
code/sdk/application/wearable/nativeapp/nativeui/main/include/VolumeSettingView.h
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/VolumeSettingView.cpp
code/sdk/application/wearable/nativeapp/nativeui/player/include/BluetoothView.h
code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayerListDelSongView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayerListitemView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersCaseListAdapter.h
code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersModel.h
code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersView.h
code/sdk/application/wearable/nativeapp/nativeui/player/src/BluetoothView.cpp
code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayerListDelSongView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayerListitemView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayersCaseListAdapter.cpp
code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayersModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayersView.cpp
code/sdk/application/wearable/nativeapp/nativeui/screensetting/src/ScreenModels.cpp
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_OFF.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_ON.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOff.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOn.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/VolumeControlVector.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/player/player.bin

index 9f84f84..9207ae6 100755 (executable)
@@ -149,6 +149,8 @@ set(SOURCES
     ${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 ed306b1..c9e1f35 100755 (executable)
@@ -179,7 +179,6 @@ namespace OHOS
     static constexpr const char *TEMP_DELETE = APP_RES_PATH "/TEMP_DELETE.bin";
 
     static constexpr const char *COMPASS_CALIBRATE_IMAGE = APP_RES_PATH "/COMPASS_CALIBRATE_IMAGE.bin";
-    static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin";
 
     static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE01 = APP_RES_PATH "/VOICE_ASSISTANT_01.bin";
     static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE02 = APP_RES_PATH "/VOICE_ASSISTANT_02.bin";
@@ -325,6 +324,11 @@ namespace OHOS
     static constexpr const char *PNG_WALK_STEPS_IMAGE = APP_RES_PATH "/STEPS_IMAGE.bin";
 
     static constexpr const char *PNG_APPLIST_UI_SAMPLE_IMAGE = APP_RES_PATH "/APPLIST_UI_SAMPLE.bin"; // Applist图标
+    static constexpr const char *PNG_CHECKBOX_OFF_IMAGE = APP_RES_PATH "/CHECKBOX_OFF.bin";                     // checkbox未选中图片
+    static constexpr const char *PNG_CHECKBOX_ON_IMAGE = APP_RES_PATH "/CHECKBOX_ON.bin";                       // checkbox选中图片
+    static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin";                     //  箭头图片
+    static constexpr const char *PNG_SETTING_BACKGROUND_IMAGE = APP_RES_PATH "/SETTING_BACKGROUND.bin";         //  按钮的背景图片
+    static constexpr const char *PNG_VOLUME_CONTROL_VECTOR = APP_RES_PATH "/VolumeControlVector.bin";           //  调节音量图片
 }
 
 #endif // UI_CONFIG_H
index c59a407..53562a7 100755 (executable)
@@ -8,20 +8,32 @@ namespace OHOS {
     static const int HEART_HEARTRATECOOR = 0x100001;
     static const int HEART_HEARTRATE_BOTTOM = 0x100002;
     static const int HEART_HEARTRATE_TOP = 0x100003;
-    static const int PLAYER_PLAYERSMODEL_RANDOM = 0x200001;
-    static const int PLAYER_INCREASE_BUTTON = 0x200002;
-    static const int PLAYER_PLAYERSMODEL_SEQUENCE = 0x200003;
-    static const int PLAYER_DECREASE_BUTTON = 0x200004;
-    static const int PLAYER_PLAYERSMODEL_LOOP = 0x200005;
-    static const int PLAYER_PLAYER = 0x200006;
-    static const int PLAYER_BACK_GROUND = 0x200007;
-    static const int PLAYER_SOUND_IMAGE = 0x200008;
-    static const int PLAYER_MUTE_BUTTON = 0x200009;
-    static const int PLAYER_OPTIONS_IMAGE = 0x20000a;
-    static const int PLAYER_NEXT_BUTTON = 0x20000b;
-    static const int PLAYER_PLAYERSMODEL_REPEATS = 0x20000c;
-    static const int PLAYER_PLAYERHIGHLIGHT = 0x20000d;
-    static const int PLAYER_PRE_BUTTOW = 0x20000e;
+    /* -------------------------------------------------------------------------- */
+    static const int PLAYER_BACKGROUND = 0x200001;            // 音乐背景
+    static const int PLAYER_DECREASE_BUTTON = 0x200002;       // 点击后声音减少
+    static const int PLAYER_EARPHONE = 0x200003;              // 大的蓝牙耳机的icon
+    static const int PLAYER_EARPHONE_COLOR = 0x200004;        // 蓝牙耳机模式绿色图片
+    static const int PLAYER_EARPHONE_WHITE = 0x200005;        // 蓝牙耳机模式白色图片
+    static const int PLAYER_ELLIPSE = 0x200006;               // 椭圆
+    static const int PLAYER_INCREASE_BUTTON = 0x200007;       // 点击后声音加
+    static const int PLAYER_LOCAL_MUSIC_COLOR = 0x200008;     // 本地音乐模式绿色图片,默认本地模式
+    static const int PLAYER_LOCAL_MUSIC_WHITE = 0x200009;     // 本地音乐模式白色图片
+    static const int PLAYER_MUSIC_DELETE = 0x20000a;          // 删除音乐
+    static const int PLAYER_MUSIC_LIST = 0x20000b;            // 音乐列表
+    static const int PLAYER_MUSIC_NEXT = 0x20000c;            // 下一首音乐
+    static const int PLAYER_MUSIC_PROVE = 0x20000d;           // 上一首音乐
+    static const int PLAYER_MUSIC_VOICE = 0x20000e;           // 音量
+    static const int PLAYER_MUTE_BUTTON = 0x20000f;           // 静音
+    static const int PLAYER_PAUSE = 0x200010;                 // 播放暂停
+    static const int PLAYER_PHONE_COLOR = 0x200011;           // 手机音乐模式绿色图片
+    static const int PLAYER_PHONE_WHITE = 0x200012;           // 手机音乐模式白色图片
+    static const int PLAYER_PLAY = 0x200013;                  // 播放音乐
+    static const int PLAYER_PLAYERSMODEL_LOOP = 0x200014;     // 播放模式:循环播放
+    static const int PLAYER_PLAYERSMODEL_RANDOM = 0x200015;   // 播放模式:随机播放
+    static const int PLAYER_PLAYERSMODEL_REPEATS = 0x200016;  // 播放模式:单曲循环
+    static const int PLAYER_PLAYERSMODEL_SEQUENCE = 0x200017; // 播放模式循序播放
+    static const int PLAYER_PLAYING = 0x200018;               // 播放音乐中
+    /* -------------------------------------------------------------------------- */
     static const int CLOCK_CLOCK0 = 0x300001;
     static const int CLOCK_CLOCK1 = 0x300002;
     static const int CLOCK_CLOCK10 = 0x300003;
index 34022fe..5248864 100755 (executable)
@@ -34,6 +34,7 @@ public:
 private:
     VolumeSliderEventListener *listener{nullptr};
     UISlider *progress{nullptr};
+    UIImageView* VolumeVetor = nullptr;
     UIButton *increaseButton{nullptr};
     UIButton *decreaseButton{nullptr};
     int ShowVolume();
index 5ed0a4a..6497b1f 100755 (executable)
@@ -123,11 +123,10 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN_SAMPLE },
             HealthModel::GetInstance()->UpdateBriScrStatus(0);
         }
     }
-
-    if (g_jumpView.count(curViewId) != 0) {
-        NativeAbility::GetInstance().ChangeSlice(g_jumpView[curViewId]);
-    }
 #endif
+        if (g_jumpView.count(curViewId) != 0) {
+            NativeAbility::GetInstance().ChangeSlice(g_jumpView[curViewId]);
+        }
         return true;
     }
     bool MainPresenterSample::OnLongPress(UIView &view, const LongPressEvent &event)
index 891de3e..7cd8aea 100755 (executable)
@@ -30,8 +30,8 @@ namespace OHOS
         {HEART_RATE, &MainViewSample::InitHeartRatePage},
         {BloodOxygen, &MainViewSample::InitBloodOxygenPage},
         {TRAINING, &MainViewSample::InitTrainingPage},
-        {PLAYER,&MainViewSample::InitMusicPlayerPage}
         {COMPASS, &MainViewSample::InitCompassPage},
+        {PLAYER,&MainViewSample::InitMusicPlayerPage},
 #if 0
         {APPLIST,&MainViewSample::InitApplistPage}
 #endif
index 4276373..9c13aa4 100755 (executable)
@@ -16,10 +16,10 @@ static constexpr uint16_t BUTTON_Y = 0;
 static constexpr uint16_t BUTTON_Y2 = 363;
 static constexpr uint16_t BUTTON_WIDTH = 90;
 static constexpr uint16_t BUTTON_HEIGHT = 90;
-static constexpr uint16_t SLIDER_X = 207;
-static constexpr uint16_t SLIDER_Y = 90;
-static constexpr uint16_t SLIDER_WIDTH = 40;
-static constexpr uint16_t SLIDER_HEIGHT = 274;
+static constexpr uint16_t SLIDER_X = 167;
+static constexpr uint16_t SLIDER_Y = 77;
+static constexpr uint16_t SLIDER_WIDTH = 130;
+static constexpr uint16_t SLIDER_HEIGHT = 310;
 
 constexpr uint16_t VOLUME_OK = 0;
 constexpr int16_t VOLUME_ERROR = (-1);
@@ -77,6 +77,23 @@ bool VolumeSettingView::SetUpVolume(void)
     progress->SetViewId(VOLUME_PROGRESS);
     progress->SetRange(VOLUME_MAX, VOLUME_MIN);
 
+    progress->SetStyle(STYLE_BORDER_RADIUS, 100);
+    progress->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);
+    progress->SetForegroundStyle(STYLE_LINE_CAP,CapType::CAP_ROUND);
+    progress->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+    progress->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);
+
+    if(VolumeVetor == nullptr)
+    {
+        VolumeVetor = new UIImageView();
+        if (progress == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VolumeVetor new fail");
+            return false;
+        }
+    }
+    VolumeVetor->SetPosition(213, 213,40,40);
+    VolumeVetor->SetSrc("/user/res/VolumeControlVector.bin");
+
     if (listener == nullptr) {
         listener = new VolumeSliderEventListener();
         if (listener == nullptr) {
@@ -94,6 +111,7 @@ bool VolumeSettingView::SetUpVolume(void)
     SetDraggable(true);
     SetTouchable(true);
     Add(progress);
+    Add(VolumeVetor);
     ShowVolume();
 
     return true;
@@ -130,6 +148,7 @@ int VolumeSettingView::ShowVolume(void)
     image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_INCREASE_BUTTON, PLAYER_IAMGES);
     increaseButton->SetImageSrc(image, image);
     increaseButton->SetOnClickListener(clickListener);
+    increaseButton->SetVisible(false);
     Add(increaseButton);
 
     if (decreaseButton == nullptr) {
@@ -144,6 +163,7 @@ int VolumeSettingView::ShowVolume(void)
     image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_DECREASE_BUTTON, PLAYER_IAMGES);
     decreaseButton->SetImageSrc(image, image);
     decreaseButton->SetOnClickListener(clickListener);
+    decreaseButton->SetVisible(false);
     Add(decreaseButton);
 
     return VOLUME_OK;
index 52e2472..7e12904 100755 (executable)
@@ -1,51 +1,53 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth view 设置页面
- * Create: 2021-09-5
- */
-
-#ifndef BLUETOOTH_VIEW_H
-#define BLUETOOTH_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "components/ui_radio_button.h"
-#include "components/ui_label_button.h"
-#include "components/ui_view_group.h"
-#include "BaseView.h"
-
-namespace OHOS {
-class PlayerOnDragListener;
-class BluetoothView {
-public:
-    BluetoothView();
-    virtual ~BluetoothView();
-    UIViewGroup *LoadBluetoothView(void);
-    static BluetoothView *GetInstance(void);
-    UIViewGroup *group{nullptr};
-    UIRadioButton *GetPhoneButton(void);
-    UIRadioButton *GetWatchButton(void);
-    UIButton *GetSettingButton(void);
-    UILabelButton *GetDeleteButton(void);
-private:
-    UILabel *watchLabel{nullptr};
-    UILabel *phoneLabel{nullptr};
-    UILabel *bluetoothLabel{nullptr};
-    UIImageView *watchImage{nullptr};
-    UIImageView *phoneImage{nullptr};
-    UIImageView *bluetoothImage{nullptr};
-    UIRadioButton *watchButton{nullptr};
-    UIRadioButton *phoneButton{nullptr};
-    UIButton *settingButton{nullptr};
-    UILabelButton *deleteButton{nullptr};
-    int LoadRadioButton();
-    int LoadButtonView();
-    int LoadLabelButton();
-    int LoadLabel();
-    int LoadImage();
-
-    void SetUpButton(UILabelButton *btn, const Point& point, int16_t width, int16_t height,
-                     UIView::OnClickListener *listener);
-};
-} // namespace OHOS
+/*\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_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/nativeapp/nativeui/player/include/PlayerListDelSongView.h b/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayerListDelSongView.h
new file mode 100644 (file)
index 0000000..6c5ff7a
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef PLAYER_LIST_DEL_SONG_VIEW_H
+#define PLAYER_LIST_DEL_SONG_VIEW_H
+
+#include "BaseView.h"
+#include "string"
+#include "View.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_label.h"
+#include "components/ui_button.h"
+
+namespace OHOS
+{
+    class PlayerListDelSongView
+    {
+
+    public:
+        PlayerListDelSongView();
+        virtual ~PlayerListDelSongView();
+        static PlayerListDelSongView *GetInstance(void);
+        UIScrollView * InitDelSongView();
+        void DeInitView(void);
+        void SetTheSongLabelStyle(const char * songName);
+    private:
+        UIScrollView *scrollView1_ = nullptr;
+        UILabel *label1_ = nullptr;
+        UILabel *songNameLabel = nullptr;
+        UIButton *button3_ = nullptr;
+        UILabel *label2_ = nullptr;
+        UIButton *button1_ = nullptr;
+        UIButton *button2_ = nullptr;
+        bool viewInitStatus{false};
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayerListitemView.h b/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayerListitemView.h
new file mode 100644 (file)
index 0000000..171d36e
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef PLAYER_LIST_ITEM_VIEW_H
+#define PLAYER_LIST_ITEM_VIEW_H
+
+#include "components/ui_label.h"
+#include "components/ui_view_group.h"
+#include "components/ui_button.h"
+#include "player/include/PlayersCaseListAdapter.h"
+#include "PlayersPresenter.h"
+namespace OHOS
+{
+    class PlayerListItemView : public UIViewGroup
+    {
+    public:
+        explicit PlayerListItemView();
+        virtual ~PlayerListItemView();
+        virtual void SetItemInfo(const PlayerListItem itemInfo);
+        virtual void SetUpChild();
+        int GetPlayerListIndex();
+        UILabel *GetLabel()
+        {
+            return &sLabel;
+        }
+        UIButton *GetButton()
+        {
+            return &sButton;
+        }
+    private:
+        PlayerListItemView(const PlayerListItemView &);
+        UILabel sLabel;
+        UIButton sButton;
+        PlayerListItem sItemInfo{0,nullptr};
+    };
+
+}
+#endif
\ No newline at end of file
index bf1c487..678b335 100755 (executable)
@@ -1,30 +1,61 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef PLAYERS_CASE_LIST_ADAPTER_H
-#define PLAYERS_CASE_LIST_ADAPTER_H
-
-#include "components/abstract_adapter.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-class PlayersCaseListAdapter : public AbstractAdapter {
-public:
-    PlayersCaseListAdapter() {}
-    ~PlayersCaseListAdapter();
-    UIView *GetView(UIView *inView, int16_t index) override;
-    uint16_t GetCount() override;
-
-private:
-    void LabelButtonSet();
-    UILabelButton *item{nullptr};
-    UIView::OnClickListener *listener{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#ifndef PLAYERS_CASE_LIST_ADAPTER_H\r
+#define PLAYERS_CASE_LIST_ADAPTER_H\r
+\r
+#include <list>\r
+#include <string>\r
+#include "components/abstract_adapter.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+class PlayersCaseListAdapter;\r
+class BtnOnClickListListener : public UIView::OnClickListener {\r
+public:\r
+    BtnOnClickListListener(){}\r
+    ~BtnOnClickListListener(){}\r
+    bool OnClick(UIView& view, const ClickEvent& event) override;\r
+    void SetButtonAndLabel(UILabel *label,UIButton *button,int index,UIView::OnClickListener *listener)\r
+    {\r
+        m_label[index] = label;\r
+        m_label[index]->SetTouchable(true);\r
+        m_label[index]->SetOnClickListener(listener);\r
+        m_button[index] = button;\r
+        m_button[index]->SetOnClickListener(listener);\r
+    }\r
+    void SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index);\r
+    void SongNotClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index);\r
+private:\r
+    void BtnOnListData(UIView& view);\r
+    UILabel * m_label[256]{nullptr};\r
+    UIButton *m_button[256]{nullptr};\r
+    int playOrDeleteStatus[256]{0};\r
+    char *sliceId_{nullptr};//歌名\r
+    int16_t index_{0}; //歌曲索引\r
+};\r
+typedef struct\r
+{\r
+    int index;\r
+    const char *label;    // 标签\r
+} PlayerListItem;\r
+class PlayersCaseListAdapter : public AbstractAdapter {\r
+public:\r
+    PlayersCaseListAdapter();\r
+    ~PlayersCaseListAdapter();\r
+    static PlayersCaseListAdapter *GetInstance(void);\r
+    UIView *GetView(UIView *inView, int16_t index) override;\r
+    uint16_t GetCount() override;\r
+    BtnOnClickListListener *p_BtnOnClickListListener{nullptr};\r
+private:\r
+    UIView::OnClickListener *listener{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // PLAYERS_CASE_LIST_ADAPTER_H
\ No newline at end of file
index 724c739..2df70c1 100755 (executable)
@@ -17,7 +17,7 @@
 #include "audio_base_type.h"
 #include "PlayersPresenter.h"
 #include "bts_avrcp_controller.h"
-
+#include "PlayersCaseListAdapter.h"
 namespace OHOS {
 using OHOS::Media::Player;
 using OHOS::Media::Source;
@@ -94,6 +94,7 @@ public:
     void ClearActivateAudioInterrupt(void);
     void GetDuration(int64_t &duration);
 private:
+    PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr};
     int64_t duration_{0};
     bool audioInitStatus{false};
     char *sliceId{nullptr};
index f0df423..9a6b473 100755 (executable)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef PLAYERS_PRESENTER_H
-#define PLAYERS_PRESENTER_H
-#include "gfx_utils/list.h"
-#include "ohos_types.h"
-#include "components/ui_view.h"
-#include "player.h"
-#include "audio_manager.h"
-#include "audio_base_type.h"
-#include "BluetoothView.h"
-#include "VolumeSettingView.h"
-#include "VolumeSettingPresenter.h"
-#include "BluetoothModel.h"
-#include "BluetoothEarPhoneView.h"
-#include "BluetoothEarListView.h"
-#include "BluetoothOptionsView.h"
-#include "BluetoothReconnectView.h"
-#include "TipsSuccMessageView.h"
-#include "TipsConnFailMessageView.h"
-#include "TipsFailMessageView.h"
-#include "BluetoothDeviceListView.h"
-#include "BluetoothItemView.h"
-
-namespace OHOS {
-using OHOS::Media::Player;
-using namespace OHOS::Media;
-using namespace::Audio;
-using Audio::AudioManager;
-class VolumeSettingView;
-#define DEC_NUM_256 256
-// 点击按钮视图ID
-#define BLUETOOTH_RESCAN_BUTTON "rescanButton"
-#define BLUETOOTH_NEWEQUIPMENT_BUTTON "newEquipmentButton"
-#define BLUETOOTH_CANCELCONNEDREQUEST_BUTTON "cancelConnedRequestButton"
-#define BLUETOOTH_UNPAIR_BUTTON "unpairButton"
-#define BLUETOOTH_OPTIONONE_BUTTON "optionsOneButton"
-#define BLUETOOTH_SETTING_BUTTON "settingButton"
-#define BLUETOOTH_DELETE_BUTTON "deleteButton"
-#define BLUETOOTH_SUCC_BACK_BUTTON "succBackButton"
-#define BLUETOOTH_FAIL_BACK_BUTTON "failBackButton" // 重试按钮
-#define BLUETOOTH_CONN_FAIL_BACK_BUTTON "connfailBackButton"
-// 视图滑动事件ID
-#define BLUETOOTH_EARLIST_VIEW "BluetoothEarListView"
-#define BLUETOOTH_DEVICE_LIST_VIEW "BluetoothDeviceListView"
-#define BLUETOOTH_EAR_PHONE_VIEW "BluetoothEarPhoneView"
-#define BLUETOOTH_OPTIONS_VIEW "BluetoothOptionsView"
-#define BLUETOOTH_RECONNECT_VIEW "BluetoothReconnectView"
-#define BLUETOOTH_VIEW "BluetoothView"
-#define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView"
-#define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"
-#define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"
-
-static constexpr uint8_t FONT_THIRTY_SIZE = 30; // 30:字体大小
-static constexpr uint8_t FONT_FORTY_SIZE = 40; // 40:字体大小
-
-struct PlayerCaseInfo {
-    char sliceId[DEC_NUM_256];
-    int16_t index;
-};
-
-
-class PlayersListGroup {
-public:
-    PlayersListGroup() {}
-    ~PlayersListGroup();
-    static PlayersListGroup *GetInstance()
-    {
-        static PlayersListGroup instance;
-        return &instance;
-    }
-    void SetUpListCase();
-    List<PlayerCaseInfo>& GetCase();
-    char *GetCase(int16_t index);
-    void AddCase(PlayerCaseInfo testCaseInfo);
-
-private:
-    List<PlayerCaseInfo> *playersCaseList_{nullptr};
-    int GetAllFiles(List<PlayerCaseInfo> *playersCaseList);
-};
-
-// Button OnClick
-class ButtonOnClickListener : public UIView::OnClickListener {
-public:
-    enum VolumeSetState : uint8_t {
-        MUTE,
-        LOW,
-        MEDIUM,
-        LOUD,
-    };
-    ButtonOnClickListener() {}
-    ButtonOnClickListener(UIView *view) : view_(view) {}
-    ~ButtonOnClickListener();
-    static ButtonOnClickListener *GetInstance()
-    {
-        static ButtonOnClickListener instance;
-        return &instance;
-    }
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-private:
-    UIView *view_{nullptr};
-    void PlayerButtonOnClick();
-    void SoundButtonOnClick();
-    void PlayerModelButtonOnClick();
-    void OptionsButtonOnClick();
-    VolumeSettingView *volumeSetting{nullptr};
-    UIViewGroup *volumeSettingView{nullptr};
-};
-
-// 播放器回调
-class PlayerCallbackImpl : public OHOS::Media::PlayerCallback {
-public:
-    PlayerCallbackImpl();
-    ~PlayerCallbackImpl();
-    void OnPlaybackComplete();
-    void OnError(int32_t errorType, int32_t errorCode);
-    void OnInfo(int type, int extra);
-    void OnRewindToComplete();
-private:
-};
-
-// 播放器
-class PlayerInterruptListener : public InterruptListener {
-public:
-    PlayerInterruptListener();
-    ~PlayerInterruptListener();
-
-    void SetOwner(std::shared_ptr<Player> player);
-    void SetPaused(bool value);
-    void SetResumed(bool value);
-    void RestFlag();
-    bool IsPaused();
-    bool IsDelayed();
-    bool IsResumed();
-    bool IsBeginStopped();
-    bool IsEndStopped();
-    void OnInterrupt(int32_t type, int32_t hint) override;
-    void PausePlayer(void);
-    void ResumePlayer(void);
-    void StopPlayer(void);
-    std::shared_ptr<Player> GetPlayer();
-
-private:
-    std::shared_ptr<Player> player_{nullptr};
-    bool isPaused_{false};
-    bool isDelayed_{false};
-    bool isResumed_{false};
-    bool isBeginStopped_{false};
-    bool isEndStopped_{false};
-};
-
-// 滑动手势
-class PlayerOnDragListener : public UIView::OnDragListener,  public RootView::OnKeyActListener {
-public:
-    PlayerOnDragListener();
-    ~PlayerOnDragListener();
-    virtual bool OnDragEnd(UIView& view, const DragEvent& event) override;
-    bool OnDrag(UIView& view, const DragEvent& event) override;
-    bool OnKeyAct(UIView& view, const KeyEvent& event) override;//增加按键事件
-    static PlayerOnDragListener *GetInstance();
-private:
-    void OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan);
-    void OnDragChangBluetoothView(const DragEvent& event);
-    void DropEarPhoneView(const DragEvent& event);
-    void DropEarListView(const DragEvent& event);
-    void CorrespondingJump(const DragEvent& event, int16_t hideView);
-};
-
-// Bluetooth View redirection
-class BluetoothEarListView;
-class BluetoothOptionsView;
-class BluetoothDeviceListView;
-class JumpView {
-public:
-    enum BluetoothJumpViewNum : uint8_t {
-        BLUETOOTHEARPHONEVIEW = 0, // 扫描
-        BLUETOOTHEARLISTVIEW,  // 扫描列表
-        BLUETOOTHDEVICELISTVIEW, // 已配对设备列表
-        BLUETOOTHEOPTIONSVIEW,   // 选择界面
-        BLUETOOTHRECONNECTVIEW,
-        TIPSSUCCMESSAGEVIEW,  // 连接成功
-        TIPSCONNFAILMESSAGEVIEW,  // 连接失败
-        TIPSFAILMESSAGEVIEW,
-        BLUETOOTHEVIEW,   // 设置界面
-        BLUETOOTHEJUMP_MAX,
-    };
-    JumpView();
-    ~JumpView();
-    static JumpView *GetInstance();
-    void ChangeView(int16_t hideView, int16_t showView);
-private:
-    bool ChangeTipsFailMessageView(int16_t hideView, int16_t thisView);
-    bool ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView);
-    bool ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothEarListView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView);
-    bool CheckViewParam(int16_t hideView, int16_t showView);
-    void ResetEarListView(int16_t hideView);
-    UIViewGroup *container[BLUETOOTHEJUMP_MAX]{nullptr}; // CONTAINER_NUM :蓝牙耳机连接的9个界面容器
-    BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr};
-    BluetoothEarListView *bluetoothEarListView{nullptr};
-    BluetoothView *bluetoothView{nullptr};
-    BluetoothOptionsView *bluetoothOptionsView{nullptr};
-    BluetoothDeviceListView *bluetoothDeviceListView{nullptr};
-    BluetoothReconnectView *bluetoothReconnectView{nullptr};
-    TipsSuccMessageView *tipsSuccMessageView{nullptr};
-    TipsConnFailMessageView *tipsConnFailMessageView{nullptr};
-    TipsFailMessageView *tipsFailMessageView{nullptr};
-    typedef bool (JumpView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);
-    PreprosssChangeView preProcessView[BLUETOOTHEJUMP_MAX];
-};
-
-class PlayersPresenter : public UIView::OnClickListener {
-public:
-    PlayersPresenter();
-    ~PlayersPresenter();
-    static PlayersPresenter *GetInstance();
-    void OnClickRescanButton(void);
-    void OnClickNewEquipmentButton(void);
-    void OnClickCancelConnedRequestButton(void);
-    void OnClickButtonUnpair(void);
-    void OnClickButtonOptionOne(void);
-    void OnClickSetting(void);
-    void OnClickDelete(void);
-    void OnClickSuccBack(void);
-    void OnClickConnFailBack(void);
-    void OnClickFailBack(void);
-    void SetTitleSetText(const char *text);
-    void SetPlaybackProgress(int64_t value);
-    void SetPlayerState(bool value);
-    void PlayerbackReset(void);
-    void PlayerHeadsetReset(void);
-    void ShowPlayerListGroup(void);
-private:
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-};
-} // namespace OHOS
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#ifndef PLAYERS_PRESENTER_H\r
+#define 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 "VolumeSettingView.h"\r
+#include "VolumeSettingPresenter.h"\r
+#include "BluetoothModel.h"\r
+#include "BluetoothEarPhoneView.h"\r
+#include "BluetoothEarListView.h"\r
+#include "BluetoothOptionsView.h"\r
+#include "BluetoothReconnectView.h"\r
+#include "TipsSuccMessageView.h"\r
+#include "TipsConnFailMessageView.h"\r
+#include "TipsFailMessageView.h"\r
+#include "BluetoothDeviceListView.h"\r
+#include "BluetoothItemView.h"\r
+#include "PlayersCaseListAdapter.h"\r
+namespace OHOS {\r
+using OHOS::Media::Player;\r
+using namespace OHOS::Media;\r
+using namespace::Audio;\r
+using Audio::AudioManager;\r
+class VolumeSettingView;\r
+#define DEC_NUM_256 256\r
+// 点击按钮视图ID\r
+#define BLUETOOTH_RESCAN_BUTTON "rescanButton"\r
+#define BLUETOOTH_NEWEQUIPMENT_BUTTON "newEquipmentButton"\r
+#define BLUETOOTH_CANCELCONNEDREQUEST_BUTTON "cancelConnedRequestButton"\r
+#define BLUETOOTH_UNPAIR_BUTTON "unpairButton"\r
+#define BLUETOOTH_OPTIONONE_BUTTON "optionsOneButton"\r
+#define BLUETOOTH_SETTING_BUTTON "settingButton"\r
+#define BLUETOOTH_DELETE_BUTTON "deleteButton"\r
+#define BLUETOOTH_SUCC_BACK_BUTTON "succBackButton"\r
+#define BLUETOOTH_FAIL_BACK_BUTTON "failBackButton" // 重试按钮\r
+#define BLUETOOTH_CONN_FAIL_BACK_BUTTON "connfailBackButton"\r
+// 视图滑动事件ID\r
+#define BLUETOOTH_EARLIST_VIEW "BluetoothEarListView"\r
+#define BLUETOOTH_DEVICE_LIST_VIEW "BluetoothDeviceListView"\r
+#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 TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"\r
+#define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"\r
+\r
+static constexpr uint8_t FONT_THIRTY_SIZE = 30; // 30:字体大小\r
+static constexpr uint8_t FONT_FORTY_SIZE = 40; // 40:字体大小\r
+\r
+struct PlayerCaseInfo {\r
+    char sliceId[DEC_NUM_256];\r
+    int16_t index;\r
+};\r
+\r
+\r
+class PlayersListGroup {\r
+public:\r
+    PlayersListGroup() {}\r
+    ~PlayersListGroup();\r
+    static PlayersListGroup *GetInstance()\r
+    {\r
+        static PlayersListGroup instance;\r
+        return &instance;\r
+    }\r
+    void SetUpListCase();\r
+    List<PlayerCaseInfo>& GetCase();\r
+    char *GetCase(int16_t index);\r
+    void AddCase(PlayerCaseInfo testCaseInfo);\r
+\r
+private:\r
+    List<PlayerCaseInfo> *playersCaseList_{nullptr};\r
+    int GetAllFiles(List<PlayerCaseInfo> *playersCaseList);\r
+};\r
+\r
+// Button OnClick\r
+class ButtonOnClickListener : public UIView::OnClickListener {\r
+public:\r
+    enum VolumeSetState : uint8_t {\r
+        MUTE,\r
+        LOW,\r
+        MEDIUM,\r
+        LOUD,\r
+    };\r
+    ButtonOnClickListener() {}\r
+    ButtonOnClickListener(UIView *view) : view_(view) {}\r
+    ~ButtonOnClickListener();\r
+    static ButtonOnClickListener *GetInstance()\r
+    {\r
+        static ButtonOnClickListener instance;\r
+        return &instance;\r
+    }\r
+    bool OnClick(UIView& view, const ClickEvent& event) override;\r
+private:\r
+    UIView *view_{nullptr};\r
+    void PlayerButtonOnClick();\r
+    void SoundButtonOnClick();\r
+    void PlayerModelButtonOnClick();\r
+    void OptionsButtonOnClick();\r
+    PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr};\r
+    VolumeSettingView *volumeSetting{nullptr};\r
+    UIViewGroup *volumeSettingView{nullptr};\r
+};\r
+\r
+// 播放器回调\r
+class PlayerCallbackImpl : public OHOS::Media::PlayerCallback {\r
+public:\r
+    PlayerCallbackImpl();\r
+    ~PlayerCallbackImpl();\r
+    void OnPlaybackComplete();\r
+    void OnError(int32_t errorType, int32_t errorCode);\r
+    void OnInfo(int type, int extra);\r
+    void OnRewindToComplete();\r
+private:\r
+};\r
+\r
+// 播放器\r
+class PlayerInterruptListener : public InterruptListener {\r
+public:\r
+    PlayerInterruptListener();\r
+    ~PlayerInterruptListener();\r
+\r
+    void SetOwner(std::shared_ptr<Player> player);\r
+    void SetPaused(bool value);\r
+    void SetResumed(bool value);\r
+    void RestFlag();\r
+    bool IsPaused();\r
+    bool IsDelayed();\r
+    bool IsResumed();\r
+    bool IsBeginStopped();\r
+    bool IsEndStopped();\r
+    void OnInterrupt(int32_t type, int32_t hint) override;\r
+    void PausePlayer(void);\r
+    void ResumePlayer(void);\r
+    void StopPlayer(void);\r
+    std::shared_ptr<Player> GetPlayer();\r
+\r
+private:\r
+    std::shared_ptr<Player> player_{nullptr};\r
+    bool isPaused_{false};\r
+    bool isDelayed_{false};\r
+    bool isResumed_{false};\r
+    bool isBeginStopped_{false};\r
+    bool isEndStopped_{false};\r
+};\r
+\r
+// 滑动手势\r
+class PlayerOnDragListener : public UIView::OnDragListener {\r
+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
+    static PlayerOnDragListener *GetInstance();\r
+private:\r
+    void OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan);\r
+    void OnDragChangBluetoothView(const DragEvent& event);\r
+    void DropEarPhoneView(const DragEvent& event);\r
+    void DropEarListView(const DragEvent& event);\r
+    void CorrespondingJump(const DragEvent& event, int16_t hideView);\r
+};\r
+\r
+// Bluetooth View redirection\r
+class BluetoothEarListView;\r
+class BluetoothOptionsView;\r
+class BluetoothDeviceListView;\r
+class JumpView {\r
+public:\r
+    enum BluetoothJumpViewNum : uint8_t {\r
+        BLUETOOTHEARPHONEVIEW = 0, // 扫描\r
+        BLUETOOTHEARLISTVIEW,  // 扫描列表\r
+        BLUETOOTHDEVICELISTVIEW, // 已配对设备列表\r
+        BLUETOOTHEOPTIONSVIEW,   // 选择界面\r
+        BLUETOOTHRECONNECTVIEW,\r
+        TIPSSUCCMESSAGEVIEW,  // 连接成功\r
+        TIPSCONNFAILMESSAGEVIEW,  // 连接失败\r
+        TIPSFAILMESSAGEVIEW,\r
+        BLUETOOTHEVIEW,   // 蓝牙视图\r
+        BLUETOOTHEJUMP_MAX,\r
+    };\r
+    JumpView();\r
+    ~JumpView();\r
+    static JumpView *GetInstance();\r
+    void ChangeView(int16_t hideView, int16_t showView);\r
+private:\r
+    bool ChangeTipsFailMessageView(int16_t hideView, int16_t thisView);\r
+    bool ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView);\r
+    bool ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothEarListView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView);\r
+    bool CheckViewParam(int16_t hideView, int16_t showView);\r
+    void ResetEarListView(int16_t hideView);\r
+    UIViewGroup *container[BLUETOOTHEJUMP_MAX]{nullptr}; // CONTAINER_NUM :蓝牙耳机连接的9个界面容器\r
+    BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr};\r
+    BluetoothEarListView *bluetoothEarListView{nullptr};\r
+    BluetoothView *bluetoothView{nullptr};\r
+    BluetoothOptionsView *bluetoothOptionsView{nullptr};\r
+    BluetoothDeviceListView *bluetoothDeviceListView{nullptr};\r
+    BluetoothReconnectView *bluetoothReconnectView{nullptr};\r
+    TipsSuccMessageView *tipsSuccMessageView{nullptr};\r
+    TipsConnFailMessageView *tipsConnFailMessageView{nullptr};\r
+    TipsFailMessageView *tipsFailMessageView{nullptr};\r
+    typedef bool (JumpView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
+    PreprosssChangeView preProcessView[BLUETOOTHEJUMP_MAX];\r
+};\r
+\r
+class PlayersPresenter : public UIView::OnClickListener {\r
+public:\r
+    PlayersPresenter();\r
+    ~PlayersPresenter();\r
+    static PlayersPresenter *GetInstance();\r
+    void OnClickRescanButton(void);\r
+    void OnClickNewEquipmentButton(void);\r
+    void OnClickCancelConnedRequestButton(void);\r
+    void OnClickButtonUnpair(void);\r
+    void OnClickButtonOptionOne(void);\r
+    void OnClickSetting(void);\r
+    void OnClickDelete(void);\r
+    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 SetPlaybackProgress(int64_t value);\r
+    void SetPlayerState(bool value);\r
+    void PlayerbackReset(void);\r
+    void PlayerHeadsetReset(void);\r
+    void ShowPlayerListGroup(void);\r
+private:\r
+    bool OnClick(UIView& view, const ClickEvent& event) override;\r
+};\r
+} // namespace OHOS\r
+#endif\r
index 5f95d1d..27d3b87 100755 (executable)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef PLAYERS_VIEW_H
-#define PLAYERS_VIEW_H
-
-#include <string>
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/root_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "components/ui_abstract_scroll.h"
-#include "components/ui_circle_progress.h"
-#include "components/ui_checkbox.h"
-#include "components/ui_list.h"
-#include "BaseView.h"
-#include "font/ui_font_bitmap.h"
-#include "font/ui_font.h"
-#include "graphic_config.h"
-#include "components/ui_card_page.h"
-#include "PlayersPresenter.h"
-
-namespace OHOS {
-#define PLAY_PROGRESS_MIN 0
-#define PLAY_PROGRESS_MAX 100
-class JumpView;
-class PlayersPresenter;
-class PlayersCaseListAdapter;
-class PlayersView : public UICardPage {
-public:
-    PlayersView();
-    virtual ~PlayersView();
-    static PlayersView *GetInstance(void);
-    bool InitView(void);
-    void PreLoad(void) override;
-    void UnLoad(void) override;
-    bool OnDragEvent(const DragEvent& event) override;
-
-    void SetUpLabel(const char *title, int16_t x, int16_t y);
-    void ShowUpListView(void);
-    void TitleSetText(const char *text);
-    void PlayerModelButtonSetSrc(uint32_t playMode);
-    int16_t GetVolumeRank(void);
-    void SetVolumeRank(int16_t value);
-    void SetVolumeAddOne(void);
-    UILabelButton *GetBackButton(void);
-    UIButton *GetPullButton(void);
-    UIButton *GetOptionsButton(void);
-    UIButton *GetPreButton(void);
-    UIButton *GetNextButton(void);
-    UILabel *GetTitleLabel(void);
-    UICheckBox *GetPlayerButton(void);
-    UIImageView *GetSoundButton(void);
-    UIImageView *GetPlayerModelButton(void);
-    UICircleProgress *GetPlaybackProgress(void);
-    UICheckBox::UICheckBoxState GetPlayerButtonState(void);
-    void SetPlayerButtonState(UICheckBox::UICheckBoxState state);
-    UIList *GetPlayerList(void);
-    void SetPlayerListGroupStatus(bool status);
-    void SetPlayerCtrVolume(float leftVolume, float rightVolume);
-    void CreateJumpView(void);
-    void CreatePlayersPresenter(void);
-    void CreatePlayerOnDragListener(void);
-private:
-    bool InitBackGround(void);
-    void TearDownView();
-    void CreatePlayerMusicName();
-    int ShowUpCheckBoxButton();
-    int ShowUpButton();
-    int ShowUpButtonOptions();
-    int ShowUpButtonView();
-    int ShowUpCircleProgress();
-    bool ShowUpPlayerMode();
-    void SetUpButton(UIButton *btn, const Point& point, int16_t width, int16_t height,
-                     UIView::OnClickListener *listener);
-    bool LoadPlayerImage(UIImageView *View, uint32_t resId);
-    bool LoadPlayerImage(UIButton *button, uint32_t resId, uint32_t hlResId);
-
-    UIImageView *backGround{nullptr};
-    UILabel *subTitleLabel{nullptr};
-    PlayersCaseListAdapter *adapterText{nullptr};
-    UILabel *titleLabel{nullptr};
-    UILabelButton *backButton{nullptr};
-    UIButton *pullButton{nullptr};
-    UIButton *optionsButton{nullptr};
-    UIButton *preButton{nullptr};
-    UIButton *nextButton{nullptr};
-    UIViewGroup *listGroup{nullptr};
-    UIImageView *soundButton{nullptr};
-    UIImageView *playerModelButton{nullptr};
-    UICheckBox *playerButton{nullptr};
-    UICircleProgress *playbackProgress{nullptr};
-    int16_t volumeSet{0};
-    UIList *list{nullptr};
-    JumpView *jumpView{nullptr};
-    PlayersPresenter *playersPresenter{nullptr};
-    PlayerOnDragListener *playerOnDragListener{nullptr};
-    uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
-    UIView::OnClickListener *playerlistener{nullptr};
-    UIView::OnClickListener *soundlistener{nullptr};
-    UIView::OnClickListener *nextlistener{nullptr};
-    UIView::OnClickListener *prelistener{nullptr};
-    UIView::OnClickListener *modellistener{nullptr};
-    UIView::OnClickListener *optionslistener{nullptr};
-    bool viewiInitStatus{false};
-};
-} // namespace OHOS
-#endif // MAIN_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#ifndef PLAYERS_VIEW_H\r
+#define PLAYERS_VIEW_H\r
+\r
+#include <string>\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_abstract_scroll.h"\r
+#include "components/ui_circle_progress.h"\r
+#include "components/ui_checkbox.h"\r
+#include "components/ui_list.h"\r
+#include "BaseView.h"\r
+#include "font/ui_font_bitmap.h"\r
+#include "font/ui_font.h"\r
+#include "graphic_config.h"\r
+#include "components/ui_card_page.h"\r
+#include "PlayersPresenter.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "PlayerListDelSongView.h"\r
+#include "common/image_cache_manager.h"\r
+namespace OHOS {\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
+    {\r
+        return p_PlayerListDelSongView;\r
+    }\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 LoadPlayerImage(UIButton *button, uint32_t resId, uint32_t hlResId);\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
+};\r
+} // namespace OHOS\r
+#endif // MAIN_VIEW_H\r
index 2999ae6..1bbbc95 100755 (executable)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: bluetooth view 设置页面
- * Create: 2021-09-5
- */
-#include "BluetoothView.h"
-#include "PlayersView.h"
-#include "UiConfig.h"
-#include "BluetoothEarPhoneView.h"
-#include "PlayersPresenter.h"
-
-namespace OHOS {
-static BluetoothView *g_bluetoothView{nullptr};
-static constexpr uint16_t TEXT_WIDTH = 155;
-static constexpr uint16_t TEXT_HEIGHT = 40;
-static constexpr uint16_t HEIGHT = 55;
-static constexpr uint16_t HEIGHT2 = 75;
-static constexpr uint16_t WIDTH = 55;
-static constexpr uint16_t WIDTH2 = 75;
-static constexpr uint16_t BUTTON_WIDTH = 180;
-static constexpr uint16_t BUTTON_HEIGHT = 40;
-
-constexpr uint16_t BLUETOOTH_OK = 0;
-constexpr int16_t BLUETOOTH_ERROR = (-1);
-
-static constexpr uint16_t IMAGE_X = 50;
-static constexpr uint16_t IMAGE_Y = 98;
-static constexpr uint16_t IMAGE_Y2 = 187;
-static constexpr uint16_t IMAGE_Y3 = 278;
-static constexpr uint16_t STEP_LABEL_X = 155;
-static constexpr uint16_t BUTTON_X = 320;
-static constexpr uint16_t BUTTON_X2 = 313;
-static constexpr uint16_t BUTTON_X3 = 135;
-static constexpr uint16_t BUTTON_Y = 104;
-static constexpr uint16_t BUTTON_Y2 = 194;
-static constexpr uint16_t BUTTON_Y3 = 278;
-static constexpr uint16_t BUTTON_Y4 = 402;
-static constexpr uint16_t STEP_LABEL_Y = 108;
-static constexpr uint16_t STEP_LABEL_Y2 = 199;
-static constexpr uint16_t STEP_LABEL_Y3 = 290;
-
-BluetoothView::BluetoothView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::BluetoothView");
-    g_bluetoothView = this;
-
-}
-
-BluetoothView::~BluetoothView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::~BluetoothView");
-    group->RemoveAll(); 
-    UIView::OnClickListener *click = watchButton->GetOnClickListener();
-    if (click != nullptr) {
-        delete click;
-    }
-    delete watchButton;
-    watchButton = nullptr;
-    click = phoneButton->GetOnClickListener();
-    if (click != nullptr) {
-        delete click;
-    }
-    delete phoneButton;
-    phoneButton = nullptr;
-    delete settingButton;
-    settingButton = nullptr;
-    click = deleteButton->GetOnClickListener();
-    if (click != nullptr) {
-        delete click;
-    }
-    click = nullptr;
-    delete deleteButton;
-    deleteButton = nullptr;
-    delete watchLabel;
-    watchLabel = nullptr;
-    delete phoneLabel;
-    phoneLabel = nullptr;
-    delete bluetoothLabel;
-    bluetoothLabel = nullptr;
-    delete watchImage;
-    watchImage = nullptr;
-    delete phoneImage;
-    phoneImage = nullptr;
-    delete bluetoothImage;
-    bluetoothImage = nullptr;
-    delete group;
-    group = nullptr;
-    g_bluetoothView = nullptr;
-}
-
-BluetoothView *BluetoothView::GetInstance(void)
-{
-    return g_bluetoothView;
-}
-
-UIButton *BluetoothView::GetSettingButton(void)
-{
-    return settingButton;
-}
-
-UILabelButton *BluetoothView::GetDeleteButton(void)
-{
-    return deleteButton;
-}
-
-UIRadioButton *BluetoothView::GetWatchButton(void)
-{
-    return watchButton;
-}
-
-UIRadioButton *BluetoothView::GetPhoneButton(void)
-{
-    return phoneButton;
-}
-
-// Button OnClick
-class BluetoothOnClickListener : public UIView::OnClickListener {
-public:
-    BluetoothOnClickListener(UIView* view) : view_(view){}
-    ~BluetoothOnClickListener() {}
-
-    bool OnClick(UIView& view, const ClickEvent& event) override
-    {
-        UNUSED(view);
-        UNUSED(event);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListener OnClick");
-        BluetoothView *bluetoothView = BluetoothView::GetInstance();
-        if (bluetoothView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView is nullptr");
-            return false;
-        }
-        if (view_ == (UIView *)bluetoothView->GetWatchButton()) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "watchButton OnClick");
-        } else if (view_ == (UIView *)bluetoothView->GetPhoneButton()) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneButton OnClick");
-        } else if (view_ == (UIView *)bluetoothView->GetSettingButton()) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "settingButton OnClick");
-            JumpView *jumpView = JumpView::GetInstance();
-            if (jumpView == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-                return false;
-            }
-            jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,
-                                 JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
-        } else if (view_ == (UIView *)bluetoothView->GetDeleteButton()) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "deleteButton OnClick");
-        }
-        return true;
-    }
-private:
-    UIView *view_ = nullptr;
-};
-
-void BluetoothView::SetUpButton(UILabelButton *btn, const Point& point,
-                                int16_t width, int16_t height, UIView::OnClickListener *listener)
-{
-    if (btn == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btn null!");
-        return;
-    }
-    btn->SetPosition(point.x, point.y, width, height);
-    btn->SetOnClickListener(listener);
-}
-
-int BluetoothView::LoadRadioButton()
-{
-    if (watchButton == nullptr) {
-        watchButton = new UIRadioButton("MusicCategory");
-        if (watchButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchButton UIRadio new fail");
-            return BLUETOOTH_ERROR;
-        }
-    }
-    if (phoneButton == nullptr) {
-        phoneButton = new UIRadioButton("MusicCategory");
-        if (phoneButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneButton UIRadio new fail");
-            return BLUETOOTH_ERROR;
-        }
-    }
-    UIView::OnClickListener *listener1 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(watchButton));
-    if (listener1 == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener1 new fail");
-        return BLUETOOTH_ERROR;
-    }
-    watchButton->SetPosition(BUTTON_X, BUTTON_Y, WIDTH, HEIGHT);
-    watchButton->SetOnClickListener(listener1);
-    watchButton->SetTouchable(false);
-    UIView::OnClickListener *listener2 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(phoneButton));
-    if (listener2 == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener2 new fail");
-        return BLUETOOTH_ERROR;
-    }
-    phoneButton->SetPosition(BUTTON_X, BUTTON_Y2, WIDTH, HEIGHT);
-    phoneButton->SetOnClickListener(listener2);
-    phoneButton->SetTouchable(false);
-    return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadLabelButton()
-{
-    struct Point pointBtn;
-    // 跳转按钮
-    pointBtn.x = BUTTON_X2;
-    pointBtn.y = BUTTON_Y3;
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return BLUETOOTH_ERROR;
-    }
-    settingButton->SetPosition(pointBtn.x, pointBtn.y, WIDTH, HEIGHT);
-    settingButton->SetOnClickListener(clickListener);
-    settingButton->SetImageSrc(PNG_SETTTING_BUTTON_IMAGE, PNG_SETTTING_BUTTON_IMAGE);
-    settingButton->SetViewId(BLUETOOTH_SETTING_BUTTON);
-    // 删除按钮
-    pointBtn.x = BUTTON_X3;
-    pointBtn.y = BUTTON_Y4;
-    UIView::OnClickListener *listener4 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(deleteButton));
-    if (listener4 == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener4 new fail");
-        return BLUETOOTH_ERROR;
-    }
-    SetUpButton(deleteButton, pointBtn, BUTTON_WIDTH, BUTTON_HEIGHT, listener4);
-    deleteButton->SetText("删除音乐");
-    deleteButton->SetVisible(false);
-    return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadButtonView()
-{
-    if (LoadRadioButton() == BLUETOOTH_ERROR) {
-        return BLUETOOTH_ERROR;
-    }
-    if (settingButton == nullptr) {
-        settingButton = new UIButton();
-        if (settingButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "settingButton UIButton new fail");
-            return BLUETOOTH_ERROR;
-        }
-    }
-    if (deleteButton == nullptr) {
-        deleteButton = new UILabelButton();
-        if (deleteButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deleteButton UILabelButton new fail");
-            return BLUETOOTH_ERROR;
-        }
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LoadButtonView");
-    if (LoadLabelButton() == BLUETOOTH_ERROR) {
-        return BLUETOOTH_ERROR;
-    }
-    return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadLabel(void)
-{
-    // 标题文本
-    if (watchLabel == nullptr) {
-        watchLabel = new UILabel();
-        if (watchLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchLabel new fail");
-            return BLUETOOTH_ERROR;
-        }
-    }
-    watchLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y, TEXT_WIDTH, TEXT_HEIGHT);
-    watchLabel->SetText("手表音乐");
-    watchLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-    if (phoneLabel == nullptr) {
-        phoneLabel = new UILabel();
-        if (phoneLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneLabel new fail");
-            return BLUETOOTH_ERROR;
-        }
-    }
-    phoneLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y2, TEXT_WIDTH, TEXT_HEIGHT);
-    phoneLabel->SetText("手机音乐");
-    phoneLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-    if (bluetoothLabel == nullptr) {
-        bluetoothLabel = new UILabel();
-        if (bluetoothLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothLabel new fail");
-            return BLUETOOTH_ERROR;
-        }
-    }
-    bluetoothLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y3, TEXT_WIDTH, TEXT_HEIGHT);
-    bluetoothLabel->SetText("蓝牙音乐");
-    bluetoothLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-    return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadImage(void)
-{
-    // 图片图标
-    watchImage = new UIImageView();
-    if (watchImage == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchImage new fail");
-        return BLUETOOTH_ERROR;
-    }
-    watchImage->SetPosition(IMAGE_X, IMAGE_Y, WIDTH2, HEIGHT2);
-    watchImage->SetSrc(PNG_WATCH_IMAGE);
-
-    phoneImage = new UIImageView();
-    if (phoneImage == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage new fail");
-        return BLUETOOTH_ERROR;
-    }
-    phoneImage->SetPosition(IMAGE_X, IMAGE_Y2, WIDTH2, HEIGHT2);
-    phoneImage->SetSrc(PNG_PHONE_IMAGE);
-
-    bluetoothImage = new UIImageView();
-    if (bluetoothImage == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothImage new fail");
-        return BLUETOOTH_ERROR;
-    }
-    bluetoothImage->SetPosition(IMAGE_X, IMAGE_Y3, WIDTH2, HEIGHT2);
-    bluetoothImage->SetSrc(PNG_BLUETOOTH_IMAGE);
-    return BLUETOOTH_OK;
-}
-
-UIViewGroup *BluetoothView::LoadBluetoothView()
-{
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-    }
-    group->SetPosition(0, 0);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-    LoadButtonView();
-    LoadLabel();
-    LoadImage();
-
-    group->Add(watchLabel);
-    group->Add(phoneLabel);
-    group->Add(bluetoothLabel);
-    group->Add(watchButton);
-    group->Add(phoneButton);
-    group->Add(settingButton);
-    group->Add(deleteButton);
-    group->Add(watchImage);
-    group->Add(phoneImage);
-    group->Add(bluetoothImage);
-
-    //增加按键监听
-    RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::PlayerOnDragListener::GetInstance();
-    RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    if (earDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");
-        return nullptr;
-    }
-    group->SetOnDragListener(earDragListener);
-    group->SetViewId(BLUETOOTH_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: bluetooth view 设置页面\r
+ * Create: 2021-09-5\r
+ */\r
+#include "BluetoothView.h"\r
+#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/nativeapp/nativeui/player/src/PlayerListDelSongView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayerListDelSongView.cpp
new file mode 100644 (file)
index 0000000..03d6d6a
--- /dev/null
@@ -0,0 +1,169 @@
+#include "PlayerListDelSongView.h"
+#include "PlayersPresenter.h"
+namespace OHOS
+{
+    
+
+
+    static PlayerListDelSongView *g_pPlayerListDelSongView{nullptr};
+
+    PlayerListDelSongView::PlayerListDelSongView()
+    {
+        g_pPlayerListDelSongView = this;
+    }
+
+    PlayerListDelSongView::~PlayerListDelSongView()
+    {
+        if (viewInitStatus == true)
+        {
+            DeInitView();
+        }
+        g_pPlayerListDelSongView = nullptr;
+    }
+
+    PlayerListDelSongView *PlayerListDelSongView::GetInstance()
+    {
+
+        return g_pPlayerListDelSongView;
+    }
+
+    /// @brief 设置歌曲名标签样式
+    /// @param songName 歌曲名
+    void PlayerListDelSongView::SetTheSongLabelStyle(const char * songName)
+    {
+        songNameLabel->SetText(songName);
+        songNameLabel->Invalidate();
+    }
+
+    UIScrollView * PlayerListDelSongView::InitDelSongView()
+    {
+        if (scrollView1_ == nullptr)
+        {
+            scrollView1_ = new UIScrollView();
+        }
+        scrollView1_->SetPosition(0, 0,466,466);               
+        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+        scrollView1_->SetDirection(1);
+        scrollView1_->SetVisible(true);
+        /* -------------------------------------------------------------------------- */
+        if (label1_ == nullptr)
+        {
+            label1_ = new UILabel();
+        }
+        label1_->SetPosition(172, 160); 
+        label1_->SetStyle(STYLE_TEXT_FONT, 30);
+        label1_->SetStyle(STYLE_LINE_HEIGHT, 35);
+        label1_->SetText("是否删除");
+        label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+        label1_->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
+        label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        label1_->SetRollSpeed(0);
+        label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        scrollView1_->Add(label1_);
+        label1_->SetVisible(true);
+        /* -------------------------------------------------------------------------- */
+        if (songNameLabel == nullptr)
+        {
+            songNameLabel = new UILabel();
+        }
+        songNameLabel->SetPosition(83, 220,300,35); 
+        songNameLabel->SetStyle(STYLE_TEXT_FONT, 30);
+        songNameLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+        songNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+        songNameLabel->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+        songNameLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        songNameLabel->SetRollSpeed(0);
+        songNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        scrollView1_->Add(songNameLabel);
+        songNameLabel->SetVisible(true);
+        /* -------------------------------------------------------------------------- */
+        if (label2_ == nullptr)
+        {
+            label2_ = new UILabel();
+        }
+        label2_->SetPosition(173, 52); 
+        label2_->Resize(120, 35);      
+        label2_->SetViewId("label1");  
+        label2_->SetStyle(STYLE_TEXT_FONT, 30);
+        label2_->SetStyle(STYLE_LINE_HEIGHT, 36);
+        label2_->SetText("删除歌曲");
+        label2_->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+        label2_->SetRollSpeed(0);
+        label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        scrollView1_->Add(label2_);
+        label2_->SetVisible(true);
+        /* -------------------------------------------------------------------------- */
+        if (button1_ == nullptr)
+        {
+            button1_ = new UIButton();
+        }
+        button1_->SetPosition(256, 299); 
+        button1_->Resize(100, 100);      
+        button1_->SetViewId("Delbutton");  
+        button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+        char *button1defaultImgSrc = "/user/res/SYSTEM_CheckOn.bin";
+        button1_->SetImageSrc(button1defaultImgSrc, nullptr);
+        button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+        scrollView1_->Add(button1_);
+        button1_->SetVisible(true);
+        /* -------------------------------------------------------------------------- */
+        if (button2_ == nullptr)
+        {
+            button2_ = new UIButton();
+        }
+        button2_->SetPosition(111, 299); 
+        button2_->Resize(100, 100);      
+        button2_->SetViewId("returnbutton");  
+        button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+        char *button2defaultImgSrc = "/user/res/SYSTEM_CheckOff.bin";
+        button2_->SetImageSrc(button2defaultImgSrc, nullptr);
+        button2_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+        scrollView1_->Add(button2_);
+        button2_->SetVisible(true);
+
+        UIView::OnClickListener *buttonClickListener = static_cast<UIView::OnClickListener *>(new ButtonOnClickListener());
+        button1_->SetOnClickListener(buttonClickListener);
+        button2_->SetOnClickListener(buttonClickListener);
+        viewInitStatus = true;
+        return scrollView1_;
+    }
+
+    void PlayerListDelSongView::DeInitView()
+    {
+        if (scrollView1_ != nullptr)
+        {
+            delete scrollView1_;
+            scrollView1_ = nullptr;
+        }
+        if (label1_ != nullptr)
+        {
+            delete label1_;
+            label1_ = nullptr;
+        }
+        if (songNameLabel != nullptr)
+        {
+            delete songNameLabel;
+            songNameLabel = nullptr;
+        }
+        if (button3_ != nullptr)
+        {
+            delete button3_;
+            button3_ = nullptr;
+        }
+        if (label2_ != nullptr)
+        {
+            delete label2_;
+            label2_ = nullptr;
+        }
+        if (button1_ != nullptr)
+        {
+            delete button1_;
+            button1_ = nullptr;
+        }
+        if (button2_ != nullptr)
+        {
+            delete button2_;
+            button2_ = nullptr;
+        }
+    }
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayerListitemView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayerListitemView.cpp
new file mode 100644 (file)
index 0000000..b8798a6
--- /dev/null
@@ -0,0 +1,60 @@
+#include "PlayerListitemView.h"
+#include "ui_resource_image.h"
+#include "common/image_cache_manager.h"
+namespace OHOS
+{
+
+    PlayerListItemView::PlayerListItemView()
+    {
+        SetPosition(0, 0, 332, 78); // 每一首歌曲的itemview宽高要配置好,因为每一首加到list歌曲都是以这个视图为基准
+        SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+        SetStyle(STYLE_BACKGROUND_OPA, 255);
+        SetTouchable(true);
+        SetUpChild();
+        Add(&sLabel);
+        Add(&sButton);
+    }
+
+    PlayerListItemView::~PlayerListItemView()
+    {
+        Remove(&sLabel);
+        Remove(&sButton);
+    }
+
+    /// @brief 设置item的信息
+    /// @param itemInfo
+    void PlayerListItemView::SetItemInfo(const PlayerListItem itemInfo)
+    {
+        sItemInfo = itemInfo;
+        sLabel.SetText(itemInfo.label);
+    }
+
+    /// @brief 设置每一个itemview上的组件
+    void PlayerListItemView::SetUpChild()
+    {
+        sLabel.SetPosition(0, 0, 200, 40);
+        sLabel.SetStyle(STYLE_TEXT_FONT, 30);
+        sLabel.SetStyle(STYLE_LINE_HEIGHT, 36);
+        sLabel.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+        sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+        sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        sButton.SetPosition(292, 0, 78, 78);
+        sButton.SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
+        sButton.SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+        sButton.SetStyle(STYLE_BORDER_RADIUS, 0);
+        ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES);
+        sButton.SetImageSrc(image, nullptr);
+        sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4fc34c, UIButton::PRESSED);
+        sButton.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+        sButton.SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
+    }
+
+    /// @brief 获取list歌单的中每首歌的在list的下标
+    /// @return 返回歌曲下标
+    int PlayerListItemView::GetPlayerListIndex()
+    {
+        return sItemInfo.index;
+    }
+
+}
\ No newline at end of file
index a6547ef..526b2f2 100755 (executable)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-#include <string>
-#include "PlayersCaseListAdapter.h"
-#include "gfx_utils/list.h"
-#include "PlayersView.h"
-#include "PlayersPresenter.h"
-#include "wearable_log.h"
-#include "PlayersModel.h"
-
-namespace OHOS {
-constexpr uint16_t TESTCASE_BUTTON_HEIGHT = 64;
-constexpr uint16_t STYLE_BORDER_WIDTH_VALUE = 4;
-constexpr uint16_t STYLE_BORDER_RADIUS_VALUE = 12;
-static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333;
-
-PlayersCaseListAdapter::~PlayersCaseListAdapter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");
-    delete listener;
-    listener = nullptr;
-}
-
-uint16_t PlayersCaseListAdapter::GetCount()
-{
-    return PlayersListGroup::GetInstance()->GetCase().Size();
-}
-
-class BtnOnClickListListener : public UIView::OnClickListener {
-public:
-    BtnOnClickListListener() {}
-    ~BtnOnClickListListener() {}
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-
-private:
-    void BtnOnListData(UIView& view);
-    char *sliceId_{nullptr};
-    int16_t index_{0};
-};
-
-bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener sliceId_: %s.", sliceId_);
-    UNUSED(event);
-    int ret;
-    int32_t playerState;
-    uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");
-        return false;
-    }
-    BtnOnListData(view);
-    // 标记当前播放歌曲index_
-    PlayersModel::GetInstance()->SetCurrentIndex(index_);
-    // 本地播放文件路径和状态
-    std::string strSrcMusic(APP_MUSIC_PATH);
-    std::string tempStr("/");
-    std::string strName = sliceId_;
-    PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "uri: %s.", PlayersModel::GetInstance()->GetPlayerUri().c_str());
-    std::string strSongName = sliceId_;
-    std::string pureName = strSongName.substr(0, strSongName.rfind("."));
-    const char *songName = pureName.c_str();
-    playersView->TitleSetText(songName);
-    playersView->SetPlayerListGroupStatus(false);
-    // 刷新UI
-    RootView::GetInstance()->Invalidate();
-
-    state = playersView->GetPlayerButtonState();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state);
-    if (state == UICheckBox::UICheckBoxState::UNSELECTED) {
-        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
-        /* start play */
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play");
-        PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
-        if (playerState == PlayerStates::PLAYER_PAUSED) {
-            ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
-        }
-        PlayersModel::GetInstance()->PlayerStat(); // 播放
-    } else if (state == UICheckBox::UICheckBoxState::SELECTED) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");
-        PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
-        if (playerState == PlayerStates::PLAYER_STARTED) {
-            ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);
-            ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
-        }
-        PlayersModel::GetInstance()->PlayerStat();
-    }
-    return true;
-}
-
-void BtnOnClickListListener::BtnOnListData(UIView& view)
-{
-    index_ = view.GetViewIndex();
-    List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();
-    ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();
-    for (uint16_t i = 0; i < index_; i++) {
-        node = node->next_;
-    }
-    sliceId_ = node->data_.sliceId;
-}
-
-void PlayersCaseListAdapter::LabelButtonSet()
-{
-    if (item == nullptr) {
-        return;
-    }
-    item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
-    item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
-    item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
-    item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
-    item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
-    item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
-}
-
-UIView *PlayersCaseListAdapter::GetView(UIView* inView, int16_t index)
-{
-    List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();
-    if (playersCaseList.IsEmpty()) {
-        return nullptr;
-    }
-    if ((index > playersCaseList.Size() - 1) || (index < 0)) {
-        return nullptr;
-    }
-    if (inView == nullptr) {
-        item = new UILabelButton();
-        if (item == nullptr) {
-            return nullptr;
-        }
-        item->SetPosition(0, 0);
-        item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::RELEASED);
-        item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::PRESSED);
-        item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::INACTIVE);
-        item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::RELEASED);
-        item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::PRESSED);
-        item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::INACTIVE);
-        item->Resize(HORIZONTAL_RESOLUTION, TESTCASE_BUTTON_HEIGHT);
-    } else {
-        item = static_cast<UILabelButton*>(inView);
-    }
-    ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();
-    for (uint16_t i = 0; i < index; i++) {
-        node = node->next_;
-    }
-    if (listener == nullptr) {
-        listener = new BtnOnClickListListener();
-        if (listener == nullptr) {
-            return nullptr;
-        }
-        item->SetOnClickListener(listener);
-    } else {
-        item->SetOnClickListener(listener);
-    }
-    std::string strSongName = node->data_.sliceId;
-    std::string pureName = strSongName.substr(0, strSongName.rfind("."));
-    const char *songName = pureName.c_str();
-    item->SetText(songName);
-    item->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); // 24: means font size
-    item->SetViewIndex(index);
-    item->SetAlign(TEXT_ALIGNMENT_CENTER);
-    item->SetLabelPosition(24, 0); // 24: lable x-coordinate
-    LabelButtonSet();
-    return item;
-}
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+#include <string>\r
+#include "PlayersCaseListAdapter.h"\r
+#include "gfx_utils/list.h"\r
+#include "PlayersView.h"\r
+#include "PlayersPresenter.h"\r
+#include "wearable_log.h"\r
+#include "PlayersModel.h"\r
+#include "PlayerListitemView.h"\r
+#include "ui_resource_image.h"\r
+#include "common/image_cache_manager.h"\r
+namespace OHOS {\r
+constexpr uint16_t TESTCASE_BUTTON_HEIGHT = 64;\r
+constexpr uint16_t STYLE_BORDER_WIDTH_VALUE = 4;\r
+constexpr uint16_t STYLE_BORDER_RADIUS_VALUE = 12;\r
+static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333;\r
+\r
+static PlayersCaseListAdapter *g_PlayersCaseListAdapter{nullptr};\r
+PlayersCaseListAdapter::PlayersCaseListAdapter()\r
+{\r
+    g_PlayersCaseListAdapter = this;\r
+}\r
+\r
+PlayersCaseListAdapter::~PlayersCaseListAdapter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");\r
+    delete listener;\r
+    listener = nullptr;\r
+\r
+    g_PlayersCaseListAdapter = nullptr;\r
+\r
+    if(p_BtnOnClickListListener != nullptr)\r
+    {\r
+        delete p_BtnOnClickListListener;\r
+        p_BtnOnClickListListener = nullptr;\r
+    }\r
+}\r
+\r
+PlayersCaseListAdapter *PlayersCaseListAdapter::GetInstance(void)\r
+{\r
+    return g_PlayersCaseListAdapter;\r
+}\r
+\r
+uint16_t PlayersCaseListAdapter::GetCount()\r
+{\r
+    return PlayersListGroup::GetInstance()->GetCase().Size();\r
+}\r
+\r
+\r
+void BtnOnClickListListener::SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index)\r
+{\r
+    ImageInfo *imagePlaying = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAYING, PLAYER_IAMGES);\r
+    P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index]->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
+    P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetImageSrc(imagePlaying,nullptr);\r
+    //P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetViewId("playing");\r
+    P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index] = 1;\r
+}\r
+void BtnOnClickListListener::SongNotClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index)\r
+{\r
+    ImageInfo *imageDeleye  = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES);\r
+    P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index]->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+    P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetImageSrc(imageDeleye,nullptr);\r
+    //std::string viewId = "delete";\r
+    //P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetViewId(viewId.c_str());\r
+    P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index] = 0;\r
+}\r
+/// @brief 这个函数是一个按钮点击事件监听器的回调函数\r
+/// @param view \r
+/// @param event \r
+/// @return \r
+bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event)\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    PlayersCaseListAdapter *P_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();\r
+    //BtnOnListData该函数的作用是从传入的视图中提取相关数据\r
+    BtnOnListData(view);\r
+    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->SetPlayerDelSongViewStatus(true);\r
+        return false;\r
+    }\r
+    else if((&view == P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index_])){\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener sliceId_: %s.", sliceId_);\r
+    UNUSED(event);\r
+    int ret;\r
+    int32_t playerState;\r
+    uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");\r
+        return false;\r
+    }\r
+    // 标记当前播放歌曲index_\r
+    PlayersModel::GetInstance()->SetCurrentIndex(index_); //当前正在播放的歌曲\r
+    // 本地播放文件路径和状态\r
+    std::string strSrcMusic(APP_MUSIC_PATH);//"/user/music"\r
+    std::string tempStr("/");\r
+    std::string strName = sliceId_;\r
+    PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "uri: %s.", PlayersModel::GetInstance()->GetPlayerUri().c_str());\r
+    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
+    for(int i= 0;i<P_PlayersCaseListAdapter->GetCount();i++)\r
+    {\r
+        if(i != index_)\r
+        {\r
+           SongNotClick(P_PlayersCaseListAdapter,i);\r
+        }\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
+    // 刷新UI\r
+    RootView::GetInstance()->Invalidate();\r
+\r
+    state = playersView->GetPlayerButtonState();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state);\r
+    if (state == UICheckBox::UICheckBoxState::UNSELECTED) {\r
+        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+        /* start play */\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play");\r
+        PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
+        if (playerState == PlayerStates::PLAYER_PAUSED) {\r
+            ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);\r
+        }\r
+        PlayersModel::GetInstance()->PlayerStat(); // 播放\r
+    } else if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");\r
+        PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
+        if (playerState == PlayerStates::PLAYER_STARTED) {\r
+            ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);\r
+            ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);\r
+        }\r
+        PlayersModel::GetInstance()->PlayerStat();\r
+    }\r
+    }\r
+    return true;\r
+}\r
+\r
+void BtnOnClickListListener::BtnOnListData(UIView& view)\r
+{\r
+    //index_ = view.GetViewIndex();\r
+    index_ = view.GetParent()->GetViewIndex(); //list中如果其他组件,想点击里面组件,得先获取父视图\r
+    List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
+    ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();\r
+    for (uint16_t i = 0; i < index_; i++) {\r
+        node = node->next_;\r
+    }\r
+    if(node != nullptr)\r
+    {\r
+        sliceId_ = node->data_.sliceId;\r
+    }\r
+}\r
+\r
+UIView *PlayersCaseListAdapter::GetView(UIView* inView, int16_t index)\r
+{\r
+    List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
+    if (playersCaseList.IsEmpty()) {\r
+        return nullptr;\r
+    }\r
+    if ((index > playersCaseList.Size() - 1) || (index < 0)) {\r
+        return nullptr;\r
+    }\r
+    ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();\r
+    for (uint16_t i = 0; i < index; i++) {\r
+        node = node->next_;\r
+    }\r
+    std::string strSongName = node->data_.sliceId;\r
+    std::string pureName = strSongName.substr(0, strSongName.rfind("."));\r
+    const char *songName = pureName.c_str();\r
+    PlayerListItemView *listitem = nullptr;\r
+    PlayerListItem listitemData;\r
+    listitemData.index = index;\r
+    listitemData.label = songName;\r
+    if (inView == nullptr) {\r
+        listitem = new PlayerListItemView();\r
+    } else {\r
+        listitem = static_cast<PlayerListItemView*>(inView);\r
+    }\r
+    listitem->SetItemInfo(listitemData);\r
+    if(listener == nullptr)\r
+    {\r
+        listener = new BtnOnClickListListener();\r
+        p_BtnOnClickListListener = new BtnOnClickListListener();\r
+        if(listener == nullptr)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "listener == nullptr");\r
+            return nullptr;\r
+        }\r
+        //listitem->SetOnClickListener(listener);\r
+        p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener);\r
+    }\r
+    else \r
+    {\r
+        //listitem->SetOnClickListener(listener);\r
+        p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener);\r
+    }\r
+    return listitem;\r
+    \r
+}\r
+} // namespace OHOS\r
index f0509f8..ce172b3 100755 (executable)
@@ -170,6 +170,18 @@ int16_t PlayersModel::GetCurrentIndex(void)
 void PlayersModel::SetCurrentIndex(int16_t value)
 {
     currentIndex = value;
+    /* -------------------------------------------------------------------------- */
+    m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();
+    m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongClick(m_PlayersCaseListAdapter,currentIndex);
+    for(int i= 0;i<m_PlayersCaseListAdapter->GetCount();i++)
+    {
+        if(i != currentIndex)
+        {
+           m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongNotClick(m_PlayersCaseListAdapter,i);
+        }
+    }
+    PlayersView::GetInstance()->GetPlayerList();
+    /* -------------------------------------------------------------------------- */
 }
 
 int16_t PlayersModel::GetPlayerModel(void)
@@ -251,7 +263,7 @@ int PlayersModel::PlayerInit(void)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerInit playersPresenter GetInstance fail");
         return OHOS_FAILURE;
     }
-    playersPresenter->SetTitleSetText(songName);
+    // playersPresenter->SetTitleSetText(songName);
     playersPresenter->SetPlaybackProgress(circleProgress);
     playersPresenter->SetPlayerState(playButtonState);
     // PlayerStat();
@@ -278,7 +290,7 @@ void PlayersModel::NextSong(int16_t index)
     const char *songName = pureName.c_str();
     PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance();
     if (playersPresenter != nullptr) {
-        playersPresenter->SetTitleSetText(songName);
+        // playersPresenter->SetTitleSetText(songName);
         playersPresenter->SetPlaybackProgress(0); // 0:进度0%
     }
     int32_t ret;
index c240f6e..9f3c9c0 100755 (executable)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-#include <sys/types.h>
-#include <dirent.h>
-#include <iostream>
-#include <cstdlib>
-#include <time.h>
-#include "PlayersPresenter.h"
-#include "wearable_log.h"
-#include "common/image_cache_manager.h"
-#include "UiConfig.h"
-#include "ui_resource_image.h"
-#include "PlayersView.h"
-#include "PlayersModel.h"
-#include "BluetoothPresenter.h"
-#include "graphic_service.h"
-#include "PhoneService.h"
-
-#include "bts_avrcp_controller.h"
-#include "bts_avrcp_target.h"
-
-namespace OHOS {
-static PlayerOnDragListener *g_pPlayerOnDragListener = nullptr;
-static JumpView *g_pJumpView = nullptr;
-static PlayersPresenter *g_pPlayersPresenter = nullptr;
-
-PlayersPresenter *PlayersPresenter::GetInstance(void)
-{
-    return g_pPlayersPresenter;
-}
-
-PlayersPresenter::PlayersPresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter");
-    g_pPlayersPresenter = this;
-}
-
-PlayersPresenter::~PlayersPresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayersPresenter");
-    g_pPlayersPresenter = nullptr;
-}
-
-JumpView *JumpView::GetInstance(void)
-{
-    return g_pJumpView;
-}
-
-JumpView::JumpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::JumpView");
-    g_pJumpView = this;
-    preProcessView[BLUETOOTHEARPHONEVIEW] = &JumpView::ChangeBluetoothEarPhoneView;
-    preProcessView[BLUETOOTHEARLISTVIEW] = &JumpView::ChangeBluetoothEarListView;
-    preProcessView[BLUETOOTHDEVICELISTVIEW] = &JumpView::ChangeBluetoothDeviceListView;
-    preProcessView[BLUETOOTHEOPTIONSVIEW] = &JumpView::ChangeBluetoothOptionsView;
-    preProcessView[BLUETOOTHRECONNECTVIEW] = &JumpView::ChangeBluetoothReconnectView;
-    preProcessView[TIPSSUCCMESSAGEVIEW] = &JumpView::ChangeTipsSuccMessageView;
-    preProcessView[TIPSCONNFAILMESSAGEVIEW] = &JumpView::ChangeTipsConnFailMessageView;
-    preProcessView[TIPSFAILMESSAGEVIEW] = &JumpView::ChangeTipsFailMessageView;
-    preProcessView[BLUETOOTHEVIEW] = &JumpView::ChangeBluetoothView;
-}
-
-JumpView::~JumpView()
-{
-    delete bluetoothEarPhoneView;
-    bluetoothEarPhoneView = nullptr;
-    delete bluetoothOptionsView;
-    bluetoothOptionsView = nullptr;
-    delete bluetoothEarListView;
-    bluetoothEarListView = nullptr;
-    delete bluetoothReconnectView;
-    bluetoothReconnectView = nullptr;
-    delete bluetoothDeviceListView;
-    bluetoothDeviceListView = nullptr;
-    delete tipsSuccMessageView;
-    tipsSuccMessageView = nullptr;
-    delete tipsConnFailMessageView;
-    tipsConnFailMessageView = nullptr;
-    delete tipsFailMessageView;
-    tipsFailMessageView = nullptr;
-    delete bluetoothView;
-    bluetoothView = nullptr;
-    int i;
-    for (i = BLUETOOTHEARPHONEVIEW; i <= BLUETOOTHEJUMP_MAX; i++) {
-        container[i] = nullptr;
-    }
-    g_pJumpView = nullptr;
-}
-
-bool JumpView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarPhoneView");
-        bluetoothEarPhoneView = new BluetoothEarPhoneView();
-        if (bluetoothEarPhoneView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView new fail");
-            return false;
-        }
-        UIViewGroup *group = bluetoothEarPhoneView->InitShowUpView(); // init view
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    // 动画开始
-    bluetoothEarPhoneView->BtAnimatorStart();
-    // 蓝牙扫描&清空列表
-    bluetoothEarPhoneView->BtEnable();
-    return true;
-}
-
-bool JumpView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)
-{
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarListView");
-        bluetoothEarListView = new BluetoothEarListView();
-        if (bluetoothEarListView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView new fail");
-            return false;
-        }
-        UIViewGroup *group = bluetoothEarListView->InitShowUpView(); // init view
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    } else {
-        // 刷新列表
-        UIList *scanList = bluetoothEarListView->GetScanUIList();
-        if (scanList == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");
-            return false;
-        }
-        scanList->RefreshList();
-    }
-    ResetEarListView(hideView);
-    return true;
-}
-
-bool JumpView::ChangeBluetoothView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothView");
-        bluetoothView = new BluetoothView();
-        if (bluetoothView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = bluetoothView->LoadBluetoothView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeBluetoothView");
-    BluetoothModel::GetInstance()->SetTagConnectView(false);
-    return true;
-}
-
-bool JumpView::ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothOptionsView");
-        bluetoothOptionsView = new BluetoothOptionsView();
-        if (bluetoothOptionsView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = bluetoothOptionsView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool JumpView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothDeviceListView");
-        bluetoothDeviceListView = new BluetoothDeviceListView();
-        if (bluetoothDeviceListView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    } else {
-        // 刷新列表
-        UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();
-        if (deviceList == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");
-            return false;
-        }
-        deviceList->RefreshList();
-    }
-    BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();
-    if (bluetoothDeviceListView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothDeviceListView new fail");
-        return false;
-    }
-    bluetoothDeviceListView->RefreshText();
-    
-    return true;
-}
-
-bool JumpView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothReconnectView");
-        bluetoothReconnectView = new BluetoothReconnectView();
-        if (bluetoothReconnectView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothReconnectView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = bluetoothReconnectView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    BluetoothModel::GetInstance()->SetTagDisconnectView(true);
-    BluetoothReconnectView::GetInstance()->RefreshBluetoothNameLabel();
-    bluetoothReconnectView->BtReconnectStart();
-    return true;
-}
-
-void JumpView::ResetEarListView(int16_t hideView)
-{
-    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
-    if (bluetoothEarListView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ResetEarListView bluetoothEarListView == nullptr");
-        return;
-    }
-    bluetoothEarListView->SetCancelConnedRequestButtonRemove();
-    if (hideView == BLUETOOTHEARPHONEVIEW) {
-        bluetoothEarListView->SetTitleLabel("正在扫描");
-        bluetoothEarListView->SetNewEquipmentButtonRemove();
-    } else if (hideView == TIPSCONNFAILMESSAGEVIEW) {
-        bluetoothEarListView->SetTitleLabel("扫描完成");
-        bluetoothEarListView->SetNewEquipmentButtonAdd();
-        RootView::GetInstance()->Invalidate();
-    }
-}
-
-bool JumpView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsSuccMessageView");
-        tipsSuccMessageView = new TipsSuccMessageView();
-        if (tipsSuccMessageView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsSuccMessageView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = tipsSuccMessageView->ShowUpViewInit();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool JumpView::ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView");
-        tipsConnFailMessageView = new TipsConnFailMessageView();
-        if (tipsConnFailMessageView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsConnFailMessageView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = tipsConnFailMessageView->ShowUpViewInit();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();
-    if (bluetoothReconnectView == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");
-    } else {
-            container[BLUETOOTHRECONNECTVIEW]->SetVisible(false);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView SetVisible(false)");
-    }
-    return true;
-}
-
-bool JumpView::ChangeTipsFailMessageView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsFailMessageView");
-        tipsFailMessageView = new TipsFailMessageView();
-        if (tipsFailMessageView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsFailMessageView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool JumpView::CheckViewParam(int16_t hideView, int16_t showView)
-{
-    if (showView < 0 || showView >= BLUETOOTHEJUMP_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");
-        return false;
-    }
-
-    if (hideView < 0 || hideView > BLUETOOTHEJUMP_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");
-        return false;
-    }
-
-    if (hideView != BLUETOOTHEJUMP_MAX) {
-        if (container[hideView] == nullptr) {
-            return false;
-        }
-        container[hideView]->SetVisible(false);
-    }
-
-    if (hideView == BLUETOOTHEARLISTVIEW || showView == BLUETOOTHEARLISTVIEW) {
-        BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);
-    }
-
-    return true;
-}
-
-void JumpView::ChangeView(int16_t hideView, int16_t showView)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView %d", hideView);
-    if (CheckViewParam(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView check param err %d %d.", hideView, showView);
-        return;
-    }
-
-    PreprosssChangeView tmpPreProcessView = preProcessView[showView];
-
-    if ((this->*tmpPreProcessView)(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView %d %d failed", showView, hideView);
-        return;
-    }
-    container[showView]->SetVisible(true);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView end!!!%d", showView);
-    RootView::GetInstance()->Invalidate();
-    BluetoothModel::GetInstance()->SetCurView(showView);
-}
-
-PlayersListGroup::~PlayersListGroup()
-{
-    if (playersCaseList_ != nullptr) {
-        playersCaseList_->Clear();
-    }
-    delete playersCaseList_;
-    playersCaseList_ = nullptr;
-}
-
-void PlayersListGroup::AddCase(PlayerCaseInfo testCaseInfo)
-{
-    if (playersCaseList_ == nullptr) {
-        return;
-    }
-    playersCaseList_->PushBack(testCaseInfo);
-}
-
-void PlayersListGroup::SetUpListCase()
-{
-    int16_t ret;
-    if (playersCaseList_ == nullptr) {
-        playersCaseList_ = new List<PlayerCaseInfo>();
-        if (playersCaseList_ == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersListGroup playersCaseList_ new fail");
-            return;
-        }
-    }
-    playersCaseList_->Clear();
-    ret = GetAllFiles(playersCaseList_);
-    if (ret == OHOS_FAILURE) {
-        return;
-    }
-}
-
-List<PlayerCaseInfo>& PlayersListGroup::GetCase()
-{
-    return *playersCaseList_;
-}
-
-char *PlayersListGroup::GetCase(int16_t index)
-{
-    if (index < 0 || playersCaseList_ == nullptr) {
-        return nullptr;
-    }
-    ListNode<PlayerCaseInfo> *node = playersCaseList_->Begin();
-    while (node != playersCaseList_->End()) {
-        if (index == node->data_.index) {
-            return node->data_.sliceId;
-        }
-        node = node->next_;
-    }
-    return nullptr;
-}
-
-// 读取文件夹下文件名信息
-int PlayersListGroup::GetAllFiles(List<PlayerCaseInfo> *playersCaseList)
-{
-    int ret;
-    int i{0};
-    struct dirent *direntp;
-    struct PlayerCaseInfo playerCaseInfo;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles");
-    // 打开目录
-    DIR *dirp = opendir(APP_MUSIC_PATH);
-    // 遍历文件
-    if (dirp != NULL) {
-        while ((direntp = readdir(dirp)) != NULL) {
-            ret = memcpy_s(playerCaseInfo.sliceId, DEC_NUM_256, direntp->d_name, DEC_NUM_256);
-            if (ret != OHOS_SUCCESS) {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "memcpy_s err %d.", ret);
-                closedir(dirp);
-                return OHOS_FAILURE;
-            }
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "song Name %s.", playerCaseInfo.sliceId);
-            playerCaseInfo.index = i;
-            i++;
-            playersCaseList->PushBack(playerCaseInfo);
-        }
-    } else {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::opendir err!");
-        return OHOS_FAILURE;
-    }
-    // 关闭目录
-    closedir(dirp);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles end!");
-    return OHOS_SUCCESS;
-}
-
-ButtonOnClickListener::~ButtonOnClickListener()
-{
-    delete volumeSettingView;
-    volumeSettingView = nullptr;
-}
-
-// Button OnClick
-void ButtonOnClickListener::PlayerButtonOnClick()
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");
-        return;
-    }
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerButton OnClick");
-    uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
-    int32_t playerState;
-    int32_t connCtState = avrcp_ct_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr());
-    int32_t connTgState = avrcp_tg_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr());
-
-    state = playersView->GetPlayerButtonState();
-    if (PlayersModel::GetInstance()->GetPlayerCtr() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersModel::GetInstance()->GetPlayerCtr() nullptr");
-        return;
-    }
-    PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "buttonState = %d playerState = %d", state, playerState);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "connCtState = %d connTgState = %d", connCtState, connTgState);
-
-    if (GetCurrCallNum() != 0 && GetScoConnectState() == HFP_SCO_STATE_CONNECTED) {
-        if (state == UICheckBox::UICheckBoxState::SELECTED) {
-            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
-            playersView->GetPlayerButton()->Invalidate();
-        } else {
-            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
-            playersView->GetPlayerButton()->Invalidate();
-        }
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PlayerButtonOnClick] calling phone");
-        return;
-    }
-    if (state == UICheckBox::UICheckBoxState::SELECTED) {
-        /* start play */
-        PlayersModel::GetInstance()->ConnectBtAndLocalPlay(connCtState, connTgState, playerState);
-    } else if (state == UICheckBox::UICheckBoxState::UNSELECTED) {
-        PlayersModel::GetInstance()->ConnectBtAndLocalPause(connCtState, connTgState);
-    }
-}
-
-void ButtonOnClickListener::SoundButtonOnClick()
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick playersView nullptr err");
-        return;
-    }
-    if (volumeSettingView == nullptr) {
-        volumeSetting = new VolumeSettingView();
-        if (volumeSetting == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting nullptr err");
-            return;
-        }
-        if (volumeSetting->SetUpVolume() == false) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting SetUpVolume fail");
-            return;
-        }
-        volumeSetting->GetProgress()->SetValue(AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC));
-        if (AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC) == 0) {
-            ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);
-            volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);
-        }
-        volumeSettingView = volumeSetting;
-        RootView::GetInstance()->Add(volumeSettingView);
-    }
-    VolumeSliderEventListener *volumeSliderEventListener = VolumeSliderEventListener::GetInstance();
-    if (volumeSliderEventListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick volumeSliderEventListener nullptr err");
-        return;
-    }
-    volumeSliderEventListener->SetPlayerCoefficients(VOLUMEPLAYERS); // 进度条系数
-    playersView->SetVisible(false);
-    volumeSettingView->SetVisible(true);
-    // 刷新UI
-    RootView::GetInstance()->Invalidate();
-}
-
-void ButtonOnClickListener::OptionsButtonOnClick()
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OptionsButtonOnClick playersView nullptr err");
-        return;
-    }
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    playersView->SetVisible(false);
-    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEJUMP_MAX,
-                         JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW);
-}
-
-void ButtonOnClickListener::PlayerModelButtonOnClick()
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerModelButtonOnClick playersView nullptr err");
-        return;
-    }
-    switch (PlayersModel::GetInstance()->GetPlayerModel()) {
-        case LOOP:
-            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_LOOP); // 循环
-            break;
-        case SEQUENCE:
-            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_SEQUENCE); // 顺序
-            break;
-        case REPEATS:
-            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_REPEATS); // 重复
-            break;
-        case RANDOM:
-            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_RANDOM); // 随机
-            break;
-        default:
-            break;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());
-}
-
-bool ButtonOnClickListener::OnClick(UIView& view, const ClickEvent& event)
-{
-    UNUSED(view);
-    UNUSED(event);
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::GetInstance");
-        return false;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener OnClick");
-    if (view_ == (UIView *)playersView->GetPlayerButton()) {
-        PlayerButtonOnClick();
-    } else if (view_ == (UIView *)playersView->GetNextButton()) {
-        if (playersView->GetPlaybackProgress() != nullptr) {
-            playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%
-            playersView->GetPlaybackProgress()->Invalidate();
-        }
-        PlayersModel::GetInstance()->LoopingPlayout();
-    } else if (view_ == (UIView *)playersView->GetPreButton()) {
-        if (playersView->GetPlaybackProgress() != nullptr) {
-            playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%
-            playersView->GetPlaybackProgress()->Invalidate();
-        }
-        PlayersModel::GetInstance()->PreviousPlayout();
-    } else if (view_ == (UIView *)playersView->GetPlayerModelButton()) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModelButton OnClick");
-        PlayersModel::GetInstance()->SetPlayerModelAddOne();
-        if (PlayersModel::GetInstance()->GetPlayerModel() > RANDOM) {
-            PlayersModel::GetInstance()->SetPlayerModel(LOOP);
-        }
-        PlayerModelButtonOnClick();
-    } else if (view_ == (UIView *)playersView->GetSoundButton()) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "soundButton OnClick");
-        SoundButtonOnClick();
-    } else if (view_ == (UIView *)playersView->GetOptionsButton()) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "optionsButton OnClick");
-        OptionsButtonOnClick();
-    }
-    return true;
-}
-
-// 播放器回调
-PlayerCallbackImpl::PlayerCallbackImpl()
-{
-}
-
-PlayerCallbackImpl::~PlayerCallbackImpl()
-{
-}
-
-void PlayerCallbackImpl::OnPlaybackComplete()
-{
-    // 此处实现代码用于处理文件播放完成的事件
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnPlaybackCompleten");
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView != nullptr) {
-        if (playersView->GetPlaybackProgress() != nullptr) {
-            playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%
-            playersView->GetPlaybackProgress()->Invalidate();
-        }
-    }
-    usleep(20000);
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&PlayersModel::PlaySwitching, PlayersModel::GetInstance()));
-}
-
-void PlayerCallbackImpl::OnError(int32_t errorType, int32_t errorCode)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnError test, errorType %d, errorCode %d", errorType, errorCode);
-    // 此处实现代码处理错误事件
-}
-
-void PlayerCallbackImpl::OnInfo(int type, int extra)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnInfo test, type %d, extra %d.", type, extra);
-    // 此处实现代码处理普通事件
-}
-
-void PlayerCallbackImpl::OnRewindToComplete()
-{
-    // 此处实现代码处理进度控制完成的事件
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnRewindToComplete test");
-}
-
-// 音频中断
-PlayerInterruptListener::PlayerInterruptListener()
-{
-}
-
-PlayerInterruptListener::~PlayerInterruptListener()
-{
-}
-
-void PlayerInterruptListener::SetOwner(std::shared_ptr<Player> player)
-{
-    player_ = player;
-}
-
-std::shared_ptr<Player> PlayerInterruptListener::GetPlayer()
-{
-    return player_;
-}
-
-void PlayerInterruptListener::RestFlag()
-{
-    isPaused_ = false;
-    isDelayed_ = false;
-    isResumed_ = false;
-    isBeginStopped_ = false;
-    isEndStopped_ = false;
-}
-
-void PlayerInterruptListener::SetPaused(bool value)
-{
-    isPaused_ = value;
-}
-
-void PlayerInterruptListener::SetResumed(bool value)
-{
-    isResumed_ = value;
-}
-
-bool PlayerInterruptListener::IsPaused()
-{
-    return isPaused_;
-}
-
-bool PlayerInterruptListener::IsDelayed()
-{
-    return isDelayed_;
-}
-
-bool PlayerInterruptListener::IsResumed()
-{
-    return isResumed_;
-}
-
-bool PlayerInterruptListener::IsBeginStopped()
-{
-    return isBeginStopped_;
-}
-
-bool PlayerInterruptListener::IsEndStopped()
-{
-    return isEndStopped_;
-}
-
-static void PlayerPostGraphicEvent(void (*fun)(void))
-{
-    GraphicService::GetInstance()->PostGraphicEvent(*fun);
-}
-
-static void Pause(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] start");
-    int32_t state;
-    int32_t ret;
-    std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =
-        OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();
-    if (PlayerIntrptListener == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");
-        return;
-    }
-
-    std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();
-    if (player.get() == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] player is nullptr");
-        return;
-    }
-
-    PlayersView *playersView = PlayersView::GetInstance();
-
-    player->GetPlayerState(state);
-    if (state == PLAYER_STARTED) {
-        ret = player->Pause();
-        if (ret == 0) {
-            if (playersView == nullptr) {
-                PlayersModel::GetInstance()->SetPlayButtonState(false);
-            } else {
-                playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
-                playersView->GetPlayerButton()->Invalidate();
-            }
-            PlayerIntrptListener->RestFlag();
-            PlayerIntrptListener->SetPaused(true);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer]");
-        }
-    }
-}
-
-void PlayerInterruptListener::PausePlayer(void)
-{
-    PlayerPostGraphicEvent(Pause);
-}
-
-static void Resume(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::Resume] start");
-    int32_t state;
-    int32_t ret;
-    std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =
-        OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();
-    if (PlayerIntrptListener == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");
-        return;
-    }
-
-    std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();
-    if (player.get() == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] player is nullptr");
-        return;
-    }
-
-    PlayersView *playersView = PlayersView::GetInstance();
-    
-    player->GetPlayerState(state);
-    if (state == PLAYER_PAUSED && PlayerIntrptListener->IsPaused() == true) {
-        ret = player->Play();
-        if (ret == 0) {
-            if (playersView == nullptr) {
-                PlayersModel::GetInstance()->SetPlayButtonState(true);
-            } else {
-                playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
-                playersView->GetPlayerButton()->Invalidate();
-            }
-            PlayerIntrptListener->RestFlag();
-            PlayerIntrptListener->SetResumed(true);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer]");
-        }
-    }
-}
-
-void PlayerInterruptListener::ResumePlayer(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] start");
-    usleep(50000); // 确保界面切换完成
-    if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
-        (GetCurrCallState() != HFP_HF_CALL_STATE_FINISHED && GetScoConnectState() == HFP_SCO_STATE_CONNECTED)) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] this is in calling");
-        return; // 通话界面,禁止音乐恢复播放
-    }
-    AudioRelease(); // 适配某些机型不触发SCO
-
-    PlayerPostGraphicEvent(Resume);
-}
-
-static void Stop(void)
-{
-    PlayersModel::GetInstance()->PlayerStop();
-    PlayersModel::GetInstance()->ClearActivateAudioInterrupt();
-}
-
-void PlayerInterruptListener::StopPlayer(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::StopPlayer] start");
-    PlayerPostGraphicEvent(Stop);
-}
-
-void PlayerInterruptListener::OnInterrupt(int32_t type, int32_t hint)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::] OnInterrupt go in, type %d, hint %d.", type, hint);
-
-    if (type == INTERRUPT_TYPE_BEGIN && hint == INTERRUPT_HINT_PAUSE) {
-        PausePlayer();
-    }
-
-    if (type == INTERRUPT_TYPE_END && hint == INTERRUPT_HINT_RESUME) {
-        ResumePlayer();
-    }
-
-    if (hint == INTERRUPT_HINT_STOP) {
-        RestFlag();
-        if (type == INTERRUPT_TYPE_BEGIN) {
-            isBeginStopped_ = true;
-            StopPlayer();
-        } else if (type == INTERRUPT_TYPE_END) {
-            isEndStopped_ = true;
-        }
-    }
-}
-
-PlayerOnDragListener::PlayerOnDragListener()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener");
-    g_pPlayerOnDragListener = this;
-}
-
-PlayerOnDragListener::~PlayerOnDragListener()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayerOnDragListener");
-    g_pPlayerOnDragListener = nullptr;
-}
-
-PlayerOnDragListener *PlayerOnDragListener::GetInstance(void)
-{
-    return g_pPlayerOnDragListener;
-}
-
-void PlayerOnDragListener::OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangeView=%d showView=%d", hideView, showView);
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        if (isStopScan == true) {
-            BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-            if (bluetoothEarPhoneView == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView GetInstance fail");
-                return;
-            }
-            bluetoothEarPhoneView->BtAnimatorStop();
-            bluetoothEarPhoneView->StopBtDiscovery();
-        }
-        // 跳转设置页面
-        JumpView *jumpView = JumpView::GetInstance();
-        if (jumpView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-            return;
-        }
-        jumpView->ChangeView(hideView, showView);
-    }
-}
-
-//增加按键事件
-bool  PlayerOnDragListener::OnKeyAct(UIView& view, const KeyEvent& event)
-{
-        WEARABLE_LOGD("","into the view is: %s\n", typeid(view).name());
-        uint16 keyID = event.GetKeyId();
-        WEARABLE_LOGD("","into key! keyID %u\n",keyID);
-       #if 0
-               //如果是power键就返回上一级
-               if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
-               {
-                       uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-                       NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-               }
-       #endif
-               //目前只有一个按键。直接切换
-               uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-               NativeAbility::GetInstance().ChangeSlice(preSlice);
-               return true;
-}
-
-void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangBluetoothView");
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DIRECTION_LEFT_TO_RIGHT");
-        PlayersView *playersView = PlayersView::GetInstance();
-        if (playersView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");
-            return;
-        }
-        BluetoothView *bluetoothView = BluetoothView::GetInstance();
-        if (bluetoothView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView GetInstance fail");
-            return;
-        }
-        bluetoothView->group->SetVisible(false);
-        playersView->SetVisible(true);
-        // 刷新UI
-        RootView::GetInstance()->Invalidate();
-    }
-}
-
-void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event)
-{
-    bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();
-    if (ret == true) {
-        OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,
-                        JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, true);
-    } else {
-        OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,
-                        JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true);
-    }
-}
-
-void PlayerOnDragListener::DropEarListView(const DragEvent& event)
-{
-    bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();
-    if (ret == true) {
-        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView Addr: %02x%02x%02x%02x%02x%02x",
-                    caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */
-                    caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */
-        ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);
-        if (ret == false) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView gap_disconnect_remote_device false");
-        }
-    }
-    BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();
-    if (pbItermView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDragEnd The GetConnectionView nullptr.");
-    } else {
-        pbItermView->ConnectAnimatorStop();
-        BluetoothModel::GetInstance()->SetConnectionView(nullptr);
-    }
-    OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,
-                    JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true);
-}
-
-bool PlayerOnDragListener::OnDragEnd(UIView& view, const DragEvent& event)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::OnDragEnd- %s", view.GetViewId());
-    if (view.GetViewId() == nullptr) {
-        return true;
-    }
-    if (strcmp(view.GetViewId(), BLUETOOTH_EAR_PHONE_VIEW) == 0) {
-        DropEarPhoneView(event);
-    } else if (strcmp(view.GetViewId(), TIPS_SUCC_MESSAGE_VIEW) == 0) {
-        OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,
-                        JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);
-    } else if (strcmp(view.GetViewId(), TIPS_FAIL_MESSAGE_VIEW) == 0) {
-        OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,
-                        JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);
-    } else if (strcmp(view.GetViewId(), TIPS_CONN_FAIL_MESSAGE_VIEW) == 0) {
-        CorrespondingJump(event, JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW);
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_EARLIST_VIEW) == 0) {
-        DropEarListView(event);
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_RECONNECT_VIEW) == 0) {
-        BluetoothModel::GetInstance()->SetTagDisconnectView(false);
-        CorrespondingJump(event, JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);
-        BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();
-        if (bluetoothReconnectView != nullptr) {
-            bluetoothReconnectView->BtReconnectStop();
-        }
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONS_VIEW) == 0) {
-        OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
-                        JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_VIEW) == 0) {
-        OnDragChangBluetoothView(event);
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_DEVICE_LIST_VIEW) == 0) {
-        OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
-                        JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, false);
-    }
-    return true;
-}
-
-
-void PlayerOnDragListener::CorrespondingJump(const DragEvent& event, int16_t hideView)
-{
-    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();
-    if (bluetoothModel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");
-            return;
-        }
-    if (bluetoothModel->GetTagReconnectJump() == true) {
-        OnDragChangView(event, hideView,
-                        JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW, false);
-    } else {
-        std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();
-        bool ret = bluetoothScanList.empty();
-        if (ret != true) {
-            OnDragChangView(event, hideView,
-                            JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW, false);
-        } else {
-            OnDragChangView(event, hideView,
-                            JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);
-        }
-    }
-    return;
-}
-
-bool PlayerOnDragListener::OnDrag(UIView& view, const DragEvent& event)
-{
-    UNUSED(view);
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        PlayersView *playersView = PlayersView::GetInstance();
-        if (playersView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
-            return false;
-        }
-        playersView->SetPlayerListGroupStatus(false);
-        RootView::GetInstance()->Invalidate();
-    }
-    return false;
-}
-
-void PlayersPresenter::OnClickRescanButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RescanButtonOnClickListener OnClick");
-    // 跳转正在搜索界面
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,
-                         JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
-    return;
-}
-void PlayersPresenter::OnClickNewEquipmentButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NewEquipmentButtonOnClickListener OnClick");
-    BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(true);
-    // 跳转正在搜索界面
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
-                         JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
-    return;
-}
-
-void PlayersPresenter::OnClickCancelConnedRequestButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelConnedRequestButton OnClick");
-    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton Addr: %02x%02x%02x%02x%02x%02x",
-                caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */
-                caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */
-    bool ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);
-    if (ret == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClickCancelConnedRequestButton DisconnectRemoteDevice false");
-    }
-    BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);
-    // 刷新列表
-    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
-    if (bluetoothEarListView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");
-        return;
-    }
-    if (bluetoothEarListView->GetScanUIList() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");
-        return;
-    }
-    bluetoothEarListView->GetScanUIList()->RefreshList();
-    bluetoothEarListView->SetCancelConnedRequestButtonRemove();
-    bluetoothEarListView->SetTitleLabel("扫描完成");
-
-    BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();
-    if (pbItermView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");
-        return;
-    }
-    pbItermView->ConnectAnimatorStop();
-    BluetoothModel::GetInstance()->SetConnectionView(nullptr);
-    bluetoothEarListView->SetNewEquipmentButtonAdd();
-    RootView::GetInstance()->Invalidate();
-    return;
-}
-
-void PlayersPresenter::OnClickButtonUnpair(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");
-    BluetoothModel::GetInstance()->SetTagConnectNew(false);
-    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
-    if (bluetoothOptionsView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");
-        return;
-    }
-    bluetoothOptionsView->SetUnpair(); // 取消配对
-    // 删除对应设备列表节点
-    bd_addr_t bdAddr = bluetoothOptionsView->GetCurrentAddr();
-    List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
-    ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();
-    if (node == nullptr) {
-        return;
-    }
-    while (node != bluetoothCaseList.End()) {
-        if ((bdAddr.addr[0] == node->data_.addr[0]) && (bdAddr.addr[1] == node->data_.addr[1])
-            && (bdAddr.addr[2] == node->data_.addr[2]) && (bdAddr.addr[3] == node->data_.addr[3])
-            && (bdAddr.addr[4] == node->data_.addr[4]) && (bdAddr.addr[5] == node->data_.addr[5])) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bdAddr true");
-            bluetoothCaseList.Remove(node);
-        }
-        node = node->next_;
-    }
-
-    // 跳转并刷新列表
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
-                         JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
-}
-
-void PlayersPresenter::OnClickButtonOptionOne(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
-    if (bluetoothOptionsView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");
-        return;
-    }
-    BluetoothModel::GetInstance()->SetBtStatus();
-    if (BluetoothModel::GetInstance()->GetAclConnected() == true) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() == true");
-        BluetoothModel::GetInstance()->SetTagConnectNew(false);
-        bluetoothOptionsView->SetBtDisconnect();
-        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
-                             JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
-    } else {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() ==false");
-        BluetoothModel::GetInstance()->SetTagReconnectJump(true);
-        // 重连动画
-        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
-                             JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);
-        // 判断是否正在连接
-        bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::ClickOptionsOneButton lastAddr: %02x%02x%02x%02x%02x%02x",
-                    lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */
-                    lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */
-        bool ret = bt_is_acl_connected(lastAddr);
-        if (ret) {
-            BluetoothModel::GetInstance()->SetTagConnectNew(true);
-            bluetoothOptionsView->SetBtDisconnect();
-        } else {
-            BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-            bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickOptionsOneButton gap_connect_remote_device ret = %d", ret);
-        }
-    }
-}
-
-
-void PlayersPresenter::OnClickSetting(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SETTING_BUTTON");
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();
-    if (bluetoothModel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickSetting BluetoothModel GetInstance fail");
-        return;
-    }
-    bluetoothModel->SetTagConnectView(true);
-    bluetoothModel->SetBluetoothCalleridStatus(CALLERPLAYERS);
-    BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(false);
-    // 设备列表
-    List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
-    bool ret = bluetoothCaseList.IsEmpty();
-    if (ret != true) {
-        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,
-                             JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
-    } else {
-        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,
-                             JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
-    }
-}
-
-void PlayersPresenter::OnClickDelete(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_DELETE_BUTTON");
-}
-
-void PlayersPresenter::OnClickSuccBack(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SUCC_BACK_BUTTON");
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,
-                         JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
-}
-
-void PlayersPresenter::OnClickConnFailBack(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_CONN_FAIL_BACK_BUTTON");
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW,
-                         JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);
-    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-    bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClickConnFailBack gap_connect_remote_device ret = %d", ret);
-}
-
-void PlayersPresenter::OnClickFailBack(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_FAIL_BACK_BUTTON");
-    JumpView *jumpView = JumpView::GetInstance();
-    if (jumpView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-        return;
-    }
-    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,
-                         JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
-}
-
-struct PlayersOnClickMapper {
-    const char *id;
-    void (PlayersPresenter::*func)(void);
-};
-
-static const PlayersOnClickMapper OnClickMapper[] = {
-    {BLUETOOTH_RESCAN_BUTTON, &PlayersPresenter::OnClickRescanButton},
-    {BLUETOOTH_NEWEQUIPMENT_BUTTON, &PlayersPresenter::OnClickNewEquipmentButton},
-    {BLUETOOTH_CANCELCONNEDREQUEST_BUTTON, &PlayersPresenter::OnClickCancelConnedRequestButton},
-    {BLUETOOTH_UNPAIR_BUTTON, &PlayersPresenter::OnClickButtonUnpair},
-    {BLUETOOTH_OPTIONONE_BUTTON, &PlayersPresenter::OnClickButtonOptionOne},
-    {BLUETOOTH_SETTING_BUTTON, &PlayersPresenter::OnClickSetting},
-    {BLUETOOTH_DELETE_BUTTON, &PlayersPresenter::OnClickDelete},
-    {BLUETOOTH_SUCC_BACK_BUTTON, &PlayersPresenter::OnClickSuccBack},
-    {BLUETOOTH_CONN_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickConnFailBack},
-    {BLUETOOTH_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickFailBack}
-};
-
-bool PlayersPresenter::OnClick(UIView &view, const ClickEvent &event)
-{
-    uint16_t i;
-    UNUSED(event);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick %s", view.GetViewId());
-    for (i = 0; i < sizeof(OnClickMapper) / sizeof(OnClickMapper[0]); i++) {
-        if (strcmp(view.GetViewId(), OnClickMapper[i].id) == 0) {
-            (this->*(OnClickMapper[i].func))();
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick i %d", i);
-            return true;
-        }
-    }
-    return false;
-}
-
-void PlayersPresenter::SetTitleSetText(const char *text)
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText playersView GetInstance fail");
-        return;
-    }
-    if (playersView->GetTitleLabel() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText titleLabel nullptr");
-        return;
-    }
-    playersView->TitleSetText(text);
-}
-
-void PlayersPresenter::SetPlaybackProgress(int64_t value)
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlaybackProgress playersView GetInstance fail");
-        return;
-    }
-    UICircleProgress *playbackProgress = playersView->GetPlaybackProgress();
-    if (playbackProgress == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playbackProgress nullptr err");
-        return;
-    }
-    playbackProgress->SetValue(value);
-    playbackProgress->Invalidate();
-}
-
-void PlayersPresenter::SetPlayerState(bool value)
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlayerState playersView GetInstance fail");
-        return;
-    }
-    if (value != false) {
-        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
-        PlayersModel::GetInstance()->SetPlayButtonState(false);
-    }
-}
-
-void PlayersPresenter::PlayerbackReset(void)
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
-        return;
-    }
-    playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
-    playersView->GetPlayerButton()->Invalidate();
-}
-
-// 播放器按钮复位
-void PlayersPresenter::PlayerHeadsetReset(void)
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
-        return;
-    }
-
-    if (playersView->GetPlayerButtonState() == UICheckBox::UICheckBoxState::UNSELECTED) {
-        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
-    } else {
-        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
-    }
-
-    playersView->GetPlayerButton()->Invalidate();
-}
-
-void PlayersPresenter::ShowPlayerListGroup()
-{
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
-        return;
-    }
-    // 添加list
-    playersView->SetPlayerListGroupStatus(true);
-    // 刷新UI
-    RootView::GetInstance()->Invalidate();
-    return;
-}
-
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+#include <sys/types.h>\r
+#include <dirent.h>\r
+#include <iostream>\r
+#include <cstdlib>\r
+#include <time.h>\r
+#include "PlayersPresenter.h"\r
+#include "wearable_log.h"\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include "PlayersView.h"\r
+#include "PlayersModel.h"\r
+#include "BluetoothPresenter.h"\r
+#include "graphic_service.h"\r
+#include "PhoneService.h"\r
+\r
+#include "bts_avrcp_controller.h"\r
+#include "bts_avrcp_target.h"\r
+\r
+namespace OHOS {\r
+static PlayerOnDragListener *g_pPlayerOnDragListener = nullptr;\r
+static JumpView *g_pJumpView = nullptr;\r
+static PlayersPresenter *g_pPlayersPresenter = nullptr;\r
+\r
+PlayersPresenter *PlayersPresenter::GetInstance(void)\r
+{\r
+    return g_pPlayersPresenter;\r
+}\r
+\r
+PlayersPresenter::PlayersPresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter");\r
+    g_pPlayersPresenter = this;\r
+}\r
+\r
+PlayersPresenter::~PlayersPresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayersPresenter");\r
+    g_pPlayersPresenter = nullptr;\r
+}\r
+\r
+JumpView *JumpView::GetInstance(void)\r
+{\r
+    return g_pJumpView;\r
+}\r
+\r
+JumpView::JumpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::JumpView");\r
+    g_pJumpView = this;\r
+    preProcessView[BLUETOOTHEARPHONEVIEW] = &JumpView::ChangeBluetoothEarPhoneView;\r
+    preProcessView[BLUETOOTHEARLISTVIEW] = &JumpView::ChangeBluetoothEarListView;\r
+    preProcessView[BLUETOOTHDEVICELISTVIEW] = &JumpView::ChangeBluetoothDeviceListView;\r
+    preProcessView[BLUETOOTHEOPTIONSVIEW] = &JumpView::ChangeBluetoothOptionsView;\r
+    preProcessView[BLUETOOTHRECONNECTVIEW] = &JumpView::ChangeBluetoothReconnectView;\r
+    preProcessView[TIPSSUCCMESSAGEVIEW] = &JumpView::ChangeTipsSuccMessageView;\r
+    preProcessView[TIPSCONNFAILMESSAGEVIEW] = &JumpView::ChangeTipsConnFailMessageView;\r
+    preProcessView[TIPSFAILMESSAGEVIEW] = &JumpView::ChangeTipsFailMessageView;\r
+    preProcessView[BLUETOOTHEVIEW] = &JumpView::ChangeBluetoothView;\r
+}\r
+\r
+JumpView::~JumpView()\r
+{\r
+    delete bluetoothEarPhoneView;\r
+    bluetoothEarPhoneView = nullptr;\r
+    delete bluetoothOptionsView;\r
+    bluetoothOptionsView = nullptr;\r
+    delete bluetoothEarListView;\r
+    bluetoothEarListView = nullptr;\r
+    delete bluetoothReconnectView;\r
+    bluetoothReconnectView = nullptr;\r
+    delete bluetoothDeviceListView;\r
+    bluetoothDeviceListView = nullptr;\r
+    delete tipsSuccMessageView;\r
+    tipsSuccMessageView = nullptr;\r
+    delete tipsConnFailMessageView;\r
+    tipsConnFailMessageView = nullptr;\r
+    delete tipsFailMessageView;\r
+    tipsFailMessageView = nullptr;\r
+    delete bluetoothView;\r
+    bluetoothView = nullptr;\r
+    int i;\r
+    for (i = BLUETOOTHEARPHONEVIEW; i <= BLUETOOTHEJUMP_MAX; i++) {\r
+        container[i] = nullptr;\r
+    }\r
+    g_pJumpView = nullptr;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarPhoneView");\r
+        bluetoothEarPhoneView = new BluetoothEarPhoneView();\r
+        if (bluetoothEarPhoneView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView new fail");\r
+            return false;\r
+        }\r
+        UIViewGroup *group = bluetoothEarPhoneView->InitShowUpView(); // init view\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    // 动画开始\r
+    bluetoothEarPhoneView->BtAnimatorStart();\r
+    // 蓝牙扫描&清空列表\r
+    bluetoothEarPhoneView->BtEnable();\r
+    return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)\r
+{\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarListView");\r
+        bluetoothEarListView = new BluetoothEarListView();\r
+        if (bluetoothEarListView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView new fail");\r
+            return false;\r
+        }\r
+        UIViewGroup *group = bluetoothEarListView->InitShowUpView(); // init view\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    } else {\r
+        // 刷新列表\r
+        UIList *scanList = bluetoothEarListView->GetScanUIList();\r
+        if (scanList == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");\r
+            return false;\r
+        }\r
+        scanList->RefreshList();\r
+    }\r
+    ResetEarListView(hideView);\r
+    return true;\r
+}\r
+\r
+//切换到音乐来源视图\r
+bool JumpView::ChangeBluetoothView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothView");\r
+        bluetoothView = new BluetoothView();\r
+        if (bluetoothView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = bluetoothView->LoadMusicSourceView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeBluetoothView");\r
+    BluetoothModel::GetInstance()->SetTagConnectView(false);\r
+    return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothOptionsView");\r
+        bluetoothOptionsView = new BluetoothOptionsView();\r
+        if (bluetoothOptionsView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = bluetoothOptionsView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothDeviceListView");\r
+        bluetoothDeviceListView = new BluetoothDeviceListView();\r
+        if (bluetoothDeviceListView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    } else {\r
+        // 刷新列表\r
+        UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
+        if (deviceList == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");\r
+            return false;\r
+        }\r
+        deviceList->RefreshList();\r
+    }\r
+    BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();\r
+    if (bluetoothDeviceListView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothDeviceListView new fail");\r
+        return false;\r
+    }\r
+    bluetoothDeviceListView->RefreshText();\r
+    \r
+    return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothReconnectView");\r
+        bluetoothReconnectView = new BluetoothReconnectView();\r
+        if (bluetoothReconnectView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothReconnectView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = bluetoothReconnectView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    BluetoothModel::GetInstance()->SetTagDisconnectView(true);\r
+    BluetoothReconnectView::GetInstance()->RefreshBluetoothNameLabel();\r
+    bluetoothReconnectView->BtReconnectStart();\r
+    return true;\r
+}\r
+\r
+void JumpView::ResetEarListView(int16_t hideView)\r
+{\r
+    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+    if (bluetoothEarListView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ResetEarListView bluetoothEarListView == nullptr");\r
+        return;\r
+    }\r
+    bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
+    if (hideView == BLUETOOTHEARPHONEVIEW) {\r
+        bluetoothEarListView->SetTitleLabel("正在扫描");\r
+        bluetoothEarListView->SetNewEquipmentButtonRemove();\r
+    } else if (hideView == TIPSCONNFAILMESSAGEVIEW) {\r
+        bluetoothEarListView->SetTitleLabel("扫描完成");\r
+        bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+        RootView::GetInstance()->Invalidate();\r
+    }\r
+}\r
+\r
+bool JumpView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsSuccMessageView");\r
+        tipsSuccMessageView = new TipsSuccMessageView();\r
+        if (tipsSuccMessageView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsSuccMessageView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = tipsSuccMessageView->ShowUpViewInit();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool JumpView::ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView");\r
+        tipsConnFailMessageView = new TipsConnFailMessageView();\r
+        if (tipsConnFailMessageView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsConnFailMessageView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = tipsConnFailMessageView->ShowUpViewInit();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
+    if (bluetoothReconnectView == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");\r
+    } else {\r
+            container[BLUETOOTHRECONNECTVIEW]->SetVisible(false);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView SetVisible(false)");\r
+    }\r
+    return true;\r
+}\r
+\r
+bool JumpView::ChangeTipsFailMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsFailMessageView");\r
+        tipsFailMessageView = new TipsFailMessageView();\r
+        if (tipsFailMessageView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsFailMessageView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool JumpView::CheckViewParam(int16_t hideView, int16_t showView)\r
+{\r
+    if (showView < 0 || showView >= BLUETOOTHEJUMP_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");\r
+        return false;\r
+    }\r
+\r
+    if (hideView < 0 || hideView > BLUETOOTHEJUMP_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");\r
+        return false;\r
+    }\r
+\r
+    if (hideView != BLUETOOTHEJUMP_MAX) {\r
+        if (container[hideView] == nullptr) {\r
+            return false;\r
+        }\r
+        container[hideView]->SetVisible(false);\r
+    }\r
+\r
+    if (hideView == BLUETOOTHEARLISTVIEW || showView == BLUETOOTHEARLISTVIEW) {\r
+        BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
+    }\r
+\r
+    return true;\r
+}\r
+\r
+void JumpView::ChangeView(int16_t hideView, int16_t showView)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView %d", hideView);\r
+    if (CheckViewParam(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView check param err %d %d.", hideView, showView);\r
+        return;\r
+    }\r
+\r
+    PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
+\r
+    if ((this->*tmpPreProcessView)(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView %d %d failed", showView, hideView);\r
+        return;\r
+    }\r
+    container[showView]->SetVisible(true);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView end!!!%d", showView);\r
+    RootView::GetInstance()->Invalidate();\r
+    BluetoothModel::GetInstance()->SetCurView(showView);\r
+}\r
+\r
+PlayersListGroup::~PlayersListGroup()\r
+{\r
+    if (playersCaseList_ != nullptr) {\r
+        playersCaseList_->Clear();\r
+    }\r
+    delete playersCaseList_;\r
+    playersCaseList_ = nullptr;\r
+}\r
+\r
+void PlayersListGroup::AddCase(PlayerCaseInfo testCaseInfo)\r
+{\r
+    if (playersCaseList_ == nullptr) {\r
+        return;\r
+    }\r
+    playersCaseList_->PushBack(testCaseInfo);\r
+}\r
+\r
+void PlayersListGroup::SetUpListCase()\r
+{\r
+    int16_t ret;\r
+    if (playersCaseList_ == nullptr) {\r
+        playersCaseList_ = new List<PlayerCaseInfo>();\r
+        if (playersCaseList_ == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersListGroup playersCaseList_ new fail");\r
+            return;\r
+        }\r
+    }\r
+    playersCaseList_->Clear();\r
+    ret = GetAllFiles(playersCaseList_);\r
+    if (ret == OHOS_FAILURE) {\r
+        return;\r
+    }\r
+}\r
+\r
+List<PlayerCaseInfo>& PlayersListGroup::GetCase()\r
+{\r
+    return *playersCaseList_;\r
+}\r
+\r
+char *PlayersListGroup::GetCase(int16_t index)\r
+{\r
+    if (index < 0 || playersCaseList_ == nullptr) {\r
+        return nullptr;\r
+    }\r
+    ListNode<PlayerCaseInfo> *node = playersCaseList_->Begin();\r
+    while (node != playersCaseList_->End()) {\r
+        if (index == node->data_.index) {\r
+            return node->data_.sliceId;\r
+        }\r
+        node = node->next_;\r
+    }\r
+    return nullptr;\r
+}\r
+\r
+// 读取文件夹下文件名信息\r
+int PlayersListGroup::GetAllFiles(List<PlayerCaseInfo> *playersCaseList)\r
+{\r
+    int ret;\r
+    int i{0};\r
+    struct dirent *direntp;\r
+    struct PlayerCaseInfo playerCaseInfo;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles");\r
+    // 打开目录\r
+    DIR *dirp = opendir(APP_MUSIC_PATH);\r
+    // 遍历文件\r
+    if (dirp != NULL) {\r
+        while ((direntp = readdir(dirp)) != NULL) {\r
+            ret = memcpy_s(playerCaseInfo.sliceId, DEC_NUM_256, direntp->d_name, DEC_NUM_256);\r
+            if (ret != OHOS_SUCCESS) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "memcpy_s err %d.", ret);\r
+                closedir(dirp);\r
+                return OHOS_FAILURE;\r
+            }\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "song Name %s.", playerCaseInfo.sliceId);\r
+            playerCaseInfo.index = i;\r
+            i++;\r
+            playersCaseList->PushBack(playerCaseInfo);\r
+        }\r
+    } else {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::opendir err!");\r
+        return OHOS_FAILURE;\r
+    }\r
+    // 关闭目录\r
+    closedir(dirp);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles end!");\r
+    return OHOS_SUCCESS;\r
+}\r
+\r
+ButtonOnClickListener::~ButtonOnClickListener()\r
+{\r
+    delete volumeSettingView;\r
+    volumeSettingView = nullptr;\r
+}\r
+\r
+// Button OnClick\r
+void ButtonOnClickListener::PlayerButtonOnClick()\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+        return;\r
+    }\r
+\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerButton 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
+    int32_t connTgState = avrcp_tg_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr());\r
+\r
+    state = playersView->GetPlayerButtonState();\r
+\r
+    if (PlayersModel::GetInstance()->GetPlayerCtr() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersModel::GetInstance()->GetPlayerCtr() nullptr");\r
+        return;\r
+    }\r
+    PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "buttonState = %d playerState = %d", state, playerState);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "connCtState = %d connTgState = %d", connCtState, connTgState);\r
+\r
+    if (GetCurrCallNum() != 0 && GetScoConnectState() == HFP_SCO_STATE_CONNECTED) {\r
+        if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
+            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+            playersView->GetPlayerButton()->Invalidate();\r
+        } else {\r
+            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+            playersView->GetPlayerButton()->Invalidate();\r
+        }\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PlayerButtonOnClick] calling phone");\r
+        return;\r
+    }\r
+    if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
+        /* start play */\r
+        PlayersModel::GetInstance()->ConnectBtAndLocalPlay(connCtState, connTgState, playerState);\r
+    } else if (state == UICheckBox::UICheckBoxState::UNSELECTED) {\r
+        PlayersModel::GetInstance()->ConnectBtAndLocalPause(connCtState, connTgState);\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
+    //点击播放音乐时,音乐列表当前歌曲名要变颜色\r
+    m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();\r
+    m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongClick(m_PlayersCaseListAdapter,PlayersModel::GetInstance()->GetCurrentIndex());\r
+    for(int i= 0;i<m_PlayersCaseListAdapter->GetCount();i++)\r
+    {\r
+        if(i != PlayersModel::GetInstance()->GetCurrentIndex())\r
+        {\r
+           m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongNotClick(m_PlayersCaseListAdapter,i);\r
+        }\r
+    }\r
+    PlayersView::GetInstance()->GetPlayerList();\r
+    /* -------------------------------------------------------------------------- */\r
+}\r
+\r
+void ButtonOnClickListener::SoundButtonOnClick()\r
+{\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
+        volumeSetting = new VolumeSettingView();\r
+        if (volumeSetting == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting nullptr err");\r
+            return;\r
+        }\r
+        if (volumeSetting->SetUpVolume() == false) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting SetUpVolume fail");\r
+            return;\r
+        }\r
+        volumeSetting->GetProgress()->SetValue(AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC));\r
+        if (AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC) == 0) {\r
+            ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);\r
+            volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);\r
+        }\r
+        volumeSettingView = volumeSetting;\r
+        RootView::GetInstance()->Add(volumeSettingView);\r
+    }\r
+    VolumeSliderEventListener *volumeSliderEventListener = VolumeSliderEventListener::GetInstance();\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
+\r
+void ButtonOnClickListener::OptionsButtonOnClick()\r
+{\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
+}\r
+\r
+void ButtonOnClickListener::PlayerModelButtonOnClick()\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerModelButtonOnClick playersView nullptr err");\r
+        return;\r
+    }\r
+    switch (PlayersModel::GetInstance()->GetPlayerModel()) {\r
+        case LOOP:\r
+            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_LOOP); // 循环\r
+            break;\r
+        case SEQUENCE:\r
+            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_SEQUENCE); // 顺序\r
+            break;\r
+        case REPEATS:\r
+            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_REPEATS); // \r
+            break;\r
+        case RANDOM:\r
+            playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_RANDOM); // 随机\r
+            break;\r
+        default:\r
+            break;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());\r
+}\r
+\r
+bool ButtonOnClickListener::OnClick(UIView& view, const ClickEvent& event)\r
+{\r
+\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
+        PlayerButtonOnClick();\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
+        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
+        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
+        SoundButtonOnClick();\r
+    } else if (view_ == (UIView *)playersView->GetOptionsButton()) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "optionsButton OnClick");\r
+        OptionsButtonOnClick();\r
+    }\r
+    if(strcmp(view.GetViewId(),"music_list_button") == 0)\r
+    {\r
+        PlayersPresenter::GetInstance()->ShowPlayerListGroup();\r
+    }\r
+    else if(strcmp(view.GetViewId(),"Delbutton") == 0)\r
+    {\r
+        printf("Delbutton %s %d\n",__func__,__LINE__);\r
+    }\r
+    else if(strcmp(view.GetViewId(),"returnbutton") == 0)\r
+    {\r
+        PlayersView *playersView = PlayersView::GetInstance();\r
+        playersView->SetPlayerDelSongViewStatus(false);\r
+        playersView->SetPlayerListGroupStatus(true);\r
+        RootView::GetInstance()->Invalidate();\r
+    }\r
+    return true;\r
+}\r
+\r
+// 播放器回调\r
+PlayerCallbackImpl::PlayerCallbackImpl()\r
+{\r
+}\r
+\r
+PlayerCallbackImpl::~PlayerCallbackImpl()\r
+{\r
+}\r
+\r
+void PlayerCallbackImpl::OnPlaybackComplete()\r
+{\r
+    // 此处实现代码用于处理文件播放完成的事件\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnPlaybackCompleten");\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView != nullptr) {\r
+        if (playersView->GetPlaybackProgress() != nullptr) {\r
+            playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%\r
+            playersView->GetPlaybackProgress()->Invalidate();\r
+        }\r
+    }\r
+    usleep(20000);\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&PlayersModel::PlaySwitching, PlayersModel::GetInstance()));\r
+}\r
+\r
+void PlayerCallbackImpl::OnError(int32_t errorType, int32_t errorCode)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnError test, errorType %d, errorCode %d", errorType, errorCode);\r
+    // 此处实现代码处理错误事件\r
+}\r
+\r
+void PlayerCallbackImpl::OnInfo(int type, int extra)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnInfo test, type %d, extra %d.", type, extra);\r
+    // 此处实现代码处理普通事件\r
+}\r
+\r
+void PlayerCallbackImpl::OnRewindToComplete()\r
+{\r
+    // 此处实现代码处理进度控制完成的事件\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnRewindToComplete test");\r
+}\r
+\r
+// 音频中断\r
+PlayerInterruptListener::PlayerInterruptListener()\r
+{\r
+}\r
+\r
+PlayerInterruptListener::~PlayerInterruptListener()\r
+{\r
+}\r
+\r
+void PlayerInterruptListener::SetOwner(std::shared_ptr<Player> player)\r
+{\r
+    player_ = player;\r
+}\r
+\r
+std::shared_ptr<Player> PlayerInterruptListener::GetPlayer()\r
+{\r
+    return player_;\r
+}\r
+\r
+void PlayerInterruptListener::RestFlag()\r
+{\r
+    isPaused_ = false;\r
+    isDelayed_ = false;\r
+    isResumed_ = false;\r
+    isBeginStopped_ = false;\r
+    isEndStopped_ = false;\r
+}\r
+\r
+void PlayerInterruptListener::SetPaused(bool value)\r
+{\r
+    isPaused_ = value;\r
+}\r
+\r
+void PlayerInterruptListener::SetResumed(bool value)\r
+{\r
+    isResumed_ = value;\r
+}\r
+\r
+bool PlayerInterruptListener::IsPaused()\r
+{\r
+    return isPaused_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsDelayed()\r
+{\r
+    return isDelayed_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsResumed()\r
+{\r
+    return isResumed_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsBeginStopped()\r
+{\r
+    return isBeginStopped_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsEndStopped()\r
+{\r
+    return isEndStopped_;\r
+}\r
+\r
+static void PlayerPostGraphicEvent(void (*fun)(void))\r
+{\r
+    GraphicService::GetInstance()->PostGraphicEvent(*fun);\r
+}\r
+\r
+static void Pause(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] start");\r
+    int32_t state;\r
+    int32_t ret;\r
+    std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =\r
+        OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();\r
+    if (PlayerIntrptListener == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");\r
+        return;\r
+    }\r
+\r
+    std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();\r
+    if (player.get() == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] player is nullptr");\r
+        return;\r
+    }\r
+\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+\r
+    player->GetPlayerState(state);\r
+    if (state == PLAYER_STARTED) {\r
+        ret = player->Pause();\r
+        if (ret == 0) {\r
+            if (playersView == nullptr) {\r
+                PlayersModel::GetInstance()->SetPlayButtonState(false);\r
+            } else {\r
+                playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+                playersView->GetPlayerButton()->Invalidate();\r
+            }\r
+            PlayerIntrptListener->RestFlag();\r
+            PlayerIntrptListener->SetPaused(true);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer]");\r
+        }\r
+    }\r
+}\r
+\r
+void PlayerInterruptListener::PausePlayer(void)\r
+{\r
+    PlayerPostGraphicEvent(Pause);\r
+}\r
+\r
+static void Resume(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::Resume] start");\r
+    int32_t state;\r
+    int32_t ret;\r
+    std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =\r
+        OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();\r
+    if (PlayerIntrptListener == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");\r
+        return;\r
+    }\r
+\r
+    std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();\r
+    if (player.get() == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] player is nullptr");\r
+        return;\r
+    }\r
+\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    \r
+    player->GetPlayerState(state);\r
+    if (state == PLAYER_PAUSED && PlayerIntrptListener->IsPaused() == true) {\r
+        ret = player->Play();\r
+        if (ret == 0) {\r
+            if (playersView == nullptr) {\r
+                PlayersModel::GetInstance()->SetPlayButtonState(true);\r
+            } else {\r
+                playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+                playersView->GetPlayerButton()->Invalidate();\r
+            }\r
+            PlayerIntrptListener->RestFlag();\r
+            PlayerIntrptListener->SetResumed(true);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer]");\r
+        }\r
+    }\r
+}\r
+\r
+void PlayerInterruptListener::ResumePlayer(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] start");\r
+    usleep(50000); // 确保界面切换完成\r
+    if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||\r
+        (GetCurrCallState() != HFP_HF_CALL_STATE_FINISHED && GetScoConnectState() == HFP_SCO_STATE_CONNECTED)) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] this is in calling");\r
+        return; // 通话界面,禁止音乐恢复播放\r
+    }\r
+    AudioRelease(); // 适配某些机型不触发SCO\r
+\r
+    PlayerPostGraphicEvent(Resume);\r
+}\r
+\r
+static void Stop(void)\r
+{\r
+    PlayersModel::GetInstance()->PlayerStop();\r
+    PlayersModel::GetInstance()->ClearActivateAudioInterrupt();\r
+}\r
+\r
+void PlayerInterruptListener::StopPlayer(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::StopPlayer] start");\r
+    PlayerPostGraphicEvent(Stop);\r
+}\r
+\r
+void PlayerInterruptListener::OnInterrupt(int32_t type, int32_t hint)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::] OnInterrupt go in, type %d, hint %d.", type, hint);\r
+\r
+    if (type == INTERRUPT_TYPE_BEGIN && hint == INTERRUPT_HINT_PAUSE) {\r
+        PausePlayer();\r
+    }\r
+\r
+    if (type == INTERRUPT_TYPE_END && hint == INTERRUPT_HINT_RESUME) {\r
+        ResumePlayer();\r
+    }\r
+\r
+    if (hint == INTERRUPT_HINT_STOP) {\r
+        RestFlag();\r
+        if (type == INTERRUPT_TYPE_BEGIN) {\r
+            isBeginStopped_ = true;\r
+            StopPlayer();\r
+        } else if (type == INTERRUPT_TYPE_END) {\r
+            isEndStopped_ = true;\r
+        }\r
+    }\r
+}\r
+\r
+PlayerOnDragListener::PlayerOnDragListener()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener");\r
+    g_pPlayerOnDragListener = this;\r
+}\r
+\r
+PlayerOnDragListener::~PlayerOnDragListener()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayerOnDragListener");\r
+    g_pPlayerOnDragListener = nullptr;\r
+}\r
+\r
+PlayerOnDragListener *PlayerOnDragListener::GetInstance(void)\r
+{\r
+    return g_pPlayerOnDragListener;\r
+}\r
+\r
+void PlayerOnDragListener::OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangeView=%d showView=%d", hideView, showView);\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+        if (isStopScan == true) {\r
+            BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+            if (bluetoothEarPhoneView == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView GetInstance fail");\r
+                return;\r
+            }\r
+            bluetoothEarPhoneView->BtAnimatorStop();\r
+            bluetoothEarPhoneView->StopBtDiscovery();\r
+        }\r
+        // 跳转设置页面\r
+        JumpView *jumpView = JumpView::GetInstance();\r
+        if (jumpView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+            return;\r
+        }\r
+        jumpView->ChangeView(hideView, showView);\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
+        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
+    }\r
+}\r
+\r
+void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event)\r
+{\r
+    bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
+    if (ret == true) {\r
+        OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
+                        JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, true);\r
+    } else {\r
+        OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
+                        JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true);\r
+    }\r
+}\r
+\r
+void PlayerOnDragListener::DropEarListView(const DragEvent& event)\r
+{\r
+    bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
+    if (ret == true) {\r
+        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView Addr: %02x%02x%02x%02x%02x%02x",\r
+                    caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+                    caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+        ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
+        if (ret == false) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView gap_disconnect_remote_device false");\r
+        }\r
+    }\r
+    BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
+    if (pbItermView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDragEnd The GetConnectionView nullptr.");\r
+    } else {\r
+        pbItermView->ConnectAnimatorStop();\r
+        BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
+    }\r
+    OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,\r
+                    JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, 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
+    if (view.GetViewId() == nullptr) {\r
+        return true;\r
+    }\r
+    if (strcmp(view.GetViewId(), BLUETOOTH_EAR_PHONE_VIEW) == 0) {\r
+        DropEarPhoneView(event);\r
+    } else if (strcmp(view.GetViewId(), TIPS_SUCC_MESSAGE_VIEW) == 0) {\r
+        OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,\r
+                        JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);\r
+    } else if (strcmp(view.GetViewId(), TIPS_FAIL_MESSAGE_VIEW) == 0) {\r
+        OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,\r
+                        JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);\r
+    } else if (strcmp(view.GetViewId(), TIPS_CONN_FAIL_MESSAGE_VIEW) == 0) {\r
+        CorrespondingJump(event, JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW);\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_EARLIST_VIEW) == 0) {\r
+        DropEarListView(event);\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_RECONNECT_VIEW) == 0) {\r
+        BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
+        CorrespondingJump(event, JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);\r
+        BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
+        if (bluetoothReconnectView != nullptr) {\r
+            bluetoothReconnectView->BtReconnectStop();\r
+        }\r
+    } 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
+        OnDragChangBluetoothView(event);\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_DEVICE_LIST_VIEW) == 0) {\r
+        OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,\r
+                        JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, false);\r
+    }\r
+    return true;\r
+}\r
+\r
+\r
+void PlayerOnDragListener::CorrespondingJump(const DragEvent& event, int16_t hideView)\r
+{\r
+    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
+    if (bluetoothModel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");\r
+            return;\r
+        }\r
+    if (bluetoothModel->GetTagReconnectJump() == true) {\r
+        OnDragChangView(event, hideView,\r
+                        JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW, false);\r
+    } else {\r
+        std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();\r
+        bool ret = bluetoothScanList.empty();\r
+        if (ret != true) {\r
+            OnDragChangView(event, hideView,\r
+                            JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW, false);\r
+        } else {\r
+            OnDragChangView(event, hideView,\r
+                            JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);\r
+        }\r
+    }\r
+    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
+    // 跳转正在搜索界面\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,\r
+                         JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+    return;\r
+}\r
+void PlayersPresenter::OnClickNewEquipmentButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NewEquipmentButtonOnClickListener OnClick");\r
+    BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(true);\r
+    // 跳转正在搜索界面\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,\r
+                         JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+    return;\r
+}\r
+\r
+void PlayersPresenter::OnClickCancelConnedRequestButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelConnedRequestButton OnClick");\r
+    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton Addr: %02x%02x%02x%02x%02x%02x",\r
+                caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+                caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    bool ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
+    if (ret == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClickCancelConnedRequestButton DisconnectRemoteDevice false");\r
+    }\r
+    BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
+    // 刷新列表\r
+    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+    if (bluetoothEarListView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");\r
+        return;\r
+    }\r
+    if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");\r
+        return;\r
+    }\r
+    bluetoothEarListView->GetScanUIList()->RefreshList();\r
+    bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
+    bluetoothEarListView->SetTitleLabel("扫描完成");\r
+\r
+    BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
+    if (pbItermView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");\r
+        return;\r
+    }\r
+    pbItermView->ConnectAnimatorStop();\r
+    BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
+    bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+    RootView::GetInstance()->Invalidate();\r
+    return;\r
+}\r
+\r
+void PlayersPresenter::OnClickButtonUnpair(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");\r
+    BluetoothModel::GetInstance()->SetTagConnectNew(false);\r
+    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+    if (bluetoothOptionsView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
+        return;\r
+    }\r
+    bluetoothOptionsView->SetUnpair(); // 取消配对\r
+    // 删除对应设备列表节点\r
+    bd_addr_t bdAddr = bluetoothOptionsView->GetCurrentAddr();\r
+    List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+    ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();\r
+    if (node == nullptr) {\r
+        return;\r
+    }\r
+    while (node != bluetoothCaseList.End()) {\r
+        if ((bdAddr.addr[0] == node->data_.addr[0]) && (bdAddr.addr[1] == node->data_.addr[1])\r
+            && (bdAddr.addr[2] == node->data_.addr[2]) && (bdAddr.addr[3] == node->data_.addr[3])\r
+            && (bdAddr.addr[4] == node->data_.addr[4]) && (bdAddr.addr[5] == node->data_.addr[5])) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bdAddr true");\r
+            bluetoothCaseList.Remove(node);\r
+        }\r
+        node = node->next_;\r
+    }\r
+\r
+    // 跳转并刷新列表\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
+                         JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+}\r
+\r
+void PlayersPresenter::OnClickButtonOptionOne(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+    if (bluetoothOptionsView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
+        return;\r
+    }\r
+    BluetoothModel::GetInstance()->SetBtStatus();\r
+    if (BluetoothModel::GetInstance()->GetAclConnected() == true) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() == true");\r
+        BluetoothModel::GetInstance()->SetTagConnectNew(false);\r
+        bluetoothOptionsView->SetBtDisconnect();\r
+        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
+                             JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+    } else {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() ==false");\r
+        BluetoothModel::GetInstance()->SetTagReconnectJump(true);\r
+        // 重连动画\r
+        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
+                             JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);\r
+        // 判断是否正在连接\r
+        bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::ClickOptionsOneButton lastAddr: %02x%02x%02x%02x%02x%02x",\r
+                    lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+                    lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+        bool ret = bt_is_acl_connected(lastAddr);\r
+        if (ret) {\r
+            BluetoothModel::GetInstance()->SetTagConnectNew(true);\r
+            bluetoothOptionsView->SetBtDisconnect();\r
+        } else {\r
+            BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+            bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickOptionsOneButton gap_connect_remote_device ret = %d", ret);\r
+        }\r
+    }\r
+}\r
+\r
+\r
+void PlayersPresenter::OnClickSetting(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SETTING_BUTTON");\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
+    if (bluetoothModel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickSetting BluetoothModel GetInstance fail");\r
+        return;\r
+    }\r
+    bluetoothModel->SetTagConnectView(true);\r
+    bluetoothModel->SetBluetoothCalleridStatus(CALLERPLAYERS);\r
+    BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(false);\r
+    // 设备列表\r
+    List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+    bool ret = bluetoothCaseList.IsEmpty();\r
+    if (ret != true) {\r
+        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,\r
+                             JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+    } else {\r
+        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,\r
+                             JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+    }\r
+}\r
+\r
+void PlayersPresenter::OnClickDelete(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_DELETE_BUTTON");\r
+}\r
+\r
+void PlayersPresenter::OnClickSuccBack(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SUCC_BACK_BUTTON");\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,\r
+                         JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+}\r
+\r
+void PlayersPresenter::OnClickConnFailBack(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_CONN_FAIL_BACK_BUTTON");\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW,\r
+                         JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);\r
+    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+    bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClickConnFailBack gap_connect_remote_device ret = %d", ret);\r
+}\r
+\r
+void PlayersPresenter::OnClickFailBack(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_FAIL_BACK_BUTTON");\r
+    JumpView *jumpView = JumpView::GetInstance();\r
+    if (jumpView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+        return;\r
+    }\r
+    jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,\r
+                         JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+}\r
+\r
+struct PlayersOnClickMapper {\r
+    const char *id;\r
+    void (PlayersPresenter::*func)(void);\r
+};\r
+\r
+static const PlayersOnClickMapper OnClickMapper[] = {\r
+    {BLUETOOTH_RESCAN_BUTTON, &PlayersPresenter::OnClickRescanButton},\r
+    {BLUETOOTH_NEWEQUIPMENT_BUTTON, &PlayersPresenter::OnClickNewEquipmentButton},\r
+    {BLUETOOTH_CANCELCONNEDREQUEST_BUTTON, &PlayersPresenter::OnClickCancelConnedRequestButton},\r
+    {BLUETOOTH_UNPAIR_BUTTON, &PlayersPresenter::OnClickButtonUnpair},\r
+    {BLUETOOTH_OPTIONONE_BUTTON, &PlayersPresenter::OnClickButtonOptionOne},\r
+    {BLUETOOTH_SETTING_BUTTON, &PlayersPresenter::OnClickSetting},\r
+    {BLUETOOTH_DELETE_BUTTON, &PlayersPresenter::OnClickDelete},\r
+    {BLUETOOTH_SUCC_BACK_BUTTON, &PlayersPresenter::OnClickSuccBack},\r
+    {BLUETOOTH_CONN_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickConnFailBack},\r
+    {BLUETOOTH_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickFailBack}\r
+};\r
+\r
+bool PlayersPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
+    uint16_t i;\r
+    UNUSED(event);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick %s", view.GetViewId());\r
+    for (i = 0; i < sizeof(OnClickMapper) / sizeof(OnClickMapper[0]); i++) {\r
+        if (strcmp(view.GetViewId(), OnClickMapper[i].id) == 0) {\r
+            (this->*(OnClickMapper[i].func))();\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick i %d", i);\r
+            return true;\r
+        }\r
+    }\r
+    return false;\r
+}\r
+\r
+void PlayersPresenter::SetTitleSetText(const char *text)\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
+        return;\r
+    }\r
+    playersView->OptionsButtonSetImageStyle(image);\r
+}\r
+\r
+void PlayersPresenter::SetPlaybackProgress(int64_t value)\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlaybackProgress playersView GetInstance fail");\r
+        return;\r
+    }\r
+    UICircleProgress *playbackProgress = playersView->GetPlaybackProgress();\r
+    if (playbackProgress == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playbackProgress nullptr err");\r
+        return;\r
+    }\r
+    playbackProgress->SetValue(value);\r
+    playbackProgress->Invalidate();\r
+}\r
+\r
+void PlayersPresenter::SetPlayerState(bool value)\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlayerState playersView GetInstance fail");\r
+        return;\r
+    }\r
+    if (value != false) {\r
+        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+        PlayersModel::GetInstance()->SetPlayButtonState(false);\r
+    }\r
+}\r
+\r
+void PlayersPresenter::PlayerbackReset(void)\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");\r
+        return;\r
+    }\r
+    playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+    playersView->GetPlayerButton()->Invalidate();\r
+}\r
+\r
+// 播放器按钮复位\r
+void PlayersPresenter::PlayerHeadsetReset(void)\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");\r
+        return;\r
+    }\r
+\r
+    if (playersView->GetPlayerButtonState() == UICheckBox::UICheckBoxState::UNSELECTED) {\r
+        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+    } else {\r
+        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+    }\r
+\r
+    playersView->GetPlayerButton()->Invalidate();\r
+}\r
+\r
+void PlayersPresenter::ShowPlayerListGroup()\r
+{\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");\r
+        return;\r
+    }\r
+    // 添加list\r
+    playersView->SetPlayerListGroupStatus(true);\r
+    // 刷新UI\r
+    RootView::GetInstance()->Invalidate();\r
+    return;\r
+}\r
+\r
+} // namespace OHOS\r
index 4b4168f..73d0eb7 100755 (executable)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-#include <stdlib.h>
-#include <unistd.h>
-#include "common/image_cache_manager.h"
-#include "ui_resource_image.h"
-#include "PlayersView.h"
-#include "UiConfig.h"
-#include "PlayersModel.h"
-#include "PlayersCaseListAdapter.h"
-#include "MainViewSample.h"
-
-namespace OHOS {
-static PlayersView* g_pPlayersView = nullptr;
-
-#define STEP_LABEL_X 166
-#define STEP_LABEL_Y 30
-#define TEXT_WIDTH 120
-#define TEXT_HEIGHT 30
-
-PlayersView::PlayersView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::PlayersView");
-    SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    g_pPlayersView = this;
-}
-
-PlayersView::~PlayersView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::~PlayersView");
-    if (viewiInitStatus == true) {
-        state = GetPlayerButtonState();
-        if (state == UICheckBox::UICheckBoxState::SELECTED) {
-            PlayersModel::GetInstance()->SetPlayButtonState(true);
-        }
-        RemoveAll();
-        listGroup->RemoveAll();
-        delete list;
-        list = nullptr;
-        delete playerlistener;
-        playerlistener = nullptr;
-        delete playerButton;
-        playerButton = nullptr;
-        delete soundlistener;
-        soundlistener = nullptr;
-        delete nextButton;
-        nextButton = nullptr;
-        delete nextlistener;
-        nextlistener = nullptr;
-        delete preButton;
-        preButton = nullptr;
-        TearDownView();
-        delete adapterText;
-        adapterText = nullptr;
-        delete backGround;
-        delete titleLabel;
-        delete subTitleLabel;
-        backGround = nullptr;
-        titleLabel = nullptr;
-        subTitleLabel = nullptr;
-        delete playbackProgress;
-        playbackProgress = nullptr;
-        delete jumpView;
-        jumpView = nullptr;
-        delete playersPresenter;
-        playersPresenter = nullptr;
-        delete playerOnDragListener;
-        playerOnDragListener = nullptr;
-    }
-    g_pPlayersView = nullptr;
-}
-
-void PlayersView::TitleSetText(const char *text)
-{
-    titleLabel->SetText(text);
-    titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
-    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                         UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-
-}
-
-void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode)
-{
-    ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(playMode, PLAYER_IAMGES);
-    playerModelButton->SetSrc(image);
-}
-
-int16_t PlayersView::GetVolumeRank(void)
-{
-    return volumeSet;
-}
-
-void PlayersView::SetVolumeRank(int16_t value)
-{
-    volumeSet = value;
-}
-
-void PlayersView::SetVolumeAddOne(void)
-{
-    volumeSet++;
-}
-
-UIButton *PlayersView::GetPullButton(void)
-{
-    return pullButton;
-}
-
-UIButton *PlayersView::GetOptionsButton(void)
-{
-    return optionsButton;
-}
-
-UIButton *PlayersView::GetPreButton(void)
-{
-    return preButton;
-}
-
-UIButton *PlayersView::GetNextButton(void)
-{
-    return nextButton;
-}
-
-UILabel *PlayersView::GetTitleLabel(void)
-{
-    return titleLabel;
-}
-
-UICheckBox *PlayersView::GetPlayerButton(void)
-{
-    return playerButton;
-}
-
-UIImageView *PlayersView::GetSoundButton(void)
-{
-    return soundButton;
-}
-
-UICircleProgress *PlayersView::GetPlaybackProgress(void)
-{
-    return playbackProgress;
-}
-
-UIImageView *PlayersView::GetPlayerModelButton(void)
-{
-    return playerModelButton;
-}
-
-UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void)
-{
-    return playerButton->GetState();
-}
-
-void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)
-{
-    if (playerButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState playerButton NULL");
-        return;
-    }
-    return playerButton->SetState(state);
-}
-
-UIList *PlayersView::GetPlayerList(void)
-{
-    return list;
-}
-
-void PlayersView::SetPlayerListGroupStatus(bool status)
-{
-    if (listGroup == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");
-        return;
-    }
-    UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();
-    if (vew != nullptr) {
-        vew->SetVisible(!status);
-    }
-    listGroup->SetVisible(status);
-    return;
-}
-
-void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)
-{
-    PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);
-}
-
-void PlayersView::TearDownView()
-{
-    delete prelistener;
-    prelistener = nullptr;
-    delete playerModelButton;
-    playerModelButton = nullptr;
-    delete modellistener;
-    modellistener = nullptr;
-    delete soundButton;
-    soundButton = nullptr;
-    delete optionslistener;
-    optionslistener = nullptr;
-    delete optionsButton;
-    optionsButton = nullptr;
-    delete pullButton;
-    pullButton = nullptr;
-    delete listGroup;
-    listGroup = nullptr;
-}
-
-PlayersView* PlayersView::GetInstance(void)
-{
-    return g_pPlayersView;
-}
-
-// list
-void PlayersView::ShowUpListView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView");
-    listGroup = new UIViewGroup();
-    if (listGroup == nullptr) {
-        return;
-    }
-    listGroup->SetPosition(0, 0);
-    listGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-
-    // list type
-    if (adapterText == nullptr) {
-        adapterText = new PlayersCaseListAdapter();
-        if (adapterText == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adapterText new fail");
-            return;
-        }
-    }
-    if (list == nullptr) {
-        list = new UIList(UIList::VERTICAL);
-        if (list == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "list new fail");
-            return;
-        }
-        list->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-        list->SetStartIndex(0); // 0 : list start index
-        list->SetAdapter(adapterText);
-    }
-    listGroup->Add(list);
-    RootView::GetInstance()->Add(listGroup);
-
-    //增加按键监听
-       //RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::PlayerOnDragListener::GetInstance();
-       //RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::PlayerOnDragListener::GetInstance();
-    if (dragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::OnDragListener fail");
-        return;
-    }
-    listGroup->SetDraggable(true);
-    listGroup->SetTouchable(true);
-    listGroup->SetOnDragListener(dragListener);
-    listGroup->SetVisible(false);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView end");
-}
-
-void PlayersView::SetUpButton(UIButton *btn, const Point& point,
-                              int16_t width, int16_t height, UIView::OnClickListener *listener)
-{
-    if (btn == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetUpButton nullptr");
-        return;
-    }
-    Add(btn);
-    btn->SetPosition(point.x, point.y, width, height);
-    btn->SetOnClickListener(listener);
-}
-
-int PlayersView::ShowUpCheckBoxButton()
-{
-    ImageInfo *image;
-    ImageInfo *hlImage;
-    if (playerButton == nullptr) {
-        playerButton = new UICheckBox();
-    }
-    if (soundButton == nullptr) {
-        soundButton = new UIImageView();
-    }
-    if ((playerButton == nullptr) || (soundButton == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new fail");
-        return OHOS_FAILURE;
-    }
-    playerlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerButton));
-    if (playerlistener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerlistener new fail");
-        return OHOS_FAILURE;
-    }
-    playerButton->SetPosition(140, 139, 172, 172); // 140:x 139:y 172:width 172:height
-    playerButton->SetOnClickListener(playerlistener);
-    image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAYER, PLAYER_IAMGES);
-    hlImage = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAYERHIGHLIGHT, PLAYER_IAMGES);
-    playerButton->SetImages(hlImage, image);
-    Add(playerButton);
-
-    soundlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(soundButton));
-    if (soundlistener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundlistener new fail");
-        return OHOS_FAILURE;
-    }
-    soundButton->SetTouchable(true);
-    soundButton->SetPosition(178, 316, 95, 76); // 178:x 316:y 95:width 76:height
-    soundButton->SetOnClickListener(soundlistener);
-    if (LoadPlayerImage(soundButton, PLAYER_SOUND_IMAGE) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton LoadPlayerImage fail");
-        return false;
-    }
-    Add(soundButton);
-    return OHOS_SUCCESS;
-}
-
-int PlayersView::ShowUpButton()
-{
-    struct Point pointBtn;
-    ImageInfo *image;
-    pointBtn.x = 331; // 331:x
-    pointBtn.y = 168; // 168:y
-    nextlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(nextButton));
-    if (nextlistener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextlistener new fail");
-        return OHOS_FAILURE;
-    }
-    SetUpButton(nextButton, pointBtn, 93, 116, nextlistener); // 93:width 116:height
-    image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_NEXT_BUTTON, PLAYER_IAMGES);
-    nextButton->SetImageSrc(image, image);
-    pointBtn.x = 31; // 31:x
-    pointBtn.y = 168; // 168:y
-    prelistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(preButton));
-    if (prelistener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "prelistener new fail");
-        return OHOS_FAILURE;
-    }
-    SetUpButton(preButton, pointBtn, 86, 116, prelistener); // 86:width 116:height
-    image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PRE_BUTTOW, PLAYER_IAMGES);
-    preButton->SetImageSrc(image, image);
-
-    pointBtn.x = 87; // 87:x
-    pointBtn.y = 316; // 316:y
-    modellistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerModelButton));
-    if (modellistener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modellistener new fail");
-        return OHOS_FAILURE;
-    }
-    playerModelButton->SetTouchable(true);
-    playerModelButton->SetPosition(pointBtn.x, pointBtn.y, 95, 76); // 95:width 76:height
-    playerModelButton->SetOnClickListener(modellistener);
-    if (ShowUpPlayerMode() == false) {
-        return OHOS_FAILURE;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());
-    Add(playerModelButton);
-
-    return OHOS_SUCCESS;
-}
-
-bool PlayersView::ShowUpPlayerMode()
-{
-    if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP) {
-        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail");
-            return false;
-        }
-    } else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE) {
-        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail");
-            return false;
-        }
-    } else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS) {
-        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail");
-            return false;
-        }
-    } else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM) {
-        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail");
-            return false;
-        }
-    }
-    return true;
-}
-
-int PlayersView::ShowUpButtonView()
-{
-    int ret;
-    ret = ShowUpCheckBoxButton();
-    if (ret == OHOS_FAILURE) {
-        return OHOS_FAILURE;
-    }
-    if (nextButton == nullptr) {
-        nextButton = new UIButton();
-    }
-    if (preButton == nullptr) {
-        preButton = new UIButton();
-    }
-    if (optionsButton == nullptr) {
-        optionsButton = new UIButton();
-    }
-    if (pullButton == nullptr) {
-        pullButton = new UIButton();
-    }
-    if (playerModelButton == nullptr) {
-        playerModelButton = new UIImageView();
-    }
-    if ((nextButton == nullptr) || (preButton == nullptr) || (playerModelButton == nullptr) || (optionsButton == nullptr) ||
-        (pullButton == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIButton new fail");
-        return OHOS_FAILURE;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpButtonView");
-
-    ret = ShowUpButton();
-    if (ret == OHOS_FAILURE) {
-        return OHOS_FAILURE;
-    }
-    ret = ShowUpButtonOptions();
-    if (ret == OHOS_FAILURE) {
-        return OHOS_FAILURE;
-    }
-    ret = ShowUpCircleProgress();
-    if (ret == OHOS_FAILURE) {
-        return OHOS_FAILURE;
-    }
-    return OHOS_SUCCESS;
-}
-
-int PlayersView::ShowUpButtonOptions()
-{
-    struct Point pointBtn;
-    pointBtn.x = 284; // 284 : x
-    pointBtn.y = 316; // 316 : y
-    optionslistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(optionsButton));
-    if (optionslistener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionslistener new fail");
-        return OHOS_FAILURE;
-    }
-    SetUpButton(optionsButton, pointBtn, 75, 76, optionslistener); // 75:width 76:height
-    ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_OPTIONS_IMAGE, PLAYER_IAMGES);
-    optionsButton->SetImageSrc(image, image);
-
-    pointBtn.x = 178; // 178:x
-    pointBtn.y = 394; // 394:y
-    SetUpButton(pullButton, pointBtn, 95, 48, nullptr); // 95:width 48:height
-    pullButton->SetImageSrc(PNG_PULLBUTTON_FACE_IMAGE, PNG_PULLBUTTON_FACE_IMAGE);
-    return OHOS_SUCCESS;
-}
-
-int PlayersView::ShowUpCircleProgress()
-{
-    if (playbackProgress == nullptr) {
-        playbackProgress = new UICircleProgress();
-        if (playbackProgress == nullptr) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playbackProgress new fail");
-            return OHOS_FAILURE;
-        }
-    }
-    playbackProgress->SetPosition(140, 139, 172, 172); // 140:x 139:y 172:width 172:height
-    playbackProgress->SetCenterPosition(86, 86); // 86:x 86:y
-    playbackProgress->SetRange(PLAY_PROGRESS_MAX, PLAY_PROGRESS_MIN);
-    playbackProgress->SetRadius(86); // 86:radius
-    playbackProgress->SetStartAngle(0);
-    playbackProgress->SetEndAngle(360); // 360: end angle
-    playbackProgress->SetValue(0);
-    playbackProgress->SetBackgroundStyle(STYLE_LINE_COLOR, Color::Gray().full);
-    playbackProgress->SetForegroundStyle(STYLE_LINE_COLOR, Color::Red().full);
-    playbackProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 3); // 3:width
-    playbackProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 3); // 3:width
-    Add(playbackProgress);
-    return OHOS_SUCCESS;
-}
-
-void PlayersView::CreateJumpView(void)
-{
-    if (jumpView == nullptr) {
-        jumpView = new JumpView();
-        if (jumpView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail");
-            return;
-        }
-    }
-}
-
-void PlayersView::CreatePlayersPresenter(void)
-{
-    if (playersPresenter == nullptr) {
-        playersPresenter = new PlayersPresenter();
-        if (playersPresenter == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail");
-            return;
-        }
-    }
-}
-
-void PlayersView::CreatePlayerOnDragListener(void)
-{
-    if (playerOnDragListener == nullptr) {
-        playerOnDragListener = new PlayerOnDragListener();
-        if (playerOnDragListener == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");
-            return;
-        }
-    }
-}
-bool PlayersView::InitBackGround(void)
-{
-    if (backGround == nullptr) {
-        backGround = new UIImageView();
-        if (backGround == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround new fail");
-            return false;
-        }
-    }
-    backGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    if (LoadPlayerImage(backGround, PLAYER_BACK_GROUND) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail");
-        return false;
-    }
-    Add(backGround);
-    return true;
-}
-
-void PlayersView::CreatePlayerMusicName()
-{
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");
-            return;
-        }
-    }
-    titleLabel->SetPosition(127, 35, 200, 53); // 127:x 35:y 200:width 53:height
-    titleLabel->SetText("Music Name");
-    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-    Add(titleLabel);
-
-    if (subTitleLabel == nullptr) {
-        subTitleLabel = new UILabel();
-        if (subTitleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "subTitleLabel new fail");
-            return;
-        }
-    }
-    subTitleLabel->SetPosition(77, 92, 300, 38); // 77:x 92:y 300:width 38:height
-    subTitleLabel->SetText("Musical Authors");
-    subTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data
-    subTitleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    Add(subTitleLabel);
-    return;
-}
-
-bool PlayersView::OnDragEvent(const DragEvent& event)
-{
-    /* 300: y limit of drag start point */
-    if ((event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) && (event.GetStartPoint().y > 300)) {
-        PlayersPresenter::GetInstance()->ShowPlayerListGroup();
-        return true;
-    }
-
-    return false;
-}
-
-bool PlayersView::InitView(void)
-{
-    int ret;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView");
-
-    if (InitBackGround() == false) {
-        return false;
-    }
-
-    CreatePlayerMusicName();
-    // changeView
-    CreateJumpView();
-    // OnClick
-    CreatePlayersPresenter();
-    // OnDrag
-    CreatePlayerOnDragListener();
-    // 按键设置
-    ret = ShowUpButtonView();
-    if (ret == OHOS_FAILURE) {
-        return false;
-    }
-    // 遍历文件名到list链表
-    PlayersListGroup::GetInstance()->SetUpListCase();
-    PlayersModel::GetInstance()->PlayerInit();
-    ShowUpListView();
-    SetTouchable(true);
-    SetDraggable(true);
-    return true;
-}
-
-void PlayersView::PreLoad(void)
-{
-    if (!viewiInitStatus) {
-        if (InitView()) {
-            viewiInitStatus = true;
-        }
-    }
-}
-
-void PlayersView::UnLoad(void)
-{
-    // Players's usage scenes is complicated, so we do not release it's resources inner slice.
-}
-
-bool PlayersView::LoadPlayerImage(UIImageView *view, uint32_t resId)
-{
-    std::string file = PLAYER_IAMGES;
-    ImageInfo* image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);
-    if (image == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);
-        return false;
-    }
-    view->SetSrc(image);
-    return true;
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+#include <stdlib.h>\r
+#include <unistd.h>\r
+#include "common/image_cache_manager.h"\r
+#include "ui_resource_image.h"\r
+#include "PlayersView.h"\r
+#include "UiConfig.h"\r
+#include "PlayersModel.h"\r
+#include "PlayersCaseListAdapter.h"\r
+#include "MainViewSample.h"\r
+\r
+namespace OHOS {\r
+static PlayersView* g_pPlayersView = nullptr;\r
+\r
+#define STEP_LABEL_X 166\r
+#define STEP_LABEL_Y 30\r
+#define TEXT_WIDTH 120\r
+#define TEXT_HEIGHT 30\r
+\r
+PlayersView::PlayersView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::PlayersView");\r
+    SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+    g_pPlayersView = this;\r
+}\r
+\r
+PlayersView::~PlayersView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::~PlayersView");\r
+    if (viewiInitStatus == true) {\r
+        state = GetPlayerButtonState();\r
+        if (state == UICheckBox::UICheckBoxState::SELECTED) {\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
+        {\r
+            delete music_list_button;\r
+            music_list_button = nullptr;\r
+        }\r
+        if(PhoneMusicConnectStatusLabel != nullptr)\r
+        {\r
+            delete PhoneMusicConnectStatusLabel;\r
+            PhoneMusicConnectStatusLabel = 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
+\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
+}\r
+\r
+void PlayersView::SetVolumeRank(int16_t value)\r
+{\r
+    volumeSet = value;\r
+}\r
+\r
+void PlayersView::SetVolumeAddOne(void)\r
+{\r
+    volumeSet++;\r
+}\r
+\r
+UIButton *PlayersView::GetPullButton(void)\r
+{\r
+    return pullButton;\r
+}\r
+\r
+UIButton *PlayersView::GetOptionsButton(void)\r
+{\r
+    return optionsButton;\r
+}\r
+\r
+UIButton *PlayersView::GetPreButton(void)\r
+{\r
+    return preButton;\r
+}\r
+\r
+UIButton *PlayersView::GetNextButton(void)\r
+{\r
+    return nextButton;\r
+}\r
+\r
+//获取音乐列表按钮\r
+UIButton *PlayersView::GetMusicListButton(void)\r
+{\r
+    return music_list_button;\r
+}\r
+\r
+UILabel *PlayersView::GetTitleLabel(void)\r
+{\r
+    return titleLabel;\r
+}\r
+\r
+//获取音乐来源标签\r
+UILabel *PlayersView::GetMusicSourceLabel(void)\r
+{\r
+    return MusciSourceLabel;\r
+}\r
+\r
+//获手机音乐连接状态标签\r
+UILabel *PlayersView::GetPhoneMusicConnectStatusLabel(void)\r
+{\r
+    return PhoneMusicConnectStatusLabel;\r
+}\r
+\r
+UICheckBox *PlayersView::GetPlayerButton(void)\r
+{\r
+    return playerButton;\r
+}\r
+\r
+UIImageView *PlayersView::GetSoundButton(void)\r
+{\r
+    return soundButton;\r
+}\r
+\r
+UICircleProgress *PlayersView::GetPlaybackProgress(void)\r
+{\r
+    return playbackProgress;\r
+}\r
+\r
+UIImageView *PlayersView::GetPlayerModelButton(void)\r
+{\r
+    return playerModelButton;\r
+}\r
+\r
+UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void)\r
+{\r
+    return playerButton->GetState();\r
+}\r
+\r
+void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)\r
+{\r
+    if (playerButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState playerButton NULL");\r
+        return;\r
+    }\r
+    return playerButton->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
+{\r
+    if (listGroup == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");\r
+        return;\r
+    }\r
+    UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
+    if (vew != nullptr) {\r
+        vew->SetVisible(!status);\r
+    }\r
+    listGroup->SetVisible(status);\r
+    return;\r
+}\r
+\r
+/// @brief 根据传入的status参数来控制删除歌曲视图的显示与隐藏。\r
+/// @param status \r
+void PlayersView::SetPlayerDelSongViewStatus(bool status)\r
+{\r
+    if (DelSongView == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView DelSongView is NULL");\r
+        return;\r
+    }\r
+    UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
+    if (vew != nullptr) {\r
+        vew->SetVisible(!status);\r
+    }\r
+    DelSongView->SetVisible(status);\r
+    RootView::GetInstance()->Invalidate();\r
+    return;\r
+\r
+}\r
+\r
+void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)\r
+{\r
+    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
+}\r
+\r
+// 显示音乐列表\r
+void PlayersView::ShowUpListView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView");\r
+    listGroup = new UIScrollView();\r
+    if (listGroup == nullptr) {\r
+        return;\r
+    }\r
+    listGroup->SetPosition(0, 0);\r
+    listGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
+    listGroup->SetScrollBlankSize(20);\r
+    listGroup->SetReboundSize(50);\r
+    listGroup->SetDirection(1);\r
+\r
+    musicListTitle = new UILabel();\r
+    if(musicListTitle ==nullptr)\r
+    {\r
+        return;\r
+    }\r
+    musicListTitle->SetPosition(173, 52,120,35);        \r
+    musicListTitle->SetStyle(STYLE_TEXT_FONT, 30);\r
+    musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 36);\r
+    musicListTitle->SetText("音乐列表");\r
+    musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
+    musicListTitle->SetTextColor(Color::GetColorFromRGBA(0xff, 0xf3, 0xff, 0xff));\r
+    musicListTitle->SetRollSpeed(0);\r
+    musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+    listGroup->Add(musicListTitle);\r
+\r
+    // list type\r
+    if (adapterText == nullptr) {\r
+        adapterText = new PlayersCaseListAdapter();\r
+        if (adapterText == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adapterText new fail");\r
+            return;\r
+        }\r
+    }\r
+    if (list == nullptr) {\r
+        list = new UIList(UIList::VERTICAL);\r
+        if (list == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "list 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
+    }\r
+    listGroup->Add(list);\r
+    RootView::GetInstance()->Add(listGroup);\r
+    UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::PlayerOnDragListener::GetInstance();\r
+    if (dragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::OnDragListener fail");\r
+        return;\r
+    }\r
+    listGroup->SetDraggable(true);\r
+    listGroup->SetTouchable(true);\r
+    listGroup->SetOnDragListener(dragListener);\r
+    listGroup->SetVisible(false);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView end");\r
+}\r
+\r
+/// @brief 创建删除歌曲视图\r
+/// @param songName \r
+void PlayersView::ShowUpDelSongView()\r
+{\r
+    if(p_PlayerListDelSongView == nullptr)\r
+    {\r
+        p_PlayerListDelSongView = new PlayerListDelSongView();\r
+    }\r
+    DelSongView = p_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
+    if (btn == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetUpButton nullptr");\r
+        return;\r
+    }\r
+    Add(btn);\r
+    btn->SetPosition(point.x, point.y, width, height);\r
+    btn->SetOnClickListener(listener);\r
+}\r
+//复选框:选中播放未选中暂停\r
+int PlayersView::ShowUpCheckBoxButton()\r
+{\r
+    ImageInfo *ImagePlay;\r
+    ImageInfo *ImagerPause;\r
+    if (playerButton == nullptr) {\r
+        playerButton = new UICheckBox();\r
+    }\r
+    if (soundButton == nullptr) {\r
+        soundButton = new UIImageView();\r
+    }\r
+    if ((playerButton == nullptr) || (soundButton == nullptr)) {\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
+        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_PLAY, PLAYER_IAMGES); //播放图片\r
+    ImagerPause = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_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
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundlistener new fail");\r
+        return OHOS_FAILURE;\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
+        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
+        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
+        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
+        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
+        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
+    if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP) {\r
+        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail");\r
+            return false;\r
+        }\r
+    } else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE) {\r
+        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail");\r
+            return false;\r
+        }\r
+    } else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS) {\r
+        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail");\r
+            return false;\r
+        }\r
+    } else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM) {\r
+        if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail");\r
+            return false;\r
+        }\r
+    }\r
+    return true;\r
+}\r
+//显示按钮视图\r
+int PlayersView::ShowUpButtonView()\r
+{\r
+    int ret;\r
+    ret = ShowUpCheckBoxButton();\r
+    if (ret == OHOS_FAILURE) {\r
+        return OHOS_FAILURE;\r
+    }\r
+    if (nextButton == nullptr) {\r
+        nextButton = new UIButton();\r
+    }\r
+    if (preButton == nullptr) {\r
+        preButton = new UIButton();\r
+    }\r
+    if (optionsButton == nullptr) {\r
+        optionsButton = new UIButton();\r
+    }\r
+    if (music_list_button == nullptr) {\r
+        music_list_button = new UIButton();\r
+    }\r
+    if (pullButton == nullptr) {\r
+        pullButton = new UIButton();\r
+    }\r
+    if (playerModelButton == nullptr) {\r
+        playerModelButton = new UIImageView();\r
+    }\r
+    if ((nextButton == nullptr) || (preButton == nullptr) || (playerModelButton == nullptr) || (optionsButton == nullptr) ||\r
+        (pullButton == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIButton new fail");\r
+        return OHOS_FAILURE;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpButtonView");\r
+\r
+    ret = ShowUpButton();\r
+    if (ret == OHOS_FAILURE) {\r
+        return OHOS_FAILURE;\r
+    }\r
+    ret = ShowUpButtonOptions();\r
+    if (ret == OHOS_FAILURE) {\r
+        return OHOS_FAILURE;\r
+    }\r
+    ret = ShowUpCircleProgress();\r
+    if (ret == OHOS_FAILURE) {\r
+        return OHOS_FAILURE;\r
+    }\r
+    ret = ShowUpMusicListbutton();\r
+    if (ret == OHOS_FAILURE) {\r
+        return OHOS_FAILURE;\r
+    }\r
+    return OHOS_SUCCESS;\r
+}\r
+\r
+//显示音乐列表按钮\r
+int PlayersView::ShowUpMusicListbutton()\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_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button_listener new fail");\r
+        return OHOS_FAILURE;\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
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionslistener new fail");\r
+        return OHOS_FAILURE;\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
+\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
+}\r
+//显示播放进度条\r
+int PlayersView::ShowUpCircleProgress()\r
+{\r
+    if (playbackProgress == nullptr) {\r
+        playbackProgress = new UICircleProgress();\r
+        if (playbackProgress == nullptr) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playbackProgress new fail");\r
+            return OHOS_FAILURE;\r
+        }\r
+    }\r
+    playbackProgress->SetPosition(158, 158, 150, 150); \r
+    playbackProgress->SetCenterPosition(75, 75);\r
+    playbackProgress->SetRange(PLAY_PROGRESS_MAX, PLAY_PROGRESS_MIN);\r
+    playbackProgress->SetRadius(70); \r
+    playbackProgress->SetStartAngle(0);\r
+    playbackProgress->SetEndAngle(360); // 360: end angle\r
+    playbackProgress->SetValue(0);\r
+    playbackProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+    playbackProgress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+    playbackProgress->SetBackgroundStyle(STYLE_LINE_COLOR, 0xfff61313);\r
+    playbackProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 0);\r
+    playbackProgress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xfffbfbfb);\r
+    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
+//创建跳转视图\r
+void PlayersView::CreateJumpView(void)\r
+{\r
+    if (jumpView == nullptr) {\r
+        jumpView = new JumpView();\r
+        if (jumpView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail");\r
+            return;\r
+        }\r
+    }\r
+}\r
+//创建一个音乐播放器的逻辑层\r
+void PlayersView::CreatePlayersPresenter(void)\r
+{\r
+    if (playersPresenter == nullptr) {\r
+        playersPresenter = new PlayersPresenter();\r
+        if (playersPresenter == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail");\r
+            return;\r
+        }\r
+    }\r
+}\r
+//创建一个音乐播放器的拖拽监听\r
+void PlayersView::CreatePlayerOnDragListener(void)\r
+{\r
+    if (playerOnDragListener == nullptr) {\r
+        playerOnDragListener = new PlayerOnDragListener();\r
+        if (playerOnDragListener == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");\r
+            return;\r
+        }\r
+    }\r
+}\r
+//初始化背景图片\r
+bool PlayersView::InitBackGround(void)\r
+{\r
+    if (backGround == nullptr) {\r
+        backGround = new UIImageView();\r
+        if (backGround == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround new fail");\r
+            return false;\r
+        }\r
+    }\r
+    backGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+    if (LoadPlayerImage(backGround, PLAYER_BACKGROUND) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail");\r
+        return false;\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
+    if(elipse == nullptr){\r
+        elipse = new UIImageView();\r
+        if(elipse ==nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse new fail");\r
+            return false;\r
+        }\r
+    }\r
+    elipse->SetPosition(173,173,120,120);\r
+    if (LoadPlayerImage(elipse, PLAYER_ELLIPSE) == false) {\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
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
+            return;\r
+        }\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
+        subTitleLabel = new UILabel();\r
+        if (subTitleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "subTitleLabel new fail");\r
+            return;\r
+        }\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
+\r
+/// @brief 创建音乐来源标签\r
+/// @param  \r
+void PlayersView::CreateMusicSourceLabel(void)\r
+{\r
+    if (MusciSourceLabel == nullptr) {\r
+        MusciSourceLabel = new UILabel();\r
+        if (MusciSourceLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusciSourceLabel new fail");\r
+            return;\r
+        }\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
+}\r
+\r
+/// @brief 设置音乐来源标签内容\r
+/// @param text 文本内容\r
+void PlayersView::MusicSourceLabelSetText(const char *text)\r
+{\r
+   MusciSourceLabel->SetText(text);\r
+   MusciSourceLabel->Invalidate();\r
+}\r
+\r
+/// @brief 创建手机音乐连接状态标签\r
+/// @param  \r
+void PlayersView::CreatePhoneMusicConnectStatusLabel(void)\r
+{\r
+    if (PhoneMusicConnectStatusLabel == nullptr) {\r
+        PhoneMusicConnectStatusLabel = new UILabel();\r
+        if (PhoneMusicConnectStatusLabel == nullptr) {\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
+}\r
+\r
+/// @brief 设置手机音乐连接状态标签内容\r
+/// @param text 文本内容\r
+void PlayersView::PhoneMusicConnectStatusLabelSetText(const char *text)\r
+{\r
+    PhoneMusicConnectStatusLabel->SetText(text);\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
+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
+}\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
+        return false;\r
+    }\r
+\r
+    //CreatePlayerMusicName();\r
+    CreatePhoneMusicConnectStatusLabel();\r
+    CreateMusicSourceLabel();\r
+    // changeView\r
+    CreateJumpView();\r
+    // OnClick\r
+    CreatePlayersPresenter();\r
+    // OnDrag\r
+    CreatePlayerOnDragListener();\r
+    // 按键设置\r
+    ret = ShowUpButtonView();\r
+    if (ret == OHOS_FAILURE) {\r
+        return false;\r
+    }\r
+    // 需要一个模拟信息,假装发生了按键点击,开始播放音乐\r
+    // 调用 OnClick 回调函数来处理点击事件\r
+    //playerButton.OnClick(,);\r
+    // 遍历文件名到list链表\r
+    PlayersListGroup::GetInstance()->SetUpListCase();\r
+    PlayersModel::GetInstance()->PlayerInit();\r
+    ShowUpListView();\r
+    ShowUpDelSongView();\r
+    SetTouchable(true);\r
+    SetDraggable(true);\r
+    return true;\r
+}\r
+\r
+void PlayersView::PreLoad(void)\r
+{\r
+    if (!viewiInitStatus) {\r
+        if (InitView()) {\r
+            viewiInitStatus = true;\r
+        }\r
+    }\r
+}\r
+\r
+void PlayersView::UnLoad(void)\r
+{\r
+    // Players's usage scenes is complicated, so we do not release it's resources inner slice.\r
+}\r
+//加载音乐图片\r
+bool PlayersView::LoadPlayerImage(UIImageView *view, uint32_t resId)\r
+{\r
+    std::string file = PLAYER_IAMGES;\r
+    ImageInfo* image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
+    if (image == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);\r
+        return false;\r
+    }\r
+    view->SetSrc(image);\r
+    return true;\r
+}\r
+}\r
index 6913973..56fc190 100755 (executable)
@@ -168,7 +168,7 @@ bool ScreenModels::LoadAppImages(std::string file, UIImageView *view, uint32_t r
 
 void ScreenModels::PreLoadAppimages(void)
 {
-    LoadAppMultiImages(PLAYER_IAMGES, PLAYER_PLAYERSMODEL_RANDOM, PLAYER_PLAYERHIGHLIGHT);
+    LoadAppMultiImages(PLAYER_IAMGES, PLAYER_BACKGROUND, PLAYER_PLAYING);
     LoadAppMultiImages(CLOCK_IAMGES, CLOCK_CLASSIC_GEOMETRY, CLOCK_SECOND);
     LoadAppMultiImages(COMPASS_IAMGES, COMPASS_COMPASS0, COMPASS_COMPASS2);
     LoadAppMultiImages(DROPDOWN_IAMGES, DROPDOWN_BLUETOOTHCONNECTED, DROPDOWN_SETTING);
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_OFF.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_OFF.bin
new file mode 100644 (file)
index 0000000..02f4511
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_OFF.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_ON.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_ON.bin
new file mode 100644 (file)
index 0000000..1212ce4
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/CHECKBOX_ON.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOff.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOff.bin
new file mode 100644 (file)
index 0000000..fb89e49
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOff.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOn.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOn.bin
new file mode 100644 (file)
index 0000000..2e14630
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/SYSTEM_CheckOn.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/VolumeControlVector.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/VolumeControlVector.bin
new file mode 100644 (file)
index 0000000..da3928e
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/VolumeControlVector.bin differ
index 6743f92..4ad3caa 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/player/player.bin and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/player/player.bin differ