Merge #1047 into sdk602patch0626 from refs/changes/1047/head
author罗正 <1732036298@qq.com>
Sat, 28 Sep 2024 23:36:24 +0000 (23:36 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Sat, 28 Sep 2024 23:36:24 +0000 (23:36 +0000)
Code review from 罗正

* refs/changes/1047/head: (9 commits squashed)

  - 解决天气内存泄漏

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 修复AI语音聆听中界面计时标签显示问题

  - 主界面view析构函数修改

  - 解决切换到手机音乐还可以播放本地音乐bug

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 解决#671,蓝牙设备名称只显示一个时需要固定不能,去掉下面横线bug

  - 解决#674,蓝牙搜索界面,优化重新搜索字样显示位置bug

  - 解决,#672,蓝牙耳机界面退出,稍微右滑就退出了bug

Signed-off-by: 罗正 <1732036298@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1047
15 files changed:
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothPresenter.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothCaseListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothDeviceListView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothEarListView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothItemView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
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/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorView.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportView.cpp

index 724d37d..6230e28 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-20 15:14:50
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-09-26 22:12:14
+ * @LastEditTime: 2024-09-28 10:30:19
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
  */
 #include "aivoice/include/AiVoiceModel.h"
@@ -861,16 +861,14 @@ namespace OHOS
     static void AIListeningCallbackProc(int data)
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AIListeningCallbackProc %d", LISTENING_TIMEOUT);
+        LISTENING_TIMEOUT--;
         if (LISTENING_TIMEOUT <= 0)
         {
             AiVoiceModel::GetInstance().StopListenAndRecordingUserQuestion(); //停止聆听用户问题
             AiVoiceModel::GetInstance().stop_listening_timer(); //停止聆听定时器
             if (AiVoiceView::GetInstance() && AivoiceListeningView::GetInstance() )
             {
-                AivoiceListeningView::GetInstance()->GetShowtimeoutLabel()->SetText("");
-                AivoiceListeningView::GetInstance()->GetShowtimeoutLabel()->Invalidate();
                 AiVoiceView::GetInstance()->ChangeView(AIVOICE_LISTENING_VIEWID, AIVOICE_THINKING_VIEWID); // 切换到思考中界面
-               
                 AiVoiceModel::GetInstance().AIVoice_StartTimer();
             }
         }
@@ -882,7 +880,6 @@ namespace OHOS
                 AivoiceListeningView::GetInstance()->GetShowtimeoutLabel()->Invalidate();
             }
         }
-        LISTENING_TIMEOUT--;
     }
     static void AIListeningCallback(int data)
     {
index c88853d..5753767 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-05-07 11:25:58
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-09-26 15:37:15
+ * @LastEditTime: 2024-09-28 14:18:24
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AiVoiceView.cpp
  */
 #include "aivoice/include/AiVoicePresenter.h"
@@ -588,6 +588,11 @@ namespace OHOS
             AiVoiceScrollView[thisView] = p_AivoiceListeningView->CreateAivoiceListeningView();
             container_->Add(AiVoiceScrollView[thisView]);
         }
+        if(p_AivoiceListeningView)
+        {
+            p_AivoiceListeningView->GetShowtimeoutLabel()->SetText("15");
+            p_AivoiceListeningView->GetShowtimeoutLabel()->Invalidate();
+        }
         AiVoiceModel::GetInstance().start_listening_timer();
         return true;
     }
index e6c7e10..50303a5 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:01\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-04 15:43:50\r
+ * @LastEditTime: 2024-09-28 18:06:32\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothPresenter.h\r
  */\r
 \r
@@ -44,6 +44,7 @@ public:
     ~BluetoothPresenter();\r
     bool OnClick(UIView &view, const ClickEvent &event) override;\r
     static BluetoothPresenter *GetInstance();\r
+    bool OnDrag(UIView& view, const DragEvent& event) override;\r
     bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
     bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
     void OnStart() override;\r
@@ -60,6 +61,7 @@ public:
     void ClickConnfailBackButton(void);\r
 private:\r
     BluetoothModel *bluetoothMode_{nullptr};\r
+    bool X_DRAG_FLAG{false};\r
 };\r
 } // namespace OHOS\r
 #endif\r
index 43b5246..313221d 100644 (file)
@@ -148,7 +148,7 @@ UIView *BluetoothCaseListAdapter::GetView(UIView *inView, int16_t index)
         return nullptr;
     }
     if ((static_cast<unsigned int>(index) > bluetoothCaseList.size() - 1) || (index < 0)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothCaseListAdapter::GetView %d %d", index, bluetoothCaseList.size());
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothCaseListAdapter::GetView %d %d", index, bluetoothCaseList.size());
         return nullptr;
     }
     std::list<BluetoothCaseInfo>::iterator node = bluetoothCaseList.begin();
index 17a2a38..263363c 100644 (file)
@@ -245,7 +245,7 @@ namespace OHOS
                 list->Resize(380, 200);\r
                 break;\r
             default:\r
-                list->Resize(380, 300);\r
+                list->Resize(380, 250);\r
                 break;\r
             }\r
             newEquipmentButton->SetY(list->GetY() + list->GetHeight() + 20);\r
index 9122a94..ef37e1b 100644 (file)
@@ -94,7 +94,7 @@ namespace OHOS
             // list->SetIntercept(true);\r
             list->SetDragACCLevel(5);\r
             list->SetSwipeACCLevel(800);\r
-            list->SetReboundSize(30);\r
+            // list->SetReboundSize(30);\r
             // list->SetScrollBlankSize(30);\r
             list->SetAdapter(adapterText);\r
             group->Add(list);\r
@@ -183,7 +183,7 @@ namespace OHOS
                 return;\r
             }\r
         }\r
-        rescanButton->SetPosition(173, list->GetY() + list->GetHeight() + 20, 120, 40);\r
+        rescanButton->SetPosition(173, 390, 120, 40);\r
         rescanButton->SetTextId(STR_BT_HEADSET_RESCAN); // 重新搜索\r
         rescanButton->SetViewId(BLUETOOTH_RESCAN_BUTTON);\r
         rescanButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
@@ -277,7 +277,7 @@ namespace OHOS
     // 刷新扫描出来的设备列表\r
     void BluetoothEarListView::RefreshBluetoothEarListView(void)\r
     {\r
-        if (list && rescanButton)\r
+        if (list)\r
         {\r
             switch (BluetoothModel::GetInstance()->GetCase().size())//根据扫描出的设备数量,设置扫描列表的高度,使其高度自适应\r
             {\r
@@ -291,13 +291,11 @@ namespace OHOS
                 list->Resize(380, 200);\r
                 break;\r
             default:\r
-                list->Resize(380, 300);\r
+                list->Resize(380, 250);\r
                 break;\r
             }\r
-            rescanButton->SetY(list->GetY() + list->GetHeight() + 20);\r
             list->RefreshList();\r
             list->Invalidate();\r
-            rescanButton->Invalidate();\r
         }\r
     }\r
 }
\ No newline at end of file
index 69adb8a..fc5b95f 100644 (file)
@@ -101,8 +101,9 @@ namespace OHOS
             }\r
         }\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index =  %d", GetViewIndex());\r
-        List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
-        if (GetViewIndex() == bluetoothCaseList.Size() - 1)\r
+        List<BluetoothCaseInfo> &btConnedDevicesList_ = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+        std::list<BluetoothCaseInfo> &btScansDevicesList_ = BluetoothModel::GetInstance()->GetCase();\r
+        if (GetViewIndex() == btConnedDevicesList_.Size() - 1 || GetViewIndex()  == btScansDevicesList_.size() - 1)\r
         {\r
             lineImage.SetVisible(false);\r
         }\r
index 9d6b02e..aa5f2ff 100644 (file)
@@ -190,10 +190,25 @@ void BluetoothPresenter::ClickConnfailBackButton(void)
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickConnfailBackButton ConnectRemoteDevice retVal = %d", retVal);\r
 }\r
 \r
-bool BluetoothPresenter::OnDragEnd(UIView& view, const DragEvent& event)\r
+bool BluetoothPresenter::OnDrag(UIView& view, const DragEvent& event)\r
 {\r
     if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+        int16_t deltaX;\r
+        int16_t deltaY;\r
+        deltaX = event.GetDeltaX();\r
+        deltaY = event.GetDeltaY();\r
+        if (MATH_ABS(deltaX) >= MATH_ABS(deltaY) && MATH_ABS(deltaX) > 30) {\r
+            X_DRAG_FLAG = true;\r
+        }\r
+    }\r
+    return true;\r
+}\r
+\r
+bool BluetoothPresenter::OnDragEnd(UIView& view, const DragEvent& event)\r
+{\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
         view_->DropView(view);\r
+        X_DRAG_FLAG = false;\r
     }\r
     return true;\r
 }\r
index a198fb3..469ae4f 100644 (file)
@@ -64,9 +64,6 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::~MainViewSample");
         mainSwipeGroup->RemoveAll();
 
-        dropDownView->ClearBackgroundBlur();
-        messageView->ClearBackgroundBlur();
-
         for (int32_t i = 0; i < MAX_CARD; i++)
         {
             recordCard[i] = nullptr;
@@ -94,7 +91,7 @@ namespace OHOS
         }
         if (dropDownView != nullptr)
         {
-            dropDownView->RemoveAll();
+            dropDownView->ClearBackgroundBlur();
             delete dropDownView;
             dropDownView = nullptr;
         }
@@ -107,6 +104,7 @@ namespace OHOS
         }
         if (messageView != nullptr)
         {
+            messageView->ClearBackgroundBlur();
             messageView->RemoveAll();
             delete messageView;
             messageView = nullptr;
@@ -416,7 +414,6 @@ namespace OHOS
         View<MainPresenterSample>::OnStop();
         container_ = nullptr;
 
-        messageView->RemoveAll();
         RootView::GetInstance()->ClearOnKeyActListener();
         RootView::GetInstance()->RemoveAll();
         return;
index 8ce15f2..c02c6ea 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-09-26 14:21:11
+ * @LastEditTime: 2024-09-28 14:58:16
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
  */
 
@@ -110,6 +110,7 @@ public:
     void set_phone_music_play_state(avrcp_key_operation_t notify);
     void get_avrcp_ct_get_element_attributes(void);
     void set_player_state(bool value);
+    bool get_player_state();
     // /* -------------------------------------------------------------------------- */
     std::unordered_map<uint16_t, std::pair<std::string,std::string>> &getIdToMusicNameMap(void);
     std::string getRealMusicNameById(int id);
@@ -120,6 +121,7 @@ public:
     void showIdToMusicNameMapData(void);
     // /* -------------------------------------------------------------------------- */
 private:
+    bool phonePlayButtonState{false};
     bool musicSourceFlag{false};//音乐来源标志:false:默认为手表音乐,true:手机音乐
     int64_t playerCurrentTime_{0};
     int64_t playerMusicDuration_{0};
index 95fa0d4..aefa17d 100644 (file)
@@ -1032,11 +1032,16 @@ bool PlayersModel::GetCurrentMusicIsPlaying(void)
     {
         PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance();
         if (playersPresenter != nullptr) 
-        {
+        {   
+            phonePlayButtonState = value;
             playersPresenter->SetPhonePlayerState(value);
         }
     }
 
+    bool PlayersModel::get_player_state()
+    {
+        return phonePlayButtonState;
+    }
     std::unordered_map<uint16_t, std::pair<std::string,std::string>> &PlayersModel::getIdToMusicNameMap(void)
     {
         return idToMusicNameMap;
index 67badc2..3c7f2bb 100644 (file)
@@ -606,14 +606,6 @@ void ButtonOnClickListener::PlayerButtonOnClick()
         return;\r
     }\r
 \r
-    if(PlayersListGroup::GetInstance()->GetCase().IsEmpty() && !PlayersModel::GetInstance()->GetMusicSource()) //若当前歌曲列表为空且为本地音乐他跳转到音乐列表进行提示\r
-    {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current playersCaseList_ is empty!!");\r
-        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
-        playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
-        return;\r
-    }\r
-\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play_or_pause_Button OnClick");\r
     uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
     int32_t playerState;\r
@@ -641,29 +633,47 @@ void ButtonOnClickListener::PlayerButtonOnClick()
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PlayerButtonOnClick] calling phone");\r
         return;\r
     }\r
-    /* -------------------------- 若ct或tg端是已连接状态且当前为手机音乐 ------------------------- */\r
-    if(PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && PlayersModel::GetInstance()->GetMusicSource())\r
+\r
+    if( !PlayersModel::GetInstance()->GetMusicSource()) \r
     {\r
-        if (state == UICheckBox::UICheckBoxState::SELECTED) \r
+        if(PlayersListGroup::GetInstance()->GetCase().IsEmpty()) //若当前歌曲列表为空且为本地音乐他跳转到音乐列表进行提示\r
         {\r
-           PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PLAY); //控制手机音乐播放\r
-        } \r
-        else if (state == UICheckBox::UICheckBoxState::UNSELECTED) \r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current playersCaseList_ is empty!!");\r
+            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+            playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
+            return;\r
+        }\r
+        else\r
         {\r
-           PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PAUSE);//控制手机音乐暂停\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
+            PlayersModel::GetInstance()->SetCurrentIndex(PlayersModel::GetInstance()->GetCurrentIndex());\r
         }\r
-        return;\r
     }\r
-    /* -------------------------------------------------------------------------- */\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
+    else //手机音乐\r
+    {\r
+        /* -------------------------- 若ct或tg端是已连接状态且当前为手机音乐 ------------------------- */\r
+        if(PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected())\r
+        {\r
+            if (state == UICheckBox::UICheckBoxState::SELECTED) \r
+            {\r
+                PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PLAY); //控制手机音乐播放\r
+            } \r
+            else if (state == UICheckBox::UICheckBoxState::UNSELECTED) \r
+            {\r
+                PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PAUSE);//控制手机音乐暂停\r
+            }\r
+            return;\r
+        }\r
+        else\r
+        {\r
+            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+        }\r
     }\r
-    /* -------------------------------------------------------------------------- */\r
-    PlayersModel::GetInstance()->SetCurrentIndex(PlayersModel::GetInstance()->GetCurrentIndex());\r
 }\r
 /*下一首按钮被点击时调用*/\r
 void ButtonOnClickListener::NextButtonOnClick()\r
@@ -1595,7 +1605,6 @@ void PlayersPresenter::SetPhonePlayerState(bool value)
 {\r
     PlayersView *playersView = PlayersView::GetInstance();\r
     if (playersView != nullptr) {\r
-        PlayersModel::GetInstance()->SetPlayButtonState(value);\r
         playersView->SetPlayerButtonState(value ? UICheckBox::UICheckBoxState::SELECTED:UICheckBox::UICheckBoxState::UNSELECTED);\r
     }\r
     return;\r
index 21dfa9d..322095c 100644 (file)
@@ -872,6 +872,8 @@ namespace OHOS
             /* -------------------------------------------------------------------------- */\r
             if (musicSourceType) // 如果切換到手机音乐,且当前在放歌,就停止音乐\r
             {\r
+                bool value = PlayersModel::GetInstance()->get_player_state();\r
+                SetPlayerButtonState(value ? UICheckBox::UICheckBoxState::SELECTED:UICheckBox::UICheckBoxState::UNSELECTED);\r
                 /*停止音乐*/\r
                 StopCurPlayingMusic();\r
             }\r
index 6553338..2fcefe7 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-01-29 15:37:44\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-06-19 09:52:56\r
+ * @LastEditTime: 2024-09-27 20:49:01\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorView.cpp\r
  */\r
 #include "weather/include/GetWeatherDataErrorView.h"\r
@@ -83,22 +83,19 @@ namespace OHOS
 \r
     void GetWeatherDataErrorView::ClearAll()\r
     {\r
-        scrollView->RemoveAll();\r
-\r
-        if (label != nullptr)\r
-        {\r
-            delete label;\r
-            label = nullptr;\r
-        }\r
-\r
-        if (image != nullptr)\r
-        {\r
-            delete image;\r
-            image = nullptr;\r
-        }\r
-\r
         if (scrollView != nullptr)\r
         {\r
+            scrollView->RemoveAll();\r
+            if (label != nullptr)\r
+            {\r
+                delete label;\r
+                label = nullptr;\r
+            }\r
+            if (image != nullptr)\r
+            {\r
+                delete image;\r
+                image = nullptr;\r
+            }\r
             delete scrollView;\r
             scrollView = nullptr;\r
         }\r
index a95e8bb..71c11c5 100644 (file)
@@ -106,7 +106,7 @@ namespace OHOS
             // FreeImagePathsArray(HumidityPathsArray, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
 \r
             FreeImageInfoArray(UVPathsArray, UVPaths, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
-            FreeImageInfoArray(UVPathsArray, WindSpeedPaths, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+            FreeImageInfoArray(WindSpeedPathsArray, WindSpeedPaths, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
             FreeImageInfoArray(HumidityPathsArray, HumidityPaths, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
         }\r
     }\r