优化睡眠数据计算。优化数据显示 834/2 834/head
authorCaisking <3449750381@qq.com>
Fri, 30 Aug 2024 09:48:25 +0000 (17:48 +0800)
committerCaisking <3449750381@qq.com>
Fri, 30 Aug 2024 09:48:25 +0000 (17:48 +0800)
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp

index 4aca60c..7aa1153 100644 (file)
@@ -30,9 +30,15 @@ namespace OHOS
     // 刷新UI数据
     void SleepView::SleepDataRefresh()
     {
-        int sleep_hour = SleepModel::GetInstance().get_sleep_hour();
-        int sleep_min = SleepModel::GetInstance().get_sleep_min();
+        // 获取睡眠数据
+        SleepModel &sleepModel = SleepModel::GetInstance();
+        int sleep_hour = sleepModel.get_sleep_hour();
+        int sleep_min = sleepModel.get_sleep_min();
+        int total_sleep = sleepModel.get_sleep_total();
+        int sleep_goal = sleepModel.get_sleep_goal();
+
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepDataRefresh %d %d", sleep_hour, sleep_min);
+
         // 补零操作
         std::string hour_str = (sleep_hour < 10) ? "0" + std::to_string(sleep_hour) : std::to_string(sleep_hour);
         std::string min_str = (sleep_min < 10) ? "0" + std::to_string(sleep_min) : std::to_string(sleep_min);
@@ -45,19 +51,25 @@ namespace OHOS
                 time_hour->SetText(hour_str.c_str());
                 time_minute->SetText(min_str.c_str());
             }
-            float value = (static_cast<float>(SleepModel::GetInstance().get_sleep_total()) / static_cast<float>(SleepModel::GetInstance().get_sleep_goal())) * 100.0f;
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "value %d!", value);
+
+            // 计算进度百分比,确保目标睡眠时间不为零
+            float value = 0.0f;
+            if (sleep_goal > 0)
+            {
+                value = (static_cast<float>(total_sleep) / (sleep_goal / 60)) * 100.0f;
+            }
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Progress value: %.2f%%", value);
             circleProgress_->SetValue(value);
             circleProgress_->SetCapType(CAP_ROUND);
         }
 
         // 更新目标时间
-        int totaltime = SleepModel::GetInstance().get_sleep_goal();
         if (goaltime != nullptr)
         {
-            UpdateLabel(goaltime, totaltime, STR_SLEEPMGOAL);
+            UpdateLabel(goaltime, sleep_goal, STR_SLEEPMGOAL);
         }
 
+        // 刷新视图
         RootView::GetInstance()->Invalidate();
     }