From aa0b8115878a82c9c2a1c46dd17c6c9a0f21424b Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sat, 8 Jun 2024 17:02:38 +0800 Subject: [PATCH] =?utf8?q?=E8=AE=AD=E7=BB=83=E8=AE=B0=E5=BD=95=E6=98=BE?= =?utf8?q?=E7=A4=BA=E8=AF=A6=E7=BB=86=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../takephotos/src/TakephotosModel.cpp | 2 +- .../nativeui/traing/include/TraingModel.h | 2 + .../nativeui/traing/src/TraingEnddataView.cpp | 47 +++++++++++++++---- .../nativeui/traing/src/TraingModel.cpp | 19 ++++---- .../include/TraingRecordItemView.h | 8 ++++ .../traingrecord/src/TraingRecordItemView.cpp | 8 +++- .../src/TraingRecordPresenter.cpp | 13 ++++- .../traingrecord/src/TraingRecordView.cpp | 4 +- 8 files changed, 78 insertions(+), 25 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp index 0ab853229..6ecf25bfb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp @@ -83,10 +83,10 @@ extern "C" { return; } - PRINT("request %d\r\n", request->msgId); // 进入拍照界面 if (request->msgId == TOPIC_EVENT_ENTER_CMAERA) { + PRINT(" 遥控拍照 \r\n"); uapi_set_screen_on_api(); // 亮屏 NativeAbility::GetInstance().EnterSlice(VIEW_TAKEPHOTOS); TakephotosView::GetInstance()->SetPopupViewStatus(PopupPhoto::TakePopup, true); 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 ebe56f083..652cef9ae 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h @@ -240,6 +240,8 @@ namespace OHOS void AnalysisData(cywee_activity_result_t *cyweeInfo); /*获取训练数据*/ SportData *GetSportdata(); + /*设置训练数据[为训练记录准备]*/ + void SetSportdata(SportData *data); /*获取运动卡路里*/ int GetCal(); /*设置时间戳*/ diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp index a0410ded3..ae1542345 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp @@ -13,6 +13,9 @@ #include "traing/Training_UiConfig.h" #include // 包含数学函数库,用于四舍五入 #include // 包含字符串处理库,用于使用 std::to_string + +#define PRINT_LINE_INFO() printf("File: %s, Line: %d\r\n", __FILE__, __LINE__) + namespace OHOS { @@ -38,6 +41,7 @@ namespace OHOS /* InitView:初始化界面*/ void TraingEnddataView ::InitView() { + // printf("TraingEnddataView::InitView()\r\n"); if (container_ == nullptr) { container_ = new UIViewGroup(); @@ -132,6 +136,8 @@ namespace OHOS InitButtonExt(buttonexit, 42, 1111, 380, 100, BUTTONBACK, STR_CLOSE, 30); buttonexit->SetOnClickListener(static_cast(TraingEnddataPresenter::GetInstance())); scrollView_->Add(buttonexit); + + // printf("TraingEnddataView::InitView() is end\r\n"); } /* DeInit:删除组件 */ @@ -281,49 +287,70 @@ namespace OHOS SportData *enddata = TraingModel::GetInstance()->GetSportdata(); if (enddata == nullptr) { + printf("Enddata is nullptr. Exiting InitData()...\r\n"); return; } + printf("Initializing TraingEnddataView data...\r\n"); + // 训练图标Icon std::string imageStr = TraingModel::GetInstance()->GetSportType(enddata->sportType); - imageIcon->SetSrc(imageStr.c_str()); - + if (!imageStr.empty()) + { + imageIcon->SetSrc(imageStr.c_str()); + } + else + { + printf("Failed to get image string. Skipping imageIcon update.\r\n"); + } + // 运动项目 labelsport->SetTextId(enddata->sportId); - + // 运动开始结束时间 std::string startTimeStr = enddata->start_time; + std::string endTimeStr = enddata->end_time; + std::string durationStr = startTimeStr + "-" + endTimeStr; + labelduration->SetText(durationStr.c_str()); + // 运动目标 - if (enddata && enddata->tag) + if (enddata->tag) { std::string tagStr = std::to_string(enddata->goaldegree) + "%"; labeltag->SetText(tagStr.c_str()); } + else + { + printf("Enddata tag is null. Skipping labeltag update.\r\n"); + } + // 运动时长 - PRINT("duration:%d\r\n", enddata->duration); + printf("Duration of the sport: %d\r\n", enddata->duration); std::string timeStr = TraingModel::GetInstance()->GetTrainingTime(); + labeltime->SetText(timeStr.c_str()); - + // 运动距离 std::string mileStr = std::to_string(enddata->distance); labelmile->SetText(mileStr.c_str()); - + // 平均心率 - // int heart = CalculateAverageHeartRate(155); // 设置一个测试值 std::string heartStr = std::to_string(enddata->avgheart); labelheart->SetText(heartStr.c_str()); - + // 步数 std::string stepStr = std::to_string(enddata->steps); labelsteps->SetText(stepStr.c_str()); - + // 训练强度 UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity(); labelstrong->SetTextId(intensityid); + + printf("TraingEnddataView data initialization complete.\r\n"); } void TraingEnddataView::OnStart() 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 8f9d70b4a..3241b5864 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -13,10 +13,9 @@ #include #include #include "thread_adapter.h" -#include #include #include -#include +#include #include "cmsis_os.h" #include "traing/training_card/include/TraingCardPresenter.h" @@ -360,6 +359,11 @@ namespace OHOS { return sportdata; } + /*设置训练数据[为训练记录准备]*/ + void TraingModel::SetSportdata(SportData *data) + { + sportdata = data; + } /*获取训练卡路里*/ int TraingModel::GetCal() { @@ -742,7 +746,6 @@ namespace OHOS { Openingway = way; } - /*设置运动是否开始*/ void TraingModel::SetSportOpenState(bool state) { @@ -1124,18 +1127,17 @@ namespace OHOS FILE *fp = fopen(TRAINING_RECORD_FILE, "r+"); if (fp == NULL) { - fp = fopen(TRAINING_RECORD_FILE, "w"); + fp = fopen(TRAINING_RECORD_FILE, "w+"); if (fp == NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fopen file is error"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create or open file for writing"); return false; } } - fseek(fp, 0, SEEK_END); long fileSize = ftell(fp); fseek(fp, 0, SEEK_SET); - + char *jsonStr = (char *)malloc(fileSize + 1); fread(jsonStr, 1, fileSize, fp); jsonStr[fileSize] = '\0'; @@ -1179,15 +1181,12 @@ namespace OHOS } cJSON_AddItemToObject(root, "data", dataArray); - char *jsonStrNew = cJSON_Print(root); cJSON_Delete(root); fseek(fp, 0, SEEK_SET); fprintf(fp, "%s\n", jsonStrNew); - fclose(fp); - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveDataToJson is succeed"); return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordItemView.h b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordItemView.h index 6d28a4c83..424164d09 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordItemView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordItemView.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-05-20 19:40:41 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-08 11:27:43 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordItemView.h + */ /*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-27 11:12:32 @@ -29,6 +35,8 @@ namespace OHOS public: explicit TraingRecordItemView(); virtual ~TraingRecordItemView(); + static TraingRecordItemView &GetInstance(void); + virtual void SetItemInfo(const TraingRecordItem itemInfo); virtual void SetUpChild(); int GetTraingRecordIndex(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordItemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordItemView.cpp index 6621a0e00..71645e5b9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordItemView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordItemView.cpp @@ -39,12 +39,18 @@ namespace OHOS Remove(&slogo); } + TraingRecordItemView &TraingRecordItemView::GetInstance() + { + static TraingRecordItemView instance; + return instance; + } + /// @brief 设置item的信息 /// @param itemInfo void TraingRecordItemView::SetItemInfo(const TraingRecordItem itemInfo) { sItemInfo = itemInfo; - printf("iamge--%s data--%s time--%s\r\n", (itemInfo.image).c_str(), (itemInfo.data).c_str(), (itemInfo.time).c_str()); + //printf("iamge--%s data--%s time--%s\r\n", (itemInfo.image).c_str(), (itemInfo.data).c_str(), (itemInfo.time).c_str()); sLabeldata.SetText((itemInfo.data).c_str()); sLabeltime.SetText((itemInfo.time).c_str()); slogo.SetSrc((itemInfo.image).c_str()); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp index 76c47259e..2cfd3be6b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp @@ -14,6 +14,8 @@ #include #include "traingrecord/include/TraingRecordPresenter.h" #include "traingrecord/include/TraingRecordModel.h" +#include "traing/include/TraingEnddataView.h" + // #include "TraingRecordView.h" namespace OHOS @@ -86,10 +88,19 @@ namespace OHOS bool TraingRecordPresenter::OnClick(UIView &view, const ClickEvent &event) { // 返回按键 - if (strcmp(view.GetViewId(), BUTTONGO) == 0) + std::string viewId = view.GetViewId(); + if (viewId == BUTTONGO) { NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGMORE); + return true; } + int index = TraingRecordItemView::GetInstance().GetTraingRecordIndex(); + // 读取json数据 + std::vector sportDataVector = TraingModel::GetInstance()->LoadDataFormJson(); + // 选择点击按键的历史数据 + SportData sportData = sportDataVector[index]; + TraingModel::GetInstance()->SetSportdata(&sportData); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA); return true; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp index f28a022a7..868b68851 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp @@ -172,7 +172,6 @@ namespace OHOS return; } lackView->SetOnDragListener(draglistener); - lackView->SetVisible(false); // 界面隐藏 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end"); } @@ -218,7 +217,8 @@ namespace OHOS // 增加表冠控制 TraingRecordList->SetRotateFactor(2); TraingRecordList->RequestFocus(); - + TraingRecordList->SetOnClickListener(static_cast(TraingRecordPresenter::GetInstance())); + UIView::OnDragListener *recorddraglistener = static_cast(TraingRecordPresenter::GetInstance()); if (recorddraglistener == nullptr) { -- 2.17.1