音乐播放器中音乐列表。
authorluozheng <1732036298@qq.com>
Fri, 9 Aug 2024 11:09:40 +0000 (19:09 +0800)
committerluozheng <1732036298@qq.com>
Fri, 9 Aug 2024 11:09:40 +0000 (19:09 +0800)
1.删除音乐视图优化,2.音乐删除同步刷新到还未验证。
3.音乐列表在歌曲不在情况下还需添加提示

14 files changed:
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListDelSongView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c

index 23ea991..2108562 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-05 15:20:03
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-06 18:31:14
+ * @LastEditTime: 2024-08-09 18:23:38
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h
  */
 
@@ -17,8 +17,6 @@
 
 namespace OHOS
 {
-    static constexpr const char *ENSURE_DELETE_BUTTON = "ensureDeleteButton";
-    static constexpr const char *CANCEL_DELETE_BUTTON = "cancelDeleteButton";
     class PlayerListDelSongView
     {
     public:
@@ -39,16 +37,17 @@ namespace OHOS
             int16_t y;
             int16_t w;
             int16_t h;
-            const char *ViewId;
             const char *src;
         };
 
         PlayerListDelSongView();
         virtual ~PlayerListDelSongView();
         static PlayerListDelSongView *GetInstance(void);
-        UIScrollView *InitDelSongView();
+        UIViewGroup *CreatePlayerListDelSongView();
         void SetTheSongLabelStyle(const char *songName);
         void DeleteSongNameFile(void);
+        UIButton *GetEnsureDeleteButton(void);
+        UIButton *GetCancelDeleteButton(void);
 
     private:
         void ClearAll(void);
@@ -57,6 +56,7 @@ namespace OHOS
         bool CreatePlayerListDelSongViewLabel(void);
         bool CreatPlayerListDelSongViewButton(void);
         bool CreatePlayerListDelSongViewScrollView(void);
+        UIViewGroup *group{nullptr};
         UIScrollView *scrollView{nullptr};
         UILabelExt *title{nullptr};
         UILabelExt *deleteNotelabel{nullptr};
@@ -65,6 +65,8 @@ namespace OHOS
         UIButton *cancelDeleteButton{nullptr};
 
         std::string delSongName;
+        UIView::OnDragListener *dragListener{nullptr};
+        UIView::OnClickListener *buttonClickListener{nullptr};
 
     };
 }
index f896c5d..c036743 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-05 15:20:03
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-06 18:31:23
+ * @LastEditTime: 2024-08-09 16:49:16
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h
  */
 
 #include "components/ui_view_group.h"
 #include "components/ui_button.h"
 #include "player/include/PlayersCaseListAdapter.h"
-#include "PlayersPresenter.h"
+#include "player/include/PlayersPresenter.h"
 namespace OHOS
 {
+
     class PlayerListItemView : public UIViewGroup
     {
     public:
@@ -33,11 +34,13 @@ namespace OHOS
         {
             return &sButton;
         }
+        void UpdateItemViewStyle(bool isplaying);
+
     private:
         PlayerListItemView(const PlayerListItemView &);
         UILabel sLabel;
         UIButton sButton;
-        PlayerListItem sItemInfo{0,nullptr};
+        PlayerListItem sItemInfo{0, nullptr, nullptr};
     };
 
 }
index ac102f6..f9e4f1f 100644 (file)
@@ -2,62 +2,37 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:03\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-06 18:31:31\r
+ * @LastEditTime: 2024-08-09 16:46:56\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h\r
  */\r
 \r
 #ifndef MUSIC_PLAYERS_CASE_LIST_ADAPTER_H\r
 #define MUSIC_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_ext.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
+namespace OHOS\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
+    typedef struct\r
+    {\r
+        int index;\r
+        const char *musicName;\r
+        UIView::OnClickListener *listener;\r
+    } PlayerListItem;\r
+\r
+    class PlayersCaseListAdapter : public AbstractAdapter\r
+    {\r
+    public:\r
+        PlayersCaseListAdapter() {}\r
+        ~PlayersCaseListAdapter();\r
+        UIView *GetView(UIView *inView, int16_t index) override;\r
+        uint16_t GetCount() override;\r
+\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 3446555..ed11ebf 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-05 15:20:03
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-08 18:32:13
+ * @LastEditTime: 2024-08-09 18:31:29
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
  */
 
@@ -95,6 +95,7 @@ public:
     void ClearActivateAudioInterrupt(void);
     void GetDuration(int64_t &duration);
 public:
+    std::string GetMusicPlayPath(void);
     bool GetMusicSource();
     void SetMusicSource(bool value);
 private:
@@ -118,11 +119,12 @@ private:
     void SequencePlayout(void);
     void RandomPlayout(void);
     void NextSong(int16_t index);
-    int16_t currentIndex{0};
+    int16_t currentIndex{0}; //当前在播哪一首歌的索引
     int16_t playerModel{0};
     char *currentSongName{nullptr};
     bool isStopAndReset{false};
     bool isActivateAudioInterrupt{false};
+    std::string musicPlayPath = APP_MUSIC_PATH; /*音乐播放路径*/
 };
 }
 
index 291a708..9bffa44 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:03\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-08 19:03:35\r
+ * @LastEditTime: 2024-08-09 18:07:21\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h\r
  */\r
 \r
@@ -53,6 +53,8 @@ class VolumeSettingView;
 #define BLUETOOTH_OPTIONS_VIEW "BluetoothOptionsView"\r
 #define BLUETOOTH_RECONNECT_VIEW "BluetoothReconnectView"\r
 #define MUSIC_PLAYER_SOURCE_VIEW "MusicPlayerSourceView" //音乐来源视图的滑动监听\r
+#define MUSIC_PLAYER_LIST_VIEW "MusicPlayerListView"     //音乐列表的滑动监听\r
+#define MUSIC_PLAYER_DELETE_VIEW "MusicPlayerDeleteView" //音乐删除视图的滑动监听\r
 #define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView" \r
 #define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"\r
 #define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"\r
@@ -97,11 +99,6 @@ public:
     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
@@ -109,7 +106,7 @@ private:
     void SoundButtonOnClick();\r
     void PlayerModelButtonOnClick();\r
     void OptionsButtonOnClick();\r
-    PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr};\r
+    void MusicListButtonOnClick();\r
     VolumeSettingView *volumeSettingView{nullptr};\r
 };\r
 \r
@@ -165,7 +162,9 @@ public:
     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 OnDragChangMusicPlayerSourceView(const DragEvent& event);\r
+    void OnDragChangMusicPlayerListView(const DragEvent& event);\r
+    void OnDragChangMusicPlayerDeleteView(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
@@ -240,7 +239,6 @@ public:
     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
index 7d177e0..1062b15 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:03\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-08 18:43:24\r
+ * @LastEditTime: 2024-08-09 18:19:34\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h\r
  */\r
 \r
@@ -81,10 +81,6 @@ namespace OHOS
         void SetVolumeAddOne(void);\r
         void SetPlayerCtrVolume(float leftVolume, float rightVolume);\r
 \r
-        void SetPlayerListGroupStatus(bool status);\r
-        void ShowUpDelSongView(void);\r
-        void SetPlayerDelSongViewStatus(bool status);\r
-\r
         UIButton *GetMusicListButton(void);\r
         UIButton *GetPreButton(void);\r
         UIButton *GetNextButton(void);\r
@@ -92,8 +88,9 @@ namespace OHOS
         UIButton *GetOptionsButton(void);\r
         UIButton *GetSoundButton(void);\r
         UICheckBox *GetPlayerButton(void);\r
+        PlayersCaseListAdapter *GetMusicListAdapter(void);\r
 \r
-        UIList *GetPlayerList(void);\r
+        UIList *GetMusicListList(void);\r
         UICircleProgress *GetPlaybackProgress(void);\r
         UICheckBox::UICheckBoxState GetPlayerButtonState(void);\r
 \r
@@ -107,6 +104,8 @@ namespace OHOS
         bool ChangeToMainMusicPlayerView(int16_t thisView);\r
         bool ChangeToMusicSourceView(int16_t thisView);\r
         bool ChangeToVolumeControlView(int16_t thisView);\r
+        bool ChangeToMusicListView(int16_t thisView);\r
+        bool ChangeToMusicDeleteView(int16_t thisView);\r
 \r
     private:\r
         UIButton *PlayerViewButtonInit(ButtonConfig &buttonconfig);\r
@@ -118,6 +117,7 @@ namespace OHOS
         bool CreatePlayerButtonView(void);\r
         bool CreatePlayerScrollView(void);\r
         bool CreatePlayerView(void);\r
+        UIViewGroup *CreateMusicListGroupView(void);\r
         void ClearAll(void);\r
         bool LoadPlayerButtonImage(UIButton *button, uint32_t resId);\r
         bool LoadPlayerCheckBoxButtonImage(UICheckBox *button, uint32_t resId, uint32_t hlResId);\r
@@ -140,6 +140,7 @@ namespace OHOS
         VolumeSettingView *volumeSettingView{nullptr};         // 声音设置\r
         MusicPlayerSourceView *musicPlayerSourceView{nullptr}; // 音乐来源\r
         PlayerListDelSongView *playerListDelSongView{nullptr}; // 音乐删除视图\r
+        UIViewGroup *musicListGroupView{nullptr};              // 音乐列表视图\r
 \r
     private:\r
         UIView::OnClickListener *clickListener{nullptr};\r
@@ -157,10 +158,8 @@ namespace OHOS
         UILabelExt *MusciSourceLabel{nullptr};             // 音乐来源标签\r
         UILabelExt *PhoneMusicConnectStatusLabel{nullptr}; // 手机音乐连接状态标签\r
 \r
-        UIScrollView *DelSongView{nullptr};\r
-\r
-        UIScrollView *listGroup{nullptr};              // 音乐列表容器视图\r
-        UILabel *musicListTitle{nullptr};              // 音乐列表的标题\r
+        UIScrollView *musicListScrollView{nullptr};    // 音乐列表容器视图\r
+        UILabelExt *musicListTitle{nullptr};           // 音乐列表的标题\r
         UIList *musicList{nullptr};                    // 音乐列表\r
         PlayersCaseListAdapter *musicAdapter{nullptr}; // 音乐列表适配器\r
 \r
index 34737b8..434c4aa 100644 (file)
@@ -55,6 +55,7 @@ namespace OHOS
             UpdateBluetoothHeadSetViewIsVisible();\r
 \r
             // 1.a2dp未连接,向手机发起a2dp连接\r
+            // 如果蓝牙没连接直接是跳转到蓝牙连接失败视图,连接了就有一个主动去连手机的a2dp过程,5秒超市\r
 \r
             playersPresenter->UpdatePlayerView();\r
         }\r
@@ -74,80 +75,6 @@ namespace OHOS
         return true;\r
     }\r
 \r
-    // class BluetoothOnClickListener : public UIView::OnClickListener\r
-    // {\r
-    // public:\r
-    //     BluetoothOnClickListener(UIView *view) : view_(view) {}\r
-    //     ~BluetoothOnClickListener() {}\r
-\r
-    //     bool OnClick(UIView &view, const ClickEvent &event) override\r
-    //     {\r
-    //         UNUSED(view);\r
-    //         UNUSED(event);\r
-    //         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListener OnClick");\r
-    //         MusicPlayerSourceView *bluetoothView = MusicPlayerSourceView::GetInstance();\r
-    //         PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance();\r
-    //         ImageInfo *image;\r
-    //         if (bluetoothView == nullptr)\r
-    //         {\r
-    //             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView is nullptr");\r
-    //             return false;\r
-    //         }\r
-    //         if (view_ == (UIView *)bluetoothView->GetWatchButton())\r
-    //         {\r
-    //             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "watchButton OnClick"); // 手表音乐\r
-    //             image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES);\r
-    //             playersPresenter->SetOptionsButtonImageStyle(image);\r
-    //             playersPresenter->SetPhoneMusicConnectStatusLabelIsVisible(false);\r
-    //             playersPresenter->SetMusicListButtonIsVisible(true);\r
-    //             playersPresenter->SetMusicSourceSetText("本地音乐");\r
-    //         }\r
-    //         else if (view_ == (UIView *)bluetoothView->GetPhoneButton())\r
-    //         {\r
-    //             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneButton OnClick"); // 手机音乐\r
-    //             image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PHONE_COLOR, PLAYER_IAMGES);\r
-    //             playersPresenter->SetOptionsButtonImageStyle(image);\r
-    //             playersPresenter->SetPhoneMusicConnectStatusLabelIsVisible(true);\r
-    //             playersPresenter->SetMusicListButtonIsVisible(false);\r
-    //             /* -------------------------------------------------------------------------- */\r
-    //             // 以后会用\r
-    //             // std::string phonemusic_connect_status_text = "";\r
-    //             // if(获取连接状态。。。)\r
-    //             // {\r
-    //             //     获取成功。。。\r
-    //             //     phonemusic_connect_status_text = "已连接";\r
-    //             // }\r
-    //             // else\r
-    //             // {\r
-    //             //     获取失败。。。\r
-    //             //     phonemusic_connect_status_text = "未连接";\r
-    //             // }\r
-    //             // playersPresenter->SetPhoneMusicConnectStatusSetText(phonemusic_connect_status_text.c_str());\r
-    //             /* -------------------------------------------------------------------------- */\r
-    //             playersPresenter->SetPhoneMusicConnectStatusSetText("未连接");\r
-    //             playersPresenter->SetMusicSourceSetText("手机音乐"); // 还有小bug,切换到其他界面时标签内容为“手机音乐”,会被还原成本地音乐\r
-    //         }\r
-    //         else if (view_ == (UIView *)bluetoothView->GetSettingButton())\r
-    //         {\r
-    //             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "settingButton OnClick");\r
-    //             image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_EARPHONE_COLOR, PLAYER_IAMGES);\r
-    //             playersPresenter->SetOptionsButtonImageStyle(image);\r
-    //             JumpView *jumpView = JumpView::GetInstance();\r
-    //             if (jumpView == nullptr)\r
-    //             {\r
-    //                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
-    //                 return false;\r
-    //             }\r
-    //             jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,\r
-    //                                  JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
-    //         }\r
-    //         return true;\r
-    //     }\r
-\r
-    // private:\r
-    //     UIView *view_ = nullptr;\r
-    // };\r
-\r
     void MusicPlayerSourceView::ClearAll()\r
     {\r
         if (group != nullptr)\r
@@ -156,57 +83,57 @@ namespace OHOS
             if (scrollView != nullptr)\r
             {\r
                 scrollView->RemoveAll();\r
-                if (titleLabel)\r
+                if (titleLabel != nullptr)\r
                 {\r
                     delete titleLabel;\r
                     titleLabel = nullptr;\r
                 }\r
-                if (phoneLableButton)\r
+                if (phoneLableButton != nullptr)\r
                 {\r
                     delete phoneLableButton;\r
                     phoneLableButton = nullptr;\r
                 }\r
-                if (watchLableButton)\r
+                if (watchLableButton != nullptr)\r
                 {\r
                     delete watchLableButton;\r
                     watchLableButton = nullptr;\r
                 }\r
-                if (bluetoothHeadsetLableButton)\r
+                if (bluetoothHeadsetLableButton != nullptr)\r
                 {\r
                     delete bluetoothHeadsetLableButton;\r
                     bluetoothHeadsetLableButton = nullptr;\r
                 }\r
-                if (phoneImage)\r
+                if (phoneImage != nullptr)\r
                 {\r
                     delete phoneImage;\r
                     phoneImage = nullptr;\r
                 }\r
-                if (watchImage)\r
+                if (watchImage != nullptr)\r
                 {\r
                     delete watchImage;\r
                     watchImage = nullptr;\r
                 }\r
-                if (bluetoothHeadsetImage)\r
+                if (bluetoothHeadsetImage != nullptr)\r
                 {\r
                     delete bluetoothHeadsetImage;\r
                     bluetoothHeadsetImage = nullptr;\r
                 }\r
-                if (phoneLabel)\r
+                if (phoneLabel != nullptr)\r
                 {\r
                     delete phoneLabel;\r
                     phoneLabel = nullptr;\r
                 }\r
-                if (watchLabel)\r
+                if (watchLabel != nullptr)\r
                 {\r
                     delete watchLabel;\r
                     watchLabel = nullptr;\r
                 }\r
-                if (bluetoothHeadsetLabel)\r
+                if (bluetoothHeadsetLabel != nullptr)\r
                 {\r
                     delete bluetoothHeadsetLabel;\r
                     bluetoothHeadsetLabel = nullptr;\r
                 }\r
-                if (bluetoothHeadsetConnectState)\r
+                if (bluetoothHeadsetConnectState != nullptr)\r
                 {\r
                     delete bluetoothHeadsetConnectState;\r
                     bluetoothHeadsetConnectState = nullptr;\r
index 83ac59b..d857da0 100644 (file)
@@ -29,39 +29,56 @@ namespace OHOS
     void PlayerListDelSongView::ClearAll(void)
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::ClearAll");
-        if (scrollView != nullptr)
+        if (group != nullptr)
         {
-            scrollView->RemoveAll();
+            group->RemoveAll();
 
-            if (title != nullptr)
+            if (dragListener != nullptr)
             {
-                delete title;
-                title = nullptr;
+                delete dragListener;
+                dragListener = nullptr;
             }
-
-            if (deleteNotelabel != nullptr)
-            {
-                delete deleteNotelabel;
-                deleteNotelabel = nullptr;
-            }
-            if (songNameLabel != nullptr)
-            {
-                delete songNameLabel;
-                songNameLabel = nullptr;
-            }
-            if (ensureDeleteButton != nullptr)
+            if (buttonClickListener != nullptr)
             {
-                delete ensureDeleteButton;
-                ensureDeleteButton = nullptr;
+                delete buttonClickListener;
+                buttonClickListener = nullptr;
             }
-            if (cancelDeleteButton != nullptr)
+            if (scrollView != nullptr)
             {
-                delete cancelDeleteButton;
-                cancelDeleteButton = nullptr;
-            }
+                scrollView->RemoveAll();
+
+                if (title != nullptr)
+                {
+                    delete title;
+                    title = nullptr;
+                }
+
+                if (deleteNotelabel != nullptr)
+                {
+                    delete deleteNotelabel;
+                    deleteNotelabel = nullptr;
+                }
+                if (songNameLabel != nullptr)
+                {
+                    delete songNameLabel;
+                    songNameLabel = nullptr;
+                }
+                if (ensureDeleteButton != nullptr)
+                {
+                    delete ensureDeleteButton;
+                    ensureDeleteButton = nullptr;
+                }
+                if (cancelDeleteButton != nullptr)
+                {
+                    delete cancelDeleteButton;
+                    cancelDeleteButton = nullptr;
+                }
 
-            delete scrollView;
-            scrollView = nullptr;
+                delete scrollView;
+                scrollView = nullptr;
+            }
+            delete group;
+            group = nullptr;
         }
     }
 
@@ -74,6 +91,7 @@ namespace OHOS
         songNameLabel->Invalidate();
     }
 
+    // 删除歌曲文件
     void PlayerListDelSongView::DeleteSongNameFile(void)
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " whill Deleted file:", delSongName.c_str());
@@ -89,6 +107,16 @@ namespace OHOS
         }
     }
 
+    UIButton *PlayerListDelSongView::GetEnsureDeleteButton(void)
+    {
+        return ensureDeleteButton;
+    }
+
+    UIButton *PlayerListDelSongView::GetCancelDeleteButton(void)
+    {
+        return cancelDeleteButton;
+    }
+
     UILabelExt *PlayerListDelSongView::PlayerListDelSongViewLabelInit(LabelConfig &labelconfig)
     {
         UILabelExt *label = new UILabelExt();
@@ -114,7 +142,6 @@ namespace OHOS
             return nullptr;
         }
         button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);
-        button->SetViewId(buttonconfig.ViewId);
         button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
         button->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
         button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED);
@@ -128,13 +155,13 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::CreatePlayerListDelSongViewLabel");
         LabelConfig labelConfig = {
             .left = 83,
-            .top = 52,
+            .top = 50,
             .width = 300,
             .height = 35,
             .fontSize = 30,
             .lineHeigh = 35,
             .textId = STR_MUSIC_LIST,
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,
         };
         title = PlayerListDelSongViewLabelInit(labelConfig);
         if (title == nullptr)
@@ -152,7 +179,8 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deleteNotelabel new fail!");
             return false;
         }
-        deleteNotelabel->SetText("是否删除");
+        // deleteNotelabel->SetText("是否永久删除");
+        deleteNotelabel->SetTextId(STR_DELETE_PERMANENTLY);
         deleteNotelabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
         /* -------------------------------------------------------------------------- */
         labelConfig.top = 220;
@@ -176,26 +204,24 @@ namespace OHOS
             .y = 299,
             .w = 100,
             .h = 100,
-            .ViewId = CANCEL_DELETE_BUTTON,
             .src = PNG_SYSTEM_CHECK_OFF_IMAGE,
         };
-        ensureDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
-        if (ensureDeleteButton == nullptr)
+        cancelDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
+        if (cancelDeleteButton == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureDeleteButton new fail!");
             return false;
         }
         /* -------------------------------------------------------------------------- */
         buttonconfig.x = 256;
-        buttonconfig.ViewId = ENSURE_DELETE_BUTTON,
         buttonconfig.src = PNG_SYSTEM_CHECK_ON_IMAGE;
-        cancelDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
-        if (cancelDeleteButton == nullptr)
+        ensureDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
+        if (ensureDeleteButton == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cancelDeleteButton new fail!");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureDeleteButton new fail!");
             return false;
         }
-        UIView::OnClickListener *buttonClickListener = static_cast<UIView::OnClickListener *>(ButtonOnClickListener::GetInstance());
+        buttonClickListener = static_cast<UIView::OnClickListener *>(new ButtonOnClickListener());
         if (buttonClickListener == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener::GetInstance fail");
@@ -219,22 +245,40 @@ namespace OHOS
                 return false;
             }
             scrollView->SetPosition(0, 0, 466, 466);
-            // UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(AiVoicePresenter::GetInstance());
-            // if (dragListener == nullptr)
-            // {
-            //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::dragListener new fail!");
-            //     return false;
-            // }
-            // scrollView->SetOnDragListener(dragListener);
             scrollView->SetTouchable(true);
             scrollView->SetDraggable(true);
         }
         return true;
     }
 
-    UIScrollView *PlayerListDelSongView::InitDelSongView()
+    UIViewGroup *PlayerListDelSongView::CreatePlayerListDelSongView()
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::InitDelSongView");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::CreatePlayerListDelSongView");
+        if (group == nullptr)
+        {
+            group = new UIViewGroup();
+            if (group == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
+                return nullptr;
+            }
+        }
+        group->SetPosition(0, 0, 466, 466);
+        group->SetStyle(STYLE_BACKGROUND_OPA, 0);
+        group->SetTouchable(true);
+        group->SetDraggable(true);
+        group->SetIntercept(true);
+        group->SetViewId(MUSIC_PLAYER_DELETE_VIEW);
+        if (dragListener == nullptr)
+        {
+            dragListener = static_cast<UIView::OnDragListener *>(new PlayerOnDragListener());
+            if (dragListener == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener new fail");
+                return nullptr;
+            }
+        }
+        group->SetOnDragListener(dragListener);
         if (!CreatePlayerListDelSongViewScrollView() || !CreatePlayerListDelSongViewLabel() || !CreatPlayerListDelSongViewButton())
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::InitDelSongView fail!!");
@@ -244,8 +288,9 @@ namespace OHOS
         scrollView->Add(songNameLabel);
         scrollView->Add(ensureDeleteButton);
         scrollView->Add(cancelDeleteButton);
+        group->Add(scrollView);
 
-        return scrollView;
+        return group;
     }
 
 }
index a264c0c..0ef6f0c 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-12 14:15:45
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-06 16:18:03
+ * @LastEditTime: 2024-08-09 17:34:29
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp
  */
 #include "player/include/PlayerListitemView.h"
@@ -13,10 +13,10 @@ namespace OHOS
 
     PlayerListItemView::PlayerListItemView()
     {
-        SetPosition(0, 0, 332, 78); // 每一首歌曲的itemview宽高要配置好,因为每一首加到list歌曲都是以这个视图为基准
+        SetPosition(0, 0, 330, 70);
         SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
         SetStyle(STYLE_BACKGROUND_OPA, 255);
-        SetTouchable(true);
+        SetTouchable(false);
         SetUpChild();
         Add(&sLabel);
         Add(&sButton);
@@ -33,28 +33,34 @@ namespace OHOS
     void PlayerListItemView::SetItemInfo(const PlayerListItem itemInfo)
     {
         sItemInfo = itemInfo;
-        sLabel.SetText(itemInfo.label);
+        sLabel.SetText(itemInfo.musicName);
+        if (itemInfo.listener != nullptr)
+        {
+            sLabel.SetOnClickListener(itemInfo.listener);
+            sButton.SetOnClickListener(itemInfo.listener);
+        }
     }
 
     /// @brief 设置每一个itemview上的组件
     void PlayerListItemView::SetUpChild()
     {
-        sLabel.SetPosition(0, 0, 200, 40);
+        sLabel.SetPosition(0, 0, 260, 70);
         sLabel.SetStyle(STYLE_TEXT_FONT, 30);
-        sLabel.SetStyle(STYLE_LINE_HEIGHT, 36);
-        sLabel.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+        sLabel.SetStyle(STYLE_LINE_HEIGHT, 35);
+        sLabel.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
         sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+        sLabel.SetRollSpeed(70);
         sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        sLabel.SetTouchable(true);
+        sLabel.SetAlign(TEXT_ALIGNMENT_LEFT,TEXT_ALIGNMENT_TOP);
 
-        sButton.SetPosition(292, 0, 78, 78);
+        sButton.SetPosition(260, 0, 70, 70);
         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, image);
-        sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4fc34c, UIButton::PRESSED);
-        sButton.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
-        sButton.SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
+        sButton.SetImagePosition(30, 0);
+        sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);
     }
 
     /// @brief 获取list歌单的中每首歌的在list的下标
@@ -64,4 +70,32 @@ namespace OHOS
         return sItemInfo.index;
     }
 
+    void PlayerListItemView::UpdateItemViewStyle(bool isplaying)
+    {
+        ImageInfo *image;
+        if (isplaying)
+        {
+            image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAYING, PLAYER_IAMGES);
+            if (image == nullptr)
+            {
+                return;
+            }
+            sButton.SetImageSrc(image, image);
+            sButton.SetTouchable(false);
+            sLabel.SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+        }
+        else
+        {
+            image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES);
+            if (image == nullptr)
+            {
+                return;
+            }
+            sButton.SetImageSrc(image, image);
+            sButton.SetTouchable(true);
+            sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+        }
+        Invalidate();
+    }
+
 }
\ No newline at end of file
index 63a7437..bbeb2e5 100644 (file)
  * Create: 2021-07-26\r
  */\r
 #include <string>\r
-#include "player/include/PlayersCaseListAdapter.h"\r
+#include "PlayersCaseListAdapter.h"\r
 #include "gfx_utils/list.h"\r
 #include "player/include/PlayersView.h"\r
 #include "player/include/PlayersPresenter.h"\r
-#include "wearable_log.h"\r
 #include "player/include/PlayersModel.h"\r
 #include "player/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
+#include "wearable_log.h"\r
 \r
-PlayersCaseListAdapter::~PlayersCaseListAdapter()\r
+namespace OHOS\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");\r
-    delete listener;\r
-    listener = nullptr;\r
-\r
-    g_PlayersCaseListAdapter = nullptr;\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
-    if(p_BtnOnClickListListener != nullptr)\r
+    class BtnOnClickListListener : public UIView::OnClickListener\r
     {\r
-        delete p_BtnOnClickListListener;\r
-        p_BtnOnClickListListener = nullptr;\r
-    }\r
-}\r
+    public:\r
+        BtnOnClickListListener() {}\r
+        ~BtnOnClickListListener() {}\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
 \r
-PlayersCaseListAdapter *PlayersCaseListAdapter::GetInstance(void)\r
-{\r
-    return g_PlayersCaseListAdapter;\r
-}\r
+    private:\r
+        void BtnOnListData(UIView &view);\r
+        char *musicPlayName{nullptr};\r
+        int16_t index_{0};\r
+    };\r
 \r
-uint16_t PlayersCaseListAdapter::GetCount()\r
-{\r
-    return PlayersListGroup::GetInstance()->GetCase().Size();\r
-}\r
+    bool BtnOnClickListListener::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener OnClick:");\r
 \r
+        UNUSED(event);\r
+        int ret;\r
+        int32_t playerState;                                         /*获取Player的状态*/\r
+        uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM; /*获取音乐播放和暂停复选按钮的状态*/\r
+        PlayersView *playersView = PlayersView::GetInstance();\r
+        if (playersView == nullptr)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");\r
+            return false;\r
+        }\r
+        BtnOnListData(view);\r
+        /* --------------------------- 若点击的是View类型是Button --------------------------- */\r
+        if (view.GetViewType() == UIViewType::UI_BUTTON)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetViewType = %d", view.GetViewType());\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d ,uri = %s.", view.GetViewIndex(), musicPlayName);\r
+            playersView->ChangeView(PlayersView::MUSIC_LIST_VIEW,PlayersView::MUSIC_DELETE_VIEW);\r
+            return true;\r
+        }\r
+        /* -------------------------------------------------------------------------- */\r
+        // 标记当前播放歌曲index_\r
+        PlayersModel::GetInstance()->SetCurrentIndex(index_);\r
+        // 本地播放文件路径和状态\r
+        std::string strSrcMusic(APP_MUSIC_PATH);\r
+        std::string tempStr("/");\r
+        std::string strName = musicPlayName;\r
+        PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName); // 设置播放路径Uri\r
 \r
-void BtnOnClickListListener::SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index)\r
-{\r
-    ImageInfo *imagePlaying = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAY, 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,imagePlaying);\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->GetPlayerListDelSongView()->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
+        state = playersView->GetPlayerButtonState();\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state);\r
+        if (state == UICheckBox::UICheckBoxState::UNSELECTED)\r
+        {\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
+            {\r
+                ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);\r
+            }\r
+            PlayersModel::GetInstance()->PlayerStat(); // 播放\r
+        }\r
+        else if (state == UICheckBox::UICheckBoxState::SELECTED)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");\r
+            PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
+            if (playerState == PlayerStates::PLAYER_STARTED)\r
+            {\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
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d ,uri = %s.", PlayersModel::GetInstance()->GetCurrentIndex(), PlayersModel::GetInstance()->GetPlayerUri().c_str());\r
+        return true;\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->SetPlayerListGroupStatus(false);//这是点击歌曲后就会播放歌曲歌单隐藏\r
-    /* -------------------------------------------------------------------------- */\r
-    SongClick(P_PlayersCaseListAdapter,index_);\r
-    for(int i= 0;i<P_PlayersCaseListAdapter->GetCount();i++)\r
+\r
+    void BtnOnClickListListener::BtnOnListData(UIView &view)\r
     {\r
-        if(i != index_)\r
+        // index_ = view.GetViewIndex();\r
+        index_ = view.GetParent()->GetViewIndex();\r
+        List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
+        ListNode<PlayerCaseInfo> *node = playersCaseList.Begin();\r
+        for (uint16_t i = 0; i < index_; i++)\r
         {\r
-           SongNotClick(P_PlayersCaseListAdapter,i);\r
+            node = node->next_;\r
         }\r
+        musicPlayName = node->data_.sliceId;\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
+    PlayersCaseListAdapter::~PlayersCaseListAdapter()\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");\r
+        if (listener != nullptr)\r
+        {\r
+            delete listener;\r
+            listener = nullptr;\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
+    uint16_t PlayersCaseListAdapter::GetCount()\r
     {\r
-        sliceId_ = node->data_.sliceId;\r
+        return PlayersListGroup::GetInstance()->GetCase().Size();\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
+    UIView *PlayersCaseListAdapter::GetView(UIView *inView, int16_t index)\r
     {\r
-        listener = new BtnOnClickListListener();\r
-        p_BtnOnClickListListener = new BtnOnClickListListener();\r
-        if(listener == nullptr)\r
+        List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
+        if (playersCaseList.IsEmpty())\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
+        if ((index > playersCaseList.Size() - 1) || (index < 0))\r
+        {\r
+            return nullptr;\r
+        }\r
+        ListNode<PlayerCaseInfo> *node = playersCaseList.Begin();\r
+        for (uint16_t i = 0; i < index; i++)\r
+        {\r
+            node = node->next_;\r
+        }\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
+        /* -------------------------------------------------------------------------- */\r
+        PlayerListItemView *item = nullptr;\r
+        PlayerListItem listitemData;\r
+\r
+        if (inView == nullptr)\r
+        {\r
+            item = new PlayerListItemView();\r
+        }\r
+        else\r
+        {\r
+            item = static_cast<PlayerListItemView *>(inView);\r
+        }\r
+        if (PlayersModel::GetInstance()->GetCurrentIndex() == index)\r
+        {\r
+            item->UpdateItemViewStyle(true);\r
+        }\r
+        else\r
+        {\r
+            item->UpdateItemViewStyle(false);\r
+        }\r
+        if (listener == nullptr)\r
+        {\r
+            listener = new BtnOnClickListListener();\r
+            if (listener == nullptr)\r
+            {\r
+                return nullptr;\r
+            }\r
+        }\r
+        listitemData.index = index;\r
+        listitemData.musicName = songName;\r
+        listitemData.listener = listener;\r
+        item->SetItemInfo(listitemData);\r
+        return item;\r
     }\r
-    return listitem;\r
-    \r
 }\r
-} // namespace OHOS\r
index 141305f..4d7b87b 100644 (file)
@@ -171,20 +171,15 @@ void PlayersModel::SetCurrentIndex(int16_t value)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersModel::SetCurrentIndex,value = %d",value);
     currentIndex = value;
-    /* -------------------------------------------------------------------------- */
-    m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();
-    if(m_PlayersCaseListAdapter!=nullptr)
-    {
-        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 *playersView = PlayersView::GetInstance();
+    if (playersView == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView null!");
+        return;
+    }
+    if(playersView->GetMusicListList()!=nullptr){
+        playersView->GetMusicListList()->RefreshList();
     }
-    PlayersView::GetInstance()->GetPlayerList();
     /* -------------------------------------------------------------------------- */
 }
 
@@ -750,6 +745,12 @@ void  PlayersModel::GetDuration(int64_t &duration)
     duration = duration_;
 }
 
+/*获取音乐播放路径*/
+std::string PlayersModel::GetMusicPlayPath(void)
+{
+    return musicPlayPath;
+}
+
 bool PlayersModel::GetMusicSource()
 {
     return musicSourceFlag;
index fa2de10..3452ab1 100644 (file)
@@ -450,7 +450,7 @@ char *PlayersListGroup::GetCase(int16_t index)
     return nullptr;\r
 }\r
 \r
-// è¯»å\8f\96æ\96\87件夹ä¸\8bæ\96\87ä»¶å\90\8dä¿¡æ\81¯\r
+// è¯»å\8f\96æ\8c\87å®\9aç\9b®å½\95ï¼\88APP_MUSIC_PATHï¼\89ä¸\8bç\9a\84æ\96\87ä»¶ï¼\8cå¹¶å°\86æ\96\87ä»¶å\90\8dç­\89ä¿¡æ\81¯å¡«å\85\85å\88°æ\8f\90ä¾\9bç\9a\84å\88\97表中\r
 int PlayersListGroup::GetAllFiles(List<PlayerCaseInfo> *playersCaseList)\r
 {\r
     int ret;\r
@@ -490,7 +490,7 @@ ButtonOnClickListener::~ButtonOnClickListener()
     volumeSettingView = nullptr;\r
 }\r
 \r
-// Button OnClick\r
+/*播放或暂停按钮被点击时调用*/\r
 void ButtonOnClickListener::PlayerButtonOnClick()\r
 {\r
     PlayersView *playersView = PlayersView::GetInstance();\r
@@ -533,18 +533,6 @@ void ButtonOnClickListener::PlayerButtonOnClick()
         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
 /*当声音按钮被点击时候调用*/\r
@@ -582,6 +570,18 @@ void ButtonOnClickListener::OptionsButtonOnClick()
     playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_SOURCE_VIEW);\r
     return;\r
 }\r
+//当音乐列表按钮被点击时候调用\r
+void ButtonOnClickListener::MusicListButtonOnClick()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener MusicListButtonOnClick");\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OptionsButtonOnClick playersView nullptr err");\r
+        return;\r
+    }\r
+    playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
+    return;\r
+}\r
 \r
 void ButtonOnClickListener::PlayerModelButtonOnClick()\r
 {\r
@@ -642,18 +642,20 @@ bool ButtonOnClickListener::OnClick(UIView& view, const ClickEvent& event)
         SoundButtonOnClick();\r
     } else if (&view == (UIView *)playersView->GetOptionsButton()) {\r
         OptionsButtonOnClick();\r
-    }else if(&view == playersView->GetMusicListButton())\r
-    {\r
-        PlayersPresenter::GetInstance()->ShowPlayerListGroup();\r
+    }else if(&view == (UIView *)playersView->GetMusicListButton()) {\r
+        MusicListButtonOnClick();\r
     }\r
-    else if(strcmp(view.GetViewId(),ENSURE_DELETE_BUTTON) == 0) //删除音乐\r
+    if(playersView->GetPlayerListDelSongView()!=nullptr && playersView->GetPlayerListDelSongView()->GetEnsureDeleteButton()!=nullptr) \r
     {\r
+        //删除音乐回到音乐列表\r
         playersView->GetPlayerListDelSongView()->DeleteSongNameFile();\r
+        PlayersListGroup::GetInstance()->SetUpListCase();\r
+        playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
     }\r
-    else if(strcmp(view.GetViewId(),CANCEL_DELETE_BUTTON) == 0) //不删除音乐\r
+    else if(playersView->GetPlayerListDelSongView()!=nullptr && playersView->GetPlayerListDelSongView()->GetCancelDeleteButton()!=nullptr) \r
     {\r
-        playersView->SetPlayerDelSongViewStatus(false);\r
-        playersView->SetPlayerListGroupStatus(true);\r
+        //不删除音乐回到音乐列表\r
+        playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
     }\r
     return true;\r
 }\r
@@ -937,9 +939,9 @@ void PlayerOnDragListener::OnDragChangView(const DragEvent& event, int16_t hideV
 }\r
 \r
 /*从音乐来源视图回到音乐主视图*/\r
-void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event)\r
+void PlayerOnDragListener::OnDragChangMusicPlayerSourceView(const DragEvent& event)\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangBluetoothView");\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerSourceView");\r
     if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
         PlayersView *playersView = PlayersView::GetInstance();\r
         if (playersView == nullptr) {\r
@@ -951,6 +953,35 @@ void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event)
     }\r
 }\r
 \r
+/*从音乐列表视图回到音乐主视图*/\r
+void PlayerOnDragListener::OnDragChangMusicPlayerListView(const DragEvent& event)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerListView");\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
+        PlayersView *playersView = PlayersView::GetInstance();\r
+        if (playersView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+            return;\r
+        }\r
+        playersView->ChangeView(PlayersView::MUSIC_LIST_VIEW,PlayersView::MAIN_MUSICPLAYER_VIEW);\r
+        X_DRAG_FLAG = true;\r
+    }\r
+}\r
+\r
+/*从音乐删除视图回到音乐列表视图*/\r
+void PlayerOnDragListener::OnDragChangMusicPlayerDeleteView(const DragEvent& event)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerDeleteView");\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
+        PlayersView *playersView = PlayersView::GetInstance();\r
+        if (playersView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+            return;\r
+        }\r
+        playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
+        X_DRAG_FLAG = true;\r
+    }\r
+}\r
 void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event)\r
 {\r
     bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
@@ -1026,12 +1057,19 @@ bool PlayerOnDragListener::OnDragEnd(UIView& view, const DragEvent& event)
     } else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONS_VIEW) == 0) {\r
         OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
                         JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);\r
-    } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_SOURCE_VIEW) == 0) {\r
-        OnDragChangBluetoothView(event);\r
-        return false;\r
     } else if (strcmp(view.GetViewId(), BLUETOOTH_DEVICE_LIST_VIEW) == 0) {\r
         OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,\r
                         JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, false);\r
+    } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_SOURCE_VIEW) == 0) {\r
+        OnDragChangMusicPlayerSourceView(event);\r
+        return false;\r
+    } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_LIST_VIEW) == 0) {\r
+        OnDragChangMusicPlayerListView(event);\r
+        return false;\r
+    }\r
+    else if (strcmp(view.GetViewId(), MUSIC_PLAYER_DELETE_VIEW) == 0) {\r
+        OnDragChangMusicPlayerDeleteView(event);\r
+        return false;\r
     }\r
     return true;\r
 }\r
@@ -1380,19 +1418,4 @@ void PlayersPresenter::PlayerHeadsetReset(void)
 \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 63e20e0..8a79d71 100644 (file)
@@ -12,7 +12,6 @@
 #include "player/include/PlayersModel.h"\r
 #include "player/include/PlayersCaseListAdapter.h"\r
 #include "main/include/MainViewSample.h"\r
-#include "traing/training_card/include/TraingCardView.h"\r
 #include "wearable_log.h"\r
 #include "settings/include/SettingModel.h"\r
 namespace OHOS\r
@@ -38,27 +37,7 @@ namespace OHOS
             }\r
             RemoveAll();\r
             ClearAll();\r
-            if (listGroup)\r
-            {\r
-                listGroup->RemoveAll();\r
-                if (musicListTitle)\r
-                {\r
-                    delete musicListTitle;\r
-                    musicListTitle = nullptr;\r
-                }\r
-                if (musicAdapter)\r
-                {\r
-                    delete musicAdapter;\r
-                    musicAdapter = nullptr;\r
-                }\r
-                if (musicList)\r
-                {\r
-                    delete musicList;\r
-                    musicList = nullptr;\r
-                }\r
-                delete listGroup;\r
-                listGroup = nullptr;\r
-            }\r
+\r
             if (jumpView)\r
             {\r
                 delete jumpView;\r
@@ -142,11 +121,17 @@ namespace OHOS
     }\r
 \r
     /*获取音乐列表*/\r
-    UIList *PlayersView::GetPlayerList(void)\r
+    UIList *PlayersView::GetMusicListList(void)\r
     {\r
         return musicList;\r
     }\r
 \r
+    /*获取音乐列表的适配器*/\r
+    PlayersCaseListAdapter *PlayersView::GetMusicListAdapter(void)\r
+    {\r
+        return musicAdapter;\r
+    }\r
+\r
     /*获取声音设置视图*/\r
     VolumeSettingView *PlayersView::GetVolumeSettingView()\r
     {\r
@@ -169,6 +154,7 @@ namespace OHOS
         return play_or_pause_Button->GetState();\r
     }\r
 \r
+    // 设置播放或暂停按钮的状态\r
     void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)\r
     {\r
         if (play_or_pause_Button == nullptr)\r
@@ -179,66 +165,6 @@ namespace OHOS
         return play_or_pause_Button->SetState(state);\r
     }\r
 \r
-    /// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。\r
-    /// @param status\r
-    void PlayersView::SetPlayerListGroupStatus(bool status)\r
-    {\r
-        if (listGroup == nullptr)\r
-        {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");\r
-            return;\r
-        }\r
-        if (MainViewSample::GetInstance() != nullptr)\r
-        {\r
-            UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
-            if (vew != nullptr)\r
-            {\r
-                vew->SetVisible(!status);\r
-            }\r
-        }\r
-        if (TraingCardView::GetInstance() != nullptr)\r
-        {\r
-            UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
-            if (cardview != nullptr)\r
-            {\r
-                cardview->SetVisible(!status);\r
-            }\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
-        {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView DelSongView is NULL");\r
-            return;\r
-        }\r
-        if (MainViewSample::GetInstance() != nullptr)\r
-        {\r
-            UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
-            if (vew != nullptr)\r
-            {\r
-                vew->SetVisible(!status);\r
-            }\r
-        }\r
-        // /*增加训练卡片控制*/\r
-        if (TraingCardView::GetInstance() != nullptr)\r
-        {\r
-            UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
-            if (cardview != nullptr)\r
-            {\r
-                cardview->SetVisible(!status);\r
-            }\r
-        }\r
-        DelSongView->SetVisible(status);\r
-        RootView::GetInstance()->Invalidate();\r
-        return;\r
-    }\r
-\r
     void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)\r
     {\r
         PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);\r
@@ -249,86 +175,6 @@ namespace OHOS
         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
-        {\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
-        if (musicAdapter == nullptr)\r
-        {\r
-            musicAdapter = new PlayersCaseListAdapter();\r
-            if (musicAdapter == nullptr)\r
-            {\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicAdapter new fail");\r
-                return;\r
-            }\r
-        }\r
-        if (musicList == nullptr)\r
-        {\r
-            musicList = new UIList(UIList::VERTICAL);\r
-            if (musicList == nullptr)\r
-            {\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicList new fail");\r
-                return;\r
-            }\r
-            musicList->SetPosition(67, 138, 332, 500);\r
-            musicList->SetStartIndex(0);\r
-            musicList->SetAdapter(musicAdapter);\r
-        }\r
-        listGroup->Add(musicList);\r
-        RootView::GetInstance()->Add(listGroup);\r
-        UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
-        if (dragListener == nullptr)\r
-        {\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 (playerListDelSongView == nullptr)\r
-        {\r
-            playerListDelSongView = new PlayerListDelSongView();\r
-        }\r
-        DelSongView = playerListDelSongView->InitDelSongView();\r
-        RootView::GetInstance()->Add(DelSongView);\r
-        DelSongView->SetTouchable(true);\r
-        DelSongView->SetVisible(false);\r
-    }\r
-\r
     // 创建跳转视图\r
     void PlayersView::CreateJumpView(void)\r
     {\r
@@ -369,6 +215,98 @@ namespace OHOS
         }\r
     }\r
 \r
+    /*创建音乐列表视图*/\r
+    UIViewGroup *PlayersView::CreateMusicListGroupView(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceView");\r
+        if (musicListGroupView == nullptr)\r
+        {\r
+            musicListGroupView = new UIViewGroup();\r
+            if (musicListGroupView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListGroupView new fail");\r
+                return nullptr;\r
+            }\r
+        }\r
+        musicListGroupView->SetPosition(0, 0, 466, 466);\r
+        musicListGroupView->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+        musicListGroupView->SetTouchable(true);\r
+        musicListGroupView->SetDraggable(true);\r
+        musicListGroupView->SetIntercept(true);\r
+        musicListGroupView->SetViewId(MUSIC_PLAYER_LIST_VIEW);\r
+        if (nullptr == playerOnDragListener)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");\r
+            return nullptr;\r
+        }\r
+        musicListGroupView->SetOnDragListener(playerOnDragListener);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (musicListScrollView == nullptr)\r
+        {\r
+            musicListScrollView = new UIScrollView();\r
+            if (musicListScrollView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListScrollView new fail");\r
+                return nullptr;\r
+            }\r
+        }\r
+        musicListScrollView->SetPosition(0, 0, 466, 466);\r
+        musicListScrollView->SetScrollBlankSize(35);\r
+        musicListScrollView->SetReboundSize(35);\r
+        musicListScrollView->SetDirection(UIScrollView::VERTICAL);\r
+        /* -------------------------------------------------------------------------- */\r
+        musicListTitle = new UILabelExt();\r
+        if (musicListTitle == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListTitle new fail");\r
+            return nullptr;\r
+        }\r
+        musicListTitle->SetPosition(83, 50, 300, 35);\r
+        musicListTitle->SetStyle(STYLE_TEXT_FONT, 30);\r
+        musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        musicListTitle->SetTextId(STR_MUSIC_LIST);\r
+        musicListTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        musicListTitle->SetRollSpeed(70);\r
+        musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (musicAdapter == nullptr)\r
+        {\r
+            musicAdapter = new PlayersCaseListAdapter();\r
+            if (musicAdapter == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicAdapter new fail");\r
+                return nullptr;\r
+            }\r
+        }\r
+        if (musicList == nullptr)\r
+        {\r
+            musicList = new UIList(UIList::VERTICAL);\r
+            if (musicList == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicList new fail");\r
+                return nullptr;\r
+            }\r
+            musicList->SetPosition(68, 120, 330, 320);\r
+            musicList->SetStartIndex(0);\r
+            musicList->SetThrowDrag(true);\r
+            musicList->SetIntercept(true);\r
+            musicList->SetMaxScrollDistance(1000);\r
+            musicList->SetDragACCLevel(5);\r
+            musicList->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
+            musicList->SetReboundSize(35);\r
+            // 增加表冠控制\r
+            musicList->SetRotateFactor(1.0);\r
+            musicList->RequestFocus();\r
+            musicList->SetAdapter(musicAdapter);\r
+        }\r
+        musicListScrollView->Add(musicListTitle);\r
+        musicListScrollView->Add(musicList);\r
+        musicListGroupView->Add(musicListScrollView);\r
+        /* -------------------------------------------------------------------------- */\r
+        return musicListGroupView;\r
+    }\r
+\r
     /*删除容器上所有组件*/\r
     void PlayersView::ClearAll(void)\r
     {\r
@@ -426,12 +364,12 @@ namespace OHOS
                 delete soundButton;\r
                 soundButton = nullptr;\r
             }\r
-            if (MusciSourceLabel)\r
+            if (MusciSourceLabel != nullptr)\r
             {\r
                 delete MusciSourceLabel;\r
                 MusciSourceLabel = nullptr;\r
             }\r
-            if (PhoneMusicConnectStatusLabel)\r
+            if (PhoneMusicConnectStatusLabel != nullptr)\r
             {\r
                 delete PhoneMusicConnectStatusLabel;\r
                 PhoneMusicConnectStatusLabel = nullptr;\r
@@ -454,6 +392,38 @@ namespace OHOS
             delete musicPlayerSourceView;\r
             musicPlayerSourceView = nullptr;\r
         }\r
+        if (musicListGroupView != nullptr)\r
+        {\r
+            musicListGroupView->RemoveAll();\r
+            if (musicListScrollView != nullptr)\r
+            {\r
+                musicListScrollView->RemoveAll();\r
+                if (musicListTitle != nullptr)\r
+                {\r
+                    delete musicListTitle;\r
+                    musicListTitle = nullptr;\r
+                }\r
+                if (musicAdapter != nullptr)\r
+                {\r
+                    delete musicAdapter;\r
+                    musicAdapter = nullptr;\r
+                }\r
+                if (musicList != nullptr)\r
+                {\r
+                    delete musicList;\r
+                    musicList = nullptr;\r
+                }\r
+                delete musicListScrollView;\r
+                musicListScrollView = nullptr;\r
+            }\r
+            delete musicListGroupView;\r
+            musicListGroupView = nullptr;\r
+        }\r
+        if (playerListDelSongView != nullptr)\r
+        {\r
+            delete playerListDelSongView;\r
+            playerListDelSongView = nullptr;\r
+        }\r
 \r
         for (int i = MAIN_MUSICPLAYER_VIEW; i < MUSICPLAYERJUMPVIEWID_MAX; i++)\r
         {\r
@@ -712,7 +682,6 @@ namespace OHOS
         group[MAIN_MUSICPLAYER_VIEW]->Add(playbackProgress);\r
         group[MAIN_MUSICPLAYER_VIEW]->Add(play_or_pause_Button);\r
         group[MAIN_MUSICPLAYER_VIEW]->Add(music_list_button);\r
-        group[MAIN_MUSICPLAYER_VIEW]->Add(musicSourceButton);\r
         group[MAIN_MUSICPLAYER_VIEW]->Add(preMusicButton);\r
         group[MAIN_MUSICPLAYER_VIEW]->Add(nextMusicButton);\r
         group[MAIN_MUSICPLAYER_VIEW]->Add(playerModelButton);\r
@@ -817,13 +786,13 @@ namespace OHOS
             {\r
                 PhoneMusicConnectStatusLabelSetText(STR_CONNECTED); /*已连接*/\r
                 MusicSourceLabelSetText(STR_MOBILE_MUSIC);          // 手机音乐\r
-                PhoneMusicConnectStatusLabelColor(false);\r
+                PhoneMusicConnectStatusLabelColor(true);\r
             }\r
             else\r
             {\r
                 PhoneMusicConnectStatusLabelSetText(STR_DISCONNECTED); /*未连接*/\r
                 MusicSourceLabelSetText(STR_MOBILE_MUSIC);             // 手机音乐\r
-                PhoneMusicConnectStatusLabelColor(true);\r
+                PhoneMusicConnectStatusLabelColor(false);\r
             }\r
         }\r
         else\r
@@ -846,6 +815,13 @@ namespace OHOS
     bool PlayersView::InitView(void)\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView");\r
+        // changeView\r
+        CreateJumpView();\r
+        // OnClick\r
+        CreatePlayersPresenter();\r
+        // OnDrag\r
+        CreatePlayerOnDragListener();\r
+        /* -------------------------------------------------------------------------- */\r
         if (CreatePlayerView() == false)\r
         {\r
             return false;\r
@@ -853,18 +829,9 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */\r
         UpdatePlayerView();\r
         /* -------------------------------------------------------------------------- */\r
-        // changeView\r
-        CreateJumpView();\r
-        // OnClick\r
-        CreatePlayersPresenter();\r
-        // OnDrag\r
-        CreatePlayerOnDragListener();\r
-        // 按键设置\r
 \r
         PlayersListGroup::GetInstance()->SetUpListCase();\r
         PlayersModel::GetInstance()->PlayerInit();\r
-        ShowUpListView();\r
-        ShowUpDelSongView();\r
         SetTouchable(true);\r
         SetDraggable(true);\r
         return true;\r
@@ -1103,6 +1070,8 @@ namespace OHOS
         {PlayersView::MAIN_MUSICPLAYER_VIEW, &PlayersView::ChangeToMainMusicPlayerView},\r
         {PlayersView::MUSIC_SOURCE_VIEW, &PlayersView::ChangeToMusicSourceView},\r
         {PlayersView::MUSIC_VOLUME_CONTROL_VIEW, &PlayersView::ChangeToVolumeControlView},\r
+        {PlayersView::MUSIC_LIST_VIEW, &PlayersView::ChangeToMusicListView},\r
+        {PlayersView::MUSIC_DELETE_VIEW, &PlayersView::ChangeToMusicDeleteView},\r
     };\r
 \r
     /*根据传入的 interface 值,在 ViewMapper 数组中查找匹配的 viewId*/\r
@@ -1221,4 +1190,46 @@ namespace OHOS
         }\r
         return true;\r
     }\r
+\r
+    /*切换到音乐列表视图*/\r
+    bool PlayersView::ChangeToMusicListView(int16_t thisView)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicListView");\r
+        if (group[thisView] == nullptr)\r
+        {\r
+            UIViewGroup *groupview = CreateMusicListGroupView();\r
+            if (groupview == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            group[thisView] = groupview;\r
+            Add(group[thisView]);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    /*切换到音乐删除视图*/\r
+    bool PlayersView::ChangeToMusicDeleteView(int16_t thisView)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicDeleteView");\r
+        if (group[thisView] == nullptr)\r
+        {\r
+            playerListDelSongView = new PlayerListDelSongView();\r
+            if (playerListDelSongView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new playerListDelSongView fail");\r
+                return false;\r
+            }\r
+            UIViewGroup *groupview = playerListDelSongView->CreatePlayerListDelSongView();\r
+            if (groupview == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            group[thisView] = groupview;\r
+            Add(group[thisView]);\r
+        }\r
+        return true;\r
+    }\r
 }\r
index b1247b5..960138e 100644 (file)
@@ -1878,11 +1878,12 @@ int uapi_save_exc(void)
 
 void uapi_restore_factory_setting(void)
 {
-    char *filebuf[3] = {"/system/ConfigModel.json",
+    char *filebuf[] = {"/system/ConfigModel.json",
                     "/user/userdata",
-                    "/system/kvstore"
+                    "/system/kvstore",
+                    "/user/music"
                     };
-    for(int i = 0; i < 3; i++)
+    for(int i = 0; i < (sizeof(filebuf)/sizeof(filebuf[0])); i++)
         uapi_delete_files(filebuf[i]);
     
     bluetooth_factory_reset();