#include "traing/include/TraingEnddataView.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 "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 <cmath> // 包含数学函数库,用于四舍五入
-#include <string> // 包含字符串处理库,用于使用 std::to_string
+#include <cmath> // 包含数学函数库,用于四舍五入
+#include <iostream>
+#include <sstream> // 用于 std::ostringstream
+#include <string> // 包含字符串处理库,用于使用 std::to_string
+#include <ui_scroll_view.h>
/*测试打印函数*/
-#define PRINT_LINE_INFO() WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File: %s, Line: %d\r\n", __FILE__, __LINE__)
-#define PRINT_FUNCTION_LINE() WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Function: %s, Line: %d\r\n", __FUNCTION__, __LINE__)
-
+#define PRINT_LINE_INFO() \
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File: %s, Line: %d\r\n", __FILE__, \
+ __LINE__)
+#define PRINT_FUNCTION_LINE() \
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Function: %s, Line: %d\r\n", \
+ __FUNCTION__, __LINE__)
+
+/*
+ 普通运动:
+ 时长,平均心率,训练强度,卡路里,目标完成度
+ 算法支持运动:
+ 时长,平均心率,训练强度,卡路里,
+ 距离,步数,平均配速,步幅,步频,目标完成度
+*/
#define UI_UPDATA 0
-namespace OHOS
-{
+namespace OHOS {
- static const int startY_Unit = 252;
- static const int startY_Value = 292;
- static const int labelHeight = 40;
- static const int labelInterval = 130;
- ColorType textColor = Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f);
+static const int startY_Unit = 252;
+static const int startY_Value = 292;
+static const int labelHeight = 40;
+static const int labelInterval = 130;
+ColorType textColor = Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f);
- static const int initialY = 132;
- static const int lineHeight = 130;
- static const int iconHeight = 80;
- static const int verticalOffset = 2;
- static const int baseY = 214;
+static const int initialY = 132;
+static const int lineHeight = 130;
+static const int iconHeight = 80;
+static const int verticalOffset = 2;
+static const int baseY = 214;
- static TraingEnddataView *g_pTraingEnddataView{nullptr};
+static TraingEnddataView *g_pTraingEnddataView{nullptr};
- TraingEnddataView::TraingEnddataView()
- {
- g_pTraingEnddataView = this;
- }
+TraingEnddataView::TraingEnddataView() { g_pTraingEnddataView = this; }
- TraingEnddataView::~TraingEnddataView()
- {
- // DeInit();
- UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
- UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+TraingEnddataView::~TraingEnddataView() {
+ // DeInit();
+ scrollView_->RemoveAll();
- g_pTraingEnddataView = nullptr;
- }
+ UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
+ UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
- TraingEnddataView *TraingEnddataView::GetInstance()
- {
+ g_pTraingEnddataView = nullptr;
+}
- return g_pTraingEnddataView;
- }
+TraingEnddataView *TraingEnddataView::GetInstance() {
- // 初始化图像
- void TraingEnddataView ::InitializeImageViews()
- {
- // 初始化主图标
- InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image", WALKING_54_IMAGE);
-
- InitImageView(imageLine2, 97, baseY, 80, 20, "image2", LINE_IMAGE); // imageLine2
- InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3", LINE_IMAGE); // imageLine3
- InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4", LINE_IMAGE); // imageLine4
- InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5", LINE_IMAGE); // imageLine5
- scrollView_->Add(imageLine2);
- scrollView_->Add(imageLine3);
- scrollView_->Add(imageLine4);
- scrollView_->Add(imageLine5);
- scrollView_->Add(imageIcon);
-
-#if UI_UPDATA
- InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image6", LINE_IMAGE); // imageLine6
- InitImageView(imageLine7, 97, baseY + 5 * lineHeight, 80, 20, "image7", LINE_IMAGE); // imageLine7
- scrollView_->Add(imageLine6);
- scrollView_->Add(imageLine7);
-#endif
- }
- void TraingEnddataView ::InitializeLabels(void)
- {
- /*title and sport*/
- InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabel(labelsport, 147, 140, 240, 35, "label6", "健走", DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabel(labelduration, 146, 179, 240, 40, "label7", "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
-
- // 初始化单位Label
- InitRollLabel(labelutag, 146, startY_Unit + labelInterval * 0, 240, 40, "label8", STR_GOAL_ACCOMPLISHMENT_DEGREE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelutime, 146, startY_Unit + labelInterval * 1, 240, 40, "label9", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labeluheart, 146, startY_Unit + labelInterval * 2, 240, 40, "label11", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelustrong, 146, startY_Unit + labelInterval * 3, 240, 40, "label2", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME, 30);
-
- // 设置文本颜色
- labelduration->SetTextColor(textColor);
- labelutag->SetTextColor(textColor);
- labelutime->SetTextColor(textColor);
- labeluheart->SetTextColor(textColor);
- labelustrong->SetTextColor(textColor);
-
- // 初始化值
- InitLabel(labeltag, 146, startY_Value + 0 * labelInterval, 240, 60, "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labeltag->SetTextColor(Color::Green());
- InitLabel(labeltime, 146, startY_Value + 1 * labelInterval, 240, 60, "label14", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labeltime->SetTextColor(Color::Red());
- InitLabel(labelheart, 146, startY_Value + 2 * labelInterval, 240, 60, "label16", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelheart->SetTextColor(Color::Yellow());
- InitLabel(labelstrong, 146, startY_Value + 3 * labelInterval, 240, 60, "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
- labelstrong->SetTextColor(Color::Red());
-
- scrollView_->Add(labeltype);
- scrollView_->Add(labelsport);
- scrollView_->Add(labeltime);
- scrollView_->Add(labelutag);
- scrollView_->Add(labelutime);
- scrollView_->Add(labeluheart);
- scrollView_->Add(labelustrong);
-
- scrollView_->Add(labeltag);
- scrollView_->Add(labelduration);
- scrollView_->Add(labelheart);
- scrollView_->Add(labelstrong);
-
-#if UI_UPDATA
- InitRollLabel(labelumile, 146, startY_Unit + labelInterval * 2, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * 4, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
- labelumile->SetTextColor(textColor);
- labelusteps->SetTextColor(textColor);
-
- InitLabel(labelmile, 146, startY_Value + 2 * labelInterval, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelmile->SetTextColor(Color::Blue());
- InitLabel(labelsteps, 146, startY_Value + 4 * labelInterval, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelsteps->SetTextColor(Color::Green());
-
- scrollView_->Add(labelumile);
- scrollView_->Add(labelusteps);
- scrollView_->Add(labelmile);
- scrollView_->Add(labelsteps);
-#endif
- }
- /* InitView:初始化界面*/
- void TraingEnddataView ::InitView()
- {
+ return g_pTraingEnddataView;
+}
+
+// 初始化图像
+void TraingEnddataView ::InitializeImageViews() {
+ // 初始化主图标
+ InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
+ WALKING_54_IMAGE);
+
+ InitImageView(imageLine2, 97, baseY, 80, 20, "image2",
+ LINE_IMAGE); // imageLine2
+ InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3",
+ LINE_IMAGE); // imageLine3
+ InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4",
+ LINE_IMAGE); // imageLine4
+ InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5",
+ LINE_IMAGE); // imageLine5
+
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ if (isincludeTag) {
+ InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image7",
+ LINE_IMAGE);
+ scrollView_->Add(imageLine6);
+ }
+
+ scrollView_->Add(imageLine2);
+ scrollView_->Add(imageLine3);
+ scrollView_->Add(imageLine4);
+ scrollView_->Add(imageLine5);
+
+ scrollView_->Add(imageIcon);
+}
+/*
+ InitView:初始化界面
+
+ 普通运动:
+ 时长,平均心率,训练强度,卡路里,目标完成度
+ 算法支持运动:
+ 时长,平均心率,训练强度,卡路里,目标完成度
+ 距离,步数,平均配速,步幅,步频,
+
+ 蓝色:距离、平均配速
+ 黄色:训练时长
+ 橙色:平均心率、训练强度
+ 绿色:步数,步幅,步频,平均配速,卡路里,目标完成度
+*/
+void TraingEnddataView ::InitializeLabels() {
+
+ /*title and sport*/
+ InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelsport, 147, 140, 240, 35, "label6", "健走",
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelduration, 146, 179, 240, 40, "label7", "13:00:22-15:00:12",
+ DEFAULT_VECTOR_FONT_FILENAME, 28);
+ // 初始化Label
+ //时长
+ InitRollLabel(labelutime, 146, startY_Unit + labelInterval * 0, 240, 40,
+ "label8", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labeltime, 146, startY_Value + 0 * labelInterval, 240, 60,
+ "label14", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labeltime->SetTextColor(Color::Yellow());
+ //平均心率
+ InitRollLabel(labeluheart, 146, startY_Unit + labelInterval * 1, 240, 40,
+ "label9", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelheart, 146, startY_Value + 1 * labelInterval, 240, 60,
+ "label16", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelheart->SetTextColor(Color::Orange());
+ // 训练强度
+ InitRollLabel(labelustrong, 146, startY_Unit + labelInterval * 2, 240, 40,
+ "label11", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelstrong, 146, startY_Value + 2 * labelInterval, 240, 60,
+ "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ labelstrong->SetTextColor(Color::Orange());
+ //卡路里
+ InitRollLabel(labelucalorie, 146, startY_Unit + labelInterval * 3, 240, 40,
+ "label2", STR_CALORIE_SETTING, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelcalories, 146, startY_Value + 3 * labelInterval, 240, 60,
+ "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelcalories->SetTextColor(Color::Green());
+
+ //目标完成度
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ if (isincludeTag) {
+ InitRollLabel(labelutag, 146, startY_Unit + labelInterval * 4, 240, 40,
+ "label10", STR_GOAL_ACCOMPLISHMENT_DEGREE,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ labelutag->SetTextColor(textColor);
+ InitLabel(labeltag, 146, startY_Value + 4 * labelInterval, 240, 60,
+ "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labeltag->SetTextColor(Color::Green());
+ scrollView_->Add(labelutag);
+ scrollView_->Add(labeltag);
+ }
+
+ // 设置文本颜色
+ labelduration->SetTextColor(textColor);
+ labelutime->SetTextColor(textColor);
+ labeluheart->SetTextColor(textColor);
+ labelustrong->SetTextColor(textColor);
+ labelucalorie->SetTextColor(textColor);
+
+ scrollView_->Add(labeltype);
+ scrollView_->Add(labelsport);
+ scrollView_->Add(labeltime);
+
+ scrollView_->Add(labelutime);
+ scrollView_->Add(labeluheart);
+ scrollView_->Add(labelustrong);
+ scrollView_->Add(labelucalorie);
+
+ scrollView_->Add(labelduration);
+ scrollView_->Add(labelheart);
+ scrollView_->Add(labelstrong);
+ scrollView_->Add(labelcalories);
+}
+// 增加额外配置
+void TraingEnddataView::BonusdataView() {
+ if (!TraingModel::GetInstance()->GetIsSpecial())
+ return;
+
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ int tagflge = isincludeTag ? 1 : 0;
+
+ // 初始化线条
+
+ InitImageView(imageLine8, 97, baseY + (4 + tagflge) * lineHeight, 80, 20,
+ "image8", LINE_IMAGE); // imageLine8
+ InitImageView(imageLine9, 97, baseY + (5 + tagflge) * lineHeight, 80, 20,
+ "image9", LINE_IMAGE); // imageLine9
+ InitImageView(imageLine10, 97, baseY + (6 + tagflge) * lineHeight, 80, 20,
+ "image10", LINE_IMAGE); // imageLine10
+ InitImageView(imageLine11, 97, baseY + (7 + tagflge) * lineHeight, 80, 20,
+ "image11", LINE_IMAGE);
+ InitImageView(imageLine12, 97, baseY + (8 + tagflge) * lineHeight, 80, 20,
+ "image7", LINE_IMAGE);
+
+ scrollView_->Add(imageLine8);
+ scrollView_->Add(imageLine9);
+ scrollView_->Add(imageLine10);
+ scrollView_->Add(imageLine11);
+ scrollView_->Add(imageLine12);
+
+ // 初始化标签
+ // 距离
+ InitRollLabel(labelumile, 146, startY_Unit + labelInterval * (4 + tagflge),
+ 240, 40, "label10", STR_RANGE_MILE,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelmile, 146, startY_Value + (4 + tagflge) * labelInterval, 240,
+ 60, "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelumile->SetTextColor(textColor);
+ labelmile->SetTextColor(Color::Blue());
+
+ // 步数
+ InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * (5 + tagflge),
+ 240, 40, "label12", STR_STEP_NUMBER,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelsteps, 146, startY_Value + (5 + tagflge) * labelInterval, 240,
+ 60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelusteps->SetTextColor(textColor);
+ labelsteps->SetTextColor(Color::Green());
+
+ // 平均配速
+ InitRollLabel(labeluavpace, 146, startY_Unit + labelInterval * (6 + tagflge),
+ 240, 40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelavpace, 146, startY_Value + (6 + tagflge) * labelInterval, 240,
+ 60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labeluavpace->SetTextColor(textColor);
+ labelavpace->SetTextColor(Color::Green());
+
+ // 步幅
+ InitRollLabel(labelustride, 146, startY_Unit + labelInterval * (7 + tagflge),
+ 240, 40, "label2", STR_STEP_LENGTH,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelstride, 146, startY_Value + (7 + tagflge) * labelInterval, 240,
+ 60, "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelustride->SetTextColor(textColor);
+ labelstride->SetTextColor(Color::Green());
+
+ // 步频
+ InitRollLabel(labelufreq, 146, startY_Unit + labelInterval * (8 + tagflge),
+ 240, 40, "label2", STR_STEP_FREQUENCY,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelfreq, 146, startY_Value + (8 + tagflge) * labelInterval, 240,
+ 60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelufreq->SetTextColor(textColor);
+ labelfreq->SetTextColor(Color::Green());
+
+ scrollView_->Add(labelumile);
+ scrollView_->Add(labelmile);
+ scrollView_->Add(labelusteps);
+ scrollView_->Add(labelsteps);
+ scrollView_->Add(labeluavpace);
+ scrollView_->Add(labelavpace);
+ scrollView_->Add(labelustride);
+ scrollView_->Add(labelstride);
+ scrollView_->Add(labelufreq);
+ scrollView_->Add(labelfreq);
+}
+// 配置退出相关位置
+void TraingEnddataView::ExitView() {
+
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ int tagflge = isincludeTag ? 1 : 0;
+
+ if (TraingModel::GetInstance()->GetIsSpecial()) {
+ // 初始化退出(最后 要根据前方配置设置位置)
+ // 是否为特殊运动
+ // 是否包含目标
+ InitRollLabel(exitLabel, 80,
+ (startY_Value + labelInterval * (8 + tagflge) + 120), 300, 40,
+ "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitButtonExt(exitButton, 42,
+ (startY_Value + labelInterval * (8 + tagflge) + 220), 380,
+ 100, BUTTONBACK, STR_CLOSE, 30);
+ } else {
+ InitRollLabel(exitLabel, 80,
+ (startY_Value + labelInterval * (3 + tagflge) + 120), 300, 40,
+ "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitButtonExt(exitButton, 42,
+ (startY_Value + labelInterval * (3 + tagflge) + 220), 380,
+ 100, BUTTONBACK, STR_CLOSE, 30);
+ }
+ exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ scrollView_->Add(exitLabel);
+ exitButton->SetOnClickListener(presenter_);
+ scrollView_->Add(exitButton);
+}
+void TraingEnddataView ::InitView() {
- scrollView_ = new UIScrollView();
+ scrollView_ = new UIScrollView();
- scrollView_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- scrollView_->SetScrollBlankSize(50);
- // scrollView_->SetReboundSize(35);
- scrollView_->SetHorizontalScrollState(false);
- scrollView_->RequestFocus();
- scrollView_->SetRotateFactor(1.0);
- scrollView_->SetMaxScrollDistance(1000);
- scrollView_->SetDragACCLevel(5);
- scrollView_->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
- scrollView_->SetTouchable(true);
- scrollView_->SetDraggable(true);
+ scrollView_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+ Screen::GetInstance().GetHeight());
+ scrollView_->SetScrollBlankSize(100);
+ scrollView_->SetReboundSize(50);
+ scrollView_->SetHorizontalScrollState(false);
+ scrollView_->RequestFocus();
+ scrollView_->SetRotateFactor(1.0);
+ scrollView_->SetMaxScrollDistance(1000);
+ scrollView_->SetDragACCLevel(5);
+ scrollView_->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
+ scrollView_->SetTouchable(true);
+ scrollView_->SetDraggable(true);
- /*初始化线条*/
- InitializeImageViews();
+ /*初始化线条*/
+ InitializeImageViews();
- /*初始化label*/
- InitializeLabels();
+ /*初始化label*/
+ InitializeLabels();
- BonusdataView(); // 配置额外数据
+ BonusdataView(); // 配置额外数据
- ExitView(); // 配置退出组件
+ ExitView(); // 配置退出组件
- container_->Add(scrollView_);
- }
- // 增加额外配置
- void TraingEnddataView::BonusdataView()
+ container_->Add(scrollView_);
+}
+
+/* DeInit:删除组件 */
+void TraingEnddataView::DeInit() {
+ scrollView_->RemoveAll();
+
+ /*单位label*/
+ delete labelutime;
+ labelutime = nullptr;
+ delete labelutag;
+ labelutag = nullptr;
+ delete labelusteps;
+ labelusteps = nullptr;
+ delete labelumile;
+ labelumile = nullptr;
+ delete labeluheart;
+ labeluheart = nullptr;
+ delete labelustrong;
+ labelustrong = nullptr;
+ delete labeluavpace;
+ labeluavpace = nullptr;
+ delete labelufreq;
+ labelufreq = nullptr;
+ delete labelustride;
+ labelustride = nullptr;
+
+ /*值label*/
+ delete labeltype;
+ labeltype = nullptr;
+ delete labelsport;
+ labelsport = nullptr;
+ delete labelduration;
+ labelduration = nullptr;
+ delete labeltag;
+ labeltag = nullptr;
+ delete labeltime;
+ labeltime = nullptr;
+ delete labelmile;
+ labelmile = nullptr;
+ delete labelheart;
+ labelheart = nullptr;
+ delete labelstrong;
+ labelstrong = nullptr;
+ delete labelsteps;
+ labelsteps = nullptr;
+ delete labelavpace;
+ labelavpace = nullptr;
+ delete labelfreq;
+ labelfreq = nullptr;
+ delete labelstride;
+ labelstride = nullptr;
+
+ /*图片label*/
+ delete imageIcon;
+ imageIcon = nullptr;
+ delete imageLine2;
+ imageLine2 = nullptr;
+ delete imageLine3;
+ imageLine3 = nullptr;
+ delete imageLine4;
+ imageLine4 = nullptr;
+ delete imageLine5;
+ imageLine5 = nullptr;
+ delete imageLine6;
+ imageLine6 = nullptr;
+ delete imageLine8;
+ imageLine8 = nullptr;
+ delete imageLine9;
+ imageLine9 = nullptr;
+ delete imageLine10;
+ imageLine10 = nullptr;
+
+ /*退出相关*/
+ delete exitButton;
+ exitButton = nullptr;
+ delete exitLabel;
+ exitLabel = nullptr;
+
+ delete scrollView_;
+ scrollView_ = nullptr;
+}
+
+void TraingEnddataView::PreLoad(void) {
+ if (!viewiInitStatus) {
+ InitView();
+ viewiInitStatus = true;
+ }
+}
+
+void TraingEnddataView::InitData() {
+ SportData *enddata = TraingModel::GetInstance()->GetSportdata();
+
+ if (enddata == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Enddata is nullptr. Exiting InitData()...\r\n");
+ return;
+ }
+
+ // 训练图标Icon
+ std::string imageStr =
+ TraingModel::GetInstance()->GetSportType(enddata->sportType);
+ if (!imageStr.empty()) {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "imageIcon %s\r\n",
+ imageStr.c_str());
+ if (imageIcon) // 检查 imageIcon 是否为空
{
- if (!TraingModel::GetInstance()->GetIsSpecial())
- return;
-#if UI_UPDATA
- /*线条*/
- InitImageView(imageLine8, 97, baseY + 6 * lineHeight, 80, 20, "image8", LINE_IMAGE); // imageLine8
- InitImageView(imageLine9, 97, baseY + 7 * lineHeight, 80, 20, "image9", LINE_IMAGE); // imageLine9
- InitImageView(imageLine10, 97, baseY + 8 * lineHeight, 80, 20, "image10", LINE_IMAGE); // imageLine10
- scrollView_->Add(imageLine8);
- scrollView_->Add(imageLine9);
- scrollView_->Add(imageLine10);
- /*label*/
- InitRollLabel(labeluavpace, 146, startY_Unit + labelInterval * 6, 240, 40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelufreq, 146, startY_Unit + labelInterval * 7, 240, 40, "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelustride, 146, startY_Unit + labelInterval * 8, 240, 40, "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME, 30);
- labeluavpace->SetTextColor(textColor);
- labelufreq->SetTextColor(textColor);
- labelustride->SetTextColor(textColor);
- scrollView_->Add(labeluavpace);
- scrollView_->Add(labelufreq);
- scrollView_->Add(labelustride);
-
- InitLabel(labelavpace, 146, startY_Value + 6 * labelInterval, 240, 60, "label17", "5.45", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelavpace->SetTextColor(Color::Blue());
- InitLabel(labelfreq, 146, startY_Value + 7 * labelInterval, 240, 60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelfreq->SetTextColor(Color::Green());
- InitLabel(labelstride, 146, startY_Value + 8 * labelInterval, 240, 60, "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelstride->SetTextColor(Color::Green());
- scrollView_->Add(labelavpace);
- scrollView_->Add(labelfreq);
- scrollView_->Add(labelstride);
-#else
- InitRollLabel(labelumile, 146, startY_Unit + labelInterval * 4, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * 5, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
- labelumile->SetTextColor(textColor);
- labelusteps->SetTextColor(textColor);
-
- InitLabel(labelmile, 146, startY_Value + 4 * labelInterval, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelmile->SetTextColor(Color::Blue());
- InitLabel(labelsteps, 146, startY_Value + 5 * labelInterval, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelsteps->SetTextColor(Color::Green());
-
- scrollView_->Add(labelumile);
- scrollView_->Add(labelusteps);
- scrollView_->Add(labelmile);
- scrollView_->Add(labelsteps);
-
- InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image6", LINE_IMAGE); // imageLine6
- InitImageView(imageLine7, 97, baseY + 5 * lineHeight, 80, 20, "image7", LINE_IMAGE); // imageLine7
- scrollView_->Add(imageLine6);
- scrollView_->Add(imageLine7);
-#endif
+ imageIcon->SetSrc(imageStr.c_str());
}
- // 配置退出相关位置
- void TraingEnddataView::ExitView()
+ } else {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Failed to get image string. Skipping imageIcon update.\r\n");
+ }
+
+ // 训练类
+ UIResourceTextId typeId =
+ TraingModel::GetInstance()->GetSportTypeId(enddata->sportType);
+ if (labeltype) // 检查 labeltype 是否为空
+ {
+ labeltype->SetTextId(typeId);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport Type ID set: %d\r\n",
+ typeId); // 打印运动类型ID
+ }
+
+ // 运动项目
+ if (labelsport) // 检查 labelsport 是否为空
+ {
+ labelsport->SetTextId(enddata->sportId);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport ID set: %d\r\n",
+ enddata->sportId); // 打印运动项目ID
+ }
+
+ // 运动开始结束时间
+ std::string startTimeStr = enddata->start_time;
+ std::string endTimeStr = enddata->end_time;
+ std::string durationStr = startTimeStr + "-" + endTimeStr;
+ if (labelduration) // 检查 labelduration 是否为空
+ {
+ labelduration->SetText(durationStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration set: %s\r\n",
+ durationStr.c_str()); // 打印运动时间段
+ }
+
+ // 运动目标
+ if (enddata->goaldegree) {
+ std::string tagStr = std::to_string(enddata->goaldegree) + "%";
+ if (labeltag) // 检查 labeltag 是否为空
{
- if (TraingModel::GetInstance()->GetIsSpecial())
- {
- // 初始化退出(最后 要根据前方配置设置位置)
- InitRollLabel(exitLabel, 80, 1033, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitButtonExt(exitButton, 42, 1083, 380, 100, BUTTONBACK, STR_CLOSE, 30);
- }
- else
- {
- InitRollLabel(exitLabel, 80, 773, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitButtonExt(exitButton, 42, 823, 380, 100, BUTTONBACK, STR_CLOSE, 30);
- }
- exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- scrollView_->Add(exitLabel);
- exitButton->SetOnClickListener(presenter_);
- scrollView_->Add(exitButton);
+ labeltag->SetText(tagStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Goal degree set: %s\r\n",
+ tagStr.c_str()); // 打印运动目标
}
- /* DeInit:删除组件 */
- void TraingEnddataView::DeInit()
+ } else {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "Enddata tag is null. Skipping labeltag update.\r\n");
+ }
+
+ // 运动时长
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration of the sport: %d\r\n",
+ enddata->duration);
+ std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
+ if (labeltime) // 检查 labeltime 是否为空
+ {
+ labeltime->SetText(timeStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Training time set: %s\r\n",
+ timeStr.c_str()); // 打印训练时间
+ }
+
+ // 运动距离
+ std::string mileStr = std::to_string(enddata->distance);
+ if (labelmile) // 检查 labelmile 是否为空
+ {
+ labelmile->SetText(mileStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Distance set: %s\r\n",
+ mileStr.c_str()); // 打印运动距离
+ }
+
+ // 平均心率
+ std::string heartStr = std::to_string(enddata->avgheart);
+ if (labelheart) // 检查 labelheart 是否为空
+ {
+ labelheart->SetText(heartStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average heart rate set: %s\r\n",
+ heartStr.c_str()); // 打印平均心率
+ }
+
+ // 步数
+ std::string stepStr = std::to_string(enddata->steps);
+ if (labelsteps) // 检查 labelsteps 是否为空
+ {
+ labelsteps->SetText(stepStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Steps set: %s\r\n",
+ stepStr.c_str()); // 打印步数
+ }
+
+ // 训练强度
+ UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
+ if (labelstrong) // 检查 labelstrong 是否为空
+ {
+ labelstrong->SetTextId(intensityid);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Intensity ID set: %d\r\n",
+ intensityid); // 打印训练强度ID
+ }
+ //卡路里
+ std::string calStr = std::to_string(enddata->calories);
+ if (labelcalories) // 检查 labelcal 是否为空
+ {
+ labelcalories->SetText(calStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Calories set: %s\r\n",
+ calStr.c_str()); // 打印卡路里
+ }
+
+ //特殊配置
+ if (TraingModel::GetInstance()->GetIsSpecial()) {
+ // 平均配速
+ // 需要计算一下 是秒 需要显示 分钟''秒''
+ int totalSeconds = enddata->apc; // 总秒数
+ int minutes = totalSeconds / 60; // 计算分钟
+ int seconds = totalSeconds % 60; // 计算剩余秒数
+ // 格式化为字符串
+ std::ostringstream oss;
+ oss << minutes << "'" << seconds << "\""; // 生成 "X'Y\"" 格式的字符串
+ std::string avpaceStr = oss.str(); // 得到字符串
+ if (labelavpace) // 检查标签是否为空
{
- scrollView_->RemoveAll();
-
- /*单位label*/
- delete labelutime;
- labelutime = nullptr;
- delete labelutag;
- labelutag = nullptr;
- delete labelusteps;
- labelusteps = nullptr;
- delete labelumile;
- labelumile = nullptr;
- delete labeluheart;
- labeluheart = nullptr;
- delete labelustrong;
- labelustrong = nullptr;
- delete labeluavpace;
- labeluavpace = nullptr;
- delete labelufreq;
- labelufreq = nullptr;
- delete labelustride;
- labelustride = nullptr;
-
- /*值label*/
- delete labeltype;
- labeltype = nullptr;
- delete labelsport;
- labelsport = nullptr;
- delete labelduration;
- labelduration = nullptr;
- delete labeltag;
- labeltag = nullptr;
- delete labeltime;
- labeltime = nullptr;
- delete labelmile;
- labelmile = nullptr;
- delete labelheart;
- labelheart = nullptr;
- delete labelstrong;
- labelstrong = nullptr;
- delete labelsteps;
- labelsteps = nullptr;
- delete labelavpace;
- labelavpace = nullptr;
- delete labelfreq;
- labelfreq = nullptr;
- delete labelstride;
- labelstride = nullptr;
-
- /*图片label*/
- delete imageIcon;
- imageIcon = nullptr;
- delete imageLine2;
- imageLine2 = nullptr;
- delete imageLine3;
- imageLine3 = nullptr;
- delete imageLine4;
- imageLine4 = nullptr;
- delete imageLine5;
- imageLine5 = nullptr;
- delete imageLine6;
- imageLine6 = nullptr;
- delete imageLine8;
- imageLine8 = nullptr;
- delete imageLine9;
- imageLine9 = nullptr;
- delete imageLine10;
- imageLine10 = nullptr;
-
- /*退出相关*/
- delete exitButton;
- exitButton = nullptr;
- delete exitLabel;
- exitLabel = nullptr;
-
- delete scrollView_;
- scrollView_ = nullptr;
+ labelavpace->SetText(avpaceStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average pace set: %s\r\n",
+ avpaceStr.c_str()); // 打印平均配速
}
- void TraingEnddataView::PreLoad(void)
+ // 步频
+ std::string freqStr = std::to_string(enddata->cdc);
+ if (labelfreq) // 检查 labelfreq 是否为空
{
- if (!viewiInitStatus)
- {
- InitView();
- viewiInitStatus = true;
- }
+ labelfreq->SetText(freqStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Cadence set: %s\r\n",
+ freqStr.c_str()); // 打印步频
}
- void TraingEnddataView::InitData()
+ // 步幅
+ std::string strideStr = std::to_string(enddata->std);
+ if (labelstride) // 检查 labelstride 是否为空
{
- SportData *enddata = TraingModel::GetInstance()->GetSportdata();
-
- if (enddata == nullptr)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Enddata is nullptr. Exiting InitData()...\r\n");
- return;
- }
-
- // 训练图标Icon
- std::string imageStr = TraingModel::GetInstance()->GetSportType(enddata->sportType);
- if (!imageStr.empty())
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "imageIcon %s\r\n", imageStr.c_str());
- if (imageIcon) // 检查 imageIcon 是否为空
- {
- imageIcon->SetSrc(imageStr.c_str());
- }
- }
- else
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Failed to get image string. Skipping imageIcon update.\r\n");
- }
-
- // 训练类
- UIResourceTextId typeId = TraingModel::GetInstance()->GetSportTypeId(enddata->sportType);
- if (labeltype) // 检查 labeltype 是否为空
- {
- labeltype->SetTextId(typeId);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport Type ID set: %d\r\n", typeId); // 打印运动类型ID
- }
-
- // 运动项目
- if (labelsport) // 检查 labelsport 是否为空
- {
- labelsport->SetTextId(enddata->sportId);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport ID set: %d\r\n", enddata->sportId); // 打印运动项目ID
- }
-
- // 运动开始结束时间
- std::string startTimeStr = enddata->start_time;
- std::string endTimeStr = enddata->end_time;
- std::string durationStr = startTimeStr + "-" + endTimeStr;
- if (labelduration) // 检查 labelduration 是否为空
- {
- labelduration->SetText(durationStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration set: %s\r\n", durationStr.c_str()); // 打印运动时间段
- }
-
- // 运动目标
- if (enddata->goaldegree)
- {
- std::string tagStr = std::to_string(enddata->goaldegree) + "%";
- if (labeltag) // 检查 labeltag 是否为空
- {
- labeltag->SetText(tagStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Goal degree set: %s\r\n", tagStr.c_str()); // 打印运动目标
- }
- }
- else
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Enddata tag is null. Skipping labeltag update.\r\n");
- }
-
- // 运动时长
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration of the sport: %d\r\n", enddata->duration);
- std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
- if (labeltime) // 检查 labeltime 是否为空
- {
- labeltime->SetText(timeStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Training time set: %s\r\n", timeStr.c_str()); // 打印训练时间
- }
-
- // 运动距离
- std::string mileStr = std::to_string(enddata->distance);
- if (labelmile) // 检查 labelmile 是否为空
- {
- labelmile->SetText(mileStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Distance set: %s\r\n", mileStr.c_str()); // 打印运动距离
- }
-
- // 平均心率
- std::string heartStr = std::to_string(enddata->avgheart);
- if (labelheart) // 检查 labelheart 是否为空
- {
- labelheart->SetText(heartStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average heart rate set: %s\r\n", heartStr.c_str()); // 打印平均心率
- }
-
- // 步数
- std::string stepStr = std::to_string(enddata->steps);
- if (labelsteps) // 检查 labelsteps 是否为空
- {
- labelsteps->SetText(stepStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Steps set: %s\r\n", stepStr.c_str()); // 打印步数
- }
-
- // 训练强度
- UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
- if (labelstrong) // 检查 labelstrong 是否为空
- {
- labelstrong->SetTextId(intensityid);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Intensity ID set: %d\r\n", intensityid); // 打印训练强度ID
- }
-
- if (TraingModel::GetInstance()->GetIsSpecial())
- {
- // 平均配速
- std::string avpaceStr = std::to_string(enddata->apc);
- if (labelavpace) // 检查 labelavpace 是否为空
- {
- labelavpace->SetText(avpaceStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average pace set: %s\r\n", avpaceStr.c_str()); // 打印平均配速
- }
-
- // 步频
- std::string freqStr = std::to_string(enddata->cdc);
- if (labelfreq) // 检查 labelfreq 是否为空
- {
- labelfreq->SetText(freqStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Cadence set: %s\r\n", freqStr.c_str()); // 打印步频
- }
-
- // 步幅
- std::string strideStr = std::to_string(enddata->std);
- if (labelstride) // 检查 labelstride 是否为空
- {
- labelstride->SetText(strideStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n", strideStr.c_str()); // 打印步幅
- }
- }
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingEnddataView data initialization complete.\r\n");
+ labelstride->SetText(strideStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n",
+ strideStr.c_str()); // 打印步幅
}
- // 设置按键监听
- static void SetKeyActListener()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");
- // 增加按键监听
- RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
- }
- void TraingEnddataView::OnStart()
- {
- View<TraingEnddataPresenter>::OnStart();
+ }
- container_ = new UIViewGroup();
- container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "TraingEnddataView data initialization complete.\r\n");
+}
+// 设置按键监听
+static void SetKeyActListener() {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");
+ // 增加按键监听
+ RootView::OnKeyActListener *keyactListener =
+ (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance();
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+}
+void TraingEnddataView::OnStart() {
+ View<TraingEnddataPresenter>::OnStart();
- PreLoad();
- InitData(); // 刷新数据
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+ Screen::GetInstance().GetHeight());
- SetContainerView(container_);
+ PreLoad();
+ InitData(); // 刷新数据
- container_->SetDraggable(true);
- container_->SetTouchable(true);
- container_->SetOnDragListener(presenter_);
+ SetContainerView(container_);
- SetKeyActListener();
- }
+ container_->SetDraggable(true);
+ container_->SetTouchable(true);
+ container_->SetOnDragListener(presenter_);
- void TraingEnddataView::OnSetUpView()
- {
+ SetKeyActListener();
+}
- View<TraingEnddataPresenter>::OnSetUpView();
- Draw();
- }
+void TraingEnddataView::OnSetUpView() {
- void TraingEnddataView::OnTearDownView()
- {
- View<TraingEnddataPresenter>::OnTearDownView();
- return;
- }
+ View<TraingEnddataPresenter>::OnSetUpView();
+ Draw();
+}
- void TraingEnddataView::OnStop()
- {
- View<TraingEnddataPresenter>::OnStop();
- RootView::GetInstance()->ClearOnKeyActListener();
- if (container_ != nullptr)
- {
- container_->RemoveAll();
- delete container_;
- container_ = nullptr;
- }
- return;
- }
+void TraingEnddataView::OnTearDownView() {
+ View<TraingEnddataPresenter>::OnTearDownView();
+ return;
+}
+void TraingEnddataView::OnStop() {
+ View<TraingEnddataPresenter>::OnStop();
+ RootView::GetInstance()->ClearOnKeyActListener();
+ if (container_ != nullptr) {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
+ return;
}
+
+} // namespace OHOS