#include <string> // 包含字符串处理库,用于使用 std::to_string
/*测试打印函数*/
-#define PRINT_LINE_INFO() printf("File: %s, Line: %d\r\n", __FILE__, __LINE__)
-#define PRINT_FUNCTION_LINE() printf("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__)
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 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};
TraingEnddataView::TraingEnddataView()
return g_pTraingEnddataView;
}
- /* InitView:初始化界面*/
- void TraingEnddataView ::InitView()
+ // 初始化图像
+ void TraingEnddataView ::InitializeImageViews()
{
- // printf("TraingEnddataView::InitView()\r\n");
- if (container_ == nullptr)
- {
- container_ = new UIViewGroup();
- container_->SetPosition(0, 0, 466, 466);
- container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
- }
+ // 初始化主图标
+ InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image", WALKING_54_IMAGE);
- // Add ScrollView to App
- if (scrollView_ == nullptr)
- {
- scrollView_ = new UIScrollView();
- }
- scrollView_->SetPosition(0, 0); // widget's left position and top position
- scrollView_->Resize(466, 466); // widget's width and height
- scrollView_->SetViewId("scrollView1"); // Set style
- scrollView_->SetReboundSize(100);
- scrollView_->SetScrollBlankSize(35);
- scrollView_->SetHorizontalScrollState(false);
- container_->Add(scrollView_);
- scrollView_->SetVisible(true);
+ 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
+ InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image6", LINE_IMAGE); // imageLine6
+ InitImageView(imageLine7, 97, baseY + 5 * lineHeight, 80, 20, "image7", LINE_IMAGE); // imageLine7
- // 初始化image
- InitImageView(imageIcon, 80, 132, 54, 80, "image5", WALKING_54_IMAGE);
- InitImageView(imageLine2, 97, 214, 80, 20, "image6", LINE_IMAGE);
- InitImageView(imageLine3, 97, 344, 80, 20, "image8", LINE_IMAGE);
- InitImageView(imageLine4, 97, 474, 80, 20, "image9", LINE_IMAGE);
- InitImageView(imageLine5, 97, 604, 80, 20, "image10", LINE_IMAGE);
- InitImageView(imageLine6, 97, 734, 80, 20, "image11", LINE_IMAGE);
- InitImageView(imageLine7, 97, 864, 80, 20, "image12", LINE_IMAGE);
scrollView_->Add(imageLine2);
scrollView_->Add(imageLine3);
scrollView_->Add(imageLine4);
scrollView_->Add(imageLine6);
scrollView_->Add(imageLine7);
scrollView_->Add(imageIcon);
-
- // 初始化Lable
- // 初始化标签
+ }
+ void TraingEnddataView ::InitializeLabels(void)
+ {
+ /*title and sport*/
InitLabelExt(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);
- InitLabelExt(labelutag, 146, 252, 240, 40, "label8", STR_GOAL_ACCOMPLISHMENT_DEGREE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(labelutime, 146, 382, 240, 40, "label9", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(labelumile, 146, 512, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(labeluheart, 146, 642, 240, 40, "label11", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(labelusteps, 146, 772, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(labelustrong, 146, 902, 240, 40, "label2", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(labelnote, 80, 1024, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ // 初始化单位Label
+ InitLabelExt(labelutag, 146, startY_Unit + labelInterval * 0, 240, 40, "label8", STR_GOAL_ACCOMPLISHMENT_DEGREE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labelutime, 146, startY_Unit + labelInterval * 1, 240, 40, "label9", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labelumile, 146, startY_Unit + labelInterval * 2, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labeluheart, 146, startY_Unit + labelInterval * 3, 240, 40, "label11", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labelusteps, 146, startY_Unit + labelInterval * 4, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labelustrong, 146, startY_Unit + labelInterval * 5, 240, 40, "label2", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME, 30);
// 设置文本颜色
- labelduration->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- labelutag->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- labelutime->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- labelumile->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- labeluheart->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- labelustrong->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- labelnote->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
-
- InitLabel(labeltag, 146, 292, 240, 60, "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labeltag->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
- InitLabel(labeltime, 146, 418, 240, 60, "label14", "05:45:46", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labeltime->SetTextColor(Color::GetColorFromRGBA(0xff, 0x8a, 0x36, 0xff));
- InitLabel(labelmile, 146, 548, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelmile->SetTextColor(Color::GetColorFromRGBA(0x36, 0x4a, 0xff, 0xff));
- InitLabel(labelheart, 146, 678, 240, 60, "label16", "144", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelheart->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));
- InitLabel(labelsteps, 146, 808, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelsteps->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
- InitLabel(labelstrong, 146, 938, 240, 60, "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
- labelstrong->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));
+ labelduration->SetTextColor(textColor);
+ labelutag->SetTextColor(textColor);
+ labelutime->SetTextColor(textColor);
+ labelumile->SetTextColor(textColor);
+ labeluheart->SetTextColor(textColor);
+ labelusteps->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", "05:45:46", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labeltime->SetTextColor(Color::Orange());
+ InitLabel(labelmile, 146, startY_Value + 2 * labelInterval, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelmile->SetTextColor(Color::Blue());
+ InitLabel(labelheart, 146, startY_Value + 3 * labelInterval, 240, 60, "label16", "144", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelheart->SetTextColor(Color::Yellow());
+ InitLabel(labelsteps, 146, startY_Value + 4 * labelInterval, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelsteps->SetTextColor(Color::Green());
+ InitLabel(labelstrong, 146, startY_Value + 5 * labelInterval, 240, 60, "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ labelstrong->SetTextColor(Color::Orange());
scrollView_->Add(labeltype);
scrollView_->Add(labelsport);
scrollView_->Add(labelmile);
scrollView_->Add(labelheart);
scrollView_->Add(labelstrong);
- scrollView_->Add(labelnote);
scrollView_->Add(labelsteps);
+ }
+ /* InitView:初始化界面*/
+ void TraingEnddataView ::InitView()
+ {
- // 初始化button
- InitButtonExt(buttonexit, 42, 1111, 380, 100, BUTTONBACK, STR_CLOSE, 30);
- buttonexit->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingEnddataPresenter::GetInstance()));
- scrollView_->Add(buttonexit);
+ scrollView_ = new UIScrollView();
+ scrollView_->SetPosition(0, 0);
+ scrollView_->Resize(466, 466);
+ scrollView_->SetViewId("scrollView");
+ scrollView_->SetReboundSize(100);
+ scrollView_->SetScrollBlankSize(35);
+ scrollView_->SetHorizontalScrollState(false);
+ scrollView_->SetVisible(true);
+
+ /*初始化线条*/
+ InitializeImageViews();
+
+ /*初始化label*/
+ InitializeLabels();
- // printf("TraingEnddataView::InitView() is end\r\n");
+ BonusdataView(); // 配置额外数据
+
+ ExitView(); // 配置退出组件
+
+ container_->Add(scrollView_);
}
+ // 增加额外配置
+ void TraingEnddataView::BonusdataView()
+ {
+ if (!TraingModel::GetInstance()->GetIsSpecial())
+ return;
- /* DeInit:删除组件 */
- void TraingEnddataView::DeInit()
+ /*线条*/
+ 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*/
+ InitLabelExt(labeluavpace, 146, startY_Unit + labelInterval * 6, 240, 40, "label2", STR_AVG_PAVE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labelufreq, 146, startY_Unit + labelInterval * 7, 240, 40, "label2", STR_STEP_FRE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(labelustride, 146, startY_Unit + labelInterval * 8, 240, 40, "label2", STR_STR_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);
+ }
+ // 配置退出相关位置
+ void TraingEnddataView::ExitView()
{
- scrollView_->RemoveAll();
- container_->RemoveAll();
- /*单位label*/
- if (labeltype != nullptr)
- {
- delete labeltype;
- labeltype = nullptr;
- }
- if (labelsport != nullptr)
- {
- delete labelsport;
- labelsport = nullptr;
- }
- if (labelutime != nullptr)
- {
- delete labelutime;
- labelutime = nullptr;
- }
- if (labelutag != nullptr)
- {
- delete labelutag;
- labelutag = nullptr;
- }
- if (labelusteps != nullptr)
- {
- delete labelusteps;
- labelusteps = nullptr;
- }
- /*数据label*/
- if (labelumile != nullptr)
- {
- delete labelumile;
- labelumile = nullptr;
- }
- if (labeluheart != nullptr)
- {
- delete labeluheart;
- labeluheart = nullptr;
- }
- if (labelustrong != nullptr)
- {
- delete labelustrong;
- labelustrong = nullptr;
- }
- if (labelnote != nullptr)
- {
- delete labelnote;
- labelnote = nullptr;
- }
- if (labelduration != nullptr)
- {
- delete labelduration;
- labelduration = nullptr;
- }
- if (labeltag != nullptr)
- {
- delete labeltag;
- labeltag = nullptr;
- }
- if (labeltime != nullptr)
+ if (TraingModel::GetInstance()->GetIsSpecial())
{
- delete labeltime;
- labeltime = nullptr;
+ // 初始化退出(最后 要根据前方配置设置位置)
+ InitLabelExt(exitLabel, 80, 1404, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitButtonExt(exitButton, 42, 1484, 380, 100, BUTTONBACK, STR_CLOSE, 30);
}
- if (labelmile != nullptr)
- {
- delete labelmile;
- labelmile = nullptr;
- }
- if (labelheart != nullptr)
- {
- delete labelheart;
- labelheart = nullptr;
- }
- if (labelstrong != nullptr)
- {
- delete labelstrong;
- labelstrong = nullptr;
- }
- if (labelsteps != nullptr)
- {
- delete labelsteps;
- labelsteps = nullptr;
- }
- /*按键*/
- if (buttonexit != nullptr)
- {
- delete buttonexit;
- buttonexit = nullptr;
- }
- /*图片*/
- if (imageIcon != nullptr)
- {
- delete imageIcon;
- imageIcon = nullptr;
- }
- if (imageLine2 != nullptr)
- {
- delete imageLine2;
- imageLine2 = nullptr;
- }
- if (imageLine3 != nullptr)
- {
- delete imageLine3;
- imageLine3 = nullptr;
- }
- if (imageLine4 != nullptr)
- {
- delete imageLine4;
- imageLine4 = nullptr;
- }
- if (imageLine5 != nullptr)
- {
- delete imageLine5;
- imageLine5 = nullptr;
- }
- if (imageLine6 != nullptr)
- {
- delete imageLine6;
- imageLine6 = nullptr;
- }
- if (imageLine7 != nullptr)
- {
- delete imageLine7;
- imageLine7 = nullptr;
- }
-
- if (scrollView_ != nullptr)
+ else
{
- delete scrollView_;
- scrollView_ = nullptr;
+ InitLabelExt(exitLabel, 80, 1024, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitButtonExt(exitButton, 42, 1111, 380, 100, BUTTONBACK, STR_CLOSE, 30);
}
+ exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ scrollView_->Add(exitLabel);
+ exitButton->SetOnClickListener(presenter_);
+ scrollView_->Add(exitButton);
+ }
+ /* DeInit:删除组件 */
+ void TraingEnddataView::DeInit()
+ {
+ scrollView_->RemoveAll();
- delete container_;
- container_ = nullptr;
+ /*单位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 (enddata == nullptr)
{
- printf("Enddata is nullptr. Exiting InitData()...\r\n");
+ 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())
{
- printf("imageIcon %s\r\n", imageStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "imageIcon %s\r\n", imageStr.c_str());
imageIcon->SetSrc(imageStr.c_str());
}
else
{
- printf("Failed to get image string. Skipping imageIcon update.\r\n");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Failed to get image string. Skipping imageIcon update.\r\n");
}
// 训练类
UIResourceTextId typeId = TraingModel::GetInstance()->GetSportTypeId(enddata->sportType);
labeltype->SetTextId(typeId);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport Type ID set: %d\r\n", typeId); // 打印运动类型ID
// 运动项目
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;
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) + "%";
labeltag->SetText(tagStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Goal degree set: %s\r\n", tagStr.c_str()); // 打印运动目标
}
else
{
- printf("Enddata tag is null. Skipping labeltag update.\r\n");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Enddata tag is null. Skipping labeltag update.\r\n");
}
// 运动时长
- printf("Duration of the sport: %d\r\n", enddata->duration);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration of the sport: %d\r\n", enddata->duration);
std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
-
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);
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);
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);
labelsteps->SetText(stepStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Steps set: %s\r\n", stepStr.c_str()); // 打印步数
// 训练强度
UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
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);
+ 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);
+ labelfreq->SetText(freqStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Cadence set: %s\r\n", freqStr.c_str()); // 打印步频
- printf("TraingEnddataView data initialization complete.\r\n");
+ // 步幅
+ std::string strideStr = std::to_string(enddata->std);
+ 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");
}
// 设置按键监听
static void SetKeyActListener()
}
void TraingEnddataView::OnStart()
{
+ View<TraingEnddataPresenter>::OnStart();
+
container_ = new UIViewGroup();
- if (container_ == nullptr)
- {
- return;
- }
- container_->SetPosition(0, 0);
- container_->SetWidth(Screen::GetInstance().GetWidth());
- container_->SetHeight(Screen::GetInstance().GetHeight());
+ container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- // 创建 draglistener 实例并设置为拖动监听器
- UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingEnddataPresenter::GetInstance());
- if (draglistener == nullptr)
- {
- return;
- }
- container_->SetOnDragListener(draglistener);
+ PreLoad();
+ InitData(); // 刷新数据
+
+ RootView::GetInstance()->Add(container_);
+ SetContainerView(container_);
- container_->SetTouchable(true);
container_->SetDraggable(true);
+ container_->SetTouchable(true);
+ container_->SetOnDragListener(presenter_);
- PreLoad();
- InitData();
- RootView::GetInstance()->Add(container_);
SetKeyActListener();
}
void TraingEnddataView::OnTearDownView()
{
-
View<TraingEnddataPresenter>::OnTearDownView();
return;
}
void TraingEnddataView::OnStop()
{
View<TraingEnddataPresenter>::OnStop();
-
-
RootView::GetInstance()->ClearOnKeyActListener();
- //FocusManager::GetInstance()->ClearFocus();
- RootView::GetInstance()->RemoveAll();
+ if (container_ != nullptr)
+ {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
return;
}
}
if (request->msgId == TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE)
{
- cywee_activity_result_extre_info_t *cyweeInfo = new cywee_activity_result_extre_info_t();
- int rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_extre_info_t), (cywee_activity_result_extre_info_t *)request->data, request->len);
+ cywee_activity_result_extre_info_t *cyweeInfo_ext = new cywee_activity_result_extre_info_t();
+ int rets = memcpy_s(cyweeInfo_ext, sizeof(cywee_activity_result_extre_info_t), (cywee_activity_result_extre_info_t *)request->data, request->len);
if (rets != EOK)
{
- delete cyweeInfo; // 处理内存分配失败的情况
- cyweeInfo = NULL;
+ delete cyweeInfo_ext; // 处理内存分配失败的情况
+ cyweeInfo_ext = NULL;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_extre_info_t fail ret = %d", rets);
return;
}
- TraingModel::GetInstance()->AnalysisExtraData(cyweeInfo);
- delete cyweeInfo; // 释放内存
+ TraingModel::GetInstance()->AnalysisExtraData(cyweeInfo_ext);
+ delete cyweeInfo_ext; // 释放内存
}
if (request->msgId == TOPIC_EVENT_BLE_TRAINING)
{
std::string TraingModel::GetSportIcon(Exercisetype sporttype)
{
int index = static_cast<int>(sporttype);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " GetSportIcon index %d", index);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " GetSportIcon index %d", index);
return sportIcons[static_cast<int>(sporttype)];
}
/*设置运动Id*/
/*获取运动Id*/
UIResourceTextId TraingModel::GetSportEvent()
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " GetSportEvent %d", sportId_);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " GetSportEvent %d", sportId_);
return sportId_;
}
/*获取运动项目*/
ExerciseClass TraingModel::GetSportId()
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " GetSportType %d", sportId_);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " GetSportType %d", sportId_);
// 设置结构体里面的运动类型
sportdata->sportId = sportId_;
sportdata->sportType = sportType_;
return ExerciseClass::FREE_TRAINING;
}
}
+ /*判断是否为特殊运动*/
+ void TraingModel::IsSpecialSport(UIResourceTextId sportId_)
+ {
+ switch (sportId_)
+ {
+ case UIResourceTextId::STR_EXERCISE_OUTDOORRUNNING: // 室外跑步 室外走路
+ case UIResourceTextId::STR_EXERCISE_OUTDOORWALKING:
+ case UIResourceTextId::STR_EXERCISE_INDOORRUNNING: // 室内跑步 室内走路
+ case UIResourceTextId::STR_EXERCISE_INDOORWALKING:
+ case UIResourceTextId::STR_EXERCISE_TREADMILL: // 跑步机
+ case UIResourceTextId::STR_EXERCISE_STROLLMACHINE:
+ isspecialsport_ = true;
+ break;
+ default: // 自由训练
+ isspecialsport_ = false;
+ break;
+ }
+ }
+
+ bool TraingModel::GetIsSpecial()
+ {
+ return isspecialsport_;
+ }
+
/*设置运动状态*/
void TraingModel::SetSportState(ExerciseState state)
{
// 不同的运动类型解析不同的数据
// 通用数据
sportdata->steps = cyweeInfo->steps;
- sportdata->distance = cyweeInfo->distance; // 只赋值一次
+ sportdata->distance = cyweeInfo->distance;
sportdata->calories = cyweeInfo->calories;
+
sportdata->cdc = cyweeInfo->step_frequency;
sportdata->std = cyweeInfo->step_length;
sportdata->pc = cyweeInfo->pace;
// 训练目标检查
if (sportdata->tag && !Gettagstuats)
{
- int currentdata = GetSportTagData();
- if (currentdata >= sportdata->tag)
+ sportdata->goaldegree = GetGoaldegree();
+
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "sportdata->goaldegree %d", sportdata->goaldegree);
+ if (sportdata->goaldegree == 100)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentdata%d", currentdata);
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentdata%d", currentdata);
uapi_set_screen_on_api(); // 亮屏检测
custom_VibratorFunc(VibratorType::VIBRATOR_TYPE_TWO);
TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, true);
sportdata->spc = data->spc;
sportdata->std = data->std;
sportdata->cdc = data->cdc;
+ printf_data(data);
+ IsSpecialSport(sportdata->sportId); // 配置训练特殊性
}
- printf_data(data);
}
/*获取训练卡路里*/
int TraingModel::GetCal()
sportdata->starttime = time;
sportdata->sportType = sportType_; // 训练类型
sportdata->sportId = sportId_;
+ IsSpecialSport(sportdata->sportId); // 配置运动特殊性状态
if (sportTag_) // 有值才设置[训练目标]
{
#else
if (MomentumFlag)
{
- GetGoaldegree(); // 设置目标完成度
+ // GetGoaldegree(); // 设置目标完成度
if (SaveSportData())
{
TraingRecordModel::GetInstance().SetJsonStatus(true);
/* 设置训练强度 */
void TraingModel::SetIntensity(int heart)
{
+ // sportdata->intensity = active_state;
+#if 1
/*
训练强度
220-年龄=最高心率
// 将 heart 转换为 double 以避免整数除法
double heartRateAsDouble = static_cast<double>(heart);
double intensityPercentage = (heartRateAsDouble / (double)maxHeartRate) * 100;
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "intensityPercentage is %d", intensityPercentage);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "heart: %d, maxHeartRate: %d, intensityPercentage: %.2f", heart, maxHeartRate, intensityPercentage);
if (intensityPercentage < LOW_INTENSITY_THRESHOLD)
{
// 超高强度
sportdata->intensity = VERY_HIGH_INTENSITY;
}
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "maxHeartRate: %d, heartRate: %d, intensityPercentage: %.2f", maxHeartRate, heart, intensityPercentage);
+#endif
}
/*获取训练强度STR*/
UIResourceTextId TraingModel::GetIntensity()
}
int currentdata = GetSportTagData();
float completeness = (static_cast<float>(currentdata) / sportdata->tag) * 100;
- sportdata->goaldegree = round(completeness); // 四舍五入
- return sportdata->goaldegree;
+ return round(completeness); // 四舍五入
}
/*
uint32_t src; // 训练来源:0 - 手表开启的训练,1 - APP开启的训练
if (ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO))
{
freq = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "freq is %d\r\n", freq); // 获取实时数据频率
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "freq is %d\r\n", freq); // 获取实时数据频率
if (sportdata->duration % freq == 0)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SendLiveData is OK\r\n");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is OK\r\n");
SendLiveData(); // 发送实时数据
}
}
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "duration:[%d] g_motionTimes[%d]\r\n", sportdata->duration, g_motionTimes);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "duration:[%d] g_motionTimes[%d]\r\n", sportdata->duration, g_motionTimes);
}
int hour = g_motionTimes / NUM_TIME_HOUR;
return;
}
gTraingCardPresenter->ModifiesTime();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingTimerCallback\r\n");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingTimerCallback\r\n");
}
/* 开启定时器 */
{
if (g_startCounting != NULL)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingModel::TraingTimer already exists!!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::TraingTimer already exists!!");
return;
}
g_startCounting = osTimerNew((osTimerFunc_t)TraingTimerCallback, osTimerPeriodic, NULL, NULL);
cJSON_AddNumberToObject(sportData, "avgHeartRate", data->avgheart); // 训练平均心率
cJSON_AddNumberToObject(sportData, "steps", data->steps); // 训练步数
cJSON_AddNumberToObject(sportData, "intensity", data->intensity); // 训练强度
+ cJSON_AddNumberToObject(sportData, "apc", data->apc); // 训练平均配速
+ cJSON_AddNumberToObject(sportData, "cdc", data->cdc); // 训练步频
+ cJSON_AddNumberToObject(sportData, "std", data->std); // 训练步幅
// 添加运动数据节点到数组并限制数量
cJSON_AddItemToArray(dataArray, sportData);
sportData.steps = cJSON_GetObjectItem(item, "steps")->valueint;
sportData.intensity = cJSON_GetObjectItem(item, "intensity")->valueint;
+ sportData.apc = cJSON_GetObjectItem(item, "apc")->valueint;
+ sportData.cdc = cJSON_GetObjectItem(item, "cdc")->valueint;
+ sportData.std = cJSON_GetObjectItem(item, "std")->valueint;
+
sportDataVector.push_back(sportData);
}