* @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
*/
#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"; // 返回对话内容界面的返回按钮
~AivoiceReturnResultTextView();
static AivoiceReturnResultTextView *GetInstance(void);
UIScrollView *CreateAivoiceReturnResultTextView(void);
+ void AddChatContentToList(const ChatContentItem &item);
+ AivoiceChatContentListAdapter* GetAivoiceChatContentListAdapter(void);
+ UIList* GetChatContentList(void);
private:
void ClearAll(void);
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
/*
* @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"
/* -------------------------------------------------------------------------- */
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;
/* -------------------------------------------------------------------------- */
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)
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");
return false;
}
/* -------------------------------------------------------------------------- */
- if (!CreateAivoiceReturnResultTextUserQuestionLabel() || !CreateAivoiceReturnResultTextAIAnswerLabel())
- {
- return false;
- }
- /* -------------------------------------------------------------------------- */
labelconfig = {
.left = CONTINUECHAT_X,
.top = CONTINUECHAT_Y,
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);
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);
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);