完善界面切换逻辑,修复定时器未重置bug 1856/1 1856/head 1857/target/2
authorxue <2144439972@qq.com>
Wed, 18 Jun 2025 04:03:30 +0000 (12:03 +0800)
committerxue <2144439972@qq.com>
Wed, 18 Jun 2025 04:03:30 +0000 (12:03 +0800)
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPMainPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp

index fb93e4c..71b2357 100644 (file)
@@ -138,11 +138,12 @@ namespace OHOS
 
     bool BPMainPresenter::OnClick(UIView &view, const ClickEvent &event)
     {
-        static int16_t flag = 0;
         std::string viewId = view.GetViewId();
         std::map<std::string, std::pair<int16_t, int16_t>> viewIdMap = {
-            {MINDCHECKBUTTON, {BPCALIBRATIONMINDVIEW, BPVALUEVIEW}},              // æ\8f\90é\86\92ç\95\8cé\9d¢å\88°è¾\93å\85¥è¡\80å\8e\8b界面
+            {MINDCHECKBUTTON, {BPCALIBRATIONMINDVIEW, BPVALUEVIEW}},              // æ\8f\90é\86\92ç\95\8cé\9d¢å\88°è¡\80å\8e\8bå\80¼界面
             {ERRORCHECKBUTTON, {BPCALIBRATIONERRORVIEW, BPUNDERCALIBRATIONVIEW}}, // 失败界面到校准界面
+            {VALUECHECKBUTTON, {BPVALUEVIEW, BPRESULTANALYSISVIEW}}, // 血压值界面到结果分析界面
+
         };
         auto it = viewIdMap.find(viewId);
         if (it != viewIdMap.end())
@@ -150,7 +151,7 @@ namespace OHOS
             BPMainView::GetInstance()->ChangeView(it->second.first, it->second.second);
             return true;
         }
-        if (strcmp(view.GetViewId(), STARTCALIBRATIONBUTTON) == 0)
+        if (strcmp(view.GetViewId(), STARTCALIBRATIONBUTTON) == 0) // 首界面到校准界面  第一步
         {
             BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_FIRSTTIME);
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "STARTCALIBRATIONBUTTON");
@@ -158,18 +159,12 @@ namespace OHOS
             BPModel::GetInstance()->BP_StartTimer(); // 开始计时器,计时结束后自动切换到主界面
         }
 
-        if (strcmp(view.GetViewId(), "value_check") == 0 && flag == 0)
+        if (strcmp(view.GetViewId(),CALIBRATIONBUTTON) == 0)  // 上次校准时间界面到二次校准界面
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "value_check");
-            BPMainView::GetInstance()->ChangeView(BPVALUEVIEW, BPSECUNDERCALIBRATIONVIEW);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CALIBRATIONBUTTON");
+            BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_SECONDTIME);
+            BPMainView::GetInstance()->ChangeView(BPLASTCALIBRATIONTIME, BPSECUNDERCALIBRATIONVIEW);
             BPModel::GetInstance()->BP_StartTimer(); // 开始计时器,计时结束后自动切换到主界面
-            flag++;
-        }
-        else if (strcmp(view.GetViewId(), "value_check") == 0 && flag == 1)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "value_check");
-            BPMainView::GetInstance()->ChangeView(BPVALUEVIEW, BPRESULTANALYSISVIEW);
-            flag = 0;
         }
         if (strcmp(view.GetViewId(), "SBPLeft") == 0)
         {
@@ -190,10 +185,7 @@ namespace OHOS
         else if (strcmp(view.GetViewId(), CALIBRATIONLATTERBUTTON) == 0)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CALIBRATIONLATTERBUTTON");
-        }
-        else if (strcmp(view.GetViewId(), CALIBRATIONBUTTON) == 0)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CALIBRATIONBUTTON");
+            //退出
         }
         return true;
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPPresenter::OnClick");
index b702b17..5ee2e60 100644 (file)
@@ -114,24 +114,38 @@ namespace OHOS
       break;
     }
     case BPState::BP_DETECTING:
-  {
+    {
       /*
         开启定时器
         开启传感器
         开启常亮
       */
       BP_StartTimer();
-    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);//后期 周期被动状态 需要做区别
+      ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
 
-    if(Time != BP_CHECK_TIME_MAX)
-      Time = BP_CHECK_TIME_MAX;//重置时间
+      if (Time != BP_CHECK_TIME_MAX)
+        Time = BP_CHECK_TIME_MAX; // 重置时间
 
       break;
-  }
+    }
     case BPState::BP_CALIBRATING_FIRSTTIME:
-      break;
+    {
+      BP_StartTimer();
+      ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+
+      if (Time != BP_CHECK_TIME_MAX)
+        Time = BP_CHECK_TIME_MAX; // 重置时间
+    }
+    break;
     case BPState::BP_CALIBRATING_SECONDTIME:
-      break;
+    {
+      BP_StartTimer();
+      ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+
+      if (Time != BP_CHECK_TIME_MAX)
+        Time = BP_CHECK_TIME_MAX; // 重置时间
+    }
+    break;
     default:
       /*未知状态,全部状态重置*/
       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BP_Control: Invalid state");
@@ -143,7 +157,7 @@ namespace OHOS
     // 更新状态
     BP_SetState(state);
   }
-  
+
   void BPModel::SetSBPValue(int flag)
   {
     if (flag == 0)
@@ -163,7 +177,10 @@ namespace OHOS
   /*定时器到期时的处理*/
   static void BP_TimerCallbackProc(int data)
   {
-     static uint16 CalibrationFlag = 0;
+    static uint16 CalibrationFlag = 0;
+
+    // 倒计时
+    Time--;
     // 提前检查无效时间
     if (Time < 0)
     {
@@ -172,7 +189,7 @@ namespace OHOS
       BPMainView *mainView = BPMainView::GetInstance();
       if (BPMainView::GetInstance() && CalibrationFlag == 0)
       {
-       BPMainView::GetInstance()->ChangeView(BPUNDERCALIBRATIONVIEW, BPCALIBRATIONMINDVIEW);
+        BPMainView::GetInstance()->ChangeView(BPUNDERCALIBRATIONVIEW, BPCALIBRATIONMINDVIEW);
         CalibrationFlag++;
       }
       else if (BPMainView::GetInstance() && CalibrationFlag == 1)
@@ -182,16 +199,15 @@ namespace OHOS
       }
       else if (BPDetectionView::GetInstance())
       {
-      //测试成功 -> 进入结果界面
-      // BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, RESULT_BPVIEW);
-      //测试失败 -> 进入错误界面
-      BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, ERROR_BPVIEW);
+        // 测试成功 -> 进入结果界面
+        //  BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, RESULT_BPVIEW);
+        // 测试失败 -> 进入错误界面
+        BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, ERROR_BPVIEW);
       }
       return;
     }
 
-    // 倒计时
-    Time--;
+    
 
     BPState current_state_time = BPModel::GetInstance()->GetCurrentState();
     // 根据状态处理
@@ -213,7 +229,7 @@ namespace OHOS
     }
 
     case BPState::BP_CALIBRATING_FIRSTTIME:
-     {
+    {
       BPUnderCalibrationView *view = BPUnderCalibrationView::GetInstance();
       if (view)
       {