From: xue <2144439972@qq.com> Date: Sat, 21 Jun 2025 07:26:21 +0000 (+0800) Subject: 增加疲劳度界面 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=7bec6b3b8b6d4efb58870296394c5d824547fe9f;p=mirrors%2FFD230.git 增加疲劳度界面 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index ca973e3a0..5305f06a8 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -283,6 +283,17 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressFailView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressPresenter.cpp + #疲劳度 + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueMainView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueMeasureView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueUnderMeasureView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueAnalysisView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueModel.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueResultView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueWearView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueFailView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatiguePresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceCaseListAdapter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceListView.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index 390c0cd52..e3d7e8601 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -76,6 +76,7 @@ namespace OHOS void InitBloodSlice(void); void InitBloodPressureSlice(void); void InitStressSlice(void); + void InitFatigueLevelSlice(void); void InitCheckAbnormalSlice(void); void InitCheckInvalidSlice(void); void InitHeartResultSlice(void); diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h index 01f16cac6..c90c8be8d 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h @@ -604,6 +604,8 @@ namespace OHOS static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_LIST_PATH "/booldoxygen.bin"; // 血氧 static constexpr const char *PNG_APPLIST_BP_MESSURE_IMAGE = APP_LIST_PATH "/blood_pressure.bin"; // 血压测量 static constexpr const char *PNG_APPLIST_ECG_IMAGE = APP_LIST_PATH "/ecg.bin"; // 心电(ECG)测量 + static constexpr const char *PNG_APPLIST_STRESS_IMAGE = APP_LIST_PATH "/stress.bin"; // 压力测量 + static constexpr const char *PNG_APPLIST_FATIGUE_IMAGE = APP_LIST_PATH "/Fatigue_level.bin"; // 疲劳度测量 static constexpr const char *PNG_APPLIST_EMOTION_IMAGE = APP_LIST_PATH "/emotion.bin"; // 情绪测量 static constexpr const char *PNG_APPLIST_BP_IMAGE = APP_LIST_PATH "/bp_calibration.bin"; // 血压校准 static constexpr const char *PNG_APPLIST_HEART_IMAGE = APP_LIST_PATH "/heart.bin"; // 心率 @@ -646,6 +648,8 @@ namespace OHOS static constexpr const char *PNG_APPLIST_BP_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/bp_calibration.bin"; // 血压校准 static constexpr const char *PNG_APPLIST_EMOTION_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/emotion.bin"; // 情绪测量 static constexpr const char *PNG_APPLIST_ECG_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/ecg.bin"; // 心电(ECG)测量 + static constexpr const char *PNG_APPLIST_STRESS_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/stress.bin"; // 压力测量 + static constexpr const char *PNG_APPLIST_FATIGUE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/fatigue_level.bin"; // 疲劳度测量 static constexpr const char *PNG_APPLIST_HEART_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/heart.bin"; // 心率 static constexpr const char *PNG_APPLIST_SETTING_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/setting.bin"; // 设置 static constexpr const char *PNG_APPLIST_CALLER_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/phone.bin"; // 打电话 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index ed266bd2e..f409a9aed 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -121,6 +121,9 @@ /*压力检测*/ #include "stress/include/StressPresenter.h" #include "stress/include/StressMainView.h" +/*疲劳度检测*/ +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueMainView.h" /*心率监测*/ #include "heartrate/include/HeartDetectionView.h" #include "heartrate/include/HeartDetectionPresenter.h" @@ -471,6 +474,8 @@ namespace OHOS {VIEW_EMOTION, &NativeLauncher::InitEmotionSlice}, /*压力监测*/ {VIEW_PRESSURE, &NativeLauncher::InitStressSlice}, + /*疲劳度监测*/ + {VIEW_FATIGUE, &NativeLauncher::InitFatigueLevelSlice}, /*心率检测*/ {VIEW_HEART_CHECK, &NativeLauncher::InitHeartCheckSlice}, {VIEW_HEART_RESULT, &NativeLauncher::InitHeartResultSlice}, @@ -1398,7 +1403,7 @@ namespace OHOS // 压力监测界面 void NativeLauncher::InitStressSlice(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitBloodPressureSlice"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitStressSlice"); SliceProxy *stressView = new AbilitySliceProxy; if (stressView == nullptr) { @@ -1406,6 +1411,18 @@ namespace OHOS return; } NativeAbility::GetInstance().AddSliceProxy(VIEW_PRESSURE, stressView); + } + // 疲劳度监测界面 + void NativeLauncher::InitFatigueLevelSlice(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitFatigueLevelSlice"); + SliceProxy *fatigueView = new AbilitySliceProxy; + if (fatigueView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fatigueView is nullptr"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_FATIGUE, fatigueView); } // 心率监测界面 void NativeLauncher::InitHeartCheckSlice(void) diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp index c6a403e86..0ca5b0a75 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp @@ -69,13 +69,13 @@ namespace OHOS // #endif #if defined(BOARD_W9) || defined(BOARD_N9) //ECG - {VIEW_ECG, PNG_APPLIST_ECG_IMAGE_BIG, PNG_APPLIST_ECG_IMAGE, PNG_APPLIST_DEFAULT_IMG, "ECG", STR_BP_CHECK, nullptr}, + //{VIEW_ECG, PNG_APPLIST_ECG_IMAGE_BIG, PNG_APPLIST_ECG_IMAGE, PNG_APPLIST_DEFAULT_IMG, "ECG", STR_BP_CHECK, nullptr}, //情绪 //{VIEW_EMOTION, PNG_APPLIST_EMOTION_IMAGE_BIG, PNG_APPLIST_EMOTION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "情绪", STR_EMOTION, nullptr}, //压力 //{VIEW_PRESSURE, PNG_APPLIST_STRESS_IMAGE_BIG, PNG_APPLIST_STRESS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "压力", STR_STRESS, nullptr}, //疲劳度 - //{VIEW_FATIGUE, PNG_APPLIST_FATIGUE_IMAGE_BIG, PNG_APPLIST_FATIGUE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "疲劳度", STR_FATIGUE, nullptr}, + {VIEW_FATIGUE, PNG_APPLIST_FATIGUE_IMAGE_BIG, PNG_APPLIST_FATIGUE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "疲劳度", STR_BP_CHECK, nullptr}, #endif {VIEW_SLEEP, PNG_APPLIST_SLEEP_IMAGE_BIG, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "睡眠", STR_SLEEP, nullptr}, {VIEW_TRAINING, PNG_APPLIST_TRAINING_IMAGE_BIG, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "运动", STR_TRAINING, nullptr}, diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueAnalysisView.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueAnalysisView.h new file mode 100644 index 000000000..8307af7d8 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueAnalysisView.h @@ -0,0 +1,27 @@ +#ifndef FATIGUE_ANALYSIS_VIEW_H +#define FATIGUE_ANALYSIS_VIEW_H + +#include "components/ui_view_group.h" +#include "components/ui_label_ext.h" +#include "components/ui_image_animator.h" +namespace OHOS +{ + class FatigueAnalysisView + { + public: + FatigueAnalysisView(); + ~FatigueAnalysisView(); + static FatigueAnalysisView *GetInstance(void); + UIViewGroup *FatigueAnalysisInit(); + void startorstopAnalysisAni(bool state); + + private: + void ClearAll(void); + UIViewGroup *group{nullptr}; + UILabelExt *titleLabel{nullptr}; + UILabelExt *remindLabel{nullptr}; + UIImageAnimatorView *FatigueAnaAni{nullptr}; + ImageAnimatorInfo FatigueAnaAniImageInfo[30]; + }; +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueFailView.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueFailView.h new file mode 100644 index 000000000..16ce8ab64 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueFailView.h @@ -0,0 +1,36 @@ +#ifndef BP_FATIGUEFAIL_VIEW_H +#define BP_FATIGUEFAIL_VIEW_H + +#include "components/ui_label.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_label_button.h" +#include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label_button_ext.h" +namespace OHOS +{ + static constexpr const char *FAILBUTTON_FATIGUE = "FailButton"; + + class FatigueFailView + { + public: + FatigueFailView(); + ~FatigueFailView(); + static FatigueFailView *GetInstance(); + UIViewGroup * FatigueFailInit(); + void DeInit(); + bool AddButton(); + bool InitLable(); + bool Initbackground(); + + + private: + UIImageView *error = nullptr; + UILabelExt *titleLable = nullptr; + UILabelButton *checkButton{nullptr}; + UIViewGroup *group{nullptr}; + }; +} + +#endif // 校准失败界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueMainView.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueMainView.h new file mode 100644 index 000000000..81f0b807c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueMainView.h @@ -0,0 +1,66 @@ + + +#ifndef Fatigue_MAIN_VIEW_H +#define Fatigue_MAIN_VIEW_H + +#include "View.h" +#include "BaseView.h" +#include "components/ui_view_group.h" +#include "fatiguelevel/include/FatigueMeasureView.h" +#include "fatiguelevel/include/FatigueUnderMeasureView.h" +#include "fatiguelevel/include/FatigueResultView.h" +#include "fatiguelevel/include/FatigueWearView.h" +#include "fatiguelevel/include/FatigueFailView.h" +#include "fatiguelevel/include/FatigueResultView.h" +#include "fatiguelevel/include/FatigueAnalysisView.h" + +namespace OHOS +{ + typedef enum : uint8_t + { + FATIGUEMEASUREVIEW = 0, // 疲劳度测量界面 + FATIGUEUNDERMEASUREVIEW, // 测量中界面 + FATIGUEANALYSISEVIEW, // 分析界面 + FATIGUERESULTVIEW, // 测量结果界面 + FATIGUEWEARVIEW, // 佩戴错误界面 + FATIGUEFAILVIEW, // 测量失败界面 + MAX_FATIGUEVIEW, + } FatigueVIEWID; + + class FatiguePresenter; + class FatigueMainView : public View + { + public: + FatigueMainView(); + virtual ~FatigueMainView(); + static FatigueMainView *GetInstance(void); + void OnStop() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStart() override; + + bool ChangeFatigueMeasureView(int16_t); + bool ChangeFatigueUnderMeasureView(int16_t); + bool ChangeFatigueResultView(int16_t); + bool ChangeFatigueWearView(int16_t); + bool ChangeFatigueFailView(int16_t); + bool ChangeFatigueAnalysisView(int16_t); + + bool ClickFunc(int16_t interface); + void ChangeView(int16_t hideView, int16_t showView); + + private: + FatigueMeasureView *g_pFatigueMeasureView{nullptr}; + FatigueUnderMeasureView *g_pFatigueUnderMeasureView{nullptr}; + FatigueResultView *g_pFatigueResultView{nullptr}; + FatigueFailView *g_pFatigueFailView{nullptr}; + FatigueWearView *g_pFatigueWearView{nullptr}; + FatigueAnalysisView *g_pFatigueAnalysisView{nullptr}; + + private: + void DeInit(); + UIViewGroup *group[MAX_FATIGUEVIEW]{nullptr}; + }; +} + +#endif // 血压主界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueMeasureView.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueMeasureView.h new file mode 100644 index 000000000..7c85f96a1 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueMeasureView.h @@ -0,0 +1,38 @@ + +#ifndef BP_FATIGUEMEASURE_VIEW_H +#define BP_FATIGUEMEASURE_VIEW_H + +#include "components/ui_label.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_label_button.h" +#include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label_button_ext.h" +namespace OHOS +{ + static constexpr const char *STARTBUTTON_FATIGUE = "startkButton"; // 开始测量按钮 + + class FatigueMeasureView + { + public: + FatigueMeasureView(); + ~FatigueMeasureView(); + static FatigueMeasureView *GetInstance(); + UIViewGroup * FatigueMeasureInit(); + void DeInit(); + bool AddButton(); + bool InitLable(); + bool Initbackground(); + + + private: + UIImageView *error = nullptr; + UILabelExt *titleLable = nullptr; + UILabelExt *resultremindLable = nullptr; + UILabelButton *checkButton{nullptr}; + UIViewGroup *group{nullptr}; + }; +} + +#endif // 校准失败界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueModel.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueModel.h new file mode 100644 index 000000000..9a8ef78ef --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueModel.h @@ -0,0 +1,59 @@ +#ifndef FATIGUE_MODEL_H +#define FATIGUE_MODEL_H + +#include +#include + + +namespace OHOS { +// 血压检测状态 +enum class FatigueState { + //结束 + FATIGUE_End = 0, + //疲劳度检测中 + FATIGUE_MEASURE, + //结果分析中 + FATIGUE_ANALYSIS, + //普通状态 + FATIGUE_NORMAL, + //暂停 + FATIGUE_PAUSE, + + FATIGUE_STATE_MAX, +}; +// 疲劳度检测结果 +enum class FatigueRESULT { + NOT_TESTED = 0, // 未检测 + SUCCESS, // 检测成功 + NOT_WORN, // 未佩戴检测 + TIMEOUT, // 检测超时 + HIGH_RESULT, // 检测结果过高 + LOW_RESULT, // 检测结果过低 + INVALID_DATA // 无效数据 +}; + +#define Fatigue_ANLYSISI_TIME_MAX 5 + +class FatigueModel { +public: + FatigueModel(); + ~FatigueModel(); + static FatigueModel *GetInstance(); + + //当前状态管理 + void Fatigue_SetState(FatigueState state); + FatigueState GetCurrentState(); + //控制血压检测 + void Fatigue_Control(FatigueState state); + + /////////////////////////////////////////////// + void Fatigue_StartTimer(uint32_t interval = 1*1000);// 1s定时器 + void Fatigue_StopTimer(void); + + +private: + FatigueState current_state = FatigueState::FATIGUE_NORMAL; +}; +} // namespace OHOS + +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatiguePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatiguePresenter.h new file mode 100644 index 000000000..246bd02ae --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatiguePresenter.h @@ -0,0 +1,41 @@ + + +#ifndef Fatigue_RESULT_PRESENTER_H +#define Fatigue_RESULT_PRESENTER_H + +#include "Presenter.h" +#include "ModelListenerSample.h" +#include "components/ui_circle_progress.h" +#include "ohos_types.h" +#include "KeyInputListener.h" +#include "common/key_code.h" +#include "fatiguelevel/include/FatigueMainView.h" +#include "fatiguelevel/include/FatigueModel.h" + +namespace OHOS +{ + class FatigueMainView; + class FatiguePresenter : public Presenter, + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener + { + public: + FatiguePresenter(); + virtual ~FatiguePresenter(); + static FatiguePresenter *GetInstance(void); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 + + }; +} + +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueResultView.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueResultView.h new file mode 100644 index 000000000..c63391b93 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueResultView.h @@ -0,0 +1,37 @@ + +#ifndef BP_FATIGUERESULT_VIEW_H +#define BP_FATIGUERESULT_VIEW_H + +#include "components/ui_label.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_label_button.h" +#include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label_button_ext.h" +namespace OHOS +{ + + class FatigueResultView + { + public: + FatigueResultView(); + ~FatigueResultView(); + static FatigueResultView *GetInstance(); + UIViewGroup * FatigueResultInit(); + void DeInit(); + bool AddButton(); + bool InitLable(); + bool Initbackground(); + + + private: + UIImageView *error = nullptr; + UILabelExt *titleLable = nullptr; + UILabelExt *resultremindLable = nullptr; + UILabelExt *resultLable = nullptr; + UIViewGroup *group{nullptr}; + }; +} + +#endif // 校准失败界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueUnderMeasureView.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueUnderMeasureView.h new file mode 100644 index 000000000..83e25dc99 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueUnderMeasureView.h @@ -0,0 +1,38 @@ + +#ifndef BP_FatigueUnderMeasureView_VIEW_H +#define BP_FatigueUnderMeasureView_VIEW_H + +#include "components/ui_label.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_label_button.h" +#include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label_button_ext.h" +namespace OHOS +{ + static constexpr const char *UNDERBUTTON_FATIGUE = "undermeasureButton"; // 开始测量按钮 + + class FatigueUnderMeasureView + { + public: + FatigueUnderMeasureView(); + ~FatigueUnderMeasureView(); + static FatigueUnderMeasureView *GetInstance(); + UIViewGroup * FatigueUnderMeasureInit(); + void DeInit(); + bool AddButton(); + bool InitLable(); + bool Initbackground(); + + + private: + UIImageView *error = nullptr; + UILabelExt *titleLable = nullptr; + UILabelExt *resultremindLable = nullptr; + UILabelButton *checkButton{nullptr}; + UIViewGroup *group{nullptr}; + }; +} + +#endif // 校准失败界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueWearView.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueWearView.h new file mode 100644 index 000000000..28bbdd55c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueWearView.h @@ -0,0 +1,37 @@ + +#ifndef BP_FATIGUEWEAR_VIEW_H +#define BP_FATIGUEWEAR_VIEW_H + +#include "components/ui_label.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_label_button.h" +#include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label_button_ext.h" +namespace OHOS +{ + static constexpr const char *WEARBUTTON_FITIGUE = "WearButton"; // 开始测量按钮 + + class FatigueWearView + { + public: + FatigueWearView(); + ~FatigueWearView(); + static FatigueWearView *GetInstance(); + UIViewGroup * FatigueWearInit(); + void DeInit(); + bool AddButton(); + bool InitLable(); + bool Initbackground(); + + + private: + UIImageView *error = nullptr; + UILabelExt *titleLable = nullptr; + UILabelButton *checkButton{nullptr}; + UIViewGroup *group{nullptr}; + }; +} + +#endif // 校准失败界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueAnalysisView.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueAnalysisView.cpp new file mode 100644 index 000000000..e92f22d34 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueAnalysisView.cpp @@ -0,0 +1,175 @@ +#include "fatiguelevel/include/FatigueAnalysisView.h" +#include "fatiguelevel/include/FatiguePresenter.h" +#include "wearable_log.h" +#include "UiConfig.h" +#include "common/image_cache_manager.h" +namespace OHOS +{ + + const char *FatigueAnaAniImagePath[] = { + PNG_STRESS_IMAGE_00, + PNG_STRESS_IMAGE_01, + PNG_STRESS_IMAGE_02, + PNG_STRESS_IMAGE_03, + PNG_STRESS_IMAGE_04, + PNG_STRESS_IMAGE_05, + PNG_STRESS_IMAGE_06, + PNG_STRESS_IMAGE_07, + PNG_STRESS_IMAGE_08, + PNG_STRESS_IMAGE_09, + PNG_STRESS_IMAGE_10, + PNG_STRESS_IMAGE_11, + PNG_STRESS_IMAGE_12, + PNG_STRESS_IMAGE_13, + PNG_STRESS_IMAGE_14, + PNG_STRESS_IMAGE_15, + PNG_STRESS_IMAGE_16, + PNG_STRESS_IMAGE_17, + PNG_STRESS_IMAGE_18, + PNG_STRESS_IMAGE_19, + PNG_STRESS_IMAGE_20, + PNG_STRESS_IMAGE_21, + PNG_STRESS_IMAGE_22, + PNG_STRESS_IMAGE_23, + PNG_STRESS_IMAGE_24, + PNG_STRESS_IMAGE_25, + PNG_STRESS_IMAGE_26, + PNG_STRESS_IMAGE_27, + PNG_STRESS_IMAGE_28, + PNG_STRESS_IMAGE_29, + }; + + static FatigueAnalysisView *g_pFatigueAnalysisView = nullptr; + FatigueAnalysisView::FatigueAnalysisView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueAnalysisView::FatigueAnalysisView"); + g_pFatigueAnalysisView = this; + } + + FatigueAnalysisView::~FatigueAnalysisView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueAnalysisView::~FatigueAnalysisView"); + ClearAll(); + g_pFatigueAnalysisView = nullptr; + } + + FatigueAnalysisView *FatigueAnalysisView::GetInstance(void) + { + return g_pFatigueAnalysisView; + } + + void FatigueAnalysisView::ClearAll(void) + { + if (group) + { + group->RemoveAll(); + delete group; + group = nullptr; + delete titleLabel; + titleLabel = nullptr; + delete remindLabel; + remindLabel = nullptr; + if (FatigueAnaAni) + { + FatigueAnaAni->Stop(); + delete FatigueAnaAni; + FatigueAnaAni = nullptr; + } + } + } + + void FatigueAnalysisView::startorstopAnalysisAni(bool state) + { + if (FatigueAnaAni) + { + if (state) + { + FatigueAnaAni->Start(); + } + else + { + FatigueAnaAni->Stop(); + } + } + } + + UIViewGroup *FatigueAnalysisView::FatigueAnalysisInit() + { + if (group == nullptr) + { + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group null!"); + return nullptr; + } + } + group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + group->SetTouchable(true); + group->SetDraggable(true); + // UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::FatiguePresenter::GetInstance(); + // group->SetOnDragListener(dragListener); + /* -------------------------------------------------------------------------- */ + FatigueAnaAni = new UIImageAnimatorView(); + if (FatigueAnaAni == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindAni::AlipayInitImageAni new FatigueAnaAni fail"); + return nullptr; + } + for (uint8_t i = 0; i < (sizeof(FatigueAnaAniImagePath) / sizeof(FatigueAnaAniImagePath[0])); i++) + { + FatigueAnaAniImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(FatigueAnaAniImagePath[i]); + FatigueAnaAniImageInfo[i].imageType = IMG_SRC_IMAGE_INFO; + FatigueAnaAniImageInfo[i].pos.x = 0; + FatigueAnaAniImageInfo[i].pos.y = 0; + FatigueAnaAniImageInfo[i].width = 466; + FatigueAnaAniImageInfo[i].height = 466; + } + FatigueAnaAni->SetPosition(0, 0, 466, 466); + FatigueAnaAni->SetImageAnimatorSrc(FatigueAnaAniImageInfo, (sizeof(FatigueAnaAniImagePath) / sizeof(FatigueAnaAniImagePath[0])), 100); + FatigueAnaAni->SetRepeat(true); + FatigueAnaAni->SetAutoEnable(false); + FatigueAnaAni->SetResizeMode(UIImageView::FILL); + group->Add(FatigueAnaAni); + /* -------------------------------------------------------------------------- */ + if (titleLabel == nullptr) + { + titleLabel = new UILabelExt(); + if (titleLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel null!"); + return nullptr; + } + } + titleLabel->SetPosition((HORIZONTAL_RESOLUTION - 300) / 2, 50, 300, 35); + titleLabel->SetStyle(STYLE_TEXT_FONT, 30); + titleLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + titleLabel->SetText("疲劳度"); + titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + titleLabel->SetRollSpeed(23); + titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + group->Add(titleLabel); + /* -------------------------------------------------------------------------- */ + if (remindLabel == nullptr) + { + remindLabel = new UILabelExt(); + if (remindLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "remindLabel null!"); + return nullptr; + } + } + remindLabel->SetPosition((HORIZONTAL_RESOLUTION - 300) / 2, 360, 300, 35); + remindLabel->SetStyle(STYLE_TEXT_FONT, 30); + remindLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + remindLabel->SetText("数据分析中,请耐心等待结果"); + remindLabel->SetTextColor(Color::White()); + remindLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + remindLabel->SetRollSpeed(23); + remindLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + remindLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + group->Add(remindLabel); + return group; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueFailView.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueFailView.cpp new file mode 100644 index 000000000..72ad321cb --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueFailView.cpp @@ -0,0 +1,134 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-31 14:36:25 + * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/fatigue/src/FatigueFailView.cpp + */ + +#include "ui_resource_image.h" +#include "UiConfig.h" +#include "wearable_log.h" +#include "uicomponents/UIComponents.h" +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueFailView.h" +namespace OHOS +{ + static FatigueFailView *g_pFatigueFailView{nullptr}; + static const char *BPBACKPATH = "/user/res/BPCalibration/error.bin"; + + FatigueFailView::FatigueFailView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueFailView::FatigueFailView"); + g_pFatigueFailView = this; + } + FatigueFailView::~FatigueFailView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueFailView::~FatigueFailView"); + DeInit(); + g_pFatigueFailView = nullptr; + } + FatigueFailView *FatigueFailView::GetInstance() + { + return g_pFatigueFailView; + } + void FatigueFailView::DeInit() + { + if (group) + { + group->RemoveAll(); + delete group; + group = nullptr; + } + if (error != nullptr) + { + delete error; + error = nullptr; + } + if (titleLable != nullptr) + { + delete titleLable; + titleLable = nullptr; + } + + if (checkButton != nullptr) + { + delete checkButton; + checkButton = nullptr; + } + } + /* -------------------------------------------------------------------------- */ + /*** + * @description: + * @return 添加按键是否成功 + */ + bool FatigueFailView::AddButton() + { + InitLabelButton(checkButton, 124, 352, 217, 63, "errorcheckButton", "重新测量", 35); + checkButton->SetViewId(FAILBUTTON_FATIGUE); + checkButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); // 设置按键颜色 + checkButton->SetTextColor(Color::White()); + // 设置按键监听 + UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::FatiguePresenter::GetInstance(); + checkButton->SetOnClickListener(clickListener); + + group->Add(checkButton); + return true; + } + /*** + * @description: + * @return 初始化标签是否成功 + */ + bool FatigueFailView::InitLable() + { + + InitLabel(titleLable, 87, 85, 272, 45, "titleLable", "测量失败", DEFAULT_VECTOR_FONT_FILENAME, 35); + /*初始化检测时间*/ + group->Add(titleLable); + + return true; + } + /*** + * @description: + * @return 初始化背景是否成功 + */ + bool FatigueFailView::Initbackground() + { + error = new UIImageView(); + error->SetPosition(163, 170, 140, 140); + error->SetSrc(BPBACKPATH); + group->Add(error); + return true; + } + /*** + * @description: + * @return 是否初始化成功 + */ + UIViewGroup *FatigueFailView::FatigueFailInit() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool FatigueFailView::InitView()"); + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::group null!"); + return nullptr; + } + group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + if (!Initbackground()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Initbackground error!"); + return nullptr; + }; + if (!InitLable()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLable error!"); + return nullptr; + }; + if (!AddButton()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddButton error!"); + return nullptr; + }; + return group; + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueMainView.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueMainView.cpp new file mode 100644 index 000000000..bc9290fb5 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueMainView.cpp @@ -0,0 +1,280 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-31 14:36:25 + * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/fatigue/src/FatigueMainView.cpp + */ + +#include "common/image_cache_manager.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +#include "MainViewSample.h" +#include "components/ui_view_group.h" +#include "DialModelSPO2.h" +#include "DialModelHeartRate.h" + +#include "UiConfig.h" +#include "uicomponents/UIComponents.h" +#include "MainPresenterSample.h" + +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueMainView.h" +#include "wearable_log.h" +namespace OHOS +{ + static FatigueMainView *g_pFatigueMainView{nullptr}; + + FatigueMainView::FatigueMainView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueMainView::FatigueMainView"); + g_pFatigueMainView = this; + } + + FatigueMainView::~FatigueMainView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueMainView::~FatigueMainView"); + DeInit(); + g_pFatigueMainView = nullptr; + } + + FatigueMainView *FatigueMainView::GetInstance() + { + return g_pFatigueMainView; + } + + void FatigueMainView::DeInit() + { + + if (g_pFatigueMeasureView) + { + delete g_pFatigueMeasureView; + g_pFatigueMeasureView = nullptr; + } + if (g_pFatigueUnderMeasureView) + { + delete g_pFatigueUnderMeasureView; + g_pFatigueUnderMeasureView = nullptr; + } + if (g_pFatigueResultView) + { + delete g_pFatigueResultView; + g_pFatigueResultView = nullptr; + } + } + + void FatigueMainView::OnStart() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueMainView::OnStart"); + View::OnStart(); + SetContainerView(new UIViewGroup()); + if (GetContainer() == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail!!"); + return; + } + container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); + container_->SetDraggable(true); + container_->SetTouchable(true); + container_->SetOnDragListener(presenter_); + + ChangeView(MAX_FATIGUEVIEW, FATIGUEMEASUREVIEW); // 切换到第一个界面 + + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::FatiguePresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } + void FatigueMainView::OnSetUpView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueMainView::OnSetUpView"); + View::OnSetUpView(); + Draw(); + } + void FatigueMainView::OnTearDownView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueMainView::OnTearDownView"); + View::OnTearDownView(); + return; + } + + void FatigueMainView::OnStop() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueMainView::OnStop"); + View::OnStop(); + if (container_ != nullptr) + { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + } + return; + } + + bool FatigueMainView::ChangeFatigueMeasureView(int16_t thisView) + { + // 检查视图是否已初始化 + if (group[thisView] == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "fatigueView::ChangeFatigueMeasureView"); + g_pFatigueMeasureView = new FatigueMeasureView(); + if (g_pFatigueMeasureView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fatigueView:: new scrollView[%d] fail", thisView); + return false; + } + // 初始化视图并添加到视图组 + group[thisView] = g_pFatigueMeasureView->FatigueMeasureInit(); + container_->Add(group[thisView]); + } + return true; + } + bool FatigueMainView::ChangeFatigueUnderMeasureView(int16_t thisView) + { + // 检查视图是否已初始化 + if (group[thisView] == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "fatigueView::ChangeFatigueUnderMeasureView"); + g_pFatigueUnderMeasureView = new FatigueUnderMeasureView(); + if (g_pFatigueUnderMeasureView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fatigueView:: new scrollView[%d] fail", thisView); + return false; + } + // 初始化视图并添加到视图组 + group[thisView] = g_pFatigueUnderMeasureView->FatigueUnderMeasureInit(); + container_->Add(group[thisView]); + } + return true; + } + bool FatigueMainView::ChangeFatigueResultView(int16_t thisView) + { + // 检查视图是否已初始化 + if (group[thisView] == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "fatigueView::ChangeFatigueResultView"); + g_pFatigueResultView = new FatigueResultView(); + if (g_pFatigueResultView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fatigueView:: new scrollView[%d] fail", thisView); + return false; + } + // 初始化视图并添加到视图组 + group[thisView] = g_pFatigueResultView->FatigueResultInit(); + container_->Add(group[thisView]); + } + return true; + } + bool FatigueMainView::ChangeFatigueWearView(int16_t thisView) + { + // 检查视图是否已初始化 + if (group[thisView] == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "fatigueView::ChangeFatigueWearView"); + g_pFatigueWearView = new FatigueWearView(); + if (g_pFatigueWearView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fatigueView:: new scrollView[%d] fail", thisView); + return false; + } + // 初始化视图并添加到视图组 + group[thisView] = g_pFatigueWearView->FatigueWearInit(); + container_->Add(group[thisView]); + } + return true; + } + bool FatigueMainView::ChangeFatigueFailView(int16_t thisView) + { + // 检查视图是否已初始化 + if (group[thisView] == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "fatigueView::ChangeFatigueResultView"); + g_pFatigueFailView = new FatigueFailView(); + if (g_pFatigueFailView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fatigueView:: new scrollView[%d] fail", thisView); + return false; + } + // 初始化视图并添加到视图组 + group[thisView] = g_pFatigueFailView->FatigueFailInit(); + container_->Add(group[thisView]); + } + return true; + } + bool FatigueMainView::ChangeFatigueAnalysisView(int16_t thisView) + { + // 检查视图是否已初始化 + if (group[thisView] == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "fatigueView::ChangeFatigueResultView"); + g_pFatigueAnalysisView = new FatigueAnalysisView(); + if (g_pFatigueAnalysisView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fatigueView:: new scrollView[%d] fail", thisView); + return false; + } + // 初始化视图并添加到视图组 + group[thisView] = g_pFatigueAnalysisView->FatigueAnalysisInit(); + container_->Add(group[thisView]); + } + return true; + } + + /** + * 视图映射结构体 - 将视图ID映射到对应的视图切换函数 + */ + struct FatigueViewMapper + { + const int16_t viewId; // 视图ID + bool (FatigueMainView::*func)(int16_t); // 对应的视图切换函数指针 + }; + + static const FatigueViewMapper ViewMapper[] = { + {FATIGUEMEASUREVIEW, &FatigueMainView::ChangeFatigueMeasureView}, + {FATIGUEUNDERMEASUREVIEW, &FatigueMainView::ChangeFatigueUnderMeasureView}, + {FATIGUEANALYSISEVIEW, &FatigueMainView::ChangeFatigueAnalysisView}, + {FATIGUERESULTVIEW, &FatigueMainView::ChangeFatigueResultView}, + {FATIGUEWEARVIEW, &FatigueMainView::ChangeFatigueWearView}, + {FATIGUEFAILVIEW, &FatigueMainView::ChangeFatigueFailView}, + }; + + bool FatigueMainView::ClickFunc(int16_t interface) + { + int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]); + + for (int i = 0; i < funcSize; i++) + { + if (interface == ViewMapper[i].viewId) + { + bool jug = (this->*(ViewMapper[i].func))(interface); + if (jug == false) + { + return false; + } + return true; + } + } + return false; + } + + void FatigueMainView::ChangeView(int16_t hideView, int16_t showView) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueMainView::ChangeView"); + if (hideView > MAX_FATIGUEVIEW) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueMainView:: SystemViewId Overstep ones bounds"); + return; + } + if (hideView != MAX_FATIGUEVIEW) + { + if (group[hideView] == nullptr) + { + return; + } + group[hideView]->SetVisible(false); + } + ClickFunc(showView); + group[showView]->SetVisible(true); + container_->Invalidate(); + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueMeasureView.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueMeasureView.cpp new file mode 100644 index 000000000..4e4363f1a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueMeasureView.cpp @@ -0,0 +1,142 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-31 14:36:25 + * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/fatiguelevel/src/FatigueMeasureView.cpp + */ + +#include "ui_resource_image.h" +#include "UiConfig.h" +#include "wearable_log.h" +#include "uicomponents/UIComponents.h" +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueMeasureView.h" +namespace OHOS +{ + static FatigueMeasureView *g_pFatigueMeasureView{nullptr}; + static const char *BPBACKPATH = "/user/res/BPCalibration/J1.bin"; + + FatigueMeasureView::FatigueMeasureView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueMeasureView::FatigueMeasureView"); + g_pFatigueMeasureView = this; + } + FatigueMeasureView::~FatigueMeasureView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueMeasureView::~FatigueMeasureView"); + DeInit(); + g_pFatigueMeasureView = nullptr; + } + FatigueMeasureView *FatigueMeasureView::GetInstance() + { + return g_pFatigueMeasureView; + } + void FatigueMeasureView::DeInit() + { + if (group) + { + group->RemoveAll(); + delete group; + group = nullptr; + } + if (error != nullptr) + { + delete error; + error = nullptr; + } + if (titleLable != nullptr) + { + delete titleLable; + titleLable = nullptr; + } + if (resultremindLable != nullptr) + { + delete resultremindLable; + resultremindLable = nullptr; + } + if (checkButton != nullptr) + { + delete checkButton; + checkButton = nullptr; + } + } + /* -------------------------------------------------------------------------- */ + /*** + * @description: + * @return 添加按键是否成功 + */ + bool FatigueMeasureView::AddButton() + { + InitLabelButton(checkButton, 124, 352, 217, 63, "errorcheckButton", "测量", 35); + checkButton->SetViewId(STARTBUTTON_FATIGUE); + checkButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff00cbf0); // 设置按键颜色 + checkButton->SetTextColor(Color::White()); + // 设置按键监听 + UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::FatiguePresenter::GetInstance(); + checkButton->SetOnClickListener(clickListener); + + group->Add(checkButton); + return true; + } + /*** + * @description: + * @return 初始化标签是否成功 + */ + bool FatigueMeasureView::InitLable() + { + + InitLabel(titleLable, 188, 30, 95, 45, "titleLable", "疲劳度", DEFAULT_VECTOR_FONT_FILENAME, 35); + InitLabel(resultremindLable, 68, 239, 337, 100, "resultremindLable", "---", DEFAULT_VECTOR_FONT_FILENAME, 100); + resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + resultremindLable->SetTextColor(Color::White()); + /*初始化检测时间*/ + group->Add(titleLable); + group->Add(resultremindLable); + + return true; + } + /*** + * @description: + * @return 初始化背景是否成功 + */ + bool FatigueMeasureView::Initbackground() + { + error = new UIImageView(); + error->SetPosition(140, 65, 111, 118); + error->SetSrc(BPBACKPATH); + group->Add(error); + return true; + } + /*** + * @description: + * @return 是否初始化成功 + */ + UIViewGroup *FatigueMeasureView::FatigueMeasureInit() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool FatigueMeasureView::InitView()"); + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::group null!"); + return nullptr; + } + group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + if (!Initbackground()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Initbackground error!"); + return nullptr; + }; + if (!InitLable()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLable error!"); + return nullptr; + }; + if (!AddButton()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddButton error!"); + return nullptr; + }; + return group; + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueModel.cpp new file mode 100644 index 000000000..3ce8c97a9 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueModel.cpp @@ -0,0 +1,251 @@ +#include "fatiguelevel/include/FatigueModel.h" +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueMainView.h" +#include "fatiguelevel/include/FatigueAnalysisView.h" + + + + +#include "wearable_log.h" +#include +#include +#include + +#include "AppViewIDs.h" +#include "ConfigModel.h" +#include "NativeAbility.h" + +#include "battery_hal.h" +#include "custom_utils.h" +#include "ppg_service.h" + +namespace OHOS +{ +/** + * @brief Constructor for the FatigueModel class. + */ + +#define FATIGUE_MEASURE_TIME_MAX 30 +#define FATIGUE_ANALYSIS_TIME_MAX 5 + + // 声明定时器变量 + static osTimerId_t g_timer = nullptr; + static int Time = 30; + static FatigueState statefalg = FatigueState::FATIGUE_MEASURE; + + FatigueModel::FatigueModel() {} + FatigueModel::~FatigueModel() {} + FatigueModel *FatigueModel::GetInstance(void) + { + static FatigueModel instance; + return &instance; + } + + + // 管理当前状态 + void FatigueModel::Fatigue_SetState(FatigueState state) { current_state = state; } + FatigueState FatigueModel::GetCurrentState() { return current_state; } + + // 进行传感器、定时器等控制 + void FatigueModel::Fatigue_Control(FatigueState state) + { + if (state == current_state) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Fatigue_Control: Already in current state"); + return; + } + switch (state) + { + case FatigueState::FATIGUE_NORMAL: + { + /* + 关闭定时器 + 关闭传感器 + 关闭常亮 + */ + Fatigue_StopTimer(); + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); + Time = FATIGUE_MEASURE_TIME_MAX; + break; + } + case FatigueState::FATIGUE_MEASURE: + { + /* + 开启定时器 + 开启传感器 + 开启常亮 + */ + Fatigue_StartTimer(); + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 + + if (Time != FATIGUE_MEASURE_TIME_MAX) + Time = FATIGUE_MEASURE_TIME_MAX; // 重置时间 + + break; + } + case FatigueState::FATIGUE_ANALYSIS: + { + /* + 开启定时器 + 开启传感器 + 开启常亮 + */ + Fatigue_StartTimer(); + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 + + if (Time != FATIGUE_ANALYSIS_TIME_MAX) + Time = FATIGUE_ANALYSIS_TIME_MAX; // 重置时间 + + break; + } + + default: + /*未知状态,全部状态重置*/ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Fatigue_Control: Invalid state"); + Fatigue_SetState(FatigueState::FATIGUE_NORMAL); + Fatigue_StopTimer(); + Time = FATIGUE_MEASURE_TIME_MAX; + return; + } + // 更新状态 + Fatigue_SetState(state); + } + /////////////////////////////////////////////////////////////////////////////////////// + + /*定时器到期时的处理*/ + static void Fatigue_TimerCallbackProc(int data) + { + + // 倒计时 + Time--; + // 提前检查无效时间 + if (Time < 0) + { + FatigueModel::GetInstance()->Fatigue_StopTimer(); + FatigueModel::GetInstance()->Fatigue_SetState(FatigueState::FATIGUE_NORMAL); + if (statefalg == FatigueState::FATIGUE_ANALYSIS) //在分析中 + { + FatigueMainView::GetInstance()->ChangeView(FATIGUEANALYSISEVIEW,FATIGUERESULTVIEW); + FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(false); + statefalg = FatigueState::FATIGUE_MEASURE; + } + else if(statefalg == FatigueState::FATIGUE_MEASURE)//在检测中 + { + // 测量成功 + FatigueModel::GetInstance()->Fatigue_Control(FatigueState::FATIGUE_ANALYSIS); + FatigueMainView::GetInstance()->ChangeView(FATIGUEUNDERMEASUREVIEW, FATIGUEANALYSISEVIEW); + FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(true); + statefalg = FatigueState::FATIGUE_ANALYSIS; + + + // 测量失败 + + } + return; + } + + FatigueState current_state_time = FatigueModel::GetInstance()->GetCurrentState(); + // 根据状态处理 + switch (current_state_time) + { + case FatigueState::FATIGUE_NORMAL: + FatigueModel::GetInstance()->Fatigue_StopTimer(); + FatigueModel::GetInstance()->Fatigue_SetState(FatigueState::FATIGUE_NORMAL); + return; + + case FatigueState::FATIGUE_MEASURE: + { + break; + } + case FatigueState::FATIGUE_ANALYSIS: + { + break; + } + + default: + FatigueModel::GetInstance()->Fatigue_StopTimer(); + // 显示错误界面提示 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current_state is error!!"); + return; + } + } + + /* + * @brief 回调函数 + */ + static void Fatigue_TimerCallback(int data) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Fatigue_TimerCallback %d", data); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(Fatigue_TimerCallbackProc, data)); + } + + /* + * @brief 开启定时器函数 + * @param interval 时间间隔,单位ms + */ + void FatigueModel::Fatigue_StartTimer(uint32_t interval) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueModel::Fatigue_StartTimer"); + /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 + * ------------------------- */ + if (g_timer != nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer already exists!!"); + return; + } + + /* --------------------------------- 2.创建定时器 + * -------------------------------- */ + g_timer = osTimerNew((osTimerFunc_t)Fatigue_TimerCallback, osTimerPeriodic, + nullptr, nullptr); + // 检查定时器创建是否成功 + if (g_timer == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!"); + return; + } + + /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 + * ---------------------------- */ + int tick = osMs2Tick(interval); + + /* --------------------------------- 4.启动定时器 + * -------------------------------- */ + osStatus_t ret = osTimerStart(g_timer, tick); + /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 + * nullptr -------------------- */ + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", + ret); + if (g_timer != nullptr) + { + ret = osTimerDelete(g_timer); + } + g_timer = nullptr; + return; + } + } + /* + * @brief 停止定时器 + */ + void FatigueModel::Fatigue_StopTimer(void) + { + // 检查定时器是否存在 + if (g_timer != nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueModel::Fatigue_StopTimer"); + osTimerStop(g_timer); + // 删除定时器并置为 nullptr + osStatus_t ret = osTimerDelete(g_timer); + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "osTimerDelete failed, ret = %lx!!", ret); + } + g_timer = nullptr; + } + } + +} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatiguePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatiguePresenter.cpp new file mode 100644 index 000000000..d9565c8ba --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatiguePresenter.cpp @@ -0,0 +1,123 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: bloodOxygen view + * Author: + * Create: 2021-08-01 + */ + +#include "fatiguelevel/include/FatiguePresenter.h" +#include "common/task_manager.h" + +#include "components/ui_label.h" +#include "components/ui_label_ext.h" + +#include "ChangeSliceListener.h" +#include "broadcast_service.h" +#include +#include "iostream" +#include +#include +#include +#include +#include "wearable_log.h" +#include "cmsis_os.h" +#include "securec.h" +#include "broadcast_service.h" +#include "graphic_service.h" +#include +#include +#include + +#include "ppg_service.h" +#include "displaybrightness/include/DisplayBrightnessModel.h" +#include "power_display_service.h" +#include "custom_utils.h" +#include "cywee_service.h" +#include "battery_hal.h" + +#include "gfx_utils/mem_check.h" +#include "map" + +#define FatigueKEYABLE 1 +namespace OHOS +{ + static constexpr uint16_t PROGRESS_VALUE_MIN = 0; + static constexpr uint16_t PROGRESS_VALUE_MAX = 10; + static int16_t passflag = 0; // 第几次校准成功标志位 + + static FatiguePresenter *g_pFatiguePresenter; + /* -------------------------------------------------------------------------- */ + FatiguePresenter::FatiguePresenter() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatiguePresenter::new FatiguePresenter"); + g_pFatiguePresenter = this; +#ifdef MEM_CHECK + MemCheck::GetInstance()->EnableLeakCheck(true); +#endif + } + FatiguePresenter::~FatiguePresenter() + { + g_pFatiguePresenter = nullptr; +#ifdef MEM_CHECK + MemCheck::GetInstance()->EnableLeakCheck(false); +#endif + } + FatiguePresenter *FatiguePresenter::GetInstance() + { + return g_pFatiguePresenter; + } + void FatiguePresenter::OnStart() + { + Presenter::OnStart(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatiguePresenter::On Start "); + } + void FatiguePresenter::OnPause(void) {} + + void FatiguePresenter::OnResume(void) {} + + void FatiguePresenter::OnStop(void) + { + } + + bool FatiguePresenter::OnDrag(UIView &view, const DragEvent &event) + { + return true; + } + bool FatiguePresenter::OnDragEnd(UIView &view, const DragEvent &event) + { + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) + { + // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + return true; + } + return false; + } + bool FatiguePresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && + keyState == 1 && uapi_get_screen_state() == 0) + { + // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + } + return true; + } + + bool FatiguePresenter::OnClick(UIView &view, const ClickEvent &event) + { + + if (strcmp(view.GetViewId(), STARTBUTTON_FATIGUE) == 0) + { + FatigueModel::GetInstance()->Fatigue_Control(FatigueState::FATIGUE_MEASURE); + FatigueMainView::GetInstance()->ChangeView(FATIGUEMEASUREVIEW, FATIGUEUNDERMEASUREVIEW); + } + + return true; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatiguePresenter::OnClick"); + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueResultView.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueResultView.cpp new file mode 100644 index 000000000..9ed8f3b2a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueResultView.cpp @@ -0,0 +1,124 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-31 14:36:25 + * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/fatigue/src/FatigueResultView.cpp + */ + +#include "ui_resource_image.h" +#include "UiConfig.h" +#include "wearable_log.h" +#include "uicomponents/UIComponents.h" +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueResultView.h" +namespace OHOS +{ + static FatigueResultView *g_pFatigueResultView{nullptr}; + static const char *BPBACKPATH = "/user/res/BPCalibration/J1.bin"; + + FatigueResultView::FatigueResultView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueResultView::FatigueResultView"); + g_pFatigueResultView = this; + } + FatigueResultView::~FatigueResultView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueResultView::~FatigueResultView"); + DeInit(); + g_pFatigueResultView = nullptr; + } + FatigueResultView *FatigueResultView::GetInstance() + { + return g_pFatigueResultView; + } + void FatigueResultView::DeInit() + { + if (group) + { + group->RemoveAll(); + delete group; + group = nullptr; + } + if (error != nullptr) + { + delete error; + error = nullptr; + } + if (titleLable != nullptr) + { + delete titleLable; + titleLable = nullptr; + } + if (resultremindLable != nullptr) + { + delete resultremindLable; + resultremindLable = nullptr; + } + if (resultLable != nullptr) + { + delete resultLable; + resultLable = nullptr; + } + + } + /* -------------------------------------------------------------------------- */ + /*** + * @description: + * @return 初始化标签是否成功 + */ + bool FatigueResultView::InitLable() + { + + InitLabel(titleLable, 200, 30, 70, 45, "titleLable", "疲劳度", DEFAULT_VECTOR_FONT_FILENAME, 35); + InitLabel(resultremindLable, 68, 239, 337, 100, "resultremindLable", "30", DEFAULT_VECTOR_FONT_FILENAME, 100); + resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + resultremindLable->SetTextColor(Color::White()); + InitLabel(resultLable, 200, 362, 70, 45, "resultremindLable", "正常", DEFAULT_VECTOR_FONT_FILENAME, 35); + /*初始化检测时间*/ + group->Add(titleLable); + group->Add(resultremindLable); + group->Add(resultLable); + + + return true; + } + /*** + * @description: + * @return 初始化背景是否成功 + */ + bool FatigueResultView::Initbackground() + { + error = new UIImageView(); + error->SetPosition(140, 65, 111, 118); + error->SetSrc(BPBACKPATH); + group->Add(error); + return true; + } + /*** + * @description: + * @return 是否初始化成功 + */ + UIViewGroup *FatigueResultView::FatigueResultInit() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool FatigueResultView::InitView()"); + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::group null!"); + return nullptr; + } + group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + if (!Initbackground()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Initbackground error!"); + return nullptr; + }; + if (!InitLable()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLable error!"); + return nullptr; + }; + return group; + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueUnderMeasureView.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueUnderMeasureView.cpp new file mode 100644 index 000000000..1679b5312 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueUnderMeasureView.cpp @@ -0,0 +1,142 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-31 14:36:25 + * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/fatigue/src/FatigueUnderMeasureView.cpp + */ + +#include "ui_resource_image.h" +#include "UiConfig.h" +#include "wearable_log.h" +#include "uicomponents/UIComponents.h" +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueUnderMeasureView.h" +namespace OHOS +{ + static FatigueUnderMeasureView *g_pFatigueUnderMeasureView{nullptr}; + static const char *BPBACKPATH = "/user/res/BPCalibration/J1.bin"; + + FatigueUnderMeasureView::FatigueUnderMeasureView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueUnderMeasureView::FatigueUnderMeasureView"); + g_pFatigueUnderMeasureView = this; + } + FatigueUnderMeasureView::~FatigueUnderMeasureView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueUnderMeasureView::~FatigueUnderMeasureView"); + DeInit(); + g_pFatigueUnderMeasureView = nullptr; + } + FatigueUnderMeasureView *FatigueUnderMeasureView::GetInstance() + { + return g_pFatigueUnderMeasureView; + } + void FatigueUnderMeasureView::DeInit() + { + if (group) + { + group->RemoveAll(); + delete group; + group = nullptr; + } + if (error != nullptr) + { + delete error; + error = nullptr; + } + if (titleLable != nullptr) + { + delete titleLable; + titleLable = nullptr; + } + if (resultremindLable != nullptr) + { + delete resultremindLable; + resultremindLable = nullptr; + } + if (checkButton != nullptr) + { + delete checkButton; + checkButton = nullptr; + } + } + /* -------------------------------------------------------------------------- */ + /*** + * @description: + * @return 添加按键是否成功 + */ + bool FatigueUnderMeasureView::AddButton() + { + InitLabelButton(checkButton, 124, 352, 217, 63, "errorcheckButton", "测量中", 35); + checkButton->SetViewId(UNDERBUTTON_FATIGUE); + checkButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff00cbf0); // 设置按键颜色 + checkButton->SetTextColor(Color::White()); + // 设置按键监听 + UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::FatiguePresenter::GetInstance(); + checkButton->SetOnClickListener(clickListener); + + group->Add(checkButton); + return true; + } + /*** + * @description: + * @return 初始化标签是否成功 + */ + bool FatigueUnderMeasureView::InitLable() + { + + InitLabel(titleLable, 188, 30, 95, 45, "titleLable", "疲劳度", DEFAULT_VECTOR_FONT_FILENAME, 35); + InitLabel(resultremindLable, 68, 239, 337, 100, "resultremindLable", "---", DEFAULT_VECTOR_FONT_FILENAME, 100); + resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + resultremindLable->SetTextColor(Color::White()); + /*初始化检测时间*/ + group->Add(titleLable); + group->Add(resultremindLable); + + return true; + } + /*** + * @description: + * @return 初始化背景是否成功 + */ + bool FatigueUnderMeasureView::Initbackground() + { + error = new UIImageView(); + error->SetPosition(140, 65, 111, 118); + error->SetSrc(BPBACKPATH); + group->Add(error); + return true; + } + /*** + * @description: + * @return 是否初始化成功 + */ + UIViewGroup *FatigueUnderMeasureView::FatigueUnderMeasureInit() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool FatigueUnderMeasureView::InitView()"); + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::group null!"); + return nullptr; + } + group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + if (!Initbackground()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Initbackground error!"); + return nullptr; + }; + if (!InitLable()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLable error!"); + return nullptr; + }; + if (!AddButton()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddButton error!"); + return nullptr; + }; + return group; + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueWearView.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueWearView.cpp new file mode 100644 index 000000000..6c6dd377a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueWearView.cpp @@ -0,0 +1,133 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-31 14:36:25 + * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/fatigue/src/FatigueWearView.cpp + */ + +#include "ui_resource_image.h" +#include "UiConfig.h" +#include "wearable_log.h" +#include "uicomponents/UIComponents.h" +#include "fatiguelevel/include/FatiguePresenter.h" +#include "fatiguelevel/include/FatigueWearView.h" +namespace OHOS +{ + static FatigueWearView *g_pFatigueWearView{nullptr}; + static const char *BPBACKPATH = "/user/res/BPCalibration/error.bin"; + + FatigueWearView::FatigueWearView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueWearView::FatigueWearView"); + g_pFatigueWearView = this; + } + FatigueWearView::~FatigueWearView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueWearView::~FatigueWearView"); + DeInit(); + g_pFatigueWearView = nullptr; + } + FatigueWearView *FatigueWearView::GetInstance() + { + return g_pFatigueWearView; + } + void FatigueWearView::DeInit() + { + if (group) + { + group->RemoveAll(); + delete group; + group = nullptr; + } + if (error != nullptr) + { + delete error; + error = nullptr; + } + if (titleLable != nullptr) + { + delete titleLable; + titleLable = nullptr; + } + if (checkButton != nullptr) + { + delete checkButton; + checkButton = nullptr; + } + } + /* -------------------------------------------------------------------------- */ + /*** + * @description: + * @return 添加按键是否成功 + */ + bool FatigueWearView::AddButton() + { + InitLabelButton(checkButton, 124, 352, 217, 63, "errorcheckButton", "重新测量", 35); + checkButton->SetViewId(WEARBUTTON_FITIGUE); + checkButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); // 设置按键颜色 + checkButton->SetTextColor(Color::White()); + // 设置按键监听 + UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::FatiguePresenter::GetInstance(); + checkButton->SetOnClickListener(clickListener); + + group->Add(checkButton); + return true; + } + /*** + * @description: + * @return 初始化标签是否成功 + */ + bool FatigueWearView::InitLable() + { + + InitLabel(titleLable, 87, 85, 272, 45, "titleLable", "请正确佩戴手表检测", DEFAULT_VECTOR_FONT_FILENAME, 35); + /*初始化检测时间*/ + group->Add(titleLable); + + return true; + } + /*** + * @description: + * @return 初始化背景是否成功 + */ + bool FatigueWearView::Initbackground() + { + error = new UIImageView(); + error->SetPosition(163, 170, 140, 140); + error->SetSrc(BPBACKPATH); + group->Add(error); + return true; + } + /*** + * @description: + * @return 是否初始化成功 + */ + UIViewGroup *FatigueWearView::FatigueWearInit() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool FatigueWearView::InitView()"); + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::group null!"); + return nullptr; + } + group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + if (!Initbackground()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Initbackground error!"); + return nullptr; + }; + if (!InitLable()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLable error!"); + return nullptr; + }; + if (!AddButton()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddButton error!"); + return nullptr; + }; + return group; + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h index 1f3cb315b..f49c5a801 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h @@ -14,8 +14,8 @@ namespace OHOS { - class StressView; - class StressPresenter : public Presenter, + class StressMainView; + class StressPresenter : public Presenter, public UIView::OnClickListener, public RootView::OnKeyActListener, public UIView::OnDragListener diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp index 4094b693d..dfeaa201b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp @@ -68,7 +68,7 @@ namespace OHOS } void StressPresenter::OnStart() { - Presenter::OnStart(); + Presenter::OnStart(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StressPresenter::On Start "); } void StressPresenter::OnPause(void) {}