增加睡眠目标
authorCaisking <3449750381@qq.com>
Wed, 3 Jul 2024 11:48:47 +0000 (19:48 +0800)
committerSnickerSun <snickersun@163.com>
Fri, 5 Jul 2024 02:33:49 +0000 (10:33 +0800)
code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp

index 9784305..bedeebd 100644 (file)
@@ -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;
     };
 }
 
index 5628619..2dd61b3 100644 (file)
@@ -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()
index d0541a9..cd5d2b6 100644 (file)
@@ -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()