--- /dev/null
+#include "bloodpressure/include/BPMainPresenter.h"
+#include "bloodpressure/include/BPCalPosReqView.h"
+#include "wearable_log.h"
+
+namespace OHOS
+{
+#define BPCALPOSREQVIEW_LABEL "校准提醒"
+#define BPCALPOSREQVIEW_LABEL_1 "1、建立血压模型需要进行两个轮次校准;"
+#define BPCALPOSREQVIEW_LABEL_2 "2、建议每个月都重新校准;"
+#define BPCALPOSREQVIEW_LABEL_3 "3、校准过程和实际血压测量请 使用同一只手;"
+#define BPCALPOSREQVIEW_LABEL_4 "4、若是高血压正在接受药物治疗的用户,请在服药前和服药后3-4小时,各进行校准一次。"
+#define BPCALPOSREQVIEW_LABEL_4 "4、若是高血压正在接受药物治疗的用户,请在服药前和服药后3-4小时,各进行校准一次。"
+#define BPCALPOSREQVIEW_LABEL_5 "校准姿势要求"
+#define BPCALPOSREQVIEW_LABEL_6 "请将手表佩戴在左手手腕,手表和手腕之间仅限一指距离贴紧佩戴手表,测量前建议至少休息五分钟以上,双脚平放无交叉,双手手背朝上,手臂平放在桌子上,测量过程中尽量保持静止,呼吸均匀平衡。"
+#define BPCALPOSREQVIEW_LABEL_7 "开始校准"
+#define BPCALPOSREQVIEW_LABEL_W 432 // 宽度
+#define BPCALPOSREQVIEW_LABEL_TEXT_SIZE 33 // 字体大小
+#define BPCALPOSREQVIEW_LABEL_LINE_HEIGHT 48 // 字体大小
+#define BPCALPOSREQVIEW_LABEL_GAP 48 // 间隔
+#define BPCALPOSREQVIEW_IMAGE_PATH "/user/res/BPCalibration/posture.bin"
+
+ static BPCalPosReqView *g_pBPCalPosReqView{nullptr};
+ BPCalPosReqView::BPCalPosReqView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPCalPosReqView::BPCalPosReqView");
+ g_pBPCalPosReqView = this;
+ }
+
+ BPCalPosReqView::~BPCalPosReqView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPCalPosReqView::~BPCalPosReqView");
+ DeInit();
+ g_pBPCalPosReqView = nullptr;
+ }
+
+ BPCalPosReqView *BPCalPosReqView::GetInstance()
+ {
+ return g_pBPCalPosReqView;
+ }
+
+ void BPCalPosReqView::DeInit()
+ {
+ if (group)
+ {
+ group->RemoveAll();
+ delete group;
+ group = nullptr;
+ if (scrollview)
+ {
+ scrollview->RemoveAll();
+ delete scrollview;
+ scrollview = nullptr;
+
+ delete titleLabel;
+ titleLabel = nullptr;
+
+ for (int i = 0; i < 4; i++)
+ {
+ delete label[i];
+ label[i] = nullptr;
+ }
+
+ delete image;
+ image = nullptr;
+
+ delete label2;
+ label2 = nullptr;
+
+ delete label3;
+ label3 = nullptr;
+
+ delete startCalibrationButton;
+ startCalibrationButton = nullptr;
+
+ delete temp;
+ temp = nullptr;
+ }
+ }
+ }
+
+ bool BPCalPosReqView::InitLabelAndImage()
+ {
+ const char *str[] = {
+ BPCALPOSREQVIEW_LABEL_1,
+ BPCALPOSREQVIEW_LABEL_2,
+ BPCALPOSREQVIEW_LABEL_3,
+ BPCALPOSREQVIEW_LABEL_4,
+ };
+ for (int i = 0; i < (sizeof(str) / sizeof(str[0])); i++)
+ {
+ label[i] = new UILabelExt();
+ if (label[i] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "label[i] null!");
+ return false;
+ }
+ if (i == 0)
+ {
+ label[i]->SetPosition((HORIZONTAL_RESOLUTION - BPCALPOSREQVIEW_LABEL_W) / 2, 163, BPCALPOSREQVIEW_LABEL_W, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ }
+ else
+ {
+ int y = label[i - 1]->GetY() + label[i - 1]->GetHeight();
+ label[i]->SetPosition((HORIZONTAL_RESOLUTION - BPCALPOSREQVIEW_LABEL_W) / 2, y, BPCALPOSREQVIEW_LABEL_W, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "label[%d]->GetY() = %d", i, label[i]->GetY());
+ label[i]->SetStyle(STYLE_TEXT_FONT, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ label[i]->SetStyle(STYLE_LINE_HEIGHT, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ label[i]->SetText(str[i]);
+ label[i]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+ label[i]->SetRollSpeed(23);
+ label[i]->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
+ label[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ scrollview->Add(label[i]);
+ }
+ if (label2 == nullptr)
+ {
+ label2 = new UILabelExt();
+ if (label2 == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "label2 null!");
+ return false;
+ }
+ }
+ uint8_t i = (sizeof(str) / sizeof(str[0])) - 1;
+ label2->SetPosition((HORIZONTAL_RESOLUTION - 300) / 2, label[i]->GetY() + label[i]->GetHeight() + BPCALPOSREQVIEW_LABEL_GAP, 300, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ label2->SetStyle(STYLE_TEXT_FONT, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ label2->SetStyle(STYLE_LINE_HEIGHT, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ label2->SetText(BPCALPOSREQVIEW_LABEL_5);
+ label2->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+ label2->SetRollSpeed(23);
+ label2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ scrollview->Add(label2);
+ /* -------------------------------------------------------------------------- */
+ if (image == nullptr)
+ {
+ image = new UIImageView();
+ if (image == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image null!");
+ return false;
+ }
+ }
+ image->SetPosition((HORIZONTAL_RESOLUTION - 300) / 2, label2->GetY() + label2->GetHeight(), 300, 389);
+ image->SetSrc(BPCALPOSREQVIEW_IMAGE_PATH);
+ scrollview->Add(image);
+ /* -------------------------------------------------------------------------- */
+ if (label3 == nullptr)
+ {
+ label3 = new UILabelExt();
+ if (label3 == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "label3 null!");
+ return false;
+ }
+ }
+ label3->SetPosition((HORIZONTAL_RESOLUTION - BPCALPOSREQVIEW_LABEL_W) / 2, image->GetY() + image->GetHeight() + BPCALPOSREQVIEW_LABEL_GAP, BPCALPOSREQVIEW_LABEL_W, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ label3->SetStyle(STYLE_TEXT_FONT, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ label3->SetStyle(STYLE_LINE_HEIGHT, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ label3->SetText(BPCALPOSREQVIEW_LABEL_6);
+ label3->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+ label3->SetRollSpeed(23);
+ label3->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
+ label3->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ scrollview->Add(label3);
+ return true;
+ }
+
+ UIViewGroup *BPCalPosReqView::InitBPCalPosReqView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPCalPosReqView::InitBPCalPosReqView start");
+ if (group == nullptr)
+ {
+ group = new UIViewGroup();
+ if (group == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group null!");
+ return nullptr;
+ }
+ }
+ group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ group->SetTouchable(true);
+ group->SetDraggable(true);
+ UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::BPMainPresenter::GetInstance();
+ group->SetOnDragListener(dragListener);
+ if (scrollview == nullptr)
+ {
+ scrollview = new UIScrollView();
+ if (scrollview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollview null!");
+ return nullptr;
+ }
+ }
+ scrollview->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ scrollview->SetHorizontalScrollState(false);
+ scrollview->SetThrowDrag(true);
+ scrollview->SetMaxScrollDistance(1000);
+ scrollview->SetScrollBlankSize(30);
+ scrollview->SetReboundSize(30);
+ group->Add(scrollview);
+ if (titleLabel == nullptr)
+ {
+ titleLabel = new UILabelExt();
+ if (titleLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel null!");
+ return nullptr;
+ }
+ }
+ titleLabel->SetPosition((HORIZONTAL_RESOLUTION - 300) / 2, 67, 300, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ titleLabel->SetStyle(STYLE_TEXT_FONT, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ titleLabel->SetStyle(STYLE_LINE_HEIGHT, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ titleLabel->SetText(BPCALPOSREQVIEW_LABEL);
+ titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+ titleLabel->SetRollSpeed(23);
+ titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ scrollview->Add(titleLabel);
+ if (!InitLabelAndImage())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLabel error!");
+ return nullptr;
+ }
+ if (startCalibrationButton == nullptr)
+ {
+ startCalibrationButton = new UILabelButtonExt();
+ if (startCalibrationButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startCalibrationButton null!");
+ return nullptr;
+ }
+ }
+ startCalibrationButton->SetPosition((HORIZONTAL_RESOLUTION - 220) / 2, label3->GetY() + label3->GetHeight() + BPCALPOSREQVIEW_LABEL_GAP, 220, 70);
+ startCalibrationButton->SetStyle(STYLE_TEXT_FONT, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ startCalibrationButton->SetStyle(STYLE_LINE_HEIGHT, BPCALPOSREQVIEW_LABEL_LINE_HEIGHT);
+ startCalibrationButton->SetAlign(TEXT_ALIGNMENT_CENTER);
+ startCalibrationButton->SetText(BPCALPOSREQVIEW_LABEL_7);
+ startCalibrationButton->SetViewId(STARTCALIBRATIONBUTTON);
+ startCalibrationButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
+ startCalibrationButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BPCALPOSREQVIEW_LABEL_TEXT_SIZE);
+ startCalibrationButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+ startCalibrationButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::BPMainPresenter::GetInstance();
+ startCalibrationButton->SetOnClickListener(clickListener);
+ scrollview->Add(startCalibrationButton);
+ /* -------------------------------------------------------------------------- */
+ if (temp == nullptr)
+ {
+ temp = new UIImageView();
+ if (temp == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new temp fail!");
+ return nullptr;
+ }
+ }
+ temp->SetPosition(43, startCalibrationButton->GetY() + startCalibrationButton->GetHeight(), 380, BPCALPOSREQVIEW_LABEL_GAP);
+ temp->SetVisible(false);
+ scrollview->Add(temp);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPCalPosReqView::InitBPCalPosReqView end");
+
+ return group;
+ }
+}
\ No newline at end of file
{
return g_pBPMainView;
}
-
+
void BPMainView::DeInit()
{
if (p_BPCalibrationView)
delete g_pBPValueView;
g_pBPValueView = nullptr;
}
+ if (p_BPCalPosReqView)
+ {
+ delete p_BPCalPosReqView;
+ p_BPCalPosReqView = nullptr;
+ }
}
void BPMainView::OnStart()
// 切换到第一个界面
ChangeView(MAX_BPVIEW, BPCALIBRATIONVIEW);
- //ChangeView(MAX_BPVIEW,BPUNDERCALIBRATIONVIEW);
+ // ChangeView(MAX_BPVIEW,BPUNDERCALIBRATIONVIEW);
// 增加按键监听
RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::BPMainPresenter::GetInstance();
if (group[thisView] == nullptr)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodPressureView::ChangeUnderInitialCalibrationView");
- p_BPUnderCalibrationView = new BPUnderCalibrationView();
+ p_BPUnderCalibrationView = new BPUnderCalibrationView();
if (p_BPUnderCalibrationView == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodPressureView:: new scrollView[%d] fail", thisView);
return true;
}
- bool BPMainView::ChangeBPValueView(int16_t thisView)
+ bool BPMainView::ChangeBPValueView(int16_t thisView)
{
// 检查视图是否已初始化
if (group[thisView] == nullptr)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodPressureView::BPValueView");
- g_pBPValueView = new BPValueView();
+ g_pBPValueView = new BPValueView();
if (g_pBPValueView == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodPressureView:: new scrollView[%d] fail", thisView);
}
return true;
}
+ bool BPMainView::ChangeBPCalPosReqView(int16_t thisView)
+ {
+ // 检查视图是否已初始化
+ if (group[thisView] == nullptr)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodPressureView::ChangeUnderInitialCalibrationView");
+ p_BPCalPosReqView = new BPCalPosReqView();
+ if (p_BPCalPosReqView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodPressureView:: new scrollView[%d] fail", thisView);
+ return false;
+ }
+ // 初始化视图并添加到视图组
+ group[thisView] = p_BPCalPosReqView->InitBPCalPosReqView();
+ container_->Add(group[thisView]);
+ }
+ return true;
+ }
/**
* 视图映射结构体 - 将视图ID映射到对应的视图切换函数
{BPCALIBRATIONVIEW, &BPMainView::ChangeBPCalibrationView},
{BPUNDERCALIBRATIONVIEW, &BPMainView::ChangeBPUnderCalibrationView},
{BPVALUEVIEW, &BPMainView::ChangeBPValueView},
+ {BPCALPOSREQVIEW, &BPMainView::ChangeBPCalPosReqView},
};
bool BPMainView::ClickFunc(int16_t interface)