通过UIService更新睡眠数据
authorCaisking <3449750381@qq.com>
Mon, 15 Jul 2024 03:01:46 +0000 (11:01 +0800)
committerCaisking <3449750381@qq.com>
Mon, 15 Jul 2024 03:01:46 +0000 (11:01 +0800)
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepControlView.h
code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepControlPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepControlView.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepTimeView.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp

index 23ff14c..cb59e2f 100644 (file)
@@ -30,6 +30,7 @@
 #include "sleep/include/SleepModel.h"\r
 #include "cat1_server_hal.h"\r
 #include "custom_runtime.h"\r
+#include "uiservice/include/ui_service.h"\r
 \r
 #ifdef __cplusplus\r
 extern "C"\r
@@ -323,7 +324,8 @@ extern "C"
                     OHOS::ConfigModel::GetInstance()->SetDnotdisturb(false); // 关闭勿扰\r
                 }\r
                 LOS_Msleep(1000);\r
-                OHOS::SleepModel::GetInstance().ReInitData();//更新睡眠数据\r
+                OHOS::SleepModel::GetInstance().ReInitData(); // 更新睡眠数据\r
+                SendMsgToUIService(UI_UPDATE_SLEEP_DATA, 0, nullptr, 0);\r
                 do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL);\r
             }\r
             // 进入睡眠模式\r
index 216e0c1..4af27f9 100644 (file)
@@ -38,13 +38,14 @@ namespace OHOS
         void ClearAll(void);
 
         AppGroupView *SleepPageInit(void);
-        AppGroupView *SleepimePageInit(void);
+        AppGroupView *SleepTimePageInit(void);
 
         SleepView *GetSleepView(void);
         SleepTimeView *GetSleepTimeView(void);
 
         UIView *GetSleepControlPageView(void);
 
+
     public:
         void OnStart() override;
         void OnSetUpView() override;
index 3143580..8aec312 100644 (file)
@@ -113,6 +113,8 @@ namespace OHOS
         bool SaveSleepData(const SleepDataUI &data); // 更新睡眠数据
         bool DeleteSleepData();                      // 清空睡眠文件
 
+        void UpdateSleepView();
+
     private:
         SleepModel();
         SleepModel(const SleepModel &);
index 5c32fd1..5179e7c 100644 (file)
@@ -1,3 +1,9 @@
+/*** 
+ * @Date: 2024-06-25 10:33:08
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-12 20:00:41
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepControlPresenter.cpp
+ */
 #include "AppViewIDs.h"
 #include "NativeAbility.h"
 #include "sleep/include/SleepControlPresenter.h"
index f732bf8..473a730 100644 (file)
@@ -160,7 +160,7 @@ namespace OHOS
         return sleepView;
     }
 
-    AppGroupView *SleepControlView::SleepimePageInit(void)
+    AppGroupView *SleepControlView::SleepTimePageInit(void)
     {
         sleeptimeView = new SleepTimeView();
         if (sleeptimeView == nullptr)
@@ -180,7 +180,7 @@ namespace OHOS
 
     static const SleepControlViewMapper g_pageMapper[] = {
         {MAINSLEEPVIEW, &SleepControlView::SleepPageInit},
-        {SLEEPTIMEVIEW, &SleepControlView::SleepimePageInit},
+        {SLEEPTIMEVIEW, &SleepControlView::SleepTimePageInit},
     };
 
     AppGroupView *SleepControlView::CreatePage(uint8_t SleepControlPageId)
@@ -200,4 +200,5 @@ namespace OHOS
         }
         return nullptr; // 如果没有找到匹配的视图ID,返回 nullptr
     }
+
 }
\ No newline at end of file
index 877130c..6d7cea9 100644 (file)
@@ -337,6 +337,22 @@ namespace OHOS
 
         delete data; // 释放内存
     }
+
+    void SleepModel::UpdateSleepView()
+    {
+        SleepControlView *p_SleepControlView = SleepControlView::GetInstance();
+        if (p_SleepControlView != nullptr)
+        {
+            if (p_SleepControlView->GetSleepView())
+            {
+                p_SleepControlView->GetSleepView()->SleepDataRefresh();
+            }
+            if (p_SleepControlView->GetSleepTimeView())
+            {
+                p_SleepControlView->GetSleepTimeView()->SleepDataRefresh();
+            }
+        }
+    }
     static constexpr const char *SLEEP_JSON_PATH = "/user/userdata/health/sleep.json";
     // 读取睡眠数据
     SleepDataUI *SleepModel::ReadSleepData()
index a3bdeb0..4bdac88 100644 (file)
@@ -35,10 +35,16 @@ namespace OHOS
         // 有数据则刷新
         if (sleep_hour != 0 || sleep_min != 0)
         {
-            sleep->SetText((SleepModel::GetInstance().get_rest_str()).c_str());
-            wake->SetText((SleepModel::GetInstance().get_wake_str()).c_str());
+            if (sleep != nullptr && wake != nullptr)
+            {
+                sleep->SetText((SleepModel::GetInstance().get_rest_str()).c_str());
+                wake->SetText((SleepModel::GetInstance().get_wake_str()).c_str());
+            }
+        }
+        if (goal != nullptr)
+        {
+            goal->SetText((SleepModel::GetInstance().get_goal_str()).c_str());
         }
-        goal->SetText((SleepModel::GetInstance().get_goal_str()).c_str());
     }
 
     void SleepTimeView::ClearAll()
index 9f0be04..e222aa5 100644 (file)
@@ -39,19 +39,24 @@ namespace OHOS
         // 有数据则刷新
         if (sleep_hour != 0 || sleep_min != 0)
         {
-            time_hour->SetText(hour_str.c_str());
-            time_minute->SetText(min_str.c_str());
-
-            int value = (float(SleepModel::GetInstance().get_sleep_total()) / float(SleepModel::GetInstance().get_sleep_goal())) * 100;
+            if (time_hour != nullptr && time_minute != nullptr)
+            {
+                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);
             circleProgress_->SetValue(value);
-            Invalidate();
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Updata SleepTime!");
-            RootView::GetInstance()->Invalidate();
         }
 
         // 更新目标时间
         int totaltime = SleepModel::GetInstance().get_sleep_goal();
-        UpdateLabel(goaltime, totaltime, STR_SLEEPMGOAL);
+        if (goaltime != nullptr)
+        {
+            UpdateLabel(goaltime, totaltime, STR_SLEEPMGOAL);
+        }
+
+        RootView::GetInstance()->Invalidate();
     }
 
     void SleepView::ClearAll()
index c7e7eeb..29e2d70 100644 (file)
@@ -1,3 +1,9 @@
+/*** 
+ * @Date: 2024-07-12 19:25:33
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-12 20:20:44
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
+ */
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-12 11:44:04
@@ -69,6 +75,8 @@ typedef enum {
     UI_UPDATE_SILENT_MODE,      //更新静音模式
 
     UI_UPDATE_WEATHER_DATA,     //天气数据更新
+    UI_UPDATE_SLEEP_DATA,       //睡眠数据更新
+
     UI_AI_RESPONSE_USERDATA,    //跳转到返回结果视图
     UI_UPDATE_AI_QUESTION_STR,  //更新AI答案的字符串       
     MAX_NUM_HANDLER, 
index 1268b42..d194361 100644 (file)
@@ -18,6 +18,7 @@
 #include <iostream>
 #include "displaybrightness/include/DisplayBrightnessModel.h"
 #include "soundandvibration/include/SoundAndVibrationModel.h"
+#include "sleep/include/SleepModel.h"
 #include "aivoice/include/AiVoiceModel.h"
 #include "weather/include/WeatherModel.h"
 #include "uiservice/include/ui_service.h"
@@ -104,6 +105,8 @@ static void HandleUpdateVibrationMode(Request *request);
 static void HandleUpdateSilentMode(Request *request);
 static void HandleAiResponseUserData(Request *request);
 static void HandleUpdateAIQuestionStr(Request *request);
+static void HandleUpdateSleep(Request *request);
+
 
 // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
 MsgHandlerEntry msgHandlers[] = {
@@ -130,6 +133,8 @@ MsgHandlerEntry msgHandlers[] = {
     {UI_UPDATE_SILENT_MODE, HandleUpdateSilentMode},
     {UI_AI_RESPONSE_USERDATA, HandleAiResponseUserData},
     {UI_UPDATE_AI_QUESTION_STR, HandleUpdateAIQuestionStr},
+
+    {UI_UPDATE_SLEEP_DATA, HandleUpdateSleep},
     };
 /* -------------------------------------------------------------------------- */
 static void ScreenTurnOn(Request *request)
@@ -529,6 +534,13 @@ void HandleUpdateAIQuestionStr(Request *request)
     GraphicService::GetInstance()->PostGraphicEvent(
         std::bind(&OHOS::AiVoiceModel::UpdateAiAnswerStr, &OHOS::AiVoiceModel::GetInstance()));
 }
+
+void HandleUpdateSleep(Request *request)
+{
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleEarphoneConnected");
+    GraphicService::GetInstance()->PostGraphicEvent(
+        std::bind(&OHOS::SleepModel::UpdateSleepView, &OHOS::SleepModel::GetInstance()));
+}
 /* -------------------------------------------------------------------------- */
 #ifdef __cplusplus
 }