Merge #17 into xts_origin from refs/changes/17/head 20/target/1
author袁清梦 <3449750381@qq.com>
Tue, 16 Apr 2024 13:21:27 +0000 (13:21 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Tue, 16 Apr 2024 13:21:27 +0000 (13:21 +0000)
Code review from 袁清梦

* refs/changes/17/head: (7 commits squashed)

  - 修改主界面上拉界面UI;删除视频表盘panda;优化训练结束以及弹窗UI;搭建训练结束数据处理

  - Merge branch &#39;xts_origin&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin

  - 优化部分交互逻辑

  - 训练同步部分结束数据

  - Merge branch &#39;xts_origin&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin

  - 增加训练数据获取;通用函数增加时间获取;删除快速访问结构体

  - Merge branch &#39;xts_origin&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin

Signed-off-by: Caisking <3449750381@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/17
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/traing/src/TraingPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardView.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h

index 282677b..629fb9b 100644 (file)
 #define GILROY_BOLD_FONT "./font_library/gilroy-bold-4.ttf"
 #define GILROY_MEDIUM_FONT "./font_library/gilroy-medium-2.ttf"
 
-struct QuickTraining
-{
-    OHOS::UIResourceTextId training1_Text;
-    OHOS::UIResourceTextId training2_Text;
-    OHOS::UIResourceTextId training3_Text;
-
-    std::string training1_Image;
-    std::string training2_Image;
-    std::string training3_Image;
-
-    QuickTraining()
-        : training1_Text(OHOS::STR_EXERCISE_OUTDOORWALKING),
-          training2_Text(OHOS::STR_EXERCISE_OUTDOORBIKING),
-          training3_Text(OHOS::STR_EXERCISE_OUTDOORRUNNING),
-          training1_Image(OHOS::WALKING_60_IMAGE),
-          training2_Image(OHOS::RIDING_60_IMAGE),
-          training3_Image(OHOS::RUNNING_60_IMAGE) {}
-};
-
 #ifdef __cplusplus
 extern "C"
 {
@@ -168,14 +149,41 @@ namespace OHOS
     {
         uint64 starttime;         // 开始时间时间戳
         uint64 endtime;           // 结束时间时间戳
+        uint64 duration;          // 训练时长
         int goaldegree;           // 目标完成度
         int calories;             // 训练卡路里
-        int duration;             // 训练时长
         int steps;                // 训练步数
         int distance;             // 训练距离
         int intensity;            // 训练强度 (0:较低强度 1:中等强度 2:高等强度 3:超高强度)
         int avgheart;             // 训练平均心率
+        std::string start_date;   // 训练开始日期
+        std::string start_time;   // 训练开始时间
+        std::string end_time;     // 训练结束时间
+        Exercisetype sportType;   // 训练类型
         UIResourceTextId sportId; // 训练Id
+
+        void Initialize()
+        {
+            starttime = 0;
+            endtime = 0;
+            duration = 0;
+            goaldegree = 0;
+            calories = 0;
+            steps = 0;
+            distance = 0;
+            intensity = 1;
+            avgheart = 0;
+            start_date = nullptr;
+            start_time = nullptr;
+            end_time = nullptr;
+            sportType = Exercisetype::FITNESS;
+            sportId = UIResourceTextId::STR_EXTREME_SPORTS;
+        }
+
+        void Reset()
+        {
+            Initialize(); // 调用初始化函数将数据重置为初始状态
+        }
     };
 
     class TraingModel
@@ -194,8 +202,6 @@ namespace OHOS
         bool InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
 
         void InitList();
-        void SetQuickTraining(QuickTraining *quickTraining);
-        QuickTraining *GetQuickTraining() const;
 
         /*定时器 */
         std::string DisplayMotionDuration();
@@ -225,6 +231,10 @@ namespace OHOS
         std::string AnalysisTimestamp(uint64_t timestamp);
         /*获取运动总时长*/
         uint32_t GetTrainingTime();
+
+        std::string GetStartTiemStr();
+        std::string GetEndTiemStr();
+
         /*平均心率计算*/
         int CalculateAverageHeartRate(int newHeartRate);
 
@@ -232,12 +242,15 @@ namespace OHOS
         TraingModel(const TraingModel &) = delete;
         TraingModel &operator=(const TraingModel &) = delete;
 
-        std::string motionDuration;                         // 训练时长
+        std::string motionDuration;                         // 显示训练时长
         UIResourceTextId sportId_ = STR_EXTREME_SPORTS;     // 训练项目
-        Exercisetype sporttype_ = Exercisetype::FITNESS;    // 训练类型
+        Exercisetype sportType_ = Exercisetype::FITNESS;    // 训练类型
         ExerciseState sportstate_ = ExerciseState::General; // 训练状态
+        // std::string startdate_{nullptr};
+        // std::string starttime_{nullptr};
+        // std::string endtime_{nullptr};
         int totalHeartRate = 0;
-        int countHeartRate = 1;
+        int countHeartRate = 0;
         /*std::unique_ptr<SportData> sportdata;*/ // 使用 std::unique_ptr 管理 SportData 对象
     };
 }
index 40e949a..bd64a65 100644 (file)
@@ -172,8 +172,8 @@ namespace OHOS
         labelsport->SetTextId(enddata->sportId);
 
         // 运动开始结束时间
-        std::string startTimeStr = TraingModel::GetInstance()->AnalysisTimestamp(enddata->starttime);
-        std::string endTimeStr = TraingModel::GetInstance()->AnalysisTimestamp(enddata->endtime);
+        std::string startTimeStr = enddata->start_time;
+        std::string endTimeStr = enddata->end_time;
         std::string durationStr = startTimeStr + "-" + endTimeStr;
         labelduration->SetText(durationStr.c_str());
 
@@ -181,7 +181,7 @@ namespace OHOS
         labeltag->SetText("100%"); // 暂时设置为默认
 
         // 运动时长
-        uint32_t time = TraingModel::GetInstance()->GetTrainingTime();
+        uint64_t time = TraingModel::GetInstance()->GetTrainingTime();
         std::string timeStr = TraingModel::GetInstance()->AnalysisTimestamp(time);
         labeltime->SetText(timeStr.c_str());
 
index b22017b..64bd565 100644 (file)
@@ -126,22 +126,12 @@ namespace OHOS
     static constexpr int16 NUM_TIME_MIN = 60;
     static constexpr int16 NUM_TIME_HOUR = 3600;
     static constexpr int32 NUM_TIME_DAY = 86400;
-
-    SportData *sportdata = new SportData();
-
 #endif
+    SportData *sportdata = new SportData();
     TraingModel ::TraingModel()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::TraingModel()");
-#if CHECK
-        printf(" quickTraining_--training1_Text: %s\n", quickTraining_->training1_Text.c_str());
-        printf(" quickTraining_--training1_Image: %s\n", quickTraining_->training1_Image.c_str());
-        printf(" quickTraining_--training2_Text: %s\n", quickTraining_->training2_Text.c_str());
-        printf(" quickTraining_--training2_Image: %s\n", quickTraining_->training2_Image.c_str());
-        printf(" quickTraining_--training3_Text: %s\n", quickTraining_->training3_Text.c_str());
-        printf(" quickTraining_--training3_Image: %s\n", quickTraining_->training3_Image.c_str());
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::TraingModel()");
-#endif
+        // sportdata->Initialize(); // 初始化结构体
     }
     TraingModel ::~TraingModel()
     {
@@ -158,26 +148,6 @@ namespace OHOS
     {
         TraingSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE); // 进行消息订阅
     }
-    /* -------------------------------------------------------------------------- */
-    /***
-     * @description:
-     * @param {QuickTraining} *quickTraining
-     * @brief 设置快捷训练
-     */
-    void TraingModel::SetQuickTraining(QuickTraining *quickTraining)
-    {
-        // quickTraining_ = quickTraining;
-    }
-    /***
-     * @description:
-     * @return {quickTraining_}
-     * @brief 获取快捷训练
-     */
-    QuickTraining *TraingModel::GetQuickTraining() const
-    {
-        QuickTraining *quickTraining_ = new QuickTraining(); // 为quickTraining_赋初值
-        return quickTraining_;
-    }
     /***
      * @description: 初始化标签
      * @param {UILabel} *
@@ -360,10 +330,12 @@ namespace OHOS
     /*设置运动类型*/
     void TraingModel::SetSportType(Exercisetype type)
     {
+        sportType_ = type;
     }
     /*获取运动类型*/
     Exercisetype TraingModel::GetSporType()
     {
+        return sportType_;
     }
     /*设置运动Id*/
     void TraingModel::SetSportEvent(UIResourceTextId id)
@@ -381,6 +353,7 @@ namespace OHOS
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " GetSportType %d", sportId_);
         // 设置结构体里面的运动类型
         sportdata->sportId = sportId_;
+        sportdata->sportType = sportType_;
         switch (sportId_)
         {
             // 室外跑步
@@ -414,7 +387,7 @@ namespace OHOS
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " AnalysisData %d", type);
         // 通用数据
         sportdata->calories = cyweeInfo->calories;
-        sportdata->duration = cyweeInfo->duration;
+        // sportdata->duration = cyweeInfo->duration;
         PRINT("normal sportdata->calories[%d],sportdata->duration[%d] \r\n", sportdata->calories, sportdata->duration);
         switch (type)
         {
@@ -440,29 +413,76 @@ namespace OHOS
     {
         return sportdata->calories;
     }
-    /*设置时间戳*/
+    /*设置时间*/
     void TraingModel::SetTimestamp()
     {
-        // std::lock_guard<std::mutex> lock(mutex); // 使用互斥锁确保线程安全
         uint64_t time;
-        uapi_get_timestampe_ms(&time);
+        if (uapi_get_timestampe_ms(&time) != ERRCODE_SUCC)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp");
+            return;
+        }
         ExerciseState currentState = GetSportState(); // 获取当前运动状态
-
         if (currentState == ExerciseState::Start)
         {
             sportdata->starttime = time;
+
+            char *start_date = (char *)malloc(9 * sizeof(char)); // 分配内存给start_date
+            if (uapi_get_YYMMDD_Time(start_date, '/') != ERRCODE_SUCC)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get start date");
+                free(start_date); // 释放内存
+                return;
+            }
+            PRINT("start_date[%s]\r\n", start_date);
+            sportdata->start_date = std::string(start_date);
+            free(start_date); // 释放内存
+
+            char *start_time = (char *)malloc(9 * sizeof(char)); // 分配内存给start_time
+            if (uapi_get_HHMMSS_Time(start_time, ':', true) != ERRCODE_SUCC)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get start time");
+                free(start_time); // 释放内存
+                return;
+            }
+            // PRINT("start_time [%s]\r\n", start_time);
+            sportdata->start_time = std::string(start_time);
+            free(start_time); // 释放内存
+
+            PRINT("sportdata->start_time [%s]\r\n", (sportdata->start_time).c_str());
         }
         else if (currentState == ExerciseState::End)
         {
             sportdata->endtime = time;
-        }
 
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SetTimestamp [%d  %lu]", currentState, time);
+            char *end_time = (char *)malloc(9 * sizeof(char)); // 分配内存给end_time
+            if (uapi_get_HHMMSS_Time(end_time, ':', true) != ERRCODE_SUCC)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get end time");
+                free(end_time); // 释放内存
+                return;
+            }
+            // PRINT("end_time [%s]\r\n", end_time);
+            sportdata->end_time = std::string(end_time);
+            free(end_time); // 释放内存
+
+            PRINT("sportdata->end_time [%s]\r\n", (sportdata->end_time).c_str());
+        }
+    }
+#if 0
+    std::string TraingModel::GetStartTiemStr()
+    {
+        return starttime_;
+    }
+    std::string TraingModel::GetEndTiemStr()
+    {
+        return endtime_;
     }
+#endif
     // 获取训练时长时间戳
     uint32_t TraingModel::GetTrainingTime()
     {
-        return g_motionTimes;
+        return (sportdata->endtime - sportdata->starttime);
     }
     /*解析时间戳 返回例如:13:00:22*/
     std::string TraingModel::AnalysisTimestamp(uint64_t timestamp)
@@ -472,9 +492,14 @@ namespace OHOS
         int minutes = (timestamp % 3600000) / 60000; // 1分钟 = 60000毫秒
         int seconds = (timestamp % 60000) / 1000;    // 1秒 = 1000毫秒
 
+        // 将小时、分钟、秒转换为字符串
+        std::string hoursStr = std::to_string(hours);
+        std::string minutesStr = std::to_string(minutes);
+        std::string secondsStr = std::to_string(seconds);
+
         // 格式化输出为 HH:MM:SS
         std::stringstream ss;
-        ss << std::setfill('0') << std::setw(2) << hours << ":" << std::setw(2) << minutes << ":" << std::setw(2) << seconds;
+        ss << std::setfill('0') << std::setw(2) << hoursStr << ":" << std::setw(2) << minutesStr << ":" << std::setw(2) << secondsStr;
 
         return ss.str();
     }
@@ -571,6 +596,7 @@ namespace OHOS
                     return;
                 }
                 g_startCounting = NULL;
+                PRINT("g_motionTimes:%d\r\n", sportdata->duration);
                 g_motionTimes = 0;
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableTimer!");
             }
index c475f04..8f92318 100644 (file)
@@ -1,4 +1,9 @@
-
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-04-16 17:33:11
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp
+ */
 
 #include "AppViewIDs.h"
 #include "components/ui_label_ext.h"
@@ -17,18 +22,15 @@ namespace OHOS
 
     // 当前Presenter属性实例化的内存指针
     static TraingPresenter *g_pTraingPresenter = nullptr;
-    QuickTraining *data = new QuickTraining;
 
     TraingPresenter::TraingPresenter()
     {
-        data = TraingModel::GetInstance()->GetQuickTraining();
         g_pTraingPresenter = this;
     }
 
     TraingPresenter::~TraingPresenter()
     {
         g_pTraingPresenter = nullptr;
-        delete data;
     }
 
     TraingPresenter *TraingPresenter::GetInstance()
@@ -74,24 +76,23 @@ namespace OHOS
         if (strcmp(view.GetViewId(), BUTTON1) == 0)
         {
             NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);
-            TraingModel::GetInstance()->SetSportEvent(data->training1_Text);
+            TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORWALKING);
         }
         if (strcmp(view.GetViewId(), BUTTON2) == 0)
         {
             NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);
-            TraingModel::GetInstance()->SetSportEvent(data->training2_Text);
+            TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORBIKING);
         }
         if (strcmp(view.GetViewId(), BUTTON3) == 0)
         {
             NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);
-            TraingModel::GetInstance()->SetSportEvent(data->training3_Text);
+            TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORRUNNING);
         }
         if (strcmp(view.GetViewId(), BUTTONMORE) == 0)
         {
             NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
         }
 
-        delete data;
         return true;
     }
 }
index f58023d..747ca81 100644 (file)
@@ -46,11 +46,9 @@ namespace OHOS
     static constexpr uint16_t BTNMORE_IMAGE_Y = 324;\r
 \r
     static TraingView *g_pTraingView{nullptr};\r
-    static QuickTraining *data = new QuickTraining;\r
 \r
     TraingView::TraingView()\r
     {\r
-        data = TraingModel::GetInstance()->GetQuickTraining();\r
         g_pTraingView = this;\r
     }\r
 \r
@@ -58,7 +56,6 @@ namespace OHOS
     {\r
         DeInitView();\r
         g_pTraingView = nullptr;\r
-        delete data;\r
     }\r
     TraingView *TraingView::GetInstance()\r
     {\r
@@ -76,9 +73,9 @@ namespace OHOS
         //  初始化标签\r
         TraingModel::GetInstance()->InitLabelExt(title_label, TITLE_LABEL_X, TITLE_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "title_label", STR_RAPID_TRAINING, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
 \r
-        TraingModel::GetInstance()->InitLabelExt(btn1_label, BTN1_LABEL_X, BTN1_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "btu1_label", data->training1_Text, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
-        TraingModel::GetInstance()->InitLabelExt(btn2_label, BTN2_LABEL_X, BTN2_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "btu2_label", data->training2_Text, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
-        TraingModel::GetInstance()->InitLabelExt(btn3_label, BTN3_LABEL_X, BTN3_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "btu3_label", data->training3_Text, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
+        TraingModel::GetInstance()->InitLabelExt(btn1_label, BTN1_LABEL_X, BTN1_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "btu1_label", STR_EXERCISE_OUTDOORWALKING, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
+        TraingModel::GetInstance()->InitLabelExt(btn2_label, BTN2_LABEL_X, BTN2_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "btu2_label", STR_EXERCISE_OUTDOORBIKING, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
+        TraingModel::GetInstance()->InitLabelExt(btn3_label, BTN3_LABEL_X, BTN3_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "btu3_label", STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
         TraingModel::GetInstance()->InitLabelExt(btnmore_label, BTN2_LABEL_X, BTN3_LABEL_Y, LABEL_X_SIZE, LABEL_Y_SIZE, "btumore_label", STR_MORE, DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
         return true;\r
     }\r
@@ -114,15 +111,10 @@ namespace OHOS
      */\r
     bool TraingView::AddImageView()\r
     {\r
-        const char *dataStr1 = (data->training1_Image).c_str();\r
-        const char *dataStr2 = (data->training2_Image).c_str();\r
-        const char *dataStr3 = (data->training3_Image).c_str();\r
-        // const char *dataStr1 = WALKING_60_IMAGE;\r
-        // const char *dataStr2 = RUNNING_60_IMAGE;\r
-        // const char *dataStr3 = RIDING_60_IMAGE;\r
-        TraingModel::GetInstance()->InitImageView(btn1_image, BTN1_IMAGE_X, BTN1_IMAGE_Y, BTN_IMAGE_SIZE, BTN_IMAGE_SIZE, "btn1_image", dataStr1);\r
-        TraingModel::GetInstance()->InitImageView(btn2_image, BTN2_IMAGE_X, BTN2_IMAGE_Y, BTN_IMAGE_SIZE, BTN_IMAGE_SIZE, "btn2_image", dataStr2);\r
-        TraingModel::GetInstance()->InitImageView(btn3_image, BTN3_IMAGE_X, BTN3_IMAGE_Y, BTN_IMAGE_SIZE, BTN_IMAGE_SIZE, "btn3_image", dataStr3);\r
+\r
+        TraingModel::GetInstance()->InitImageView(btn1_image, BTN1_IMAGE_X, BTN1_IMAGE_Y, BTN_IMAGE_SIZE, BTN_IMAGE_SIZE, "btn1_image", WALKING_60_IMAGE);\r
+        TraingModel::GetInstance()->InitImageView(btn2_image, BTN2_IMAGE_X, BTN2_IMAGE_Y, BTN_IMAGE_SIZE, BTN_IMAGE_SIZE, "btn2_image", RIDING_60_IMAGE);\r
+        TraingModel::GetInstance()->InitImageView(btn3_image, BTN3_IMAGE_X, BTN3_IMAGE_Y, BTN_IMAGE_SIZE, BTN_IMAGE_SIZE, "btn3_image", RUNNING_60_IMAGE);\r
         TraingModel::GetInstance()->InitImageView(btnmore_image, BTNMORE_IMAGE_X, BTNMORE_IMAGE_Y, BTN_IMAGE_SIZE, BTN_IMAGE_SIZE, "btnmore_image", MORE_ICON_IMAGE);\r
         return true;\r
     }\r
index bac9ee6..4423c08 100644 (file)
@@ -170,11 +170,18 @@ namespace OHOS
             // 处理数据为空的情况\r
             return;\r
         }\r
-\r
-        double distance_km = sportdata->distance / 1000.0; // 转换为公里并保留两位小数\r
-        std::stringstream ss;\r
-        ss << std::fixed << std::setprecision(2) << distance_km;\r
-        std::string distanceStr = ss.str();\r
+        std::string distanceStr;\r
+        if (sportdata->distance != 0)\r
+        {\r
+            double distance_km = sportdata->distance / 1000.0; // 转换为公里并保留两位小数\r
+            std::stringstream ss;\r
+            ss << std::fixed << std::setprecision(2) << distance_km;\r
+            distanceStr = ss.str();\r
+        }\r
+        else\r
+        {\r
+            distanceStr = "--";\r
+        }\r
 \r
         std::string durationStr = std::to_string(sportdata->duration);\r
         std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : "--";\r
@@ -245,28 +252,13 @@ namespace OHOS
             ControlSensor(ExerciseState::End);\r
             if (TraingCardView::GetInstance()->RefreshEndView())\r
             {\r
+                //进行存储操作?\r
                 NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGWIN);\r
             }\r
             else\r
             {\r
                 NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);\r
             }\r
-#if 0\r
-            // 在点击事件中打印 SportData 对象之前,确保结束时间戳已经被设置\r
-            if (TraingModel::GetInstance()->GetSportdata()->endtime == 0 && TraingModel::GetInstance()->GetSportState() == ExerciseState::End)\r
-            {\r
-                PRINT("RESET ENDTIMESTAMP\r\n");\r
-                TraingModel::GetInstance()->SetTimestamp(); // 如果结束时间戳为0且当前为结束状态,再次调用 SetTimestamp 设置结束时间戳\r
-            }\r
-            // 打印 SportData 中的数据\r
-            SportData *sportData = TraingModel::GetInstance()->GetSportdata();\r
-\r
-            std::string formattedStartTime = TraingModel::GetInstance()->AnalysisTimestamp(sportData->starttime);\r
-            std::string formattedEndTime = TraingModel::GetInstance()->AnalysisTimestamp(sportData->endtime);\r
-            std::string formattedTimeRange = formattedStartTime + "-" + formattedEndTime;\r
-\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "【SportData - StartTime: [%lu], EndTime: [%lu]  %s】", sportData->starttime, sportData->endtime, formattedTimeRange.c_str());\r
-#endif\r
         }\r
         // 返回按键\r
         if (strcmp(view.GetViewId(), BUTTONBACK) == 0)\r
index 544ca61..bec5092 100644 (file)
@@ -1,3 +1,9 @@
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-04-16 17:36:17
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardPresenter.cpp
+ */
 
 #include "traing/training_card/include/Training_CardPresenter.h"
 #include "traing/training_card/include/Training_CardView.h"
@@ -14,7 +20,7 @@
 
 namespace OHOS
 {
-    static QuickTraining *data = new QuickTraining;
+
     bool TraingOnClickListener::OnClick(UIView &view, const ClickEvent &event)
     {
         UNUSED(event);
@@ -28,17 +34,17 @@ namespace OHOS
         if (strcmp(view.GetViewId(), BUTTON1) == 0)
         {
             NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);
-            TraingModel::GetInstance()->SetSportEvent(data->training1_Text);
+            TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORWALKING);
         }
         if (strcmp(view.GetViewId(), BUTTON2) == 0)
         {
             NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);
-            TraingModel::GetInstance()->SetSportEvent(data->training2_Text);
+            TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORBIKING);
         }
         if (strcmp(view.GetViewId(), BUTTON3) == 0)
         {
             NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);
-            TraingModel::GetInstance()->SetSportEvent(data->training3_Text);
+            TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORRUNNING);
         }
         if (strcmp(view.GetViewId(), BUTTONMORE) == 0)
         {
index 37c5327..6f024f9 100644 (file)
 namespace OHOS\r
 {\r
     static Training_CardView *g_pTraining_CardView{nullptr};\r
-    static QuickTraining *data = new QuickTraining;\r
 \r
     Training_CardView::Training_CardView()\r
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Training_CardView::Training_CardView");\r
         SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
         g_pTraining_CardView = this;\r
-        data = TraingModel::GetInstance()->GetQuickTraining();\r
     }\r
 \r
     Training_CardView::~Training_CardView()\r
@@ -34,7 +32,6 @@ namespace OHOS
         RemoveAll();\r
         DeInit();\r
         g_pTraining_CardView = nullptr;\r
-        delete data;\r
     }\r
 \r
     Training_CardView *Training_CardView::GetInstance()\r
@@ -93,9 +90,9 @@ namespace OHOS
         };\r
 \r
         ButtonInfo buttons[] = {\r
-            {data->training1_Text, BUTTON1, TRAINING_BUTTONGROUND2, Button1, 86, 118},\r
-            {data->training2_Text, BUTTON2, TRAINING_BOUTTONGROUND, Button2, 236, 118},\r
-            {data->training3_Text, BUTTON3, TRAINING_BOUTTONGROUND, Button3, 86, 268},\r
+            {STR_EXERCISE_OUTDOORWALKING, BUTTON1, TRAINING_BUTTONGROUND2, Button1, 86, 118},\r
+            {STR_EXERCISE_OUTDOORBIKING, BUTTON2, TRAINING_BOUTTONGROUND, Button2, 236, 118},\r
+            {STR_EXERCISE_OUTDOORRUNNING, BUTTON3, TRAINING_BOUTTONGROUND, Button3, 86, 268},\r
             {STR_MORE, BUTTONMORE, TRAINING_MORE, ButtonMore, 236, 268}};\r
 \r
         for (auto &buttonInfo : buttons)\r
index 891d41e..e625e4b 100644 (file)
@@ -416,6 +416,65 @@ errcode_t uapi_get_yyyymmddhhmmss_Date(char *date)
     return ERRCODE_SUCC;
 }
 
+/**
+ * @param {char} *p_time
+ * @param {char} 隔断符
+ * @brief 获取日期
+ */
+errcode_t uapi_get_YYMMDD_Time(char *p_time, char separator)
+{
+    if (p_time == NULL)
+    {
+        return ERRCODE_FAIL; // 返回空指针错误码
+    }
+
+    time_t currtime;
+    struct tm *timeinfo;
+    time(&currtime);
+    timeinfo = localtime(&currtime);
+
+    // 根据传入的分隔符参数选择中间分隔符
+    char sep[2] = {separator, '\0'};
+
+    // 将年月日信息存储到 p_time 变量中,使用指定的分隔符
+    sprintf(p_time, "%02d%s%02d%s%02d", timeinfo->tm_year + 1900, sep, timeinfo->tm_mon + 1, sep, timeinfo->tm_mday);
+
+    return ERRCODE_SUCC;
+}
+/**
+ * @param {char} *p_time
+ * @param {char} 隔断符
+ * @param {bool} 是否包含秒
+ * @brief 获取时间
+ */
+errcode_t uapi_get_HHMMSS_Time(char *p_time, char separator, bool include_seconds)
+{
+    if (p_time == NULL)
+    {
+        return ERRCODE_FAIL; // 返回空指针错误码
+    }
+
+    time_t currtime;
+    struct tm *timeinfo;
+    time(&currtime);
+    timeinfo = localtime(&currtime);
+
+    // 根据传入的分隔符参数选择中间分隔符
+    char sep[2] = {separator, '\0'};
+
+    // 根据传入的 include_seconds 参数决定是否包含秒
+    if (include_seconds)
+    {
+        sprintf(p_time, "%02d%s%02d%s%02d", timeinfo->tm_hour, sep, timeinfo->tm_min, sep, timeinfo->tm_sec);
+    }
+    else
+    {
+        sprintf(p_time, "%02d%s%02d", timeinfo->tm_hour, sep, timeinfo->tm_min);
+    }
+
+    return ERRCODE_SUCC;
+}
+
 /// @brief 控制屏幕是否常亮
 /// @param turnOnFlag 1:常亮屏幕 
 /// @param turnOnFlag 0:取消常亮 
index 7b80de5..3cf6b2d 100644 (file)
@@ -40,6 +40,11 @@ errcode_t uapi_set_time_from_cat1(char* cat1time);
 /**获取日期*/
 errcode_t uapi_get_yyyymmddhhmmss_Date(char *date);
 
+/*获取日期*/
+errcode_t uapi_get_YYMMDD_Time(char *p_time, char separator);
+/*获取时间*/
+errcode_t uapi_get_HHMMSS_Time(char *p_time, char separator, bool include_seconds);
+
 char *uapi_get_local_yyyymmdd_date(void);
 
 void ScreenAlwaysOnCtr(uint8_t turnOnFlag);