训练记录显示详细数据 247/1
authorCaisking <3449750381@qq.com>
Sat, 8 Jun 2024 09:02:38 +0000 (17:02 +0800)
committerCaisking <3449750381@qq.com>
Sat, 8 Jun 2024 09:02:38 +0000 (17:02 +0800)
code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordItemView.h
code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordItemView.cpp
code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp

index 0ab8532..6ecf25b 100644 (file)
@@ -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);
index ebe56f0..652cef9 100644 (file)
@@ -240,6 +240,8 @@ namespace OHOS
         void AnalysisData(cywee_activity_result_t *cyweeInfo);
         /*获取训练数据*/
         SportData *GetSportdata();
+        /*设置训练数据[为训练记录准备]*/
+        void SetSportdata(SportData *data);
         /*获取运动卡路里*/
         int GetCal();
         /*设置时间戳*/
index a0410de..ae15423 100644 (file)
@@ -13,6 +13,9 @@
 #include "traing/Training_UiConfig.h"
 #include <cmath>  // 包含数学函数库,用于四舍五入
 #include <string> // 包含字符串处理库,用于使用 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<UIView::OnClickListener *>(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()
index 8f9d70b..3241b58 100644 (file)
 #include <cmsis_os2.h>
 #include <service/graphic_service.h>
 #include "thread_adapter.h"
-#include <iostream>
 #include <sstream>
 #include <iomanip>
-#include <string>
+#include <fstream>
 #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;
     }
index 6d28a4c..424164d 100644 (file)
@@ -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();
index 6621a0e..71645e5 100644 (file)
@@ -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());
index 76c4725..2cfd3be 100644 (file)
@@ -14,6 +14,8 @@
 #include <thread>
 #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<SportData> sportDataVector = TraingModel::GetInstance()->LoadDataFormJson();
+        // 选择点击按键的历史数据
+        SportData sportData = sportDataVector[index];
+        TraingModel::GetInstance()->SetSportdata(&sportData);
+        NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);
         return true;
     }
 }
index f28a022..868b688 100644 (file)
@@ -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<UIView::OnClickListener *>(TraingRecordPresenter::GetInstance()));
+        
         UIView::OnDragListener *recorddraglistener = static_cast<UIView::OnDragListener *>(TraingRecordPresenter::GetInstance());
         if (recorddraglistener == nullptr)
         {