-/*** \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
* @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
#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
}\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