From d321a7a71524ee84c14e15a84968accf446bc6e2 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Fri, 30 Aug 2024 17:48:25 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E7=9D=A1=E7=9C=A0=E6=95=B0?= =?utf8?q?=E6=8D=AE=E8=AE=A1=E7=AE=97=E3=80=82=E4=BC=98=E5=8C=96=E6=95=B0?= =?utf8?q?=E6=8D=AE=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../fd230app/nativeui/sleep/src/SleepView.cpp | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp index 4aca60cf4..7aa115352 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp @@ -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(SleepModel::GetInstance().get_sleep_total()) / static_cast(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(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(); } -- 2.17.1