/*设置运动Id*/
void TraingModel::SetSportEvent(UIResourceTextId id) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SetSportType %d", sportId_);
- IsSpecialSport(id); // 设置特殊性
- sportId_ = id;
+ //需要是结束开启的运动才重新配置
+ if (sportState_ == ExerciseState::General) {
+ IsSpecialSport(id); // 设置特殊性
+ sportId_ = id;
+ }
}
/*获取运动Id*/
UIResourceTextId TraingModel::GetSportEvent() {
超高强度 uint32_t cir; // 圈数 uint32_t alt; // 最高海拔高度
*/
/*保存数据*/
-bool TraingModel::SaveSportData() {
-
- // 配置训练存储状态
- uapi_dev_runtime_set_train_storage_status(1);
-
- Trainingdata data;
- data.src = Openingway;
- data.bt = static_cast<uint32_t>(sportdata->sportType);
- data.ty = static_cast<uint32_t>(
- GetBleSportId(sportdata->sportType, sportdata->sportId));
- data.st = static_cast<uint32_t>(sportdata->starttime);
- data.sp = static_cast<uint32_t>(sportdata->endtime);
- data.tgt = static_cast<uint32_t>(sportdata->sportTagType);
- data.tg = static_cast<uint32_t>(sportdata->tag);
- data.pg = static_cast<uint32_t>(sportdata->goaldegree);
- data.du = static_cast<uint32_t>(sportdata->duration);
- data.ca = static_cast<uint32_t>(sportdata->calories * 10);
- data.di = static_cast<uint32_t>(sportdata->distance);
- data.hr = static_cast<uint32_t>(sportdata->avgheart);
- data.stp = static_cast<uint32_t>(sportdata->steps);
- data.ti = static_cast<uint32_t>(sportdata->intensity);
- /* 230 目前不支持【圈数】【最高海拔高度】 */
- data.cir = 0;
- data.alt = 0;
- /* 配速相关 */
- data.apc = static_cast<uint32_t>(sportdata->apc);
- data.fpc = static_cast<uint32_t>(sportdata->fpc);
- data.spc = static_cast<uint32_t>(sportdata->spc);
- data.std = static_cast<uint32_t>(sportdata->std);
- data.cdc = static_cast<uint32_t>(sportdata->cdc);
-
- // 保存数据到 bin
- if (write_Trainingdata_data(data) != 1) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "write_Trainingdata_data is error!");
- uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
- return false;
- }
-
- // 保存数据到 json
- if (!SaveDataToJson(sportdata)) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveDataToJson is error!");
- uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
- return false;
- }
-
- if (isspecialsport_) {
- // 保存心率表
- if (!SaveHeartTable()) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveHeartRateData is error!");
- uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
- return false;
- }
- // 保存速度表
- if (!SavePaceTable()) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveSpeedData is error!");
- uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
- return false;
- }
- }
-
- // 如果所有操作成功,则恢复训练存储状态
- uapi_dev_runtime_set_train_storage_status(0);
- return true;
+bool TraingModel::SaveSportData() {
+
+ // 配置训练存储状态
+ uapi_dev_runtime_set_train_storage_status(1);
+
+ Trainingdata data;
+ data.src = Openingway;
+ data.bt = static_cast<uint32_t>(sportdata->sportType);
+ data.ty = static_cast<uint32_t>(
+ GetBleSportId(sportdata->sportType, sportdata->sportId));
+ data.st = static_cast<uint32_t>(sportdata->starttime);
+ data.sp = static_cast<uint32_t>(sportdata->endtime);
+ data.tgt = static_cast<uint32_t>(sportdata->sportTagType);
+ data.tg = static_cast<uint32_t>(sportdata->tag);
+ data.pg = static_cast<uint32_t>(sportdata->goaldegree);
+ data.du = static_cast<uint32_t>(sportdata->duration);
+ data.ca = static_cast<uint32_t>(sportdata->calories * 10);
+ data.di = static_cast<uint32_t>(sportdata->distance);
+ data.hr = static_cast<uint32_t>(sportdata->avgheart);
+ data.stp = static_cast<uint32_t>(sportdata->steps);
+ data.ti = static_cast<uint32_t>(sportdata->intensity);
+ /* 230 目前不支持【圈数】【最高海拔高度】 */
+ data.cir = 0;
+ data.alt = 0;
+ /* 配速相关 */
+ data.apc = static_cast<uint32_t>(sportdata->apc);
+ data.fpc = static_cast<uint32_t>(sportdata->fpc);
+ data.spc = static_cast<uint32_t>(sportdata->spc);
+ data.std = static_cast<uint32_t>(sportdata->std);
+ data.cdc = static_cast<uint32_t>(sportdata->cdc);
+
+ // 保存数据到 bin
+ if (write_Trainingdata_data(data) != 1) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "write_Trainingdata_data is error!");
+ uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
+ return false;
+ }
+
+ // 保存数据到 json
+ if (!SaveDataToJson(sportdata)) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveDataToJson is error!");
+ uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
+ return false;
+ }
+
+ if (isspecialsport_) {
+ // 保存心率表
+ if (!SaveHeartTable()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveHeartRateData is error!");
+ uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
+ return false;
+ }
+ // 保存速度表
+ if (!SavePaceTable()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveSpeedData is error!");
+ uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
+ return false;
+ }
+ }
+
+ // 如果所有操作成功,则恢复训练存储状态
+ uapi_dev_runtime_set_train_storage_status(0);
+ return true;
}
/*设置进入方式*/
void TraingModel::SetEntryType(ENTEYTYPE type) { entey_type = type; }
#include "traing/training_card/include/TrainingControlView.h"
-#include "traing/training_card/include/TraingCardView.h"
-#include "common/image_cache_manager.h"
-#include "components/ui_label_ext.h"
-#include "ui_resource_string.h"
#include "UiConfig.h"
-#include "ui_resource_image.h"
-#include <ui_scroll_view.h>
+#include "common/image_cache_manager.h"
#include "components/ui_button.h"
+#include "components/ui_label_ext.h"
+#include "string"
+#include "traing/Training_UiConfig.h"
#include "traing/include/TraingModel.h"
+#include "ui_resource_image.h"
+#include "ui_resource_string.h"
#include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
-#include "string"
#include <chrono>
#include <thread>
-namespace OHOS
-{
-
- static TrainingControlView *g_pTrainingControlView{nullptr};
-
- TrainingControlView::TrainingControlView()
- {
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- g_pTrainingControlView = this;
- }
-
- TrainingControlView::~TrainingControlView()
- {
- RemoveAll();
- DeInit();
- g_pTrainingControlView = nullptr;
- }
-
- TrainingControlView *TrainingControlView::GetInstance()
- {
- return g_pTrainingControlView;
- }
-
- /* InitView:初始化界面*/
- void TrainingControlView ::InitView()
- {
- // 初始化Button
- InitButton(buttonEnd, 91, 205, 110, 110, BUTTONEND);
- // Set additional property
- buttonEnd->SetImageSrc(SPORT_STOP_IMAGE, SPORT_STOP_IMAGE);
- // 设置按钮的点击事件监听器为 TraingGPSPresenter 的实例
- buttonEnd->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));
- Add(buttonEnd);
- InitButton(buttonStop, 261, 205, 110, 110, BUTTONSTOP);
- // Set additional property
- buttonStop->SetImageSrc(SPORT_PAUSE_IMAGE, SPORT_PAUSE_IMAGE);
- buttonStop->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));
- Add(buttonStop);
-
- // 初始化Lable
- InitLabelExt(labeltitle, 83, 50, 300, 35, "label1", STR_TRAINING_IN_PROGRESS, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabel(labeltimer, 45, 110, 360, 80, "label2", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 65);
- InitLabelExt(labelend, 81, 330, 130, 35, "label3", STR_FINISH, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(labelstop, 251, 330, 130, 35, "label4", STR_PAUSE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- Add(labeltitle);
- Add(labeltimer);
- Add(labelend);
- Add(labelstop);
-
- // 初始化Image
- InitImageView(imagepoint, 193, 421, 80, 20, "image1", CONTROL_POINT_IMAGE);
- Add(imagepoint);
- }
-
- UILabelExt *TrainingControlView::GetLabel()
- {
- return labelstop;
- }
-
- UIButton *TrainingControlView::GetButton()
- {
- return buttonStop;
- }
-
- /* DeInit:删除组件 */
- void TrainingControlView::DeInit()
- {
- RemoveAll();
- if (labeltitle != nullptr)
- {
- labeltitle = nullptr;
- }
- if (labeltimer != nullptr)
- {
- delete labeltimer;
- labeltimer = nullptr;
- }
- if (labelend != nullptr)
- {
- delete labelend;
- labelend = nullptr;
- }
- if (labelstop != nullptr)
- {
- delete labelstop;
- labelstop = nullptr;
- }
-
- // 删除Button
- if (buttonEnd != nullptr)
- {
- delete buttonEnd;
- buttonEnd = nullptr;
- }
- if (buttonStop != nullptr)
- {
- delete buttonStop;
- buttonStop = nullptr;
- }
-
- // 删除Image
- if (imagepoint != nullptr)
- {
- delete imagepoint;
- imagepoint = nullptr;
- }
- }
-
- void TrainingControlView::PreLoad(void)
- {
- if (!viewiInitStatus)
- {
- InitView();
- viewiInitStatus = true;
- }
- }
-
- void TrainingControlView::UnLoad(void) {}
-
- UILabelExt *TrainingControlView::GetTimeLabel()
- {
- return labeltimer;
- }
+#include <ui_scroll_view.h>
+namespace OHOS {
+
+static TrainingControlView *g_pTrainingControlView{nullptr};
+
+TrainingControlView::TrainingControlView() {
+ SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ g_pTrainingControlView = this;
+}
+
+TrainingControlView::~TrainingControlView() {
+ RemoveAll();
+ DeInit();
+ g_pTrainingControlView = nullptr;
+}
+
+TrainingControlView *TrainingControlView::GetInstance() {
+ return g_pTrainingControlView;
+}
+
+/* InitView:初始化界面*/
+/* InitView:初始化界面 */
+void TrainingControlView::InitView() {
+ // 初始化 Button
+ InitButton(buttonEnd, 91, 205, 110, 110, BUTTONEND);
+ buttonEnd->SetImageSrc(SPORT_STOP_IMAGE, SPORT_STOP_IMAGE);
+ buttonEnd->SetOnClickListener(static_cast<UIView::OnClickListener *>(
+ TraingCardPresenter::GetInstance()));
+ Add(buttonEnd);
+
+ InitButton(buttonStop, 261, 205, 110, 110, BUTTONSTOP);
+ // Set additional property based on the sport state
+ ExerciseState state = TraingModel::GetInstance()->GetSportState();
+
+ if (state == ExerciseState::Pause) {
+ buttonStop->SetImageSrc(SPORT_CONTINUE_IMAGE, SPORT_CONTINUE_IMAGE);
+ } else {
+ buttonStop->SetImageSrc(SPORT_PAUSE_IMAGE, SPORT_PAUSE_IMAGE);
+ }
+
+ buttonStop->SetOnClickListener(static_cast<UIView::OnClickListener *>(
+ TraingCardPresenter::GetInstance()));
+ Add(buttonStop);
+
+ // 初始化 Label
+ InitLabelExt(labeltitle, 83, 50, 300, 35, "label1", STR_TRAINING_IN_PROGRESS,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labeltimer, 45, 110, 360, 80, "label2", "00:00:00",
+ DEFAULT_VECTOR_FONT_FILENAME, 65);
+ InitLabelExt(labelend, 81, 330, 130, 35, "label3", STR_FINISH,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labelstop, 251, 330, 130, 35, "label4", STR_PAUSE,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ // 添加到视图中
+ Add(labeltitle);
+ Add(labeltimer);
+ Add(labelend);
+ Add(labelstop);
+
+ // 初始化 Image
+ InitImageView(imagepoint, 193, 421, 80, 20, "image1", CONTROL_POINT_IMAGE);
+ Add(imagepoint);
+}
+
+UILabelExt *TrainingControlView::GetLabel() { return labelstop; }
+
+UIButton *TrainingControlView::GetButton() { return buttonStop; }
+
+/* DeInit:删除组件 */
+void TrainingControlView::DeInit() {
+ RemoveAll();
+ if (labeltitle != nullptr) {
+ labeltitle = nullptr;
+ }
+ if (labeltimer != nullptr) {
+ delete labeltimer;
+ labeltimer = nullptr;
+ }
+ if (labelend != nullptr) {
+ delete labelend;
+ labelend = nullptr;
+ }
+ if (labelstop != nullptr) {
+ delete labelstop;
+ labelstop = nullptr;
+ }
+
+ // 删除Button
+ if (buttonEnd != nullptr) {
+ delete buttonEnd;
+ buttonEnd = nullptr;
+ }
+ if (buttonStop != nullptr) {
+ delete buttonStop;
+ buttonStop = nullptr;
+ }
+
+ // 删除Image
+ if (imagepoint != nullptr) {
+ delete imagepoint;
+ imagepoint = nullptr;
+ }
}
+
+void TrainingControlView::PreLoad(void) {
+ if (!viewiInitStatus) {
+ InitView();
+ viewiInitStatus = true;
+ }
+}
+
+void TrainingControlView::UnLoad(void) {}
+
+UILabelExt *TrainingControlView::GetTimeLabel() { return labeltimer; }
+} // namespace OHOS