#define DEFAULT_DASH "--"\r
#define DATATEST 0\r
\r
-extern "C" {\r
+extern "C"\r
+{\r
void StartTimer();\r
void StopAndResetTimer();\r
void PauseTimer();\r
#ifdef SUPPORT_CYWEE_SERVICE\r
#include "cywee_service.h"\r
#endif\r
-namespace OHOS {\r
+namespace OHOS\r
+{\r
\r
REGIST_SLICE(VIEW_TRAININGCRAD, TraingCardView, TraingCardPresenter);\r
\r
\r
TraingCardPresenter::TraingCardPresenter() { g_pTraingCardPresenter = this; }\r
\r
-TraingCardPresenter::~TraingCardPresenter() {\r
+TraingCardPresenter::~TraingCardPresenter()\r
+{\r
// tag_ = 0;\r
g_pTraingCardPresenter = nullptr;\r
}\r
\r
-TraingCardPresenter *TraingCardPresenter::GetInstance() {\r
+TraingCardPresenter *TraingCardPresenter::GetInstance()\r
+{\r
static TraingCardPresenter instance;\r
return &instance;\r
}\r
\r
-void TraingCardPresenter::OnStart() {\r
+void TraingCardPresenter::OnStart()\r
+{\r
Presenter<TraingCardView>::OnStart();\r
// ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 长亮屏\r
}\r
\r
-void TraingCardPresenter::OnPause(void) {\r
+void TraingCardPresenter::OnPause(void)\r
+{\r
Presenter<TraingCardView>::OnPause();\r
}\r
\r
-void TraingCardPresenter::OnResume(void) {\r
+void TraingCardPresenter::OnResume(void)\r
+{\r
\r
Presenter<TraingCardView>::OnResume();\r
}\r
\r
-void TraingCardPresenter::OnStop(void) {\r
+void TraingCardPresenter::OnStop(void)\r
+{\r
\r
Presenter<TraingCardView>::OnStop();\r
// ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 长亮屏\r
}\r
\r
-bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event) {\r
+bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+{\r
UNUSED(view);\r
return true;\r
}\r
\r
// 计时器更新timer\r
-void TraingCardPresenter::ModifiesTime() {\r
+void TraingCardPresenter::ModifiesTime()\r
+{\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
+ if (uapi_get_screen_state() == 1)\r
+ {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_get_screen_state is off");\r
return;\r
}\r
\r
- if (TimeStr.empty()) {\r
+ if (TimeStr.empty())\r
+ {\r
WEARABLE_LOGE(\r
WEARABLE_LOG_MODULE_APP,\r
"TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
return;\r
}\r
if (TrainingControlView::GetInstance() != nullptr &&\r
- TrainingDataView::GetInstance() != nullptr) {\r
- if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ TrainingDataView::GetInstance() != nullptr)\r
+ {\r
+ if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr)\r
+ {\r
TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
TimeStr.c_str());\r
}\r
- if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr)\r
+ {\r
TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
}\r
}\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime end");\r
}\r
\r
-//计时器\r
-void TraingCardPresenter::UpdateTimeOfControl() {\r
+// 计时器\r
+void TraingCardPresenter::UpdateTimeOfControl()\r
+{\r
std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
- if (TimeStr.empty()) {\r
+ if (TimeStr.empty())\r
+ {\r
WEARABLE_LOGE(\r
WEARABLE_LOG_MODULE_APP,\r
"TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
return;\r
}\r
- if (TrainingControlView::GetInstance() != nullptr) {\r
- if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ if (TrainingControlView::GetInstance() != nullptr)\r
+ {\r
+ if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr)\r
+ {\r
TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
TimeStr.c_str());\r
}\r
}\r
}\r
-void TraingCardPresenter::UpdateTimeOfData() {\r
+void TraingCardPresenter::UpdateTimeOfData()\r
+{\r
std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
- if (TimeStr.empty()) {\r
+ if (TimeStr.empty())\r
+ {\r
WEARABLE_LOGE(\r
WEARABLE_LOG_MODULE_APP,\r
"TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
return;\r
}\r
- if (TrainingDataView::GetInstance() != nullptr) {\r
- if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ if (TrainingDataView::GetInstance() != nullptr)\r
+ {\r
+ if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr)\r
+ {\r
TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
}\r
}\r
}\r
\r
/* --------------------------------- cywee库操作\r
- * -------------------------------- */\r
+ * -------------------------------- */\r
/*开启cywee*/\r
-bool TraingCardPresenter::OpenSensor(ExerciseClass type) {\r
+bool TraingCardPresenter::OpenSensor(ExerciseClass type)\r
+{\r
// 防止重复开启\r
- if (opensensorstuats) {\r
+ if (opensensorstuats)\r
+ {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OpenSensor is opening!!");\r
return false;\r
}\r
// 根据不同的运动项目进行不同的运动\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingCardPresenter::OpenSensor!!");\r
#ifdef SUPPORT_CYWEE_SERVICE\r
- switch (type) {\r
+ switch (type)\r
+ {\r
case ExerciseClass::NORMAL:\r
cywee_sport_mode_change(CYWEE_SERVICE_CMD_NORMAL_MODE);\r
break;\r
}\r
\r
/*控制cywee*/\r
-bool TraingCardPresenter::ControlSensor(ExerciseState state) {\r
+bool TraingCardPresenter::ControlSensor(ExerciseState state)\r
+{\r
#ifdef SUPPORT_PPG_SERVICE\r
- switch (state) {\r
+ switch (state)\r
+ {\r
case ExerciseState::End:\r
// 退出进入普通模式\r
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
return true;\r
}\r
\r
-void TraingCardPresenter::RefreshData(SportData *sportdata) {\r
- if (sportdata == nullptr) {\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
return;\r
\r
std::string distanceStr;\r
- if (sportdata->distance != 0) {\r
+ if (sportdata->distance != 0)\r
+ {\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
+ }\r
+ else\r
+ {\r
distanceStr = DEFAULT_DASH;\r
}\r
\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
+ ? std::to_string(sportdata->calories)\r
+ : DEFAULT_DASH;\r
// 训练强度刷新\r
UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();\r
// printf("intensityid %d \r\n", intensityid);\r
}\r
#if 1\r
/*刷新 time 和 data */\r
-void TraingCardPresenter::OnTickEvent(void) {\r
+void TraingCardPresenter::updataview(void)\r
+{\r
// 如果未开启训练,直接退出\r
- if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General ||\r
- view_ == nullptr) {\r
+ if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::GetInstance()->GetSportState() == ExerciseState::General ");\r
return;\r
}\r
\r
- Control_Card cardId = static_cast<Control_Card>(view_->GetCurrentPage());\r
+ if (TraingCardView::GetInstance() == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "view_ == nullptr");\r
+ return;\r
+ }\r
\r
- switch (cardId) {\r
- case Control_Card::CONTROL: {\r
+ Control_Card cardId = static_cast<Control_Card>(TraingCardView::GetInstance()->GetCurrentPage());\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cardId %d", (int)cardId);\r
+\r
+ switch (cardId)\r
+ {\r
+ case Control_Card::CONTROL:\r
+ {\r
UpdateTimeOfControl(); // 更新控制界面的时间\r
break;\r
}\r
- case Control_Card::DATA: {\r
+ case Control_Card::DATA:\r
+ {\r
UpdateDataView(); // 更新训练数据视图\r
break;\r
}\r
}\r
}\r
#else\r
-void TraingCardPresenter::Notify(void) {\r
+void TraingCardPresenter::Notify(void)\r
+{\r
// 如果未开启训练,直接退出\r
if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General ||\r
- view_ == nullptr) {\r
+ view_ == nullptr)\r
+ {\r
return;\r
}\r
\r
Control_Card cardId = static_cast<Control_Card>(view_->GetCurrentPage());\r
\r
- switch (cardId) {\r
- case Control_Card::CONTROL: {\r
+ switch (cardId)\r
+ {\r
+ case Control_Card::CONTROL:\r
+ {\r
UpdateTimeOfControl(); // 更新控制界面的时间\r
break;\r
}\r
- case Control_Card::DATA: {\r
+ case Control_Card::DATA:\r
+ {\r
UpdateDataView(); // 更新训练数据视图\r
break;\r
}\r
}\r
}\r
#endif\r
-void TraingCardPresenter::UpdateDataView() {\r
+void TraingCardPresenter::UpdateDataView()\r
+{\r
// 刷新计时\r
UpdateTimeOfData();\r
\r
RefreshData(sportdata);\r
}\r
/* --------------------------------- 点击事件处理\r
- * --------------------------------- */\r
-bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {\r
+ * --------------------------------- */\r
+bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
const std::string viewId = view.GetViewId();\r
\r
// 定义点击事件映射\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
+ {\r
+ auto currentState = TraingModel::GetInstance()->GetSportState();\r
+ if (currentState == ExerciseState::Continue ||\r
+ 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
+ {\r
+ // ControlSensor(ExerciseState::Pause);\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
+ TraingCardView::GetInstance()->RefreshEndView();\r
+ }},\r
// 确定结束\r
- {BUTTONEXIT, [&]() { handleEndState(); }},\r
+ {BUTTONEXIT, [&]()\r
+ { handleEndState(); }},\r
// 返回\r
{BUTTONBACK,\r
- [&]() {\r
- // ControlSensor(ExerciseState::Continue);\r
- TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
- }},\r
+ [&]()\r
+ {\r
+ // ControlSensor(ExerciseState::Continue);\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
+ }},\r
// 确定达到目标\r
{BUTTONWINOK,\r
- [&]() {\r
- TraingCardView::GetInstance()->GetAnimator()->Stop();\r
- TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup,\r
- false);\r
- }},\r
+ [&]()\r
+ {\r
+ TraingCardView::GetInstance()->GetAnimator()->Stop();\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup,\r
+ false);\r
+ }},\r
// 确定心率提醒\r
{BUTTONNOTE,\r
- [&]() {\r
- TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup,\r
- false);\r
- }},\r
+ [&]()\r
+ {\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup,\r
+ false);\r
+ }},\r
};\r
\r
// 查找并执行对应的操作\r
auto it = actionMap.find(viewId);\r
- if (it != actionMap.end()) {\r
+ if (it != actionMap.end())\r
+ {\r
it->second(); // 执行操作\r
return true;\r
}\r
// UNUSED(view);\r
// return;\r
// }\r
-bool TraingCardPresenter::OnKeyAct(UIView &view, const KeyEvent &event) {\r
+bool TraingCardPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
/*消耗按键事件*/\r
return true;\r
}\r
\r
#ifdef BLE_SERVER_ENABLE\r
-bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {\r
- if (cmd == nullptr) {\r
+bool TraingCardPresenter::send_sport_cmd(training_ble *cmd)\r
+{\r
+ if (cmd == nullptr)\r
+ {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "无效的运动命令 cmd 为空!");\r
return false;\r
}\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cmdstate:%d currentState:%d",\r
cmdstate, currentState);\r
int m_sportTag = 0;\r
- switch (cmd->controlmd) {\r
+ switch (cmd->controlmd)\r
+ {\r
case SETGOAL:\r
// 仅在一般状态下允许设置目标\r
- if (currentState == ExerciseState::General) {\r
- if (cmd->sportTagType == 0) {\r
- //训练目标->m 需要转换 km\r
+ if (currentState == ExerciseState::General)\r
+ {\r
+ if (cmd->sportTagType == 0)\r
+ {\r
+ // 训练目标->m 需要转换 km\r
m_sportTag = cmd->sportTag / 1000;\r
- } else {\r
+ }\r
+ else\r
+ {\r
m_sportTag = cmd->sportTag;\r
}\r
TraingModel::GetInstance()->SetSportTag(\r
}\r
\r
// 仅在一般状态下允许开始运动\r
- if (cmdstate == ExerciseState::Start) {\r
- if ((currentState == ExerciseState::General)) {\r
- if (TraingCardView::GetInstance() == nullptr) {\r
+ if (cmdstate == ExerciseState::Start)\r
+ {\r
+ if ((currentState == ExerciseState::General))\r
+ {\r
+ if (TraingCardView::GetInstance() == nullptr)\r
+ {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 开启运动");\r
uapi_set_screen_on_api(); // 亮屏\r
NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
// 设置目标类型和项目有且只有一次\r
- switch (cmd->sportType) {\r
+ switch (cmd->sportType)\r
+ {\r
case 0:\r
TraingModel::GetInstance()->SetSportEvent(\r
STR_EXERCISE_OUTDOORWALKING);\r
reply_APP_OpenSportModeCmd(true);\r
handleStartState();\r
return true;\r
- } else {\r
+ }\r
+ else\r
+ {\r
\r
reply_APP_OpenSportModeCmd(false);\r
// return false;\r
}\r
}\r
// 仅在运动状态为开始或继续时允许暂停\r
- if (cmdstate == ExerciseState::Pause) {\r
+ if (cmdstate == ExerciseState::Pause)\r
+ {\r
if (currentState == ExerciseState::Start ||\r
- currentState == ExerciseState::Continue) {\r
+ currentState == ExerciseState::Continue)\r
+ {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 暂停运动");\r
reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime());\r
handlePauseState();\r
\r
// 仅在暂停状态下允许恢复运动\r
if (cmdstate == ExerciseState::Continue &&\r
- currentState == ExerciseState::Pause) {\r
+ currentState == ExerciseState::Pause)\r
+ {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 恢复运动");\r
reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime());\r
handleContinueState();\r
// 仅在运动状态为开始、继续或暂停时允许结束运动\r
if (cmdstate == ExerciseState::End &&\r
(currentState == ExerciseState::Start ||\r
- currentState == ExerciseState::Continue ||\r
- currentState == ExerciseState::Pause)) {\r
+ currentState == ExerciseState::Continue ||\r
+ currentState == ExerciseState::Pause))\r
+ {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 结束运动");\r
uint32_t sport_time = TraingModel::GetInstance()->GetSportTime();\r
reply_APP_SportStopModeCmd(sport_time);\r
#endif\r
\r
/*训练结束*/\r
-void TraingCardPresenter::handleEndState() {\r
+void TraingCardPresenter::handleEndState()\r
+{\r
TraingModel::GetInstance()->SetSportState(ExerciseState::End);\r
ControlSensor(ExerciseState::End);\r
uapi_set_screen_on_api(); // 亮屏\r
return;\r
#endif\r
// 是否达到训练目标\r
- if (TraingModel::GetInstance()->GetMomentum()) {\r
+ if (TraingModel::GetInstance()->GetMomentum())\r
+ {\r
// 进入训练详情\r
NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
- } else {\r
+ }\r
+ else\r
+ {\r
// 进入训练记录\r
// NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
if (TraingModel::GetInstance()->GetEntryType() == APPLIST_ENTER)\r
NativeAbility::GetInstance().ChangeSlice(\r
VIEW_TRAINING, TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
- else {\r
+ else\r
+ {\r
NativeAbility::GetInstance().ChangeSlice(\r
VIEW_MAIN, TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
}\r
\r
/*训练暂停*/\r
-void TraingCardPresenter::handlePauseState() {\r
+void TraingCardPresenter::handlePauseState()\r
+{\r
uapi_set_screen_on_api(); // 亮屏\r
TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_RESUME);\r
TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
}\r
\r
/*训练继续*/\r
-void TraingCardPresenter::handleContinueState() {\r
+void TraingCardPresenter::handleContinueState()\r
+{\r
uapi_set_screen_on_api(); // 亮屏\r
TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_PAUSE);\r
TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
}\r
\r
/*训练开始*/\r
-void TraingCardPresenter::handleStartState() {\r
+void TraingCardPresenter::handleStartState()\r
+{\r
ControlSensor(ExerciseState::Start);\r
TraingModel::GetInstance()->SetSportOpenWay(true);\r
}\r