// 刷新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);
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();
}