/*---------------------------------------------------------------------------- * Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved. * * Description: * * Author: huangshuyi * * Create: 2024-8 *--------------------------------------------------------------------------*/ #include "TjdUiFemaleHaveDataPage.h" #include "components/ui_label.h" #include "wearable_log.h" #include "common/image_cache_manager.h" #include #include #include "gfx_utils/image_info.h" #include "gfx_utils/heap_base.h" #include "TjdUiImageIds.h" #include "ui_label.h" #include "ui_label_ext.h" #include "components/ui_label_ext.h" #include "TjdUiMultiLanguageExt.h" #include "sys_config.h" #include "components/ui_view.h" #include "TjdUiMemManage.h" #include #include "sql_message.h" #include "TjdUiFemaleHealthView.h" using namespace OHOS; namespace TJD { #define ENABLE_PRINT_INFO 1 #if ENABLE_PRINT_INFO #define static_print_info(...) sys_ui_log_i(__VA_ARGS__) //一般信息打印宏控制 #define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) //警告信息打印一般常开 #define static_print_error(...) sys_ui_log_e(__VA_ARGS__) //错误信息打印一般常开 #define static_print_debug(...) sys_ui_log_d(__VA_ARGS__) #else #define static_print_info(...) #define static_print_warn(...) #define static_print_error(...) #define static_print_debug(...) #endif #define IMAGE_BIN_PATH TJD_IMAGE_PATH"img_female.bin" static const char* week_ch[] = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"}; static const char* week_en[] = {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}; static TjdUiFemaleHaveDataPage *g_pFemaleHaveData = nullptr; TjdUiFemaleHaveDataPage::TjdUiFemaleHaveDataPage() { //SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); g_pFemaleHaveData = this; } TjdUiFemaleHaveDataPage::~TjdUiFemaleHaveDataPage() { g_pFemaleHaveData = nullptr; } TjdUiFemaleHaveDataPage *TjdUiFemaleHaveDataPage::GetInstance(void) { return g_pFemaleHaveData; } bool TjdUiFemaleHaveDataPage::OnClick(UIView &view, const ClickEvent &event) { if (&view == labelDateTime) { TjdUiFemaleHealthView::GetInstance()->CalenderPage_->ShowView(); TjdUiFemaleHealthView::GetInstance()->HaveDataPage_->HideView(); } return true; } void TjdUiFemaleHaveDataPage::HideView(void) { static_print_debug("TjdUiFemaleHaveDataPage::HideView\n"); pageGroup->SetVisible(false); } void TjdUiFemaleHaveDataPage::ShowView(void) { static_print_debug("TjdUiFemaleHaveDataPage::ShowView\n"); pageGroup->SetVisible(true); } static UIView* healthDisplayViewArray[7]; UIViewGroup *TjdUiFemaleHaveDataPage::PageInit(void) { UIViewGroup *container = (UIViewGroup *)TjdUiFemaleHealthView::GetInstance()->GetContainer(); UIScrollView *scrollCont = new UIScrollView(); scrollCont->SetPosition(0, 0); scrollCont->SetWidth(Screen::GetInstance().GetWidth()); scrollCont->SetHeight(Screen::GetInstance().GetHeight()); scrollCont->SetScrollBlankSize(80); scrollCont->SetHorizontalScrollState(false); scrollCont->SetElastic(true); scrollCont->SetElasticTime(1000); scrollCont->SetReboundSize(100); scrollCont->SetThrowDrag(true); scrollCont->SetOnDragListener(this); scrollCont->SetTouchable(true); scrollCont->SetDraggable(true); container->Add(scrollCont); pageGroup = scrollCont; //UIViewGroup* pageGroup = new UIViewGroup(); // scrollCont->Add(pageGroup); // pageGroup->SetPosition(0, 0); // //pageGroup->SetAutoSize(true); // pageGroup->SetWidth(Screen::GetInstance().GetWidth()); // pageGroup->SetHeight(Screen::GetInstance().GetHeight()); UILabel *labelFemale = new UILabel(); labelFemale->SetFont(TJD_VECTOR_FONT_FILENAME, 30); pageGroup->Add(labelFemale); labelFemale->SetText("经期跟踪"); //labelFemale->SetPosition(0, 0, Screen::GetInstance().GetWidth(), 50); //labelFemale->SetFont(TJD_VECTOR_FONT_FILENAME, TJD_FONT_SIZE_28); labelFemale->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); labelFemale->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); labelFemale->LayoutLeftOfParent((pageGroup->GetWidth() - labelFemale->GetWidth()) / 2); labelFemale->LayoutTopOfParent(20); for (uint8_t i = 0; i < 7; i++) { UIView* healthDisplayView = new UIView(); pageGroup->Add(healthDisplayView); healthDisplayView->SetStyle(STYLE_BACKGROUND_COLOR, Color::White().full); healthDisplayView->SetStyle(STYLE_BORDER_RADIUS, 50); healthDisplayViewArray[i] = healthDisplayView; } healthDisplayViewArray[3]->SetWidth(100); healthDisplayViewArray[3]->SetHeight(160); healthDisplayViewArray[3]->LayoutTopOfParent(110); healthDisplayViewArray[3]->LayoutLeftOfParent((pageGroup->GetWidth() - healthDisplayViewArray[3]->GetWidth()) / 2); healthDisplayViewArray[3]->SetViewId("View3"); healthDisplayViewArray[2]->SetWidth(healthDisplayViewArray[3]->GetWidth()*0.7); healthDisplayViewArray[2]->SetHeight(healthDisplayViewArray[3]->GetHeight()*0.7); healthDisplayViewArray[2]->AlignVerCenterToSibling(healthDisplayViewArray[3]->GetViewId(), 0); healthDisplayViewArray[2]->LayoutLeftToSibling(healthDisplayViewArray[3]->GetViewId(), 5); healthDisplayViewArray[2]->SetViewId("View2"); healthDisplayViewArray[1]->SetWidth(healthDisplayViewArray[2]->GetWidth()*0.6); healthDisplayViewArray[1]->SetHeight(healthDisplayViewArray[2]->GetHeight()*0.6); healthDisplayViewArray[1]->AlignVerCenterToSibling(healthDisplayViewArray[2]->GetViewId(), 0); healthDisplayViewArray[1]->LayoutLeftToSibling(healthDisplayViewArray[2]->GetViewId(), 5); healthDisplayViewArray[1]->SetViewId("View1"); healthDisplayViewArray[0]->SetWidth(healthDisplayViewArray[1]->GetWidth()*0.4); healthDisplayViewArray[0]->SetHeight(healthDisplayViewArray[1]->GetHeight()*0.4); healthDisplayViewArray[0]->AlignVerCenterToSibling(healthDisplayViewArray[1]->GetViewId(), 0); healthDisplayViewArray[0]->LayoutLeftToSibling(healthDisplayViewArray[1]->GetViewId(), 5); healthDisplayViewArray[0]->SetViewId("View0"); healthDisplayViewArray[4]->SetWidth(healthDisplayViewArray[3]->GetWidth()*0.7); healthDisplayViewArray[4]->SetHeight(healthDisplayViewArray[3]->GetHeight()*0.7); healthDisplayViewArray[4]->AlignVerCenterToSibling(healthDisplayViewArray[3]->GetViewId(), 0); healthDisplayViewArray[4]->LayoutRightToSibling(healthDisplayViewArray[3]->GetViewId(), 5); healthDisplayViewArray[4]->SetViewId("View4"); healthDisplayViewArray[5]->SetWidth(healthDisplayViewArray[4]->GetWidth()*0.6); healthDisplayViewArray[5]->SetHeight(healthDisplayViewArray[4]->GetHeight()*0.6); healthDisplayViewArray[5]->AlignVerCenterToSibling(healthDisplayViewArray[4]->GetViewId(), 0); healthDisplayViewArray[5]->LayoutRightToSibling(healthDisplayViewArray[4]->GetViewId(), 5); healthDisplayViewArray[5]->SetViewId("View5"); healthDisplayViewArray[6]->SetWidth(healthDisplayViewArray[5]->GetWidth()*0.4); healthDisplayViewArray[6]->SetHeight(healthDisplayViewArray[5]->GetHeight()*0.4); healthDisplayViewArray[6]->AlignVerCenterToSibling(healthDisplayViewArray[5]->GetViewId(), 0); healthDisplayViewArray[6]->LayoutRightToSibling(healthDisplayViewArray[5]->GetViewId(), 5); healthDisplayViewArray[6]->SetViewId("View6"); ImageInfo* imgInfo; leftArrow = new UIImageView(); leftArrow->SetOnClickListener(this); leftArrow->SetTouchable(true); imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FEMALE_LEFT_ARROW, IMAGE_BIN_PATH); pageGroup->Add(leftArrow); leftArrow->SetPosition(68, 305); leftArrow->SetSrc(imgInfo); rightArrow = new UIImageView(); rightArrow->SetOnClickListener(this); rightArrow->SetTouchable(true); imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FEMALE_RIGHT_ARROW, IMAGE_BIN_PATH); pageGroup->Add(rightArrow); rightArrow->SetPosition(396, 305); rightArrow->SetSrc(imgInfo); labelDateTime = new UILabel(); labelDateTime->SetOnClickListener(this); labelDateTime->SetTouchable(true); labelDateTime->SetFont(TJD_VECTOR_FONT_FILENAME, 28); labelDateTime->SetStyle(STYLE_TEXT_COLOR, 0xFFFFFFFF); pageGroup->Add(labelDateTime); char buf[50]; uint8_t month = 11; uint8_t day = 24; uint8_t hour = 12; uint8_t minute = 0; uint8_t weekIndex = 0; const char* weekStr = week_ch[weekIndex]; uint8_t language = 0;//0:中文,1:英文 if (language) { weekStr = week_en[weekIndex]; } else { weekStr = week_ch[weekIndex]; } snprintf(buf, 50, "%s (%02d/%02d)", weekStr, month, day);//需要根据实际数据显示 labelDateTime->SetText(buf); labelDateTime->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); labelDateTime->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); labelDateTime->LayoutLeftOfParent((pageGroup->GetWidth() - labelDateTime->GetWidth()) / 2); labelDateTime->LayoutTopOfParent(300); ///////////经期显示//////////////// UIViewGroup* healthDataStatusGroup = new UIViewGroup(); pageGroup->Add(healthDataStatusGroup); healthDataStatusGroup->SetStyle(OHOS::STYLE_BACKGROUND_OPA, 0xff); healthDataStatusGroup->SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0xff262626); healthDataStatusGroup->SetStyle(OHOS::STYLE_BORDER_RADIUS, 55); healthDataStatusGroup->SetPosition(8, 359, Screen::GetInstance().GetWidth() - 16, 110); UILabel *labelStatusTag = new UILabel(); labelStatusTag->SetFont(TJD_VECTOR_FONT_FILENAME, 34); labelStatusTag->SetStyle(STYLE_TEXT_COLOR, 0xFFFFFFFF); healthDataStatusGroup->Add(labelStatusTag); labelStatusTag->SetText("状态"); labelStatusTag->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); labelStatusTag->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); labelStatusTag->LayoutLeftOfParent(42); labelStatusTag->LayoutTopOfParent((healthDataStatusGroup->GetHeight() - labelStatusTag->GetHeight()) / 2); labelStatusData = new UILabel(); labelStatusData->SetFont(TJD_VECTOR_FONT_FILENAME, 28); labelStatusData->SetStyle(STYLE_TEXT_COLOR, 0xFF959595); healthDataStatusGroup->Add(labelStatusData); labelStatusData->SetText("经期");//需要根据实际数据显示 labelStatusData->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); labelStatusData->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER); labelStatusData->LayoutRightOfParent(36); labelStatusData->LayoutTopOfParent((healthDataStatusGroup->GetHeight() - labelStatusData->GetHeight()) / 2); ///////////流量显示//////////////// UIViewGroup* healthDataFlowGroup = new UIViewGroup(); pageGroup->Add(healthDataFlowGroup); healthDataFlowGroup->SetStyle(OHOS::STYLE_BACKGROUND_OPA, 0xff); healthDataFlowGroup->SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0xff262626); healthDataFlowGroup->SetStyle(OHOS::STYLE_BORDER_RADIUS, 55); healthDataFlowGroup->SetPosition(8, 477, Screen::GetInstance().GetWidth() - 16, 110); UILabel *labelFlowTag = new UILabel(); labelFlowTag->SetFont(TJD_VECTOR_FONT_FILENAME, 34); labelFlowTag->SetStyle(STYLE_TEXT_COLOR, 0xFFFFFFFF); healthDataFlowGroup->Add(labelFlowTag); labelFlowTag->SetText("流量"); labelFlowTag->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); labelFlowTag->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); labelFlowTag->LayoutLeftOfParent(42); labelFlowTag->LayoutTopOfParent((healthDataFlowGroup->GetHeight() - labelFlowTag->GetHeight()) / 2); uint8_t level = 0;//流量等级,需要根据实际数据显示 for (uint8_t i = 0; i < 3; i++) { imageFlow[i] = new UIImageView(); healthDataFlowGroup->Add(imageFlow[i]); if (i < level) { imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FEMALE_FLOW_ON, IMAGE_BIN_PATH); } else { imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FEMALE_FLOW_OFF, IMAGE_BIN_PATH); } imageFlow[i]->SetPosition(68, 305); imageFlow[i]->SetSrc(imgInfo); imageFlow[i]->LayoutLeftOfParent(i * (20 + imageFlow[i]->GetWidth()) + 319); imageFlow[i]->LayoutTopOfParent((healthDataFlowGroup->GetHeight() - imageFlow[i]->GetHeight()) / 2); } ///////////痛经显示//////////////// UIViewGroup* healthDataAcheGroup = new UIViewGroup(); pageGroup->Add(healthDataAcheGroup); healthDataAcheGroup->SetStyle(OHOS::STYLE_BACKGROUND_OPA, 0xff); healthDataAcheGroup->SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0xff262626); healthDataAcheGroup->SetStyle(OHOS::STYLE_BORDER_RADIUS, 55); healthDataAcheGroup->SetPosition(8, 595, Screen::GetInstance().GetWidth() - 16, 110); UILabel *labelAcheTag = new UILabel(); labelAcheTag->SetFont(TJD_VECTOR_FONT_FILENAME, 34); labelAcheTag->SetStyle(STYLE_TEXT_COLOR, 0xFFFFFFFF); healthDataAcheGroup->Add(labelAcheTag); labelAcheTag->SetText("痛经"); labelAcheTag->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); labelAcheTag->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); labelAcheTag->LayoutLeftOfParent(42); labelAcheTag->LayoutTopOfParent((healthDataAcheGroup->GetHeight() - labelAcheTag->GetHeight()) / 2); level = 0;//痛经等级,需要根据实际数据显示 for (uint8_t i = 0; i < 3; i++) { imageAche[i] = new UIImageView(); healthDataAcheGroup->Add(imageAche[i]); if (i < level) { imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FEMALE_ACHE_ON, IMAGE_BIN_PATH); } else { imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FEMALE_ACHE_ON, IMAGE_BIN_PATH); } imageAche[i]->SetPosition(68, 305); imageAche[i]->SetSrc(imgInfo); imageAche[i]->LayoutLeftOfParent(i * (20 + imageAche[i]->GetWidth()) + 319); imageAche[i]->LayoutTopOfParent((healthDataAcheGroup->GetHeight() - imageAche[i]->GetHeight()) / 2); } ///////////同步时间显示////////////////////////////// labelSyncTime = new UILabel(); labelSyncTime->SetFont(TJD_VECTOR_FONT_FILENAME, 34); labelSyncTime->SetStyle(STYLE_TEXT_COLOR, 0xFFFFFFFF); pageGroup->Add(labelSyncTime); snprintf(buf, 50, "同步时间:%02d/%02d %02d:%02d", month, day, hour, minute);//需要根据实际数据显示 labelSyncTime->SetText(buf); labelSyncTime->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); labelSyncTime->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); labelSyncTime->LayoutLeftOfParent((pageGroup->GetWidth() - labelSyncTime->GetWidth()) / 2); labelSyncTime->LayoutTopOfParent(757); static_print_debug("TjdUiFemaleHaveDataPage::PageInit end"); return pageGroup; } }