From 415ccac3f36a0be8171f795c73661f7e2f1a53a9 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Tue, 23 Apr 2024 20:30:46 +0800 Subject: [PATCH] Add OpenState --- .../nativeui/traing/include/TraingModel.h | 6 ++++++ .../nativeui/traing/src/TraingModel.cpp | 17 ++++++++++++++++- .../training_card/src/TraingCardPresenter.cpp | 18 ++++++++---------- .../training_card/src/TraingCardView.cpp | 4 ++-- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h index 696b61449..ae192abd2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h @@ -162,6 +162,7 @@ namespace OHOS HIGH_INTENSITY, VERY_HIGH_INTENSITY }; + struct SportData { uint64 starttime; // 开始时间时间戳 @@ -280,6 +281,10 @@ namespace OHOS bool SaveSportData(); /*设置运动开始方式*/ void SetSportOpenWay(bool way); + /*设置运动是否开始*/ + void SetSportOpenState(bool state); + /*获取运动是否开始*/ + bool GetSportOpenState(); /*获取训练量是否达标*/ bool GetMomentum(); @@ -307,6 +312,7 @@ namespace OHOS bool Endstate{false}; // 结束训练标志位 bool Openingway{false}; // 运动开启方式 bool MomentumFlag{false}; // 训练量达标标志位 + bool Openstate{false}; // 运动是否开始 /*std::unique_ptr sportdata;*/ // 使用 std::unique_ptr 管理 SportData 对象 }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp index ddf76ba75..12ecdda02 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -575,6 +575,7 @@ namespace OHOS sportdata->starttime = time; sportdata->sportType = sportType_; // 训练类型 Gettagstuats = false; // 重置训练达标标志位 + Openstate = true; // 开启运动开始标志位 if (sportTag_) // 有值才设置[训练目标] { sportdata->sportTagType = sportTagType_; @@ -619,7 +620,9 @@ namespace OHOS } // PRINT("end_time [%s]\r\n", end_time); sportdata->end_time = std::string(end_time); - free(end_time); // 释放内存 + Openstate = false; // 关闭运动标志位 + + free(end_time); // 释放内存 PRINT("sportdata->end_time [%s]\r\n", (sportdata->end_time).c_str()); /*存储正常数据[运动量达标]*/ @@ -837,6 +840,18 @@ namespace OHOS { Openingway = way; } + + /*设置运动是否开始*/ + void TraingModel::SetSportOpenState(bool state) + { + Openstate = state; + } + /*获取运动是否开始*/ + bool TraingModel::GetSportOpenState() + { + return Openstate; + } + /*获取训练量是否达标*/ bool TraingModel::GetMomentum() { diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp index e4f30477c..51e6df172 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp @@ -184,7 +184,7 @@ namespace OHOS { distanceStr = DEFAULT_DASH; } - //std::string durationStr = std::to_string(sportdata->duration); + // std::string durationStr = std::to_string(sportdata->duration); std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH; std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH; std::string calorieStr = (sportdata->calories != 0) ? std::to_string(sportdata->calories) : DEFAULT_DASH; @@ -314,15 +314,11 @@ namespace OHOS } ExerciseState cmdState = static_cast(cmd->controlmd); - if (TraingCardView::GetInstance()->GetTraingCrad()->GetCurrentPageId() != Control_Card::CONTROL && cmdState != ExerciseState::Start) - { - // 跳转卡片界面 - TraingCardView::GetInstance()->GetTraingCrad()->SetHorCurrentPage(Control_Card::CONTROL); - } // 结束 if (cmdState == ExerciseState::End) { + PRINT("ExerciseState::End [%d]\r\n", cmdState); TraingModel::GetInstance()->SetSportState(ExerciseState::End); ControlSensor(ExerciseState::End); if (TraingCardView::GetInstance()->RefreshEndView()) @@ -337,10 +333,11 @@ namespace OHOS return true; } // 暂停和恢复 - else if (cmdState == ExerciseState::Continue || cmdState == ExerciseState::Pause) + if (cmdState == ExerciseState::Continue || cmdState == ExerciseState::Pause) { - // 开始状态 - if (TraingModel::GetInstance()->GetSportState() == ExerciseState::Start || TraingModel::GetInstance()->GetSportState() == ExerciseState::Continue) + PRINT("ExerciseState %d\r\n", cmdState); + TraingModel::GetInstance()->SetSportState(cmdState); + if (TraingModel::GetInstance()->GetSportState() == ExerciseState::Continue) { TrainingControlView::GetInstance()->GetLabel()->SetText("继续"); TrainingControlView::GetInstance()->GetButton()->SetImageSrc(SPORT_CONTINUE_IMAGE, SPORT_CONTINUE_IMAGE); @@ -366,8 +363,9 @@ namespace OHOS return true; } } - else if (cmdState == ExerciseState::Start) + if (cmdState == ExerciseState::Start) { + PRINT("ExerciseState::Start [%d]\r\n", cmdState); // 开启运动 ControlSensor(cmdState); // 设置APP开启运动 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp index 743c895e9..acc1ec236 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp @@ -87,6 +87,7 @@ namespace OHOS /* DeInit:删除组件 */ void TraingCardView::DeInit() { + swipe_->RemoveAll(); /*界面*/ if (ControlView != nullptr) { @@ -186,7 +187,6 @@ namespace OHOS if (swipe_ != nullptr) { - swipe_->RemoveAll(); delete swipe_; swipe_ = nullptr; } @@ -339,7 +339,7 @@ namespace OHOS // 获取训练卡路里判断运动量 momentumFlag = TraingModel::GetInstance()->GetMomentum(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "momentumFlag %d", momentumFlag); - + if (momentumFlag) { // 正常结束 -- 2.17.1