From a7ed17f702fef86e732c218b1d2248e0289869a4 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Wed, 3 Jul 2024 19:48:47 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E7=9D=A1=E7=9C=A0=E7=9B=AE?= =?utf8?q?=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/sleep/include/SleepModel.h | 16 +++++++++---- .../nativeui/sleep/src/SleepModel.cpp | 23 ++++++++++++++++++- .../fd230app/nativeui/sleep/src/SleepView.cpp | 3 +++ 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h b/code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h index 9784305f7..bedeebdfd 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h @@ -71,12 +71,18 @@ namespace OHOS // 睡眠状态 enum class SLEEPSTATE { - NOSLEEP = 0, + WALK = 0, SLEEPNOTIFY, SLEPP, - WALK, }; - + // 睡眠存储数据 + typedef struct + { + uint8_t sleep_state; // 睡眠状态 + int sleeptime; // 睡眠时间 + int walktime; // 醒来时间 + int totaltime; // 睡眠总时间 + } SleepDataUI; class SleepModel { public: @@ -99,6 +105,8 @@ namespace OHOS void set_sleep_state(SLEEPSTATE state); SLEEPSTATE get_sleep_state(); + SleepDataUI *ReadSleepData(); // 读取睡眠数据 + bool UpdateSleepData(const SleepDataUI &data); // 更新睡眠数据 private: SleepModel(); @@ -117,7 +125,7 @@ namespace OHOS uint8_t sleep_total_time = 0; uint8_t goal_total_time = 0; - SLEEPSTATE sleepstate_ = SLEEPSTATE::NOSLEEP; + SLEEPSTATE sleepstate_ = SLEEPSTATE::WALK; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp index 5628619fa..2dd61b346 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp @@ -242,6 +242,8 @@ namespace OHOS // 更新一下配置 set_sleep_goal(); + + // 刷新一下文件 } void SleepModel::update_time_info(uint32_t timestamp, std::string &timeStr) @@ -311,7 +313,26 @@ namespace OHOS // 睡眠字符串 以及总时长 goalStr = goalsleepStr + "-" + goalwalkStr; - goal_total_time = goal_walk_hour * 60 + goal_walk_min; + + // goal_total_time 计算 + int total_hours; + if (goal_walk_hour < goal_sleep_hour) + { + total_hours = (goal_walk_hour + 24) - goal_sleep_hour; // 跨天情况 + } + else + { + total_hours = goal_walk_hour - goal_sleep_hour; + } + + int total_minutes = goal_walk_min - goal_sleep_min; + if (total_minutes < 0) + { + total_hours--; // 如果分钟差为负数,小时差减1 + total_minutes += 60; // 转换为正数,加60分钟 + } + + goal_total_time = (total_hours == 0 && total_minutes < 60) ? 1 : total_hours; // 确保最小时间为1小时 } // 获取睡眠总时长(小时) int SleepModel::get_sleep_hour() 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 d0541a906..cd5d2b696 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp @@ -43,6 +43,9 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Updata SleppTime!"); RootView::GetInstance()->Invalidate(); } + // 更新目标时间 + int totaltime = SleepModel::GetInstance().get_sleep_goal(); + UpdateLabel(goaltime, totaltime, STR_SLEEPMGOAL); } void SleepView::ClearAll() -- 2.17.1