${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoiceModel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoicePresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoiceView.cpp
-
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoiceBluetoothFailedStartView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceMobileDataFailedStartView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceConnectTimeoutView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceListeningView.cpp
+
#声音与震动
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationView.cpp
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-06-21 17:07:07
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 16:59:20
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceBluetoothFailedStartView.h
+ */
+
+#ifndef AI_VOICE_BLUETOOTH_FAILEDSTART_VIEW_H
+#define AI_VOICE_BLUETOOTH_FAILEDSTART_VIEW_H
+
+#include "components/ui_scroll_view.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_button.h"
+#include "components/ui_image_view.h"
+
+namespace OHOS
+{
+ static constexpr const char *BLUETOOTHFAILEDSTART_ENSURE_BUTTON_VIEW_ID = "BluetoothFailedStartEnsureButton";//蓝牙未开启界面的确定按钮
+
+ class AiVoiceBluetoothFailedStartView
+ {
+ public:
+ struct LabelConfig
+ {
+ int16_t left;
+ int16_t top;
+ int16_t width;
+ int16_t height;
+ int16_t fontSize;
+ int16_t lineHeigh;
+ uint16_t textId;
+ uint8_t lineBreakMode;
+ };
+ struct ButtonConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ const char *ViewId;
+ };
+
+ struct ImageConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ };
+
+ AiVoiceBluetoothFailedStartView();
+ ~AiVoiceBluetoothFailedStartView();
+ static AiVoiceBluetoothFailedStartView *GetInstance(void);
+ UIScrollView *CreateAiVoiceBluetoothFailedStartView(void);
+
+ private:
+ void ClearAll(void);
+ UILabelExt *AiVoiceBluetoothFailedStartLabelInit(LabelConfig &labelconfig);
+ UIButton *AiVoiceBluetoothFailedStartButtonInit(ButtonConfig &buttonconfig);
+ UIImageView *AiVoiceBluetoothFailedStartImageInit(ImageConfig &imageconfig);
+ bool CreateAiVoiceBluetoothFailedStartLabel(void);
+ bool CreateAiVoiceBluetoothFailedStartButton(void);
+ bool CreateAiVoiceBluetoothFailedStartImage(void);
+ bool CreateAiVoiceBluetoothFailedStartScrollView(void);
+ UIScrollView *scrollView{nullptr};
+ UILabelExt *title{nullptr};
+ UIImageView *attentionImage{nullptr};
+ UILabelExt *label[2]{nullptr};
+ UILabelExt *ensure{nullptr};
+ UIButton *ensureButton{nullptr};
+ };
+}
+#endif
\ No newline at end of file
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-20 15:14:43
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-20 20:13:47
+ * @LastEditTime: 2024-06-22 17:55:53
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h
*/
#ifndef AI_VOICE_MODEL_H
{
public:
static AiVoiceModel &GetInstance(void);
+ bool GetBluetoothIsOpen(void);
+ bool GetMobileDataIsOpen(void);
+ bool GetAiVoiceConnectStatus(void);
private:
AiVoiceModel();
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-20 14:44:22
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-21 21:07:37
+ * @LastEditTime: 2024-06-22 09:51:24
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoicePresenter.h
*/
#ifndef AI_VOICE_PRESENTER_H
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-08 09:36:01
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-21 21:07:45
+ * @LastEditTime: 2024-06-22 17:48:56
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/respiratorytraining/include/AiVoiceView.h
*/
#ifndef AI_VOICE_VIEW_H
#include "components/ui_button.h"
#include "components/ui_scroll_view.h"
#include "components/ui_image_view.h"
+#include "aivoice/include/AiVoiceBluetoothFailedStartView.h"
+#include "aivoice/include/AivoiceMobileDataFailedStartView.h"
+#include "aivoice/include/AivoiceConnectTimeoutView.h"
+#include "aivoice/include/AivoiceListeningView.h"
+
namespace OHOS
{
static constexpr const char *START_CHAT_BUTTON_VIEW_ID = "StartChatButton"; // 开始对话
AiVoiceView();
~AiVoiceView();
static AiVoiceView *GetInstance(void);
+ UIScrollView *GetAiVoiceScrollView(int16_t index);
bool ClickFunc(int16_t interface);
void ChangeView(int16_t hideView, int16_t showView);
bool ChangeAiVoiceStartChatView(int16_t thisView);
void OnTearDownView() override;
void OnStop() override;
+ private:
+ AiVoiceBluetoothFailedStartView *p_AiVoiceBluetoothFailedStartView{nullptr};
+ AivoiceMobileDataFailedStartView *p_AivoiceMobileDataFailedStartView{nullptr};
+ AivoiceConnectTimeoutView *p_AivoiceConnectTimeoutView{nullptr};
+ AivoiceListeningView *p_AivoiceListeningView{nullptr};
+
private:
UILabelExt *AiVoiceViewLabelInit(LabelConfig &labelconfig);
UIImageView *AiVoiceViewImageView(ImageConfig &imageconfig);
- UIButton *AiVoiceViewLabelButtonInit(ButtonConfig &buttonconfig);
+ UIButton *AiVoiceViewButtonInit(ButtonConfig &buttonconfig);
bool CreateAiVoiceViewLabel(void);
bool CreateAiVoiceViewImageView(void);
bool CreateAiVoiceViewButton(void);
+ bool CreateAiVoiceScrollView(void);
void CreateAiVoiceView(void);
void ClearAll(void);
UILabelExt *title{nullptr};
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-06-22 16:46:26
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 17:00:33
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceConnectTimeoutView.h
+ */
+
+#ifndef AIVOICE_CONNECT_TIMEOUT_VIEW_H
+#define AIVOICE_CONNECT_TIMEOUT_VIEW_H
+
+#include "components/ui_scroll_view.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_button.h"
+#include "components/ui_image_view.h"
+
+namespace OHOS
+{
+ static constexpr const char *AIVOICECONNECTTIMEOUT_ENSURE_BUTTON_VIEW_ID = "AivoiceConnectTimeoutEnsureButton"; // 连接超时界面确定按钮
+
+ class AivoiceConnectTimeoutView
+ {
+ public:
+ struct LabelConfig
+ {
+ int16_t left;
+ int16_t top;
+ int16_t width;
+ int16_t height;
+ int16_t fontSize;
+ int16_t lineHeigh;
+ uint16_t textId;
+ uint8_t lineBreakMode;
+ };
+ struct ButtonConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ const char *ViewId;
+ };
+
+ struct ImageConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ };
+
+ AivoiceConnectTimeoutView();
+ ~AivoiceConnectTimeoutView();
+ static AivoiceConnectTimeoutView *GetInstance(void);
+ UIScrollView *CreateAivoiceConnectTimeoutView(void);
+
+ private:
+ void ClearAll(void);
+ UILabelExt *AivoiceConnectTimeoutLabelInit(LabelConfig &labelconfig);
+ UIButton *AivoiceConnectTimeoutButtonInit(ButtonConfig &buttonconfig);
+ UIImageView *AivoiceConnectTimeoutImageInit(ImageConfig &imageconfig);
+ bool CreateAivoiceConnectTimeoutLabel(void);
+ bool CreateAivoiceConnectTimeoutButton(void);
+ bool CreateAivoiceConnectTimeoutImage(void);
+ bool CreateAivoiceConnectTimeoutScrollView(void);
+ UIScrollView *scrollView{nullptr};
+ UILabelExt *title{nullptr};
+ UIImageView *attentionImage{nullptr};
+ UILabelExt *label[2]{nullptr};
+ UILabelExt *ensure{nullptr};
+ UIButton *ensureButton{nullptr};
+ };
+}
+#endif
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-06-22 16:46:26
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 17:41:04
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h
+ */
+
+#ifndef AIVOICE_LISTENING_VIEW_H
+#define AIVOICE_LISTENING_VIEW_H
+
+#include "components/ui_scroll_view.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_button.h"
+#include "components/ui_image_view.h"
+
+namespace OHOS
+{
+ static constexpr const char *FINISH_SPEAKING_BUTTON_VIEW_ID = "FinishSpeakingButton"; // 聆听中界面说话完毕按钮
+
+ class AivoiceListeningView
+ {
+ public:
+ struct LabelConfig
+ {
+ int16_t left;
+ int16_t top;
+ int16_t width;
+ int16_t height;
+ int16_t fontSize;
+ int16_t lineHeigh;
+ uint16_t textId;
+ uint8_t lineBreakMode;
+ };
+ struct ButtonConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ const char *ViewId;
+ };
+
+ struct ImageConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ };
+
+ AivoiceListeningView();
+ ~AivoiceListeningView();
+ static AivoiceListeningView *GetInstance(void);
+ UIScrollView *CreateAivoiceListeningView(void);
+
+ private:
+ void ClearAll(void);
+ UILabelExt *AivoiceListeningLabelInit(LabelConfig &labelconfig);
+ UIButton *AivoiceListeningButtonInit(ButtonConfig &buttonconfig);
+ UIImageView *AivoiceListeningImageInit(ImageConfig &imageconfig);
+ bool CreateAivoiceListeningLabel(void);
+ bool CreateAivoiceListeningButton(void);
+ bool CreateAivoiceListeningImage(void);
+ bool CreateAivoiceListeningScrollView(void);
+ UIScrollView *scrollView{nullptr};
+ UILabelExt *title{nullptr};
+ UIImageView *attentionImage{nullptr};
+ UILabelExt *finishSpeak{nullptr};
+ UIButton *finishSpeakButton{nullptr};
+ };
+}
+#endif
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-06-22 15:22:56
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 16:59:59
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceMobileDataFailedStartView.h
+ */
+
+#ifndef AIVOICE_MOBILEDATA_FAILEDSTART_VIEW_H
+#define AIVOICE_MOBILEDATA_FAILEDSTART_VIEW_H
+
+#include "components/ui_scroll_view.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_button.h"
+#include "components/ui_image_view.h"
+
+namespace OHOS
+{
+ static constexpr const char *MOBILEDATAFAILEDSTART_ENSURE_BUTTON_VIEW_ID = "MobiledatafailedStartEnsureButton"; // 移动数据未开启界面的确定按钮
+
+ class AivoiceMobileDataFailedStartView
+ {
+ public:
+ struct LabelConfig
+ {
+ int16_t left;
+ int16_t top;
+ int16_t width;
+ int16_t height;
+ int16_t fontSize;
+ int16_t lineHeigh;
+ uint16_t textId;
+ uint8_t lineBreakMode;
+ };
+ struct ButtonConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ const char *ViewId;
+ };
+
+ struct ImageConfig
+ {
+ int16_t x;
+ int16_t y;
+ int16_t w;
+ int16_t h;
+ };
+
+ AivoiceMobileDataFailedStartView();
+ ~AivoiceMobileDataFailedStartView();
+ static AivoiceMobileDataFailedStartView *GetInstance(void);
+ UIScrollView *CreateAivoiceMobileDataFailedStartView(void);
+
+ private:
+ void ClearAll(void);
+ UILabelExt *AivoiceMobileDataFailedStartLabelInit(LabelConfig &labelconfig);
+ UIButton *AivoiceMobileDataFailedStartButtonInit(ButtonConfig &buttonconfig);
+ UIImageView *AivoiceMobileDataFailedStartImageInit(ImageConfig &imageconfig);
+ bool CreateAivoiceMobileDataFailedStartLabel(void);
+ bool CreateAivoiceMobileDataFailedStartButton(void);
+ bool CreateAivoiceMobileDataFailedStartImage(void);
+ bool CreateAivoiceMobileDataFailedStartScrollView(void);
+ UIScrollView *scrollView{nullptr};
+ UILabelExt *title{nullptr};
+ UIImageView *attentionImage{nullptr};
+ UILabelExt *label[2]{nullptr};
+ UILabelExt *ensure{nullptr};
+ UIButton *ensureButton{nullptr};
+ };
+}
+#endif
\ No newline at end of file
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-05-07 11:25:58
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 15:34:59
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AiVoiceBluetoothFailedStartView.cpp
+ */
+#include "aivoice/include/AiVoicePresenter.h"
+#include "aivoice/include/AiVoiceBluetoothFailedStartView.h"
+#include "wearable_log.h"
+#include "language/font/ui_resource_string.h"
+#include <UiConfig.h>
+namespace OHOS
+{
+
+ static AiVoiceBluetoothFailedStartView *g_pAiVoiceBluetoothFailedStartView{nullptr};
+
+ AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartView");
+ g_pAiVoiceBluetoothFailedStartView = this;
+ }
+
+ AiVoiceBluetoothFailedStartView::~AiVoiceBluetoothFailedStartView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::~AiVoiceBluetoothFailedStartView");
+ g_pAiVoiceBluetoothFailedStartView = nullptr;
+ }
+
+ AiVoiceBluetoothFailedStartView *AiVoiceBluetoothFailedStartView::GetInstance()
+ {
+ return g_pAiVoiceBluetoothFailedStartView;
+ }
+
+ void AiVoiceBluetoothFailedStartView::ClearAll(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::ClearAll");
+ if (scrollView != nullptr)
+ {
+ scrollView->RemoveAll();
+
+ if (title != nullptr)
+ {
+ delete title;
+ title = nullptr;
+ }
+
+ if (attentionImage != nullptr)
+ {
+ delete attentionImage;
+ attentionImage = nullptr;
+ }
+
+ for (int i = 0; i < 2; i++)
+ {
+ if (label[i] != nullptr)
+ {
+ delete label[i];
+ label[i];
+ }
+ }
+
+ if (ensure != nullptr)
+ {
+ delete ensure;
+ ensure = nullptr;
+ }
+
+ if (ensureButton != nullptr)
+ {
+ delete ensureButton;
+ ensureButton = nullptr;
+ }
+
+ delete scrollView;
+ scrollView = nullptr;
+ }
+ }
+
+ UILabelExt *AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartLabelInit(LabelConfig &labelconfig)
+ {
+ UILabelExt *label = new UILabelExt();
+ if (label == nullptr)
+ {
+ return nullptr;
+ }
+ label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height);
+ label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);
+ label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);
+ label->SetTextId(labelconfig.textId);
+ label->SetLineBreakMode(labelconfig.lineBreakMode);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);
+ return label;
+ }
+
+ UIButton *AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartButtonInit(ButtonConfig &buttonconfig)
+ {
+ UIButton *button = new UIButton();
+ if (button == nullptr)
+ {
+ 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);
+
+ return button;
+ }
+
+ UIImageView *AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartImageInit(ImageConfig &imageconfig)
+ {
+ UIImageView *Image = new UIImageView();
+ if (Image == nullptr)
+ {
+ return nullptr;
+ }
+ Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h);
+ return Image;
+ }
+
+ bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartScrollView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartScrollView");
+ scrollView = new UIScrollView();
+ if (scrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::scrollView new fail!");
+ return false;
+ }
+ scrollView->SetPosition(0, 0, 466, 466);
+ scrollView->SetTouchable(true);
+ scrollView->SetDraggable(true);
+
+ return true;
+ }
+
+ bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartLabel(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartLabel");
+ LabelConfig labelconfig = {
+ .left = 83,
+ .top = 52,
+ .width = 300,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_AI_INTELLIGENT_ASSISTANT,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ title = AiVoiceBluetoothFailedStartLabelInit(labelconfig);
+ if (title == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::title is nullptr!");
+ return false;
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig.left = 53;
+ labelconfig.width = 360;
+ int textId[] = {STR_BOOT_FAILED, STR_ENABLE_BLUETOOTH_FIRST};
+ for (int i = 0; i < sizeof(textId) / sizeof(textId[0]); i++)
+ {
+ labelconfig.top = 222 + i * labelconfig.height;
+ labelconfig.textId = textId[i];
+ label[i] = AiVoiceBluetoothFailedStartLabelInit(labelconfig);
+ if (label[i] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::label[%d] is nullptr!", i);
+ return false;
+ }
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig = {
+ .left = 133,
+ .top = 368,
+ .width = 200,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_OK,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ ensure = AiVoiceBluetoothFailedStartLabelInit(labelconfig);
+ if (ensure == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::ensure is nullptr!");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartButton(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartButton");
+ ButtonConfig buttonconfig = {
+ .x = 93,
+ .y = 340,
+ .w = 280,
+ .h = 90,
+ .ViewId = BLUETOOTHFAILEDSTART_ENSURE_BUTTON_VIEW_ID,
+ };
+ ensureButton = AiVoiceBluetoothFailedStartButtonInit(buttonconfig);
+ if (ensureButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureButton new fail!");
+ return false;
+ }
+ UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(AiVoicePresenter::GetInstance());
+ if (clickListener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::draglistener can not be nullptr!");
+ return false;
+ }
+ ensureButton->SetOnClickListener(clickListener);
+
+ return true;
+ }
+
+ bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartImage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartImage");
+ ImageConfig imageconfig = {
+ .x = 193,
+ .y = 120,
+ .w = 80,
+ .h = 80,
+ };
+ attentionImage = AiVoiceBluetoothFailedStartImageInit(imageconfig);
+ if (attentionImage == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "attentionImage new fail!");
+ return false;
+ }
+ attentionImage->SetStyle(STYLE_BORDER_RADIUS, 100);
+ attentionImage->SetSrc(PNG_ATTENTION_IMAGE);
+
+ return true;
+ }
+
+ UIScrollView *AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartView");
+ if (scrollView == nullptr)
+ {
+ if (!CreateAiVoiceBluetoothFailedStartScrollView() || !CreateAiVoiceBluetoothFailedStartLabel() ||
+ !CreateAiVoiceBluetoothFailedStartButton() || !CreateAiVoiceBluetoothFailedStartImage())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartView fail!!");
+ return nullptr;
+ }
+ scrollView->Add(title);
+ scrollView->Add(attentionImage);
+ scrollView->Add(label[0]);
+ scrollView->Add(label[1]);
+ scrollView->Add(ensureButton);
+ scrollView->Add(ensure);
+ }
+ return scrollView;
+ }
+
+}
\ No newline at end of file
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-20 15:14:50
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-20 15:25:15
+ * @LastEditTime: 2024-06-22 17:56:04
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
*/
#include "aivoice/include/AiVoiceModel.h"
return instance;
}
+ bool AiVoiceModel::GetBluetoothIsOpen(void)
+ {
+ return true;
+ }
+
+ bool AiVoiceModel::GetMobileDataIsOpen(void)
+ {
+ return true;
+ }
+
+ // 获取与AI模型的连接状态
+ bool AiVoiceModel::GetAiVoiceConnectStatus(void)
+ {
+ return false;
+ }
+
}
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-20 15:11:17
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-21 21:07:51
+ * @LastEditTime: 2024-06-22 18:42:34
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp
*/
#include "AppViewIDs.h"
#include <custom_utils.h>
#include "UiConfig.h"
#include "iostream"
+#include <string> // For std::string
+#include <unordered_map> // For std::unordered_map
namespace OHOS
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::OnClick");
std::string viewId = view.GetViewId();
- if (viewId == START_CHAT_BUTTON_VIEW_ID)
+ if (viewId == START_CHAT_BUTTON_VIEW_ID) // 如果点击的是开始对话按钮
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::START_CHAT_BUTTON_VIEW_ID");
+ if (model->GetMobileDataIsOpen() == false) // 判断移动数据是否开启
+ {
+ view_->ChangeView(AIVOICE_STARTCHAT_VIEWID, AIVOICE_MOBILEDATA_FAILEDSTART_VIEWID); // 开始对话->移动数据未开启界面
+ }
+ else
+ {
+ view_->ChangeView(AIVOICE_STARTCHAT_VIEWID, AIVOICE_LISTENING_VIEWID); // 开始对话->聆听中界面
+ }
+ return true;
}
- return true;
+ if (viewId == FINISH_SPEAKING_BUTTON_VIEW_ID) // 如果点击的是说话完毕按钮
+ {
+ if (model->GetAiVoiceConnectStatus() == false) // 判断与AI模型的连接状态
+ {
+ view_->ChangeView(AIVOICE_LISTENING_VIEWID, AIVOICE_CONNECT_TIMEOUT_VIEWID); // 聆听中->连接超时界面
+ }
+ else
+ {
+ view_->ChangeView(AIVOICE_LISTENING_VIEWID, AIVOICE_THINKING_VIEWID); // 聆听中->思考中界面
+ }
+ return true;
+ }
+
+ std::unordered_map<std::string, std::pair<int16_t, int16_t>> viewIdMap = {
+ {BLUETOOTHFAILEDSTART_ENSURE_BUTTON_VIEW_ID, {AIVOICE_BLUETOOTH_FAILEDSTART_VIEWID, AIVOICE_STARTCHAT_VIEWID}},
+ {MOBILEDATAFAILEDSTART_ENSURE_BUTTON_VIEW_ID, {AIVOICE_MOBILEDATA_FAILEDSTART_VIEWID, AIVOICE_STARTCHAT_VIEWID}},
+ {AIVOICECONNECTTIMEOUT_ENSURE_BUTTON_VIEW_ID, {AIVOICE_CONNECT_TIMEOUT_VIEWID, AIVOICE_LISTENING_VIEWID}},
+ };
+ auto it = viewIdMap.find(viewId);
+ if (it != viewIdMap.end())
+ {
+ view_->ChangeView(it->second.first, it->second.second);
+ return true;
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Return false if viewId doesn't match any entry in the map");
+ return false;
+ }
}
bool AiVoicePresenter::OnDrag(UIView &view, const DragEvent &event)
{
UNUSED(view);
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::OnDragEnd");
+ UIScrollView *scrollView = dynamic_cast<UIScrollView *>(&view);
+ if (scrollView == nullptr)
+ {
+ return false;
+ }
+
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && AiVoicePresenter::X_DRAG_FLAG)
{
- NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+ if (scrollView == view_->GetAiVoiceScrollView(AIVOICE_STARTCHAT_VIEWID))
+ {
+ NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+ }
+ else if (scrollView == view_->GetAiVoiceScrollView(AIVOICE_LISTENING_VIEWID))
+ {
+ view_->ChangeView(AIVOICE_LISTENING_VIEWID, AIVOICE_STARTCHAT_VIEWID); // 聆听中->开始对话界面
+ }
AiVoicePresenter::X_DRAG_FLAG = false;
}
return true;
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-05-07 11:25:58
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-21 21:07:56
+ * @LastEditTime: 2024-06-22 17:49:44
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AiVoiceView.cpp
*/
#include "aivoice/include/AiVoicePresenter.h"
delete container_;
container_ = nullptr;
}
+
+ if (AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] != nullptr)
+ {
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->RemoveAll();
+
+ delete title;
+ title = nullptr;
+
+ delete startChatImage;
+ startChatImage = nullptr;
+
+ delete startChatButton;
+ startChatButton = nullptr;
+
+ delete startChatLabel;
+ startChatLabel = nullptr;
+
+ delete AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID];
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] = nullptr;
+ }
+
+ if (p_AiVoiceBluetoothFailedStartView != nullptr)
+ {
+ delete p_AiVoiceBluetoothFailedStartView;
+ p_AiVoiceBluetoothFailedStartView = nullptr;
+ }
+
+ if (p_AivoiceMobileDataFailedStartView != nullptr)
+ {
+ delete p_AivoiceMobileDataFailedStartView;
+ p_AivoiceMobileDataFailedStartView = nullptr;
+ }
+
+ if (p_AivoiceConnectTimeoutView != nullptr)
+ {
+ delete p_AivoiceConnectTimeoutView;
+ p_AivoiceConnectTimeoutView = nullptr;
+ }
+
+ if (p_AivoiceListeningView != nullptr)
+ {
+ delete p_AivoiceListeningView;
+ p_AivoiceListeningView = nullptr;
+ }
}
}
return Image;
}
- UIButton *AiVoiceView::AiVoiceViewLabelButtonInit(ButtonConfig &buttonconfig)
+ UIButton *AiVoiceView::AiVoiceViewButtonInit(ButtonConfig &buttonconfig)
{
UIButton *button = new UIButton();
if (button == nullptr)
button->SetViewId(buttonconfig.ViewId);
button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c);
button->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED);
button->SetOnClickListener(presenter_);
return button;
bool AiVoiceView::CreateAiVoiceViewLabel(void)
{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceViewLabel");
LabelConfig labelConfig = {
.left = 83,
.top = 52,
bool AiVoiceView::CreateAiVoiceViewImageView(void)
{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceViewImageView");
ImageConfig imagecinfig = {
.x = 207,
.y = 182,
bool AiVoiceView::CreateAiVoiceViewButton(void)
{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceViewButton");
ButtonConfig buttonconfig = {
.x = 93,
.y = 340,
.h = 90,
.ViewId = START_CHAT_BUTTON_VIEW_ID,
};
- startChatButton = AiVoiceViewLabelButtonInit(buttonconfig);
+ startChatButton = AiVoiceViewButtonInit(buttonconfig);
if (startChatButton == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startChatButton new fail!");
return true;
}
+ bool AiVoiceView::CreateAiVoiceScrollView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceScrollView");
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] = new UIScrollView();
+ if (AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] new fail!");
+ return false;
+ }
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetPosition(0, 0, 466, 466);
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetTouchable(true);
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetDraggable(true);
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetOnDragListener(presenter_);
+ container_->Add(AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]);
+
+ return true;
+ }
+
void AiVoiceView::CreateAiVoiceView(void)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceView");
- if (!CreateAiVoiceViewLabel() || !CreateAiVoiceViewImageView() || !CreateAiVoiceViewButton())
+ if (!CreateAiVoiceScrollView() || !CreateAiVoiceViewLabel() ||
+ !CreateAiVoiceViewImageView() || !CreateAiVoiceViewButton())
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceView fail!");
return;
}
- container_->Add(title);
- container_->Add(startChatImage);
- container_->Add(startChatButton);
- container_->Add(startChatLabel);
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(title);
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(startChatImage);
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(startChatButton);
+ AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(startChatLabel);
}
void AiVoiceView::OnStart()
return;
}
container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- container_->SetOnDragListener(presenter_);
container_->SetTouchable(true);
container_->SetDraggable(true);
bool AiVoiceView::ChangeAiVoiceBluetoothFailedStartView(int16_t thisView)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoiceBluetoothFailedStartView");
-
+ if (AiVoiceScrollView[thisView] == nullptr)
+ {
+ p_AiVoiceBluetoothFailedStartView = new AiVoiceBluetoothFailedStartView();
+ if (p_AiVoiceBluetoothFailedStartView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID][%d] fail", thisView);
+ return false;
+ }
+ AiVoiceScrollView[thisView] = p_AiVoiceBluetoothFailedStartView->CreateAiVoiceBluetoothFailedStartView();
+ container_->Add(AiVoiceScrollView[thisView]);
+ }
return true;
}
bool AiVoiceView::ChangeAiVoiceMobileDataFailedStartView(int16_t thisView)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoiceMobileDataFailedStartView");
-
+ if (AiVoiceScrollView[thisView] == nullptr)
+ {
+ p_AivoiceMobileDataFailedStartView = new AivoiceMobileDataFailedStartView();
+ if (p_AivoiceMobileDataFailedStartView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID][%d] fail", thisView);
+ return false;
+ }
+ AiVoiceScrollView[thisView] = p_AivoiceMobileDataFailedStartView->CreateAivoiceMobileDataFailedStartView();
+ container_->Add(AiVoiceScrollView[thisView]);
+ }
return true;
}
bool AiVoiceView::ChangeAiVoicConnectTimeoutView(int16_t thisView)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoicConnectTimeoutView");
+ if (AiVoiceScrollView[thisView] == nullptr)
+ {
+ p_AivoiceConnectTimeoutView = new AivoiceConnectTimeoutView();
+ if (p_AivoiceConnectTimeoutView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID][%d] fail", thisView);
+ return false;
+ }
+ AiVoiceScrollView[thisView] = p_AivoiceConnectTimeoutView->CreateAivoiceConnectTimeoutView();
+ container_->Add(AiVoiceScrollView[thisView]);
+ }
return true;
}
bool AiVoiceView::ChangeAiVoicListeningView(int16_t thisView)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoicListeningView");
-
+ if (AiVoiceScrollView[thisView] == nullptr)
+ {
+ p_AivoiceListeningView = new AivoiceListeningView();
+ if (p_AivoiceListeningView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID][%d] fail", thisView);
+ return false;
+ }
+ AiVoiceScrollView[thisView] = p_AivoiceListeningView->CreateAivoiceListeningView();
+ container_->Add(AiVoiceScrollView[thisView]);
+ }
return true;
}
AiVoiceScrollView[showView]->SetVisible(true);
Draw();
}
+
+ UIScrollView *AiVoiceView::GetAiVoiceScrollView(int16_t index)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::GetAiVoiceScrollView");
+ if (AIVOICE_STARTCHAT_VIEWID <= index < MAX_AIVOICE_VIEWID)
+ {
+ return AiVoiceScrollView[index];
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Overstep ones bounds");
+ return nullptr;
+ }
+ }
}
\ No newline at end of file
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-05-07 11:25:58
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 16:49:46
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceConnectTimeoutView.cpp
+ */
+#include "aivoice/include/AiVoicePresenter.h"
+#include "aivoice/include/AivoiceConnectTimeoutView.h"
+#include "wearable_log.h"
+#include "language/font/ui_resource_string.h"
+#include <UiConfig.h>
+namespace OHOS
+{
+
+ static AivoiceConnectTimeoutView *g_pAivoiceConnectTimeoutView{nullptr};
+
+ AivoiceConnectTimeoutView::AivoiceConnectTimeoutView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::AivoiceConnectTimeoutView");
+ g_pAivoiceConnectTimeoutView = this;
+ }
+
+ AivoiceConnectTimeoutView::~AivoiceConnectTimeoutView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::~AivoiceConnectTimeoutView");
+ g_pAivoiceConnectTimeoutView = nullptr;
+ }
+
+ AivoiceConnectTimeoutView *AivoiceConnectTimeoutView::GetInstance()
+ {
+ return g_pAivoiceConnectTimeoutView;
+ }
+
+ void AivoiceConnectTimeoutView::ClearAll(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::ClearAll");
+ if (scrollView != nullptr)
+ {
+ scrollView->RemoveAll();
+
+ if (title != nullptr)
+ {
+ delete title;
+ title = nullptr;
+ }
+
+ if (attentionImage != nullptr)
+ {
+ delete attentionImage;
+ attentionImage = nullptr;
+ }
+
+ for (int i = 0; i < 2; i++)
+ {
+ if (label[i] != nullptr)
+ {
+ delete label[i];
+ label[i];
+ }
+ }
+
+ if (ensure != nullptr)
+ {
+ delete ensure;
+ ensure = nullptr;
+ }
+
+ if (ensureButton != nullptr)
+ {
+ delete ensureButton;
+ ensureButton = nullptr;
+ }
+
+ delete scrollView;
+ scrollView = nullptr;
+ }
+ }
+
+ UILabelExt *AivoiceConnectTimeoutView::AivoiceConnectTimeoutLabelInit(LabelConfig &labelconfig)
+ {
+ UILabelExt *label = new UILabelExt();
+ if (label == nullptr)
+ {
+ return nullptr;
+ }
+ label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height);
+ label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);
+ label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);
+ label->SetTextId(labelconfig.textId);
+ label->SetLineBreakMode(labelconfig.lineBreakMode);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);
+ return label;
+ }
+
+ UIButton *AivoiceConnectTimeoutView::AivoiceConnectTimeoutButtonInit(ButtonConfig &buttonconfig)
+ {
+ UIButton *button = new UIButton();
+ if (button == nullptr)
+ {
+ 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);
+
+ return button;
+ }
+
+ UIImageView *AivoiceConnectTimeoutView::AivoiceConnectTimeoutImageInit(ImageConfig &imageconfig)
+ {
+ UIImageView *Image = new UIImageView();
+ if (Image == nullptr)
+ {
+ return nullptr;
+ }
+ Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h);
+ return Image;
+ }
+
+ bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutScrollView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutScrollView");
+ scrollView = new UIScrollView();
+ if (scrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::scrollView new fail!");
+ return false;
+ }
+ scrollView->SetPosition(0, 0, 466, 466);
+ scrollView->SetTouchable(true);
+ scrollView->SetDraggable(true);
+
+ return true;
+ }
+
+ bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutLabel(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutLabel");
+ LabelConfig labelconfig = {
+ .left = 83,
+ .top = 52,
+ .width = 300,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_AI_INTELLIGENT_ASSISTANT,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ title = AivoiceConnectTimeoutLabelInit(labelconfig);
+ if (title == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::title is nullptr!");
+ return false;
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig.left = 53;
+ labelconfig.width = 360;
+ int textId[] = {STR_CONNECT_TIMEOUT, STR_PLEASE_RESTART_CHAT};
+ for (int i = 0; i < sizeof(textId) / sizeof(textId[0]); i++)
+ {
+ labelconfig.top = 222 + i * labelconfig.height;
+ labelconfig.textId = textId[i];
+ label[i] = AivoiceConnectTimeoutLabelInit(labelconfig);
+ if (label[i] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::label[%d] is nullptr!", i);
+ return false;
+ }
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig = {
+ .left = 133,
+ .top = 368,
+ .width = 200,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_OK,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ ensure = AivoiceConnectTimeoutLabelInit(labelconfig);
+ if (ensure == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::ensure is nullptr!");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutButton(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutButton");
+ ButtonConfig buttonconfig = {
+ .x = 93,
+ .y = 340,
+ .w = 280,
+ .h = 90,
+ .ViewId = AIVOICECONNECTTIMEOUT_ENSURE_BUTTON_VIEW_ID,
+ };
+ ensureButton = AivoiceConnectTimeoutButtonInit(buttonconfig);
+ if (ensureButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureButton new fail!");
+ return false;
+ }
+ UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(AiVoicePresenter::GetInstance());
+ if (clickListener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::draglistener can not be nullptr!");
+ return false;
+ }
+ ensureButton->SetOnClickListener(clickListener);
+
+ return true;
+ }
+
+ bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutImage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutImage");
+ ImageConfig imageconfig = {
+ .x = 193,
+ .y = 120,
+ .w = 80,
+ .h = 80,
+ };
+ attentionImage = AivoiceConnectTimeoutImageInit(imageconfig);
+ if (attentionImage == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "attentionImage new fail!");
+ return false;
+ }
+ attentionImage->SetStyle(STYLE_BORDER_RADIUS, 100);
+ attentionImage->SetSrc(PNG_ATTENTION_IMAGE);
+
+ return true;
+ }
+
+ UIScrollView *AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutView");
+ if (scrollView == nullptr)
+ {
+ if (!CreateAivoiceConnectTimeoutScrollView() || !CreateAivoiceConnectTimeoutLabel() ||
+ !CreateAivoiceConnectTimeoutButton() || !CreateAivoiceConnectTimeoutImage())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutView fail!!");
+ return nullptr;
+ }
+ scrollView->Add(title);
+ scrollView->Add(attentionImage);
+ scrollView->Add(label[0]);
+ scrollView->Add(label[1]);
+ scrollView->Add(ensureButton);
+ scrollView->Add(ensure);
+ }
+ return scrollView;
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-05-07 11:25:58
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 17:47:58
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceListeningView.cpp
+ */
+#include "aivoice/include/AiVoicePresenter.h"
+#include "aivoice/include/AivoiceListeningView.h"
+#include "wearable_log.h"
+#include "language/font/ui_resource_string.h"
+#include <UiConfig.h>
+namespace OHOS
+{
+
+ static AivoiceListeningView *g_pAivoiceListeningView{nullptr};
+
+ AivoiceListeningView::AivoiceListeningView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::AivoiceListeningView");
+ g_pAivoiceListeningView = this;
+ }
+
+ AivoiceListeningView::~AivoiceListeningView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::~AivoiceListeningView");
+ g_pAivoiceListeningView = nullptr;
+ }
+
+ AivoiceListeningView *AivoiceListeningView::GetInstance()
+ {
+ return g_pAivoiceListeningView;
+ }
+
+ void AivoiceListeningView::ClearAll(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::ClearAll");
+ if (scrollView != nullptr)
+ {
+ scrollView->RemoveAll();
+
+ if (title != nullptr)
+ {
+ delete title;
+ title = nullptr;
+ }
+
+ if (attentionImage != nullptr)
+ {
+ delete attentionImage;
+ attentionImage = nullptr;
+ }
+
+ if (finishSpeak != nullptr)
+ {
+ delete finishSpeak;
+ finishSpeak = nullptr;
+ }
+
+ if (finishSpeakButton != nullptr)
+ {
+ delete finishSpeakButton;
+ finishSpeakButton = nullptr;
+ }
+
+ delete scrollView;
+ scrollView = nullptr;
+ }
+ }
+
+ UILabelExt *AivoiceListeningView::AivoiceListeningLabelInit(LabelConfig &labelconfig)
+ {
+ UILabelExt *label = new UILabelExt();
+ if (label == nullptr)
+ {
+ return nullptr;
+ }
+ label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height);
+ label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);
+ label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);
+ label->SetTextId(labelconfig.textId);
+ label->SetLineBreakMode(labelconfig.lineBreakMode);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);
+ return label;
+ }
+
+ UIButton *AivoiceListeningView::AivoiceListeningButtonInit(ButtonConfig &buttonconfig)
+ {
+ UIButton *button = new UIButton();
+ if (button == nullptr)
+ {
+ 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);
+
+ return button;
+ }
+
+ UIImageView *AivoiceListeningView::AivoiceListeningImageInit(ImageConfig &imageconfig)
+ {
+ UIImageView *Image = new UIImageView();
+ if (Image == nullptr)
+ {
+ return nullptr;
+ }
+ Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h);
+ return Image;
+ }
+
+ bool AivoiceListeningView::CreateAivoiceListeningScrollView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningScrollView");
+ scrollView = new UIScrollView();
+ if (scrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::scrollView new fail!");
+ 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, "AivoiceListeningView::dragListener new fail!");
+ return false;
+ }
+ scrollView->SetOnDragListener(dragListener);
+ scrollView->SetTouchable(true);
+ scrollView->SetDraggable(true);
+
+ return true;
+ }
+
+ bool AivoiceListeningView::CreateAivoiceListeningLabel(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningLabel");
+ LabelConfig labelconfig = {
+ .left = 83,
+ .top = 52,
+ .width = 300,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_LISTENING,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ title = AivoiceListeningLabelInit(labelconfig);
+ if (title == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::title is nullptr!");
+ return false;
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig = {
+ .left = 133,
+ .top = 368,
+ .width = 200,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_FINISH_SPEAKING,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ finishSpeak = AivoiceListeningLabelInit(labelconfig);
+ if (finishSpeak == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::finishSpeak is nullptr!");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool AivoiceListeningView::CreateAivoiceListeningButton(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningButton");
+ ButtonConfig buttonconfig = {
+ .x = 93,
+ .y = 340,
+ .w = 280,
+ .h = 90,
+ .ViewId = FINISH_SPEAKING_BUTTON_VIEW_ID,
+ };
+ finishSpeakButton = AivoiceListeningButtonInit(buttonconfig);
+ if (finishSpeakButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "finishSpeakButton new fail!");
+ return false;
+ }
+ UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(AiVoicePresenter::GetInstance());
+ if (clickListener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::draglistener can not be nullptr!");
+ return false;
+ }
+ finishSpeakButton->SetOnClickListener(clickListener);
+
+ return true;
+ }
+
+ bool AivoiceListeningView::CreateAivoiceListeningImage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningImage");
+ ImageConfig imageconfig = {
+ .x = 193,
+ .y = 120,
+ .w = 80,
+ .h = 80,
+ };
+ attentionImage = AivoiceListeningImageInit(imageconfig);
+ if (attentionImage == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "attentionImage new fail!");
+ return false;
+ }
+ attentionImage->SetStyle(STYLE_BORDER_RADIUS, 100);
+ attentionImage->SetSrc(PNG_ATTENTION_IMAGE);
+
+ return true;
+ }
+
+ UIScrollView *AivoiceListeningView::CreateAivoiceListeningView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningView");
+ if (scrollView == nullptr)
+ {
+ if (!CreateAivoiceListeningScrollView() || !CreateAivoiceListeningLabel() ||
+ !CreateAivoiceListeningButton() || !CreateAivoiceListeningImage())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningView fail!!");
+ return nullptr;
+ }
+ scrollView->Add(title);
+ scrollView->Add(attentionImage);
+ scrollView->Add(finishSpeakButton);
+ scrollView->Add(finishSpeak);
+ }
+ return scrollView;
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-05-07 11:25:58
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-22 15:38:12
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceMobileDataFailedStartView.cpp
+ */
+#include "aivoice/include/AiVoicePresenter.h"
+#include "aivoice/include/AivoiceMobileDataFailedStartView.h"
+#include "wearable_log.h"
+#include "language/font/ui_resource_string.h"
+#include <UiConfig.h>
+namespace OHOS
+{
+
+ static AivoiceMobileDataFailedStartView *g_pAivoiceMobileDataFailedStartView{nullptr};
+
+ AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartView");
+ g_pAivoiceMobileDataFailedStartView = this;
+ }
+
+ AivoiceMobileDataFailedStartView::~AivoiceMobileDataFailedStartView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::~AivoiceMobileDataFailedStartView");
+ g_pAivoiceMobileDataFailedStartView = nullptr;
+ }
+
+ AivoiceMobileDataFailedStartView *AivoiceMobileDataFailedStartView::GetInstance()
+ {
+ return g_pAivoiceMobileDataFailedStartView;
+ }
+
+ void AivoiceMobileDataFailedStartView::ClearAll(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::ClearAll");
+ if (scrollView != nullptr)
+ {
+ scrollView->RemoveAll();
+
+ if (title != nullptr)
+ {
+ delete title;
+ title = nullptr;
+ }
+
+ if (attentionImage != nullptr)
+ {
+ delete attentionImage;
+ attentionImage = nullptr;
+ }
+
+ for (int i = 0; i < 2; i++)
+ {
+ if (label[i] != nullptr)
+ {
+ delete label[i];
+ label[i];
+ }
+ }
+
+ if (ensure != nullptr)
+ {
+ delete ensure;
+ ensure = nullptr;
+ }
+
+ if (ensureButton != nullptr)
+ {
+ delete ensureButton;
+ ensureButton = nullptr;
+ }
+
+ delete scrollView;
+ scrollView = nullptr;
+ }
+ }
+
+ UILabelExt *AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartLabelInit(LabelConfig &labelconfig)
+ {
+ UILabelExt *label = new UILabelExt();
+ if (label == nullptr)
+ {
+ return nullptr;
+ }
+ label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height);
+ label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);
+ label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);
+ label->SetTextId(labelconfig.textId);
+ label->SetLineBreakMode(labelconfig.lineBreakMode);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);
+ return label;
+ }
+
+ UIButton *AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartButtonInit(ButtonConfig &buttonconfig)
+ {
+ UIButton *button = new UIButton();
+ if (button == nullptr)
+ {
+ 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);
+
+ return button;
+ }
+
+ UIImageView *AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartImageInit(ImageConfig &imageconfig)
+ {
+ UIImageView *Image = new UIImageView();
+ if (Image == nullptr)
+ {
+ return nullptr;
+ }
+ Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h);
+ return Image;
+ }
+
+ bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartScrollView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartScrollView");
+ scrollView = new UIScrollView();
+ if (scrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::scrollView new fail!");
+ return false;
+ }
+ scrollView->SetPosition(0, 0, 466, 466);
+ scrollView->SetTouchable(true);
+ scrollView->SetDraggable(true);
+
+ return true;
+ }
+
+ bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartLabel(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartLabel");
+ LabelConfig labelconfig = {
+ .left = 83,
+ .top = 52,
+ .width = 300,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_AI_INTELLIGENT_ASSISTANT,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ title = AivoiceMobileDataFailedStartLabelInit(labelconfig);
+ if (title == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::title is nullptr!");
+ return false;
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig.left = 53;
+ labelconfig.width = 360;
+ int textId[] = {STR_BOOT_FAILED, STR_ENABLE_MOBILE_DATA_FIRST};
+ for (int i = 0; i < sizeof(textId) / sizeof(textId[0]); i++)
+ {
+ labelconfig.top = 222 + i * labelconfig.height;
+ labelconfig.textId = textId[i];
+ label[i] = AivoiceMobileDataFailedStartLabelInit(labelconfig);
+ if (label[i] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::label[%d] is nullptr!", i);
+ return false;
+ }
+ }
+ /* -------------------------------------------------------------------------- */
+ labelconfig = {
+ .left = 133,
+ .top = 368,
+ .width = 200,
+ .height = 35,
+ .fontSize = 30,
+ .lineHeigh = 35,
+ .textId = STR_OK,
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ };
+ ensure = AivoiceMobileDataFailedStartLabelInit(labelconfig);
+ if (ensure == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::ensure is nullptr!");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartButton(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartButton");
+ ButtonConfig buttonconfig = {
+ .x = 93,
+ .y = 340,
+ .w = 280,
+ .h = 90,
+ .ViewId = MOBILEDATAFAILEDSTART_ENSURE_BUTTON_VIEW_ID,
+ };
+ ensureButton = AivoiceMobileDataFailedStartButtonInit(buttonconfig);
+ if (ensureButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureButton new fail!");
+ return false;
+ }
+ UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(AiVoicePresenter::GetInstance());
+ if (clickListener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::draglistener can not be nullptr!");
+ return false;
+ }
+ ensureButton->SetOnClickListener(clickListener);
+
+ return true;
+ }
+
+ bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartImage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartImage");
+ ImageConfig imageconfig = {
+ .x = 193,
+ .y = 120,
+ .w = 80,
+ .h = 80,
+ };
+ attentionImage = AivoiceMobileDataFailedStartImageInit(imageconfig);
+ if (attentionImage == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "attentionImage new fail!");
+ return false;
+ }
+ attentionImage->SetStyle(STYLE_BORDER_RADIUS, 100);
+ attentionImage->SetSrc(PNG_ATTENTION_IMAGE);
+
+ return true;
+ }
+
+ UIScrollView *AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartView");
+ if (scrollView == nullptr)
+ {
+ if (!CreateAivoiceMobileDataFailedStartScrollView() || !CreateAivoiceMobileDataFailedStartLabel() ||
+ !CreateAivoiceMobileDataFailedStartButton() || !CreateAivoiceMobileDataFailedStartImage())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartView fail!!");
+ return nullptr;
+ }
+ scrollView->Add(title);
+ scrollView->Add(attentionImage);
+ scrollView->Add(label[0]);
+ scrollView->Add(label[1]);
+ scrollView->Add(ensureButton);
+ scrollView->Add(ensure);
+ }
+ return scrollView;
+ }
+
+}
\ No newline at end of file