同步0521分支最新AiVoice代码
authorSnickerSun <snickersun@163.com>
Fri, 5 Jul 2024 03:00:25 +0000 (11:00 +0800)
committerSnickerSun <snickersun@163.com>
Fri, 5 Jul 2024 03:00:25 +0000 (11:00 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceReturnResultTextView.h
code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceReturnResultTextView.cpp

index 7010e60..6953c70 100644 (file)
@@ -397,6 +397,8 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceConnectTimeoutView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceListeningView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceThinkingView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceChatContentListItemView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceChatContentListAdapter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceReturnResultTextView.cpp
     
     #声音与震动
index 74fc328..63c11c0 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-22 16:46:26
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-25 17:40:57
+ * @LastEditTime: 2024-07-01 14:22:24
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceReturnResultTextView.h
  */
 
@@ -13,7 +13,8 @@
 #include "components/ui_label_ext.h"
 #include "components/ui_button.h"
 #include "components/ui_image_view.h"
-
+#include "aivoice/include/AivoiceChatContentListAdapter.h"
+#include "aivoice/include/AivoiceChatContentListItemView.h"
 namespace OHOS
 {
     static constexpr const char *AIVOICERETURNRESULTTEXT_RETURN_BUTTON_VIEW_ID = "AivoiceReturnResultTextReturnButton";             // 返回对话内容界面的返回按钮
@@ -54,6 +55,9 @@ namespace OHOS
         ~AivoiceReturnResultTextView();
         static AivoiceReturnResultTextView *GetInstance(void);
         UIScrollView *CreateAivoiceReturnResultTextView(void);
+        void AddChatContentToList(const ChatContentItem &item);
+        AivoiceChatContentListAdapter* GetAivoiceChatContentListAdapter(void);
+        UIList* GetChatContentList(void);
 
     private:
         void ClearAll(void);
@@ -61,26 +65,19 @@ namespace OHOS
         UIButton *AivoiceReturnResultTextButtonInit(ButtonConfig &buttonconfig);
         UIImageView *AivoiceReturnResultTextImageInit(ImageConfig &imageconfig);
         bool CreateAivoiceReturnResultTextLabel(void);
-        bool CreateAivoiceReturnResultTextUserQuestionLabel(void);
-        bool CreateAivoiceReturnResultTextAIAnswerLabel(void);
-        bool CreateAivoiceReturnResultTextLImage(void);
+        bool CreateAivoiceReturnResultTextList(void);
         bool CreateAivoiceReturnResultTextButton(void);
         bool CreateAivoiceReturnResultTextScrollView(void);
         UIScrollView *scrollView{nullptr};
         UILabelExt *title{nullptr};
 
-        UILabelExt *question{nullptr}; // 提出的问题
-        UIScrollView *questionScrollView{nullptr};
-        UIImageView *recGreenImage{nullptr};
-
-        UILabelExt *answer{nullptr}; // AI回答的答案
-        UIScrollView *answerScrollView{nullptr};
-        UIImageView *recBlackImage{nullptr};
-
         UIButton *returnButton{nullptr};
 
         UIButton *continueChatButton{nullptr};
         UILabelExt *continueChat{nullptr};
+
+        AivoiceChatContentListAdapter *chatContentListAdapter{nullptr};
+        UIList *chatContentList{nullptr};
     };
 }
 #endif
index d225ed7..8d6b50c 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-22 16:46:26
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-24 16:18:51
+ * @LastEditTime: 2024-07-01 17:20:11
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h
  */
 
@@ -24,7 +24,7 @@ namespace OHOS
     static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_H = 160;
     static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 29; // 图片帧数
     static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_DELAY = 200;          // 图片更新间隔
-    static constexpr char *AIVoiceThinkingImagePaths = "/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_";
+    static constexpr const char *AIVoiceThinkingImagePaths = "/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_";
     class AivoiceThinkingView
     {
     public:
index e7cb064..7b9ec78 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-20 15:14:50
- * @LastEditors: SnickerSun snickersun@163.com
- * @LastEditTime: 2024-07-05 10:35:42
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-07-04 18:30:47
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
  */
 #include "aivoice/include/AiVoiceModel.h"
 #include "aivoice/include/AiVoicePresenter.h"
 #include "aivoice/include/AiVoiceView.h"
+#include "aivoice/include/AivoiceReturnResultTextView.h"
 #include "wearable_log.h"
 #include <stdio.h>
 #include <stdlib.h>
index 7097057..fa964f2 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-05-07 11:25:58
- * @LastEditors: SnickerSun snickersun@163.com
- * @LastEditTime: 2024-07-05 10:12:30
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-07-03 15:17:56
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceReturnResultTextView.cpp
  */
 #include "aivoice/include/AiVoicePresenter.h"
@@ -29,13 +29,13 @@ namespace OHOS
 
     /* -------------------------------------------------------------------------- */
     static constexpr const int16_t RETURN_BUTTON_X = 73;
-    static constexpr const int16_t RETURN_BUTTON_Y = ANSWER_SCROLLVIEW_Y + ANSWER_SCROLLVIEW_H + 20;
+    static constexpr const int16_t RETURN_BUTTON_Y = CHATCONTENT_LIST_Y + CHATCONTENT_LIST_H + 20;
     static constexpr const int16_t RETURN_BUTTON_W = 100;
     static constexpr const int16_t RETURN_BUTTON_H = 100;
     static constexpr const char *RETURN_BUTTON_PATH = "/user/res/AIVoice/AI_Union.bin";
 
     static constexpr const int16_t CONTINUECHAT_BUTTON_X = 183;
-    static constexpr const int16_t CONTINUECHAT_BUTTON_Y = ANSWER_SCROLLVIEW_Y + ANSWER_SCROLLVIEW_H + 20;
+    static constexpr const int16_t CONTINUECHAT_BUTTON_Y = CHATCONTENT_LIST_Y + CHATCONTENT_LIST_H + 20;
     static constexpr const int16_t CONTINUECHAT_BUTTON_W = 210;
     static constexpr const int16_t CONTINUECHAT_BUTTON_H = 100;
     /* -------------------------------------------------------------------------- */
@@ -79,40 +79,16 @@ namespace OHOS
                 title = nullptr;
             }
 
-            if (questionScrollView != nullptr)
+            if (chatContentListAdapter != nullptr)
             {
-                questionScrollView->Remove(question);
-                if (question != nullptr)
-                {
-                    delete question;
-                    question = nullptr;
-                }
-                delete questionScrollView;
-                questionScrollView = nullptr;
+                delete chatContentListAdapter;
+                chatContentListAdapter = nullptr;
             }
 
-            if (recGreenImage != nullptr)
+            if (chatContentList != nullptr)
             {
-                delete recGreenImage;
-                recGreenImage = nullptr;
-            }
-
-            if (answerScrollView != nullptr)
-            {
-                answerScrollView->Remove(answer);
-                if (answer != nullptr)
-                {
-                    delete answer;
-                    answer = nullptr;
-                }
-                delete answerScrollView;
-                answerScrollView = nullptr;
-            }
-
-            if (recBlackImage != nullptr)
-            {
-                delete recBlackImage;
-                recBlackImage = nullptr;
+                delete chatContentList;
+                chatContentList = nullptr;
             }
 
             if (returnButton != nullptr)
@@ -200,96 +176,12 @@ namespace OHOS
         scrollView->SetThrowDrag(true);
         scrollView->SetMaxScrollDistance(1000);
         scrollView->SetDirection(UIScrollView::VERTICAL);
+        scrollView->SetRotateFactor(2);
+        scrollView->RequestFocus();
 
         return true;
     }
 
-    bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextUserQuestionLabel(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextUserQuestionLabel");
-        if (questionScrollView == nullptr)
-        {
-            questionScrollView = new UIScrollView();
-            if (questionScrollView == nullptr)
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::questionScrollView is nullptr!");
-                return false;
-            }
-            questionScrollView->SetPosition(QUESTION_SCROLLVIEW_X, QUESTION_SCROLLVIEW_Y, QUESTION_SCROLLVIEW_W, QUESTION_SCROLLVIEW_H);
-            questionScrollView->SetStyle(STYLE_BACKGROUND_COLOR, QUESTION_BACKGROUND_COLOR);
-            questionScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
-            questionScrollView->SetStyle(STYLE_BORDER_RADIUS, 20);
-        }
-        /* -------------------------------------------------------------------------- */
-        int16_t QUESTION_LABEL_X = (questionScrollView->GetWidth() - QUESTION_LABEL_W) / ONE_HALF_NUM;
-        int16_t QUESTION_LABEL_Y = (questionScrollView->GetHeight() - QUESTION_LABEL_H) / ONE_HALF_NUM;
-        if (question == nullptr)
-        {
-            question = new UILabelExt();
-            if (question == nullptr)
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::question is nullptr!");
-                return false;
-            }
-
-            question->SetPosition(QUESTION_LABEL_X, QUESTION_LABEL_Y, QUESTION_LABEL_W, QUESTION_LABEL_H);
-            question->SetStyle(STYLE_TEXT_FONT, QUESTION_LABEL_FONTSIZE);
-            question->SetStyle(STYLE_LINE_HEIGHT, QUESTION_LABEL_LINEHEIGHT);
-            std::string questionStr = AiVoiceModel::GetInstance().GetUserQuestionStr();
-            question->SetText(questionStr.c_str());
-            question->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xcc));
-            question->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
-            question->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-            question->SetFont(DEFAULT_VECTOR_FONT_FILENAME, QUESTION_LABEL_FONTSIZE);
-
-            questionScrollView->Add(question);
-        }
-        return true;
-    }
-
-    bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextAIAnswerLabel(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextAIAnswerLabel");
-        if (answerScrollView == nullptr)
-        {
-            answerScrollView = new UIScrollView();
-            if (answerScrollView == nullptr)
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::answerScrollView is nullptr!");
-                return false;
-            }
-            answerScrollView->SetPosition(ANSWER_SCROLLVIEW_X, ANSWER_SCROLLVIEW_Y, ANSWER_SCROLLVIEW_W, ANSWER_SCROLLVIEW_H);
-            answerScrollView->SetStyle(STYLE_BACKGROUND_COLOR, ANSWER_BACKGROUND_COLOR);
-            answerScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
-            answerScrollView->SetStyle(STYLE_BORDER_RADIUS, 20);
-            /* -------------------------------------------------------------------------- */
-            int16_t ANSWER_LABEL_X = (answerScrollView->GetWidth() - ANSWER_LABEL_W) / ONE_HALF_NUM;
-            int16_t ANSWER_LABEL_Y = (answerScrollView->GetHeight() - ANSWER_LABEL_H) / ONE_HALF_NUM;
-            if (answer == nullptr)
-            {
-                answer = new UILabelExt();
-                if (answer == nullptr)
-                {
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::answer is nullptr!");
-                    return false;
-                }
-
-                answer->SetPosition(ANSWER_LABEL_X, ANSWER_LABEL_Y, ANSWER_LABEL_W, ANSWER_LABEL_H);
-                answer->SetStyle(STYLE_TEXT_FONT, ANSWER_LABEL_FONTSIZE);
-                answer->SetStyle(STYLE_LINE_HEIGHT, ANSWER_LABEL_LINEHEIGHT);
-                std::string answerStr = AiVoiceModel::GetInstance().GetAiAnswerStrStr();
-                answer->SetText(answerStr.c_str());
-                answer->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
-                answer->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
-                answer->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
-                answer->SetFont(DEFAULT_VECTOR_FONT_FILENAME, QUESTION_LABEL_FONTSIZE);
-
-                answerScrollView->Add(answer);
-            }
-        }
-        return true;
-    }
-
     bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLabel(void)
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLabel");
@@ -310,11 +202,6 @@ namespace OHOS
             return false;
         }
         /* -------------------------------------------------------------------------- */
-        if (!CreateAivoiceReturnResultTextUserQuestionLabel() || !CreateAivoiceReturnResultTextAIAnswerLabel())
-        {
-            return false;
-        }
-        /* -------------------------------------------------------------------------- */
         labelconfig = {
             .left = CONTINUECHAT_X,
             .top = CONTINUECHAT_Y,
@@ -335,20 +222,19 @@ namespace OHOS
         return true;
     }
 
-    bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLImage(void)
+    bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextList(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLImage");
-        ImageConfig imageconfig = {
-            .x = RECGREEN_IMAGE_X,
-            .y = RECGREEN_IMAGE_Y,
-            .w = RECGREEN_IMAGE_W,
-            .h = RECGREEN_IMAGE_H,
-            .src = RECGREEN_IMAGE_PATH,
-        };
-        recGreenImage = AivoiceReturnResultTextImageInit(imageconfig);
-        if (recGreenImage == nullptr)
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextList");
+        chatContentListAdapter = new AivoiceChatContentListAdapter();
+        if (chatContentListAdapter == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::chatContentListAdapter is nullptr");
+            return false;
+        }
+        UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(AiVoicePresenter::GetInstance());
+        if (clickListener == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::recGreenImage is nullptr!");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::chatContentListAdapter is nullptr");
             return false;
         }
         chatContentListAdapter->SetItemClickListener(clickListener);
@@ -356,7 +242,7 @@ namespace OHOS
         chatContentList = new UIList(UIList::VERTICAL);
         if (chatContentList == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::recBlackImage is nullptr!");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingView::OnStart::chatContentList is nullptr");
             return false;
         }
         chatContentList->SetPosition(CHATCONTENT_LIST_X, CHATCONTENT_LIST_Y, CHATCONTENT_LIST_W, CHATCONTENT_LIST_H);
@@ -424,17 +310,14 @@ namespace OHOS
         if (scrollView == nullptr)
         {
             if (!CreateAivoiceReturnResultTextScrollView() || !CreateAivoiceReturnResultTextLabel() ||
-                !CreateAivoiceReturnResultTextLImage() || !CreateAivoiceReturnResultTextButton())
+                !CreateAivoiceReturnResultTextList() || !CreateAivoiceReturnResultTextButton())
             {
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextView fail!!");
                 return nullptr;
             }
             /* ----------------------------------- Add ---------------------------------- */
             scrollView->Add(title);
-            scrollView->Add(questionScrollView);
-            scrollView->Add(recGreenImage);
-            scrollView->Add(answerScrollView);
-            scrollView->Add(recBlackImage);
+            scrollView->Add(chatContentList);
             scrollView->Add(returnButton);
             scrollView->Add(continueChatButton);
             scrollView->Add(continueChat);