增加血压检测失败UI
authorCaisking <Casiking@zhihuishixun.com>
Tue, 17 Jun 2025 11:04:41 +0000 (19:04 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Tue, 17 Jun 2025 11:04:41 +0000 (19:04 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/detection/BPDetectFailView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/detection/BPDetectionView.h
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/detection/BPDetectFailView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/detection/BPDetectionPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/detection/BPDetectionView.cpp

index b628bc3..e65e91a 100644 (file)
@@ -243,6 +243,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodpressure/src/detection/BPDetectBeginView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodpressure/src/detection/BPDetectEndView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodpressure/src/detection/BPDetectErrorView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodpressure/src/detection/BPDetectFailView.cpp 
 
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodpressure/src/BPCalPosReqView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodpressure/src/BPLastCalibrationTimeView.cpp
diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/detection/BPDetectFailView.h b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/detection/BPDetectFailView.h
new file mode 100644 (file)
index 0000000..2bc9e40
--- /dev/null
@@ -0,0 +1,35 @@
+
+#ifndef BP_DetectFial_VIEW_H
+#define BP_DetectFial_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 BPDetectFailView
+    {
+    public:
+        BPDetectFailView();
+        ~BPDetectFailView();
+        static BPDetectFailView *GetInstance();
+        UIViewGroup * BPDetectFailInit();
+
+
+        void UpdateText();
+
+    private:
+        UIImageView *icon_fail = nullptr;
+        UILabelExt *titlefail = nullptr;
+        UILabelButtonExt *ReCheckButton{nullptr};
+
+        UIViewGroup *group{nullptr};
+    };
+}
+
+#endif // 血压主界面
\ No newline at end of file
index fceee4d..d0e19fd 100644 (file)
@@ -35,6 +35,7 @@
 #include "bloodpressure/include/detection/BPDetectBeginView.h"
 #include "bloodpressure/include/detection/BPDetectEndView.h"
 #include "bloodpressure/include/detection/BPDetectErrorView.h"
+#include "bloodpressure/include/detection/BPDetectFailView.h"
 
 #define CLICK_BLOOD_PRESSURE "click_bloodpressure"
 #define RE_CLICK_BLOOD_PRESSURE "re_click_bloodpressure"
@@ -52,10 +53,12 @@ typedef enum : uint8_t {
   UNDER_CALIBRATION_BPVIEW,
   //结果界面
   RESULT_BPVIEW,
-  //检测异常界面
+  //预警值界面
   ERROR_BPVIEW,
   //sos求救界面
   SOS_BPVIEW,
+  //测量失败界面
+  FAIL_BPVIEW,
   MAX_BPDECETVIEW,
 } BPDETECTVIEWID;
 
@@ -82,6 +85,7 @@ public:
   bool ChangeBPDetectBeginView(int16_t thisView);
   bool ChangeBPDetectEndView(int16_t thisView);
   bool ChangeBPDetectErrorView(int16_t thisView);
+  bool ChangeBPDetectFailView(int16_t thisView);
 
 private:
   UIViewGroup *group[MAX_BPDECETVIEW]{nullptr};
@@ -90,6 +94,7 @@ private:
   BPDetectBeginView *g_pBPDetectBeginView = nullptr;
   BPDetectEndView *g_pBPDetectEndView = nullptr;
   BPDetectErrorView *g_pBPDetectErrorView = nullptr;
+  BPDetectFailView *g_pBPDetectFailView = nullptr;
 
 
 };
diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/detection/BPDetectFailView.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/detection/BPDetectFailView.cpp
new file mode 100644 (file)
index 0000000..d7c612a
--- /dev/null
@@ -0,0 +1,90 @@
+/***
+ * @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/bloodpressure/src/BPDetectFailView.cpp
+ */
+
+#include "ui_resource_image.h"
+#include "UiConfig.h"
+#include "wearable_log.h"
+#include "uicomponents/UIComponents.h"
+#include "bloodpressure/include/detection/BPDetectionPresenter.h"
+#include "bloodpressure/include/detection/BPDetectFailView.h"
+#include "bloodpressure/include/BPModel.h"
+namespace OHOS
+{
+    static BPDetectFailView *g_pBPDetectFailView{nullptr};
+    static const char* image_bp = "/user/res/BPCalibration/error.bin";
+
+    BPDetectFailView::BPDetectFailView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPDetectFailView::BPDetectFailView");
+        g_pBPDetectFailView = this;
+    }
+    BPDetectFailView::~BPDetectFailView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPDetectFailView::~BPDetectFailView");
+        if(group)
+        {
+            group->RemoveAll(); 
+            if(icon_fail)
+            {
+                delete icon_fail;
+                icon_fail = nullptr;
+            }
+            if(titlefail)
+            {
+                delete titlefail;
+                titlefail = nullptr;
+            }
+            if(ReCheckButton)
+            {
+                delete ReCheckButton;
+                ReCheckButton = nullptr;
+            }
+        }
+        delete group;
+        group = nullptr;
+        g_pBPDetectFailView = nullptr;
+    }
+
+    BPDetectFailView *BPDetectFailView::GetInstance()
+    {
+        return g_pBPDetectFailView;
+    }
+
+   
+   
+    /***
+     * @description:
+     * @return 是否初始化成功
+     */
+    UIViewGroup *BPDetectFailView::BPDetectFailInit()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool BPDetectFailView::InitView()");
+        group = new UIViewGroup();
+        group->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+
+   
+        InitImageView(icon_fail, 131, 131, 100, 100, "image_bp", image_bp);
+
+        InitLabel(titlefail, 133, 57, 230, 80, "titlefail","测量失败", DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        InitButtonExt(ReCheckButton, 118, 360, 230, 80,  RE_CLICK_BLOOD_PRESSURE,STR_RECHECK, 30);
+        ReCheckButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffFF8A36); // 设置按键颜色
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::BPDetectionPresenter::GetInstance();
+        ReCheckButton->SetOnClickListener(clickListener);//设置按键监听
+
+
+        group->Add(icon_fail);
+        group->Add(titlefail);
+        group->Add(ReCheckButton);
+
+
+        return group;
+    }
+
+
+    
+}
index d22c844..43f080e 100644 (file)
@@ -103,7 +103,8 @@ namespace OHOS
         //预警界面->退出
         else if (strcmp(view.GetViewId(), EXIE_CLICK) == 0)
         {
-            NavigateBack();
+            // NavigateBack();
+            BPDetectionView::GetInstance()->ChangeView(ERROR_BPVIEW,FAIL_BPVIEW);//test
         }
         return true;
     }
index e3f89cb..02d92e7 100644 (file)
@@ -62,6 +62,12 @@ namespace OHOS
             g_pBPDetectErrorView = nullptr;
          }
 
+         if(g_pBPDetectFailView)
+         {
+            delete g_pBPDetectFailView;
+            g_pBPDetectFailView = nullptr;
+         }
+
          
         for(int i = 0; i < MAX_BPDECETVIEW; ++i)
         {
@@ -234,6 +240,26 @@ namespace OHOS
         return true;
     }
 
+    bool BPDetectionView::ChangeBPDetectFailView(int16_t thisView)
+    {
+        // 检查视图是否已初始化,避免重复创建
+        if (group[thisView] == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodPressureView::ChangeBPDetectFailView");
+            // 创建首次校准视图实例
+            g_pBPDetectFailView = new BPDetectFailView();
+            if (g_pBPDetectFailView == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                "BloodPressureView::ChangeBPDetectFailView new BPDetectFailView fail");
+                return false;
+            }
+            // 初始化视图并添加到视图组
+            group[thisView] = g_pBPDetectFailView->BPDetectFailInit();
+            container_->Add(group[thisView]);
+        }
+        return true;
+    }
 
     /**
      * 视图映射结构体 - 将视图ID映射到对应的视图切换函数
@@ -250,6 +276,8 @@ namespace OHOS
         {CALIBRATION_BPVIEW, &BPDetectionView::ChangeBPDetectBeginView},
         {RESULT_BPVIEW, &BPDetectionView::ChangeBPDetectEndView},
         {ERROR_BPVIEW, &BPDetectionView::ChangeBPDetectErrorView},
+        {FAIL_BPVIEW, &BPDetectionView::ChangeBPDetectFailView},
+
     };
 
     bool BPDetectionView::ClickFunc(int16_t interface)