2 * @Date: 2024-04-15 10:55:58
3 * @LastEditors: Caisking 3449750381@qq.com
4 * @LastEditTime: 2024-08-02 09:35:58
6 * /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDataView.cpp
9 #include "traing/training_card/include/TrainingDataView.h"
10 #include "traing/training_card/include/TraingCardView.h"
13 #include "common/image_cache_manager.h"
14 #include "components/ui_button.h"
15 #include "components/ui_label_ext.h"
16 #include "custom_runtime.h"
17 #include "traing/Training_UiConfig.h"
18 #include "traing/include/TraingModel.h"
19 #include "ui_resource_image.h"
20 #include "ui_resource_string.h"
21 #include "uicomponents/UIComponents.h"
22 #include <ui_scroll_view.h>
26 static TrainingDataView *g_pTrainingDataView{nullptr};
28 TrainingDataView::TrainingDataView() {
29 SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
30 g_pTrainingDataView = this;
33 TrainingDataView::~TrainingDataView() {
35 g_pTrainingDataView = nullptr;
38 TrainingDataView *TrainingDataView::GetInstance() {
39 return g_pTrainingDataView;
43 bool TrainingDataView ::InitPage() {
45 InitImageView(image_progress, 13, 13, 440, 386, "image1", PROGRESS_IMAGE);
46 InitImageView(image_heart, 88, 295, 50, 50, "image2", SPORT_HEARTRATE_IMAGE);
47 InitImageView(image_iconup, 225, 396, 16, 10, "image4", INCO_UP_IMAGE);
48 InitImageView(image_iconpoint, 193, 421, 80, 20, "image5", DATA_POINT_IMAGE);
55 circleProgress = new UICircleProgress();
56 circleProgress->SetPosition(0, 0);
57 circleProgress->Resize(466, 466);
58 circleProgress->SetViewId("circleProgress");
59 circleProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
60 circleProgress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
61 circleProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 12);
62 circleProgress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6);
63 circleProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);
64 circleProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff4fC34C);
65 circleProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 10);
66 circleProgress->SetCenterPosition(235, 235);
67 circleProgress->SetRadius(215);
68 circleProgress->SetStartAngle(215);
69 circleProgress->SetEndAngle(505);
70 circleProgress->SetCapType(CAP_ROUND);
71 circleProgress->SetValue(0);
75 UIResourceTextId sport_id = TraingModel::GetInstance()->GetSportEvent();
76 InitLabelExt(sportlabel, 83, 120, 300, 35, "label2", sport_id,
77 DEFAULT_VECTOR_FONT_FILENAME, 30);
78 sportlabel->SetTextColor(Color::Gray());
79 //数字统一使用DEFAULT_VECTOR_FONT_FILENAME_EN
80 InitLabel(curtimelabel, 155, 60, 150, 50, "label1", "23:54",
81 DEFAULT_VECTOR_FONT_FILENAME_EN, 40);
82 InitLabel(timerlabel, 0, 163, 466, 150, "label3", "00:00:00",
83 DEFAULT_VECTOR_FONT_FILENAME_EN, 80);
84 InitLabel(heartlabel, 85, 284, 230, 80, "label4", "--",
85 DEFAULT_VECTOR_FONT_FILENAME_EN, 60);
86 InitLabel(ubpmlabel, 218, 284, 230, 80, "label5", "bpm",
87 DEFAULT_VECTOR_FONT_FILENAME, 60);
88 ubpmlabel->SetTextColor(Color::Gray());
99 InitButton(buttonNote, 275, 350, 26, 26, BUTTONNOTE);
100 // Set additional property
101 buttonNote->SetImageSrc(NOTE_IMAGE, NOTE_IMAGE);
102 buttonNote->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));
106 // SetCoverable(true);
110 void TrainingDataView::DeInit() {
112 if (curtimelabel != nullptr) {
114 curtimelabel = nullptr;
116 if (sportlabel != nullptr) {
118 sportlabel = nullptr;
120 if (timerlabel != nullptr) {
122 timerlabel = nullptr;
124 if (heartlabel != nullptr) {
126 heartlabel = nullptr;
128 if (ubpmlabel != nullptr) {
134 if (buttonNote != nullptr) {
136 buttonNote = nullptr;
140 if (image_iconup != nullptr) {
142 image_iconup = nullptr;
144 if (image_iconpoint != nullptr) {
145 delete image_iconpoint;
146 image_iconpoint = nullptr;
148 if (image_heart != nullptr) {
150 image_heart = nullptr;
152 if (image_progress != nullptr) {
153 delete image_progress;
154 image_progress = nullptr;
158 if (circleProgress != nullptr) {
159 delete circleProgress;
160 circleProgress = nullptr;
164 UILabelExt *TrainingDataView::GetTimeLabel() { return timerlabel; }
165 UILabelExt *TrainingDataView::GetHeartLabel() { return heartlabel; }
166 UICircleProgress *TrainingDataView::GetProgress() { return circleProgress; }
168 void TrainingDataView::UpdataTime() {
169 if (curtimelabel == nullptr) // 防止刷新空组件
176 localtime_r(&seconds, &pTM);
179 int hour = pTM.tm_hour;
181 if (uapi_dev_runtime_get_time_hour_show_model() == 12) {
182 if (pTM.tm_hour > 12)
183 hour = pTM.tm_hour - 12;
186 int minute = pTM.tm_min;
189 std::string stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" +
190 (minute < 10 ? "0" : "") + std::to_string(minute);
191 curtimelabel->SetText(stringtime.c_str());
194 bool TrainingDataView::InitView(void *caller) {
195 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingDataView InitView %p",
197 if (InitPage() == false) {
198 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingDataView::InitPage fail");