#700 运动时间显示花屏,显示逻辑不对(两台测试样机都有) 1007/1
authorCaisking <3449750381@qq.com>
Mon, 23 Sep 2024 13:03:18 +0000 (21:03 +0800)
committerCaisking <3449750381@qq.com>
Mon, 23 Sep 2024 13:03:18 +0000 (21:03 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp

index fd7666f..30646da 100644 (file)
@@ -280,14 +280,14 @@ void TraingEnddataView::ExitView() {
                   (startY_Value + labelInterval * (8 + tagflge) + 120), 300, 40,
                   "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
     InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (8 + tagflge) + 220), 380,
+                  (startY_Value + labelInterval * (8 + tagflge) + 190), 380,
                   100, BUTTONBACK, STR_CLOSE, 30);
   } else {
     InitRollLabel(exitLabel, 80,
                   (startY_Value + labelInterval * (3 + tagflge) + 120), 300, 40,
                   "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
     InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (3 + tagflge) + 220), 380,
+                  (startY_Value + labelInterval * (3 + tagflge) + 190), 380,
                   100, BUTTONBACK, STR_CLOSE, 30);
   }
   exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
index 8a81975..982df61 100644 (file)
@@ -1334,7 +1334,8 @@ namespace OHOS
         /* 定时器回调函数 */
         void TraingTimerCallback()
         {
-            g_motionTimes++;
+          g_motionTimes++;
+#if 0
             TraingCardPresenter *gTraingCardPresenter = TraingCardPresenter::GetInstance();
             if (gTraingCardPresenter == nullptr)
             {
@@ -1342,7 +1343,8 @@ namespace OHOS
                 return;
             }
             gTraingCardPresenter->ModifiesTime();
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingTimerCallback\r\n");
+#endif
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingTimerCallback\r\n");
         }
 
         /* 开启定时器 */
index 7e52f68..b939924 100644 (file)
@@ -1,87 +1,75 @@
-/*** \r
- * @Date: 2024-04-15 10:55:58\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-24 15:18:42\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h\r
- */\r
-/***\r
- * @Date: 2024-04-15 10:55:58\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-19 10:55:50\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h\r
- */\r
-/***\r
- * @Author: Caisking 3449750381@qq.com\r
- * @Date: 2024-03-19 17:37:18\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-03-26 16:54:22\r
- * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h\r
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r
- */\r
 \r
 #ifndef _TraingCard_PRESENTER_H\r
 #define _TraingCard_PRESENTER_H\r
 \r
+#include "ModelListenerSample.h"\r
 #include "Presenter.h"\r
 #include "TraingCardView.h"\r
 #include "traing/training_card/include/TrainingControlView.h"\r
 #include "traing/training_card/include/TrainingDataView.h"\r
 #include "traing/training_card/include/TrainingDetailView.h"\r
-#include "ModelListenerSample.h"\r
 \r
-#include "cywee_service.h"\r
+#include "bletest.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_swipe_view.h"\r
+#include "components/ui_view.h"\r
+\r
 #include "cywee_hal.h"\r
+#include "cywee_service.h"\r
 #include "traing/include/TraingModel.h"\r
 #include "uicomponents/UIComponents.h"\r
-#include "bletest.h"\r
 \r
-namespace OHOS\r
-{\r
-    class TraingCardView;\r
-    class TrainingControlView;\r
-    class TrainingDataView;\r
-    class TrainingDetailView;\r
-    class TraingModel;\r
-    class TraingCardPresenter : public Presenter<TraingCardView>,\r
-                                public UIView::OnClickListener,\r
-                                public UIView::OnDragListener,\r
-                                public ModelListenerSample\r
-    {\r
-    public:\r
-        TraingCardPresenter();\r
-        virtual ~TraingCardPresenter();\r
-        static TraingCardPresenter *GetInstance();\r
+namespace OHOS {\r
+class TraingCardView;\r
+class TrainingControlView;\r
+class TrainingDataView;\r
+class TrainingDetailView;\r
+class TraingModel;\r
+class TraingCardPresenter : public Presenter<TraingCardView>,\r
+                            public UIView::OnClickListener,\r
+                            public UIView::OnDragListener,\r
+                            public UISwipeView::OnSwipeListener,\r
+                            public ModelListenerSample {\r
+public:\r
+  TraingCardPresenter();\r
+  virtual ~TraingCardPresenter() override;\r
+  static TraingCardPresenter *GetInstance(void);\r
+\r
+  void OnStart() override;\r
+  void OnPause() override;\r
+  void OnResume() override;\r
+  void OnStop() override;\r
+  // void OnTickEvent() override;\r
+  void Notify() override;\r
 \r
-        void OnStart() override;\r
-        void OnPause() override;\r
-        void OnResume() override;\r
-        void OnStop() override;\r
-        // void OnTickEvent() override;\r
-        void Notify() override;\r
+  bool OpenSensor(ExerciseClass type);\r
+  bool ControlSensor(ExerciseState state);\r
 \r
-        bool OpenSensor(ExerciseClass type);\r
-        bool ControlSensor(ExerciseState state);\r
+  void ModifiesTime();\r
+  void RefreshData(SportData *sportdata); // 更新数据\r
 \r
-        void ModifiesTime();\r
-        void RefreshData(SportData *sportdata); // 更新数据\r
+  void UpdateTimeOfControl();\r
+  void UpdateTimeOfData();\r
+  void UpdateDataView();\r
 \r
-        /*蓝牙开启运动*/\r
-        bool send_sport_cmd(training_ble *cmd);\r
+  /*蓝牙开启运动*/\r
+  bool send_sport_cmd(training_ble *cmd);\r
 \r
-        /*控制*/\r
-        void handleStartState();\r
-        void handleEndState();\r
-        void handlePauseState();\r
-        void handleContinueState();\r
+  /*控制*/\r
+  void handleStartState();\r
+  void handleEndState();\r
+  void handlePauseState();\r
+  void handleContinueState();\r
 \r
-    private:\r
-        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
-        bool OnClick(UIView &view, const ClickEvent &event) override;\r
-        bool OnDrag(UIView &view, const DragEvent &event) override;\r
-        int tag_ = 0;\r
-        bool opensensorstuats{false};\r
-        // bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
-    };\r
+private:\r
+  // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+  bool OnClick(UIView &view, const ClickEvent &event) override;\r
+  bool OnDrag(UIView &view, const DragEvent &event) override;\r
+  void OnSwipe(UISwipeView &view) override;\r
+  int tag_ = 0;\r
+  bool opensensorstuats{false};\r
+  // bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+};\r
 } // namespace OHOS\r
 \r
 #endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
index 1648887..86c3e77 100644 (file)
@@ -2,34 +2,36 @@
  * @Date: 2024-07-06 16:27:31\r
  * @LastEditors: Caisking 3449750381@qq.com\r
  * @LastEditTime: 2024-08-02 10:21:14\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
+ * @FilePath:\r
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
  */\r
 /***\r
  * @Date: 2024-04-26 09:23:18\r
  * @LastEditors: Caisking 3449750381@qq.com\r
  * @LastEditTime: 2024-04-26 10:25:05\r
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
+ * @FilePath:\r
+ * /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
  */\r
 \r
 #include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
 #include "components/ui_label_ext.h"\r
 #include "ui_resource_string.h"\r
-#include "NativeAbility.h"\r
 \r
-#include <iostream>\r
-#include <chrono>\r
-#include <thread>\r
+#include "ConfigModel.h"\r
+#include "custom_utils.h"\r
+#include "graphic_service.h"\r
+#include "traing/include/TraingModel.h"\r
 #include "traing/training_card/include/TraingCardPresenter.h"\r
 #include "traing/training_card/include/TrainingControlView.h"\r
-#include "traing/include/TraingModel.h"\r
 #include "uicomponents/UIComponents.h"\r
-#include "ConfigModel.h"\r
-#include "custom_utils.h"\r
 #include "vibrator_service.h"\r
+#include <chrono>\r
 #include <iomanip>\r
+#include <iostream>\r
 #include <sstream>\r
+#include <thread>\r
 #include <unordered_map>\r
-#include "graphic_service.h"\r
 \r
 extern "C" void do_cywee_service_check_msg(int cmd, int data[]);\r
 \r
@@ -38,196 +40,214 @@ extern "C" void do_cywee_service_check_msg(int cmd, int data[]);
 #define DEFAULT_DASH "--"\r
 #define DATATEST 0\r
 \r
-extern "C"\r
-{\r
-    void InitTimer();\r
-    void DisableTimer();\r
-    void PauseTimer();\r
-    void ResumeTimer();\r
+extern "C" {\r
+void InitTimer();\r
+void DisableTimer();\r
+void PauseTimer();\r
+void ResumeTimer();\r
 }\r
-namespace OHOS\r
-{\r
-    // 当前Presenter属性实例化的内存指针\r
-    static TraingCardPresenter *g_pTraingCardPresenter = nullptr;\r
+namespace OHOS {\r
+// 当前Presenter属性实例化的内存指针\r
+static TraingCardPresenter *g_pTraingCardPresenter = nullptr;\r
 \r
-    TraingCardPresenter::TraingCardPresenter()\r
-    {\r
-        g_pTraingCardPresenter = this;\r
-    }\r
+TraingCardPresenter::TraingCardPresenter() { g_pTraingCardPresenter = this; }\r
 \r
-    TraingCardPresenter::~TraingCardPresenter()\r
-    {\r
-        // tag_ = 0;\r
-        g_pTraingCardPresenter = nullptr;\r
-    }\r
-\r
-    TraingCardPresenter *TraingCardPresenter::GetInstance()\r
-    {\r
-        static TraingCardPresenter instance;\r
-        return &instance;\r
-    }\r
+TraingCardPresenter::~TraingCardPresenter() {\r
+  // tag_ = 0;\r
+  g_pTraingCardPresenter = nullptr;\r
+}\r
 \r
-    void TraingCardPresenter::OnStart()\r
-    {\r
-        Presenter<TraingCardView>::OnStart();\r
-        // ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 长亮屏\r
-    }\r
+TraingCardPresenter *TraingCardPresenter::GetInstance() {\r
+  static TraingCardPresenter instance;\r
+  return &instance;\r
+}\r
 \r
-    void TraingCardPresenter::OnPause(void)\r
-    {\r
+void TraingCardPresenter::OnStart() {\r
+  Presenter<TraingCardView>::OnStart();\r
+  // ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 长亮屏\r
+}\r
 \r
-        Presenter<TraingCardView>::OnPause();\r
-    }\r
+void TraingCardPresenter::OnPause(void) {\r
 \r
-    void TraingCardPresenter::OnResume(void)\r
-    {\r
+  Presenter<TraingCardView>::OnPause();\r
+}\r
 \r
-        Presenter<TraingCardView>::OnResume();\r
-    }\r
+void TraingCardPresenter::OnResume(void) {\r
 \r
-    void TraingCardPresenter::OnStop(void)\r
-    {\r
+  Presenter<TraingCardView>::OnResume();\r
+}\r
 \r
-        Presenter<TraingCardView>::OnStop();\r
-        // ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 长亮屏\r
-    }\r
+void TraingCardPresenter::OnStop(void) {\r
 \r
-    bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-    {\r
-        UNUSED(view);\r
-        return true;\r
-    }\r
+  Presenter<TraingCardView>::OnStop();\r
+  // ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 长亮屏\r
+}\r
 \r
-    // 计时器更新timer\r
-    void TraingCardPresenter::ModifiesTime()\r
-    {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime begin");\r
-        std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event) {\r
+  UNUSED(view);\r
+  return true;\r
+}\r
 \r
-        /*灭屏状态不刷新UI*/\r
-        if (uapi_get_screen_state() == 1)\r
-        {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_get_screen_state is off");\r
-            return;\r
-        }\r
+// 计时器更新timer\r
+void TraingCardPresenter::ModifiesTime() {\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime begin");\r
+  std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+\r
+  /*灭屏状态不刷新UI*/\r
+  if (uapi_get_screen_state() == 1) {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_get_screen_state is off");\r
+    return;\r
+  }\r
+\r
+  if (TimeStr.empty()) {\r
+    WEARABLE_LOGE(\r
+        WEARABLE_LOG_MODULE_APP,\r
+        "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
+    return;\r
+  }\r
+  if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+    TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
+        TimeStr.c_str());\r
+  }\r
+  if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+    TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
+  }\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime end");\r
+}\r
 \r
-        if (TimeStr.empty())\r
-        {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
-            return;\r
-        }\r
-        if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr)\r
-        {\r
-            TrainingControlView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
-        }\r
-        if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr)\r
-        {\r
-            TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
-        }\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime end");\r
-    }\r
+//计时器\r
+void TraingCardPresenter::UpdateTimeOfControl() {\r
+  std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+  if (TimeStr.empty()) {\r
+    WEARABLE_LOGE(\r
+        WEARABLE_LOG_MODULE_APP,\r
+        "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
+    return;\r
+  }\r
+  if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+    TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
+        TimeStr.c_str());\r
+  }\r
+}\r
+void TraingCardPresenter::UpdateTimeOfData() {\r
+  std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+  if (TimeStr.empty()) {\r
+    WEARABLE_LOGE(\r
+        WEARABLE_LOG_MODULE_APP,\r
+        "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
+    return;\r
+  }\r
+  if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+    TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
+  }\r
+}\r
 \r
-    /* --------------------------------- cywee库操作 -------------------------------- */\r
-    /*开启cywee*/\r
-    bool TraingCardPresenter::OpenSensor(ExerciseClass type)\r
-    {\r
-        // 防止重复开启\r
-        if (opensensorstuats)\r
-        {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OpenSensor is opening!!");\r
-            return false;\r
-        }\r
-        // 根据不同的运动项目进行不同的运动\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardPresenter::OpenSensor!!");\r
-        switch (type)\r
-        {\r
-        case ExerciseClass::NORMAL:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
-            break;\r
-        case ExerciseClass::TREADMILL:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE, NULL);\r
-            break;\r
-        case ExerciseClass::OUTDOOR:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE, NULL);\r
-            break;\r
-        case ExerciseClass::INDOOR:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE, NULL);\r
-            break;\r
-        case ExerciseClass::FITNESS_PEDOMETER:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE, NULL);\r
-            break;\r
-        case ExerciseClass::FREE_TRAINING:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE, NULL);\r
-            break;\r
-        default:\r
-            break;\r
-        }\r
-        opensensorstuats = true;\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OpenSensor--%d!!", type);\r
-        return true;\r
-    }\r
+/* --------------------------------- cywee库操作\r
+ * -------------------------------- */\r
+/*开启cywee*/\r
+bool TraingCardPresenter::OpenSensor(ExerciseClass type) {\r
+  // 防止重复开启\r
+  if (opensensorstuats) {\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OpenSensor is opening!!");\r
+    return false;\r
+  }\r
+  // 根据不同的运动项目进行不同的运动\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardPresenter::OpenSensor!!");\r
+  switch (type) {\r
+  case ExerciseClass::NORMAL:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
+    break;\r
+  case ExerciseClass::TREADMILL:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE, NULL);\r
+    break;\r
+  case ExerciseClass::OUTDOOR:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE, NULL);\r
+    break;\r
+  case ExerciseClass::INDOOR:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE, NULL);\r
+    break;\r
+  case ExerciseClass::FITNESS_PEDOMETER:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE, NULL);\r
+    break;\r
+  case ExerciseClass::FREE_TRAINING:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE, NULL);\r
+    break;\r
+  default:\r
+    break;\r
+  }\r
+  opensensorstuats = true;\r
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OpenSensor--%d!!", type);\r
+  return true;\r
+}\r
 \r
-    /*控制cywee*/\r
-    bool TraingCardPresenter::ControlSensor(ExerciseState state)\r
-    {\r
-        switch (state)\r
-        {\r
-        case ExerciseState::End:\r
-            // 退出进入普通模式\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
-            opensensorstuats = false; // 恢复标志位\r
-            DisableTimer();           // 关闭计时器\r
-            break;\r
-        case ExerciseState::Pause:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE, 0);\r
-            break;\r
-        case ExerciseState::Continue:\r
-            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME, 0);\r
-            break;\r
-        default:\r
-            break;\r
-        }\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ControlSensor[%d]!!", state);\r
-        return true;\r
-    }\r
+/*控制cywee*/\r
+bool TraingCardPresenter::ControlSensor(ExerciseState state) {\r
+  switch (state) {\r
+  case ExerciseState::End:\r
+    // 退出进入普通模式\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
+    opensensorstuats = false; // 恢复标志位\r
+    DisableTimer();           // 关闭计时器\r
+    break;\r
+  case ExerciseState::Pause:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE, 0);\r
+    break;\r
+  case ExerciseState::Continue:\r
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME, 0);\r
+    break;\r
+  default:\r
+    break;\r
+  }\r
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ControlSensor[%d]!!", state);\r
+  return true;\r
+}\r
 \r
-    void TraingCardPresenter::RefreshData(SportData *sportdata)\r
-    {\r
-        if (sportdata == nullptr)\r
-        {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sportdata is null");\r
-            return;\r
-        }\r
-        std::string distanceStr;\r
-        if (sportdata->distance != 0)\r
-        {\r
-            double distance_km = sportdata->distance / 1000.0; // 转换为公里并保留两位小数\r
-            std::stringstream ss;\r
-            ss << std::fixed << std::setprecision(2) << distance_km;\r
-            distanceStr = ss.str();\r
-        }\r
-        else\r
-        {\r
-            distanceStr = DEFAULT_DASH;\r
-        }\r
-\r
-        std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH;\r
-        std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
-        std::string calorieStr = (sportdata->calories != 0) ? std::to_string(sportdata->calories) : DEFAULT_DASH;\r
-        // 训练强度刷新\r
-        UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();\r
-        // printf("intensityid %d \r\n", intensityid);\r
-        TrainingDetailView::GetInstance()->Get_Intensity_Button()->SetTextId(intensityid);\r
-\r
-        TrainingDataView::GetInstance()->GetProgress()->SetValue(sportdata->goaldegree);   // 目标完成度\r
-        TrainingDataView::GetInstance()->GetHeartLabel()->SetText(heartStr.c_str());       // 心率\r
-        TrainingDetailView::GetInstance()->GetCalorieLabel()->SetText(calorieStr.c_str()); // 卡路里\r
-        TrainingDetailView::GetInstance()->GetMileLabel()->SetText(distanceStr.c_str());   // 距离\r
-        TrainingDetailView::GetInstance()->GetStepLabel()->SetText(stepsStr.c_str());      // 步数\r
-\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[Calories: %s, Distance: %s, Steps: %s Intensityid: %d]", calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str(), intensityid);\r
-        // 释放sportdata内存\r
-    }\r
+void TraingCardPresenter::RefreshData(SportData *sportdata) {\r
+  if (sportdata == nullptr) {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sportdata is null");\r
+    return;\r
+  }\r
+  std::string distanceStr;\r
+  if (sportdata->distance != 0) {\r
+    double distance_km =\r
+        sportdata->distance / 1000.0; // 转换为公里并保留两位小数\r
+    std::stringstream ss;\r
+    ss << std::fixed << std::setprecision(2) << distance_km;\r
+    distanceStr = ss.str();\r
+  } else {\r
+    distanceStr = DEFAULT_DASH;\r
+  }\r
+\r
+  std::string heartStr =\r
+      (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH;\r
+  std::string stepsStr =\r
+      (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
+  std::string calorieStr = (sportdata->calories != 0)\r
+                               ? std::to_string(sportdata->calories)\r
+                               : DEFAULT_DASH;\r
+  // 训练强度刷新\r
+  UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();\r
+  // printf("intensityid %d \r\n", intensityid);\r
+  TrainingDetailView::GetInstance()->Get_Intensity_Button()->SetTextId(\r
+      intensityid);\r
+\r
+  TrainingDataView::GetInstance()->GetProgress()->SetValue(\r
+      sportdata->goaldegree); // 目标完成度\r
+  TrainingDataView::GetInstance()->GetHeartLabel()->SetText(\r
+      heartStr.c_str()); // 心率\r
+  TrainingDetailView::GetInstance()->GetCalorieLabel()->SetText(\r
+      calorieStr.c_str()); // 卡路里\r
+  TrainingDetailView::GetInstance()->GetMileLabel()->SetText(\r
+      distanceStr.c_str()); // 距离\r
+  TrainingDetailView::GetInstance()->GetStepLabel()->SetText(\r
+      stepsStr.c_str()); // 步数\r
+\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
+                "[Calories: %s, Distance: %s, Steps: %s Intensityid: %d]",\r
+                calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str(),\r
+                intensityid);\r
+  // 释放sportdata内存\r
+}\r
 #if 0\r
     /*刷新 time 和 data */\r
     void TraingCardPresenter::OnTickEvent()\r
@@ -242,210 +262,228 @@ namespace OHOS
     }\r
 #endif\r
 #if 1\r
-    void TraingCardPresenter::Notify(void)\r
-    {\r
-        // 未开启训练 直接退出\r
-        if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
-            return;\r
+void TraingCardPresenter::Notify(void) {\r
+  // 如果未开启训练,直接退出\r
+  if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General) {\r
+    return;\r
+  }\r
+\r
+  Control_Card cardId = static_cast<Control_Card>(view_->GetCurrentPage());\r
+\r
+  switch (cardId) {\r
+  case Control_Card::CONTROL: {\r
+    UpdateTimeOfControl(); // 更新控制界面的时间\r
+    break;\r
+  }\r
+  case Control_Card::DATA: {\r
+    UpdateDataView(); // 更新训练数据视图\r
+    break;\r
+  }\r
+  default:\r
+    break; // 其他情况不处理\r
+  }\r
+}\r
 \r
-        // 刷新训练数据界面 现实时间\r
-        GraphicService::GetInstance()->PostGraphicEvent(std::bind(&TrainingDataView::UpdataTime, TrainingDataView::GetInstance()));\r
+void TraingCardPresenter::UpdateDataView() {\r
+  // 刷新计时\r
+  UpdateTimeOfData();\r
 \r
-        // 刷新训练数据界面 心率 卡路里 距离 步数 训练强度 目标完成度\r
-        SportData *sportdata = TraingModel::GetInstance()->GetSportdata();\r
-        GraphicService::GetInstance()->PostGraphicEvent(std::bind(&TraingCardPresenter::RefreshData, TraingCardPresenter::GetInstance(), sportdata));\r
-    }\r
+  // 刷新训练数据视图,显示当前时间\r
+  GraphicService::GetInstance()->PostGraphicEvent(std::bind(\r
+      &TrainingDataView::UpdataTime, TrainingDataView::GetInstance()));\r
+\r
+  // 刷新训练数据:心率、卡路里、距离、步数、训练强度、目标完成度\r
+  SportData *sportdata = TraingModel::GetInstance()->GetSportdata();\r
+  RefreshData(sportdata);\r
+}\r
 #endif\r
-    /* --------------------------------- 点击事件处理 --------------------------------- */\r
-    bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-    {\r
-        const std::string viewId = view.GetViewId();\r
-\r
-        // 定义点击事件映射\r
-        static const std::unordered_map<std::string, std::function<void()>> actionMap = {\r
-            // 暂停按键\r
-            {BUTTONSTOP, [&]()\r
-             {\r
-                 auto currentState = TraingModel::GetInstance()->GetSportState();\r
-                 if (currentState == ExerciseState::Continue || currentState == ExerciseState::Start)\r
-                 {\r
-                     handlePauseState();\r
-                 }\r
-                 else if (currentState == ExerciseState::Pause)\r
-                 {\r
-                     handleContinueState();\r
-                 }\r
-             }},\r
-            // 结束按键\r
-            {BUTTONEND, [&]()\r
-             {\r
-                 ControlSensor(ExerciseState::Pause);\r
-                 TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
-                 TraingCardView::GetInstance()->RefreshEndView();\r
-             }},\r
-            // 确定结束\r
-            {BUTTONEXIT, [&]()\r
-             {\r
-                 handleEndState();\r
-             }},\r
-            // 返回\r
-            {BUTTONBACK, [&]()\r
-             {\r
-                 ControlSensor(ExerciseState::Continue);\r
-                 TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
-             }},\r
-            // 确定达到目标\r
-            {BUTTONWINOK, [&]()\r
-             {\r
-                 TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false);\r
-                 TraingCardView::GetInstance()->GetAnimator()->Stop();\r
-             }},\r
-            // 确定心率提醒\r
-            {BUTTONNOTE, [&]()\r
-             {\r
-                 TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false);\r
-             }},\r
-        };\r
-\r
-        // 查找并执行对应的操作\r
-        auto it = actionMap.find(viewId);\r
-        if (it != actionMap.end())\r
-        {\r
-            it->second(); // 执行操作\r
-            return true;\r
-        }\r
-\r
-        return false; // 没有匹配的操作\r
+/* --------------------------------- 点击事件处理\r
+ * --------------------------------- */\r
+bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {\r
+  const std::string viewId = view.GetViewId();\r
+\r
+  // 定义点击事件映射\r
+  static const std::unordered_map<std::string, std::function<void()>>\r
+      actionMap = {\r
+          // 暂停按键\r
+          {BUTTONSTOP,\r
+           [&]() {\r
+             auto currentState = TraingModel::GetInstance()->GetSportState();\r
+             if (currentState == ExerciseState::Continue ||\r
+                 currentState == ExerciseState::Start) {\r
+               handlePauseState();\r
+             } else if (currentState == ExerciseState::Pause) {\r
+               handleContinueState();\r
+             }\r
+           }},\r
+          // 结束按键\r
+          {BUTTONEND,\r
+           [&]() {\r
+             ControlSensor(ExerciseState::Pause);\r
+             TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
+             TraingCardView::GetInstance()->RefreshEndView();\r
+           }},\r
+          // 确定结束\r
+          {BUTTONEXIT, [&]() { handleEndState(); }},\r
+          // 返回\r
+          {BUTTONBACK,\r
+           [&]() {\r
+             ControlSensor(ExerciseState::Continue);\r
+             TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
+           }},\r
+          // 确定达到目标\r
+          {BUTTONWINOK,\r
+           [&]() {\r
+             TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup,\r
+                                                               false);\r
+             TraingCardView::GetInstance()->GetAnimator()->Stop();\r
+           }},\r
+          // 确定心率提醒\r
+          {BUTTONNOTE,\r
+           [&]() {\r
+             TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup,\r
+                                                               false);\r
+           }},\r
+      };\r
+\r
+  // 查找并执行对应的操作\r
+  auto it = actionMap.find(viewId);\r
+  if (it != actionMap.end()) {\r
+    it->second(); // 执行操作\r
+    return true;\r
+  }\r
+\r
+  return false; // 没有匹配的操作\r
+}\r
+void TraingCardPresenter::OnSwipe(UISwipeView &view) {\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnSwipe ");\r
+  UNUSED(view);\r
+  return;\r
+}\r
+/* -------------------------------- 协议发起运动处理\r
+ * -------------------------------- */\r
+bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {\r
+  if (cmd == nullptr) {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid sport command");\r
+    return false;\r
+  }\r
+\r
+  switch (cmd->controlmd) {\r
+  case SETGOAL:\r
+    if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General) {\r
+      // 设置目标:在非运动情况下设置  [单指令,执行后退出]\r
+      TraingModel::GetInstance()->SetSportTag(\r
+          static_cast<ExerciseTag>(cmd->sportTagType), cmd->sportTag);\r
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetSportTag is succeed!\r\n");\r
+      return true;\r
     }\r
-\r
-    /* -------------------------------- 协议发起运动处理 -------------------------------- */\r
-    bool TraingCardPresenter::send_sport_cmd(training_ble *cmd)\r
-    {\r
-        if (cmd == nullptr)\r
-        {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid sport command");\r
-            return false;\r
-        }\r
-\r
-        switch (cmd->controlmd)\r
-        {\r
-        case SETGOAL:\r
-            if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
-            {\r
-                // 设置目标:在非运动情况下设置  [单指令,执行后退出]\r
-                TraingModel::GetInstance()->SetSportTag(static_cast<ExerciseTag>(cmd->sportTagType), cmd->sportTag);\r
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetSportTag is succeed!\r\n");\r
-                return true;\r
-            }\r
-            break;\r
-\r
-        case SENDDATA:\r
-            TraingModel::GetInstance()->SendLiveData(); // 发送实时数据 [单指令,执行后退出]\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is succeed!\r\n");\r
-            return true;\r
-        default:\r
-            break;\r
-        }\r
-\r
-        if (TraingCardView::GetInstance() == nullptr)\r
-        {\r
-            uapi_set_screen_on_api(); // 亮屏\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
-            // 设置目标类型和项目有且只有一次\r
-            switch (cmd->sportType)\r
-            {\r
-            case 0:\r
-                TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORWALKING);\r
-                OpenSensor(ExerciseClass::OUTDOOR);\r
-                break;\r
-            case 1:\r
-                TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORRUNNING);\r
-                OpenSensor(ExerciseClass::OUTDOOR);\r
-                break;\r
-            case 2:\r
-                TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORBIKING);\r
-                OpenSensor(ExerciseClass::FREE_TRAINING);\r
-                break;\r
-            default:\r
-                break;\r
-            }\r
-        }\r
-\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cmd->sportType[%d],cmd->controlmd[%d],cmd->sportTagType[%d],cmd->sportTag[%d]\r\n", cmd->sportType, cmd->controlmd, cmd->sportTagType, cmd->sportTag);\r
-\r
-        ExerciseState cmdState = static_cast<ExerciseState>(cmd->controlmd);\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ExerciseState::End   [%d]\r\n", cmdState);\r
-\r
-        switch (cmdState)\r
-        {\r
-        case ExerciseState::End:\r
-            handleEndState();\r
-            break;\r
-        case ExerciseState::Pause:\r
-            handlePauseState();\r
-            break;\r
-        case ExerciseState::Continue:\r
-            handleContinueState();\r
-            break;\r
-        case ExerciseState::Start:\r
-            handleStartState();\r
-            break;\r
-        default:\r
-            break;\r
-        }\r
-\r
-        return true;\r
+    break;\r
+\r
+  case SENDDATA:\r
+    TraingModel::GetInstance()\r
+        ->SendLiveData(); // 发送实时数据 [单指令,执行后退出]\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is succeed!\r\n");\r
+    return true;\r
+  default:\r
+    break;\r
+  }\r
+\r
+  if (TraingCardView::GetInstance() == nullptr) {\r
+    uapi_set_screen_on_api(); // 亮屏\r
+    NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
+    // 设置目标类型和项目有且只有一次\r
+    switch (cmd->sportType) {\r
+    case 0:\r
+      TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORWALKING);\r
+      OpenSensor(ExerciseClass::OUTDOOR);\r
+      break;\r
+    case 1:\r
+      TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORRUNNING);\r
+      OpenSensor(ExerciseClass::OUTDOOR);\r
+      break;\r
+    case 2:\r
+      TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORBIKING);\r
+      OpenSensor(ExerciseClass::FREE_TRAINING);\r
+      break;\r
+    default:\r
+      break;\r
     }\r
+  }\r
+\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
+                "cmd->sportType[%d],cmd->controlmd[%d],cmd->sportTagType[%d],"\r
+                "cmd->sportTag[%d]\r\n",\r
+                cmd->sportType, cmd->controlmd, cmd->sportTagType,\r
+                cmd->sportTag);\r
+\r
+  ExerciseState cmdState = static_cast<ExerciseState>(cmd->controlmd);\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ExerciseState::End   [%d]\r\n",\r
+                cmdState);\r
+\r
+  switch (cmdState) {\r
+  case ExerciseState::End:\r
+    handleEndState();\r
+    break;\r
+  case ExerciseState::Pause:\r
+    handlePauseState();\r
+    break;\r
+  case ExerciseState::Continue:\r
+    handleContinueState();\r
+    break;\r
+  case ExerciseState::Start:\r
+    handleStartState();\r
+    break;\r
+  default:\r
+    break;\r
+  }\r
+\r
+  return true;\r
+}\r
 \r
-    /*训练结束*/\r
-    void TraingCardPresenter::handleEndState()\r
-    {\r
-        TraingModel::GetInstance()->SetSportState(ExerciseState::End);\r
-        ControlSensor(ExerciseState::End);\r
+/*训练结束*/\r
+void TraingCardPresenter::handleEndState() {\r
+  TraingModel::GetInstance()->SetSportState(ExerciseState::End);\r
+  ControlSensor(ExerciseState::End);\r
 #if DATATEST\r
-        NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
-        return;\r
+  NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
+  return;\r
 #endif\r
-        // 是否达到训练目标\r
-        if (TraingModel::GetInstance()->GetMomentum())\r
-        {\r
-            // 进入训练详情\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
-            NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
-        }\r
-        else\r
-        {\r
-            // 进入训练记录\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
-            NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
-        }\r
-    }\r
-\r
-    /*训练暂停*/\r
-    void TraingCardPresenter::handlePauseState()\r
-    {\r
-        TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_RESUME);\r
-        TrainingControlView::GetInstance()->GetButton()->SetImageSrc(SPORT_CONTINUE_IMAGE, SPORT_CONTINUE_IMAGE);\r
-        TraingModel::GetInstance()->SetSportState(ExerciseState::Pause);\r
-        PauseTimer();\r
-        ControlSensor(ExerciseState::Pause);\r
-    }\r
+  // 是否达到训练目标\r
+  if (TraingModel::GetInstance()->GetMomentum()) {\r
+    // 进入训练详情\r
+    NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
+    NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
+  } else {\r
+    // 进入训练记录\r
+    NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
+    NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
+  }\r
+}\r
 \r
-    /*训练继续*/\r
-    void TraingCardPresenter::handleContinueState()\r
-    {\r
-        TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_PAUSE);\r
-        TrainingControlView::GetInstance()->GetButton()->SetImageSrc(SPORT_PAUSE_IMAGE, SPORT_PAUSE_IMAGE);\r
-        TraingModel::GetInstance()->SetSportState(ExerciseState::Continue);\r
-        ResumeTimer();\r
-        ControlSensor(ExerciseState::Continue);\r
-    }\r
+/*训练暂停*/\r
+void TraingCardPresenter::handlePauseState() {\r
+  TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_RESUME);\r
+  TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
+      SPORT_CONTINUE_IMAGE, SPORT_CONTINUE_IMAGE);\r
+  TraingModel::GetInstance()->SetSportState(ExerciseState::Pause);\r
+  PauseTimer();\r
+  ControlSensor(ExerciseState::Pause);\r
+}\r
 \r
-    /*训练开始*/\r
-    void TraingCardPresenter::handleStartState()\r
-    {\r
-        ControlSensor(ExerciseState::Start);\r
-        TraingModel::GetInstance()->SetSportOpenWay(true);\r
-    }\r
+/*训练继续*/\r
+void TraingCardPresenter::handleContinueState() {\r
+  TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_PAUSE);\r
+  TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
+      SPORT_PAUSE_IMAGE, SPORT_PAUSE_IMAGE);\r
+  TraingModel::GetInstance()->SetSportState(ExerciseState::Continue);\r
+  ResumeTimer();\r
+  ControlSensor(ExerciseState::Continue);\r
+}\r
 \r
+/*训练开始*/\r
+void TraingCardPresenter::handleStartState() {\r
+  ControlSensor(ExerciseState::Start);\r
+  TraingModel::GetInstance()->SetSportOpenWay(true);\r
 }\r
+\r
+} // namespace OHOS\r