解决音乐播放器中音乐列表播放状态UI显示问题:如,索引0的歌曲若在播放中,在删除其他音乐后,当前音乐播放状态会变成未播放状态。 1494/2 1494/head
authorluozheng <1732036298@qq.com>
Thu, 5 Dec 2024 13:19:46 +0000 (21:19 +0800)
committerluozheng <1732036298@qq.com>
Thu, 5 Dec 2024 13:19:46 +0000 (21:19 +0800)
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListDelSongView.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

index e01aa52..9e8c3c9 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-12 18:24:31
+ * @LastEditTime: 2024-12-05 21:03:56
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h
  */
 
@@ -44,7 +44,7 @@ namespace OHOS
         virtual ~PlayerListDelSongView();
         static PlayerListDelSongView *GetInstance(void);
         UIViewGroup *CreatePlayerListDelSongView();
-        void SetTheDelSongLabelStyle(const char *songName);
+        void SetTheDelSongLabelStyle(const char *songName,int index);
         void DeleteSongNameFile(void);
         UIButton *GetEnsureDeleteButton(void);
         UIButton *GetCancelDeleteButton(void);
@@ -65,6 +65,7 @@ namespace OHOS
         UIButton *cancelDeleteButton{nullptr};
 
         std::string delSongName;
+        int deleteSongIndex{0};
         UIView::OnDragListener *dragListener{nullptr};
         UIView::OnClickListener *buttonClickListener{nullptr};
 
index 3d2eba0..febe0e3 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-10-19 14:38:21\r
+ * @LastEditTime: 2024-12-05 20:38:46\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h\r
  */\r
 \r
@@ -98,6 +98,7 @@ namespace OHOS
         PlayersCaseListAdapter *GetMusicListAdapter(void);\r
 \r
         UIList *GetMusicListList(void);\r
+        void RefreshMusicListList(void);\r
         UICircleProgress *GetPlaybackProgress(void);\r
         UICheckBox::UICheckBoxState GetPlayerButtonState(void);\r
 \r
index 26e96a3..3750833 100644 (file)
@@ -85,9 +85,10 @@ namespace OHOS
 
     /// @brief 设置歌曲名标签样式
     /// @param songName 歌曲名
-    void PlayerListDelSongView::SetTheDelSongLabelStyle(const char *songName)
+    void PlayerListDelSongView::SetTheDelSongLabelStyle(const char *songName,int index)
     {
         delSongName = songName;
+        deleteSongIndex = index;
         if (songNameLabel != nullptr)
         {
             songNameLabel->SetText(PlayersModel::GetInstance()->getHexMusicNameFromMusicName(songName).c_str());
@@ -103,7 +104,20 @@ namespace OHOS
 
         if (uapi_delete_files(path.c_str()))
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Deleted file: %s successed!", path.c_str());
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Deleted file: %s successed!", path.c_str());
+            int index = PlayersModel::GetInstance()->GetCurrentIndex();
+            if(deleteSongIndex < index)
+            {
+                if(index - 1 < 0)
+                {
+                    index = 0;
+                }
+                else
+                {
+                    index--;
+                }
+                PlayersModel::GetInstance()->SetCurrentIndex(index);
+            }
         }
         else
         {
index 3dfd4f5..9fc2d12 100644 (file)
@@ -56,7 +56,7 @@ namespace OHOS
             playersView->ChangeView(PlayersView::MUSIC_LIST_VIEW, PlayersView::MUSIC_DELETE_VIEW);\r
             if (playersView->GetPlayerListDelSongView())\r
             {\r
-                playersView->GetPlayerListDelSongView()->SetTheDelSongLabelStyle(musicPlayName);\r
+                playersView->GetPlayerListDelSongView()->SetTheDelSongLabelStyle(musicPlayName, view.GetViewIndex());\r
             }\r
             return true;\r
         }\r
@@ -105,6 +105,7 @@ namespace OHOS
             }\r
             PlayersModel::GetInstance()->PlayerStat();\r
         }\r
+        playersView->RefreshMusicListList();//刷新音乐列表\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 041edf4..1cde3a6 100644 (file)
@@ -181,16 +181,6 @@ void PlayersModel::SetCurrentIndex(int16_t value)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersModel::SetCurrentIndex,value = %d",value);
     currentIndex = value;
-    /* --------------------------------- 刷新音乐列表 --------------------------------- */
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView null!");
-        return;
-    }
-    if(playersView->GetMusicListList()!=nullptr){
-        playersView->GetMusicListList()->RefreshList();
-    }
-    /* -------------------------------------------------------------------------- */
 }
 
 int16_t PlayersModel::GetPlayerModel(void)
index 2450e80..987d006 100644 (file)
@@ -460,7 +460,7 @@ void PlayersListGroup::SetUpListCase()
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "musicName = %s,index = %d",playerCaseInfo.sliceId,playerCaseInfo.index);\r
         playersCaseList_->PushBack(playerCaseInfo);\r
     }\r
-    PlayersModel::GetInstance()->showIdToMusicNameMapData();\r
+    // PlayersModel::GetInstance()->showIdToMusicNameMapData();//关闭打印\r
 }\r
 \r
 List<PlayerCaseInfo>& PlayersListGroup::GetCase()\r
index 3503e33..8f2a9a7 100644 (file)
@@ -127,6 +127,15 @@ namespace OHOS
         return musicList;\r
     }\r
 \r
+    /*刷新音乐列表*/\r
+    void PlayersView::RefreshMusicListList(void)\r
+    {\r
+        if(musicList)\r
+        {\r
+            musicList->RefreshList();\r
+        }\r
+    }\r
+\r
     /*获取音乐列表的适配器*/\r
     PlayersCaseListAdapter *PlayersView::GetMusicListAdapter(void)\r
     {\r