+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved.\r
- * Description: UIStopWatchResource\r
- * Create: 2025-06-05\r
- */\r
-\r
-#ifndef UI_STOPWATCH_RESOURCE_H\r
-#define UI_STOPWATCH_RESOURCE_H\r
-\r
-#include <cstdint>\r
-\r
-namespace OHOS {\r
-static const int IMAGE_STOPWATCH_STOPWATCH01 = 0x100001;\r
-static const int IMAGE_STOPWATCH_STOPWATCH02 = 0x100002;\r
-static const int IMAGE_STOPWATCH_STOPWATCH04 = 0x100003;\r
-static const int IMAGE_STOPWATCH_STOPWATCH06 = 0x100004;\r
-static const int IMAGE_STOPWATCH_STOPWATCH08 = 0x100005;\r
-static const int IMAGE_STOPWATCH_STOPWATCH10 = 0x100006;\r
-static const int IMAGE_STOPWATCH_STOPWATCH12 = 0x100007;\r
-static const int IMAGE_STOPWATCH_STOPWATCH14 = 0x100008;\r
-static const int IMAGE_STOPWATCH_STOPWATCH16 = 0x100009;\r
-static const int IMAGE_STOPWATCH_STOPWATCH19 = 0x10000a;\r
-static const int IMAGE_STOPWATCH_STOPWATCH20 = 0x10000b;\r
-} // OHOS\r
-#endif // UI_STOPWATCH_RESOURCE_H\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardAdapter.cpp
- * Author:
- * Create: 2021-09-18
- */
-
-#include "add_card/AddCardAdapter.h"
-
-namespace OHOS {
-AddCardAdapter::AddCardAdapter() {}
-
-AddCardAdapter::~AddCardAdapter()
-{
- listData_.clear();
-}
-
-uint16 AddCardAdapter::GetCount(void)
-{
- return listData_.size();
-}
-
-void AddCardAdapter::ClearItem(void)
-{
- listData_.clear();
-}
-
-UIView *AddCardAdapter::GetView(UIView *inView, int16 index)
-{
- if (index >= (int16)listData_.size() || index < 0) {
- return nullptr;
- }
-
- std::list<AddCardInfo>::iterator it = listData_.begin();
- for (int i = 0; i < index; i++) {
- it++;
- }
-
- AddCardItem *item = nullptr;
- if (inView == nullptr) {
- item = new AddCardItem();
- if (item == nullptr) {
- return nullptr;
- }
- } else {
- item = static_cast<AddCardItem *>(inView);
- }
-
- item->SetItemInfo(*it);
- item->SetViewIndex(index);
- item->SetOnClickListener(itemClickListener_);
- return item;
-}
-
-void AddCardAdapter::AddListItem(const AddCardInfo &item)
-{
- listData_.push_back(item);
-}
-} // namespace OHOS
+++ /dev/null
-#include "add_card/AddCardItem.h"\r
-#include "add_card/AddCardPresenter.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
- AddCardItem::AddCardItem()\r
- {\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- SetUpChild();\r
- Add(&cardImg_);\r
- Add(&cardLabel_);\r
- }\r
-\r
- AddCardItem::~AddCardItem()\r
- {\r
- Remove(&cardImg_);\r
- Remove(&cardLabel_);\r
- }\r
-\r
- void AddCardItem::SetUpChild()\r
- {\r
- cardImg_.SetPosition(87, 60);\r
- cardImg_.Resize(280, 280);\r
- cardImg_.SetResizeMode(UIImageView::FILL);\r
- cardImg_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- cardLabel_.SetPosition(175, 360);\r
- cardLabel_.Resize(100, 50);\r
- cardLabel_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
- }\r
-\r
- void AddCardItem::SetItemInfo(const AddCardInfo &cardInfo)\r
- {\r
- cardInfo_ = cardInfo;\r
- cardImg_.SetSrc(cardInfo.cardImg);\r
- if (cardInfo.addFlag) {\r
- cardLabel_.SetText("已添加");\r
- } else {\r
- cardLabel_.SetText("添加");\r
- }\r
- }\r
-\r
- void AddCardItem::UpdateItemInfo(bool addFlag)\r
- {\r
- if (addFlag) {\r
- cardLabel_.SetText("已添加");\r
- cardInfo_.addFlag = addFlag;\r
- Invalidate();\r
- }\r
- }\r
-\r
- void AddCardItem::SetOnClickListener(OnClickListener *onClickListener)\r
- {\r
- cardLabel_.SetOnClickListener(onClickListener);\r
- }\r
-\r
-};\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardModel.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "add_card/AddCardModel.h"
-#include "kv_store.h"
-#include "securec.h"
-
-namespace OHOS {
- AddCardModel::AddCardModel() {}
-
- AddCardModel::~AddCardModel() {}
-
- AddCardModel &AddCardModel::GetInstance()
- {
- static AddCardModel instance;
- return instance;
- }
-
- void AddCardModel::SetSelectedCardIndex(uint8_t cardIndex)
- {
- selectedCardIndex = cardIndex;
- }
-
- uint8_t AddCardModel::GetSelectedCardIndex(void) const
- {
- return selectedCardIndex;
- }
-
- void AddCardModel::AddCardSetting(void)
- {
- MainModel::GetInstance().AddCardSetting(selectedCardIndex);
- }
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardPresenter.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "add_card/AddCardView.h"
-#include "add_card/AddCardModel.h"
-#include "add_card/AddCardPresenter.h"
-#include "hal_tick.h"
-#include "NativeRegisterManager.h"
-
-
-namespace OHOS {
-
-REGIST_SLICE(VIEW_ADD_CARD, AddCardView, AddCardPresenter);
-
- AddCardPresenter::AddCardPresenter()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::AddCardPresenter");
- model = &AddCardModel::GetInstance();
- }
-
- AddCardPresenter::~AddCardPresenter() {
- }
-
- bool AddCardPresenter::OnDrag(UIView& view, const DragEvent& event)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnDrag");
- UNUSED(view);
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnDrag ChangeSlice");
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- }
- return false;
- }
-
- bool AddCardPresenter::OnClick(UIView &view, const ClickEvent &event)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnClick");
- if (MainModel::GetInstance().GetCardSettingCount() >= CARD_SETTING_COUNT_MAX) {
- cardCountEvent = true;
- view_->ExceedsCardCountEvent(true);
- ResetTickTimer();
- } else {
- model->AddCardSetting();
- view_->RefreshCardList();
- }
- return true;
- }
-
- void AddCardPresenter::OnScrollStart(int16_t index, UIView *view)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnScrollStart index = %d", index);
- return;
- }
-
- void AddCardPresenter::OnScrollEnd(int16_t index, UIView *view)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnScrollEnd index = %d", index);
- if (view == nullptr) {
- return;
- }
- model->SetSelectedCardIndex(index);
- }
-
- void AddCardPresenter::OnItemSelected(int16_t index, UIView* view)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnItemSelected index = %d", index);
- if (view == nullptr) {
- return;
- }
- }
-
- void AddCardPresenter::OnTickEvent()
- {
- if (cardCountEvent) {
- uint64_t current_time = static_cast<uint64_t>(HALTick::GetInstance().GetTime());
- if (current_time - startTime > TOAST_KEEP_TIME) {
- view_->ExceedsCardCountEvent(false);
- cardCountEvent = false;
- }
- }
- return;
- }
-
- void AddCardPresenter::ResetTickTimer(void)
- {
- startTime = static_cast<uint64_t>(HALTick::GetInstance().GetTime());
- return;
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardView.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include <string>
-#include "add_card/AddCardView.h"
-#include "add_card/AddCardPresenter.h"
-
-namespace OHOS {
-AddCardView::AddCardView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardView::AddCardView");
-}
-
-AddCardView::~AddCardView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardView::~AddCardView");
- if (addCardAdapter_ != nullptr) {
- delete addCardAdapter_;
- addCardAdapter_ = nullptr;
- }
-}
-
-void AddCardView::OnStart()
-{
- addCardAdapter_ = new AddCardAdapter();
- addCardAdapter_->SetItemClickListener(presenter_);
- SetUpListInfo();
- SetUpListView();
- SetUpToast();
-}
-
-void AddCardView::SetUpListInfo(void)
-{
- MainModel::GetInstance().InitCardSettings();
- uint8_t cardCount = MainModel::GetInstance().GetCardSettingCount();
- CardId *cardSettings = MainModel::GetInstance().GetCardSettings();
- addCardAdapter_->ClearItem();
- for (uint8_t i = WATCH_FACE + 1; i < MAX_CARD; i++) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "All:cardId = %d", i);
- const CardInfo *info = MainModel::GetInstance().GetCardInfo((CardId)i);
- if (info != nullptr) {
- AddCardInfo addInfo;
- addInfo.id = info->id;
- addInfo.cardImg = info->cardImg;
- addInfo.addFlag = false;
- for (uint8_t j = 0; j < cardCount; j++) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Settings:cardId = %d", cardSettings[j]);
- if (cardSettings[j] == i) {
- addInfo.addFlag = true;
- break;
- }
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpListInfo::%d %s %d",
- addInfo.id, addInfo.cardImg, addInfo.addFlag);
- addCardAdapter_->AddListItem(addInfo);
- }
- }
-}
-
-void AddCardView::SetUpListView(void)
-{
- contentList_.SetPosition(0, 0);
- contentList_.Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- contentList_.SetScrollBlankSize(VERTICAL_RESOLUTION / 2);
- contentList_.SetSelectPosition(VERTICAL_RESOLUTION / 2);
- contentList_.SetDraggable(true);
- contentList_.SetThrowDrag(true);
- contentList_.EnableAutoAlign(true);
- contentList_.SetScrollStateListener(presenter_);
- contentList_.SetOnDragListener(presenter_);
- contentList_.SetMaxScrollDistance(1000);
- contentList_.SetAdapter(addCardAdapter_);
- contentList_.SetVisible(true);
- AddViewToRootContainer(&contentList_);
-}
-
-void AddCardView::SetUpToast(void)
-{
- toastLabel_.SetPosition(77, 220);
- toastLabel_.Resize(454, 60);
- toastLabel_.SetViewId("toast");
- toastLabel_.SetText("卡片数量已经到达上限");
- toastLabel_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
- toastLabel_.SetStyle(STYLE_BACKGROUND_OPA, 255);
- toastLabel_.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
- toastLabel_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- toastLabel_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- toastLabel_.SetVisible(false);
- AddViewToRootContainer(&toastLabel_);
-}
-
-void AddCardView::RefreshCardList(void)
-{
- SetUpListInfo();
- contentList_.RefreshList();
-}
-
-void AddCardView::ExceedsCardCountEvent(bool isVisible)
-{
- toastLabel_.SetVisible(isVisible);
- toastLabel_.Invalidate();
-}
-
-}
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SettingView.cpp\r
- * Author:\r
- * Create: 2025-03-23\r
- */\r
-\r
-#include <string>\r
-\r
-#include "blood/BloodView.h"\r
-#include "blood/BloodPresenter.h"\r
-#include "ui_test_group.h"\r
-\r
-namespace OHOS {\r
-static BloodView *g_pBloodView = nullptr;\r
-static const char *BLOOD_LABEL_TWO = (char *)"本功能用于18岁以上健康人群测量运动过程,及之后腕部皮肤温度和体温的变化,"\r
- "请加入研究,以便及时观察运动前后身体的变化。";\r
-static const char *BLOOD_LABEL_THREE = (char *)"测量需佩戴10分钟以上,且容易受到环境因素影响。目前达不到水银体温计的精"\r
- "度,测量结果仅供参考,不作为医疗诊断依据。";\r
-static constexpr uint16_t BLOOD_FIRST_LABEL_FONT = 35;\r
-static constexpr uint16_t BLOOD_LABEL_FIRST_X = 45;\r
-static constexpr uint16_t BLOOD_LABEL_FIRST_Y = 120;\r
-static constexpr uint16_t BLOOD_LABEL_SECOND_Y = 350;\r
-static constexpr uint16_t BLOOD_LABEL_THIRD_Y = 650;\r
-static constexpr uint16_t BLOOD_LABEL_FIRST_WIDTH = 350;\r
-static constexpr uint16_t BLOOD_LABEL_FIRST_HEIGHT = 400;\r
-static constexpr uint16_t BLOOD_IMAGE_POSITION_X = 92;\r
-static constexpr uint16_t BLOOD_IMAGE_POSITION_y = 127;\r
-static constexpr uint16_t BLOOD_IMAGE_WIDTH = 276;\r
-static constexpr uint16_t BLOOD_IMAGE_HEIGHT = 125;\r
-static const char *BLOOD_LABEL_ONE =\r
- (char *)"本功能通过内置温度传感器测量腕部皮肤温度,主要研究腕部皮肤温度和体温的关系。";\r
-static constexpr uint16_t WATCH_TIME_LABEL_CURTIME_XPOS = 188;\r
-static constexpr uint16_t WATCH_TIME_LABEL_CURTIME_YPOS = 12;\r
-static constexpr uint16_t WATCH_TIME_LABEL_CURTIME_WIDTH = 361;\r
-static constexpr uint16_t WATCH_TIME_LABEL_CURTIME_HEIGHT = 80;\r
-static constexpr uint16_t WATCH_TIME_LABEL_CURTIME_FONT_SIZE = 40;\r
-static constexpr uint16_t BLOOD_LAYOUT_POSITION_X = 370;\r
-static constexpr uint16_t BLOOD_LAYOUT_WIDTH = 320;\r
-static constexpr uint16_t BLOOD_BUTTON_POSITION_X = 188;\r
-static constexpr uint16_t BLOOD_BUTTON_POSITION_Y = 320;\r
-static constexpr uint16_t BLOOD_BUTTON_WIDTH = 180;\r
-static constexpr uint16_t BLOOD_BUTTON_HEIGHT = 80;\r
-static constexpr uint16_t BLOOD_BUTTON_TWO_POSITION_Y = 330;\r
-static constexpr uint16_t BLOOD_BUTTON_TWO_WIDTH = 120;\r
-static constexpr uint16_t BLOOD_LABEL_FRONT = 25;\r
-static constexpr uint16_t BLOOD_LABEL1_POSITION_X = 150;\r
-static constexpr uint16_t BLOOD_LABEL1_POSITION_Y = 161;\r
-static constexpr uint16_t BLOOD_LABEL1_WIDTH = 200;\r
-static constexpr uint16_t BLOOD_LABEL1_HEIGHT = 60;\r
-static constexpr uint16_t BLOOD_LABEL_FRONT1 = 60;\r
-static constexpr uint16_t BLOOD_LABEL2_POSITION_X = 150;\r
-static constexpr uint16_t BLOOD_LABEL2_POSITION_Y = 132;\r
-static constexpr uint16_t BLOOD_LABEL2_WIDTH = 200;\r
-static constexpr uint16_t BLOOD_LABEL2_HEIGHT = 60;\r
-static constexpr uint16_t BLOOD_IMAGEANIMATOR_POSITION_X = 84;\r
-static constexpr uint16_t BLOOD_IMAGEANIMATOR_POSITION_Y = 108;\r
-static constexpr uint16_t BLOOD_IMAGEANIMATOR_WIDTH = 100;\r
-static constexpr uint16_t BLOOD_IMAGEANIMATOR_HEIGHT = 100;\r
-\r
-static ImageAnimatorInfo g_imageAnimatorInfo[4] = {\r
- {PNG_SETTTING_BUTTON_IMAGE, {84, 108}, 116, 116, IMG_SRC_FILE_PATH},\r
- {PNG_NEW_DEVICE, {84, 108}, 116, 116, IMG_SRC_FILE_PATH},\r
- {PNG_BT_LIST, {84, 108}, 116, 116, IMG_SRC_FILE_PATH},\r
- {PNG_GANTAN, {84, 108}, 116, 116, IMG_SRC_FILE_PATH},\r
-};\r
-\r
-BloodView::BloodView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodView::BloodView");\r
- g_pBloodView = this;\r
- findPhoneModel = &BloodModel::GetInstance();\r
-}\r
-\r
-BloodView::~BloodView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodView::~BloodView");\r
- g_pBloodView = nullptr;\r
- if (currentTime_ != nullptr) {\r
- delete currentTime_;\r
- currentTime_ = nullptr;\r
- }\r
- if (button != nullptr) {\r
- delete button;\r
- button = nullptr;\r
- }\r
- if (buttonMore != nullptr) {\r
- delete buttonMore;\r
- buttonMore = nullptr;\r
- }\r
- if (label1_ != nullptr) {\r
- delete label1_;\r
- label1_ = nullptr;\r
- }\r
- if (label2_ != nullptr) {\r
- delete label2_;\r
- label2_ = nullptr;\r
- }\r
- if (layout_ != nullptr) {\r
- delete layout_;\r
- layout_ = nullptr;\r
- }\r
- if (currentTime_ != nullptr) {\r
- delete currentTime_;\r
- currentTime_ = nullptr;\r
- }\r
- if (group != nullptr) {\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (groupTest != nullptr) {\r
- delete groupTest;\r
- groupTest = nullptr;\r
- }\r
- if (scrollGroup != nullptr) {\r
- delete scrollGroup;\r
- scrollGroup = nullptr;\r
- }\r
- for (int16_t numGroup = SET_ZERO; numGroup <= MAX_BLOOD_PAGE; numGroup++) {\r
- if (container[numGroup] != nullptr) {\r
- container[numGroup] = nullptr;\r
- }\r
- }\r
-}\r
-\r
-BloodView *BloodView::GetInstance()\r
-{\r
- return g_pBloodView;\r
-}\r
-\r
-void BloodView::OnStart()\r
-{\r
- SetupCurrentTime();\r
- InitStart();\r
-}\r
-\r
-void BloodView::OnStop()\r
-{\r
- if (dragListener_ != nullptr) {\r
- delete dragListener_;\r
- dragListener_ = nullptr;\r
- }\r
- return;\r
-}\r
-\r
-void BloodView::SetupCurrentTime()\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::SetupCurrentTime new Label");\r
- currentTime_ = new UILabel();\r
- if (currentTime_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::SetupCurrentTime new Label currentTime_ fail");\r
- return;\r
- }\r
- currentTime_->SetPosition(WATCH_TIME_LABEL_CURTIME_XPOS, WATCH_TIME_LABEL_CURTIME_YPOS);\r
- currentTime_->Resize(WATCH_TIME_LABEL_CURTIME_WIDTH, WATCH_TIME_LABEL_CURTIME_HEIGHT);\r
- std::string curtime = BloodModel::GetInstance().GetCurrentTimeString();\r
- currentTime_->SetText(curtime.c_str());\r
- currentTime_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WATCH_TIME_LABEL_CURTIME_FONT_SIZE);\r
- currentTime_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- currentTime_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- currentTime_->SetRollSpeed(0);\r
- currentTime_->SetVisible(true);\r
-}\r
-\r
-void BloodView::SetUpImageAnimator()\r
-{\r
- imageAnimator_ = new UIImageAnimatorView();\r
- if (imageAnimator_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::UIImageAnimatorView new Label currentTime_ fail");\r
- return;\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::SetUpImageAnimator ");\r
- imageAnimator_ = new UIImageAnimatorView();\r
- imageAnimator_->SetPosition(BLOOD_IMAGE_POSITION_X, BLOOD_IMAGE_POSITION_y, BLOOD_IMAGE_WIDTH,\r
- BLOOD_IMAGE_HEIGHT); // 50 : offset 50 : offset 200 : offset 200: offset\r
- int imageNumber = 4;\r
- int ImageUpdate = 300;\r
- imageAnimator_->SetImageAnimatorSrc(g_imageAnimatorInfo, imageNumber,\r
- ImageUpdate); // 4: the number of images, 100: updating time\r
- imageAnimator_->Stop();\r
- imageAnimator_->LayoutCenterOfParent();\r
- imageAnimator_->SetDraggable(true);\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(BloodPresenter::GetInstance());\r
- imageAnimator_->SetOnDragListener(listener);\r
- container[BLOOD_START]->Add(imageAnimator_);\r
- if (layout_ == nullptr) {\r
- layout_ = new GridLayout();\r
- uint16_t height = Screen::GetInstance().GetHeight();\r
-\r
- int heightOffset = 50;\r
- layout_->SetPosition(BLOOD_LAYOUT_POSITION_X, 0, BLOOD_LAYOUT_WIDTH,\r
- height - heightOffset); // 370: x , 320: width, 50: offset\r
- container[BLOOD_START]->Add(layout_);\r
- layout_->SetLayoutDirection(LAYOUT_VER);\r
- layout_->SetRows(SET_NINE); // 9 : rows\r
- layout_->SetCols(SET_TWO); // 2 : columns\r
- }\r
- InitImageInfo();\r
-}\r
-\r
-void BloodView::InitStart()\r
-{\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(BloodPresenter::GetInstance());\r
- if (dragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "start dragListener = nullptr");\r
- }\r
- group->SetOnDragListener(dragListener);\r
- group->SetViewId("startPage");\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
-\r
- if (button == nullptr) {\r
- button = new UILabelButton();\r
- }\r
- button->SetPosition(BLOOD_BUTTON_POSITION_X,\r
- BLOOD_BUTTON_TWO_POSITION_Y); // widget's left position and top position\r
- button->Resize(BLOOD_BUTTON_TWO_WIDTH, BLOOD_BUTTON_HEIGHT); // widget's width and height\r
- button->SetViewId("button1"); // Set style\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)(BloodPresenter::GetInstance());\r
- button->SetOnClickListener(clickListener);\r
- button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- button->SetVisible(true);\r
- button->SetText("开始");\r
-\r
- group->Add(currentTime_);\r
- group->Add(button);\r
- container[BLOOD_START] = group;\r
-\r
- AddViewToRootContainer(container[BLOOD_START]);\r
- GetRootContainer()->Invalidate();\r
-}\r
-\r
-void BloodView::InitTest()\r
-{\r
- if (groupTest == nullptr) {\r
- groupTest = new UIViewGroup();\r
- }\r
- groupTest->SetPosition(0, 0);\r
- groupTest->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
-\r
- UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(BloodPresenter::GetInstance());\r
- if (dragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "init test dragListener = nullptr");\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "init test dragListener successful");\r
-\r
- groupTest->SetOnDragListener(dragListener);\r
- groupTest->SetViewId("testPage");\r
- groupTest->SetDraggable(true);\r
- groupTest->SetTouchable(true);\r
-\r
- if (label1_ == nullptr) {\r
- label1_ = new UILabel();\r
- }\r
-\r
- label1_->SetPosition(BLOOD_LABEL1_POSITION_X, BLOOD_LABEL1_POSITION_Y); // widget's left position and top position\r
- label1_->Resize(BLOOD_LABEL1_WIDTH, BLOOD_LABEL1_HEIGHT); // widget's width and height\r
- label1_->SetViewId("label1"); // Set style\r
- label1_->SetStyle(STYLE_TEXT_FONT, BLOOD_LABEL_FRONT1);\r
-\r
- // Set additional property\r
- label1_->SetText("99%");\r
- label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- label1_->SetRollSpeed(0);\r
- label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BLOOD_LABEL_FRONT1);\r
-\r
- // Add to rootView\r
- label1_->SetVisible(true);\r
-\r
- // Add Label to App\r
- if (label2_ == nullptr) {\r
- label2_ = new UILabel();\r
- }\r
-\r
- label2_->SetPosition(BLOOD_LABEL2_POSITION_X, BLOOD_LABEL2_POSITION_Y); // widget's left position and top position\r
- label2_->Resize(BLOOD_LABEL2_WIDTH, BLOOD_LABEL2_HEIGHT); // widget's width and height\r
- label2_->SetViewId("label1"); // Set style\r
- label2_->SetStyle(STYLE_TEXT_FONT, BLOOD_LABEL_FRONT);\r
-\r
- // Set additional property\r
- label2_->SetText("血氧");\r
- label2_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- label2_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- label2_->SetRollSpeed(0);\r
- label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BLOOD_LABEL_FRONT);\r
- label2_->SetVisible(true);\r
-\r
- // Add to rootView\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "init test label successful");\r
-\r
- if (buttonMore == nullptr) {\r
- buttonMore = new UILabelButton();\r
- }\r
-\r
- buttonMore->SetPosition(BLOOD_BUTTON_POSITION_X,\r
- BLOOD_BUTTON_POSITION_Y); // widget's left position and top position\r
- buttonMore->Resize(BLOOD_BUTTON_WIDTH, BLOOD_BUTTON_HEIGHT); // widget's width and height\r
- buttonMore->SetViewId("button2"); // Set style\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)(BloodPresenter::GetInstance());\r
- buttonMore->SetOnClickListener(clickListener);\r
- buttonMore->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- buttonMore->SetVisible(true);\r
- buttonMore->SetText("了解更多");\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "init test button successful");\r
-\r
- groupTest->Add(label1_);\r
- groupTest->Add(label2_);\r
- groupTest->Add(currentTime_);\r
- groupTest->Add(buttonMore);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "init test add button successful");\r
-}\r
-\r
-void BloodView::InitMore()\r
-{\r
- if (scrollGroup == nullptr) {\r
- scrollGroup = new UIScrollView();\r
- }\r
- scrollGroup->Add(currentTime_);\r
-\r
- scrollGroup->SetViewId("moreGroup");\r
- scrollGroup->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- scrollGroup->SetThrowDrag(true);\r
- scrollGroup->SetScrollBlankSize(50); // 50:font size\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(BloodPresenter::GetInstance());\r
- scrollGroup->SetOnDragListener(listener);\r
- scrollGroup->SetDraggable(true);\r
- scrollGroup->SetTouchable(true);\r
- if (!InitSimilarLabel(SET_ZERO, BLOOD_LABEL_FIRST_Y, BLOOD_LABEL_ONE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ZERO] error");\r
- }\r
- if (!InitSimilarLabel(SET_ONE, BLOOD_LABEL_SECOND_Y, BLOOD_LABEL_TWO)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ONE] error");\r
- }\r
- if (!InitSimilarLabel(SET_TWO, BLOOD_LABEL_THIRD_Y, BLOOD_LABEL_THREE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ONE] error");\r
- }\r
-}\r
-\r
-bool BloodView::InitSimilarLabel(int16 num, int16 labelY, const char *labelText)\r
-{\r
- tempLabel[num] = new UILabel();\r
- if (tempLabel[num] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[%d] error", num);\r
- return false;\r
- }\r
- tempLabel[num]->SetPosition(BLOOD_LABEL_FIRST_X, labelY, BLOOD_LABEL_FIRST_WIDTH, BLOOD_LABEL_FIRST_HEIGHT);\r
- tempLabel[num]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- tempLabel[num]->SetText(labelText);\r
- tempLabel[num]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BLOOD_FIRST_LABEL_FONT);\r
- scrollGroup->Add(tempLabel[num]);\r
-\r
- return true;\r
-}\r
-\r
-bool BloodView::TempInitLabel(void)\r
-{\r
- scrollGroup->Add(currentTime_);\r
- UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(BloodPresenter::GetInstance());\r
- if (dragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "init more dragListener = nullptr");\r
- }\r
- if (!InitSimilarLabel(SET_ZERO, BLOOD_LABEL_FIRST_Y, BLOOD_LABEL_ONE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ZERO] error");\r
- return false;\r
- }\r
- if (!InitSimilarLabel(SET_ONE, BLOOD_LABEL_SECOND_Y, BLOOD_LABEL_TWO)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ONE] error");\r
- return false;\r
- }\r
- if (!InitSimilarLabel(SET_TWO, BLOOD_LABEL_THIRD_Y, BLOOD_LABEL_THREE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ONE] error");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-void BloodView::InitImageInfo()\r
-{\r
- const uint16_t pixelByteSize = 4; // 4: bytes per pixel\r
- const uint16_t width = 100; // 100: image's width\r
- const uint16_t height = 100; // 100: image's height\r
- uint32_t dataSize = width * height * pixelByteSize;\r
- uint8_t *srcData1 = static_cast<uint8_t *>(UIMalloc(dataSize));\r
- if (srcData1 == nullptr) {\r
- return;\r
- }\r
-\r
- for (uint32_t i = 0; i < dataSize; i += pixelByteSize) {\r
- srcData1[i] = SET_INT_MAX; // 255: pixel value\r
- srcData1[i + 1] = 0; // 1: set green channel\r
- srcData1[i + 2] = 0; // 2: set red channel\r
- srcData1[i + 3] = OPA_OPAQUE; // 3: set alpha channel\r
- }\r
- imageInfo1_ = static_cast<ImageInfo *>(UIMalloc(sizeof(ImageInfo)));\r
- if (imageInfo1_ == nullptr) {\r
- UIFree(srcData1);\r
- return;\r
- }\r
-\r
- imageInfo1_->header.width = width;\r
- imageInfo1_->header.height = height;\r
- imageInfo1_->header.colorMode = ColorMode::ARGB8888;\r
- imageInfo1_->dataSize = dataSize;\r
- imageInfo1_->data = srcData1;\r
-\r
- uint8_t *srcData2 = static_cast<uint8_t *>(UIMalloc(dataSize));\r
- if (srcData2 == nullptr) {\r
- UIFree(imageInfo1_);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- for (uint32_t i = 0; i < dataSize; i += pixelByteSize) {\r
- srcData2[i] = 0; // set blue channel\r
- srcData2[i + 1] = SET_INT_MAX; // 1: set green channel 255: pixel value\r
- srcData2[i + 2] = 0; // 2: set red channel\r
- srcData2[i + 3] = OPA_OPAQUE; // 3: set alpha channel\r
- }\r
-\r
- imageInfo2_ = static_cast<ImageInfo *>(UIMalloc(sizeof(ImageInfo)));\r
- if (imageInfo2_ == nullptr) {\r
- UIFree(srcData2);\r
- UIFree(imageInfo1_);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- imageInfo2_->header.width = width;\r
- imageInfo2_->header.height = height;\r
- imageInfo2_->header.colorMode = ARGB8888;\r
- imageInfo2_->dataSize = dataSize;\r
- imageInfo2_->data = srcData2;\r
-\r
- uint8_t *srcData3 = static_cast<uint8_t *>(UIMalloc(dataSize));\r
- if (srcData3 == nullptr) {\r
- UIFree(imageInfo2_);\r
- UIFree(srcData2);\r
- UIFree(imageInfo1_);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- for (uint32_t i = 0; i < dataSize; i += pixelByteSize) {\r
- srcData3[i] = 0; // set blue channel\r
- srcData3[i + 1] = 0; // 1: set green channel\r
- srcData3[i + 2] = SET_INT_MAX; // 2: set red channel 255: pixel value\r
- srcData3[i + 3] = OPA_OPAQUE; // 3: set alpha channel\r
- }\r
-\r
- imageInfo3_ = static_cast<ImageInfo *>(UIMalloc(sizeof(ImageInfo)));\r
- if (imageInfo3_ == nullptr) {\r
- UIFree(srcData3);\r
- UIFree(imageInfo2_);\r
- UIFree(srcData2);\r
- UIFree(imageInfo1_);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- imageInfo3_->header.width = width;\r
- imageInfo3_->header.height = height;\r
- imageInfo3_->header.colorMode = ARGB8888;\r
- imageInfo3_->dataSize = dataSize;\r
- imageInfo3_->data = srcData3;\r
-\r
- imageAnimatorImageInfo_[0].imageInfo = imageInfo1_;\r
- imageAnimatorImageInfo_[0].pos = {BLOOD_IMAGEANIMATOR_POSITION_X, BLOOD_IMAGEANIMATOR_POSITION_Y};\r
- imageAnimatorImageInfo_[0].width = BLOOD_IMAGEANIMATOR_WIDTH; // 100: width value\r
- imageAnimatorImageInfo_[0].height = BLOOD_IMAGEANIMATOR_HEIGHT; // 100: height value\r
- imageAnimatorImageInfo_[0].imageType = IMG_SRC_IMAGE_INFO;\r
-\r
- imageAnimatorImageInfo_[1].imageInfo = imageInfo2_;\r
- imageAnimatorImageInfo_[1].pos = {BLOOD_IMAGEANIMATOR_POSITION_X, BLOOD_IMAGEANIMATOR_POSITION_Y};\r
- imageAnimatorImageInfo_[1].width = BLOOD_IMAGEANIMATOR_WIDTH; // 100: width value\r
- imageAnimatorImageInfo_[1].height = BLOOD_IMAGEANIMATOR_HEIGHT; // 100: height value\r
- imageAnimatorImageInfo_[1].imageType = IMG_SRC_IMAGE_INFO;\r
-\r
- imageAnimatorImageInfo_[2].imageInfo = imageInfo3_; // 2: image index\r
- imageAnimatorImageInfo_[2].pos = {BLOOD_IMAGEANIMATOR_POSITION_X, BLOOD_IMAGEANIMATOR_POSITION_Y}; // 2: image index\r
- imageAnimatorImageInfo_[2].width = BLOOD_IMAGEANIMATOR_WIDTH; // 2: image index, 100: width value\r
- imageAnimatorImageInfo_[2].height = BLOOD_IMAGEANIMATOR_HEIGHT; // 2: image index, 100: height value\r
- imageAnimatorImageInfo_[2].imageType = IMG_SRC_IMAGE_INFO; // 2: image index\r
-}\r
-\r
-void BloodView::UpdateCurrentTimeLabel(const char *currentTime)\r
-{\r
- currentTime_->SetText(currentTime);\r
- currentTime_->Invalidate();\r
-}\r
-\r
-bool BloodView::IsCurrentTimeLabelValid()\r
-{\r
- return currentTime_ != nullptr ? true : false;\r
-}\r
-\r
-void BloodView::DropView(UIView &view, int type)\r
-{\r
- if (type == 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[WEATHER_ondrop]-0");\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[WEATHER_ondrop] view name :%s",\r
- view.GetViewId());\r
- if (&view == container[BLOOD_START]) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[CHANGE_INTERFACE_CONFIG]-0");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- } else if (&view == container[BLOOD_TEST]) {\r
- ChangeView(BLOOD_TEST, BLOOD_START);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[BLOOD_START]-0");\r
- } else if (&view == container[BLOOD_MORE]) {\r
- ChangeView(BLOOD_MORE, BLOOD_TEST);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[WEATHER_SCROLL]-0");\r
- }\r
- } else if (type == 1) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[WEATHER_ondrop] view name :%s",\r
- view.GetViewId());\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[WEATHER_ondrop]-1");\r
- if (&view == button || view.GetViewId() == "button1") {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[WEATHER_SWIPE]-1");\r
- ChangeView(BLOOD_START, BLOOD_TEST);\r
- } else if (&view == buttonMore || view.GetViewId() == "button1") {\r
- ChangeView(BLOOD_TEST, BLOOD_MORE);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::DropView::container[WEATHER_SCROLL]-1");\r
- } else if (&view == container[BLOOD_MORE]) {\r
- }\r
- }\r
-}\r
-\r
-bool BloodView::ChangeBloodStart(int16_t thisView)\r
-{\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodView::WeatherGroupView");\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool BloodView::ChangeBloodTest(int16_t thisView)\r
-{\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::ChangeBloodTest");\r
- InitTest();\r
- container[thisView] = groupTest;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool BloodView::ChangeBloodMore(int16_t thisView)\r
-{\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodView::WeatherScrollView");\r
- InitMore();\r
- container[thisView] = scrollGroup;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-struct BloodViewMapper {\r
- uint16_t viewId;\r
- bool (BloodView::*func)(int16 thisView);\r
-};\r
-\r
-static const BloodViewMapper ViewMapper[] = {\r
- {BLOOD_START, &BloodView::ChangeBloodStart},\r
- {BLOOD_TEST, &BloodView::ChangeBloodTest},\r
- {BLOOD_MORE, &BloodView::ChangeBloodMore},\r
-};\r
-\r
-bool BloodView::ClickFunc(int16 interf)\r
-{\r
- int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]);\r
- for (int i = 0; i < funcSize; i++) {\r
- if (interf == ViewMapper[i].viewId) {\r
- bool jug = (this->*(ViewMapper[i].func))(interf);\r
- if (!jug) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView:: ChangeInterFace[%d] false", interf);\r
- return false;\r
- }\r
- return true;\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-void BloodView::ChangeView(int16 hideView, int16 showView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodView::ChangeView hideView = %d, showView = %d", hideView, showView);\r
- if (hideView > MAX_BLOOD_PAGE) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::ChangeView Overstep ones bounds");\r
- return;\r
- }\r
- if (!ClickFunc(showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::ChangeView ClickFunc ercror");\r
- return;\r
- }\r
- container[hideView]->SetVisible(false);\r
- container[showView]->SetVisible(true);\r
- Draw();\r
- return;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodBandoff view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-#include "UiConfig.h"\r
-#include "wearable_log.h"\r
-#include "bloodoxygen/BloodBandoffView.h"\r
-#include "bloodoxygen/BloodOxygenModel.h"\r
-\r
-namespace OHOS {\r
-// 动态显示图片设置\r
-static constexpr uint16_t IMAGE_SIZE = 96;\r
-static constexpr uint16_t IMAGE_POSITION_Y = 276;\r
-static constexpr uint16_t IMAGE_POSITION_X = 179;\r
-static constexpr uint16_t IMAGEANIMATOERVIEW_SIZE = 24;\r
-static constexpr uint16_t IMAGEANIMATOERVIEW_SPEED = 40;\r
-\r
-// 标签设置\r
-static constexpr uint16_t LABEL_POSITION_X = 87;\r
-static constexpr uint16_t LABEL_POSITION_Y = 200;\r
-static constexpr uint16_t LABEL_POSITION_WIDTH = 288;\r
-static constexpr uint16_t LABEL_POSITION_HEIGHT = 50;\r
-\r
-// 图片设置\r
-static constexpr uint16_t IMAGE_ENTER_POSITION_X = 131;\r
-static constexpr uint16_t IMAGE_ENTER_POSITION_Y = 70;\r
-\r
-static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;\r
-static constexpr uint16_t FONT_DEFAULT_SIZE = 25;\r
-static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;\r
-static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;\r
-static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;\r
-\r
-static ImageAnimatorInfo g_imageAnimatorInfo_Time[IMAGEANIMATOERVIEW_SIZE] = {\r
- {PNG_COUNTDOWN_TIME_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_COUNTDOWN_TIME_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
-};\r
-static BloodBandoffView *g_pMainView = nullptr;\r
-BloodBandoffView::BloodBandoffView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView");\r
- label = nullptr;\r
- imageView = nullptr;\r
- group = nullptr;\r
- imageAnimator = nullptr;\r
- g_pMainView = this;\r
-}\r
-\r
-BloodBandoffView::~BloodBandoffView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::~BloodBandoffView");\r
- group->RemoveAll();\r
- delete label;\r
- delete imageView;\r
- delete group;\r
- delete imageAnimator;\r
- label = nullptr;\r
- imageView = nullptr;\r
- group = nullptr;\r
- imageAnimator = nullptr;\r
- g_pMainView = nullptr;\r
-}\r
-\r
-BloodBandoffView *BloodBandoffView::GetInstance(void)\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-UIViewGroup *BloodBandoffView::GetBandoffViewGroup()\r
-{\r
- return group;\r
-}\r
-\r
-UIImageAnimatorView *BloodBandoffView::GetImageAnimator()\r
-{\r
- return imageAnimator;\r
-}\r
-\r
-UIViewGroup *BloodBandoffView::CreateUIViewGroup()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup");\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new group fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
-\r
- label = new UILabel();\r
- if (label == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new Label fail");\r
- return nullptr;\r
- }\r
- group->Add(label);\r
- label->SetPosition(LABEL_POSITION_X, LABEL_POSITION_Y, LABEL_POSITION_WIDTH, LABEL_POSITION_HEIGHT);\r
- label->SetText("偏紧佩戴,保持静止");\r
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);\r
- label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-\r
- imageAnimator = new UIImageAnimatorView();\r
- if (imageAnimator == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail");\r
- return nullptr;\r
- }\r
- imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, IMAGEANIMATOERVIEW_SIZE, IMAGEANIMATOERVIEW_SPEED);\r
- imageAnimator->Start();\r
- imageAnimator->SetRepeat(false);\r
- group->Add(imageAnimator);\r
-\r
- imageView = new UIImageView();\r
- if (imageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageView fail");\r
- return nullptr;\r
- }\r
- imageView->SetPosition(IMAGE_ENTER_POSITION_X, IMAGE_ENTER_POSITION_Y); // 30 : offset\r
- imageView->SetSrc(PNG_BLOOD_ICON_ENTER);\r
- group->Add(imageView);\r
-\r
- return group;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodOxygen view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-\r
-#include "bloodoxygen/BloodOxygenModel.h"\r
-\r
-namespace OHOS {\r
-BloodOxygenModel::BloodOxygenModel()\r
-{\r
- OxygenView = false;\r
- BandoffView = false;\r
-}\r
-\r
-bool BloodOxygenModel::GetBloodOxygenViewStatus(void)\r
-{\r
- return OxygenView;\r
-}\r
-\r
-bool BloodOxygenModel::GetBloodBandoffViewStatus(void)\r
-{\r
- return BandoffView;\r
-}\r
-\r
-void BloodOxygenModel::SetBloodBandoffViewStatus(bool bandoffViewStatus)\r
-{\r
- BandoffView = bandoffViewStatus;\r
-}\r
-\r
-void BloodOxygenModel::SetBloodOxygenViewStatus(bool oxygenViewStatus)\r
-{\r
- OxygenView = oxygenViewStatus;\r
-}\r
-\r
-BloodOxygenModel *BloodOxygenModel::GetInstance(void)\r
-{\r
- static BloodOxygenModel instance;\r
- return &instance;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodOxygen view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-\r
-#include "bloodoxygen/BloodOxygenPresenter.h"\r
-#include "common/task_manager.h"\r
-#include "bloodoxygen/BloodOxygenView.h"\r
-#include "bloodoxygen/BloodOxygenModel.h"\r
-#include "components/ui_label.h"\r
-#include "bloodoxygen/BloodBandoffView.h"\r
-#include "ChangeSliceListener.h"\r
-#include "uiservice/ui_service.h"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_MENU(VIEW_BLOODOXY_SAMPLE, BloodOxygenView, BloodOxygenPresenter, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血氧饱和度");\r
-\r
-static BloodOxygenPresenter *g_pMainView = nullptr;\r
-static constexpr uint16_t PROGRESS_VALUE_MIN = 0;\r
-static constexpr uint16_t PROGRESS_VALUE_MAX = 100;\r
-\r
-BloodOxygenPresenter::BloodOxygenPresenter()\r
-{\r
- count = PROGRESS_VALUE_MAX;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::new BloodOxygenPresenter");\r
- g_pMainView = this;\r
-}\r
-\r
-BloodOxygenPresenter::~BloodOxygenPresenter()\r
-{\r
- g_pMainView = nullptr;\r
-}\r
-\r
-BloodOxygenPresenter* BloodOxygenPresenter::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-void BloodOxygenPresenter::OnStart()\r
-{\r
- SendMsgToUIService(UI_ADD_SLEEP_VETO, 0, nullptr, 0);\r
-}\r
-\r
-void BloodOxygenPresenter::OnStop()\r
-{\r
- SendMsgToUIService(UI_RM_SLEEP_VETO, 0, nullptr, 0);\r
-}\r
-\r
-bool BloodOxygenPresenter::CheckPointersValue()\r
-{\r
- if (BloodOxygenView::GetInstance() == nullptr) {\r
- return false;\r
- }\r
-\r
- if (BloodBandoffView::GetInstance() == nullptr) {\r
- return false;\r
- }\r
-\r
- if (BloodOxygenModel::GetInstance() == nullptr) {\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-\r
-bool BloodOxygenPresenter::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- UNUSED(view);\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);\r
- BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- }\r
- return false;\r
-}\r
-\r
-\r
-bool BloodOxygenPresenter::OnClick(UIView& view, const ClickEvent& event)\r
-{\r
- UNUSED(view);\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::OnClick");\r
- if (!CheckPointersValue()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");\r
- return false;\r
- }\r
- BloodOxygenView::GetInstance()->GetPercent()->SetText("");\r
- BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(false);\r
- BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(true);\r
- BloodBandoffView::GetInstance()->GetImageAnimator()->Stop();\r
- BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeat(false);\r
- BloodBandoffView::GetInstance()->GetImageAnimator()->Start();\r
- BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(true);\r
- BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(false);\r
- return true;\r
-}\r
-\r
-void BloodOxygenPresenter::ProgressNotify(void)\r
-{\r
- if (!CheckPointersValue()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");\r
- return;\r
- }\r
-\r
- if (BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus()) {\r
- count--;\r
- BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count);\r
- if (count == PROGRESS_VALUE_MIN) {\r
- BloodOxygenView::GetInstance()->GetPercent()->SetText("98%");\r
- BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);\r
- count = PROGRESS_VALUE_MAX;\r
- BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count);\r
- BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);\r
- }\r
- }\r
-}\r
-\r
-void BloodOxygenPresenter::ReturnInterface()\r
-{\r
- if (BloodOxygenModel::GetInstance()->GetBloodBandoffViewStatus()) {\r
- if (!BloodBandoffView::GetInstance()->GetImageAnimator()->GetState()) {\r
- BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(false);\r
- BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(true);\r
-\r
- BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);\r
- BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(true);\r
- }\r
- }\r
-}\r
-\r
-void BloodOxygenPresenter::Notify(void)\r
-{\r
- ProgressNotify();\r
- ReturnInterface();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodOxygen view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-\r
-#include "bloodoxygen/BloodOxygenView.h"\r
-#include "bloodoxygen/BloodOxygenModel.h"\r
-\r
-namespace OHOS {\r
-// 按钮设置\r
-static constexpr uint16_t TESTBUTTON_ZERO = 0;\r
-static constexpr uint16_t TESTBUTTON_X = 167;\r
-static constexpr uint16_t TESTBUTTON_Y = 360;\r
-\r
-// 进度条参数设置\r
-static constexpr uint16_t CIRCLE_PROGRESS_VALUE = 100;\r
-static constexpr uint16_t CIRCLE_PROGRESS_RADIUS = 43;\r
-static constexpr uint16_t CIRCLE_PROGRESS_STARTANGLE = 360;\r
-static constexpr uint16_t CIRCLE_PROGRESS_ENDANGLE = 0;\r
-static constexpr uint16_t CIRCLE_PROGRESS_WIDTH = 10;\r
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_X = 10;\r
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_Y = 10;\r
-static constexpr uint16_t CIRCLE_PROGRESS_CENTER_X = 195;\r
-static constexpr uint16_t CIRCLE_PROGRESS_CENTER_Y = 37;\r
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_WIDTH = 275;\r
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_HEIGHT = 130;\r
-static constexpr uint16_t CIRCLE_PROGRESS_LEFT = 10;\r
-static constexpr uint16_t CIRCLE_PROGRESS_TOP = 5;\r
-\r
-// 动态刷新设置\r
-static constexpr uint16_t IMAGE_SIZE = 60;\r
-static constexpr uint16_t IMAGE_POSITION_X = 186;\r
-static constexpr uint16_t IMAGE_POSITION_Y = 23;\r
-static constexpr uint16_t IMAGEANIMATORVIEW_SIZE = 31;\r
-static constexpr uint16_t IMAGEANIMATORVIEW_SPEED = 40;\r
-\r
-// 血氧主图设置\r
-static constexpr uint16_t IMAGE_PROGRESS_POSITION_X = 176;\r
-static constexpr uint16_t IMAGE_PROGRESS_POSITION_Y = 13;\r
-\r
-// 血氧%显示\r
-static constexpr uint16_t LABEL_PERCENT_POSITION_X = 258;\r
-static constexpr uint16_t LABEL_PERCENT_POSITION_Y = 40;\r
-\r
-// 血氧柱状图\r
-static constexpr int16 VIEW_MAX_X = 415;\r
-static constexpr int16 VIEW_MIN_X = 35;\r
-static constexpr int16 VIEW_MAX_Y = 150;\r
-static constexpr int16 VIEW_MIN_Y = 0;\r
-static constexpr int16 VIEW_WIDTH = 7;\r
-static constexpr int16 VIEW_HEIGHT = 300;\r
-static constexpr uint16_t VIEW_BACKGROUND_OPA = 127;\r
-static constexpr uint16_t VIEW_BORDER_RADIUS = 5;\r
-static constexpr uint16_t BORDER_OPA = 127;\r
-static constexpr uint16_t BORDER_WIDTH = 20;\r
-\r
-static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;\r
-static constexpr uint16_t FONT_DEFAULT_SIZE = 20;\r
-static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;\r
-static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;\r
-static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;\r
-static constexpr uint16_t BUTTON_LABEL_SIZE = 40;\r
-static constexpr uint8_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 20;\r
-static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFFFFFF;\r
-static constexpr uint16_t BUTTON_WIDHT2 = 120;\r
-static constexpr uint16_t BUTTON_HEIGHT2 = 60;\r
-\r
-// 字体大小\r
-static constexpr uint16_t PERCENT_FONT_SIZE = 25;\r
-\r
-static constexpr uint16_t MATH_ZERO = 0;\r
-\r
-static BloodOxygenView *g_pMainView = nullptr;\r
-static ImageAnimatorInfo g_imageAnimatorInfo_new[31] = {\r
- {PNG_BLOOD_FLOW_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
- {PNG_BLOOD_FLOW_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},\r
-};\r
-\r
-BloodOxygenView::BloodOxygenView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodOxygenView");\r
- imageViewMain = nullptr;\r
- imageViewProgress = nullptr;\r
- group = nullptr;\r
- percent = nullptr;\r
- testButton = nullptr;\r
- circleProgress = nullptr;\r
- imageAnimator = nullptr;\r
- g_pMainView = this;\r
- bloodbandoff = new BloodBandoffView();\r
- if (bloodbandoff == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new BloodBandoffView fail");\r
- }\r
-}\r
-\r
-BloodOxygenView::~BloodOxygenView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::~BloodOxygenView");\r
- group->RemoveAll();\r
- delete imageViewMain;\r
- delete imageViewProgress;\r
- delete group;\r
- delete testButton;\r
- delete percent;\r
- delete circleProgress;\r
- delete imageAnimator;\r
- delete bloodbandoff;\r
- imageViewMain = nullptr;\r
- imageViewProgress = nullptr;\r
- group = nullptr;\r
- percent = nullptr;\r
- testButton = nullptr;\r
- circleProgress = nullptr;\r
- imageAnimator = nullptr;\r
- g_pMainView = nullptr;\r
- bloodbandoff = nullptr;\r
-}\r
-\r
-BloodOxygenView *BloodOxygenView::GetInstance(void)\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-UILabel *BloodOxygenView::GetPercent()\r
-{\r
- return percent;\r
-}\r
-\r
-UIViewGroup *BloodOxygenView::GetBloodOxygenGroup()\r
-{\r
- return group;\r
-}\r
-\r
-UILabelButton *BloodOxygenView::GetTestButton()\r
-{\r
- return testButton;\r
-}\r
-\r
-UICircleProgress *BloodOxygenView::GetCircleProgress()\r
-{\r
- return circleProgress;\r
-}\r
-\r
-UILabelButton *BloodOxygenView::CreateAndSetUIButton(const char *title)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIButton");\r
- UILabelButton* btn = new UILabelButton();\r
- if (btn == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UILabelButton fail");\r
- return nullptr;\r
- }\r
- btn->SetPosition(TESTBUTTON_X, TESTBUTTON_Y, BUTTON_WIDHT2, BUTTON_HEIGHT2);\r
- btn->SetText(title);\r
- btn->SetTextColor(Color::Red());\r
- btn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE);\r
- btn->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);\r
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);\r
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);\r
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);\r
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);\r
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);\r
- UIView::OnClickListener* clickLeftListener = (UIView::OnClickListener*)OHOS::BloodOxygenPresenter::GetInstance();\r
- if (clickLeftListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeftListener fail");\r
- return nullptr;\r
- }\r
- btn->SetOnClickListener(clickLeftListener);\r
- return btn;\r
-}\r
-\r
-\r
-bool BloodOxygenView::SetOnDragListener()\r
-{\r
- UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::BloodOxygenPresenter::GetInstance();\r
- if (dragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail");\r
- return false;\r
- }\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- group->SetOnDragListener(dragListener);\r
- return true;\r
-}\r
-\r
-UIView *BloodOxygenView::CreateAndSetUIView(int16 x, int16 y) const\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIView");\r
- UIView* view = new UIView();\r
- if (view == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new View fail");\r
- return nullptr;\r
- }\r
- if (x > VIEW_MAX_X || x < VIEW_MIN_X) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::X error");\r
- return nullptr;\r
- }\r
- if (y < VIEW_MIN_Y || y >VIEW_MAX_Y) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::Y error");\r
- return nullptr;\r
- }\r
- view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);\r
- view->SetStyle(STYLE_BACKGROUND_OPA, VIEW_BACKGROUND_OPA); // 127 : background opacity\r
- view->SetStyle(STYLE_BORDER_RADIUS, VIEW_BORDER_RADIUS); // 5 : radius value\r
- view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);\r
- view->SetStyle(STYLE_BORDER_OPA, BORDER_OPA); // 127 : border opacity\r
- view->SetStyle(STYLE_BORDER_WIDTH, BORDER_WIDTH); // 20 : border width\r
- view->SetStyle(STYLE_PADDING_LEFT, MATH_ZERO);\r
- view->SetStyle(STYLE_PADDING_RIGHT, MATH_ZERO);\r
- view->SetStyle(STYLE_PADDING_TOP, MATH_ZERO);\r
- view->SetStyle(STYLE_PADDING_BOTTOM, MATH_ZERO);\r
- view->SetStyle(STYLE_MARGIN_LEFT, MATH_ZERO);\r
- view->SetStyle(STYLE_MARGIN_RIGHT, MATH_ZERO);\r
- view->SetStyle(STYLE_MARGIN_TOP, MATH_ZERO);\r
- view->SetStyle(STYLE_MARGIN_BOTTOM, MATH_ZERO);\r
-\r
- view->SetPosition(x, VIEW_HEIGHT - y);\r
- view->SetStyle(STYLE_BORDER_WIDTH, MATH_ZERO);\r
- view->SetStyle(STYLE_BORDER_RADIUS, MATH_ZERO); // 2 : half width 10 : offset\r
- view->Resize(VIEW_WIDTH, y);\r
- return view;\r
-}\r
-\r
-UICircleProgress *BloodOxygenView::CreateAndSetUICircleProgress()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUICircleProgress");\r
- UICircleProgress *circle = new UICircleProgress();\r
- circle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y,\r
- CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_HEIGHT);\r
- circle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y);\r
- circle->SetRadius(CIRCLE_PROGRESS_RADIUS);\r
- circle->SetValue(CIRCLE_PROGRESS_VALUE);\r
- circle->SetBackgroundStyle(STYLE_LINE_WIDTH,\r
- circle->GetBackgroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);\r
- circle->SetForegroundStyle(STYLE_LINE_WIDTH,\r
- circle->GetForegroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);\r
- circle->SetStyle(STYLE_PADDING_LEFT, CIRCLE_PROGRESS_LEFT);\r
- circle->SetStyle(STYLE_PADDING_TOP, CIRCLE_PROGRESS_TOP);\r
- circle->SetStartAngle(CIRCLE_PROGRESS_STARTANGLE);\r
- circle->SetEndAngle(CIRCLE_PROGRESS_ENDANGLE);\r
- circle->SetImage(nullptr, PNG_PROGRESS_BAR_TMAGE);\r
- circle->SetLineColor(Color::Black());\r
-\r
- return circle;\r
-}\r
-\r
-bool BloodOxygenView::InitImageDisplay()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay");\r
- imageViewMain = new UIImageView();\r
- if (imageViewMain == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");\r
- return false;\r
- }\r
- imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 : offset\r
- imageViewMain->SetSrc(PNG_BLOODOXYGEN_IMAGE_PATH);\r
- group->Add(imageViewMain);\r
-\r
- imageAnimator = new UIImageAnimatorView();\r
- if (imageAnimator == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageAnimatorView fail");\r
- return false;\r
- }\r
- imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_new, IMAGEANIMATORVIEW_SIZE, IMAGEANIMATORVIEW_SPEED);\r
- imageAnimator->Start();\r
- imageAnimator->SetRepeat(true);\r
- group->Add(imageAnimator);\r
-\r
- imageViewProgress = new UIImageView();\r
- if (imageViewProgress == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");\r
- return false;\r
- }\r
- imageViewProgress->SetPosition(IMAGE_PROGRESS_POSITION_X, IMAGE_PROGRESS_POSITION_Y); // 30 : offset\r
- imageViewProgress->SetSrc(PNG_PROGRESS_BAR_TMAGE);\r
- group->Add(imageViewProgress);\r
-\r
- return true;\r
-}\r
-\r
-void BloodOxygenView::OnStart()\r
-{\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new group fail");\r
- return;\r
- }\r
- group->SetPosition(MATH_ZERO, MATH_ZERO);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
-\r
- if (!InitImageDisplay()) {\r
- return;\r
- }\r
-\r
- if (!SetOnDragListener()) {\r
- return;\r
- }\r
-\r
- circleProgress = CreateAndSetUICircleProgress();\r
- if (circleProgress == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new circleProgress fail");\r
- return;\r
- }\r
- group->Add(circleProgress);\r
-\r
- percent = new UILabel();\r
- if (percent == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Label fail");\r
- return;\r
- }\r
- percent->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- percent->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- percent->SetText("%97");\r
- percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE);\r
- percent->SetTextColor(Color::Red());\r
- group->Add(percent);\r
-\r
- testButton = CreateAndSetUIButton("测试");\r
- if (testButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail");\r
- return;\r
- }\r
- group->Add(testButton);\r
-\r
- if (OHOS::BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus()) {\r
- testButton->SetTouchable(false);\r
- percent->SetText("");\r
- }\r
-\r
- BloodBandoffView::GetInstance()->CreateUIViewGroup();\r
-\r
- AddViewToRootContainer(group);\r
- AddViewToRootContainer(BloodBandoffView::GetInstance()->GetBandoffViewGroup());\r
- BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);\r
-}\r
-}\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth Case List Adapter
- * Author:
- * Create: 2021-07-26
- */
-#include <string>
-#include "bluetooth/BluetoothCaseListAdapter.h"
-#include "bluetooth/BluetoothEarPhoneView.h"
-#include "gfx_utils/list.h"
-#include "player/PlayersPresenter.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "bluetooth/BluetoothModel.h"
-
-namespace OHOS {
-BluetoothCaseListAdapter::~BluetoothCaseListAdapter()
-{
- if (listener != nullptr) {
- delete listener;
- listener = nullptr;
- }
-}
-
-uint16_t BluetoothCaseListAdapter::GetCount()
-{
- return BluetoothModel::GetInstance()->GetCase().size();
-}
-
-class BluetoothOnClickListListener;
-static BluetoothOnClickListListener* g_btOnClickListListener = nullptr;
-class BluetoothOnClickListListener : public UIView::OnClickListener {
-public:
- BluetoothOnClickListListener()
- {
- g_btOnClickListListener = this;
- }
- ~BluetoothOnClickListListener()
- {
- g_btOnClickListListener = nullptr;
- }
- bool OnClick(UIView& view, const ClickEvent& event) override
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListListener");
- UNUSED(event);
- BluetoothItemView *itemView = static_cast<BluetoothItemView *>(&view);
- // 二次点击不做响应
- bool ret = itemView->IsConnectAnimator();
- if (ret) {
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Block secondary clicks");
- return true;
- }
- BluetoothCaseInfo *bluetoothInfo_ = itemView->GetItemInfo();
- /* 点击事件 */
- BluetoothModel::GetInstance()->SetTempMacValue(bluetoothInfo_);
- BluetoothModel::GetInstance()->SetTagReconnectJump(0);
- BluetoothModel::GetInstance()->SetTagDisconnectView(true);
- bd_addr_t addr;
- (void)memcpy_s(addr.addr, BD_ADDR_LEN, bluetoothInfo_->addr, BD_ADDR_LEN);
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
- if (bluetoothEarPhoneView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");
- return false;
- }
- bluetoothEarPhoneView->BtAnimatorStop();
- bluetoothEarPhoneView->StopBtDiscovery();
- BluetoothModel::GetInstance()->SetTagScanDeviceClicked(true);
-
- // 刷新列表
- BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
- if (bluetoothEarListView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");
- return false;
- }
- if (bluetoothEarListView->GetScanUIList() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");
- return false;
- }
- bluetoothEarListView->GetScanUIList()->RefreshList();
- bluetoothEarListView->SetNewEquipmentButtonRemove();
- bluetoothEarListView->SetCancelConnedRequestButtonAdd();
- RootView::GetInstance()->Invalidate();
-
- // 判断是否正在连接
- if (BluetoothModel::GetInstance()->GetBluetoothAclState()) {
- bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "LastDevice addr: %02x%02x%02x%02x%02x%02x is connected",
- lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3],
- lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]);
- BluetoothModel::GetInstance()->SetTagConnectNew(true);
- errcode_t retVal = gap_disconnect_remote_device(lastAddr);
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Disconnect LastDevice retVal = %d", retVal);
- }
- errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(&addr);
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice ret = %d", retVal);
- // 跳转可选页
- return true;
- }
-
- static BluetoothOnClickListListener *GetInstance()
- {
- return g_btOnClickListListener;
- }
-};
-
-void BluetoothCaseListAdapter::ClickAnimation(BluetoothCaseInfo &itemData, BluetoothItemView *itemView)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothCaseListAdapter::ClickAnimation");
- bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();
- if (ret) {
- BluetoothCaseInfo *clickInfo = BluetoothModel::GetInstance()->GetTempMacValue();
- if ((clickInfo->addr[0] == itemData.addr[0]) && (clickInfo->addr[1] == itemData.addr[1]) &&
- (clickInfo->addr[2] == itemData.addr[2]) && (clickInfo->addr[3] == itemData.addr[3]) &&
- (clickInfo->addr[4] == itemData.addr[4]) && (clickInfo->addr[5] == itemData.addr[5])) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAnimation clickInfo->addr == itemData.addr");
- itemView->ConnectAnimatorStart();
- BluetoothModel::GetInstance()->SetConnectionView(itemView);
- return;
- }
- }
-}
-
-UIView *BluetoothCaseListAdapter::GetView(UIView *inView, int16_t index)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothCaseListAdapter GetView");
- std::list<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetCase();
- if (bluetoothCaseList.empty()) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothCaseList IsEmpty");
- return nullptr;
- }
- if ((static_cast<unsigned int>(index) > bluetoothCaseList.size() - 1) || (index < 0)) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothCaseListAdapter::GetView %d %d", index, bluetoothCaseList.size());
- return nullptr;
- }
- std::list<BluetoothCaseInfo>::iterator node = bluetoothCaseList.begin();
- for (uint16_t i = 0; i < index; i++) {
- ++node;
- }
- node->index = index;
- BluetoothCaseInfo itemData = *node;
- if (inView == nullptr) {
- item = new BluetoothItemView();
- if (item == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetView item err");
- return nullptr;
- }
- } else {
- item = static_cast<BluetoothItemView *>(inView);
- }
- if (BluetoothOnClickListListener::GetInstance() == nullptr) {
- listener =static_cast<UIView::OnClickListener *>(new BluetoothOnClickListListener());
- } else {
- listener = static_cast<UIView::OnClickListener *>(BluetoothOnClickListListener::GetInstance());
- }
- item->SetOnClickListener(listener);
- (void)sprintf_s(addrTmp, sizeof(addrTmp), "%02x%02x%02x%02x%02x%02x", node->addr[0], node->addr[1],
- node->addr[2], node->addr[3], node->addr[4], node->addr[5]); // 没有%s类型,不做返回判断
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addrTmp %s", addrTmp);
- ClickAnimation(itemData, item);
- item->SetItemInfo(itemData, true);
- item->SetViewIndex(index);
- return item;
-}
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth Case List Adapter
- * Author:
- * Create: 2021-07-26
- */
-#include <string>
-#include "bluetooth/BluetoothDeviceCaseListAdapter.h"
-#include "bluetooth/BluetoothOptionsView.h"
-#include "gfx_utils/list.h"
-#include "bluetooth/BluetoothModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "bluetooth/BluetoothPresenter.h"
-
-namespace OHOS {
-BluetoothDeviceCaseListAdapter::~BluetoothDeviceCaseListAdapter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter::~BluetoothDeviceCaseListAdapter");
- UIView::OnClickListener *click = item->GetOnClickListener();
- if (click != nullptr) {
- delete click;
- click = nullptr;
- }
-}
-
-uint16_t BluetoothDeviceCaseListAdapter::GetCount()
-{
- return BluetoothModel::GetInstance()->GetConnedDevicesCase().Size();
-}
-
-class BluetoothDeviceOnClickListListener : public UIView::OnClickListener {
-public:
- BluetoothDeviceOnClickListListener(BluetoothCaseInfo *bluetoothInfo)
- {
- if (bluetoothInfo != nullptr) {
- (void)memcpy_s(addr.addr, BD_ADDR_LEN,
- bluetoothInfo->addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断
- (void)memcpy_s(bluetoothInfo_.addr, BD_ADDR_LEN,
- bluetoothInfo->addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断
- (void)memcpy_s(bluetoothInfo_.deviceName, BD_NAME_LEN,
- bluetoothInfo->deviceName, BD_NAME_LEN); // 源和目标内存长度一样,不做返回值判断
- bluetoothInfo_.index = bluetoothInfo->index;
- bluetoothInfo_.connIndex = bluetoothInfo->connIndex;
- }
- }
- ~BluetoothDeviceOnClickListListener() {}
- bool OnClick(UIView& view, const ClickEvent& event) override
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClickListListener");
- UNUSED(view);
- UNUSED(event);
- /* 点击事件 */
- // 跳转可选页
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick jumpView GetInstance fail");
- return false;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW);
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
- if (mainBluetoothView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick mainBluetoothView GetInstance fail");
- return false;
- }
- mainBluetoothView->ChangeView(BLUETOOTHDEVICELISTVIEW, BLUETOOTHEOPTIONSVIEW);
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClickListListener addr: %02x%02x%02x%02x%02x%02x",
- bluetoothInfo_.addr[5], bluetoothInfo_.addr[4], bluetoothInfo_.addr[3], /* mac下标 0 1 2 3 4 5 */
- bluetoothInfo_.addr[2], bluetoothInfo_.addr[1], bluetoothInfo_.addr[0]); /* mac下标 0 1 2 3 4 5 */
- BluetoothModel::GetInstance()->SetTempMacValue(&bluetoothInfo_);
- // 用于查询连接状态
- BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
- if (bluetoothOptionsView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothOptionsView new fail");
- return false;
- }
- bluetoothOptionsView->SetCurrentAddr(addr);
- bluetoothOptionsView->RefreshText();
- return true;
- }
-
-private:
- BluetoothCaseInfo bluetoothInfo_{};
- bd_addr_t addr;
-};
-
-
-UIView *BluetoothDeviceCaseListAdapter::GetView(UIView *inView, int16_t index)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter GetView");
- List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
- if (bluetoothCaseList.IsEmpty()) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothCaseList IsEmpty");
- return nullptr;
- }
- if ((index > bluetoothCaseList.Size() - 1) || (index < 0)) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceCaseListAdapter::GetView err");
- return nullptr;
- }
- ListNode<BluetoothCaseInfo>* node = bluetoothCaseList.Begin();
- for (uint16_t i = 0; i < index; i++) {
- node = node->next_;
- }
- node->data_.index = index;
- BluetoothCaseInfo itemData = node->data_;
- if (inView == nullptr) {
- item = new BluetoothItemView();
- if (item == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetView item err");
- return nullptr;
- }
- } else {
- item = static_cast<BluetoothItemView *>(inView);
- }
- item->SetItemInfo(itemData, false);
- item->SetConnectionstatus(itemData);
-
- listener = item->GetOnClickListener();
- if (listener != nullptr) {
- delete listener;
- listener = nullptr;
- }
- listener = new BluetoothDeviceOnClickListListener(&node->data_);
- if (listener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetView BluetoothDeviceOnClickListListener err");
- return nullptr;
- }
- sprintf_s(addrTmp, sizeof(addrTmp), "%02x%02x%02x%02x%02x%02x", node->data_.addr[0], node->data_.addr[1],
- node->data_.addr[2], node->data_.addr[3], node->data_.addr[4], node->data_.addr[5]); // 没有%s类型,不做返回判断
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addrTmp %s", addrTmp);
-
- item->SetViewIndex(index);
- item->SetOnClickListener(listener);
- return item;
-}
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothEarList view 蓝牙耳机设备列表界面\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include "bluetooth/BluetoothDeviceListView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-\r
-namespace OHOS {\r
-static BluetoothDeviceListView *g_pBluetoothDeviceListView{nullptr};\r
-\r
-BluetoothDeviceListView::BluetoothDeviceListView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::BluetoothDeviceListView");\r
- g_pBluetoothDeviceListView = this;\r
-}\r
-\r
-BluetoothDeviceListView::~BluetoothDeviceListView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::~BluetoothDeviceListView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete adapterText;\r
- adapterText = nullptr;\r
- delete emptyLabel;\r
- emptyLabel = nullptr;\r
- delete list;\r
- list = nullptr;\r
- delete newEquipmentButton;\r
- newEquipmentButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_pBluetoothDeviceListView = nullptr;\r
-}\r
-\r
-BluetoothDeviceListView *BluetoothDeviceListView::GetInstance()\r
-{\r
- return g_pBluetoothDeviceListView;\r
-}\r
-\r
-void BluetoothDeviceListView::InitList()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList");\r
- // list type\r
- if (adapterText == nullptr) {\r
- adapterText = new BluetoothDeviceCaseListAdapter();\r
- if (adapterText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView adapterText new fail");\r
- return;\r
- }\r
- }\r
- if (list == nullptr) {\r
- list = new UIList(UIList::VERTICAL);\r
- if (list == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView list new fail");\r
- return;\r
- }\r
- list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height\r
- list->SetStartIndex(0); // 0 : list start index\r
- list->SetAdapter(adapterText);\r
- group->Add(list);\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList end");\r
-}\r
-\r
-void BluetoothDeviceListView::InItEmptyLabel() // 暂无已配对设备\r
-{\r
- if (emptyLabel == nullptr) {\r
- emptyLabel = new UILabel();\r
- if (emptyLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView emptyLabel new fail");\r
- return;\r
- }\r
- }\r
- emptyLabel->SetPosition(87, 205, 280, 45); // 87:x 205:y 280:width 45:height\r
- emptyLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- emptyLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- emptyLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- emptyLabel->SetText("暂无已配对设备");\r
-}\r
-\r
-UIViewGroup *BluetoothDeviceListView::GetGroup()\r
-{\r
- return group;\r
-}\r
-\r
-UIList *BluetoothDeviceListView::GetDeviceUIList()\r
-{\r
- return list;\r
-}\r
-\r
-void BluetoothDeviceListView::InitNewEquipmentButton()\r
-{\r
- if (newEquipmentButton == nullptr) {\r
- newEquipmentButton = new UILabelButton();\r
- if (newEquipmentButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView newEquipmentButton new fail");\r
- return;\r
- }\r
- }\r
- newEquipmentButton->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height\r
- newEquipmentButton->SetText("新设备");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- newEquipmentButton->SetOnClickListener(clickListener);\r
- newEquipmentButton->SetTextColor(Color::Red());\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- newEquipmentButton->SetOnClickListener(clickListener2);\r
- newEquipmentButton->SetTextColor(Color::Blue());\r
- }\r
- newEquipmentButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- newEquipmentButton->SetViewId(BLUETOOTH_NEWEQUIPMENT_BUTTON);\r
- newEquipmentButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
-}\r
-\r
-UIViewGroup *BluetoothDeviceListView::InitShowUpView()\r
-{\r
- // 获取currentBdAddr db值 待开发\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView titleLabel new fail");\r
- return nullptr;\r
- }\r
- }\r
-\r
- titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
- titleLabel->SetText("蓝牙耳机");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- InitNewEquipmentButton();\r
- InItEmptyLabel();\r
- // 加载列表\r
- InitList();\r
- group->Add(newEquipmentButton);\r
- group->Add(titleLabel);\r
- group->Add(emptyLabel);\r
-\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(earDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_DEVICE_LIST_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void BluetoothDeviceListView::RefreshText(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText");\r
- List<BluetoothCaseInfo> &bluetoothConnedList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
- bool ret = bluetoothConnedList.IsEmpty();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText bluetoothConnedList.IsEmpty ret = %d", ret);\r
- if (ret) {\r
- emptyLabel->SetVisible(true);\r
- } else {\r
- emptyLabel->SetVisible(false);\r
- }\r
-}\r
-\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothEarList view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "bluetooth/BluetoothEarListView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-#include "settings/SettingModel.h"\r
-\r
-namespace OHOS {\r
-static BluetoothEarListView *g_pBluetoothEarListView{nullptr};\r
-\r
-BluetoothEarListView::BluetoothEarListView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::BluetoothEarListView");\r
- g_pBluetoothEarListView = this;\r
-}\r
-\r
-BluetoothEarListView::~BluetoothEarListView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::~BluetoothEarListView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete adapterText;\r
- adapterText = nullptr;\r
- delete list;\r
- list = nullptr;\r
- delete rescanButton;\r
- rescanButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_pBluetoothEarListView = nullptr;\r
-}\r
-\r
-BluetoothEarListView *BluetoothEarListView::GetInstance()\r
-{\r
- return g_pBluetoothEarListView;\r
-}\r
-\r
-void BluetoothEarListView::InitList()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList");\r
- // list type\r
- if (adapterText == nullptr) {\r
- adapterText = new BluetoothCaseListAdapter();\r
- if (adapterText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView adapterText new fail");\r
- return;\r
- }\r
- }\r
- if (list == nullptr) {\r
- list = new UIList(UIList::VERTICAL);\r
- if (list == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView list new fail");\r
- return;\r
- }\r
- list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height\r
- list->SetStartIndex(0); // 0 : list start index\r
- list->SetAdapter(adapterText);\r
- group->Add(list);\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList end");\r
-}\r
-\r
-UIViewGroup *BluetoothEarListView::GetGroup()\r
-{\r
- return group;\r
-}\r
-\r
-UIList *BluetoothEarListView::GetScanUIList()\r
-{\r
- return list;\r
-}\r
-\r
-void BluetoothEarListView::SetTitleLabel(const char *text)\r
-{\r
- titleLabel->SetText(text);\r
-}\r
-\r
-void BluetoothEarListView::SetNewEquipmentButtonAdd(void)\r
-{\r
- group->Add(rescanButton);\r
-}\r
-\r
-void BluetoothEarListView::SetNewEquipmentButtonRemove(void)\r
-{\r
- group->Remove(rescanButton);\r
-}\r
-\r
-void BluetoothEarListView::SetCancelConnedRequestButtonAdd(void)\r
-{\r
- group->Add(cancelConnedRequestButton);\r
-}\r
-\r
-void BluetoothEarListView::SetCancelConnedRequestButtonRemove(void)\r
-{\r
- group->Remove(cancelConnedRequestButton);\r
-}\r
-\r
-void BluetoothEarListView::InitButten(UILabelButton **button, const char *text, const char* id)\r
-{\r
- if (*button == nullptr) {\r
- *button = new UILabelButton();\r
- if (*button == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten new fail");\r
- return;\r
- }\r
- }\r
- (*button)->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height\r
- (*button)->SetText(text);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten button GetInstance fail");\r
- return;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- (*button)->SetOnClickListener(clickListener);\r
- (*button)->SetTextColor(Color::Red());\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- (*button)->SetOnClickListener(clickListener2);\r
- (*button)->SetTextColor(Color::Blue());\r
- }\r
- (*button)->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- (*button)->SetViewId(id);\r
- (*button)->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
-}\r
-\r
-UIViewGroup *BluetoothEarListView::InitShowUpView()\r
-{\r
- // 获取currentBdAddr db值 待开发\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView titleLabel new fail");\r
- return nullptr;\r
- }\r
- }\r
- titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
- titleLabel->SetText("正在扫描");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- // 加载列表\r
- InitList();\r
- InitButten(&rescanButton, "重新扫描", BLUETOOTH_RESCAN_BUTTON);\r
- InitButten(&cancelConnedRequestButton, "取消", BLUETOOTH_CANCELCONNEDREQUEST_BUTTON);\r
- group->Add(titleLabel);\r
-\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(earDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_EARLIST_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothEarPhone view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include <functional>\r
-#include "bluetooth/BluetoothEarPhoneView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothItemView.h"\r
-#include "settings/SettingModel.h"\r
-#include "common/image_cache_manager.h"\r
-#include "graphic_service.h"\r
-\r
-namespace OHOS {\r
-static BluetoothEarPhoneView *g_pBluetoothEarPhoneView{nullptr};\r
-#define BLUETOOTH_IMAGE_X 175\r
-#define BLUETOOTH_IMAGE_Y 175\r
-#define BLUETOOTH_IMAGE_WIDTH 104\r
-#define BLUETOOTH_IMAGE_HEIGHT 104\r
-#define BLUETOOTH_DELAY 200\r
-\r
-GraphicTimer* g_stopScanHandle = nullptr;\r
-static constexpr uint64_t MS_SCAN_TIME = 25000;\r
-\r
-BluetoothEarPhoneView::BluetoothEarPhoneView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BluetoothEarPhoneView");\r
- g_pBluetoothEarPhoneView = this;\r
-}\r
-\r
-BluetoothEarPhoneView::~BluetoothEarPhoneView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::~BluetoothEarPhoneView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete imageAnimator;\r
- imageAnimator = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_pBluetoothEarPhoneView = nullptr;\r
-}\r
-\r
-BluetoothEarPhoneView *BluetoothEarPhoneView::GetInstance()\r
-{\r
- return g_pBluetoothEarPhoneView;\r
-}\r
-\r
-void BluetoothEarPhoneView::BtScanImageAnimator()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtScanImageAnimator init");\r
- const char *searchImagePath[BLUETOOTH_SEARCH_IMAGE_NUM] = {\r
- PNG_A019_080_IMAGE_PATH,\r
- PNG_A019_081_IMAGE_PATH,\r
- PNG_A019_082_IMAGE_PATH,\r
- PNG_A019_083_IMAGE_PATH,\r
- PNG_A019_084_IMAGE_PATH,\r
- PNG_A019_085_IMAGE_PATH,\r
- PNG_A019_086_IMAGE_PATH,\r
- PNG_A019_087_IMAGE_PATH,\r
- };\r
-\r
- if (imageAnimator == nullptr) {\r
- imageAnimator = new UIImageAnimatorView();\r
- if (imageAnimator == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView new imageAnimator fail");\r
- return;\r
- }\r
- for (uint8_t i = 0; i < BLUETOOTH_SEARCH_IMAGE_NUM; i++) {\r
- searchImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(searchImagePath[i]);\r
- searchImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
- searchImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;\r
- searchImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;\r
- searchImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;\r
- searchImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;\r
- }\r
- imageAnimator->SetPosition(175, 175, 104, 104); // 175:x 175:y 104:width 104:height\r
- imageAnimator->SetImageAnimatorSrc(searchImageInfo, BLUETOOTH_SEARCH_IMAGE_NUM, BLUETOOTH_DELAY);\r
- imageAnimator->SetRepeat(true);\r
- group->Add(imageAnimator);\r
- }\r
-}\r
-\r
-void BluetoothEarPhoneView::BtAnimatorStart(void)\r
-{\r
- imageAnimator->Start();\r
-}\r
-\r
-void BluetoothEarPhoneView::BtAnimatorStop(void)\r
-{\r
- imageAnimator->Stop();\r
-}\r
-\r
-UIViewGroup *BluetoothEarPhoneView::InitShowUpView()\r
-{\r
- // 获取currentBdAddr db值 待开发\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView titleLabel new fail");\r
- return nullptr;\r
- }\r
- titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
- titleLabel->SetText("正在搜索");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(earDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_EAR_PHONE_VIEW);\r
- // 动画\r
- BtScanImageAnimator();\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void CancelBrScanHandle(void)\r
-{\r
- if (g_stopScanHandle != nullptr) {\r
- delete g_stopScanHandle;\r
- g_stopScanHandle = nullptr;\r
- }\r
- bool results = gap_br_cancel_discovery();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelBtDiscovery results %d", results);\r
-}\r
-\r
-void EndScanHandle(void)\r
-{\r
- if (BluetoothModel::GetInstance()->GetCase().size() == 0) {\r
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
- if (bluetoothEarPhoneView == nullptr) { // 暂停动画\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
- return;\r
- }\r
- bluetoothEarPhoneView->BtAnimatorStop();\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- JumpView *jumpView = JumpView::GetInstance();\r
- if (jumpView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
- return;\r
- }\r
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
- JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
- if (mainBluetoothView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
- return;\r
- }\r
- mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, TIPSFAILMESSAGEVIEW);\r
- }\r
- } else {\r
- // 按rssi信息重新排序\r
- BluetoothModel::GetInstance()->SortScansCaseRssi();\r
- // 刷新\r
- BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
- if (bluetoothEarListView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");\r
- return;\r
- }\r
- if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");\r
- return;\r
- }\r
- bluetoothEarListView->GetScanUIList()->RefreshList();\r
- // 扫描完成\r
- bluetoothEarListView->SetTitleLabel("扫描完成");\r
- bluetoothEarListView->SetNewEquipmentButtonAdd();\r
- RootView::GetInstance()->Invalidate();\r
- }\r
-}\r
-\r
-// 定时器回调函数\r
-static void BluetoothScanTimerCallbackProc(void* data)\r
-{\r
- (void)data;\r
- CancelBrScanHandle();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan end jumpView");\r
- EndScanHandle();\r
-}\r
-\r
-void BluetoothScanTimerCallback(void* data)\r
-{\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(BluetoothScanTimerCallbackProc, data));\r
-}\r
-\r
-// 蓝牙start\r
-void BluetoothEarPhoneView::BtEnable()\r
-{\r
- bool ret;\r
- bool results;\r
- // 经典蓝牙扫描\r
- setScanStatus(true); // 开始扫描标记\r
- BluetoothModel::GetInstance()->SetCaseListClear(); // 扫描list清空\r
- ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
- if (ret) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Bt is Discovering");\r
- return;\r
- } else {\r
- results = gap_br_set_inquiry_paramters(DEVICE_MAJOR_CLASS_AUDIO_VIDEO, 0);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_set_inquiry_paramters results %d", results);\r
- results = gap_br_start_discovery();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_start_discovery results %d", results);\r
- }\r
- if (g_stopScanHandle != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable g_stopScanHandle != nullptr");\r
- return;\r
- }\r
- uint32 tick = GetOSTick(MS_SCAN_TIME);\r
- g_stopScanHandle = new GraphicTimer(tick, BluetoothScanTimerCallback, nullptr, true);\r
- if (g_stopScanHandle == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable new GraphicTimer failed!!");\r
- return;\r
- }\r
- bool retTimer = g_stopScanHandle->Start();\r
- if (!retTimer) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Start failed");\r
- if (g_stopScanHandle != nullptr) {\r
- delete g_stopScanHandle;\r
- g_stopScanHandle = nullptr;\r
- }\r
- return;\r
- }\r
- return;\r
-}\r
-\r
-void BluetoothEarPhoneView::StopBtDiscovery(void)\r
-{\r
- bool ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
- if (!ret) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Bt is not Discovering");\r
- return;\r
- }\r
- CancelBrScanHandle();\r
- return;\r
-}\r
-\r
-void BluetoothEarPhoneView::setScanStatus(bool value)\r
-{\r
- scanStart = value;\r
-}\r
-bool BluetoothEarPhoneView::getScanStatus(void)\r
-{\r
- return scanStart;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: BluetoothHeadsetEvent\r
- * Author:\r
- * Create: 2022-3-22\r
- */\r
-\r
-#include "bluetooth/BluetoothHeadsetEvent.h"\r
-#include "bts_avrcp_target.h"\r
-#include "bts_avrcp_controller.h"\r
-#include "player/PlayersModel.h"\r
-#include "graphic_service.h"\r
-\r
-using namespace OHOS;\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#define AVRCP_CT_AUTO_REG_TYPE 1\r
-uint8_t g_avrcp_tg_local_media_vol = AVRCP_ABSOLUTE_VOLUME_INVALID;\r
-#define BT_A2DP_MEDIA_VOL_LEVEL 100\r
-\r
-bt_avrcp_tg_bts_cbk g_avrcp_tg_audio_cb;\r
-avrcp_ct_callbacks_t g_avrcp_ct_cb;\r
-avrcp_tg_callbacks_t g_avrcp_tg_cb;\r
-BtAvrcpTgInf g_avrcp_srv_inf;\r
-\r
-void BtAvrcpVolumeChangedSyncMedia(uint8_t a2dp_volume)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[BtAvrcpVolumeChangedSyncMedia]::a2dp_volume = 0x%x\r\n", a2dp_volume);\r
- int32_t audio_volume = a2dp_volume * BT_A2DP_MEDIA_VOL_LEVEL / AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100;\r
- AudioManager::GetInstance().SetVolume(AUDIO_STREAM_A2DP_MUSIC, audio_volume); /* 设置增益音量 */\r
- g_avrcp_tg_local_media_vol = a2dp_volume;\r
- avrcp_tg_notify_volume_changed(a2dp_volume);\r
-}\r
-\r
-/* tg通知媒体状态 */\r
-static void BtAvrcpTgNotifyMeidaStatus(bt_avrcp_tg_evt_status_param *notifyEventStatusParam)\r
-{\r
- if (notifyEventStatusParam == nullptr || notifyEventStatusParam->event_id >= AVRCP_NOTIFY_EVENT_RESERVED) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BtAvrcpTgNotifyMeidaStatus] param is error");\r
- return;\r
- }\r
- switch (notifyEventStatusParam->event_id) {\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:\r
- avrcp_tg_notify_playback_status_changed(*(td_u8 *)notifyEventStatusParam->event_status);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:\r
- avrcp_tg_notify_track_changed(*(unsigned long long *)notifyEventStatusParam->event_status);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:\r
- avrcp_tg_notify_track_reached_end();\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:\r
- avrcp_tg_notify_track_reached_start();\r
- break;\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:\r
- avrcp_tg_notify_playback_pos_changed(*(td_u32 *)notifyEventStatusParam->event_status);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:\r
- avrcp_tg_notify_now_playing_content_changed();\r
- break;\r
- case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:\r
- avrcp_tg_notify_available_players_changed();\r
- break;\r
- case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:\r
- avrcp_tg_notify_addressed_players_changed(*(td_u16 *)notifyEventStatusParam->event_status,\r
- *(td_u16 *)(notifyEventStatusParam->event_status + sizeof(td_u16)));\r
- break;\r
- case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:\r
- avrcp_tg_notify_uid_changed(*(td_u16 *)notifyEventStatusParam->event_status);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
- BtAvrcpVolumeChangedSyncMedia(notifyEventStatusParam->event_status[0]);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_RESERVED:\r
- break;\r
- default:\r
- break;\r
- }\r
-}\r
-\r
-void PressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PressButtonStatusCallback]::keyValue = 0x%x keyOperation = 0x%x",\r
- keyValue, keyOperation);\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(UsingPressButtonStatusCallback, keyOperation, keyValue));\r
-}\r
-\r
-void BtAvrcpTgNotifyVolumeChangedProc(uint8_t a2dp_volume)\r
-{\r
- int32_t audio_volume = a2dp_volume * BT_A2DP_MEDIA_VOL_LEVEL / AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100;\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "NotifyVolume = %d", audio_volume);\r
- AudioManager::GetInstance().SetVolume(AUDIO_STREAM_MUSIC, audio_volume); // 耳机连接手表场景调节手表音量\r
-}\r
-\r
-void UsingPressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue)\r
-{\r
- bt_avrcp_tg_evt_status_param event;\r
- switch (keyOperation) {\r
- case AVRCP_KEY_VOLUME_UP: // 耳机控制手表加减音量不走key_operation事件\r
- case AVRCP_KEY_VOLUME_DOWN: // 减小音量\r
- break;\r
- case AVRCP_KEY_MUTE: // 静音\r
- event.event_status[0] = AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_0;\r
- event.event_id = AVRCP_NOTIFY_EVENT_VOLUME_CHANGED;\r
- break;\r
- case AVRCP_KEY_PLAY: // 播放\r
- (void)PlayersModel::GetInstance()->PlayerPlay();\r
- event.event_status[0] = AVRCP_PLAY_STATUS_PLAYING;\r
- event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
- break;\r
- case AVRCP_KEY_STOP: // 停止\r
- (void)PlayersModel::GetInstance()->PlayerStop();\r
- event.event_status[0] = AVRCP_PLAY_STATUS_STOPPED;\r
- event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
- break;\r
- case AVRCP_KEY_PAUSE: // 暂停\r
- (void)PlayersModel::GetInstance()->PlayerPause();\r
- event.event_status[0] = AVRCP_PLAY_STATUS_PAUSED;\r
- event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
- break;\r
- case AVRCP_KEY_FORWARD: // 下一曲\r
- PlayersModel::GetInstance()->LoopingPlayout();\r
- event.event_status[0] = AVRCP_PLAY_STATUS_FWD_SEEK;\r
- event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
- break;\r
- case AVRCP_KEY_BACKWARD: // 上一曲\r
- PlayersModel::GetInstance()->PreviousPlayout();\r
- event.event_status[0] = AVRCP_PLAY_STATUS_REV_SEEK;\r
- event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
- break;\r
- case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
- /* 手机连接手表场景,控制手表喇叭声音 */\r
- event.event_status[0] = keyValue;\r
- event.event_id = AVRCP_NOTIFY_EVENT_VOLUME_CHANGED;\r
- BtAvrcpTgNotifyVolumeChangedProc((uint8_t)keyValue);\r
- default:\r
- break;\r
- }\r
-\r
- BtAvrcpTgNotifyMeidaStatus(&event);\r
-}\r
-\r
-uint8_t BtAvrcpTgGetLocMediaVolume(void)\r
-{\r
- if (g_avrcp_tg_local_media_vol == AVRCP_ABSOLUTE_VOLUME_INVALID) {\r
- int32_t audio_volume = AudioManager::GetInstance().GetVolume(AUDIO_STREAM_A2DP_MUSIC);\r
- uint8_t a2dp_volume = (uint8_t)(audio_volume * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / BT_A2DP_MEDIA_VOL_LEVEL);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audio_volume 0x%x, a2dp_volume 0x%x\n", audio_volume, a2dp_volume);\r
- g_avrcp_tg_local_media_vol = a2dp_volume;\r
- }\r
-\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "get local media volume, a2dp_volume = 0x%x", g_avrcp_tg_local_media_vol);\r
- return g_avrcp_tg_local_media_vol;\r
-}\r
-\r
-void MediaStatusCallback(bt_avrcp_tg_evt_status_param *eventStatusParam)\r
-{\r
- if (eventStatusParam == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "eventStatusParam is nullptr");\r
- return;\r
- }\r
-\r
- int32_t playerStatus = PlayersModel::GetInstance()->GetPlayerstatus();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerStatus = %d", playerStatus);\r
-\r
- switch (eventStatusParam->event_id) {\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:\r
- eventStatusParam->event_status[0] = playerStatus;\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:\r
- eventStatusParam->event_status[0] = 0xFF;\r
- break;\r
- case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:\r
- break;\r
- case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
- eventStatusParam->event_status[0] = BtAvrcpTgGetLocMediaVolume();\r
- break;\r
- case AVRCP_NOTIFY_EVENT_RESERVED:\r
- break;\r
- default :\r
- break;\r
- }\r
-}\r
-\r
-void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct update conn stat:%u", state);\r
- if (bdAddr == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnCtStateChangedCallback addr: %02x%02x%02x%02x%02x%02x ",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */\r
- (void)memcpy_s(g_avrcp_srv_inf.bd_addr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
- g_avrcp_srv_inf.avrcp_srv_conn_stat = state;\r
-}\r
-\r
-static bd_addr_t *BtAvrcpSrvGetActiveAddr(void)\r
-{\r
- return &g_avrcp_srv_inf.bd_addr;\r
-}\r
-\r
-void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
- if (bdAddr == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
- return;\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnCtStateChangedCallback addr: %02x%02x%02x%02x%02x%02x ",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */\r
- (void)memcpy_s(g_avrcp_srv_inf.bd_addr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
- g_avrcp_srv_inf.avrcp_srv_conn_stat = state;\r
-\r
- /* 手表耳机链接场景时,耳机控制音量是一个事件而非key_operation,故需要在手表侧向耳机注册音量变更事件 */\r
- if (state == PROFILE_STATE_CONNECTED) {\r
- (void)avrcp_ct_get_supported_events(BtAvrcpSrvGetActiveAddr());\r
- }\r
-}\r
-\r
-static void BtAvrcpCtPressButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation)\r
-{\r
- if (bd_addr == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
- return;\r
- }\r
- if (g_avrcp_srv_inf.avrcp_button_flag == AVRCP_SRV_RELEASED_VALUE) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct press button button_flag change:%u->%u\n",\r
- g_avrcp_srv_inf.avrcp_button_flag, AVRCP_SRV_PRESS_VALUE);\r
- g_avrcp_srv_inf.avrcp_button_flag = AVRCP_SRV_PRESS_VALUE;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct press button cbk key:%d button_flag:%u\n",\r
- key_operation, g_avrcp_srv_inf.avrcp_button_flag);\r
-}\r
-\r
-static void BtAvrcpPressReleaseButtonLog(uint32_t key_operation)\r
-{\r
- switch (key_operation) {\r
- case AVRCP_KEY_VOLUME_UP:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_VOLUME_UP\n");\r
- break;\r
- case AVRCP_KEY_VOLUME_DOWN:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_VOLUME_DOWN\n");\r
- break;\r
- case AVRCP_KEY_MUTE:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_VOLUME_MUTE\n");\r
- break;\r
- case AVRCP_KEY_PLAY:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_PLAY\n");\r
- break;\r
- case AVRCP_KEY_STOP:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_STOP\n");\r
- break;\r
- case AVRCP_KEY_PAUSE:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_PAUSE\n");\r
- break;\r
- case AVRCP_KEY_FORWARD:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_FORWARD\n");\r
- break;\r
- case AVRCP_KEY_BACKWARD:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_BACKWARD\n");\r
- break;\r
- case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_EVENT_VOLUME_CHANGED\n");\r
- break;\r
- default:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "invalid\n");\r
- break;\r
- }\r
-}\r
-\r
-static void BtAvrcpCtReleaseButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation)\r
-{\r
- UNUSED(bd_addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct release button cbk key:%d\n", key_operation);\r
- if (g_avrcp_srv_inf.avrcp_button_flag == AVRCP_SRV_PRESS_VALUE) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct released button button_flag change:%u->%u\n",\r
- g_avrcp_srv_inf.avrcp_button_flag, AVRCP_SRV_RELEASED_VALUE);\r
- g_avrcp_srv_inf.avrcp_button_flag = AVRCP_SRV_RELEASED_VALUE;\r
- }\r
- BtAvrcpPressReleaseButtonLog((uint32_t)key_operation);\r
-}\r
-\r
-static void BtAvrcpCtSupportCompanyCallback(const bd_addr_t *bd_addr, avrcp_ct_support_company_para_t *company)\r
-{\r
- if (bd_addr == nullptr || company == nullptr || company->company_id == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "get company list:");\r
- for (uint8_t i = 0; i < company->company_num; i++) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " 0x%x ", *company->company_id);\r
- }\r
-}\r
-\r
-static void BtAvrcpCtSupportEventCallback(const bd_addr_t *bd_addr, avrcp_ct_support_event_para_t *event)\r
-{\r
- if (bd_addr == nullptr || event == nullptr || event->event_id == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
- return;\r
- }\r
-\r
- for (uint8_t i = 0; i < event->event_num; i++) {\r
- if (event->event_id[i] == AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
- int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
- }\r
- }\r
-\r
- for (uint8_t i = 0; i < event->event_num; i++) {\r
- if (event->event_id[i] != AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
- int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
- }\r
- }\r
-}\r
-\r
-static void BtAvrcpCtGetElementAttriCallback(const bd_addr_t *bd_addr, avrcp_ct_element_attr_para_cb_t *attr_cb_para)\r
-{\r
- if (bd_addr == nullptr || attr_cb_para == nullptr || attr_cb_para->attr_value == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
- return;\r
- }\r
-\r
- for (uint8_t i = 0; i < attr_cb_para->attr_num; i++) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "attrId-charaId-valLen: 0x%x-0x%x-%u \n",\r
- attr_cb_para->attr_value[i].attr_id,\r
- attr_cb_para->attr_value[i].character_set_id,\r
- attr_cb_para->attr_value[i].value_len);\r
- switch (attr_cb_para->attr_value[i].attr_id) {\r
- case AVRCP_CT_ELEMENT_ATTR_TITLE:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Title:");\r
- break;\r
- case AVRCP_CT_ELEMENT_ATTR_ARTIST_NAME:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Name:");\r
- break;\r
- case AVRCP_CT_ELEMENT_ATTR_ALBUM_NAME:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Album:");\r
- break;\r
- case AVRCP_CT_ELEMENT_ATTR_TRACK_NUMBER:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Track Number:");\r
- break;\r
- case AVRCP_CT_ELEMENT_ATTR_TOTAL_NUMBER_OF_TRACKS:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Total Number Of Track:");\r
- break;\r
- case AVRCP_CT_ELEMENT_ATTR_TRACK_GENRE:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Track GENRE:");\r
- break;\r
- case AVRCP_CT_ELEMENT_ATTR_TRACK_PLAYING_TIME:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Track Playing Time_ms:");\r
- break;\r
- default:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Other:");\r
- break;\r
- }\r
-\r
- uint8_t *value = (uint8_t *)(void *)malloc(attr_cb_para->attr_value[i].value_len + 1);\r
- if (attr_cb_para->attr_value[i].value_len > 0 && attr_cb_para->attr_value[i].value != nullptr) {\r
- if (memcpy_s(value, attr_cb_para->attr_value[i].value_len,\r
- attr_cb_para->attr_value[i].value, attr_cb_para->attr_value[i].value_len) != EOK) {\r
- free(value);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s fail.");\r
- return;\r
- }\r
- }\r
- value[attr_cb_para->attr_value[i].value_len] = '\0';\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " %s \n", value);\r
- free(value);\r
- }\r
-}\r
-\r
-static void BtAvrcpCtGetPlayStatusCallback(const bd_addr_t *bd_addr, avrcp_ct_play_status_cb_t *status)\r
-{\r
- if (bd_addr == nullptr || status == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "test get play status songlen:%u, songpos:%u, playstatus:%u:",\r
- status->song_length, status->song_position, status->play_status);\r
-}\r
-\r
-static void BtAvrcpCtHdlNotifyVolumeRspCbk(avrcp_ct_notification_value_cb_t *notification)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Set local volume: 0x%x\n", notification->volume); /* 注册事件后通知的音量 */\r
- BtAvrcpTgNotifyVolumeChangedProc((uint8_t)notification->volume);\r
-}\r
-\r
-static void BtAvrcpCtNotificationCallback(\r
- const bd_addr_t *bd_addr, avrcp_notify_event_t event_id, avrcp_ct_notification_value_cb_t *notification)\r
-{\r
- if (bd_addr == nullptr || notification == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
- return;\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ct notification cbk event_id:0x%x\n", event_id);\r
- bool notify_flag = true;\r
- switch (event_id) {\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "tg notify ct playback status changed :%u\n",\r
- notification->play_status);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
- BtAvrcpCtHdlNotifyVolumeRspCbk(notification);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play conent changed event_id:0x%x\n", event_id);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "track changed event_id:0x%x\n", event_id);\r
- break;\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:\r
- case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:\r
- case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:\r
- case AVRCP_NOTIFY_EVENT_RESERVED:\r
- default:\r
- notify_flag = false;\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "invalid event id event_id:0x%x\n", event_id);\r
- break;\r
- }\r
- if (notify_flag) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "notify reg event_id: 0x%x\n", event_id);\r
- avrcp_ct_register_notification(bd_addr, event_id, 0); /* TG通知变化后CT重新注册事件 */\r
- }\r
-}\r
-\r
-void InitBtHeadsetEvent()\r
-{\r
- g_avrcp_tg_audio_cb.notify_pass_through_status_cbk = PressButtonStatusCallback;\r
- g_avrcp_tg_audio_cb.get_media_status_cbk = MediaStatusCallback;\r
-\r
- g_avrcp_tg_cb.conn_state_changed_cb = ConnectTgStateChangedCallback;\r
-\r
- g_avrcp_ct_cb.conn_state_changed_cb = ConnCtStateChangedCallback;\r
- g_avrcp_ct_cb.press_button_cb = BtAvrcpCtPressButtonRspCallback;\r
- g_avrcp_ct_cb.release_button_cb = BtAvrcpCtReleaseButtonRspCallback;\r
- g_avrcp_ct_cb.supported_companies_cb = BtAvrcpCtSupportCompanyCallback;\r
- g_avrcp_ct_cb.supported_event_cb = BtAvrcpCtSupportEventCallback;\r
- g_avrcp_ct_cb.element_attr_cb = BtAvrcpCtGetElementAttriCallback;\r
- g_avrcp_ct_cb.play_status_cb = BtAvrcpCtGetPlayStatusCallback;\r
- g_avrcp_ct_cb.notification_cb = BtAvrcpCtNotificationCallback;\r
-\r
- avrcp_tg_register_callbacks(&g_avrcp_tg_cb);\r
- avrcp_ct_register_callbacks(&g_avrcp_ct_cb);\r
- bt_avrcp_tg_register_audio_cbk(&g_avrcp_tg_audio_cb);\r
-}\r
-#ifdef __cplusplus\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothItem view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-\r
-#include "bluetooth/BluetoothItemView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "common/image_cache_manager.h"\r
-\r
-namespace OHOS {\r
-constexpr uint16_t BUTTON_WIDTH = 351;\r
-constexpr uint16_t BUTTON_HEIGHT = 81;\r
-constexpr uint16_t IMAGE_WIDTH = 81;\r
-constexpr uint16_t IMAGE_HEIGHT = 81;\r
-constexpr uint16_t LABEL_HEIGHT = 81;\r
-constexpr uint16_t LABEL_WIDTH = 189;\r
-constexpr uint16_t BLELIST_BUTTON_HEIGHT = 81;\r
-\r
-#define BLUETOOTH_CONNECT_DELAY 200\r
-#define BLUETOOTH_CONNECT_X 294\r
-#define BLUETOOTH_CONNECT_Y 0\r
-#define BLUETOOTH_CONNECT_WIDTH 81\r
-#define BLUETOOTH_CONNECT_HEIGHT 81\r
-\r
-BluetoothItemView::BluetoothItemView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::BluetoothItemView");\r
- SetPosition(53, 106, 375, 81); // 53:x 106:y 375:width 81:height\r
- SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- SetUpChild();\r
- SetTouchable(true);\r
-\r
- Add(&button);\r
- Add(&connectStateLabel);\r
- Add(&namelabel);\r
- Add(&image);\r
- Add(&connectionAnimator);\r
-}\r
-\r
-BluetoothItemView::~BluetoothItemView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::~BluetoothItemView");\r
- Remove(&connectStateLabel);\r
- Remove(&button);\r
- Remove(&namelabel);\r
- Remove(&image);\r
- Remove(&connectionAnimator);\r
-}\r
-\r
-void BluetoothItemView::SetUpChild()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetUpChild");\r
- button.Resize(BUTTON_WIDTH, BUTTON_HEIGHT); // 351:Width\r
- button.SetImageSrc(PNG_BT_LIST, PNG_BT_LIST); // 跳转图片\r
- button.SetImagePosition(24, 0); // 24: lable x-coordinate\r
-\r
- namelabel.SetPosition(105, 0); // 105:x 0:y\r
- namelabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);\r
- namelabel.SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
- namelabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size\r
- namelabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-\r
- image.SetPosition(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT); // 0:x 0:y\r
- image.SetSrc(PNG_BLUETOOTHEAR);\r
- BtConnectImageAnimator();\r
-}\r
-\r
-void BluetoothItemView::SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetItemInfo");\r
- itemInfo_ = itemInfo;\r
- namelabel.SetText(reinterpret_cast<const char *>(itemInfo_.deviceName));\r
- if (isCaseList) {\r
- bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
- if ((!IsConnectAnimator()) && (ret)) {\r
- namelabel.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
- button.SetTouchable(false);\r
- SetTouchable(false);\r
- } else {\r
- namelabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- button.SetTouchable(true);\r
- SetTouchable(true);\r
- }\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d", GetViewIndex());\r
-}\r
-\r
-BluetoothCaseInfo *BluetoothItemView::GetItemInfo(void)\r
-{\r
- return &itemInfo_;\r
-}\r
-\r
-void BluetoothItemView::SetConnectionstatus(const BluetoothCaseInfo& infoData)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus");\r
- connectStateLabel.SetPosition(105, 0); // 105:x 0:y\r
- connectStateLabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);\r
- connectStateLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size\r
- connectStateLabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- connectStateLabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);\r
- bool aclConnected = bt_is_acl_connected((const bd_addr_t*)&infoData.addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus aclConnected %d", aclConnected);\r
- if (aclConnected) {\r
- connectStateLabel.SetText("已连接");\r
- } else {\r
- connectStateLabel.SetText("已断开");\r
- }\r
- namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_TOP);\r
- namelabel.Invalidate();\r
-}\r
-\r
-void BluetoothItemView::ConnectAnimatorStart(void)\r
-{\r
- connectionAnimator.SetVisible(true);\r
- connectionAnimator.Start();\r
-}\r
-\r
-void BluetoothItemView::ConnectAnimatorStop(void)\r
-{\r
- connectionAnimator.SetVisible(false);\r
- connectionAnimator.Stop();\r
-}\r
-\r
-bool BluetoothItemView::IsConnectAnimator(void)\r
-{\r
- return connectionAnimator.IsVisible();\r
-}\r
-\r
-void BluetoothItemView::BtConnectImageAnimator()\r
-{\r
- const char *connectImagePath[BLUETOOTH_CONNECT_IMAGE_NUM] = {\r
- PNG_A019_088_IMAGE_PATH,\r
- PNG_A019_089_IMAGE_PATH,\r
- PNG_A019_090_IMAGE_PATH,\r
- PNG_A019_091_IMAGE_PATH,\r
- PNG_A019_092_IMAGE_PATH,\r
- PNG_A019_093_IMAGE_PATH,\r
- PNG_A019_094_IMAGE_PATH,\r
- PNG_A019_095_IMAGE_PATH,\r
- };\r
-\r
- for (uint8_t i = 0; i < BLUETOOTH_CONNECT_IMAGE_NUM; i++) {\r
- connectImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(connectImagePath[i]);\r
- connectImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
- connectImageInfo[i].pos.x = BLUETOOTH_CONNECT_X;\r
- connectImageInfo[i].pos.y = BLUETOOTH_CONNECT_Y;\r
- connectImageInfo[i].width = BLUETOOTH_CONNECT_WIDTH;\r
- connectImageInfo[i].height = BLUETOOTH_CONNECT_HEIGHT;\r
- }\r
-\r
- connectionAnimator.SetImageAnimatorSrc(connectImageInfo, BLUETOOTH_CONNECT_IMAGE_NUM, BLUETOOTH_CONNECT_DELAY);\r
- connectionAnimator.SetRepeat(true);\r
- connectionAnimator.SetVisible(false);\r
-}\r
-\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothModel view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include <cstdint>\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "bluetooth/BluetoothWrapper.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-#include "connectnewphone/ConnectPhonePresenter.h"\r
-#include "player/BluetoothView.h"\r
-#include "bluetooth/BluetoothItemView.h"\r
-#include "player/PlayersModel.h"\r
-#include "phoneservice/PhoneAudio.h"\r
-#include "graphic_service.h"\r
-#include "msg_center.h"\r
-#include "bts_def.h"\r
-#include "bts_gatt_stru.h"\r
-#include "bts_a2dp_source.h"\r
-#include "bts_gatt_server.h"\r
-#include "bts_le_gap.h"\r
-#include "bts_spp.h"\r
-#include "osal_task.h"\r
-#ifdef SUPPORT_ALIPAY_SEC\r
-#include "alipay_feature.h"\r
-#endif\r
-#include "bts_a2dp_sink.h"\r
-#include "bts_feature.h"\r
-#include "bt_audio_hal_interface.h"\r
-#include "audio_manager_c_wrapper.h"\r
-#include "bts_avrcp_target.h"\r
-#include "msg_center_msg.h"\r
-#include "client/msg_center_client.h"\r
-#include "msg_center_protocol.h"\r
-#include "dfx_channel.h"\r
-#include "tcxo.h"\r
-#include "uiservice/ui_service.h"\r
-#include "network/network_listener.h"\r
-#if defined(SUPPORT_LWIP) && defined(SUPPORT_BREDR)\r
-#include "lwip_driver_adapter.h"\r
-#endif\r
-namespace OHOS {\r
-\r
-#define BT_SPP_TASK_STACK_SIZE 2048\r
-#define BT_SPP_TASK_PRI 20\r
-#define TEN 10\r
-\r
-constexpr uint16_t BLUETOOTH_MAX_NUM = 20;\r
-\r
-#define MEDIA_A2DP_SNK_INTERFACE 1\r
-osal_timer g_a2dp_stream_accept_timer = {nullptr, nullptr, 0, 0};\r
-#define A2DP_STREAM_ACCEPT_TIMER_PERIOD 500\r
-AudioFormatConfig g_audio_format_config = {AUDIO_DEFAULT, 0, 0};\r
-static uint16_t g_sample_svr_handle = 0;\r
-static uint16_t g_sample_characteristic_handle = 0;\r
-static uint16_t g_diag_characteristic_handle = 0;\r
-static uint16_t g_diag_desc_handle = 0;\r
-constexpr uint16_t g_sample_adv_id = 2;\r
-static bd_addr_t g_bd_addr = { 0 };\r
-\r
-void BluetoothModel::SetBluetoothCalleridStatus(int16_t value)\r
-{\r
- callerid = value;\r
-}\r
-\r
-int BluetoothModel::GetBluetoothCalleridStatus(void)\r
-{\r
- return callerid;\r
-}\r
-\r
-BluetoothModel::BluetoothModel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::BluetoothModel");\r
-}\r
-\r
-BluetoothModel *BluetoothModel::GetInstance(void)\r
-{\r
- static BluetoothModel instance;\r
- return &instance;\r
-}\r
-\r
-char* BluetoothModel::getWatchName(void)\r
-{\r
- return watchName;\r
-}\r
-\r
-void BluetoothModel::InitBluetoothInfo(void)\r
-{\r
- errcode_t ret;\r
- unsigned char nameLen = BD_NAME_LEN;\r
- memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
- ret = bluetooth_get_local_name((unsigned char *)watchName, &nameLen);\r
- // 为了实验室测试需要,客户需要自己修改\r
- if ((nameLen == strlen("WatchDemo") + 1) && (strcmp("WatchDemo", watchName) == 0)) {\r
- uint32_t currentUs = uapi_tcxo_get_us();\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "currentUs 0x%x", currentUs);\r
- // 设置蓝牙名称\r
- (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", (currentUs & 0xFFFF));\r
- ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_name %s ret = %u", watchName, ret);\r
-\r
- // 设置蓝牙地址\r
- bd_addr_t addr = {{0x1C, 0x1D, 0x2B, 0x0, 0x0, 0x0} ,0};\r
- addr.addr[3] = currentUs & 0xFF;\r
- addr.addr[4] = (currentUs & 0XFF00) >> 8;\r
- addr.addr[5] = currentUs & 0xFF;\r
- ret = bluetooth_set_local_addr(addr.addr, BD_ADDR_LEN);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_addr [0x%x:0x%x] ret = %u", addr.addr[0], addr.addr[1], ret);\r
- } else {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "watchName: %s", watchName);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "nameLen: %u", nameLen);\r
- }\r
-}\r
-\r
-void BluetoothModel::Init()\r
-{\r
-#ifndef SUPPORT_AUTO_OTA\r
- errcode_t ret;\r
-\r
- // 设置自动回连,ios一键双连依赖此配置\r
- bts_feature_t bts_feature = { 0 };\r
- bts_feature.bt_auto_reconnect_closed = 0;\r
- ret = bts_set_features(&bts_feature);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret);\r
-\r
- ret = enable_bt_stack();\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %u", ret);\r
-\r
- // 设置安全连接\r
- gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
- ret = gap_ble_set_sec_param(&sec_param);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
-\r
- InitBluetoothInfo();\r
- BtInitCallBacks();\r
- wrapper_ble_register();\r
-#ifdef SUPPORT_ALIPAY_SEC\r
- svr_alipay_bluetooth_init();\r
-#endif\r
- BtInitCallBacksEx();\r
- BtInitGatts();\r
- BtInitSpp();\r
-\r
- /* 实验室测试需要,开机开广播 */\r
- BleAdvStart();\r
-\r
- SetUpListCase();\r
- SetUpConnedDevicesList();\r
-#endif\r
-}\r
-\r
-void BluetoothModel::SetCaseListClear()\r
-{\r
- btScansDevicesList_.clear();\r
-}\r
-\r
-bool BluetoothModel::CheckExistScanList(BluetoothCaseInfo caseInfo)\r
-{\r
- std::list<BluetoothCaseInfo>::iterator node = btScansDevicesList_.begin();\r
- if (btScansDevicesList_.empty()) {\r
- return false;\r
- }\r
- while (node != btScansDevicesList_.end()) {\r
- if ((caseInfo.addr[0] == node->addr[0]) && (caseInfo.addr[1] == node->addr[1])\r
- && (caseInfo.addr[2] == node->addr[2]) && (caseInfo.addr[3] == node->addr[3])\r
- && (caseInfo.addr[4] == node->addr[4]) && (caseInfo.addr[5] == node->addr[5])) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "true");\r
- return true;\r
- }\r
- node++;\r
- }\r
- return false;\r
-}\r
-\r
-void BluetoothModel::SetUpListCase()\r
-{\r
- SetCaseListClear();\r
-}\r
-\r
-std::list<BluetoothCaseInfo>& BluetoothModel::GetCase()\r
-{\r
- return btScansDevicesList_;\r
-}\r
-\r
-void BluetoothModel::AddCase(BluetoothCaseInfo caseInfo)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCase::caseInfo addr: %02x%02x%02x%02x%02x%02x",\r
- caseInfo.addr[5], caseInfo.addr[4], caseInfo.addr[3], /* mac下标 0 1 2 3 4 5 */\r
- caseInfo.addr[2], caseInfo.addr[1], caseInfo.addr[0]);\r
- if (btScansDevicesList_.size() >= BLUETOOTH_MAX_NUM) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_.size is BLUETOOTH_MAX_NUM");\r
- return;\r
- } else {\r
- btScansDevicesList_.push_back(caseInfo);\r
- }\r
-}\r
-\r
-void BluetoothModel::SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi)\r
-{\r
- for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
- if ((it->addr[0] == bdAddr->addr[0]) && (it->addr[1] == bdAddr->addr[1])\r
- && (it->addr[2] == bdAddr->addr[2]) && (it->addr[3] == bdAddr->addr[3])\r
- && (it->addr[4] == bdAddr->addr[4]) && (it->addr[5] == bdAddr->addr[5])) {\r
- it->temp = rssi;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_ rssi:%d deviceName:%s", it->temp, it->deviceName);\r
- }\r
- }\r
-}\r
-\r
-\r
-bool CompBuletoothInfo(const BluetoothCaseInfo& a, const BluetoothCaseInfo& b)\r
-{\r
- if (a.temp > b.temp) {\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-void BluetoothModel::SortScansCaseRssi()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SortScansCaseRssi");\r
- btScansDevicesList_.sort(CompBuletoothInfo);\r
-}\r
-\r
-void BluetoothModel::ResetScanDevicesCase(const BluetoothCaseInfo& caseInfo)\r
-{\r
- for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
- if ((it->addr[0] == caseInfo.addr[0]) && (it->addr[1] == caseInfo.addr[1])\r
- && (it->addr[2] == caseInfo.addr[2]) && (it->addr[3] == caseInfo.addr[3])\r
- && (it->addr[4] == caseInfo.addr[4]) && (it->addr[5] == caseInfo.addr[5])) {\r
- (void)memcpy_s(it->deviceName, BD_NAME_LEN,\r
- caseInfo.deviceName, BD_NAME_LEN);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ResetConnedDevicesCase deviceName:%s", it->deviceName);\r
- }\r
- }\r
-}\r
-\r
-/* 已配对设备队列 */\r
-void BluetoothModel::SetConnedDevicesListClear()\r
-{\r
- btConnedDevicesList_->Clear();\r
-}\r
-\r
-void BluetoothModel::SetUpConnedDevicesList()\r
-{\r
- if (btConnedDevicesList_ == nullptr) {\r
- btConnedDevicesList_ = new List<BluetoothCaseInfo>();\r
- if (btConnedDevicesList_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothModel btConnedDevicesList_ new fail");\r
- return;\r
- }\r
- SetConnedDevicesListClear();\r
- unsigned int connedDevicesNum = 0;\r
- bool ret = gap_get_paired_devices_num(&connedDevicesNum);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);\r
-\r
- gap_paired_device_info_t *devInfo = (gap_paired_device_info_t*)malloc(sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
- if (devInfo == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DevInfo malloc failed %u", sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
- return;\r
- }\r
- ret = gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpConnedDevicesList gap_get_paired_devices_list ret = %d", ret);\r
-\r
- BluetoothCaseInfo caseInfo{};\r
- for (int i = 0; i < static_cast<int>(connedDevicesNum); ++i) {\r
- if ((gap_get_device_class((const bd_addr_t *)devInfo[i].addr.addr) & 0x200) != 0) {\r
- continue;\r
- }\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN,\r
- devInfo[i].addr.addr, BD_ADDR_LEN);\r
- (void)memcpy_s(caseInfo.deviceName, BD_NAME_LEN,\r
- devInfo[i].device_name, BD_NAME_LEN);\r
- AddConnedDevicesCase(caseInfo);\r
- }\r
- free(devInfo);\r
- }\r
-}\r
-\r
-void BluetoothModel::AddConnedDevicesCase(BluetoothCaseInfo caseInfo)\r
-{\r
- if (btConnedDevicesList_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btConnedDevicesList_ nullptr");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddConnedDevicesCase::caseInfo addr: %02x%02x%02x%02x%02x%02x",\r
- caseInfo.addr[5], caseInfo.addr[4], caseInfo.addr[3], /* mac下标 0 1 2 3 4 5 */\r
- caseInfo.addr[2], caseInfo.addr[1], caseInfo.addr[0]);\r
- if (btConnedDevicesList_->Size() >= BLUETOOTH_MAX_NUM) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btConnedDevicesList_->Size is BLUETOOTH_MAX_NUM");\r
- return;\r
- } else {\r
- btConnedDevicesList_->PushBack(caseInfo);\r
- }\r
-}\r
-\r
-List<BluetoothCaseInfo>& BluetoothModel::GetConnedDevicesCase()\r
-{\r
- return *btConnedDevicesList_;\r
-}\r
-\r
-void BluetoothModel::SetBtStatus(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtStatus tempMacValue: %02x%02x%02x%02x%02x%02x",\r
- tempMacValue.addr[5], tempMacValue.addr[4], tempMacValue.addr[3], /* mac챐 0 1 2 3 4 5 */\r
- tempMacValue.addr[2], tempMacValue.addr[1], tempMacValue.addr[0]); /* mac챐 0 1 2 3 4 5 */\r
- aclConnected = bt_is_acl_connected((const bd_addr_t*)&tempMacValue.addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "aclConnected %d", aclConnected);\r
-}\r
-\r
-bool BluetoothModel::GetAclConnected(void)\r
-{\r
- return aclConnected;\r
-}\r
-\r
-void BluetoothModel::SetTempMacValue(BluetoothCaseInfo *caseInfo)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetTempMacValue: %02x%02x%02x%02x%02x%02x",\r
- caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac챐 0 1 2 3 4 5 */\r
- caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac챐 0 1 2 3 4 5 */\r
- (void)memcpy_s(tempMacValue.addr, BD_ADDR_LEN,\r
- caseInfo->addr, BD_ADDR_LEN);\r
- (void)memcpy_s(tempMacValue.deviceName, BD_NAME_LEN,\r
- caseInfo->deviceName, BD_NAME_LEN);\r
-}\r
-\r
-BluetoothCaseInfo *BluetoothModel::GetTempMacValue(void)\r
-{\r
- return &tempMacValue;\r
-}\r
-\r
-void BluetoothModel::SetLastConnedAddr(const bd_addr_t *addr)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetLastConnedAddr: %02x%02x%02x%02x%02x%02x",\r
- addr->addr[5], addr->addr[4], addr->addr[3], /* mac챐 0 1 2 3 4 5 */\r
- addr->addr[2], addr->addr[1], addr->addr[0]); /* mac챐 0 1 2 3 4 5 */\r
- (void)memcpy_s(lastConnedAddr.addr, BD_ADDR_LEN, addr->addr, BD_ADDR_LEN);\r
-}\r
-\r
-bd_addr_t *BluetoothModel::GetLastConnedAddr(void)\r
-{\r
- return &lastConnedAddr;\r
-}\r
-\r
-void BluetoothModel::SetConnectionView(BluetoothItemView *item)\r
-{\r
- selectItemView = item;\r
-}\r
-\r
-BluetoothItemView *BluetoothModel::GetConnectionView()\r
-{\r
- return selectItemView;\r
-}\r
-\r
-\r
-void BluetoothModel::SetTagReconnectJump(bool tag)\r
-{\r
- tagReconnectJump = tag;\r
-}\r
-\r
-bool BluetoothModel::GetTagReconnectJump(void)\r
-{\r
- return tagReconnectJump;\r
-}\r
-\r
-void BluetoothModel::SetCurView(int16_t viewNum)\r
-{\r
- curView = viewNum;\r
-}\r
-\r
-int BluetoothModel::GetCurView(void)\r
-{\r
- return curView;\r
-}\r
-\r
-void BluetoothModel::SetTagConnectView(bool tag)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectView:%d", tag);\r
- tagConnectView = tag;\r
-}\r
-\r
-// 判断是否需要跳转连接成功\失败界面(已退出蓝牙模块)\r
-bool BluetoothModel::IsTagConnectView(void)\r
-{\r
- return tagConnectView;\r
-}\r
-\r
-void BluetoothModel::SetTagDisconnectView(bool tag)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagDisconnectView:%d", tag);\r
- tagDisconnectView = tag;\r
-}\r
-\r
-// 判断是否需要跳转连接失败界面\r
-bool BluetoothModel::IsTagDisconnectView(void)\r
-{\r
- return tagDisconnectView;\r
-}\r
-\r
-void BluetoothModel::SetTagConnectNew(bool tag)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectNew:%d", tag);\r
- tagConnectNew = tag;\r
-}\r
-\r
-void BluetoothModel::SetTagReturnToDeviceListView(bool tag)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagReturnToDeviceListView:%d", tag);\r
- tagReturnToDeviceListView = tag;\r
-}\r
-\r
-bool BluetoothModel::IsTagReturnToDeviceListView(void)\r
-{\r
- return tagReturnToDeviceListView;\r
-}\r
-\r
-// 判断断开连接时是否需要马上连接新设备\r
-bool BluetoothModel::IsTagConnectNew(void)\r
-{\r
- return tagConnectNew;\r
-}\r
-\r
-void BluetoothModel::SetTagScanDeviceClicked(bool tag)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagScanDeviceClicked:%d", tag);\r
- tagScanDeviceClicked = tag;\r
-}\r
-\r
-// 判断是否已点击设备请求连接\r
-bool BluetoothModel::IsTagScanDeviceClicked(void)\r
-{\r
- return tagScanDeviceClicked;\r
-}\r
-\r
-bool BluetoothModel::CheckExistConnedList(BluetoothCaseInfo caseInfo)\r
-{\r
- ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_ ->Begin();\r
- if (node == nullptr) {\r
- return false;\r
- } else if ((caseInfo.addr[0] == 0) && (caseInfo.addr[1] == 0)\r
- && (caseInfo.addr[2] == 0) && (caseInfo.addr[3] == 0)\r
- && (caseInfo.addr[4] == 0) && (caseInfo.addr[5] == 0)) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CheckExistConnedList false addr: 000000000000");\r
- return true;\r
- }\r
- while (node != btConnedDevicesList_ ->End()) {\r
- if ((caseInfo.addr[0] == node->data_.addr[0]) && (caseInfo.addr[1] == node->data_.addr[1])\r
- && (caseInfo.addr[2] == node->data_.addr[2]) && (caseInfo.addr[3] == node->data_.addr[3])\r
- && (caseInfo.addr[4] == node->data_.addr[4]) && (caseInfo.addr[5] == node->data_.addr[5])) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CheckExistConnedList true");\r
- return true;\r
- }\r
- node = node->next_;\r
- }\r
- return false;\r
-}\r
-\r
-bool BluetoothModel::FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo)\r
-{\r
- if ((listInfo.addr[0] == caseInfo->addr[0]) && (listInfo.addr[1] == caseInfo->addr[1]) &&\r
- (listInfo.addr[2] == caseInfo->addr[2]) && (listInfo.addr[3] == caseInfo->addr[3]) &&\r
- (listInfo.addr[4] == caseInfo->addr[4]) && (listInfo.addr[5] == caseInfo->addr[5])) {\r
- (void)memcpy_s(caseInfo->deviceName, BD_NAME_LEN, listInfo.deviceName, BD_NAME_LEN);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FindNameFromList success, deviceName:%s", listInfo.deviceName);\r
- return true;\r
- } else {\r
- return false;\r
- }\r
-}\r
-\r
-bool BluetoothModel::FindNameFromList(BluetoothCaseInfo *caseInfo)\r
-{\r
- ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_->Begin();\r
- if (!btScansDevicesList_.empty()) {\r
- for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
- if (FindNameByAddr(*it, caseInfo)) {\r
- return true;\r
- }\r
- }\r
- }\r
- if (node != nullptr) {\r
- while (node != btConnedDevicesList_->End()) {\r
- if (FindNameByAddr(node->data_, caseInfo)) {\r
- return true;\r
- }\r
- node = node->next_;\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-bool BluetoothModel::GetBluetoothAclState(void)\r
-{\r
- if ((lastConnedAddr.addr[0] == 0) && (lastConnedAddr.addr[1] == 0) &&\r
- (lastConnedAddr.addr[2] == 0) && (lastConnedAddr.addr[3] == 0) &&\r
- (lastConnedAddr.addr[4] == 0) && (lastConnedAddr.addr[5] == 0)) {\r
- return false;\r
- } else {\r
- return bt_is_acl_connected(&lastConnedAddr);\r
- }\r
-}\r
-\r
-bool BluetoothModel::GetAdvStartState(void)\r
-{\r
- return advStartState;\r
-}\r
-void BluetoothModel::SetAdvStartState(bool state)\r
-{\r
- advStartState = state;\r
-}\r
-\r
-int BluetoothModel::ConnectRemoteDevice(const bd_addr_t *addr)\r
-{\r
- /* 恢厂后耳机连接要开启BT广播否则会导致AVRCP无法音量控制 */\r
- bool ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 60);\r
- if (!ret) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
- }\r
- errcode_t retVal = gap_connect_remote_device(addr);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice gap_connect_remote_device ret = 0x%x", retVal);\r
- (void)memcpy_s(&remoteConnectAddr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
- return retVal;\r
-}\r
-\r
-bool BluetoothModel::ConnectRemoteCheck(const bd_addr_t *addr)\r
-{\r
- bool ret;\r
- if ((remoteConnectAddr.addr[0] == addr->addr[0]) && (remoteConnectAddr.addr[1] == addr->addr[1]) &&\r
- (remoteConnectAddr.addr[2] == addr->addr[2]) && (remoteConnectAddr.addr[3] == addr->addr[3]) &&\r
- (remoteConnectAddr.addr[4] == addr->addr[4]) && (remoteConnectAddr.addr[5] == addr->addr[5])) {\r
- ret = true;\r
- (void)memset_s(&remoteConnectAddr, sizeof(bd_addr_t), 0, sizeof(bd_addr_t));\r
- } else {\r
- ret = false;\r
- }\r
- return ret;\r
-}\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-// 回调: gap_read_remote_rssi_value 接口的数据上报\r
-void BtGapReadRemoteRssiEventCallback(const bd_addr_t *bdAddr, int rssi, int status)\r
-{\r
- UNUSED(status);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapReadRemoteRssiEventCallback addr: %02x%02x%02x%02x%02x%02x",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- BluetoothModel::GetInstance()->SetScansCaseRssi(bdAddr, rssi);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapReadRemoteRssiEventCallback SetSortCaseRssi: %d status: %d", rssi, status);\r
-}\r
-\r
-// 回调:发现状态变化上报/扫描结束\r
-void BtGapDiscoveryStateChangedCallback(int status)\r
-{\r
- UNUSED(status);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryStateChangedCallback %d", status);\r
-}\r
-\r
-static void ChangeScanView()\r
-{\r
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
- if (bluetoothEarPhoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
- return;\r
- }\r
- bluetoothEarPhoneView->setScanStatus(false);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan one jumpView");\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- JumpView *jumpView = JumpView::GetInstance();\r
- if (jumpView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
- return;\r
- }\r
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
- if (mainBluetoothView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
- return;\r
- }\r
- mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHEARLISTVIEW);\r
- }\r
- // 暂停动画\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtAnimatorStop bk");\r
- bluetoothEarPhoneView->BtAnimatorStop();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtAnimatorStop");\r
-}\r
-\r
-void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr)\r
-{\r
- BluetoothCaseInfo caseInfo{};\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
-\r
- unsigned char nameLen = BD_NAME_LEN;\r
- bool getNameRet = gap_get_device_name(&bdAddr, caseInfo.deviceName, &nameLen);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",\r
- getNameRet, nameLen, caseInfo.deviceName);\r
-\r
- if (nameLen == 0) { // 过滤未扫描到名字的设备\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");\r
- return;\r
- }\r
- // 去重操作\r
- bool tag = BluetoothModel::GetInstance()->CheckExistScanList(caseInfo);\r
- if (!tag) {\r
- BluetoothModel::GetInstance()->AddCase(caseInfo); // 增加扫描设备信息\r
- }\r
- bool ret = gap_read_remote_rssi_value(&bdAddr); // 获取rssi\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret);\r
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
- if (bluetoothEarPhoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
- return;\r
- }\r
- tag = bluetoothEarPhoneView->getScanStatus();\r
- if (tag) { // 跳转\r
- ChangeScanView();\r
- } else {\r
- BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
- if (bluetoothEarListView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");\r
- return;\r
- }\r
- if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");\r
- return;\r
- } // 刷新\r
- bluetoothEarListView->GetScanUIList()->RefreshList();\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");\r
-}\r
-\r
-void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairStatusChangedCallback addr: ****%02x%02x%02x%02x status: %d\n",\r
- bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], status); /* addr下标 0 1 2 3 */\r
- if (status == GAP_PAIR_PAIRED) {\r
- if (ConnectPhonePresenter::GetInstance() != nullptr) {\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- }\r
- }\r
-}\r
-\r
-void BtGapPairRequestedCallback(const bd_addr_t *bdAddr)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairRequestedCallback addr: ****%02x%02x%02x%02x\n",\r
- bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* addr下标 0 1 2 3 */\r
-}\r
-\r
-void BtGapPairConfirmedCallback(const bd_addr_t *bdAddr, int req_type, int number)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairConfirmedCallback addr: ****%02x%02x%02x%02x req_type: %d number: %d\n",\r
- bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], /* addr下标 0 1 2 3 */\r
- req_type, number);\r
-}\r
-\r
-// 回调:扫描结果处理/发现结果上报\r
-void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)\r
-{\r
- if ((gap_get_device_class(bdAddr) & DEVICE_MAJOR_CLASS_PHONE) != 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
- return;\r
- }\r
-\r
- if (bdAddr == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr nullptr");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback addr: %02x%02x%02x%02x%02x%02x",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&BluetoothModel::BtGapDiscoveryResultCallbakHandle,\r
- BluetoothModel::GetInstance(), *bdAddr));\r
-}\r
-\r
-void HandleBeforeChangeView()\r
-{\r
- int curView = BluetoothModel::GetInstance()->GetCurView();\r
- if (curView == BLUETOOTHEARPHONEVIEW) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHEARPHONEVIEW");\r
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
- if (bluetoothEarPhoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothEarPhoneView == nullptr");\r
- return;\r
- }\r
- bluetoothEarPhoneView->BtAnimatorStop();\r
- bluetoothEarPhoneView->StopBtDiscovery();\r
- } else if (curView == BLUETOOTHEARLISTVIEW) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHEARLISTVIEW");\r
- BluetoothEarPhoneView *bluetoothEarPhone = BluetoothEarPhoneView::GetInstance();\r
- if (bluetoothEarPhone == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothEarPhoneView == nullptr");\r
- return;\r
- }\r
- bluetoothEarPhone->StopBtDiscovery();\r
- BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
- if (pbItermView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");\r
- return;\r
- }\r
- pbItermView->ConnectAnimatorStop();\r
- BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
- } else if (curView == BLUETOOTHRECONNECTVIEW) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHRECONNECTVIEW");\r
- BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
- if (bluetoothReconnectView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothReconnectView == nullptr");\r
- return;\r
- }\r
- bluetoothReconnectView->BtReconnectStop();\r
- }\r
-}\r
-\r
-static void ACLConnectionSuss(const bd_addr_t &bdAddr)\r
-{\r
- // 判断是否已退出蓝牙模块(无需跳转)\r
- bool tagConnectView = BluetoothModel::GetInstance()->IsTagConnectView();\r
- if (!tagConnectView) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback tagConnectView fail");\r
- return;\r
- }\r
- // 成功提示\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GAP_ACL_STATE_CONNECTED");\r
- HandleBeforeChangeView();\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- JumpView *jumpView = JumpView::GetInstance();\r
- if (jumpView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
- return;\r
- }\r
- jumpView->ChangeView(BluetoothModel::GetInstance()->GetCurView(),\r
- JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
- if (mainBluetoothView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
- return;\r
- }\r
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSSUCCMESSAGEVIEW);\r
- }\r
- TipsSuccMessageView *tipsSuccMessageView = TipsSuccMessageView::GetInstance();\r
- if (tipsSuccMessageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionSuss tipsSuccMessageView GetInstance fail");\r
- return;\r
- }\r
- tipsSuccMessageView->RefreshNameLabel(bdAddr);\r
-}\r
-\r
-static void ACLConnectionFail(const bd_addr_t &bdAddr)\r
-{\r
- // 判断是否已退出蓝牙模块(无需跳转)\r
- bool tagConnectView = BluetoothModel::GetInstance()->IsTagConnectView();\r
- // 判断是否无需跳转到失败界面\r
- bool tagDisconnectView = BluetoothModel::GetInstance()->IsTagDisconnectView();\r
- if ((!tagConnectView) || (!tagDisconnectView)) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback tagDisconnectView fail");\r
- return;\r
- }\r
- // 失败提示页\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "conn fail");\r
- HandleBeforeChangeView();\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- JumpView *jumpView = JumpView::GetInstance();\r
- if (jumpView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
- return;\r
- }\r
- jumpView->ChangeView(BluetoothModel::GetInstance()->GetCurView(),\r
- JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
- if (mainBluetoothView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
- return;\r
- }\r
- mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSCONNFAILMESSAGEVIEW);\r
- }\r
- TipsConnFailMessageView *tipsConnFailMessageView = TipsConnFailMessageView::GetInstance();\r
- if (tipsConnFailMessageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionFail tipsConnFailMessageView GetInstance fail");\r
- return;\r
- }\r
- tipsConnFailMessageView->RefreshNameLabel(bdAddr);\r
-}\r
-\r
-static void DisconnectedHandle()\r
-{\r
- BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
- BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();\r
- if (bluetoothDeviceListView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback bluetoothDeviceListView == nullptr");\r
- return;\r
- }\r
- UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
- if (deviceList == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisconnectedHandle deviceList nullptr");\r
- return;\r
- }\r
- deviceList->RefreshList();\r
- BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
- if (bluetoothOptionsView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback bluetoothOptionsView == nullptr");\r
- return;\r
- }\r
- bluetoothOptionsView->RefreshText();\r
-}\r
-\r
-void BluetoothModel::BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned int reason, const bd_addr_t &bdAddr)\r
-{\r
- bool tag = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
- if ((reason == 0x13) || (reason == 0x14) || (reason == 0x15) || (reason == 0x3D) || (reason == 0x08 && (!tag))) { // 连接断开\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "The peer end is disconnected.");\r
- DisconnectedHandle();\r
- } else if (reason == 0x16) { // 主动断开连接\r
- DisconnectedHandle();\r
- BluetoothCaseInfo *onClickBtCaseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- if (BluetoothModel::GetInstance()->IsTagConnectNew()) {\r
- errcode_t retVal = ConnectRemoteDevice((const bd_addr_t *)&onClickBtCaseInfo->addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice retVal = %d", retVal);\r
- }\r
- } else if ((reason == 0xb) || (reason > 0x45)) { // 0xb:重复点击连接按钮 0x45:acl状态最大参数\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reason is false.");\r
- SetTagDisconnectView(false);\r
- }\r
-\r
- if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
- SetLastConnedAddr(&bdAddr);\r
- // 将数据存入设备列表\r
- BluetoothCaseInfo *info = GetTempMacValue();\r
- tag = CheckExistConnedList(*info);\r
- if ((!tag) && (memcmp(info->addr, bdAddr.addr, BD_ADDR_LEN) == 0)) {\r
- AddConnedDevicesCase(*info);\r
- }\r
- } else {\r
- ACLConnectionFail(bdAddr);\r
- }\r
-\r
- if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
- if (BluetoothModel::GetInstance()->ConnectRemoteCheck(&bdAddr)) {\r
- int32_t retA2dp = a2dp_src_connect(&bdAddr);\r
- if (retA2dp) {\r
- ACLConnectionFail(bdAddr);\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connect result 0x%x", retA2dp);\r
- } else {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ingore a2dp_src_connect");\r
- }\r
- }\r
-}\r
-\r
-void ChangeBleConnectToMax()\r
-{\r
- if (msg_center_get_trans_channel() == DIAG_FRAME_FID_BT) {\r
- gap_conn_param_update_t conn_param = { 0 };\r
- conn_param.conn_handle = BLUETOOTH_CONN_HANDLE;\r
- conn_param.interval_min = BLUETOOTH_INTERVAL_TOMAX_MIN;\r
- conn_param.interval_max = BLUETOOTH_INTERVAL_TOMAX_MAX;\r
- conn_param.slave_latency = BLUETOOTH_LATENCY;\r
- conn_param.timeout_multiplier = BLUETOOTH_TIMEOUT_MUTIPLIER;\r
- errcode_t ret = gap_ble_connect_param_update(&conn_param);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnectCallback change to max interval ret:%d : latency-min:%u latency-max:%u\n", \r
- ret, conn_param.interval_min, conn_param.interval_max);\r
- }\r
-}\r
-\r
-void ChangeBleConnectToDefault()\r
-{\r
- if (msg_center_get_trans_channel() == DIAG_FRAME_FID_BT) {\r
- gap_conn_param_update_t conn_param = { 0 };\r
- conn_param.conn_handle = BLUETOOTH_CONN_HANDLE;\r
- conn_param.interval_min = BLUETOOTH_INTERVAL_TODEFAULT_MIN;\r
- conn_param.interval_max = BLUETOOTH_INTERVAL_TODEFAULT_MAX;\r
- conn_param.slave_latency = BLUETOOTH_LATENCY;\r
- conn_param.timeout_multiplier = BLUETOOTH_TIMEOUT_MUTIPLIER;\r
- errcode_t ret = gap_ble_connect_param_update(&conn_param);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnectCallback change to default interval ret:%d : latency-min:%u latency-max:%u\n", \r
- ret, conn_param.interval_min, conn_param.interval_max);\r
- }\r
-}\r
-\r
-// 回调:ACL连接状态上报\r
-void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- static bd_addr_t gapAclConnectAddr{0}; /* 连接后保存手机地址,手表清除手机配对后查询不到class比较手机地址 */\r
- if ((gap_get_device_class(bdAddr) & 0x200) != 0 || memcmp(gapAclConnectAddr.addr, bdAddr->addr, BD_ADDR_LEN) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
- if (state == GAP_ACL_STATE_DISCONNECTED) {\r
- /* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
- MsgCenterSendMsg(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
- SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0);\r
- // send to ace network\r
- // SetAclConnected(false);\r
- net_connect_status_change(NETWORK_TYPE_BLUETOOTH, CONNECTION_STATUS_DISCONNECTED);\r
- } else if (state == GAP_ACL_STATE_CONNECTED) {\r
- (void)memcpy_s(gapAclConnectAddr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
- MsgCenterSendMsg(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
- SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0);\r
- // send to ace network\r
- // SetAclConnected(true);\r
-#if defined(SUPPORT_LWIP) && defined(SUPPORT_BREDR)\r
- bt_pan_open();\r
-#endif\r
- net_connect_status_change(NETWORK_TYPE_BLUETOOTH, CONNECTION_STATUS_CONNECTED);\r
- }\r
- return;\r
- }\r
-\r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(&BluetoothModel::BtGapAclStateChangedHandle, BluetoothModel::GetInstance(), state, reason, *bdAddr));\r
-}\r
-\r
-// 回调:远端设备名称变化\r
-void BtRemoteNameChangedCallback(const bd_addr_t *bdAddr, const unsigned char *deviceName, unsigned char length)\r
-{\r
- if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback: Mobile Phone Device");\r
- return;\r
- }\r
- BluetoothCaseInfo caseInfo{};\r
- if (bdAddr == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback addr nullptr");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback addr: %02x%02x%02x%02x%02x%02x",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
-\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
- int ret = memcpy_s(caseInfo.deviceName, BD_NAME_LEN, deviceName, length);\r
- if (ret != EOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback memcpy fail!");\r
- return;\r
- }\r
- BluetoothModel::GetInstance()->ResetScanDevicesCase(caseInfo);\r
-}\r
-\r
-void BtIsAcceptConnOnSafeModeCallback(const bd_addr_t *bdAddr, bool *res)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtIsAcceptConnOnSafeModeCallback addr: %02x%02x%02x%02x%02x%02x set *res true",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* addr下标 3 4 5 */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* addr下标 0 1 2 */\r
- *res = true;\r
-}\r
-\r
-static void A2dpSrcConnectstateChanged(bd_addr_t *bdAddr, int connState)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectStateChangedCallback addr: %02x%02x%02x%02x%02x%02x connState: %x",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], connState); /* 2 1 0 idx */\r
- if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectstateChangedCb: Mobile Phone Device");\r
- return;\r
- }\r
- if (connState == PROFILE_STATE_CONNECTED) {\r
- uint32_t ret = avrcp_ct_connect(bdAddr);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp_ct_connect ret = 0x%x", ret);\r
- PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_CONNECTED);\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionSuss, *bdAddr));\r
- }\r
-\r
- if (connState == PROFILE_STATE_DISCONNECTED) {\r
- PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_DISCONNECTED);\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionFail, *bdAddr));\r
- /* 实验室测试耳机回连场景,用户根据需要调整策略 */\r
- bool ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 60); // start scan\r
- if (!ret) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "a2dp disc: gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
- }\r
- }\r
-}\r
-\r
-static void A2dpSrcPlayingStateChanged(bd_addr_t *bdAddr, int playState)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "A2dpSrcPlayingStateChangedCallback addr: %02x%02x%02x%02x%02x%02x playState: %x",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], playState); /* 2 1 0 idx */\r
-}\r
-\r
-static void A2dpSrcConfigureChanged(bd_addr_t *bdAddr, a2dp_codec_info_t *info)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "A2dpSrcConfigurationChangedCallback addr: %02x%02x%02x%02x%02x%02x ",\r
- bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
- bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "codec_priority: %04x codec_type: %04x sample_rate: %02x bits_per_sample: %02x channel_mode: %02x ",\r
- info->codec_priority, info->codec_type, info->sample_rate, info->bits_per_sample, info->channel_mode);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "codec_specific1: %04x codec_specific2: %04x codec_specific3: %04x codec_specific4: %04x",\r
- info->codec_specific1, info->codec_specific2, info->codec_specific3, info->codec_specific4);\r
-}\r
-\r
-static void BleConnStateChangeCallback(unsigned short connId, bd_addr_t *addr, gap_ble_conn_state_t connState,\r
- gap_ble_pair_state_t pairState, gap_ble_disc_reason_t discReason)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnStateChangeCallback connId 0x%x, connState 0x%x, pairState 0x%x",\r
- connId, connState, pairState);\r
- if (GAP_BLE_STATE_DISCONNECTED == connState) { // restart ble adv when disconnected\r
- /* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
- MsgCenterSendMsg(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
- msg_center_set_ble_conn_state(GAP_BLE_STATE_DISCONNECTED);\r
- // send to ace network\r
- net_connect_status_change(NETWORK_TYPE_BLUETOOTH_LE, CONNECTION_STATUS_DISCONNECTED);\r
- } else {\r
- MsgCenterSendMsg(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
- msg_center_set_ble_conn_state(GAP_BLE_STATE_CONNECTED);\r
- (void)memcpy_s(&g_bd_addr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
- // send to ace network\r
- net_connect_status_change(NETWORK_TYPE_BLUETOOTH_LE, CONNECTION_STATUS_CONNECTED);\r
- }\r
- // send to ace network\r
-}\r
-\r
-static void BleAdvStartCallback(uint8_t advId, adv_status_t status)\r
-{\r
- if (g_sample_adv_id == advId) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStartCallback advId: %d, status:%d\n", advId, status);\r
- BluetoothModel::GetInstance()->SetAdvStartState(true);\r
- }\r
-}\r
-\r
-static void BleAdvStopCallback(uint8_t advId, adv_status_t status)\r
-{\r
- if (g_sample_adv_id == advId) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStopCallback advId: %d, status:%d\n", advId, status);\r
- BluetoothModel::GetInstance()->SetAdvStartState(false);\r
- }\r
-}\r
-\r
-static void BleAdvTerminateCallback(uint8_t advId, adv_status_t status)\r
-{\r
- if (g_sample_adv_id == advId) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvTerminateCallback advId: %d, status:%d\n", advId, status);\r
- BluetoothModel::GetInstance()->SetAdvStartState(false);\r
- // 此处开广播是为了实验室测试需要,客户需要自己修改\r
- BleAdvStart();\r
- }\r
-}\r
-\r
-static void BtGattsServiceAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, errcode_t status)\r
-{\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0xF01F)) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",\r
- status, serverId, srvcHandle);\r
- uint16_t sample_id = 0xF11F;\r
- uint16_t diag_id = 0xF21F;\r
- gatts_add_chara_info_t character;\r
- uint16_t value = 0;\r
-\r
- memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
- character.chara_uuid.uuid_len = sizeof(sample_id);\r
- memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&sample_id, sizeof(sample_id));\r
- character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE;\r
- character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP;\r
- character.value_len = (uint16_t)sizeof(value);\r
- character.value = (uint8_t *)(&value);\r
- int ret = gatts_add_characteristic(serverId, srvcHandle, &character);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic sample ret 0x%x", ret);\r
-\r
- memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
- character.chara_uuid.uuid_len = sizeof(diag_id);\r
- memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&diag_id, sizeof(diag_id));\r
- character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ;\r
- character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP | GATT_CHARACTER_PROPERTY_BIT_READ | GATT_CHARACTER_PROPERTY_BIT_NOTIFY;\r
- character.value_len = (uint16_t)sizeof(value);\r
- character.value = (uint8_t *)(&value);\r
-\r
- ret = gatts_add_characteristic(serverId, srvcHandle, &character);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic diag ret 0x%x", ret);\r
-\r
- g_sample_svr_handle = srvcHandle;\r
- }\r
-}\r
-\r
-static void BtGattsCharacteristicAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, gatts_add_character_result_t *result, errcode_t status)\r
-{\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0xF11F)) {\r
- g_sample_characteristic_handle = result->value_handle;\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
- status, serverId, srvcHandle, g_sample_characteristic_handle);\r
- }\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0xF21F)) {\r
- g_diag_characteristic_handle = result->value_handle;\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
- status, serverId, srvcHandle, g_diag_characteristic_handle);\r
-\r
- uint8_t ccc_val[] = { 0x01, 0x00 };\r
- uint16_t diag_desc = 0x0229;\r
- gatts_add_desc_info_t descriptor;\r
- memset_s(&descriptor, sizeof(gatts_add_desc_info_t), 0, sizeof(gatts_add_desc_info_t));\r
- descriptor.desc_uuid.uuid_len = sizeof(diag_desc);\r
- memcpy_s(descriptor.desc_uuid.uuid, sizeof(descriptor.desc_uuid.uuid), (char *)&diag_desc, sizeof(diag_desc));\r
- descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
- descriptor.value_len = (uint16_t)sizeof(ccc_val);\r
- descriptor.value = ccc_val;\r
- int ret = gatts_add_descriptor(serverId, srvcHandle, &descriptor);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_descriptor diag_desc ret 0x%x", ret);\r
- }\r
-\r
- if (g_sample_characteristic_handle != 0 && g_diag_characteristic_handle !=0 && g_diag_desc_handle != 0) {\r
- int ret = gatts_start_service(serverId, srvcHandle);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);\r
- }\r
-}\r
-\r
-static void BtGattsDescriptorAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, uint16_t descriptorHandle, errcode_t status)\r
-{\r
- if (g_sample_svr_handle == srvcHandle) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",\r
- status, serverId, srvcHandle, descriptorHandle);\r
- g_diag_desc_handle = descriptorHandle;\r
- }\r
-\r
- if (g_sample_characteristic_handle != 0 && g_diag_characteristic_handle !=0 && g_diag_desc_handle != 0) {\r
- int ret = gatts_start_service(serverId, srvcHandle);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);\r
- }\r
-}\r
-\r
-static void BtGattsServiceStartCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
-{\r
- if (g_sample_svr_handle == srvcHandle) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
- }\r
-}\r
-\r
-static void BtGattsServiceStopCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStopCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
-}\r
-\r
-static void BtGattsServiceDeleteCallback(uint8_t serverId, errcode_t status)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceDeleteCallback 0x%x 0x%x", status, serverId);\r
-}\r
-\r
-static void BtGattsRequestReadCallback(uint8_t serverId, uint16_t connId, gatts_req_read_cb_t *readCbPara, errcode_t status)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGattsRequestReadCallback handle = %u", readCbPara->handle);\r
-}\r
-\r
-static void BtGattsRequestWriteCallback(uint8_t serverId, uint16_t connId, gatts_req_write_cb_t *writeCbPara, errcode_t status)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback handle = %u", writeCbPara->handle);\r
- if (g_sample_characteristic_handle == writeCbPara->handle) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback handle = %u", writeCbPara->handle);\r
- if (writeCbPara->length == 9) {\r
- if (memcmp("open ctkd", writeCbPara->value, writeCbPara->length) == 0) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "enable ctkd");\r
- // 一键双连使能(依赖安全连接参数配置)\r
- errcode_t ret = gap_ble_set_ctkd_enable(true);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %u", ret);\r
-\r
- // 发起ble配对\r
- ret = gap_ble_pair_remote_device(&g_bd_addr);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_pair_remote_device ret = %u ", ret);\r
- }\r
- } else if (writeCbPara->length == 10) {\r
- if (memcmp("close ctkd", writeCbPara->value, writeCbPara->length) == 0) {\r
- // 一键双连去使能\r
- errcode_t ret = gap_ble_set_ctkd_enable(false);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_disable ret = %u", ret);\r
- }\r
- }\r
- } else if (g_diag_characteristic_handle == writeCbPara->handle) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "diag_gatt_write_req_cbk handle = %u", writeCbPara->handle);\r
- diag_gatt_write_req_cbk(serverId, connId, writeCbPara, status);\r
- } else if (g_diag_desc_handle == writeCbPara->handle) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "diag_gatt_set_handle handle = %u", writeCbPara->handle);\r
- if ((writeCbPara->length == 2) && (*(char*)(writeCbPara->value) == 1)) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "open gatt channel");\r
- diag_gatt_set_handle(serverId, connId, g_diag_characteristic_handle);\r
- msg_center_set_trans_channel(DIAG_FRAME_FID_BT);\r
- } else if ((writeCbPara->length == 2) && (*(char*)(writeCbPara->value) == 0)) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "close gatt channel");\r
- diag_gatt_set_handle(0, 0, 0);\r
- msg_center_set_trans_channel(DIAG_FRAME_FID_PHONE);\r
- }\r
- }\r
-}\r
-\r
-static void BtGattsMtuChangedCallback(uint8_t serverId, uint16_t connId, uint16_t mtuSize, errcode_t status)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsMtuChangedCallback connId = %u mtuSize = %u", connId, mtuSize);\r
-}\r
-\r
-static void BtA2dpSnkAcceptTimerStop(void)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "stop timer\n");\r
- if (g_a2dp_stream_accept_timer.timer != nullptr) {\r
- (void)osal_timer_stop(&g_a2dp_stream_accept_timer);\r
- (void)osal_timer_destroy(&g_a2dp_stream_accept_timer);\r
- g_a2dp_stream_accept_timer.timer = nullptr;\r
- }\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "stop timer success!\n");\r
-}\r
-\r
-static void BtA2dpSnStartAcceptHandler(unsigned long data)\r
-{\r
- UNUSED(data);\r
- bd_addr_t active_bd_addr = a2dp_snk_get_active_device();\r
- a2dp_snk_start_accept(&active_bd_addr);\r
- BtA2dpSnkAcceptTimerStop();\r
-}\r
-\r
-static errcode_t BtA2dpSnkStartAcceptTimer(void)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "start timer\n");\r
- if (g_a2dp_stream_accept_timer.timer != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timer is running");\r
- return ERRCODE_SUCC;\r
- }\r
-\r
- g_a2dp_stream_accept_timer.handler = BtA2dpSnStartAcceptHandler;\r
- g_a2dp_stream_accept_timer.interval = A2DP_STREAM_ACCEPT_TIMER_PERIOD;\r
-\r
- int32_t timer_ret = osal_timer_init(&g_a2dp_stream_accept_timer);\r
- if (timer_ret != EOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "create timer error! ret: %x\n", timer_ret);\r
- BtA2dpSnkAcceptTimerStop();\r
- return ERRCODE_FAIL;\r
- }\r
- timer_ret = osal_timer_start(&g_a2dp_stream_accept_timer);\r
- if (timer_ret != EOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "start timer error! ret: %x\n", timer_ret);\r
- BtA2dpSnkAcceptTimerStop();\r
- return ERRCODE_FAIL;\r
- }\r
- return ERRCODE_SUCC;\r
-}\r
-\r
-static int32_t BtA2dpSnkAudioCreate()\r
-{\r
-#if MEDIA_A2DP_SNK_INTERFACE\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audioFormat %d channelCount %d sampleRate %d \n",\r
- g_audio_format_config.audioFormat, g_audio_format_config.channelCount, g_audio_format_config.sampleRate);\r
-\r
- int32_t ret = AudioManagerA2dpSinkSetParam(g_audio_format_config);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkSetParam ret %x\n", ret);\r
- ret = AudioManagerA2dpSinkCreate();\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkCreate ret %x\n", ret);\r
-#endif\r
- /* 起定时器接受音乐开始请求 */\r
- (void)BtA2dpSnkStartAcceptTimer();\r
- return 0;\r
-}\r
-\r
-static int32_t BtA2dpSnkAudioDestroy()\r
-{\r
-#if MEDIA_A2DP_SNK_INTERFACE\r
- int32_t ret = AudioManagerA2dpSinkDestroy();\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkDestroy ret %x\n", ret);\r
-#endif\r
- return 0;\r
-}\r
-\r
-static void BtA2dpSnkConnectStateChangedCb(bd_addr_t *bd_addr, int conn_state)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x conn_state: %x\n",\r
- bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], conn_state); /* 3 2 1 0 idx */\r
-}\r
-\r
-static void BtA2dpSnkStartStreamReqCb(bd_addr_t *bd_addr)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n",\r
- bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* 3 2 1 0 idx */\r
- BtA2dpSnkAudioCreate();\r
-}\r
-\r
-static void BtA2dpSnkPlayingStateChangedCb(bd_addr_t *bd_addr, int playing_state)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x playing_state: %x\n",\r
- bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], playing_state); /* 3 2 1 0 idx */\r
- if (playing_state == A2DP_NOT_PLAYING) {\r
- BtA2dpSnkAudioDestroy();\r
- }\r
-}\r
-\r
-static void BtA2dpSnkConfigChangedCb(bd_addr_t *bd_addr, a2dp_snk_codec_info_t *info)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x ",\r
- bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* 3 2 1 0 idx */\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,\r
- "codec_priority: %04x codec_type: %04x sample_rate: %02x bits_per_sample: %02x channel_mode: %02x",\r
- info->codec_priority, info->codec_type, info->sample_rate, info->bits_per_sample, info->channel_mode);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,\r
- "codec_specific1: %04x codec_specific2: %04x codec_specific3: %04x codec_specific4: %04x\n",\r
- (unsigned int)info->codec_specific1,\r
- (unsigned int)info->codec_specific2,\r
- (unsigned int)info->codec_specific3,\r
- (unsigned int)info->codec_specific4);\r
-#if MEDIA_A2DP_SNK_INTERFACE\r
- if (info->codec_type == A2DP_SNK_CODEC_TYPE_AAC) {\r
- g_audio_format_config.audioFormat = AAC_LC;\r
- } else {\r
- g_audio_format_config.audioFormat = SBC;\r
- }\r
- /* channel count 1 or 2 */\r
- g_audio_format_config.channelCount = (info->channel_mode == A2DP_SNK_CODEC_CHANNEL_MODE_NONE ? 1 : 2);\r
-\r
- switch (info->sample_rate) {\r
- case A2DP_SNK_CODEC_SAMPLE_RATE_48000:\r
- g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE48000;\r
- break;\r
- case A2DP_SNK_CODEC_SAMPLE_RATE_88200:\r
- g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE88200;\r
- break;\r
- case A2DP_SNK_CODEC_SAMPLE_RATE_96000:\r
- g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE96000;\r
- break;\r
- default:\r
- g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE44100;\r
- break;\r
- }\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audioFormat %d channelCount %d sampleRate %d \n",\r
- g_audio_format_config.audioFormat, g_audio_format_config.channelCount, g_audio_format_config.sampleRate);\r
-#endif\r
-}\r
-\r
-// 注册回调函数\r
-static gap_call_backs_t g_btGapCallBacks{};\r
-static a2dp_src_callbacks_t g_a2dpSrcCallbacks{};\r
-static gap_ble_callbacks_t g_gapBleCallbacks{};\r
-static gatts_callbacks_t g_btGattsCallbacks{};\r
-\r
-static a2dp_snk_callbacks_t g_a2dp_snk_callbacks = {\r
- BtA2dpSnkConnectStateChangedCb,\r
- BtA2dpSnkStartStreamReqCb,\r
- BtA2dpSnkPlayingStateChangedCb,\r
- BtA2dpSnkConfigChangedCb\r
-};\r
-\r
-static void BleConnectCallback(uint16_t conn_id, errcode_t status, const gap_ble_conn_param_update_t *param)\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnectCallback conn_id:%u, interval-1:%u latency:%u timeout:%u\n",conn_id, param->interval, param->latency, param->timeout);\r
-}\r
-\r
-void BtInitCallBacks()\r
-{\r
- g_btGapCallBacks.discovery_result_callback = BtGapDiscoveryResultCallback;\r
- g_btGapCallBacks.discovery_state_changed_callback = BtGapDiscoveryStateChangedCallback;\r
- g_btGapCallBacks.acl_state_changed_callbak = GapAclStateChangedCallback;\r
- g_btGapCallBacks.read_remote_rssi_event_callback = BtGapReadRemoteRssiEventCallback;\r
- g_btGapCallBacks.remote_name_changed_callback = BtRemoteNameChangedCallback;\r
- g_btGapCallBacks.is_accept_conn_on_safe_mode_callback = BtIsAcceptConnOnSafeModeCallback;\r
- g_btGapCallBacks.pair_status_changed_callback = BtGapPairStatusChangedCallback;\r
- g_btGapCallBacks.pair_requested_callback = BtGapPairRequestedCallback;\r
- g_btGapCallBacks.pair_confiremed_callback = BtGapPairConfirmedCallback;\r
- gap_register_callbacks(&g_btGapCallBacks);\r
-\r
- g_a2dpSrcCallbacks.connectstate_changed_cb = A2dpSrcConnectstateChanged;\r
- g_a2dpSrcCallbacks.configuration_changed_cb = A2dpSrcConfigureChanged;\r
- g_a2dpSrcCallbacks.playing_state_changed_cb = A2dpSrcPlayingStateChanged;\r
- a2dp_src_register_callbacks(&g_a2dpSrcCallbacks);\r
-\r
- /* a2dp sink */\r
- a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
-}\r
-\r
-void BtInitCallBacksEx()\r
-{\r
- g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;\r
- g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;\r
- g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;\r
- g_gapBleCallbacks.terminate_adv_cb = BleAdvTerminateCallback;\r
- g_gapBleCallbacks.conn_param_update_cb = BleConnectCallback;\r
- wrapper_gap_ble_register_callbacks(&g_gapBleCallbacks);\r
-\r
- g_btGattsCallbacks.add_service_cb = BtGattsServiceAddCallback;\r
- g_btGattsCallbacks.add_characteristic_cb = BtGattsCharacteristicAddCallback;\r
- g_btGattsCallbacks.add_descriptor_cb = BtGattsDescriptorAddCallback;\r
- g_btGattsCallbacks.start_service_cb = BtGattsServiceStartCallback;\r
- g_btGattsCallbacks.stop_service_cb = BtGattsServiceStopCallback;\r
- g_btGattsCallbacks.delete_service_cb = BtGattsServiceDeleteCallback;\r
- g_btGattsCallbacks.read_request_cb = BtGattsRequestReadCallback;\r
- g_btGattsCallbacks.write_request_cb = BtGattsRequestWriteCallback;\r
- g_btGattsCallbacks.mtu_changed_cb = BtGattsMtuChangedCallback;\r
- wrapper_gatts_register_callbacks(&g_btGattsCallbacks);\r
-}\r
-\r
-void BtInitGatts(void)\r
-{\r
- uint16_t id = 0xF01F;\r
- uint16_t ser_id = 0xFF1F;\r
- uint8_t serverId = 0;\r
- bt_uuid_t uuid;\r
- int ret;\r
-\r
- uuid.uuid_len = sizeof(ser_id);\r
- memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&ser_id, sizeof(ser_id));\r
- ret = wrapper_gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_register_server ret: 0x%x serverId = 0x%x", ret, serverId);\r
-\r
- uuid.uuid_len = sizeof(id);\r
- memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
- ret = wrapper_gatts_add_service(serverId, &uuid, true);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
-\r
- wrapper_gatts_service_start();\r
-}\r
-\r
-static uint8_t Char2Num(int8_t c)\r
-{\r
- if (c >= '0' && c <= '9') {\r
- return (uint8_t)(c - '0');\r
- } else if (c >= 'A' && c <= 'F') {\r
- return (uint8_t)(c - 'A' + TEN);\r
- } else if (c >= 'a' && c <= 'f') {\r
- return (uint8_t)(c - 'a' + TEN);\r
- } else {\r
- return 0xFF;\r
- }\r
-}\r
-\r
-static uint32_t GenerateUuidFromString(const char *str, uint8_t len, bt_uuid_t *uuid_out)\r
-{\r
- int slen = (int)strnlen(str, len);\r
- bool new_uuid = false;\r
- if (uuid_out == nullptr) {\r
- return ERRCODE_INVALID_PARAM;\r
- }\r
-\r
- uuid_out->uuid_len = (uint8_t)slen / 2; /* 2: 2个字符组成一个字节,因此只取偶数个字符 */\r
- for (int i = 0; i + 1 < slen; i += 2) { /* 2: 同上 */\r
- uint8_t num1 = Char2Num(str[i]);\r
- uint8_t num2 = Char2Num(str[i + 1]);\r
- if (num1 == UINT8_MAX || num2 == UINT8_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "invalid input %c%c\n", str[i], str[i + 1]);\r
- return ERRCODE_INVALID_PARAM;\r
- }\r
-\r
- uuid_out->uuid[i / 2] = (uint8_t)((num1 << BIT4) | num2); /* 2: 同上 */\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "%02x ", (uint8_t)(uuid_out->uuid[i / 2])); /* 2: 同上 */\r
- }\r
-\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "\n");\r
- return ERRCODE_SUCC;\r
-}\r
-\r
-void BtSppServerCreate(const char *spp_uuid, const char *name, uint8_t name_len)\r
-{\r
- spp_create_socket_para_t param;\r
- if (GenerateUuidFromString((const char *)spp_uuid, (uint8_t)strlen(spp_uuid), ¶m.uuid) != ERRCODE_SUCC) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "get uuid fail\n");\r
- return;\r
- }\r
-\r
- param.socket_type = SPP_SOCKET_RFCOMM;\r
- param.is_encrypt = true;\r
-\r
- int ret = spp_server_create(¶m, name, name_len);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "spp_server_create ret: %x\n", ret);\r
-}\r
-\r
-static int BtSppServerAcceptTaskBody(void *data)\r
-{\r
- int server_id = (int)(intptr_t)data;\r
- int ret = spp_server_accept(server_id);\r
-\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "spp_server_accept ret: %x, server_id: %d\r\n", ret, server_id);\r
- return OSAL_SUCCESS;\r
-}\r
-\r
-/* 等待client连接 */\r
-void BtSppServerAccept(uint8_t server_id)\r
-{\r
- osal_task *task = osal_kthread_create(BtSppServerAcceptTaskBody, (void *)(uintptr_t)server_id,\r
- "spp_server_accept_task", BT_SPP_TASK_STACK_SIZE);\r
- if (task == nullptr) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create task fail\n");\r
- return;\r
- }\r
-\r
- int ret = osal_kthread_set_priority(task, BT_SPP_TASK_PRI);\r
- if (ret != OSAL_SUCCESS) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "set pri error: %08x\n", ret);\r
- }\r
-}\r
-\r
-void BtInitSpp(void)\r
-{\r
- char uuid[] = "1101";\r
- char name[] = "COM1";\r
- uint8_t name_len = strlen(name) + 1;\r
- uint8_t server_id = 0;\r
-\r
- /* 创建spp */\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create spp server uuid=%s name=%s name_len=%d\n", uuid, name, name_len);\r
- BtSppServerCreate(uuid, name, name_len);\r
- BtSppServerAccept(server_id);\r
-}\r
-\r
-void BleAdvStart(void)\r
-{\r
- int advId = g_sample_adv_id;\r
- if (BluetoothModel::GetInstance()->GetAdvStartState()) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart already started");\r
- gap_ble_stop_adv(advId);\r
- osDelay(50);\r
- }\r
- gap_ble_adv_params_t adv_para;\r
- memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
- adv_para.min_interval = 0x30;\r
- adv_para.max_interval = 0x60;\r
- adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
- adv_para.channel_map = 0x7;\r
- adv_para.duration = 0;\r
- gap_ble_set_adv_param(advId, &adv_para);\r
- gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);\r
- errcode_t ret = gap_ble_start_adv(advId);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart bt gap_ble_start_adv ret = 0x%x", ret);\r
-}\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothOptions view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include "bluetooth/BluetoothOptionsView.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-\r
-namespace OHOS {\r
-static BluetoothOptionsView *g_pBluetoothOptionsView{nullptr};\r
-\r
-BluetoothOptionsView::BluetoothOptionsView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::BluetoothOptionsView");\r
- g_pBluetoothOptionsView = this;\r
-}\r
-\r
-BluetoothOptionsView::~BluetoothOptionsView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::~BluetoothOptionsView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete connectStateLabel;\r
- connectStateLabel = nullptr;\r
- delete optionsOneButton;\r
- optionsOneButton = nullptr;\r
- delete unpairButton;\r
- unpairButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_pBluetoothOptionsView = nullptr;\r
-}\r
-\r
-BluetoothOptionsView *BluetoothOptionsView::GetInstance()\r
-{\r
- return g_pBluetoothOptionsView;\r
-}\r
-\r
-void BluetoothOptionsView::RefreshText(void)\r
-{\r
- // 刷新状态和文字\r
- BluetoothModel::GetInstance()->SetBtStatus();\r
- if (BluetoothModel::GetInstance()->GetAclConnected()) {\r
- connectStateLabel->SetText("已连接");\r
- optionsOneButton->SetText("断开连接");\r
- } else {\r
- connectStateLabel->SetText("已断开");\r
- optionsOneButton->SetText("重新连接");\r
- }\r
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
- optionsOneButton->Invalidate();\r
-}\r
-\r
-void BluetoothOptionsView::InItTitleLabel()\r
-{\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView titleLabel new fail");\r
- return;\r
- }\r
- titleLabel->SetPosition(60, 100, 333, 45); // 60:x 100:y 333:width 45:height\r
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- if (connectStateLabel == nullptr) {\r
- connectStateLabel = new UILabel();\r
- if (connectStateLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView connectStateLabel new fail");\r
- return;\r
- }\r
- connectStateLabel->SetPosition(60, 148, 333, 33); // 60:x 148:y 333:width 33:height\r
- connectStateLabel->SetText("已连接");\r
- connectStateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- connectStateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- connectStateLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(connectStateLabel);\r
- }\r
-}\r
-\r
-void BluetoothOptionsView::InItLabelButton()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return;\r
- }\r
- if (optionsOneButton == nullptr) {\r
- optionsOneButton = new UILabelButton();\r
- if (optionsOneButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView optionsOneButton new fail");\r
- return;\r
- }\r
- optionsOneButton->SetPosition(157, 210, 139, 47); // 157:x, 210:y, 139:width 47:height\r
- optionsOneButton->SetText("断开连接");\r
- optionsOneButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- optionsOneButton->SetViewId(BLUETOOTH_OPTIONONE_BUTTON);\r
- optionsOneButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- optionsOneButton->SetTextColor(Color::Red());\r
- optionsOneButton->SetOnClickListener(clickListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- optionsOneButton->SetTextColor(Color::Blue());\r
- optionsOneButton->SetOnClickListener(clickListener2);\r
- }\r
- group->Add(optionsOneButton);\r
- }\r
- if (unpairButton == nullptr) {\r
- unpairButton = new UILabelButton();\r
- if (unpairButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView unpairButton new fail");\r
- return;\r
- }\r
- unpairButton->SetPosition(157, 284, 139, 47); // 157:x, 284:y, 139:width 47:height\r
- unpairButton->SetText("取消配对");\r
- unpairButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- unpairButton->SetViewId(BLUETOOTH_UNPAIR_BUTTON);\r
- unpairButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- unpairButton->SetTextColor(Color::Red());\r
- unpairButton->SetOnClickListener(clickListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- unpairButton->SetTextColor(Color::Blue());\r
- unpairButton->SetOnClickListener(clickListener2);\r
- }\r
- group->Add(unpairButton);\r
- }\r
-}\r
-\r
-UIViewGroup *BluetoothOptionsView::InitShowUpView()\r
-{\r
- // 获取currentBdAddr db值 model待开发\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- InItLabelButton();\r
- InItTitleLabel();\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(earDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(earDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_OPTIONS_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-UILabelButton *BluetoothOptionsView::GetOptionsOneButton(void)\r
-{\r
- return optionsOneButton;\r
-}\r
-\r
-UILabelButton *BluetoothOptionsView::GetUnpairButton(void)\r
-{\r
- return unpairButton;\r
-}\r
-\r
-\r
-void BluetoothOptionsView::SetBtDisconnect(void)\r
-{\r
- bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtDisconnect Addr: %02x%02x%02x%02x%02x%02x",\r
- lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- errcode_t retVal = gap_disconnect_remote_device(lastAddr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_disconnect_remote_device %d", retVal);\r
-}\r
-\r
-void BluetoothOptionsView::SetBtconnect(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect currentAddr: %02x%02x%02x%02x%02x%02x",\r
- currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
- currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(¤tAddr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect ConnectRemoteDevice %d", retVal);\r
-}\r
-\r
-void BluetoothOptionsView::SetUnpair(void)\r
-{\r
- bool ret;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair currentAddr: %02x%02x%02x%02x%02x%02x",\r
- currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
- currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- ret = gap_remove_pair(¤tAddr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair gap_remove_pair %d", ret);\r
-}\r
-\r
-\r
-void BluetoothOptionsView::SetCurrentAddr(bd_addr_t addr)\r
-{\r
- (void)memcpy_s(currentAddr.addr, BD_ADDR_LEN,\r
- addr.addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断\r
-}\r
-\r
-bd_addr_t BluetoothOptionsView::GetCurrentAddr(void)\r
-{\r
- return currentAddr;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothPresenter view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-#include "bluetooth/BluetoothReconnectView.h"\r
-#include "bluetooth/MainBluetoothView.h"\r
-#include "NativeRegisterManager.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_SLICE(VIEW_BLUETOOTH_EARPHONE, MainBluetoothView, BluetoothPresenter);\r
-\r
-static BluetoothPresenter *g_pBluetoothPresenter = nullptr;\r
-\r
-BluetoothPresenter::BluetoothPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter new");\r
- g_pBluetoothPresenter = this;\r
- bluetoothMode_ = BluetoothModel::GetInstance();\r
-}\r
-\r
-BluetoothPresenter::~BluetoothPresenter()\r
-{\r
- g_pBluetoothPresenter = nullptr;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::~BluetoothPresenter");\r
-}\r
-\r
-void BluetoothPresenter::OnStop(void)\r
-{\r
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
- if (bluetoothEarPhoneView != nullptr) {\r
- bluetoothEarPhoneView->StopBtDiscovery();\r
- return;\r
- }\r
-}\r
-\r
-BluetoothPresenter *BluetoothPresenter::GetInstance()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter GetInstance");\r
- return g_pBluetoothPresenter;\r
-}\r
-\r
-void BluetoothPresenter::ClickRescanButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_RESCAN_BUTTON");\r
- // 跳转正在搜索界面\r
- view_->ChangeView(BLUETOOTHEARLISTVIEW, BLUETOOTHEARPHONEVIEW);\r
-}\r
-\r
-void BluetoothPresenter::ClickNewEquipmentButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_NEWEQUIPMENT_BUTTON");\r
- bluetoothMode_->SetTagReturnToDeviceListView(true);\r
- view_->ChangeView(BLUETOOTHDEVICELISTVIEW, BLUETOOTHEARPHONEVIEW);\r
-}\r
-\r
-void BluetoothPresenter::ClickCancelConnedRequestButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_CANCELCONNEDREQUEST_BUTTON");\r
- BluetoothCaseInfo *caseInfo = bluetoothMode_->GetTempMacValue();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton Addr: %02x%02x%02x%02x%02x%02x",\r
- caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- errcode_t retVal = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton gap_disconnect_remote_device retVal = %d", retVal);\r
-\r
- bluetoothMode_->SetTagScanDeviceClicked(false);\r
- // 刷新列表\r
- BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
- if (bluetoothEarListView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");\r
- return;\r
- }\r
- if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");\r
- return;\r
- }\r
- bluetoothEarListView->GetScanUIList()->RefreshList();\r
- bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
- bluetoothEarListView->SetTitleLabel("扫描完成");\r
-\r
- BluetoothItemView *pbItermView = bluetoothMode_->GetConnectionView();\r
- if (pbItermView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");\r
- return;\r
- }\r
- pbItermView->ConnectAnimatorStop();\r
- bluetoothMode_->SetConnectionView(nullptr);\r
- bluetoothEarListView->SetNewEquipmentButtonAdd();\r
- RootView::GetInstance()->Invalidate();\r
-}\r
-\r
-void BluetoothPresenter::ClickUnpairButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");\r
- bluetoothMode_->SetTagConnectNew(false);\r
- BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
- if (bluetoothOptionsView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
- return;\r
- }\r
- bluetoothOptionsView->SetUnpair(); // 取消配对\r
- // 删除对应设备列表节点\r
- bd_addr_t bdAddr = bluetoothOptionsView->GetCurrentAddr();\r
- List<BluetoothCaseInfo> &bluetoothCaseList = bluetoothMode_->GetConnedDevicesCase();\r
- ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();\r
- if (node == nullptr) {\r
- return;\r
- }\r
- while (node != bluetoothCaseList.End()) {\r
- if ((bdAddr.addr[0] == node->data_.addr[0]) && (bdAddr.addr[1] == node->data_.addr[1])\r
- && (bdAddr.addr[2] == node->data_.addr[2]) && (bdAddr.addr[3] == node->data_.addr[3])\r
- && (bdAddr.addr[4] == node->data_.addr[4]) && (bdAddr.addr[5] == node->data_.addr[5])) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bdAddr true");\r
- bluetoothCaseList.Remove(node);\r
- }\r
- node = node->next_;\r
- }\r
- // 跳转并刷新列表\r
- view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
-}\r
-\r
-void BluetoothPresenter::ClickOptionsOneButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");\r
- BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
- if (bluetoothOptionsView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
- return;\r
- }\r
- bluetoothMode_->SetBtStatus();\r
- if (bluetoothMode_->GetAclConnected()) {\r
- bluetoothMode_->SetTagConnectNew(false);\r
- bluetoothOptionsView->SetBtDisconnect();\r
- view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
- } else {\r
- bluetoothMode_->SetTagReconnectJump(true);\r
- // 重连动画\r
- view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHRECONNECTVIEW);\r
- // 判断是否已有连接\r
- bd_addr_t *lastAddr = bluetoothMode_->GetLastConnedAddr();\r
- if (bt_is_acl_connected(lastAddr)) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "LastDevice addr: %02x%02x%02x%02x%02x%02x is connected",\r
- lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3],\r
- lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]);\r
- bluetoothMode_->SetTagConnectNew(true);\r
- bluetoothOptionsView->SetBtDisconnect();\r
- } else {\r
- BluetoothCaseInfo *caseInfo = bluetoothMode_->GetTempMacValue();\r
- errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice((const bd_addr_t *)&caseInfo->addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickOptionsOneButton ConnectRemoteDevice retVal = %d", retVal);\r
- }\r
- }\r
-}\r
-\r
-void BluetoothPresenter::ClickSuccBackButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_SUCC_BACK_BUTTON");\r
- view_->ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);\r
-}\r
-\r
-void BluetoothPresenter::ClickFailBackButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_FAIL_BACK_BUTTON");\r
- view_->ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);\r
-}\r
-\r
-void BluetoothPresenter::ClickConnfailBackButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_CONN_FAIL_BACK_BUTTON");\r
- view_->ChangeView(TIPSCONNFAILMESSAGEVIEW, BLUETOOTHRECONNECTVIEW);\r
- BluetoothCaseInfo *caseInfo = bluetoothMode_->GetTempMacValue();\r
- errcode_t retVal = bluetoothMode_->ConnectRemoteDevice((const bd_addr_t *)&caseInfo->addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickConnfailBackButton ConnectRemoteDevice retVal = %d", retVal);\r
-}\r
-\r
-bool BluetoothPresenter::OnDragEnd(UIView& view, const DragEvent& event)\r
-{\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- view_->DropView(view);\r
- }\r
- return true;\r
-}\r
-\r
-bool BluetoothPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- UNUSED(event);\r
- if (strcmp(view.GetViewId(), BLUETOOTH_RESCAN_BUTTON) == 0) {\r
- ClickRescanButton();\r
- } else if (strcmp(view.GetViewId(), BLUETOOTH_NEWEQUIPMENT_BUTTON) == 0) {\r
- ClickNewEquipmentButton();\r
- } else if (strcmp(view.GetViewId(), BLUETOOTH_CANCELCONNEDREQUEST_BUTTON) == 0) {\r
- ClickCancelConnedRequestButton();\r
- } else if (strcmp(view.GetViewId(), BLUETOOTH_UNPAIR_BUTTON) == 0) {\r
- ClickUnpairButton();\r
- } else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONONE_BUTTON) == 0) {\r
- ClickOptionsOneButton();\r
- } else if (strcmp(view.GetViewId(), BLUETOOTH_SUCC_BACK_BUTTON) == 0) {\r
- ClickSuccBackButton();\r
- } else if (strcmp(view.GetViewId(), BLUETOOTH_FAIL_BACK_BUTTON) == 0) {\r
- ClickFailBackButton();\r
- } else if (strcmp(view.GetViewId(), BLUETOOTH_CONN_FAIL_BACK_BUTTON) == 0) {\r
- ClickConnfailBackButton();\r
- }\r
- return true;\r
-}\r
-};\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: Bluetooth Reconnect View\r
- * Create: 2021-10-13\r
- */\r
-\r
-#include "bluetooth/BluetoothReconnectView.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-#include "common/image_cache_manager.h"\r
-\r
-namespace OHOS {\r
-static BluetoothReconnectView *g_pBluetoothReconnectView{nullptr};\r
-#define BLUETOOTH_IMAGE_X 175\r
-#define BLUETOOTH_IMAGE_Y 125\r
-#define BLUETOOTH_IMAGE_WIDTH 104\r
-#define BLUETOOTH_IMAGE_HEIGHT 104\r
-#define BLUETOOTH_DELAY 200\r
-\r
-BluetoothReconnectView::BluetoothReconnectView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::BluetoothReconnectView");\r
- g_pBluetoothReconnectView = this;\r
-}\r
-\r
-BluetoothReconnectView::~BluetoothReconnectView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::~BluetoothReconnectView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete bluetoothNameLabel;\r
- bluetoothNameLabel = nullptr;\r
- delete reconnectAnimator;\r
- reconnectAnimator = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_pBluetoothReconnectView = nullptr;\r
-}\r
-\r
-bd_addr_t BluetoothReconnectView::GetcurrentBdAddr(void)\r
-{\r
- return currentBdAddr;\r
-}\r
-\r
-BluetoothReconnectView *BluetoothReconnectView::GetInstance()\r
-{\r
- return g_pBluetoothReconnectView;\r
-}\r
-\r
-void BluetoothReconnectView::ShowUpTitleLabel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::ShowUpTitleLabel");\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView titleLabel new fail");\r
- return;\r
- }\r
- titleLabel->SetPosition(87, 285, 280, 45); // 60:x 100:y 333:width 45:height\r
- titleLabel->SetText("正在重连...");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- if (bluetoothNameLabel == nullptr) {\r
- bluetoothNameLabel = new UILabel();\r
- if (bluetoothNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
- return;\r
- }\r
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
- bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
- bluetoothNameLabel->SetPosition(60, 235, 333, 45); // 60:x 148:y 333:width 33:height\r
- bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(bluetoothNameLabel);\r
- }\r
-}\r
-\r
-void BluetoothReconnectView::BtReconnectStart(void)\r
-{\r
- reconnectAnimator->Start();\r
-}\r
-\r
-void BluetoothReconnectView::BtReconnectStop(void)\r
-{\r
- reconnectAnimator->Stop();\r
-}\r
-\r
-UIViewGroup *BluetoothReconnectView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- BtReconnectImageAnimator();\r
- ShowUpTitleLabel();\r
- UIView::OnDragListener *reDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *reDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((reDragListener == nullptr) && (reDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(reDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(reDragListener2);\r
- }\r
- group->SetViewId(BLUETOOTH_RECONNECT_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void BluetoothReconnectView::RefreshBluetoothNameLabel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::RefreshBluetoothNameLabel");\r
- if (bluetoothNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RefreshBluetoothNameLabel bluetoothNameLabel is nullptr");\r
- return;\r
- }\r
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
- return;\r
-}\r
-\r
-void BluetoothReconnectView::BtReconnectImageAnimator()\r
-{\r
- const char *reconnectImagePath[BLUETOOTH_RECONNECT_IMAGE_NUM] = {\r
- PNG_A019_080_IMAGE_PATH,\r
- PNG_A019_081_IMAGE_PATH,\r
- PNG_A019_082_IMAGE_PATH,\r
- PNG_A019_083_IMAGE_PATH,\r
- PNG_A019_084_IMAGE_PATH,\r
- PNG_A019_085_IMAGE_PATH,\r
- PNG_A019_086_IMAGE_PATH,\r
- PNG_A019_087_IMAGE_PATH,\r
- };\r
-\r
- if (reconnectAnimator == nullptr) {\r
- reconnectAnimator = new UIImageAnimatorView();\r
- if (reconnectAnimator == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView new reconnectAnimator fail");\r
- }\r
- for (uint8_t i = 0; i < BLUETOOTH_RECONNECT_IMAGE_NUM; i++) {\r
- reconnetImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(reconnectImagePath[i]);\r
- reconnetImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
- reconnetImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;\r
- reconnetImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;\r
- reconnetImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;\r
- reconnetImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;\r
- }\r
- reconnectAnimator->SetPosition(175, 115, 104, 104); // 175:x 175:y 104:width 104:height\r
- reconnectAnimator->SetImageAnimatorSrc(reconnetImageInfo, BLUETOOTH_RECONNECT_IMAGE_NUM, BLUETOOTH_DELAY);\r
- reconnectAnimator->SetRepeat(true);\r
- group->Add(reconnectAnimator);\r
- }\r
-}\r
-\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MainBluetooth view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include "bluetooth/MainBluetoothView.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-\r
-static MainBluetoothView *g_pMainBluetoothView = nullptr;\r
-\r
-MainBluetoothView::MainBluetoothView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::MainBluetoothView");\r
- preProcessView[BLUETOOTHEARPHONEVIEW] = &MainBluetoothView::ChangeBluetoothEarPhoneView;\r
- preProcessView[BLUETOOTHEARLISTVIEW] = &MainBluetoothView::ChangeBluetoothEarListView;\r
- preProcessView[BLUETOOTHDEVICELISTVIEW] = &MainBluetoothView::ChangeBluetoothDeviceListView;\r
- preProcessView[BLUETOOTHEOPTIONSVIEW] = &MainBluetoothView::ChangeBluetoothOptionsView;\r
- preProcessView[BLUETOOTHRECONNECTVIEW] = &MainBluetoothView::ChangeBluetoothReconnectView;\r
- preProcessView[TIPSSUCCMESSAGEVIEW] = &MainBluetoothView::ChangeTipsSuccMessageView;\r
- preProcessView[TIPSCONNFAILMESSAGEVIEW] = &MainBluetoothView::ChangeTipsConnFailMessageView;\r
- preProcessView[TIPSFAILMESSAGEVIEW] = &MainBluetoothView::ChangeTipsFailMessageView;\r
- preProcessView[BLUETOOTHEVIEW] = nullptr;\r
-\r
- g_pMainBluetoothView = this;\r
-}\r
-\r
-MainBluetoothView::~MainBluetoothView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~MainBluetoothView");\r
- delete bluetoothEarPhoneView;\r
- bluetoothEarPhoneView = nullptr;\r
- delete bluetoothOptionsView;\r
- bluetoothOptionsView = nullptr;\r
- delete bluetoothEarListView;\r
- bluetoothEarListView = nullptr;\r
- delete bluetoothReconnectView;\r
- bluetoothReconnectView = nullptr;\r
- delete bluetoothDeviceListView;\r
- bluetoothDeviceListView = nullptr;\r
- delete tipsSuccMessageView;\r
- tipsSuccMessageView = nullptr;\r
- delete tipsConnFailMessageView;\r
- tipsConnFailMessageView = nullptr;\r
- delete tipsFailMessageView;\r
- tipsFailMessageView = nullptr;\r
- g_pMainBluetoothView = nullptr;\r
-}\r
-\r
-MainBluetoothView *MainBluetoothView::GetInstance()\r
-{\r
- return g_pMainBluetoothView;\r
-}\r
-\r
-void MainBluetoothView::OnStart()\r
-{\r
- BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
- if (bluetoothModel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::InitView bluetoothModel nullptr err");\r
- return;\r
- }\r
- bluetoothModel->SetBluetoothCalleridStatus(CALLERSETTING);\r
- bluetoothModel->SetTagConnectView(true);\r
- List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
- BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(false);\r
- int16_t unusedValue = BLUETOOTHEVIEW_MAX;\r
- bool ret = bluetoothCaseList.IsEmpty();\r
- if (!ret) {\r
- ChangeView(unusedValue, BLUETOOTHDEVICELISTVIEW);\r
- } else {\r
- ChangeView(unusedValue, BLUETOOTHEARPHONEVIEW);\r
- }\r
- Draw();\r
- return;\r
-}\r
-\r
-bool MainBluetoothView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothDeviceListView");\r
- bluetoothDeviceListView = new BluetoothDeviceListView();\r
- if (bluetoothDeviceListView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- } else {\r
- // 刷新列表\r
- UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
- if (deviceList == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");\r
- return false;\r
- }\r
- deviceList->RefreshList();\r
- }\r
- bluetoothDeviceListView->RefreshText();\r
- return true;\r
-}\r
-\r
-bool MainBluetoothView::ChangeTipsFailMessageView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsFailMessageView");\r
- tipsFailMessageView = new TipsFailMessageView();\r
- if (tipsFailMessageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsFailMessageView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool MainBluetoothView::ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView");\r
- tipsConnFailMessageView = new TipsConnFailMessageView();\r
- if (tipsConnFailMessageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsConnFailMessageView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = tipsConnFailMessageView->ShowUpViewInit();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- if (bluetoothReconnectView == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");\r
- } else {\r
- container[BLUETOOTHRECONNECTVIEW]->SetVisible(false);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView SetVisible(false)");\r
- }\r
- return true;\r
-}\r
-\r
-bool MainBluetoothView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsSuccMessageView");\r
- tipsSuccMessageView = new TipsSuccMessageView();\r
- if (tipsSuccMessageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsSuccMessageView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = tipsSuccMessageView->ShowUpViewInit();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool MainBluetoothView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarPhoneView");\r
- bluetoothEarPhoneView = new BluetoothEarPhoneView();\r
- if (bluetoothEarPhoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView new fail");\r
- return false;\r
- }\r
- UIViewGroup *group = bluetoothEarPhoneView->InitShowUpView(); // init view\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- // 动画开始\r
- bluetoothEarPhoneView->BtAnimatorStart();\r
- // 蓝牙扫描&清空列表\r
- bluetoothEarPhoneView->BtEnable();\r
- return true;\r
-}\r
-\r
-bool MainBluetoothView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)\r
-{\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarListView");\r
- bluetoothEarListView = new BluetoothEarListView();\r
- if (bluetoothEarListView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView new fail");\r
- return false;\r
- }\r
- UIViewGroup *group = bluetoothEarListView->InitShowUpView(); // init view\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- } else {\r
- // 刷新列表\r
- UIList *scanList = bluetoothEarListView->GetScanUIList();\r
- if (scanList == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");\r
- return false;\r
- }\r
- scanList->RefreshList();\r
- }\r
- ResetEarListView(hideView);\r
- return true;\r
-}\r
-\r
-bool MainBluetoothView::ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothOptionsView");\r
- bluetoothOptionsView = new BluetoothOptionsView();\r
- if (bluetoothOptionsView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = bluetoothOptionsView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool MainBluetoothView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothReconnectView");\r
- bluetoothReconnectView = new BluetoothReconnectView();\r
- if (bluetoothReconnectView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothReconnectView new fail");\r
- return false;\r
- }\r
- UIViewGroup *group = bluetoothReconnectView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- BluetoothModel::GetInstance()->SetTagDisconnectView(true);\r
- bluetoothReconnectView->RefreshBluetoothNameLabel();\r
- bluetoothReconnectView->BtReconnectStart();\r
- return true;\r
-}\r
-\r
-void MainBluetoothView::CorrespondingJump(int16_t hideView)\r
-{\r
- BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
- if (bluetoothModel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");\r
- return;\r
- }\r
- if (bluetoothModel->GetTagReconnectJump()) {\r
- ChangeView(hideView, BLUETOOTHEOPTIONSVIEW);\r
- } else {\r
- std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();\r
- bool ret = bluetoothScanList.empty();\r
- if (!ret) {\r
- ChangeView(hideView, BLUETOOTHEARLISTVIEW);\r
- } else {\r
- ChangeView(hideView, BLUETOOTHEARPHONEVIEW);\r
- }\r
- }\r
- return;\r
-}\r
-\r
-void MainBluetoothView::ChangeSettingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeSettingView");\r
- BluetoothModel::GetInstance()->SetTagConnectView(false);\r
- BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
-}\r
-\r
-void MainBluetoothView::DropEarPhoneView()\r
-{\r
- if (bluetoothEarPhoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");\r
- return;\r
- }\r
- bluetoothEarPhoneView->BtAnimatorStop();\r
- bluetoothEarPhoneView->StopBtDiscovery();\r
- bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
- if (ret) {\r
- ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHDEVICELISTVIEW);\r
- } else {\r
- ChangeSettingView();\r
- }\r
-}\r
-\r
-void MainBluetoothView::DropEarListView()\r
-{\r
- bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
- if (ret) {\r
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropEarListView Addr: %02x%02x%02x%02x%02x%02x",\r
- caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
- caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
- errcode_t retVal = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropEarListView gap_disconnect_remote_device retVal = %d", retVal);\r
- }\r
- if (bluetoothEarPhoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");\r
- return;\r
- }\r
- bluetoothEarPhoneView->StopBtDiscovery();\r
- BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
- if (pbItermView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropView The GetConnectionView get failed.");\r
- } else {\r
- pbItermView->ConnectAnimatorStop();\r
- BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
- }\r
- ChangeSettingView();\r
-}\r
-\r
-void MainBluetoothView::DropView(UIView& view)\r
-{\r
- if (&view == container[BLUETOOTHEARPHONEVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARPHONEVIEW]");\r
- DropEarPhoneView();\r
- } else if (&view == container[BLUETOOTHEOPTIONSVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEOPTIONSVIEW]");\r
- ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
- } else if (&view == container[TIPSCONNFAILMESSAGEVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSCONNFAILMESSAGEVIEW]");\r
- CorrespondingJump(TIPSCONNFAILMESSAGEVIEW);\r
- } else if (&view == container[TIPSSUCCMESSAGEVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSSUCCMESSAGEVIEW]");\r
- ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);\r
- } else if (&view == container[TIPSFAILMESSAGEVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSFAILMESSAGEVIEW]");\r
- ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);\r
- } else if (&view == container[BLUETOOTHEARLISTVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARLISTVIEW]");\r
- DropEarListView();\r
- } else if (&view == container[BLUETOOTHDEVICELISTVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHDEVICELISTVIEW]");\r
- ChangeSettingView();\r
- } else if (&view == container[BLUETOOTHRECONNECTVIEW]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHRECONNECTVIEW]");\r
- CorrespondingJump(BLUETOOTHRECONNECTVIEW);\r
- BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
- bluetoothReconnectView->BtReconnectStop();\r
- }\r
-}\r
-\r
-void MainBluetoothView::ResetEarListView(int16_t hideView)\r
-{\r
- if (bluetoothEarListView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ResetEarListView bluetoothEarListView == nullptr");\r
- return;\r
- }\r
- bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
- if (hideView == BLUETOOTHEARPHONEVIEW) {\r
- bluetoothEarListView->SetTitleLabel("正在扫描");\r
- bluetoothEarListView->SetNewEquipmentButtonRemove();\r
- } else if (hideView == TIPSCONNFAILMESSAGEVIEW) {\r
- bluetoothEarListView->SetTitleLabel("扫描完成");\r
- bluetoothEarListView->SetNewEquipmentButtonAdd();\r
- Draw();\r
- }\r
-}\r
-\r
-bool MainBluetoothView::CheckViewParam(int16_t hideView, int16_t showView)\r
-{\r
- if (showView < 0 || showView >= BLUETOOTHEVIEW_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam showView err.");\r
- return false;\r
- }\r
-\r
- if (hideView < 0 || hideView > BLUETOOTHEVIEW_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam hideView err.");\r
- return false;\r
- }\r
-\r
- if (hideView == BLUETOOTHEARLISTVIEW || showView == BLUETOOTHEARLISTVIEW) {\r
- BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
- }\r
-\r
- return true;\r
-}\r
-\r
-void MainBluetoothView::ChangeView(int16_t hideView, int16_t showView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeView %d, %d", hideView, showView);\r
-\r
- if (!CheckViewParam(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam failed.");\r
- return;\r
- }\r
-\r
- PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
-\r
- if (!(this->*tmpPreProcessView)(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeView %d %dfailed", showView, hideView);\r
- return;\r
- }\r
- if (hideView != BLUETOOTHEVIEW_MAX) {\r
- if (container[hideView] == nullptr) {\r
- return;\r
- }\r
- container[hideView]->SetVisible(false);\r
- }\r
- container[showView]->SetVisible(true);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView:: ChangeView end!!!%d", showView);\r
- Draw();\r
- BluetoothModel::GetInstance()->SetCurView(showView);\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: TipsConnFailMessageView view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include "bluetooth/TipsConnFailMessageView.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-\r
-namespace OHOS {\r
-static TipsConnFailMessageView *g_pConnFailMessageView{nullptr};\r
-TipsConnFailMessageView::TipsConnFailMessageView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::TipsConnFailMessageView");\r
- g_pConnFailMessageView = this;\r
-}\r
-\r
-TipsConnFailMessageView::~TipsConnFailMessageView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::~TipsConnFailMessageView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete backButton;\r
- backButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- delete tipImg;\r
- tipImg = nullptr;\r
- delete tipLabel;\r
- tipLabel = nullptr;\r
- delete tipTwoLabel;\r
- tipTwoLabel = nullptr;\r
- g_pConnFailMessageView = nullptr;\r
-}\r
-\r
-TipsConnFailMessageView *TipsConnFailMessageView::GetInstance()\r
-{\r
- return g_pConnFailMessageView;\r
-}\r
-\r
-void TipsConnFailMessageView::ShowUpTipLabel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpTipLabel");\r
- if (tipLabel == nullptr) {\r
- tipLabel = new UILabel();\r
- if (tipLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipLabel new fail");\r
- return;\r
- }\r
- tipLabel->SetPosition(0, 247, HORIZONTAL_RESOLUTION, 35); // 0:x 247:y 454:width 35:height.\r
- tipLabel->SetText("请确认该设备在通信范");\r
- tipLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
- tipLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- tipLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(tipLabel);\r
- }\r
- if (tipTwoLabel == nullptr) {\r
- tipTwoLabel = new UILabel();\r
- if (tipTwoLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipTwoLabel new fail");\r
- return;\r
- }\r
- tipTwoLabel->SetPosition(0, 300, HORIZONTAL_RESOLUTION, 34); // 0:x 300:y 454:width 34:height.\r
- tipTwoLabel->SetText("围内且处于待配对状态。");\r
- tipTwoLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
- tipTwoLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- tipTwoLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(tipTwoLabel);\r
- }\r
- return;\r
-}\r
-\r
-void TipsConnFailMessageView::InitNameLabel(void)\r
-{\r
- if (bluetoothNameLabel == nullptr) {\r
- bluetoothNameLabel = new UILabel();\r
- if (bluetoothNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
- return;\r
- }\r
- bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
- bluetoothNameLabel->SetPosition(60, 139, 333, 45); // 60:x 139:y 333:width 45:height\r
- bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(bluetoothNameLabel);\r
- }\r
-}\r
-\r
-void TipsConnFailMessageView::ShowUpButtonBack()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpButtonBack");\r
- if (backButton == nullptr) {\r
- backButton = new UILabelButton();\r
- if (backButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView backButton new fail");\r
- return;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return;\r
- }\r
- backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height.\r
- backButton->SetText("重试");\r
- backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- backButton->SetViewId(BLUETOOTH_CONN_FAIL_BACK_BUTTON);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- backButton->SetTextColor(Color::Red());\r
- backButton->SetOnClickListener(clickListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- backButton->SetTextColor(Color::Blue());\r
- backButton->SetOnClickListener(clickListener2);\r
- }\r
- group->Add(backButton);\r
- }\r
- if (tipImg == nullptr) {\r
- tipImg = new UIImageView();\r
- if (tipImg == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipImg new fail");\r
- return;\r
- }\r
- tipImg->SetPosition(178, 20, 90, 90); // 178:x 20:y 90:width 90:height.\r
- tipImg->SetSrc(PNG_GANTAN);\r
- group->Add(tipImg);\r
- }\r
- return;\r
-}\r
-\r
-UIViewGroup *TipsConnFailMessageView::ShowUpViewInit(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpViewInit");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView titleLabel new fail");\r
- return nullptr;\r
- }\r
- titleLabel->SetPosition(0, 189, HORIZONTAL_RESOLUTION, 45); // 0:x 189:y 454:width 45:height.\r
- titleLabel->SetText("连接失败");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- ShowUpButtonBack();\r
- ShowUpTipLabel();\r
- InitNameLabel();\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(tipsDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(tipsDragListener2);\r
- }\r
- group->SetViewId(TIPS_CONN_FAIL_MESSAGE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void TipsConnFailMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
-{\r
- BluetoothCaseInfo caseInfo;\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
- bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
- if (!ret) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView FindNameFromList fail");\r
- return;\r
- }\r
- if (bluetoothNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
- return;\r
- }\r
- bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: TipsFailMessageView view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include "bluetooth/TipsFailMessageView.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-\r
-namespace OHOS {\r
-static TipsFailMessageView *g_pFailMessageView{nullptr};\r
-TipsFailMessageView::TipsFailMessageView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::TipsFailMessageView");\r
- g_pFailMessageView = this;\r
-}\r
-\r
-TipsFailMessageView::~TipsFailMessageView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::~TipsFailMessageView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete backButton;\r
- backButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- delete tipImg;\r
- tipImg = nullptr;\r
- g_pFailMessageView = nullptr;\r
-}\r
-\r
-TipsFailMessageView *TipsFailMessageView::GetInstance()\r
-{\r
- return g_pFailMessageView;\r
-}\r
-\r
-int TipsFailMessageView::ShowUpButtonBack()\r
-{\r
- if (backButton == nullptr) {\r
- backButton = new UILabelButton();\r
- if (backButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView backButton new fail");\r
- return OHOS_FAILURE;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return OHOS_FAILURE;\r
- }\r
- backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
- backButton->SetText("重试");\r
- backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- backButton->SetViewId(BLUETOOTH_FAIL_BACK_BUTTON);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- backButton->SetTextColor(Color::Red());\r
- backButton->SetOnClickListener(clickListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- backButton->SetTextColor(Color::Blue());\r
- backButton->SetOnClickListener(clickListener2);\r
- }\r
- group->Add(backButton);\r
- }\r
- if (tipImg == nullptr) {\r
- tipImg = new UIImageView();\r
- if (tipImg == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView tipImg new fail");\r
- return OHOS_FAILURE;\r
- }\r
- tipImg->SetPosition(181, 111, 90, 90); // 181:x 111:y 90:width 90:height\r
- tipImg->SetSrc(PNG_GANTAN);\r
- group->Add(tipImg);\r
- }\r
- return OHOS_SUCCESS;\r
-}\r
-\r
-UIViewGroup *TipsFailMessageView::ShowUpViewInit(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::ShowUpViewInit");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView titleLabel new fail");\r
- return nullptr;\r
- }\r
- titleLabel->SetPosition(0, 234, HORIZONTAL_RESOLUTION, 45); // 0:x 234:y 454:width 45:height\r
- titleLabel->SetText("未发现蓝牙耳机");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- ShowUpButtonBack();\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(tipsDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(tipsDragListener2);\r
- }\r
- group->SetViewId(TIPS_FAIL_MESSAGE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: TipsSuccMessageView view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#include "bluetooth/TipsSuccMessageView.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "player/PlayersPresenter.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-\r
-namespace OHOS {\r
-static TipsSuccMessageView *g_pSuccMessageView{nullptr};\r
-TipsSuccMessageView::TipsSuccMessageView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::TipsSuccMessageView");\r
- g_pSuccMessageView = this;\r
-}\r
-\r
-TipsSuccMessageView::~TipsSuccMessageView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::~TipsSuccMessageView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete backButton;\r
- backButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- delete tipImg;\r
- tipImg = nullptr;\r
- g_pSuccMessageView = nullptr;\r
-}\r
-\r
-TipsSuccMessageView *TipsSuccMessageView::GetInstance()\r
-{\r
- return g_pSuccMessageView;\r
-}\r
-\r
-void TipsSuccMessageView::InitNameLabel(void)\r
-{\r
- if (bluetoothNameLabel == nullptr) {\r
- bluetoothNameLabel = new UILabel();\r
- if (bluetoothNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
- return;\r
- }\r
- bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
- bluetoothNameLabel->SetPosition(60, 180, 333, 45); // 60:x 180:y 333:width 45:height\r
- bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(bluetoothNameLabel);\r
- }\r
-}\r
-\r
-void TipsSuccMessageView::ShowUpButtonBack()\r
-{\r
- if (backButton == nullptr) {\r
- backButton = new UILabelButton();\r
- if (backButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView backButton new fail");\r
- return;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return;\r
- }\r
- backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
- backButton->SetText("确定");\r
- backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- backButton->SetViewId(BLUETOOTH_SUCC_BACK_BUTTON);\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- backButton->SetTextColor(Color::Red());\r
- backButton->SetOnClickListener(clickListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- backButton->SetTextColor(Color::Blue());\r
- backButton->SetOnClickListener(clickListener2);\r
- }\r
- group->Add(backButton);\r
- }\r
- if (tipImg == nullptr) {\r
- tipImg = new UIImageView();\r
- if (tipImg == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView tipImg new fail");\r
- return;\r
- }\r
- tipImg->SetPosition(181, 78, 90, 90); // 181:x 78:y 90:width 90:height\r
- tipImg->SetSrc(PNG_RIGHT);\r
- group->Add(tipImg);\r
- }\r
- return;\r
-}\r
-\r
-UIViewGroup *TipsSuccMessageView::ShowUpViewInit(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::ShowUpViewInit");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView titleLabel new fail");\r
- return nullptr;\r
- }\r
- titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
- titleLabel->SetText("连接成功");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- InitNameLabel();\r
- ShowUpButtonBack();\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
- if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
- group->SetOnDragListener(tipsDragListener);\r
- } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
- group->SetOnDragListener(tipsDragListener2);\r
- }\r
- group->SetViewId(TIPS_SUCC_MESSAGE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void TipsSuccMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
-{\r
- BluetoothCaseInfo caseInfo;\r
- (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
- bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
- if (!ret) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView FindNameFromList fail");\r
- return;\r
- }\r
- if (bluetoothNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
- return;\r
- }\r
- bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathDurPage\r
- * Create: 2025-5-13\r
- */\r
-#include "components/root_view.h"\r
-#include "gfx_utils/graphic_math.h"\r
-#include "UiConfig.h"\r
-#include "AppViewIDs.h"\r
-#include "wearable_log.h"\r
-#include "NativeAbility.h"\r
-#include "alarm/MainAlarmView.h"\r
-#include "TransitionType.h"\r
-#include "SlicePageFactory.h"\r
-#include "ui_resource_breath.h"\r
-#include "main/LoadImg.h"\r
-#include "breath/BreathView.h"\r
-#include "breath/BreathDurPage.h"\r
-\r
-namespace OHOS {\r
-REGIST_SLICE_PAGE(VIEW_MAIN_BREATHEASE, BrearhView::BREATH_DUR_VIEW, BreathDurPage, false);\r
-\r
-#define WND_BTHDUR_BTN_OK_ID "BTH_DUR_OK"\r
-#define WND_BTHDUR_TITLE_X 100\r
-#define WND_BTHDUR_TITLE_Y 38\r
-#define WND_BTHDUR_TITLE_W 253\r
-#define WND_BTHDUR_TITLE_H 53\r
-#define WND_BTHDUR_TITLE_FONT_SIZE 38\r
-#define WND_BTHDUR_PICKER_X 64\r
-#define WND_BTHDUR_PICKER_Y 109\r
-#define WND_BTHDUR_PICKER_W 321\r
-#define WND_BTHDUR_PICKER_H 218\r
-#define WND_BTHDUR_PICKER_B_FONT_SIZE 44\r
-#define WND_BTHDUR_PICKER_H_FONT_SIZE 44\r
-#define WND_BTHDUR_PICKER_ITEM_H 80\r
-#define WND_BTHDUR_OK_X 61\r
-#define WND_BTHDUR_OK_Y 362\r
-#define WND_BTHDUR_OK_W 331\r
-#define WND_BTHDUR_OK_H 98\r
-#define BREATH_GROUP_SIZE 466\r
-\r
-BreathDurPage::BreathDurPage() {}\r
-\r
-BreathDurPage::~BreathDurPage()\r
-{\r
- group->RemoveAll();\r
- if (lableTitle != nullptr) {\r
- delete lableTitle;\r
- lableTitle = nullptr;\r
- }\r
- if (pickerTime != nullptr) {\r
- delete pickerTime;\r
- pickerTime = nullptr;\r
- }\r
- if (buttonOk != nullptr) {\r
- delete buttonOk;\r
- buttonOk = nullptr;\r
- }\r
- if (group != nullptr) {\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (center != nullptr) {\r
- delete center;\r
- center = nullptr;\r
- }\r
-}\r
-\r
-void BreathDurPage::OnStart(void *data)\r
-{\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathDurPage::OnStart new Group ERROR");\r
- group = new UIViewGroup();\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- group->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-\r
- if (lableTitle == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathDurPage::OnStart new lableTitle ERROR");\r
- lableTitle = new UILabel();\r
- }\r
- lableTitle->SetPosition(WND_BTHDUR_TITLE_X, WND_BTHDUR_TITLE_Y);\r
- lableTitle->Resize(WND_BTHDUR_TITLE_W, WND_BTHDUR_TITLE_H);\r
- lableTitle->SetText("时间设置");\r
- lableTitle->SetTextColor(Color::White());\r
- lableTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHDUR_TITLE_FONT_SIZE);\r
- lableTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(lableTitle);\r
-\r
- if (pickerTime == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathDurPage::OnStart new pickerTime ERROR");\r
- pickerTime = new UIPicker();\r
- }\r
- pickerTime->SetPosition(WND_BTHDUR_PICKER_X, WND_BTHDUR_PICKER_Y);\r
- pickerTime->Resize(WND_BTHDUR_PICKER_W, WND_BTHDUR_PICKER_H);\r
- pickerTime->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- pickerTime->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHDUR_PICKER_B_FONT_SIZE);\r
- pickerTime->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHDUR_PICKER_H_FONT_SIZE);\r
- pickerTime->SetItemHeight(WND_BTHDUR_PICKER_ITEM_H);\r
- pickerTime->SetTextColor(Color::GetColorFromRGBA(0xfa, 0xf3, 0xf3, 0xff),\r
- Color::GetColorFromRGBA(0xfa, 0xf3, 0xf3, 0xff));\r
- uint8_t selectTime = BreathModel::GetInstance().GetSelectTime();\r
- pickerTime->SetSelected(selectTime);\r
- pickerTime->SetOnDragListener(this);\r
- pickerTime->SetLoopState(false);\r
- group->Add(pickerTime);\r
-\r
- if (center == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathDurPage::OnStart new center ERROR");\r
- center = new UIImageView();\r
- }\r
- center->SetPosition(WND_BTHDUR_PICKER_X, WND_BTHDUR_PICKER_Y);\r
- center->Resize(WND_BTHDUR_PICKER_W, WND_BTHDUR_PICKER_H);\r
- LOADIMG::LoadImageViewImg(center, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH013);\r
- group->Add(center);\r
-\r
- if (buttonOk == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathDurPage::OnStart new buttonOk ERROR");\r
- buttonOk = new UIButton();\r
- }\r
- buttonOk->SetPosition(WND_BTHDUR_OK_X, WND_BTHDUR_OK_Y);\r
- buttonOk->Resize(WND_BTHDUR_OK_W, WND_BTHDUR_OK_H);\r
- buttonOk->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- buttonOk->SetViewId(WND_BTHDUR_BTN_OK_ID);\r
- LOADIMG::LoadBtnImage(buttonOk, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH005, IMAGE_CONVERTER_TOOL_BREATH005);\r
- buttonOk->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);\r
- buttonOk->SetOnClickListener(this);\r
- group->Add(buttonOk);\r
-\r
- AddViewToPageContainer(group);\r
-}\r
-\r
-void BreathDurPage::OnStop() {}\r
-\r
-void BreathDurPage::OnResume()\r
-{\r
- pickerTime->SetValues(BreathModel::GetInstance().GetDurListData(), BreathModel::GetInstance().GetDurListSize());\r
- GetSlicePageContainer()->SetIntercept(true);\r
- GetSlicePageContainer()->SetOnDragListener(nullptr);\r
-}\r
-\r
-void BreathDurPage::OnPause() {}\r
-\r
-bool BreathDurPage::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- if (strcmp(view.GetViewId(), WND_BTHDUR_BTN_OK_ID) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathDurPage OnClick...ChangeTo DUR");\r
- BreathModel::GetInstance().SetTimeDuration(pickerTime->GetSelected());\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_MAIN_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- } else {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathDurPage OnClick...ChangeTo unknow");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-bool BreathDurPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathDurPage::OnDrag");\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathDurPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_MAIN_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- }\r
- return true;\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathExerPage\r
- * Create: 2025-5-13\r
- */\r
-#include <string>\r
-#include <sys/time.h>\r
-#include "gfx_utils/graphic_math.h"\r
-#include "common/image_cache_manager.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/root_view.h"\r
-#include "UiConfig.h"\r
-#include "ohos_timer.h"\r
-#include "AppViewIDs.h"\r
-#include "wearable_log.h"\r
-#include "NativeAbility.h"\r
-#include "SlicePageFactory.h"\r
-#include "PageTransitionMgr.h"\r
-#include "ui_resource_breath.h"\r
-#include "main/LoadImg.h"\r
-#include "breath/BreathView.h"\r
-#include "breath/BreathExerPage.h"\r
-\r
-namespace OHOS {\r
-REGIST_SLICE_PAGE(VIEW_MAIN_BREATHEASE, BrearhView::BREATH_EXER_VIEW, BreathExerPage, false);\r
-\r
-#define BREATH_GROUP_SIZE 454\r
-#define BREATH_ZERO 0\r
-#define BREATH_ONE 1\r
-#define BREATH_TWO 2\r
-#define BREATH_THREE 3\r
-static constexpr uint16_t BREATH_PHONE_IMAGE_POSITION_X = 0;\r
-static constexpr uint16_t BREATH_PHONE_IMAGE_POSITION_y = 0;\r
-static constexpr uint16_t BREATH_PHONE_IMAGE_WIDTH = 400;\r
-static constexpr uint16_t BREATH_PHONE_IMAGE_HEIGHT = 400;\r
-static constexpr uint16_t BREATH_PHONE_IMAGEANIMATOR_POSITION_X = 170;\r
-static constexpr uint16_t BREATH_PHONE_IMAGEANIMATOR_POSITION_Y = 170;\r
-static constexpr uint16_t BREATH_PHONE_IMAGEANIMATOR_WIDTH = 100;\r
-static constexpr uint16_t BREATH_PHONE_IMAGEANIMATOR_HEIGHT = 100;\r
-static constexpr uint16_t IMAGE_SIZE = 454;\r
-static constexpr uint16_t IMAGEANIMATOERVIEW_SIZE = 80;\r
-static constexpr uint16_t FIND_PHONE_IMAGE_X = 1;\r
-static constexpr uint16_t FIND_PHONE_IMAGE_y = 1;\r
-static constexpr uint16_t FIND_PHONE_PIXELBYTE_SIZE = 4;\r
-static constexpr uint16_t FIND_PHONE_PIXELBYTEH = 100;\r
-static constexpr uint16_t END_TIME = 20;\r
-\r
-const int g_imageAnimatorInfo[IMAGEANIMATOERVIEW_SIZE] = {\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE001, IMAGE_CONVERTER_TOOL_INOREX_HALE002, IMAGE_CONVERTER_TOOL_INOREX_HALE003,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE004, IMAGE_CONVERTER_TOOL_INOREX_HALE005, IMAGE_CONVERTER_TOOL_INOREX_HALE006,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE007, IMAGE_CONVERTER_TOOL_INOREX_HALE008, IMAGE_CONVERTER_TOOL_INOREX_HALE009,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE010, IMAGE_CONVERTER_TOOL_INOREX_HALE011, IMAGE_CONVERTER_TOOL_INOREX_HALE012,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE013, IMAGE_CONVERTER_TOOL_INOREX_HALE014, IMAGE_CONVERTER_TOOL_INOREX_HALE015,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE016, IMAGE_CONVERTER_TOOL_INOREX_HALE017, IMAGE_CONVERTER_TOOL_INOREX_HALE018,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE019, IMAGE_CONVERTER_TOOL_INOREX_HALE020, IMAGE_CONVERTER_TOOL_INOREX_HALE021,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE022, IMAGE_CONVERTER_TOOL_INOREX_HALE023, IMAGE_CONVERTER_TOOL_INOREX_HALE024,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE025, IMAGE_CONVERTER_TOOL_INOREX_HALE026, IMAGE_CONVERTER_TOOL_INOREX_HALE027,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE028, IMAGE_CONVERTER_TOOL_INOREX_HALE029, IMAGE_CONVERTER_TOOL_INOREX_HALE030,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE031, IMAGE_CONVERTER_TOOL_INOREX_HALE032, IMAGE_CONVERTER_TOOL_INOREX_HALE033,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE034, IMAGE_CONVERTER_TOOL_INOREX_HALE035, IMAGE_CONVERTER_TOOL_INOREX_HALE036,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE037, IMAGE_CONVERTER_TOOL_INOREX_HALE038, IMAGE_CONVERTER_TOOL_INOREX_HALE039,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE040, IMAGE_CONVERTER_TOOL_INOREX_HALE041, IMAGE_CONVERTER_TOOL_INOREX_HALE042,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE043, IMAGE_CONVERTER_TOOL_INOREX_HALE044, IMAGE_CONVERTER_TOOL_INOREX_HALE045,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE046, IMAGE_CONVERTER_TOOL_INOREX_HALE047, IMAGE_CONVERTER_TOOL_INOREX_HALE048,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE049, IMAGE_CONVERTER_TOOL_INOREX_HALE050, IMAGE_CONVERTER_TOOL_INOREX_HALE051,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE052, IMAGE_CONVERTER_TOOL_INOREX_HALE053, IMAGE_CONVERTER_TOOL_INOREX_HALE054,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE055, IMAGE_CONVERTER_TOOL_INOREX_HALE056, IMAGE_CONVERTER_TOOL_INOREX_HALE057,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE058, IMAGE_CONVERTER_TOOL_INOREX_HALE059, IMAGE_CONVERTER_TOOL_INOREX_HALE060,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE061, IMAGE_CONVERTER_TOOL_INOREX_HALE062, IMAGE_CONVERTER_TOOL_INOREX_HALE063,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE064, IMAGE_CONVERTER_TOOL_INOREX_HALE065, IMAGE_CONVERTER_TOOL_INOREX_HALE066,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE067, IMAGE_CONVERTER_TOOL_INOREX_HALE068, IMAGE_CONVERTER_TOOL_INOREX_HALE068,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE069, IMAGE_CONVERTER_TOOL_INOREX_HALE070, IMAGE_CONVERTER_TOOL_INOREX_HALE071,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE072, IMAGE_CONVERTER_TOOL_INOREX_HALE073, IMAGE_CONVERTER_TOOL_INOREX_HALE074,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE075, IMAGE_CONVERTER_TOOL_INOREX_HALE076, IMAGE_CONVERTER_TOOL_INOREX_HALE077,\r
- IMAGE_CONVERTER_TOOL_INOREX_HALE078, IMAGE_CONVERTER_TOOL_INOREX_HALE078,\r
-};\r
-\r
-BreathExerPage::BreathExerPage() {}\r
-\r
-BreathExerPage::~BreathExerPage()\r
-{\r
- group->RemoveAll();\r
- if (group != nullptr) {\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (imageAnimator_ != nullptr) {\r
- delete imageAnimator_;\r
- imageAnimator_ = nullptr;\r
- }\r
- if (animatorCallBack != nullptr) {\r
- delete animatorCallBack;\r
- animatorCallBack = nullptr;\r
- }\r
- ImageCacheManager::GetInstance().UnloadAllInMultiRes(BREATH_IMAGE);\r
-}\r
-\r
-void BreathExerPage::OnStart(void *data)\r
-{\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::OnStart new group ERROR");\r
- group = new UIViewGroup();\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- group->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- group->SetTouchable(true);\r
- group->SetDraggable(true);\r
- group->SetOnDragListener(this);\r
-\r
- palyNumber = BreathModel::GetInstance().GetTheNumberOfPlays();\r
- SetUpImageAnimator();\r
-\r
- imageAnimator_->Start();\r
- imageAnimator_->SetVisible(true);\r
- animatorCallBack = new BreathExerPageCallback(this);\r
- if (animatorCallBack == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::OnStart new animatorCallBack ERROR");\r
- return;\r
- }\r
- animation = new Animator(animatorCallBack, nullptr, 0, true);\r
- if (animation == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::OnStart new animation ERROR");\r
- return;\r
- }\r
- animation->Start();\r
-\r
- AddViewToPageContainer(group);\r
-}\r
-void BreathExerPage::OnStop() {}\r
-\r
-void BreathExerPage::SetUpImageAnimator()\r
-{\r
- imageAnimator_ = new UIImageAnimatorView();\r
- if (imageAnimator_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::UIImageAnimatorView new Label SetUpImageAnimator fail");\r
- return;\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathExerPage::SetUpImageAnimator ");\r
- imageAnimator_ = new UIImageAnimatorView();\r
- for (uint32_t DATA = 0; DATA < IMAGEANIMATOERVIEW_SIZE; DATA++) {\r
- searchImageInfo[DATA].imageInfo =\r
- ImageCacheManager::GetInstance().LoadOneInMultiRes(g_imageAnimatorInfo[DATA], BREATH_IMAGE);\r
- searchImageInfo[DATA].imageType = IMG_SRC_IMAGE_INFO;\r
- searchImageInfo[DATA].pos.x = FIND_PHONE_IMAGE_X;\r
- searchImageInfo[DATA].pos.y = FIND_PHONE_IMAGE_y;\r
- searchImageInfo[DATA].width = IMAGE_SIZE;\r
- searchImageInfo[DATA].height = IMAGE_SIZE;\r
- }\r
- imageAnimator_->SetPosition(BREATH_PHONE_IMAGE_POSITION_X, BREATH_PHONE_IMAGE_POSITION_y, BREATH_PHONE_IMAGE_WIDTH,\r
- BREATH_PHONE_IMAGE_HEIGHT);\r
- int imageNumber = IMAGEANIMATOERVIEW_SIZE;\r
- int ImageUpdate = BreathModel::GetInstance().GetStatusRespiratory();\r
- imageAnimator_->SetImageAnimatorSrc(searchImageInfo, imageNumber, ImageUpdate);\r
- imageAnimator_->LayoutCenterOfParent();\r
- imageAnimator_->SetDraggable(true);\r
- imageAnimator_->SetRepeat(false);\r
- imageAnimator_->SetRepeatTimes(palyNumber);\r
- imageAnimator_->SetOnDragListener(this);\r
- group->Add(imageAnimator_);\r
- InitImageInfo();\r
-}\r
-\r
-void BreathExerPage::BreathExerPageCallback::Callback(UIView *view)\r
-{\r
- UNUSED(view);\r
- static int count = 0;\r
- struct timeval currentTime;\r
- uint32_t breathingTime;\r
-\r
- breathingTime = BreathModel::GetInstance().GetTimeBreathing();\r
- gettimeofday(¤tTime, nullptr);\r
- int32_t StartTime = BreathModel::GetInstance().GetBeginsTime();\r
- int32_t remTime = breathingTime - (currentTime.tv_sec - StartTime);\r
- if (remTime <= END_TIME) {\r
- if (BreathExerPage->imageAnimator_->GetState() == false) {\r
- BreathExerPage->animation->Stop();\r
- BreathExerPage->imageAnimator_->Stop();\r
- BreathExerPage->imageAnimator_->SetVisible(false);\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_RESULT_VIEW, nullptr,\r
- TransitionType::TRANSITION_INVALID, true);\r
- }\r
- }\r
-}\r
-\r
-void BreathExerPage::OnPause()\r
-{\r
- animation->Stop();\r
- imageAnimator_->Stop();\r
- imageAnimator_->SetVisible(false);\r
-}\r
-\r
-bool BreathExerPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathExerPage::OnDrag");\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathExerPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- animation->Stop();\r
- imageAnimator_->Stop();\r
- imageAnimator_->SetVisible(false);\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_MAIN_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- }\r
- return true;\r
-}\r
-void BreathExerPage::OnTimer() {}\r
-\r
-void BreathExerPage::InitImageInfo()\r
-{\r
- const uint16_t pixelByteSize = FIND_PHONE_PIXELBYTE_SIZE;\r
- const uint16_t width = FIND_PHONE_PIXELBYTEH;\r
- const uint16_t height = FIND_PHONE_PIXELBYTEH;\r
- uint32_t dataSize = width * height * pixelByteSize;\r
- uint8_t *srcData1 = static_cast<uint8_t *>(UIMalloc(dataSize));\r
- if (srcData1 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::InitImageInfo new srcData1 ERROR");\r
- return;\r
- }\r
-\r
- for (uint32_t i = 0; i < dataSize; i += pixelByteSize) {\r
- srcData1[i] = SET_INT_MAX_;\r
- srcData1[i + BREATH_ONE] = 0;\r
- srcData1[i + BREATH_TWO] = 0;\r
- srcData1[i + BREATH_THREE] = OPA_OPAQUE;\r
- }\r
- imageInfoOen = static_cast<ImageInfo *>(UIMalloc(sizeof(ImageInfo)));\r
- if (imageInfoOen == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::InitImageInfo new imageInfoOen ERROR");\r
- UIFree(srcData1);\r
- return;\r
- }\r
-\r
- imageInfoOen->header.width = width;\r
- imageInfoOen->header.height = height;\r
- imageInfoOen->header.colorMode = ColorMode::ARGB8888;\r
- imageInfoOen->dataSize = dataSize;\r
- imageInfoOen->data = srcData1;\r
-\r
- uint8_t *srcData2 = static_cast<uint8_t *>(UIMalloc(dataSize));\r
- if (srcData2 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::InitImageInfo new srcData2 ERROR");\r
- UIFree(imageInfoOen);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- for (uint32_t i = 0; i < dataSize; i += pixelByteSize) {\r
- srcData2[i] = 0;\r
- srcData2[i + BREATH_ONE] = SET_INT_MAX_;\r
- srcData2[i + BREATH_TWO] = 0;\r
- srcData2[i + BREATH_THREE] = OPA_OPAQUE;\r
- }\r
-\r
- imageInfoTwo = static_cast<ImageInfo *>(UIMalloc(sizeof(ImageInfo)));\r
- if (imageInfoTwo == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::InitImageInfo new imageInfoTwo ERROR");\r
- UIFree(srcData2);\r
- UIFree(imageInfoOen);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- imageInfoTwo->header.width = width;\r
- imageInfoTwo->header.height = height;\r
- imageInfoTwo->header.colorMode = ARGB8888;\r
- imageInfoTwo->dataSize = dataSize;\r
- imageInfoTwo->data = srcData2;\r
-\r
- uint8_t *srcData3 = static_cast<uint8_t *>(UIMalloc(dataSize));\r
- if (srcData3 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::InitImageInfo new srcData3 ERROR");\r
- UIFree(imageInfoTwo);\r
- UIFree(srcData2);\r
- UIFree(imageInfoOen);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- for (uint32_t i = 0; i < dataSize; i += pixelByteSize) {\r
- srcData3[i] = 0;\r
- srcData3[i + BREATH_ONE] = 0;\r
- srcData3[i + BREATH_TWO] = SET_INT_MAX_;\r
- srcData3[i + BREATH_THREE] = OPA_OPAQUE;\r
- }\r
-\r
- imageInfoThree = static_cast<ImageInfo *>(UIMalloc(sizeof(ImageInfo)));\r
- if (imageInfoThree == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathExerPage::InitImageInfo new imageInfoThree ERROR");\r
- UIFree(srcData3);\r
- UIFree(imageInfoTwo);\r
- UIFree(srcData2);\r
- UIFree(imageInfoOen);\r
- UIFree(srcData1);\r
- return;\r
- }\r
- imageInfoThree->header.width = width;\r
- imageInfoThree->header.height = height;\r
- imageInfoThree->header.colorMode = ARGB8888;\r
- imageInfoThree->dataSize = dataSize;\r
- imageInfoThree->data = srcData3;\r
-\r
- imageAnimatorImageInfo[BREATH_ZERO].imageInfo = imageInfoOen;\r
- imageAnimatorImageInfo[BREATH_ZERO].pos = {BREATH_PHONE_IMAGEANIMATOR_POSITION_X,\r
- BREATH_PHONE_IMAGEANIMATOR_POSITION_Y};\r
- imageAnimatorImageInfo[BREATH_ZERO].width = BREATH_PHONE_IMAGEANIMATOR_WIDTH;\r
- imageAnimatorImageInfo[BREATH_ZERO].height = BREATH_PHONE_IMAGEANIMATOR_HEIGHT;\r
- imageAnimatorImageInfo[BREATH_ZERO].imageType = IMG_SRC_IMAGE_INFO;\r
-\r
- imageAnimatorImageInfo[BREATH_ONE].imageInfo = imageInfoTwo;\r
- imageAnimatorImageInfo[BREATH_ONE].pos = {BREATH_PHONE_IMAGEANIMATOR_POSITION_X,\r
- BREATH_PHONE_IMAGEANIMATOR_POSITION_Y};\r
- imageAnimatorImageInfo[BREATH_ONE].width = BREATH_PHONE_IMAGEANIMATOR_WIDTH;\r
- imageAnimatorImageInfo[BREATH_ONE].height = BREATH_PHONE_IMAGEANIMATOR_HEIGHT;\r
- imageAnimatorImageInfo[BREATH_ONE].imageType = IMG_SRC_IMAGE_INFO;\r
-\r
- imageAnimatorImageInfo[BREATH_TWO].imageInfo = imageInfoThree;\r
- imageAnimatorImageInfo[BREATH_TWO].pos = {BREATH_PHONE_IMAGEANIMATOR_POSITION_X,\r
- BREATH_PHONE_IMAGEANIMATOR_POSITION_Y};\r
- imageAnimatorImageInfo[BREATH_TWO].width = BREATH_PHONE_IMAGEANIMATOR_WIDTH;\r
- imageAnimatorImageInfo[BREATH_TWO].height = BREATH_PHONE_IMAGEANIMATOR_HEIGHT;\r
- imageAnimatorImageInfo[BREATH_TWO].imageType = IMG_SRC_IMAGE_INFO;\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathMainPage\r
- * Create: 2025-5-13\r
- */\r
-#include "gfx_utils/graphic_math.h"\r
-#include "UiConfig.h"\r
-#include "AppViewIDs.h"\r
-#include "AppViewIDs.h"\r
-#include "wearable_log.h"\r
-#include "alarm/MainAlarmView.h"\r
-#include "NativeAbility.h"\r
-#include "TransitionType.h"\r
-#include "SlicePageFactory.h"\r
-#include "PageTransitionMgr.h"\r
-#include "ui_resource_breath.h"\r
-#include "main/LoadImg.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathMainPage.h"\r
-\r
-namespace OHOS {\r
-\r
-#define WND_BTHMAIN_BTN_DUR_ID "BTH_MAIN_DUR"\r
-#define WND_BTHMAIN_BTN_RHY_ID "BTH_MAIN_RHY"\r
-#define WND_BTHMAIN_BTN_START_ID "BTH_MAIN_START"\r
-#define WND_BTHMAIN_TITLE_X 97\r
-#define WND_BTHMAIN_TITLE_Y 34\r
-#define WND_BTHMAIN_TITLE_W 260\r
-#define WND_BTHMAIN_TITLE_H 53\r
-#define WND_BTHMAIN_TITLE_FONT_SIZE 38\r
-#define WND_BTHMAIN_DURBTN_X 16\r
-#define WND_BTHMAIN_DURBTN_Y 190\r
-#define WND_BTHMAIN_DURBTN_W 74\r
-#define WND_BTHMAIN_DURBTN_H 74\r
-#define WND_BTHMAIN_RHYBTN_X 364\r
-#define WND_BTHMAIN_RHYBTN_Y 190\r
-#define WND_BTHMAIN_RHYBTN_W 74\r
-#define WND_BTHMAIN_RHYBTN_H 74\r
-#define WND_BTHMAIN_STARTBTN_X 60\r
-#define WND_BTHMAIN_STARTBTN_Y 358\r
-#define WND_BTHMAIN_STARTBTN_W 333\r
-#define WND_BTHMAIN_STARTBTN_H 96\r
-#define WND_BTHMAIN_DURLAB_X 20\r
-#define WND_BTHMAIN_DURLAB_Y 275\r
-#define WND_BTHMAIN_DURLAB_W 65\r
-#define WND_BTHMAIN_DURLAB_H 30\r
-#define WND_BTHMAIN_RHYLAB_X 376\r
-#define WND_BTHMAIN_RHYLAB_Y 275\r
-#define WND_BTHMAIN_RHYLAB_W 50\r
-#define WND_BTHMAIN_RHYLAB_H 30\r
-#define WND_BTHMAIN_CENTER_XY 127\r
-#define WND_BTHMAIN_CENTER_WH 200\r
-#define WND_BTHMAIN_lableSetting_FONT_SIZE 24\r
-#define WND_BTHMAIN_lableTime_FONT_SIZE 20\r
-#define BREATH_GROUP_SIZE 466\r
-\r
-REGIST_SLICE_PAGE(VIEW_MAIN_BREATHEASE, BrearhView::BREATH_MAIN_VIEW, BreathMainPage, true);\r
-\r
-BreathMainPage::~BreathMainPage()\r
-{\r
- group->RemoveAll();\r
- if (lableSetting != nullptr) {\r
- delete lableSetting;\r
- lableSetting = nullptr;\r
- }\r
- if (buttonStart != nullptr) {\r
- delete buttonStart;\r
- buttonStart = nullptr;\r
- }\r
- if (buttonSetting != nullptr) {\r
- delete buttonSetting;\r
- buttonSetting = nullptr;\r
- }\r
- if (buttonTime != nullptr) {\r
- delete buttonTime;\r
- buttonTime = nullptr;\r
- }\r
- if (lableBreathing != nullptr) {\r
- delete lableBreathing;\r
- lableBreathing = nullptr;\r
- }\r
- if (lableTime != nullptr) {\r
- delete lableTime;\r
- lableTime = nullptr;\r
- }\r
- if (group != nullptr) {\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (background != nullptr) {\r
- delete background;\r
- background = nullptr;\r
- }\r
- if (center != nullptr) {\r
- delete center;\r
- center = nullptr;\r
- }\r
-}\r
-\r
-void BreathMainPage::OnStart(void *data)\r
-{\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new group ERROR");\r
- group = new UIViewGroup();\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- group->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- group->SetTouchable(true);\r
- group->SetDraggable(true);\r
- group->SetOnDragListener(this);\r
-\r
- if (background == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new Background ERROR");\r
- background = new UIImageView();\r
- }\r
- background->SetPosition(0, 0);\r
- background->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- LOADIMG::LoadImageViewImg(background, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH001);\r
- group->Add(background);\r
-\r
- if (center == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new Center ERROR");\r
- center = new UIImageView();\r
- }\r
- center->SetPosition(WND_BTHMAIN_CENTER_XY, WND_BTHMAIN_CENTER_XY);\r
- center->Resize(WND_BTHMAIN_CENTER_WH, WND_BTHMAIN_CENTER_WH);\r
- LOADIMG::LoadImageViewImg(center, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH012);\r
- group->Add(center);\r
-\r
- if (lableBreathing == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new lableBreathing ERROR");\r
- lableBreathing = new UILabel();\r
- }\r
- lableBreathing->SetPosition(WND_BTHMAIN_TITLE_X, WND_BTHMAIN_TITLE_Y);\r
- lableBreathing->Resize(WND_BTHMAIN_TITLE_W, WND_BTHMAIN_TITLE_H);\r
- lableBreathing->SetText("呼吸");\r
- lableBreathing->SetTextColor(Color::White());\r
- lableBreathing->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- lableBreathing->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_TITLE_FONT_SIZE);\r
- group->Add(lableBreathing);\r
-\r
- if (buttonTime == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new buttonTime ERROR");\r
- buttonTime = new UIButton();\r
- }\r
- buttonTime->SetPosition(WND_BTHMAIN_DURBTN_X, WND_BTHMAIN_DURBTN_Y);\r
- buttonTime->Resize(WND_BTHMAIN_DURBTN_W, WND_BTHMAIN_DURBTN_H);\r
- buttonTime->SetViewId(WND_BTHMAIN_BTN_DUR_ID);\r
- buttonTime->SetOnClickListener(this);\r
- LOADIMG::LoadBtnImage(buttonTime, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH002, IMAGE_CONVERTER_TOOL_BREATH002);\r
- buttonTime->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);\r
- buttonTime->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- group->Add(buttonTime);\r
-\r
- if (buttonSetting == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new buttonSetting ERROR");\r
- buttonSetting = new UIButton();\r
- }\r
- buttonSetting->SetPosition(WND_BTHMAIN_RHYBTN_X, WND_BTHMAIN_RHYBTN_Y);\r
- buttonSetting->Resize(WND_BTHMAIN_RHYBTN_W, WND_BTHMAIN_RHYBTN_H);\r
- buttonSetting->SetViewId(WND_BTHMAIN_BTN_RHY_ID);\r
- buttonSetting->SetOnClickListener(this);\r
- LOADIMG::LoadBtnImage(buttonSetting, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH004, IMAGE_CONVERTER_TOOL_BREATH004);\r
- buttonSetting->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);\r
- buttonSetting->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- group->Add(buttonSetting);\r
-\r
- if (buttonStart == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new buttonStart ERROR");\r
- buttonStart = new UIButton();\r
- }\r
- buttonStart->SetPosition(WND_BTHMAIN_STARTBTN_X, WND_BTHMAIN_STARTBTN_Y);\r
- buttonStart->Resize(WND_BTHMAIN_STARTBTN_W, WND_BTHMAIN_STARTBTN_H);\r
- buttonStart->SetViewId(WND_BTHMAIN_BTN_START_ID);\r
- buttonStart->SetOnClickListener(this);\r
- LOADIMG::LoadBtnImage(buttonStart, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH006, IMAGE_CONVERTER_TOOL_BREATH006);\r
- buttonStart->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);\r
- buttonStart->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- group->Add(buttonStart);\r
-\r
- if (lableSetting == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new lableSetting ERROR");\r
- lableSetting = new UILabel();\r
- }\r
- lableSetting->SetPosition(WND_BTHMAIN_RHYLAB_X, WND_BTHMAIN_RHYLAB_Y);\r
- lableSetting->Resize(WND_BTHMAIN_RHYLAB_W, WND_BTHMAIN_RHYLAB_H);\r
- lableSetting->SetText("设置");\r
- lableSetting->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
- lableSetting->SetTextColor(Color::White());\r
- lableSetting->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- lableSetting->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_lableSetting_FONT_SIZE);\r
- group->Add(lableSetting);\r
-\r
- if (lableTime == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnStart new lableTime ERROR");\r
- lableTime = new UILabel();\r
- }\r
- lableTime->SetPosition(WND_BTHMAIN_DURLAB_X, WND_BTHMAIN_DURLAB_Y);\r
- lableTime->Resize(WND_BTHMAIN_DURLAB_W, WND_BTHMAIN_DURLAB_H);\r
- lableTime->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
- lableTime->SetTextColor(Color::White());\r
- lableTime->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- lableTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_lableTime_FONT_SIZE);\r
- group->Add(lableTime);\r
-\r
- AddViewToPageContainer(group);\r
-}\r
-\r
-void BreathMainPage::OnStop(void) {}\r
-\r
-void BreathMainPage::OnResume(void)\r
-{\r
- lableTime->SetText(BreathModel::GetInstance().GetTimeDuration());\r
-}\r
-\r
-bool BreathMainPage::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- if (strcmp(view.GetViewId(), WND_BTHMAIN_BTN_DUR_ID) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathMainPage OnClick...ChangeTo DUR");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_DUR_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- } else if (strcmp(view.GetViewId(), WND_BTHMAIN_BTN_RHY_ID) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathMainPage OnClick...ChangeTo RHY");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_RHY_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- } else if (strcmp(view.GetViewId(), WND_BTHMAIN_BTN_START_ID) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathMainPage OnClick...ChangeTo START");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_START_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- struct timeval current_time;\r
- gettimeofday(¤t_time, nullptr);\r
- uint32_t remTime = current_time.tv_sec;\r
- BreathModel::GetInstance().SetSaveTime(remTime);\r
- } else {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage OnClick...ChangeTo unknow");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-bool BreathMainPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnDrag");\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathMainPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- }\r
- return true;\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathModel\r
- * Create: 2025-5-13\r
- */\r
-#include "uiservice/ui_service.h"\r
-#include "main/HealthModel.h"\r
-#include "breath/BreathDurPage.h"\r
-#include "breath/BreathModel.h"\r
-\r
-namespace OHOS {\r
-#define MINUTE_IDX_1 0\r
-#define MINUTE_IDX_2 1\r
-#define MINUTE_IDX_3 2\r
-#define SPEED_IDX_1 0\r
-#define SPEED_IDX_2 1\r
-#define SPEED_IDX_3 2\r
-#define MINUTE_1 "1 分钟"\r
-#define MINUTE_2 "2 分钟"\r
-#define MINUTE_3 "3 分钟"\r
-#define SPEED_FAST_8 "稍快 8次/分"\r
-#define SPEED_SLOW_7 "舒缓 7次/分"\r
-#define SPEED_SLOW_6 "缓慢 6次/分"\r
-#define TIME_1 "1"\r
-#define TIME_2 "2"\r
-#define TIME_3 "3"\r
-#define SPEED_FASTER_LITTLE "稍快"\r
-#define SPEED_SOOTHING "舒缓"\r
-#define SPEED_SLOWING "缓慢"\r
-#define MINUTE_0_DATA 0\r
-#define MINUTE_1_DATA 1\r
-#define MINUTE_2_DATA 2\r
-#define MINUTE_3_DATA 3\r
-#define NUMBLE_PLAY_8_DATA 8\r
-#define NUMBLE_PLAY_7_DATA 7\r
-#define NUMBLE_PLAY_6_DATA 6\r
-#define NUMBLE_PLAY_16_DATA 16\r
-#define NUMBLE_PLAY_14_DATA 14\r
-#define NUMBLE_PLAY_12_DATA 12\r
-#define NUMBLE_PLAY_24_DATA 24\r
-#define NUMBLE_PLAY_21_DATA 21\r
-#define NUMBLE_PLAY_18_DATA 18\r
-#define Frequency_Score_LOWER 60\r
-#define Frequency_Score_RANGE 40\r
-#define Heart_Rate_LOWER 90\r
-#define Heart_Rate_RANGE 10\r
-#define ONE_MINUTE 60\r
-#define TWO_MINUTES 120\r
-#define THREE_MINUTES 180\r
-#define SIX_POINTS_FOR_ONE 125\r
-#define SEVEN_POINTS_FOR_ONE 106\r
-#define EIGHT_POINTS_FOR_ONE 98\r
-uint8_t g_frequencyScore;\r
-uint8_t g_heartRate;\r
-\r
-BreathModel::BreathModel()\r
-{\r
- DefaultData();\r
-}\r
-\r
-BreathModel::~BreathModel() {}\r
-\r
-void BreathModel::DefaultData()\r
-{\r
- durList[MINUTE_IDX_1] = MINUTE_1;\r
- durList[MINUTE_IDX_2] = MINUTE_2;\r
- durList[MINUTE_IDX_3] = MINUTE_3;\r
- rhyList[SPEED_IDX_1] = SPEED_FAST_8;\r
- rhyList[SPEED_IDX_2] = SPEED_SLOW_7;\r
- rhyList[SPEED_IDX_3] = SPEED_SLOW_6;\r
- durListVal[MINUTE_IDX_1] = MINUTE_1_DATA;\r
- durListVal[MINUTE_IDX_2] = MINUTE_2_DATA;\r
- durListVal[MINUTE_IDX_3] = MINUTE_3_DATA;\r
-}\r
-\r
-BreathModel &BreathModel::GetInstance()\r
-{\r
- static BreathModel instance;\r
- return instance;\r
-}\r
-\r
-const char **BreathModel::GetDurListData()\r
-{\r
- return durList;\r
-}\r
-\r
-const char **BreathModel::GetRhyListData()\r
-{\r
- return rhyList;\r
-}\r
-\r
-uint8_t BreathModel::GetDurListSize()\r
-{\r
- return sizeof(durList) / sizeof(durList[0]);\r
-}\r
-\r
-uint8_t BreathModel::GetRhyListSize()\r
-{\r
- return sizeof(rhyList) / sizeof(rhyList[0]);\r
-}\r
-\r
-void BreathModel::SetTimeDuration(uint16_t idx)\r
-{\r
- data = idx;\r
-}\r
-\r
-void BreathModel::SetTimeRhyation(uint16_t idx)\r
-{\r
- date = idx;\r
-}\r
-\r
-uint8_t BreathModel::GetSelectTime()\r
-{\r
- if (data == MINUTE_0_DATA) {\r
- return MINUTE_IDX_1;\r
- } else if (data == MINUTE_1_DATA) {\r
- return MINUTE_IDX_2;\r
- } else if (data == MINUTE_2_DATA) {\r
- return MINUTE_IDX_3;\r
- }\r
- return 0;\r
-}\r
-\r
-uint8_t BreathModel::GetSelectTempo()\r
-{\r
- if (date == MINUTE_0_DATA) {\r
- return SPEED_IDX_1;\r
- } else if (date == MINUTE_1_DATA) {\r
- return SPEED_IDX_2;\r
- } else if (date == MINUTE_2_DATA) {\r
- return SPEED_IDX_3;\r
- }\r
- return 0;\r
-}\r
-\r
-char *BreathModel::GetTimeDuration()\r
-{\r
- if (data == MINUTE_0_DATA) {\r
- return MINUTE_1;\r
- } else if (data == MINUTE_1_DATA) {\r
- return MINUTE_2;\r
- } else if (data == MINUTE_2_DATA) {\r
- return MINUTE_3;\r
- }\r
- return nullptr;\r
-}\r
-\r
-char *BreathModel::GetDuration()\r
-{\r
- if (data == MINUTE_0_DATA) {\r
- return TIME_1;\r
- } else if (data == MINUTE_1_DATA) {\r
- return TIME_2;\r
- } else if (data == MINUTE_2_DATA) {\r
- return TIME_3;\r
- }\r
- return nullptr;\r
-}\r
-\r
-char *BreathModel::GetRhythm()\r
-{\r
- if (date == MINUTE_0_DATA) {\r
- return SPEED_FASTER_LITTLE;\r
- } else if (date == MINUTE_1_DATA) {\r
- return SPEED_SOOTHING;\r
- } else if (date == MINUTE_2_DATA) {\r
- return SPEED_SLOWING;\r
- }\r
- return nullptr;\r
-}\r
-\r
-void BreathModel::SetSaveTime(int32_t idx)\r
-{\r
- saveTime = idx;\r
-}\r
-\r
-int32_t BreathModel::GetSaveTime()\r
-{\r
- return saveTime;\r
-}\r
-\r
-void BreathModel::SetBeginsTime(int32_t idx)\r
-{\r
- beginsTime = idx;\r
-}\r
-\r
-int32_t BreathModel::GetBeginsTime()\r
-{\r
- return beginsTime;\r
-}\r
-\r
-uint32_t BreathModel::GetTimeBreathing()\r
-{\r
- if (data == MINUTE_0_DATA) {\r
- return ONE_MINUTE;\r
- } else if (data == MINUTE_1_DATA) {\r
- return TWO_MINUTES;\r
- } else if (data == MINUTE_2_DATA) {\r
- return THREE_MINUTES;\r
- }\r
- return 0;\r
-}\r
-\r
-uint32_t BreathModel::GetStatusRespiratory()\r
-{\r
- if (date == MINUTE_0_DATA) {\r
- return EIGHT_POINTS_FOR_ONE;\r
- } else if (date == MINUTE_1_DATA) {\r
- return SEVEN_POINTS_FOR_ONE;\r
- } else if (date == MINUTE_2_DATA) {\r
- return SIX_POINTS_FOR_ONE;\r
- }\r
- return 0;\r
-}\r
-\r
-void BreathModel::SetFrequencyScore()\r
-{\r
- g_frequencyScore = Frequency_Score_LOWER + rand() % Frequency_Score_RANGE;\r
-}\r
-\r
-uint8_t BreathModel::GetFrequencyScore()\r
-{\r
- return g_frequencyScore;\r
-}\r
-\r
-void BreathModel::SetHeartRate()\r
-{\r
- g_heartRate = Heart_Rate_LOWER + rand() % Heart_Rate_RANGE;\r
-}\r
-\r
-uint8_t BreathModel::GetHeartRate()\r
-{\r
- return g_heartRate;\r
-}\r
-\r
-uint32_t BreathModel::GetTheNumberOfPlays()\r
-{\r
- if (date == MINUTE_0_DATA && data == MINUTE_0_DATA) {\r
- return NUMBLE_PLAY_8_DATA;\r
- } else if (date == MINUTE_1_DATA && data == MINUTE_0_DATA) {\r
- return NUMBLE_PLAY_7_DATA;\r
- } else if (date == MINUTE_2_DATA && data == MINUTE_0_DATA) {\r
- return NUMBLE_PLAY_6_DATA;\r
- } else if (date == MINUTE_0_DATA && data == MINUTE_1_DATA) {\r
- return NUMBLE_PLAY_16_DATA;\r
- } else if (date == MINUTE_1_DATA && data == MINUTE_1_DATA) {\r
- return NUMBLE_PLAY_14_DATA;\r
- } else if (date == MINUTE_2_DATA && data == MINUTE_1_DATA) {\r
- return NUMBLE_PLAY_12_DATA;\r
- } else if (date == MINUTE_0_DATA && data == MINUTE_2_DATA) {\r
- return NUMBLE_PLAY_24_DATA;\r
- } else if (date == MINUTE_1_DATA && data == MINUTE_2_DATA) {\r
- return NUMBLE_PLAY_21_DATA;\r
- } else if (date == MINUTE_2_DATA && data == MINUTE_2_DATA) {\r
- return NUMBLE_PLAY_18_DATA;\r
- }\r
- return 0;\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathPresenter\r
- * Create: 2025-5-13\r
- */\r
-#include "AppViewIDs.h"\r
-#include "NativeRegisterManager.h"\r
-#include "breath/BreathView.h"\r
-#include "breath/BreathPresenter.h"\r
-\r
-namespace OHOS {\r
-REGIST_MENU(VIEW_MAIN_BREATHEASE, BreathView, BreathPresenter, BREATH_MAIN_ICON, BREATH_MAIN_ICON, "呼吸训练");\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathReult\r
- * Create: 2025-5-13\r
- */\r
-#include <sstream>\r
-#include "gfx_utils/graphic_math.h"\r
-#include "components/root_view.h"\r
-#include "UiConfig.h"\r
-#include "AppViewIDs.h"\r
-#include "wearable_log.h"\r
-#include "NativeAbility.h"\r
-#include "TransitionType.h"\r
-#include "SlicePageFactory.h"\r
-#include "main/LoadImg.h"\r
-#include "ui_resource_breath.h"\r
-#include "breath/BreathView.h"\r
-#include "breath/BreathResultPage.h"\r
-\r
-namespace OHOS {\r
-REGIST_SLICE_PAGE(VIEW_MAIN_BREATHEASE, BrearhView::BREATH_RESULT_VIEW, BreathResultPage, false);\r
-#define WND_BTHMAIN_RESULTS_X 97\r
-#define WND_BTHMAIN_RESULTS_Y 34\r
-#define WND_BTHMAIN_RESULTS_W 260\r
-#define WND_BTHMAIN_RESULTS_H 53\r
-#define WND_BTHMAIN_MAX_FONT_SIZE 38\r
-#define WND_BTHMAIN_FREQUENCIES_X 140\r
-#define WND_BTHMAIN_FREQUENCIES_Y 133\r
-#define WND_BTHMAIN_FREQUENCIES_W 164\r
-#define WND_BTHMAIN_FREQUENCIES_H 30\r
-#define WND_BTHMAIN_MIN_FONT_SIZE 24\r
-#define WND_BTHMAIN_HEARTRATE_X 149\r
-#define WND_BTHMAIN_HEARTRATE_Y 233\r
-#define WND_BTHMAIN_HEARTRATE_W 120\r
-#define WND_BTHMAIN_HEARTRATE_H 30\r
-#define WND_BTHMAIN_FREQUEBCY_TIMES_X 204\r
-#define WND_BTHMAIN_FREQUEBCY_TIMES_Y 179\r
-#define WND_BTHMAIN_FREQUEBCY_TIMES_W 29\r
-#define WND_BTHMAIN_FREQUEBCY_TIMES_H 29\r
-#define WND_BTHMAIN_HEARTRATE_TIMES_X 204\r
-#define WND_BTHMAIN_HEARTRATE_TIMES_Y 279\r
-#define WND_BTHMAIN_HEARTRATE_TIMES_W 58\r
-#define WND_BTHMAIN_HEARTRATE_TIMES_H 29\r
-#define WND_BTHMAIN_DURATION_X 149\r
-#define WND_BTHMAIN_DURATION_Y 333\r
-#define WND_BTHMAIN_DURATION_W 96\r
-#define WND_BTHMAIN_DURATION_H 30\r
-#define WND_BTHMAIN_FREQUENCIES_SCOUT_X 149\r
-#define WND_BTHMAIN_FREQUENCIES_SCOUT_Y 165\r
-#define WND_BTHMAIN_FREQUENCIES_SCOUT_W 49\r
-#define WND_BTHMAIN_FREQUENCIES_SCOUT_H 49\r
-#define WND_BTHMAIN_SCOUT_FONT_SIZE 40\r
-#define WND_BTHMAIN_HEARTRATE_SCOUT_X 149\r
-#define WND_BTHMAIN_HEARTRATE_SCOUT_Y 265\r
-#define WND_BTHMAIN_HEARTRATE_SCOUT_W 49\r
-#define WND_BTHMAIN_HEARTRATE_SCOUT_H 49\r
-#define WND_BTHMAIN_RHYTHM_X 161\r
-#define WND_BTHMAIN_RHYTHM_Y 83\r
-#define WND_BTHMAIN_RHYTHM_W 132\r
-#define WND_BTHMAIN_RHYTHM_H 30\r
-#define WND_BTHMAIN_TIME_X 149\r
-#define WND_BTHMAIN_TIME_Y 365\r
-#define WND_BTHMAIN_TIME_W 25\r
-#define WND_BTHMAIN_TIME_H 48\r
-#define WND_BTHMAIN_TIME_UNIT_X 180\r
-#define WND_BTHMAIN_TIME_UNIT_Y 379\r
-#define WND_BTHMAIN_TIME_UNIT_W 58\r
-#define WND_BTHMAIN_TIME_UNIT_H 29\r
-#define WND_BTHMAIN_SCORES_X 241\r
-#define WND_BTHMAIN_SCORES_Y 177\r
-#define WND_BTHMAIN_SCORES_W 72\r
-#define WND_BTHMAIN_SCORES_H 32\r
-#define BREATH_GROUP_SIZE 466\r
-#define BREATH_GUINEAS_SIZE 100\r
-#define BREATH_NINETY_SIZE 90\r
-#define BREATH_EIGHTY_NINE_SIZE 89\r
-#define BREATH_EIGHTY_SIZE 80\r
-#define BREATH_SEVENTY_NINE_SIZE 79\r
-#define BREATH_SEVENTY_SIZE 70\r
-#define BREATH_SIXTY_NINE_SIZE 69\r
-#define BREATH_SIXTY_SIZE 60\r
-#define TEXT_OPACITY 147\r
-#define TEXT_SIZE 5\r
-\r
-BreathResultPage::BreathResultPage() {}\r
-\r
-BreathResultPage::~BreathResultPage()\r
-{\r
- group->RemoveAll();\r
- if (trainingResults != nullptr) {\r
- delete trainingResults;\r
- trainingResults = nullptr;\r
- }\r
- if (trainingFrequencies != nullptr) {\r
- delete trainingFrequencies;\r
- trainingFrequencies = nullptr;\r
- }\r
- if (trainingHeartRate != nullptr) {\r
- delete trainingHeartRate;\r
- trainingHeartRate = nullptr;\r
- }\r
- if (trainingDuration != nullptr) {\r
- delete trainingDuration;\r
- trainingDuration = nullptr;\r
- }\r
- if (frequenciesScout != nullptr) {\r
- delete frequenciesScout;\r
- frequenciesScout = nullptr;\r
- }\r
- if (heartRateScout != nullptr) {\r
- delete heartRateScout;\r
- heartRateScout = nullptr;\r
- }\r
- if (descriptionBreathing != nullptr) {\r
- delete descriptionBreathing;\r
- descriptionBreathing = nullptr;\r
- }\r
- if (time != nullptr) {\r
- delete time;\r
- time = nullptr;\r
- }\r
- if (timeUnit != nullptr) {\r
- delete timeUnit;\r
- timeUnit = nullptr;\r
- }\r
- if (heartRateTimes != nullptr) {\r
- delete heartRateTimes;\r
- heartRateTimes = nullptr;\r
- }\r
- if (frequencyTimes != nullptr) {\r
- delete frequencyTimes;\r
- frequencyTimes = nullptr;\r
- }\r
- if (group != nullptr) {\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (scores != nullptr) {\r
- delete scores;\r
- scores = nullptr;\r
- }\r
-}\r
-\r
-void BreathResultPage::OnStart(void *data)\r
-{\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new group ERROR");\r
- group = new UIViewGroup();\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- group->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- group->SetTouchable(true);\r
- group->SetDraggable(true);\r
- group->SetOnDragListener(this);\r
-\r
- if (trainingResults == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new trainingResults ERROR");\r
- trainingResults = new UILabel();\r
- }\r
- trainingResults->SetPosition(WND_BTHMAIN_RESULTS_X, WND_BTHMAIN_RESULTS_Y);\r
- trainingResults->Resize(WND_BTHMAIN_RESULTS_W, WND_BTHMAIN_RESULTS_H);\r
- trainingResults->SetText("训练结果");\r
- trainingResults->SetTextColor(Color::White());\r
- trainingResults->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MAX_FONT_SIZE);\r
- trainingResults->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(trainingResults);\r
-\r
- if (trainingFrequencies == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new trainingFrequencies ERROR");\r
- trainingFrequencies = new UILabel();\r
- }\r
- trainingFrequencies->SetPosition(WND_BTHMAIN_FREQUENCIES_X, WND_BTHMAIN_FREQUENCIES_Y);\r
- trainingFrequencies->Resize(WND_BTHMAIN_FREQUENCIES_W, WND_BTHMAIN_FREQUENCIES_H);\r
- trainingFrequencies->SetText("呼吸频率得分");\r
- trainingFrequencies->SetTextColor(Color::White());\r
- trainingFrequencies->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MIN_FONT_SIZE);\r
- trainingFrequencies->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- trainingFrequencies->SetStyle(STYLE_TEXT_OPA, TEXT_OPACITY);\r
- group->Add(trainingFrequencies);\r
-\r
- if (trainingHeartRate == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new trainingHeartRate ERROR");\r
- trainingHeartRate = new UILabel();\r
- }\r
- trainingHeartRate->SetPosition(WND_BTHMAIN_HEARTRATE_X, WND_BTHMAIN_HEARTRATE_Y);\r
- trainingHeartRate->Resize(WND_BTHMAIN_HEARTRATE_W, WND_BTHMAIN_HEARTRATE_H);\r
- trainingHeartRate->SetText("呼吸前心率");\r
- trainingHeartRate->SetTextColor(Color::White());\r
- trainingHeartRate->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MIN_FONT_SIZE);\r
- trainingHeartRate->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- trainingHeartRate->SetStyle(STYLE_TEXT_OPA, TEXT_OPACITY);\r
- group->Add(trainingHeartRate);\r
-\r
- if (frequencyTimes == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new frequencyTimes ERROR");\r
- frequencyTimes = new UILabel();\r
- }\r
- frequencyTimes->SetPosition(WND_BTHMAIN_FREQUEBCY_TIMES_X, WND_BTHMAIN_FREQUEBCY_TIMES_Y);\r
- frequencyTimes->Resize(WND_BTHMAIN_FREQUEBCY_TIMES_W, WND_BTHMAIN_FREQUEBCY_TIMES_H);\r
- frequencyTimes->SetText("分");\r
- frequencyTimes->SetTextColor(Color::White());\r
- frequencyTimes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MIN_FONT_SIZE);\r
- frequencyTimes->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- frequencyTimes->SetStyle(STYLE_TEXT_OPA, TEXT_OPACITY);\r
- group->Add(frequencyTimes);\r
-\r
- if (heartRateTimes == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new HeartRate_Times ERROR");\r
- heartRateTimes = new UILabel();\r
- }\r
- heartRateTimes->SetPosition(WND_BTHMAIN_HEARTRATE_TIMES_X, WND_BTHMAIN_HEARTRATE_TIMES_Y);\r
- heartRateTimes->Resize(WND_BTHMAIN_HEARTRATE_TIMES_W, WND_BTHMAIN_HEARTRATE_TIMES_H);\r
- heartRateTimes->SetText("次/分");\r
- heartRateTimes->SetTextColor(Color::White());\r
- heartRateTimes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MIN_FONT_SIZE);\r
- heartRateTimes->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- heartRateTimes->SetStyle(STYLE_TEXT_OPA, TEXT_OPACITY);\r
- group->Add(heartRateTimes);\r
-\r
- if (trainingDuration == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new trainingDuration ERROR");\r
- trainingDuration = new UILabel();\r
- }\r
- trainingDuration->SetPosition(WND_BTHMAIN_DURATION_X, WND_BTHMAIN_DURATION_Y);\r
- trainingDuration->Resize(WND_BTHMAIN_DURATION_W, WND_BTHMAIN_DURATION_H);\r
- trainingDuration->SetText("训练时长");\r
- trainingDuration->SetTextColor(Color::White());\r
- trainingDuration->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MIN_FONT_SIZE);\r
- trainingDuration->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- trainingDuration->SetStyle(STYLE_TEXT_OPA, TEXT_OPACITY);\r
- group->Add(trainingDuration);\r
-\r
- if (frequenciesScout == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new Frequencies_scout ERROR");\r
- frequenciesScout = new UILabel();\r
- }\r
- frequenciesScout->SetPosition(WND_BTHMAIN_FREQUENCIES_SCOUT_X, WND_BTHMAIN_FREQUENCIES_SCOUT_Y);\r
- frequenciesScout->Resize(WND_BTHMAIN_FREQUENCIES_SCOUT_W, WND_BTHMAIN_FREQUENCIES_SCOUT_H);\r
- frequenciesScout->SetTextColor(Color::White());\r
- frequenciesScout->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_SCOUT_FONT_SIZE);\r
- frequenciesScout->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(frequenciesScout);\r
-\r
- if (heartRateScout == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new HeartRate_scout ERROR");\r
- heartRateScout = new UILabel();\r
- }\r
- heartRateScout->SetPosition(WND_BTHMAIN_HEARTRATE_SCOUT_X, WND_BTHMAIN_HEARTRATE_SCOUT_Y);\r
- heartRateScout->Resize(WND_BTHMAIN_HEARTRATE_SCOUT_W, WND_BTHMAIN_HEARTRATE_SCOUT_H);\r
- heartRateScout->SetTextColor(Color::White());\r
- heartRateScout->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_SCOUT_FONT_SIZE);\r
- heartRateScout->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(heartRateScout);\r
-\r
- if (descriptionBreathing == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new Rhythm ERROR");\r
- descriptionBreathing = new UILabel();\r
- }\r
- descriptionBreathing->SetPosition(WND_BTHMAIN_RHYTHM_X, WND_BTHMAIN_RHYTHM_Y);\r
- descriptionBreathing->Resize(WND_BTHMAIN_RHYTHM_W, WND_BTHMAIN_RHYTHM_H);\r
- descriptionBreathing->SetTextColor(Color::Green());\r
- descriptionBreathing->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MIN_FONT_SIZE);\r
- descriptionBreathing->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(descriptionBreathing);\r
-\r
- if (time == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new Time ERROR");\r
- time = new UILabel();\r
- }\r
- time->SetPosition(WND_BTHMAIN_TIME_X, WND_BTHMAIN_TIME_Y);\r
- time->Resize(WND_BTHMAIN_TIME_W, WND_BTHMAIN_TIME_H);\r
- time->SetTextColor(Color::White());\r
- time->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_SCOUT_FONT_SIZE);\r
- time->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(time);\r
-\r
- if (timeUnit == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new Time_Unit ERROR");\r
- timeUnit = new UILabel();\r
- }\r
- timeUnit->SetPosition(WND_BTHMAIN_TIME_UNIT_X, WND_BTHMAIN_TIME_UNIT_Y);\r
- timeUnit->Resize(WND_BTHMAIN_TIME_UNIT_W, WND_BTHMAIN_TIME_UNIT_H);\r
- timeUnit->SetText("分钟");\r
- timeUnit->SetTextColor(Color::White());\r
- timeUnit->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHMAIN_MIN_FONT_SIZE);\r
- timeUnit->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- timeUnit->SetStyle(STYLE_TEXT_OPA, TEXT_OPACITY);\r
- group->Add(timeUnit);\r
-\r
- if (scores == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnStart new Scores ERROR");\r
- scores = new UIImageView();\r
- }\r
- scores->SetPosition(WND_BTHMAIN_SCORES_X, WND_BTHMAIN_SCORES_Y);\r
- scores->Resize(WND_BTHMAIN_SCORES_W, WND_BTHMAIN_SCORES_H);\r
- group->Add(scores);\r
-\r
- AddViewToPageContainer(group);\r
-}\r
-void BreathResultPage::OnStop() {}\r
-void BreathResultPage::OnResume(void)\r
-{\r
- std::ostringstream oss;\r
- oss << BreathModel::GetInstance().GetTimeDuration() << " | " << BreathModel::GetInstance().GetRhythm();\r
- std::string weatherHumidity = oss.str();\r
- descriptionBreathing->SetText(weatherHumidity.c_str());\r
- time->SetText(BreathModel::GetInstance().GetDuration());\r
-\r
- BreathModel::GetInstance().SetFrequencyScore();\r
- BreathModel::GetInstance().SetHeartRate();\r
-\r
- frequencyScore = BreathModel::GetInstance().GetFrequencyScore();\r
- char szFrequencyScore[TEXT_SIZE] = "";\r
- sprintf_s(szFrequencyScore, sizeof(szFrequencyScore), "%d", frequencyScore);\r
- frequenciesScout->SetText(szFrequencyScore);\r
-\r
- if (frequencyScore >= BREATH_NINETY_SIZE && frequencyScore <= BREATH_GUINEAS_SIZE) {\r
- LOADIMG::LoadImageViewImg(scores, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH008);\r
- } else if (frequencyScore >= BREATH_EIGHTY_SIZE && frequencyScore <= BREATH_EIGHTY_NINE_SIZE) {\r
- LOADIMG::LoadImageViewImg(scores, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH007);\r
- } else if (frequencyScore >= BREATH_SEVENTY_SIZE && frequencyScore <= BREATH_SEVENTY_NINE_SIZE) {\r
- LOADIMG::LoadImageViewImg(scores, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH011);\r
- } else if (frequencyScore >= BREATH_SIXTY_SIZE && frequencyScore <= BREATH_SIXTY_NINE_SIZE) {\r
- LOADIMG::LoadImageViewImg(scores, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH009);\r
- } else {\r
- LOADIMG::LoadImageViewImg(scores, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH010);\r
- }\r
-\r
- heartRate = BreathModel::GetInstance().GetHeartRate();\r
- char szHeartRate[TEXT_SIZE] = "";\r
- sprintf_s(szHeartRate, sizeof(szHeartRate), "%d", heartRate);\r
- heartRateScout->SetText(szHeartRate);\r
-}\r
-\r
-bool BreathResultPage::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- return true;\r
-}\r
-\r
-bool BreathResultPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnDrag");\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathResultPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_MAIN_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- }\r
- return true;\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathRhyPage\r
- * Create: 2025-5-13\r
- */\r
-#include "gfx_utils/graphic_math.h"\r
-#include "UiConfig.h"\r
-#include "AppViewIDs.h"\r
-#include "wearable_log.h"\r
-#include "NativeAbility.h"\r
-#include "alarm/MainAlarmView.h"\r
-#include "SlicePageFactory.h"\r
-#include "ui_resource_breath.h"\r
-#include "main/LoadImg.h"\r
-#include "breath/BreathView.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathRhyPage.h"\r
-\r
-namespace OHOS {\r
-REGIST_SLICE_PAGE(VIEW_MAIN_BREATHEASE, BrearhView::BREATH_RHY_VIEW, BreathRhyPage, false);\r
-#define WND_BTHRHY_BTN_OK_ID "BTH_RHY_OK"\r
-#define WND_BTHRHY_TITLE_X 100\r
-#define WND_BTHRHY_TITLE_Y 38\r
-#define WND_BTHRHY_TITLE_W 253\r
-#define WND_BTHRHY_TITLE_H 53\r
-#define WND_BTHRHY_TITLE_FONT_SIZE 38\r
-#define WND_BTHRHY_PICKER_X 64\r
-#define WND_BTHRHY_PICKER_Y 109\r
-#define WND_BTHRHY_PICKER_W 321\r
-#define WND_BTHRHY_PICKER_H 218\r
-#define WND_BTHRHY_PICKER_B_FONT_SIZE 44\r
-#define WND_BTHRHY_PICKER_H_FONT_SIZE 44\r
-#define WND_BTHRHY_PICKER_ITEM_H 80\r
-#define WND_BTHRHY_OK_X 61\r
-#define WND_BTHRHY_OK_Y 362\r
-#define WND_BTHRHY_OK_W 331\r
-#define WND_BTHRHY_OK_H 98\r
-#define BREATH_GROUP_SIZE 466\r
-\r
-BreathRhyPage::BreathRhyPage() {}\r
-\r
-BreathRhyPage::~BreathRhyPage()\r
-{\r
- group->RemoveAll();\r
- if (lableRhythm != nullptr) {\r
- delete lableRhythm;\r
- lableRhythm = nullptr;\r
- }\r
- if (pickerRhythm != nullptr) {\r
- delete pickerRhythm;\r
- pickerRhythm = nullptr;\r
- }\r
- if (buttonOk != nullptr) {\r
- delete buttonOk;\r
- buttonOk = nullptr;\r
- }\r
- if (group != nullptr) {\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (center != nullptr) {\r
- delete center;\r
- center = nullptr;\r
- }\r
-}\r
-\r
-void BreathRhyPage::OnStart(void *data)\r
-{\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathRhyPage::OnStart new group ERROR");\r
- group = new UIViewGroup();\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- group->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- group->SetTouchable(false);\r
- group->SetDraggable(false);\r
-\r
- if (lableRhythm == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathRhyPage::OnStart new lableRhythm ERROR");\r
- lableRhythm = new UILabel();\r
- }\r
- lableRhythm->SetPosition(WND_BTHRHY_TITLE_X, WND_BTHRHY_TITLE_Y);\r
- lableRhythm->Resize(WND_BTHRHY_TITLE_W, WND_BTHRHY_TITLE_H);\r
- lableRhythm->SetText("节奏设置");\r
- lableRhythm->SetTextColor(Color::White());\r
- lableRhythm->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- lableRhythm->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHRHY_TITLE_FONT_SIZE);\r
- group->Add(lableRhythm);\r
-\r
- if (pickerRhythm == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathRhyPage::OnStart new pickerRhythm ERROR");\r
- pickerRhythm = new UIPicker();\r
- }\r
- pickerRhythm->SetPosition(WND_BTHRHY_PICKER_X, WND_BTHRHY_PICKER_Y);\r
- pickerRhythm->Resize(WND_BTHRHY_PICKER_W, WND_BTHRHY_PICKER_H);\r
- pickerRhythm->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHRHY_PICKER_B_FONT_SIZE);\r
- pickerRhythm->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHRHY_PICKER_H_FONT_SIZE);\r
- pickerRhythm->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- pickerRhythm->SetItemHeight(WND_BTHRHY_PICKER_ITEM_H);\r
- pickerRhythm->SetTextColor(Color::GetColorFromRGBA(0xfa, 0xf3, 0xf3, 0xff),\r
- Color::GetColorFromRGBA(0xfa, 0xf3, 0xf3, 0xff));\r
- uint8_t selectTempo = BreathModel::GetInstance().GetSelectTempo();\r
- pickerRhythm->SetSelected(selectTempo);\r
- pickerRhythm->RegisterSelectedListener(this);\r
- pickerRhythm->SetVisible(true);\r
- pickerRhythm->SetOnDragListener(this);\r
- pickerRhythm->SetLoopState(false);\r
- group->Add(pickerRhythm);\r
-\r
- if (center == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathRhyPage::OnStart new Center ERROR");\r
- center = new UIImageView();\r
- }\r
- center->SetPosition(WND_BTHRHY_PICKER_X, WND_BTHRHY_PICKER_Y);\r
- center->Resize(WND_BTHRHY_PICKER_W, WND_BTHRHY_PICKER_H);\r
- LOADIMG::LoadImageViewImg(center, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH013);\r
- group->Add(center);\r
-\r
- if (buttonOk == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathRhyPage::OnStart new buttonOk ERROR");\r
- buttonOk = new UIButton();\r
- }\r
- buttonOk->SetPosition(WND_BTHRHY_OK_X, WND_BTHRHY_OK_Y);\r
- buttonOk->Resize(WND_BTHRHY_OK_W, WND_BTHRHY_OK_H);\r
- buttonOk->SetViewId(WND_BTHRHY_BTN_OK_ID);\r
- buttonOk->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- LOADIMG::LoadBtnImage(buttonOk, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH005, IMAGE_CONVERTER_TOOL_BREATH005);\r
- buttonOk->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);\r
- buttonOk->SetOnClickListener(this);\r
- group->Add(buttonOk);\r
-\r
- AddViewToPageContainer(group);\r
-}\r
-void BreathRhyPage::OnResume()\r
-{\r
- pickerRhythm->SetValues(BreathModel::GetInstance().GetRhyListData(), BreathModel::GetInstance().GetRhyListSize());\r
- GetSlicePageContainer()->SetIntercept(true);\r
- GetSlicePageContainer()->SetOnDragListener(nullptr);\r
-}\r
-\r
-void BreathRhyPage::OnPause() {}\r
-\r
-void BreathRhyPage::OnStop() {}\r
-\r
-bool BreathRhyPage::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- if (strcmp(view.GetViewId(), WND_BTHRHY_BTN_OK_ID) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathRhyPage OnClick...ChangeTo DUR");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_MAIN_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- BreathModel::GetInstance().SetTimeRhyation(pickerRhythm->GetSelected());\r
- } else {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathRhyPage OnClick...ChangeTo unknow");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-bool BreathRhyPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathRhyPage::OnDrag");\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathRhyPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_MAIN_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- }\r
- return true;\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathStartPage\r
- * Create: 2025-5-13\r
- */\r
-#include <string>\r
-#include <sstream>\r
-#include <sys/time.h>\r
-#include "gfx_utils/graphic_math.h"\r
-#include "components/root_view.h"\r
-#include "UiConfig.h"\r
-#include "ohos_timer.h"\r
-#include "AppViewIDs.h"\r
-#include "wearable_log.h"\r
-#include "NativeAbility.h"\r
-#include "TransitionType.h"\r
-#include "SlicePageFactory.h"\r
-#include "PageTransitionMgr.h"\r
-#include "ui_resource_breath.h"\r
-#include "main/LoadImg.h"\r
-#include "breath/BreathView.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathStartPage.h"\r
-\r
-namespace OHOS {\r
-REGIST_SLICE_PAGE(VIEW_MAIN_BREATHEASE, BrearhView::BREATH_START_VIEW, BreathStartPage, false);\r
-\r
-#define WND_BTHSTART_TITLE_X 97\r
-#define WND_BTHSTART_TITLE_Y 40\r
-#define WND_BTHSTART_TITLE_W 260\r
-#define WND_BTHSTART_TITLE_H 53\r
-#define WND_BTHSTART_TITLE_FONT_SIZE 36\r
-#define WND_BTHSTART_CENTERIMG_X 88\r
-#define WND_BTHSTART_CENTERIMG_Y 88\r
-#define WND_BTHSTART_CENTERIMG_W 279\r
-#define WND_BTHSTART_CENTERIMG_H 280\r
-#define WND_BTHSTART_GUIDE_X 126\r
-#define WND_BTHSTART_GUIDE_Y 354\r
-#define WND_BTHSTART_GUIDE_W 202\r
-#define WND_BTHSTART_GUIDE_H 68\r
-#define WND_BTHSTART_GUIDE_FONT_SIZE 24\r
-#define BREATH_GROUP_SIZE 466\r
-#define TEXT_OPACITY 147\r
-#define countDown 5\r
-#define SIZE 64\r
-\r
-BreathStartPage::BreathStartPage() {}\r
-\r
-BreathStartPage::~BreathStartPage()\r
-{\r
- group->RemoveAll();\r
- if (titleLable != nullptr) {\r
- delete titleLable;\r
- titleLable = nullptr;\r
- }\r
- if (guideLable != nullptr) {\r
- delete guideLable;\r
- guideLable = nullptr;\r
- }\r
- if (centerImge != nullptr) {\r
- delete centerImge;\r
- centerImge = nullptr;\r
- }\r
- if (group != nullptr) {\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (background != nullptr) {\r
- delete background;\r
- background = nullptr;\r
- }\r
- if (animation != nullptr) {\r
- delete animation;\r
- animation = nullptr;\r
- }\r
- if (animatorCallBack != nullptr) {\r
- delete animatorCallBack;\r
- animatorCallBack = nullptr;\r
- }\r
-}\r
-\r
-void BreathStartPage::OnStart(void *data)\r
-{\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnStart new group ERROR");\r
- group = new UIViewGroup();\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- group->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- group->SetTouchable(true);\r
- group->SetDraggable(true);\r
- group->SetOnDragListener(this);\r
-\r
- if (background == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnStart new background ERROR");\r
- background = new UIImageView();\r
- }\r
- background->SetPosition(0, 0);\r
- background->Resize(BREATH_GROUP_SIZE, BREATH_GROUP_SIZE);\r
- LOADIMG::LoadImageViewImg(background, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH001);\r
- group->Add(background);\r
-\r
- if (titleLable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnStart new titleLable ERROR");\r
- titleLable = new UILabel();\r
- }\r
- titleLable->SetPosition(WND_BTHSTART_TITLE_X, WND_BTHSTART_TITLE_Y);\r
- titleLable->Resize(WND_BTHSTART_TITLE_W, WND_BTHSTART_TITLE_H);\r
- titleLable->SetText("请保持静止");\r
- titleLable->SetTextColor(Color::White());\r
- titleLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHSTART_TITLE_FONT_SIZE);\r
- group->Add(titleLable);\r
-\r
- if (centerImge == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnStart new centerImg ERROR");\r
- centerImge = new UIImageView();\r
- }\r
- centerImge->SetPosition(WND_BTHSTART_CENTERIMG_X, WND_BTHSTART_CENTERIMG_Y);\r
- centerImge->Resize(WND_BTHSTART_CENTERIMG_W, WND_BTHSTART_CENTERIMG_H);\r
- LOADIMG::LoadImageViewImg(centerImge, BREATH_IMAGE, IMAGE_CONVERTER_TOOL_BREATH003);\r
- group->Add(centerImge);\r
-\r
- if (guideLable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnStart new guideLable ERROR");\r
- guideLable = new UILabel();\r
- }\r
- guideLable->SetPosition(WND_BTHSTART_GUIDE_X, WND_BTHSTART_GUIDE_Y);\r
- guideLable->Resize(WND_BTHSTART_GUIDE_W, WND_BTHSTART_GUIDE_H);\r
- guideLable->SetTextColor(Color::White());\r
- guideLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- guideLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WND_BTHSTART_GUIDE_FONT_SIZE);\r
- guideLable->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- guideLable->SetStyle(STYLE_TEXT_OPA, TEXT_OPACITY);\r
- group->Add(guideLable);\r
-\r
- animatorCallBack = new BreathStartCallback(this);\r
- if (animatorCallBack == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnStart new animatorCallBack ERROR");\r
- return;\r
- }\r
- animation = new Animator(animatorCallBack, nullptr, 0, true);\r
- if (animation == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnStart new animation ERROR");\r
- return;\r
- }\r
- animation->Start();\r
- AddViewToPageContainer(group);\r
-}\r
-\r
-void BreathStartPage::OnStop() {}\r
-\r
-void BreathStartPage::BreathStartCallback::Callback(UIView *view)\r
-{\r
- UNUSED(view);\r
- struct timeval current_time;\r
- gettimeofday(¤t_time, nullptr);\r
- int32_t overTime = countDown;\r
- int32_t start_time = BreathModel::GetInstance().GetSaveTime();\r
- int32_t remTime = overTime - (current_time.tv_sec - start_time);\r
-\r
- char szText[SIZE] = "";\r
- sprintf_s(szText, sizeof(szText), "%d秒后跟随训练指引开始吸气和呼气", remTime);\r
- BreathStartPage->guideLable->SetText(szText);\r
- if (remTime <= 0) {\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_EXER_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- BreathStartPage->animation->Stop();\r
- struct timeval start_breathing_time;\r
- gettimeofday(&start_breathing_time, nullptr);\r
- uint32_t breathing_time = start_breathing_time.tv_sec;\r
- BreathModel::GetInstance().SetBeginsTime(breathing_time);\r
- }\r
-}\r
-\r
-void BreathStartPage::OnPause()\r
-{\r
- animation->Stop();\r
-}\r
-\r
-bool BreathStartPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnDrag");\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BreathStartPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- NativeAbility::GetInstance().SwitchPageInSlice(BREATH_MAIN_VIEW, nullptr, TransitionType::TRANSITION_INVALID,\r
- true);\r
- }\r
- return true;\r
-}\r
-\r
-void BreathStartPage::OnTimer() {}\r
-\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerItemView.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-\r
-#include "callerlog/CallerItemView.h"\r
-#include "sys/time.h"\r
-#include "wearable_log.h"\r
-#ifdef BUILD_IN_LINUX\r
-#include "localtime.h"\r
-#endif\r
-\r
-namespace OHOS {\r
-static constexpr int16 ICON_X = 100;\r
-static constexpr int16 APP_ITEM_BUTTON_WIDTH = 70;\r
-static constexpr int16 APP_ITEM_BUTTON_HEIGHT = 150;\r
-static constexpr int16 APP_ITEM_LABEL_WIDTH = 200;\r
-static constexpr int16 APP_ITEM_LABEL_HEIGHT = 100;\r
-\r
-static constexpr int16 NUM_20 = 20;\r
-static constexpr int16 APP_ITEM_FONT_SIZE = 30;\r
-static constexpr int16 HEAD_END_FONT_SIZE = 40;\r
-\r
-static constexpr int16 LABELS_X = 260;\r
-static constexpr int16 LABELS_Y = 80;\r
-static constexpr int16 LABELS_W = 80;\r
-static constexpr int16 LABELS_H = 70;\r
-\r
-static constexpr int16 ICONS_X = 210;\r
-static constexpr int16 ICONS_Y = 70;\r
-static constexpr int16 NUM_10 = 10;\r
-CallerItemView::CallerItemView(int32 yCoordinates)\r
-{\r
- SetPosition(0, yCoordinates, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
- SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- SetTouchable(true);\r
-}\r
-\r
-CallerItemView::~CallerItemView()\r
-{\r
- Remove(&icon_);\r
- Remove(&label_);\r
- Remove(&icons_);\r
- Remove(&labels_);\r
-}\r
-\r
-void CallerItemView::SetUpChild()\r
-{\r
- icon_.SetPosition(NUM_20, NUM_20);\r
- icon_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- icons_.SetPosition(ICONS_X, ICONS_Y);\r
- icons_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- label_.SetPosition(ICON_X + APP_ITEM_BUTTON_WIDTH, 0);\r
- label_.Resize(APP_ITEM_LABEL_WIDTH, APP_ITEM_BUTTON_WIDTH);\r
- label_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, APP_ITEM_FONT_SIZE);\r
- label_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- label_.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- label_.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
- label_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- label_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- labels_.SetPosition(LABELS_X, LABELS_Y);\r
- labels_.Resize(LABELS_W, LABELS_H);\r
- labels_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, APP_ITEM_FONT_SIZE);\r
- labels_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- labels_.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- labels_.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
- labels_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- labels_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-}\r
-\r
-void CallerItemView::InitDateMonTime(time_t seconds)\r
-{\r
- struct tm pTM;\r
- localtime_r(&seconds, &pTM);\r
- timeDisplay.erase();\r
- if (pTM.tm_mday < NUM_10) {\r
- std::string day = "0" + std::to_string(pTM.tm_mday);\r
- timeDisplay = std::to_string(pTM.tm_mon) + "/" + day;\r
- return;\r
- }\r
- timeDisplay = std::to_string(pTM.tm_mon) + "/" + std::to_string(pTM.tm_mday);\r
- return;\r
-}\r
-\r
-void CallerItemView::SetItemInfo(CallLogInfo *itemInfo, char len)\r
-{\r
- SetUpChild();\r
- icon_.SetSrc(PNG_CALLER_TMAGE_PATH);\r
- infoTel.clear();\r
- infoTel.append(reinterpret_cast<const char*>(itemInfo->tel), len);\r
- label_.SetText(infoTel.c_str());\r
- InitDateMonTime(itemInfo->creationTime);\r
- labels_.SetText(timeDisplay.c_str());\r
-\r
- if (itemInfo->status == CALL_MISSED) {\r
- icons_.SetSrc(PNG_HANDUP_IMAGE_PATH);\r
- } else if (itemInfo->status == CALL_INCOMING) {\r
- icons_.SetSrc(PNG_ANSWER_TMAGE_PATH);\r
- } else if (itemInfo->status == CALL_OUTGOING) {\r
- icons_.SetSrc(PNG_CALLING_TMAGE_PATH);\r
- }\r
- Add(&icon_);\r
- Add(&label_);\r
- Add(&icons_);\r
- Add(&labels_);\r
- return;\r
-}\r
-}\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerLogModel.cpp
- * Author:
- * Create: 2021-10-12
- */
-#include "callerlog/CallerLogModel.h"
-#include "callerlog/CallerLogView.h"
-#include "makephone/DialingScreenView.h"
-#include "makephone/CallingView.h"
-#include "ohos_timer.h"
-#include "graphic_timer.h"
-#include "samgr_lite.h"
-#include "makephone/MainCallingPresenter.h"
-#include "player/PlayersModel.h"
-#include "graphic_service.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-using namespace OHOS;
-
-static int g_callTimes{0};
-static constexpr int NO_NUMBER_STATUS = -1;
-// 电话是否为多路状态,或电话结束前是否有过多路状态
-static int g_phoneStatus = PHONE_SINGLE_STATUS;
-static int g_isCall{NO_NUMBER_STATUS}; // 电话状态
-static PhoneCallInfo callInfo{};
-static int g_retNum{0}; // 电话个数
-static int g_volumeLocal{0}; // 错误码返回
-GraphicTimer* g_startCounting = nullptr; // 定时器
-static constexpr uint64_t MS_ONE_SECONDS = 1000;
-static PhoneCallInfo callList[MULTI_CALL_MAX_NUME]{};
-// 电话优先级标志位
-static int g_firstPriority = NO_NUMBER_STATUS;
-static int g_secondPriority = NO_NUMBER_STATUS;
-static int g_thirdPriority = NO_NUMBER_STATUS;
-static int g_fourthPriority = NO_NUMBER_STATUS;
-// 是否为手表接听状态
-static bool g_isWatchCallView = false;
-
-static void SetPriorityNumber()
-{
- time_t seconds;
- time(&seconds);
-
- // 接听和挂起状态需要持续显示通话计时
- if (g_firstPriority != NO_NUMBER_STATUS) { // 接听
- CallerLogModel::GetInstance()->SetoperateNumber(callList[g_firstPriority].unitCalls.number,
- callList[g_firstPriority].unitCalls.number_len);
- g_callTimes = seconds - callList[g_firstPriority].activeTime;
- } else if (g_secondPriority != NO_NUMBER_STATUS) { // 挂起
- CallerLogModel::GetInstance()->SetoperateNumber(callList[g_secondPriority].unitCalls.number,
- callList[g_secondPriority].unitCalls.number_len);
- g_callTimes = seconds - callList[g_secondPriority].activeTime;
- } else if (g_thirdPriority != NO_NUMBER_STATUS) {
- CallerLogModel::GetInstance()->SetoperateNumber(callList[g_thirdPriority].unitCalls.number,
- callList[g_thirdPriority].unitCalls.number_len);
- } else if (g_fourthPriority != NO_NUMBER_STATUS) {
- CallerLogModel::GetInstance()->SetoperateNumber(callList[g_fourthPriority].unitCalls.number,
- callList[g_fourthPriority].unitCalls.number_len);
- }
- return;
-}
-
-/* 关闭定时器 */
-static void DisableCallingTimer()
-{
- if (g_startCounting != nullptr) {
- delete g_startCounting;
- g_startCounting = nullptr;
- g_callTimes = 0;
- }
-}
-
-/* 状态复位 */
-static void StatusReset()
-{
- CallerLogModel::GetInstance()->SetCallStatus(false);
- CallerLogModel::GetInstance()->SetWaitingStatus(false);
- DisableCallingTimer();
- // If the call is handling in the notification, the slice is not switched
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- } else {
- g_isWatchCallView = false;
- }
- return;
-}
-
-/* 定时器回调函数 */
-static void CallTimerCallbackProc(void* data)
-{
- g_callTimes++;
-
- if (CallingView::GetInstance() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance is nullptr");
- return;
- }
-
- if (CallingView::GetInstance()->GetCallingDurationLabel() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance()->GetCallingDurationLabel is nullptr");
- return;
- }
-
- CallingView::GetInstance()->GetCallingDurationLabel()->
- SetText(CallerLogModel::GetInstance()->DisplayCallDuration().c_str());
-}
-
-static void CallTimerCallback(void* data)
-{
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(CallTimerCallbackProc, data));
-}
-
-/* 开启定时器 */
-static void InitCallingTimer()
-{
- if (g_startCounting != nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer already exists!!");
- return;
- }
- uint32 tick = GetOSTick(MS_ONE_SECONDS);
- g_startCounting = new GraphicTimer(tick, CallTimerCallback, nullptr, true);
- if (g_startCounting == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer new GraphicTimer failed!!");
- return;
- }
- bool retTimer = g_startCounting->Start();
- if (!retTimer) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer Start failed, ret = %lx!!", retTimer);
- if (g_startCounting != nullptr) {
- delete g_startCounting;
- g_startCounting = nullptr;
- }
- return;
- }
-}
-
-/* 判断是否有电话,判断优先级 */
-bool FindCallListInfoAndSetPriorityNumber()
-{
- g_isCall = NO_NUMBER_STATUS;
- g_firstPriority = NO_NUMBER_STATUS;
- g_secondPriority = NO_NUMBER_STATUS;
- g_thirdPriority = NO_NUMBER_STATUS;
- g_fourthPriority = NO_NUMBER_STATUS;
- (void)memset_s(callList, MULTI_CALL_MAX_NUME * sizeof(PhoneCallInfo),
- 0, MULTI_CALL_MAX_NUME * sizeof(PhoneCallInfo));
- int ret = GetCallInfoInCallList(callList, MULTI_CALL_MAX_NUME, &g_retNum);
- if (ret != 0) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FindCallListInfoAndSetPriorityNumber Error ret = %d", ret);
- return false;
- }
- if (g_retNum == 0) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FindCallListInfoAndSetPriorityNumber no call num");
- return false;
- }
-
- if (g_retNum > 0 && g_retNum <= MULTI_CALL_MAX_NUME) {
- for (int i = 0; i < g_retNum; i++) {
- if (callList[i].lastStatus == HFP_HF_CALL_STATE_ACTIVE) {
- g_firstPriority = i;
- g_isCall = callList[i].lastStatus;
- break;
- } else if (callList[i].lastStatus == HFP_HF_CALL_STATE_HELD) {
- g_secondPriority = i;
- g_isCall = callList[i].lastStatus;
- } else if (callList[i].lastStatus == HFP_HF_CALL_STATE_ALERTING ||
- callList[i].lastStatus == HFP_HF_CALL_STATE_DIALING) {
- if (g_secondPriority == NO_NUMBER_STATUS) {
- g_isCall = callList[i].lastStatus;
- }
- g_thirdPriority = i;
- } else if (callList[i].lastStatus == HFP_HF_CALL_STATE_INCOMING ||
- callList[i].lastStatus == HFP_HF_CALL_STATE_WAITING) {
- // 呼入切换通话界面,呼入等待不切换界面,通过震动和铃声提醒
- if (g_isCall == NO_NUMBER_STATUS && callList[i].lastStatus == HFP_HF_CALL_STATE_INCOMING) {
- g_isCall = callList[i].lastStatus;
- }
- g_fourthPriority = i;
- }
- }
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FindCallListInfoAndSetPriorityNumber] [%d] [%d] [%d] [%d], g_isCall = %d",
- g_firstPriority, g_secondPriority, g_thirdPriority, g_fourthPriority, g_isCall);
- SetPriorityNumber();
-
- return true;
-}
-
-static void CallModelResumePlayer(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallModelResumePlayer] [ResumePlayer] start");
- usleep(5000); // 延时等待通话释放媒体资源
-}
-
-static void CallModelPostGraphicEvent(void (*fun)(void))
-{
- GraphicService::GetInstance()->PostGraphicEvent(*fun);
-}
-
-static int g_callOperate = OPERATE_NO_OPE;
-
-static void ExitMakePhoneSlice(void)
-{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE) {
- WEARABLE_LOGD(HILOG_MODULE_AAFWK, "ExitMakePhoneSlice");
-
- if (GetCurrCallNum() == 0) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- CallModelPostGraphicEvent(CallModelResumePlayer);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
- }
- }
- CallerLogModel::GetInstance()->SetCallStatus(false);
- DisableCallingTimer();
- if (CallerLogModel::GetInstance()->GetNotifyFlag()) {
- g_isWatchCallView = false;
- }
-}
-
-static void DialingHandle(void)
-{
- CallerLogModel::GetInstance()->SetDialingStatus("正在拨号");
- CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
-}
-
-static void AlertingHandle(void)
-{
- CallerLogModel::GetInstance()->SetDialingStatus("正在响铃");
- CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
-}
-
-static void IncomingHandle(void)
-{
- CallerLogModel::GetInstance()->SetMakePhoneStatus(false);
-}
-
-// 来电等待界面
-static void WaitingOpreate()
-{
- if (!IsCompleteCallFlow()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPhoneChangeStatusCallback] is not complete call flow");
- return;
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[WaitingOpreate] WaitingOpreate");
- CallerLogModel::GetInstance()->SetCallStatus(false);
- CallerLogModel::GetInstance()->SetWaitingStatus(true);
- // If the call is handling in the notification, the slice is not switched
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
- PRIORITY_ONE);
- } else {
- g_isWatchCallView = true;
- }
-}
-
-static void WatchActiveHandle(const PhoneCallInfo *phoneCall)
-{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
- NativeAbility::GetInstance().GetCurSliceId() == VIEW_OFFLINEVOICE ||
- CallerLogModel::GetInstance()->GetNotifyFlag()) {
- time_t seconds;
- time(&seconds);
- g_callTimes = seconds - phoneCall->activeTime;
-
- InitCallingTimer();
- CallerLogModel::GetInstance()->SetCallStatus(true);
- }
- if (CallerLogModel::GetInstance()->GetNotifyFlag()) {
- g_isWatchCallView = true;
- }
-}
-
-static void PhoneActiveHandle(void)
-{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
- g_isWatchCallView) {
- if (GetCurrCallNum() > 1) {
- g_phoneStatus = PHONE_MULTI_STATUS;
- if (GetScoConnectState() == HFP_SCO_STATE_DISCONNECTED) {
- DisableCallingTimer();
- }
- }
- TransCallToMobilePhone();
- // If the call is handling in the notification, the slice is not switched
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE); // 退出通话界面,回到主表盘应用
- } else {
- g_isWatchCallView = false;
- }
- CallModelPostGraphicEvent(CallModelResumePlayer);
- }
- usleep(5000); // 延时等待SCO连接上报完成
- g_callOperate = OPERATE_WATCH_ACTIVE;
-}
-
-static void OppoActiveHandle(const PhoneCallInfo *phoneCall)
-{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
- g_isWatchCallView) {
- if (GetCurrCallNum() > 1) {
- g_phoneStatus = PHONE_MULTI_STATUS;
- return;
- }
- time_t seconds;
- time(&seconds);
- g_callTimes = seconds - phoneCall->activeTime;
-
- InitCallingTimer();
- CallerLogModel::GetInstance()->SetCallStatus(true);
- }
-}
-
-bool MulitplePhoneTextReplaces()
-{
- DisableCallingTimer();
- if (CallingView::GetInstance() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance is nullptr");
- return false;
- }
-
- if (CallingView::GetInstance()->GetCallingDurationLabel() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->GetCallingDurationLabel is nullptr");
- return false;
- }
-
- if (CallingView::GetInstance()->GetCallingDisplayLabel() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->GetCallingDurationLabel is nullptr");
- return false;
- }
-
- if (MainCallingPresenter::GetInstance() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->MainCallingPresenter is nullptr");
- return false;
- }
-
- if (!MainCallingPresenter::GetInstance()->CallingViewDisplay()) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->CallingViewDisplay is nullptr");
- return false;
- }
-
- CallingView::GetInstance()->GetCallingDisplayLabel()->SetText("正在通话");
- CallingView::GetInstance()->GetCallingDurationLabel()->SetText("");
- return true;
-}
-
-// 多路通话界面显示
-static bool MultiplePhonesViewDisplay()
-{
- if (g_phoneStatus == PHONE_MULTI_STATUS) {
- if (NativeAbility::GetInstance().GetCurSliceId() != VIEW_MAEKPHONE_SAMPLE) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay]GetCurSliceId no VIEW_MAEKPHONE_SAMPLE");
- DisableCallingTimer();
- CallerLogModel::GetInstance()->SetMulitplePhoneStatus(true);
- CallerLogModel::GetInstance()->SetCallStatus(true);
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
- PRIORITY_ONE);
- } else {
- g_isWatchCallView = true;
- }
- return true;
- }
- if (!MulitplePhoneTextReplaces()) {
- return false;
- }
- return true;
- }
- return false;
-}
-
-/* 非手表挂断 */
-static void NonWatchFinishHandle(int laststatus)
-{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
- CallerLogModel::GetInstance()->GetNotifyFlag()) {
- if (GetCurrCallNum() == 0) {
- StatusReset();
- CallModelPostGraphicEvent(CallModelResumePlayer);
- g_phoneStatus = PHONE_SINGLE_STATUS;
- } else if (g_phoneStatus == PHONE_MULTI_STATUS) {
- MultiplePhonesViewDisplay();
- } else if (FindCallListInfoAndSetPriorityNumber()) {
- if (laststatus == HFP_HF_CALL_STATE_ACTIVE || laststatus == HFP_HF_CALL_STATE_HELD) {
- CallerLogModel::GetInstance()->SetCallStatus(false);
- CallerLogModel::GetInstance()->SetWaitingStatus(false);
- } else if (laststatus == HFP_HF_CALL_STATE_WAITING) {
- CallerLogModel::GetInstance()->SetCallStatus(true);
- CallerLogModel::GetInstance()->SetWaitingStatus(false);
- }
- // If the call is handling in the notification, the slice is not switched
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
- PRIORITY_ONE);
- } else {
- g_isWatchCallView = true;
- }
- }
- if (GetCurrCallNum() == 0) {
- CallerLogModel::GetInstance()->SetNotifyFlag(false);
- }
- }
- if (GetCurrCallNum() == 0) {
- g_phoneStatus = PHONE_SINGLE_STATUS;
- }
-}
-
-static void WatchFinishHandle(void)
-{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
- CallerLogModel::GetInstance()->GetNotifyFlag()) {
- if (GetCurrCallNum() == 0) {
- StatusReset();
- CallerLogModel::GetInstance()->SetNotifyFlag(false);
- } else {
- StatusReset();
- for (int i = GetCurrCallNum(); i > 0; i--) {
- FinishCall();
- }
- }
- }
- g_phoneStatus = PHONE_SINGLE_STATUS;
-}
-
-static void ChangeStatusScreendisplay(int lastStatus)
-{
- if (GetScoConnectState() != HFP_SCO_STATE_CONNECTED) {
- if (lastStatus == HFP_HF_CALL_STATE_ACTIVE) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ACTIVE");
- StatusReset();
- return;
- } else if (lastStatus == HFP_HF_CALL_STATE_INCOMING) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_INCOMING");
- } else if (GetCurrCallNum() == 1 && (lastStatus == HFP_HF_CALL_STATE_DIALING ||
- lastStatus == HFP_HF_CALL_STATE_ALERTING)) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ALERTING");
- } else if (GetCurrCallNum() > 1) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] GetCurrCallNum MULITE");
- DisableCallingTimer();
- return;
- }
- }
- if (!IsCompleteCallFlow()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] is not complete call flow");
- return;
- }
- if (MultiplePhonesViewDisplay()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] MultiplePhonesViewDisplay");
- return;
- }
- // If the call is handling in the notification, the slice is not switched
- if (g_callOperate != OPERATE_PHONE_ACTIVE && (!CallerLogModel::GetInstance()->GetNotifyFlag())) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
- PRIORITY_ONE);
- }
-}
-
-void UsingPhoneChangeStatusCallback(const PhoneCallInfo *phoneCall)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPhoneChangeStatusCallback] operate:%d, callNUm:%d, call flow:%d",
- phoneCall->operate, GetCurrCallNum(), IsCompleteCallFlow());
-
- if (phoneCall->operate == OPERATE_WATCH_FINISH && GetCurrCallNum() == 0) {
- g_callOperate = OPERATE_WATCH_FINISH;
- WatchFinishHandle();
- return;
- }
- CallerLogModel::GetInstance()->SetoperateNumber(phoneCall->unitCalls.number, phoneCall->unitCalls.number_len);
- g_callOperate = phoneCall->operate;
-
- switch (g_callOperate) {
- case OPERATE_DIALING:
- // 显示正在呼出界面
- DialingHandle();
- break;
- case OPERATE_ALERTING:
- // 显示对方响铃
- AlertingHandle();
- break;
- case OPERATE_INCOMING:
- // 显示电话呼入
- IncomingHandle();
- break;
- case OPERATE_WAITING:
- // 震动一下,提示有新电话呼入 还未对齐
- WaitingOpreate();
- return;
- case OPERATE_WATCH_ACTIVE:
- // 手表接听,显示界面
- WatchActiveHandle(phoneCall);
- break;
- case OPERATE_PHONE_ACTIVE:
- // 手机接听
- PhoneActiveHandle();
- return;
- case OPERATE_PEER_ACTIVE:
- // 呼出被接听,显示界面
- OppoActiveHandle(phoneCall);
- break;
- case OPERATE_PHONE_HOLD:
- // 挂起状态,不做处理
- return;
- case OPERATE_WATCH_FINISH:
- WatchFinishHandle();
- return;
- case OPERATE_WATCH_REJECT:
- case OPERATE_NON_WATCH_FINISH:
- NonWatchFinishHandle(phoneCall->lastStatus);
- return;
- default:
- break;
- }
- ChangeStatusScreendisplay(phoneCall->lastStatus);
-}
-
-void UsingPhoneErrorCallback(PhoneServiceErrorType type)
-{
- if (type == ERROR_DIAL) {
- // 根据不同的错误码做出不同的操作
- } else if (type == ERROR_BT) {
- // 蓝牙断开,直接返回APPLIST
- WEARABLE_LOGD(HILOG_MODULE_AAFWK, "UsingPhoneErrorCallback BT");
- ExitMakePhoneSlice();
- }
-}
-
-static void ScoConnectHandle(void)
-{
- if (GetCurrCallNum() == 0) {
- return;
- }
-
- if (!FindCallListInfoAndSetPriorityNumber()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScoConnectHandle FindCallListInfoAndSetPriorityNumber false");
- return;
- }
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] g_isCall = %d", g_isCall);
- switch (g_isCall) {
- case HFP_HF_CALL_STATE_ACTIVE:
- if (g_callOperate == OPERATE_PHONE_ACTIVE) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] OPERATE_PHONE_ACTIVE");
- return;
- }
- CallerLogModel::GetInstance()->SetCallStatus(true);
- InitCallingTimer();
- break;
- case HFP_HF_CALL_STATE_ALERTING:
- CallerLogModel::GetInstance()->SetDialingStatus("正在响铃");
- CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
- break;
- case HFP_HF_CALL_STATE_DIALING:
- CallerLogModel::GetInstance()->SetDialingStatus("正在拨号");
- CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
- break;
- case HFP_HF_CALL_STATE_INCOMING:
- CallerLogModel::GetInstance()->SetMakePhoneStatus(false);
- break;
- case HFP_HF_CALL_STATE_HELD:
- CallerLogModel::GetInstance()->SetCallStatus(true);
- InitCallingTimer();
- break;
- default:
- break;
- }
- g_isCall = NO_NUMBER_STATUS;
- if (!IsCompleteCallFlow()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] is not complete call flow");
- return;
- }
- if (MultiplePhonesViewDisplay()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] MultiplePhonesViewDisplay");
- return;
- }
- // If the call is handling in the notification, the slice is not switched
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
- PRIORITY_ONE);
- } else {
- g_isWatchCallView = true;
- }
-}
-
-static void ScoDisconnectHandle(void)
-{
- ExitMakePhoneSlice();
- CallerLogModel::GetInstance()->SetWaitingStatus(false);
-}
-
-void UsingPhoneScoStatausCallback(hfp_sco_connect_state_t state)
-{
- WEARABLE_LOGD(HILOG_MODULE_AAFWK, "UsingPhoneScoStatausCallback SOC state: %d", state);
-
- if (!IsCompleteCallFlow()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPhoneScoStatausCallback] is not complete call flow");
- return;
- }
-
- if (state == HFP_SCO_STATE_CONNECTED) {
- ScoConnectHandle();
- } else if (state == HFP_SCO_STATE_DISCONNECTED) {
- ScoDisconnectHandle();
- }
-}
-
-/* 状态变化 */
-void PhoneChangeStatusCallback(const PhoneCallInfo *phoneCall)
-{
- (void)memset_s(&callInfo, sizeof(PhoneCallInfo), 0, sizeof(PhoneCallInfo));
- (void)memcpy_s(&callInfo, sizeof(PhoneCallInfo), phoneCall, sizeof(PhoneCallInfo));
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(UsingPhoneChangeStatusCallback, &callInfo));
-}
-
-/* 蓝牙 */
-void PhoneErrorCallback(PhoneServiceErrorType type, int volume)
-{
- g_volumeLocal = volume;
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(UsingPhoneErrorCallback, type));
-}
-
-/* SCO */
-void PhoneScoStatausCallback(hfp_sco_connect_state_t state)
-{
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(UsingPhoneScoStatausCallback, state));
-}
-
-namespace OHOS {
-static constexpr int32 NUM_TEN = 10;
-static constexpr int16 NUM_TIME_MIN = 60;
-static constexpr int16 NUM_TIME_HOUR = 3600;
-static constexpr int32 NUM_TIME_DAY = 86400;
-
-CallerLogModel::CallerLogModel() {}
-
-CallerLogModel::~CallerLogModel() {}
-
-/* 初始化电话服务 */
-void CallerLogModel::InitPhoneService()
-{
- WEARABLE_LOGD(HILOG_MODULE_AAFWK, "CallerLogModel::[InitPhoneService]::Init start");
- PhoneServiceInit();
- PhoneServiceCb serviceFoution;
-
- serviceFoution.callChanged = PhoneChangeStatusCallback;
- serviceFoution.phoneServiceErrorCb = PhoneErrorCallback;
- serviceFoution.scoStatusCb = PhoneScoStatausCallback;
- int ret = RegisterCallChangedCb(&serviceFoution);
- WEARABLE_LOGD(HILOG_MODULE_AAFWK, "CallerLogModel::[InitPhoneService]::Init ret = %d", ret);
-}
-
-/* 表盘底部时间显示 */
-std::string CallerLogModel::InitDateHourTime(void)
-{
- struct tm pTM;
- time_t seconds;
- time(&seconds);
- localtime_r(&seconds, &pTM);
- timers.erase();
- if (pTM.tm_min < NUM_TEN) {
- std::string min = "0" + std::to_string(pTM.tm_min);
- timers = std::to_string(pTM.tm_hour) + ":" + min;
- return timers;
- }
- timers = std::to_string(pTM.tm_hour) + ":" + std::to_string(pTM.tm_min);
- return timers;
-}
-
-/* 表盘通话时间显示 */
-std::string& CallerLogModel::DisplayCallDuration()
-{
- callDuration.erase();
- std::string hours;
- std::string minute;
- std::string seconds;
- if (g_callTimes >= NUM_TIME_DAY) {
- g_callTimes = 0;
- }
- int hour = g_callTimes / NUM_TIME_HOUR;
- int min = (g_callTimes % NUM_TIME_HOUR) / NUM_TIME_MIN;
- int sec = (g_callTimes % NUM_TIME_HOUR) % NUM_TIME_MIN;
- if (hour >= 0 && hour < NUM_TEN) {
- hours = "0" + std::to_string(hour);
- } else {
- hours = std::to_string(hour);
- }
- if (min >= 0 && min < NUM_TEN) {
- minute = "0" + std::to_string(min);
- } else {
- minute = std::to_string(min);
- }
- if (sec >= 0 && sec < NUM_TEN) {
- seconds = "0" + std::to_string(sec);
- } else {
- seconds = std::to_string(sec);
- }
-
- if (hour == 0) {
- callDuration = minute + ":" + seconds;
- } else {
- callDuration = hours + ":" + minute + ":" + seconds;
- }
- return callDuration;
-}
-
-/* 拨号与响铃状态显示 */
-void CallerLogModel::SetDialingStatus(const char *text)
-{
- dialingStatus.clear();
- dialingStatus.append(reinterpret_cast<const char*>(text));
-}
-
-std::string CallerLogModel::GetDialingStatus(void)
-{
- return dialingStatus;
-}
-
-void CallerLogModel::SetNotifyFlag(bool flag)
-{
- notifyFlag = flag;
-}
-
-bool CallerLogModel::GetNotifyFlag(void)
-{
- return notifyFlag;
-}
-
-// 电话是否为多路状态
-bool CallerLogModel::IsMulitplePhoneStatus(void)
-{
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "IsMulitplePhoneStatus phoneStatus:%d", g_phoneStatus);
- return g_phoneStatus == PHONE_MULTI_STATUS;
-}
-
-/* 是否为多路通话界面 */
-void CallerLogModel::SetMulitplePhoneStatus(bool status)
-{
- mulitplePhoneStatus = status;
-}
-
-bool CallerLogModel::GetMulitplePhoneStatus()
-{
- return mulitplePhoneStatus;
-}
-
-/* 是否为等待提示界面 */
-bool CallerLogModel::GetWaitingStatus()
-{
- return waitingStatus;
-}
-void CallerLogModel::SetWaitingStatus(bool status)
-{
- waitingStatus = status;
-}
-
-/* 是否为接听界面 */
-void CallerLogModel::SetCallStatus(bool status)
-{
- callStatus = status;
-}
-
-bool CallerLogModel::GetCallStatus()
-{
- return callStatus;
-}
-
-/* 是否为音量界面 */
-void CallerLogModel::SetVolumeScreenStatus(bool status)
-{
- volumeStatus = status;
-}
-
-bool CallerLogModel::GetVolumeScreenStatus()
-{
- return volumeStatus;
-}
-
-/* 设置来电号码显示 */
-void CallerLogModel::SetoperateNumber(const char *number, char number_len)
-{
- phoneNumber.clear();
- phoneNumber.append(reinterpret_cast<const char*>(number), number_len);
-}
-
-std::string CallerLogModel::GetPhoneNumber(void)
-{
- return phoneNumber;
-}
-
-/* 呼入呼出状态 */
-void CallerLogModel::SetMakePhoneStatus(bool status)
-{
- phoneStatus = status;
-}
-
-bool CallerLogModel::GetPhoneStatus()
-{
- return phoneStatus;
-}
-
-int CallerLogModel::CurrCallNum(void)
-{
- return GetCurrCallNum();
-}
-
-CallerLogModel *CallerLogModel::GetInstance(void)
-{
- static CallerLogModel callLogModel;
- return &callLogModel;
-}
-}
-#ifdef __cplusplus
-}
-#endif
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerLogPresenter.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-\r
-#include "callerlog/CallerLogPresenter.h"\r
-#include "callerlog/CallerLogView.h"\r
-#include "common/task_manager.h"\r
-#include "wearable_log.h"\r
-#include "phoneservice/PhoneService.h"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_MENU(VIEW_CALLER_SAMPLE, CallerLogView, CallerLogPresenter, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "通话记录");\r
-\r
-static constexpr uint64_t MS_FOUR_SECONDS = 4000; // 定时器时间\r
-static CallerLogPresenter *g_pMainView = nullptr;\r
-CallerLogPresenter::CallerLogPresenter()\r
-{\r
- g_pMainView = this;\r
-}\r
-\r
-CallerLogPresenter::~CallerLogPresenter()\r
-{\r
- g_pMainView = nullptr;\r
-}\r
-\r
-CallerLogPresenter *CallerLogPresenter::GetInstance(void)\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-void CallerLogPresenter::OnStop(void)\r
-{\r
- if (hintsCounting != nullptr) {\r
- if (g_pMainView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::CallerLogPresenter g_pMainView nullptr");\r
- return;\r
- }\r
- g_pMainView->DisableBluetoothHints();\r
- return;\r
- }\r
-}\r
-\r
-/* 定时器回调函数 */\r
-void BuletoothHintsCallback(void* data)\r
-{\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&CallerLogPresenter::BuletoothHintsCallbackProc, CallerLogPresenter::GetInstance(), data));\r
-}\r
-\r
-/* 开启定时器 */\r
-void CallerLogPresenter::InitBluetoothHints()\r
-{\r
- if (hintsCounting != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints already exists!");\r
- return;\r
- }\r
- hintsCounting = new GraphicTimer(MS_FOUR_SECONDS, BuletoothHintsCallback, nullptr, true);\r
- if (hintsCounting == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints osTimerNew failed!");\r
- return;\r
- }\r
- bool retTimer = hintsCounting->Start();\r
- if (!retTimer) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints osTimerStart failed!!");\r
- if (hintsCounting != nullptr) {\r
- delete hintsCounting;\r
- hintsCounting = nullptr;\r
- }\r
- return;\r
- }\r
-}\r
-void CallerLogPresenter::BuletoothHintsCallbackProc(void* data)\r
-{\r
- if (CallerLogView::GetInstance() == nullptr) {\r
- return;\r
- }\r
- CallerLogView::GetInstance()->GetHintsGroup()->SetVisible(false);\r
- CallerLogView::GetInstance()->GetContainerView()->SetVisible(true);\r
- CallerLogView::GetInstance()->GetGroupView()->SetVisible(true);\r
- if (g_pMainView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::CallerLogPresenter g_pMainView nullptr");\r
- return;\r
- }\r
- g_pMainView->DisableBluetoothHints();\r
-}\r
-\r
-/* 关闭定时器 */\r
-void CallerLogPresenter::DisableBluetoothHints()\r
-{\r
- if (hintsCounting != nullptr) {\r
- delete hintsCounting;\r
- hintsCounting = nullptr;\r
- }\r
-}\r
-\r
-bool CallerLogPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- UNUSED(event);\r
- if (CallerLogView::GetInstance() == nullptr) {\r
- return false;\r
- }\r
-\r
- if (CallerLogModel::GetInstance() == nullptr) {\r
- return false;\r
- }\r
-\r
- uint16 dataNumber = view_->GetCurrentNumber();\r
- if (view.GetViewIndex() == dataNumber) {\r
- if (ClearCallLogFile() == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::ClearCallLogFile success");\r
- }\r
- view_->GetContainerView()->SetVisible(false);\r
- view_->GetGroupView()->SetVisible(true);\r
- } else if (view.GetViewIndex() >= 0 && view.GetViewIndex() < dataNumber) {\r
- // 手表拨出呼叫\r
- if (GetBtConnectStatus() != PROFILE_STATE_CONNECTED) {\r
- CallerLogView::GetInstance()->GetHintsGroup()->SetVisible(true);\r
- CallerLogView::GetInstance()->GetContainerView()->SetVisible(false);\r
- CallerLogView::GetInstance()->GetGroupView()->SetVisible(false);\r
-\r
- InitBluetoothHints();\r
- return false;\r
- }\r
- if (0 <= view.GetViewIndex() && view.GetViewIndex() < dataNumber) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "callnumber %s, callnumbernum %d",\r
- (char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,\r
- (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen);\r
- \r
- CallerLogModel::GetInstance()->SetoperateNumber(\r
- (char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,\r
- (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen);\r
-\r
- if (DialCall(\r
- (unsigned char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,\r
- (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::Onclick caller success");\r
- }\r
- }\r
- }\r
- return false;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerLogView.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-\r
-#include "callerlog/CallerLogView.h"\r
-#include "callerlog/CallerLogPresenter.h"\r
-#include "callerlog/CallerLogModel.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-static constexpr int16 ICON_X = 100;\r
-static constexpr int16 APP_ITEM_BUTTON_HEIGHT = 150;\r
-\r
-static constexpr int16 NUM_20 = 20;\r
-static constexpr int16 APP_ITEM_FONT_SIZE = 30;\r
-static constexpr int16 HEAD_END_FONT_SIZE = 40;\r
-\r
-static constexpr int16 ITEM_GROUP_HEIGHT = 150;\r
-\r
-static int32 num = 0;\r
-static CallerLogView *g_pMainView = nullptr;\r
-CallerLogView::CallerLogView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CallerLogView::CallerLogView ");\r
- g_pMainView = this;\r
-}\r
-\r
-CallerLogView::~CallerLogView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CallerLogView::~CallerLogView ");\r
- group->RemoveAll();\r
- container->RemoveAll();\r
- hintsGroup->RemoveAll();\r
-\r
- delete hintsImageView;\r
- hintsImageView = nullptr;\r
-\r
- delete imageView;\r
- imageView = nullptr;\r
-\r
- if (!item.IsEmpty()) {\r
- Vector<CallerItemView *>().Swap(item);\r
- }\r
-\r
- delete dragListener;\r
- dragListener = nullptr;\r
-\r
- if (num != 0) {\r
- delete[] info;\r
- info = nullptr;\r
-\r
- groupFirst->RemoveAll();\r
- groupFinal->RemoveAll();\r
-\r
- delete groupFirst;\r
- groupFirst = nullptr;\r
-\r
- delete groupFinal;\r
- groupFinal = nullptr;\r
- }\r
-\r
- delete group;\r
- group = nullptr;\r
-\r
- delete hintsGroup;\r
- hintsGroup = nullptr;\r
-\r
- delete container;\r
- container = nullptr;\r
-\r
- g_pMainView = nullptr;\r
-}\r
-\r
-CallerLogView *CallerLogView::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-bool CallerLogView::CreateNoDataCallerLogViewGroup()\r
-{\r
- group = new CallerUIScrollView();\r
- if (group == nullptr) {\r
- return false;\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
-\r
- imageView = new UIImageView();\r
- if (imageView == nullptr) {\r
- return false;\r
- }\r
- imageView->SetPosition(0, 0); // 30 : offset\r
- imageView->SetSrc(PNG_NO_CALLER_LOG_IMAGE);\r
- group->Add(imageView);\r
- return true;\r
-}\r
-\r
-CallerUIScrollView *CallerLogView::GetContainerView()\r
-{\r
- return container;\r
-}\r
-\r
-CallerUIScrollView *CallerLogView::GetGroupView()\r
-{\r
- return group;\r
-}\r
-\r
-void CallerLogView::InitBluetoothHintsGroup()\r
-{\r
- hintsGroup = new UIViewGroup();\r
- if (hintsGroup == nullptr) {\r
- return;\r
- }\r
- hintsGroup->SetPosition(0, 0);\r
- hintsGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
-\r
- hintsImageView = new UIImageView();\r
- if (hintsImageView == nullptr) {\r
- return;\r
- }\r
- hintsImageView->SetPosition(0, 0); // 30 : offset\r
- hintsImageView->SetSrc(PNG_BLUETOOTH_HINTS_PATH);\r
- hintsGroup->Add(hintsImageView);\r
- \r
- AddViewToRootContainer(hintsGroup);\r
- hintsGroup->SetVisible(false);\r
- return;\r
-}\r
-\r
-UIViewGroup *CallerLogView::GetHintsGroup()\r
-{\r
- return hintsGroup;\r
-}\r
-\r
-void CallerLogView::ChangeLabelsStytleLog()\r
-{\r
- groupFirst = new UIViewGroup();\r
- if (groupFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new groupFirst error");\r
- return;\r
- }\r
- groupFirst->SetPosition(0, 0, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
- groupFirst->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- groupFirst->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- labelLog.SetPosition(0, APP_ITEM_FONT_SIZE, HORIZONTAL_RESOLUTION, ICON_X + NUM_20);\r
- labelLog.SetText("通话记录");\r
- labelLog.SetTextColor(Color::White());\r
- labelLog.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
- labelLog.SetAlign(TEXT_ALIGNMENT_CENTER);\r
- groupFirst->Add(&labelLog);\r
-}\r
-\r
-void CallerLogView::ChangeLabelsStytleClear(int32 groupFinaly, int32 Index)\r
-{\r
- groupFinal = new UIViewGroup();\r
- if (groupFinal == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new groupFinal error");\r
- return;\r
- }\r
- groupFinal->SetPosition(0, groupFinaly, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
- groupFinal->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- groupFinal->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- groupFinal->SetTouchable(true);\r
- groupFinal->SetViewIndex(Index);\r
- groupFinal->SetOnClickListener(clickLeftListener);\r
-\r
- labelClear.SetPosition(0, NUM_20, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
- labelClear.SetText("全部清除");\r
- labelClear.SetTextColor(Color::White());\r
- labelClear.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
- labelClear.SetAlign(TEXT_ALIGNMENT_CENTER);\r
- groupFinal->Add(&labelClear);\r
-}\r
-\r
-bool CallerLogView::InitOrBandOnclickEvent()\r
-{\r
- clickLeftListener = (UIView::OnClickListener*)OHOS::CallerLogPresenter::GetInstance();\r
- if (clickLeftListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new clickLeftListener error");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-bool CallerLogView::CreateCallerLogViewGroup()\r
-{\r
- container = new CallerUIScrollView();\r
- if (container == nullptr) {\r
- return false;\r
- }\r
- container->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- container->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- container->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- container->SetThrowDrag(true);\r
- container->SetDraggable(true);\r
- return true;\r
-}\r
-\r
-void CallerLogView::OnStart()\r
-{\r
-\r
- if (!CreateNoDataCallerLogViewGroup()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateNoDataCallerLogViewGroup error");\r
- return;\r
- }\r
- AddViewToRootContainer(group);\r
-\r
- if (!CreateCallerLogViewGroup()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateCallerLogViewGroup error");\r
- return;\r
- }\r
-\r
- if (!InitOrBandOnclickEvent()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::InitOrBandOnclickEvent fail");\r
- return;\r
- }\r
-\r
- if (GetCallLog(&info, &num) == -1) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::GetInstance()->ListIsEmpty");\r
- return;\r
- }\r
-\r
- if (num != 0) {\r
- ChangeLabelsStytleLog();\r
- container->Add(groupFirst);\r
-\r
- currentNumber = 0;\r
- for (int i = num; i != 0; i--) {\r
- item.PushBack(nullptr);\r
- item[currentNumber] = new CallerItemView((currentNumber + 1)*ITEM_GROUP_HEIGHT);\r
- item[currentNumber]->SetItemInfo((info + i - 1), (info + i -1)->telLen);\r
- item[currentNumber]->SetViewIndex(currentNumber);\r
- item[currentNumber]->SetOnClickListener(clickLeftListener);\r
- container->Add(item[currentNumber]);\r
- currentNumber++;\r
- }\r
- ChangeLabelsStytleClear((currentNumber + 1)*ITEM_GROUP_HEIGHT, currentNumber);\r
- container->Add(groupFinal);\r
- }\r
-\r
- dragListener = new CallerListOnDragListener();\r
- if (dragListener == nullptr) {\r
- return;\r
- }\r
- InitBluetoothHintsGroup();\r
- container->SetOnDragListener(dragListener);\r
- group->SetOnDragListener(dragListener);\r
- AddViewToRootContainer(container);\r
- if (num == 0) {\r
- group->SetVisible(true);\r
- container->SetVisible(false);\r
- } else {\r
- container->SetVisible(true);\r
- group->SetVisible(false);\r
- }\r
-}\r
-\r
-uint32 CallerLogView::GetCurrentNumber()\r
-{\r
- return currentNumber;\r
-}\r
-\r
-CallLogInfo *CallerLogView::GetCurrentCallInfo()\r
-{\r
- return info;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectOpen View\r
- * Create: 2022-03-22\r
- */\r
-#include "connectnewphone/ConnectOpenView.h"\r
-#include "PageTransitionMgr.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "connectnewphone/ConnectPhonePresenter.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-\r
-namespace OHOS {\r
-static ConnectOpenView *g_pConnectOpenView{nullptr};\r
-ConnectOpenView::ConnectOpenView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ConnectOpenView");\r
- g_pConnectOpenView = this;\r
-}\r
-\r
-ConnectOpenView::~ConnectOpenView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::~ConnectOpenView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete backButton;\r
- backButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- delete tipImg;\r
- tipImg = nullptr;\r
- g_pConnectOpenView = nullptr;\r
-}\r
-\r
-ConnectOpenView *ConnectOpenView::GetInstance()\r
-{\r
- return g_pConnectOpenView;\r
-}\r
-\r
-void ConnectOpenView::ShowUpBackView()\r
-{\r
- if (watchNameLabel == nullptr) {\r
- watchNameLabel = new UILabel();\r
- if (watchNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView watchNameLabel new fail");\r
- return;\r
- }\r
- watchNameLabel->SetPosition(0, 165, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
- watchNameLabel->SetText(BluetoothModel::GetInstance()->getWatchName());\r
- watchNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- watchNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- watchNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(watchNameLabel);\r
- }\r
-\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView titleLabel new fail");\r
- return;\r
- }\r
- titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
- titleLabel->SetText("连接已打开");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- if (backButton == nullptr) {\r
- backButton = new UILabelButton();\r
- if (backButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView backButton new fail");\r
- return;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return;\r
- }\r
- backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
- backButton->SetText("确定");\r
- backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- backButton->SetViewId(CONNECT_OPEN_BACK_BUTTON);\r
- backButton->SetTextColor(Color::Blue());\r
- backButton->SetOnClickListener(clickListener);\r
- group->Add(backButton);\r
- }\r
- if (tipImg == nullptr) {\r
- tipImg = new UIImageView();\r
- if (tipImg == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView tipImg new fail");\r
- return;\r
- }\r
- tipImg->SetPosition(181, 58, 90, 90); // 181:x 58:y 90:width 90:height\r
- tipImg->SetSrc(PNG_RIGHT);\r
- group->Add(tipImg);\r
- }\r
- return;\r
-}\r
-\r
-UIViewGroup *ConnectOpenView::InitShowUpView(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ShowUpViewInit");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- ShowUpBackView();\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (tipsDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (!PageTransitionMgr::GetInstance().CanSlideBack()) { // support default slide back firstly\r
- group->SetOnDragListener(tipsDragListener);\r
- }\r
- group->SetViewId(CONNECT_OPEN_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone Presenter\r
- * Create: 2022-01-19\r
- */\r
-\r
-#include "connectnewphone/ConnectPhonePresenter.h"\r
-#include "connectnewphone/ConnectPhoneView.h"\r
-#include "drag_event.h"\r
-#include "cmsis_os.h"\r
-#include "UiConfig.h"\r
-#include "wearable_log.h"\r
-#include "uiservice/ui_service.h"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_SLICE(VIEW_CONNECT_PHONE, ConnectPhoneView, ConnectPhonePresenter);\r
-\r
-static ConnectPhonePresenter *g_pConnectPhonePresenter = nullptr;\r
-\r
-ConnectPhonePresenter::ConnectPhonePresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::ConnectPhonePresenter");\r
- g_pConnectPhonePresenter = this;\r
-}\r
-\r
-ConnectPhonePresenter::~ConnectPhonePresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::~ConnectPhonePresenter");\r
- g_pConnectPhonePresenter = nullptr;\r
-}\r
-\r
-ConnectPhonePresenter *ConnectPhonePresenter::GetInstance()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter GetInstance");\r
- return g_pConnectPhonePresenter;\r
-}\r
-\r
-bool ConnectPhonePresenter::OnClick(UIView& view, const ClickEvent& event)\r
-{\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");\r
- if (strcmp(view.GetViewId(), CANCEL_BUTTON) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CANCEL_BUTTON OnClick");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- } else if (strcmp(view.GetViewId(), CONFIRM_BUTTON) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONFIRM_BUTTON OnClick");\r
- ConfirmOnClick();\r
- if (ConnectPhoneView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::GetInstance() nullptr");\r
- return false;\r
- }\r
- ConnectPhoneView::GetInstance()->ChangeView(CONNECTSELECTVIEW, CONNECTOPENVIEW);\r
- } else if (strcmp(view.GetViewId(), CONNECT_OPEN_BACK_BUTTON) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONNECT_OPEN_BACK_BUTTON OnClick");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- }\r
- return true;\r
-}\r
-\r
-void ConnectPhonePresenter::ConfirmOnClick()\r
-{\r
- SendMsgToUIService(CONNECT_NEW_PHONE, 0, nullptr, 0);\r
-}\r
-\r
-bool ConnectPhonePresenter::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- std::string viewId = view.GetViewId();\r
- if ((viewId == CONNECT_SELECT_VIEW) || (viewId == CONNECT_OPEN_VIEW)) {\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::OnDrag");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone View\r
- * Create: 2022-01-19\r
- */\r
-\r
-#include "connectnewphone/ConnectPhoneView.h"\r
-#include "components/ui_label.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static ConnectPhoneView *g_pConnectPhoneView{nullptr};\r
-\r
-ConnectPhoneView::ConnectPhoneView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ConnectPhoneView");\r
- preProcessView[CONNECTSELECTVIEW] = &ConnectPhoneView::ChangeConnectSelectView;\r
- preProcessView[CONNECTOPENVIEW] = &ConnectPhoneView::ChangeConnectOpenView;\r
- g_pConnectPhoneView = this;\r
-}\r
-\r
-ConnectPhoneView::~ConnectPhoneView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~ConnectPhoneView");\r
- g_pConnectPhoneView = nullptr;\r
-}\r
-\r
-ConnectPhoneView *ConnectPhoneView::GetInstance()\r
-{\r
- return g_pConnectPhoneView;\r
-}\r
-\r
-void ConnectPhoneView::OnStart()\r
-{\r
- ChangeView(CONNECTPHONE_MAX, CONNECTSELECTVIEW);\r
- return;\r
-}\r
-\r
-\r
-bool ConnectPhoneView::ChangeConnectSelectView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectSelectView");\r
- connectSelectView = new ConnectSelectView();\r
- if (connectSelectView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectSelectView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = connectSelectView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool ConnectPhoneView::ChangeConnectOpenView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectOpenView");\r
- connectOpenView = new ConnectOpenView();\r
- if (connectOpenView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectOpenView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = connectOpenView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool ConnectPhoneView::CheckViewParam(int16_t hideView, int16_t showView)\r
-{\r
- if (showView < 0 || showView >= CONNECTPHONE_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam showView err.");\r
- return false;\r
- }\r
-\r
- if (hideView < 0 || hideView > CONNECTPHONE_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam hideView err.");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-void ConnectPhoneView::ChangeView(int16_t hideView, int16_t showView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d, %d", hideView, showView);\r
-\r
- if (!CheckViewParam(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam failed.");\r
- return;\r
- }\r
-\r
- PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
-\r
- if (!(this->*tmpPreProcessView)(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d %dfailed", showView, hideView);\r
- return;\r
- }\r
- if (hideView != CONNECTPHONE_MAX) {\r
- if (container[hideView] == nullptr) {\r
- return;\r
- }\r
- container[hideView]->SetVisible(false);\r
- }\r
- container[showView]->SetVisible(true);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView:: ChangeView end!!!%d", showView);\r
- Draw();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectSelect View\r
- * Create: 2022-03-22\r
- */\r
-#include "connectnewphone/ConnectSelectView.h"\r
-#include "PageTransitionMgr.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "connectnewphone/ConnectPhonePresenter.h"\r
-\r
-namespace OHOS {\r
-static ConnectSelectView *g_pConnectSelectView{nullptr};\r
-\r
-ConnectSelectView::ConnectSelectView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ConnectSelectView");\r
- g_pConnectSelectView = this;\r
-}\r
-\r
-ConnectSelectView::~ConnectSelectView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::~ConnectSelectView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete cancelButton;\r
- cancelButton = nullptr;\r
- delete confirmButton;\r
- confirmButton = nullptr;\r
- g_pConnectSelectView = nullptr;\r
-}\r
-\r
-ConnectSelectView *ConnectSelectView::GetInstance()\r
-{\r
- return g_pConnectSelectView;\r
-}\r
-\r
-void ConnectSelectView::ShowUpTitleLabel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ShowUpTitleLabel");\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView titleLabel new fail");\r
- return;\r
- }\r
- titleLabel->SetPosition(65, 100, 324, 160); // 65:x, 100:y, 324:width, 160:height\r
- titleLabel->SetText(" 将断开已连接的手 机,同一账号的新手机配对会保留个人数 据。是否继续?");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- group->Add(titleLabel);\r
- }\r
-}\r
-\r
-void ConnectSelectView::CreateUIButton()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::CreateUIButton");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
- if (cancelButton == nullptr) {\r
- cancelButton = new UIButton();\r
- if (cancelButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView cancelButton new fail");\r
- return;\r
- }\r
- cancelButton->SetPosition(85, 320, 90, 90); // 85:x, 320:y, 90:width, 90:height\r
- cancelButton->SetViewId(CANCEL_BUTTON);\r
- cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);\r
- cancelButton->SetOnClickListener(clickListener);\r
- group->Add(cancelButton);\r
- }\r
- if (confirmButton == nullptr) {\r
- confirmButton = new UIButton();\r
- if (confirmButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView confirmButton new fail");\r
- return;\r
- }\r
- confirmButton->SetPosition(279, 320, 90, 90); // 279:x, 320:y, 90:width, 90:height\r
- confirmButton->SetViewId(CONFIRM_BUTTON);\r
- confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);\r
- confirmButton->SetOnClickListener(clickListener);\r
- group->Add(confirmButton);\r
- }\r
-}\r
-\r
-UIViewGroup *ConnectSelectView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- ShowUpTitleLabel();\r
- CreateUIButton();\r
- UIView::OnDragListener *connectDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (connectDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (!PageTransitionMgr::GetInstance().CanSlideBack()) { // support default slide back firstly\r
- group->SetOnDragListener(connectDragListener);\r
- }\r
- group->SetViewId(CONNECT_SELECT_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: DateAdapter\r
- * Create: 2025-03-23\r
- */\r
-\r
-#include "date/DateAdapter.h"\r
-\r
-namespace OHOS {\r
-DateAdapter::DateAdapter() {}\r
-\r
-DateAdapter::~DateAdapter()\r
-{\r
- listData.clear();\r
-}\r
-\r
-uint16_t DateAdapter::GetCount(void)\r
-{\r
- return listData.size();\r
-}\r
-\r
-void DateAdapter::SetData(std::list<DateItem> &data)\r
-{\r
- if (!listData.empty()) {\r
- listData.clear();\r
- }\r
- std::list<DateItem>::iterator it;\r
- for (it = data.begin(); it != data.end(); it++) {\r
- listData.push_back(*it);\r
- }\r
-}\r
-\r
-UIView *DateAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData.empty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData.size()) {\r
- return nullptr;\r
- }\r
-\r
- std::list<DateItem>::iterator it = listData.begin();\r
- for (int i = 0; i < index; i++) {\r
- it++;\r
- }\r
- DateItem itemData = *it;\r
- DateItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new DateItemView();\r
- } else {\r
- item = static_cast<DateItemView *>(inView);\r
- }\r
-\r
- item->SetItemInfo(itemData);\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void DateAdapter::AddListItem(const DateItem &item)\r
-{\r
- listData.push_back(item);\r
-}\r
-\r
-void DateAdapter::ClearListItem()\r
-{\r
- listData.clear();\r
-}\r
-\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: DateButtonAdapter\r
- * Create: 2025-03-23\r
- */\r
-\r
-#include "date/DateButtonAdapter.h"\r
-\r
-namespace OHOS {\r
-DateButtonAdapter::DateButtonAdapter() {}\r
-\r
-DateButtonAdapter::~DateButtonAdapter()\r
-{\r
- listData.clear();\r
-}\r
-\r
-uint16_t DateButtonAdapter::GetCount(void)\r
-{\r
- return listData.size();\r
-}\r
-\r
-void DateButtonAdapter::SetData(std::list<DateButtonItem> &data)\r
-{\r
- if (!listData.empty()) {\r
- listData.clear();\r
- }\r
- std::list<DateButtonItem>::iterator it;\r
- for (it = data.begin(); it != data.end(); it++) {\r
- listData.push_back(*it);\r
- }\r
-}\r
-\r
-UIView *DateButtonAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData.empty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData.size()) {\r
- return nullptr;\r
- }\r
-\r
- std::list<DateButtonItem>::iterator it = listData.begin();\r
- for (int i = 0; i < index; i++) {\r
- it++;\r
- }\r
- DateButtonItem itemData = *it;\r
- DateButtonItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new DateButtonItemView();\r
- } else {\r
- item = static_cast<DateButtonItemView *>(inView);\r
- }\r
-\r
- item->SetItemInfo(itemData);\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void DateButtonAdapter::AddListItem(const DateButtonItem &item)\r
-{\r
- listData.push_back(item);\r
-}\r
-\r
-void DateButtonAdapter::ClearListItem()\r
-{\r
- listData.clear();\r
-}\r
-\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: DateItemView\r
- * Create: 2025-03-23\r
- */\r
-\r
-#include "date/DateItemView.h"\r
-#include "UiConfig.h"\r
-#include "common/image_cache_manager.h"\r
-#include "ui_resource_date.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-static constexpr int16_t DATE_ITEM_BUTTON_HEIGHT = 65;\r
-static constexpr int16_t DATE_ITEM_LABEL_POSITION_X = 43;\r
-static constexpr int16_t DATE_ITEM_LABEL_POSITION_Y = 22;\r
-static constexpr int16_t DATE_ITEM_LABEL_TWO_POSITION_X = 23;\r
-static constexpr int16_t DATE_ITEM_LABEL_TWO_POSITION_Y = 60;\r
-static constexpr int16_t DATE_ITEM_LABEL_WIDTH = 135;\r
-static constexpr int16_t DATE_ITEM_LABEL_HEIGHT = 40;\r
-static constexpr int16_t DATE_ITEM_LABEL2_HEIGHT = 96;\r
-static constexpr int16_t DATE_ITEM_LABEL_TWO_WIDTH = 314;\r
-static constexpr int16 DATE_ITEM_FONT_SIZE = 24;\r
-static constexpr int16 DATE_ITEM_FONT2_SIZE = 32;\r
-static constexpr int16_t DATE_ITEM_WIDTH = 376;\r
-static constexpr int16_t DATE_ITEM_HEIGHT = 190;\r
-\r
-DateItemView::DateItemView()\r
-{\r
- SetPosition(0, 0, DATE_ITEM_WIDTH, DATE_ITEM_HEIGHT);\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- SetTouchable(true);\r
- SetUpChild();\r
-\r
- Add(&sLabel_1);\r
- Add(&sLabel_2);\r
- Add(&Signs);\r
- Add(&BackGround);\r
-}\r
-\r
-DateItemView::~DateItemView()\r
-{\r
- Remove(&sLabel_1);\r
- Remove(&sLabel_2);\r
- Remove(&Signs);\r
- Remove(&BackGround);\r
-}\r
-\r
-void DateItemView::SetItemInfo(const DateItem itemInfo)\r
-{\r
- sItemInfo = itemInfo;\r
- sLabel_1.SetText(itemInfo.label_1);\r
- sLabel_2.SetText(itemInfo.label_2);\r
- BackGround.SetPosition(0, 0);\r
- if (itemInfo.visiable) {\r
- int offsetX1 = 100;\r
- int offsetY1 = 10;\r
- int offsetX2 = 30;\r
- int offsetY2 = 40;\r
- sLabel_1.SetPosition(DATE_ITEM_LABEL_POSITION_X + offsetX1, DATE_ITEM_LABEL_POSITION_Y + offsetY1);\r
- sLabel_2.SetPosition(DATE_ITEM_LABEL_TWO_POSITION_X + offsetX2, DATE_ITEM_LABEL_TWO_POSITION_Y + offsetY2);\r
- sLabel_1.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- sLabel_2.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
- sLabel_1.SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATE_ITEM_FONT2_SIZE);\r
- sLabel_2.SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATE_ITEM_FONT_SIZE);\r
- Signs.SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- } else {\r
- sLabel_1.SetPosition(DATE_ITEM_LABEL_POSITION_X, DATE_ITEM_LABEL_POSITION_Y);\r
- sLabel_2.SetPosition(DATE_ITEM_LABEL_TWO_POSITION_X, DATE_ITEM_LABEL_TWO_POSITION_Y);\r
- sLabel_1.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
- sLabel_2.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- sLabel_1.SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATE_ITEM_FONT_SIZE);\r
- sLabel_2.SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATE_ITEM_FONT2_SIZE);\r
- Signs.SetPosition(DATE_ITEM_LABEL_TWO_POSITION_X, DATE_ITEM_FONT_SIZE);\r
- }\r
- Signs.SetVisible(!itemInfo.visiable);\r
-}\r
-\r
-void DateItemView::SetUpChild()\r
-{\r
- sLabel_1.Resize(DATE_ITEM_LABEL_WIDTH, DATE_ITEM_LABEL_HEIGHT);\r
- sLabel_1.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_LEFT);\r
- sLabel_1.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- sLabel_1.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- sLabel_1.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- sLabel_2.Resize(DATE_ITEM_LABEL_TWO_WIDTH, DATE_ITEM_LABEL2_HEIGHT);\r
- sLabel_2.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_LEFT);\r
- sLabel_2.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- sLabel_2.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- sLabel_2.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMAGE_CONVERTER_TOOL_DATE5, DATE_IMAGE);\r
- if (image == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "DateMessagePage::OnStart LoadStopwatchImage IMAGE_CONVERTER_TOOL_DATE5 fail");\r
- return;\r
- }\r
- Signs.SetSrc(image);\r
- image = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMAGE_CONVERTER_TOOL_DATE1, DATE_IMAGE);\r
- if (image == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "DateMessagePage::OnStart LoadStopwatchImage IMAGE_CONVERTER_TOOL_DATE1 fail");\r
- return;\r
- }\r
- BackGround.SetSrc(image);\r
-}\r
-\r
-const char *DateItemView ::GetViewId()\r
-{\r
- return sItemInfo.index;\r
-}\r
-bool DateItemView::GetVisiable()\r
-{\r
- return sItemInfo.visiable;\r
-}\r
-\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: FlashLightDefaultPage\r
- * Create: 2025-04-24\r
- */\r
-#include "flashlight/FlashLightDefaultPage.h"\r
-#include "flashlight/FlashLightPresenter.h"\r
-#include "SlicePageFactory.h"\r
-#include "flashlight/FlashLightView.h"\r
-#include "AppViewIDs.h"\r
-#include "wearable_log.h"\r
-#include "NativeAbility.h"\r
-#include "flashlight/FlashLightModel.h"\r
-#include "main/LoadImg.h"\r
-#include "flashlight/FlashlightUiResourceImage.h"\r
-namespace OHOS {\r
-static const uint16_t RECOVER_LABEL_POS_X = 15;\r
-static const uint16_t RECOVER_LABEL_POS_Y = 185;\r
-static const uint16_t RECOVER_LABEL_WIDTH = 424;\r
-static const uint16_t RECOVER_LABEL_HEIGHT = 50;\r
-static const uint16_t RECOVER_LABEL_FONT_SIZE = 36;\r
-static const uint16_t CANCLE_BUTTON_POS_X = 115;\r
-static const uint16_t CANCLE_BUTTON_POS_Y = 300;\r
-static const uint16_t CONFIRM_BUTTON_POS_X = 255;\r
-static const uint16_t CONFIRM_BUTTON_POS_Y = 300;\r
-static const uint16_t CANCLE_BUTTON_WIDTH = 85;\r
-static const uint16_t CANCLE_BUTTON_HEIGHT = 85;\r
-static const std::string CANCLE_BUTTON_ID = "cancle";\r
-static const std::string CONFIRM_BUTTON_ID = "confirm";\r
-\r
-REGIST_SLICE_PAGE(VIEW_FLASHLIGHT, FlashLightAllView::FLASH_LIGHT_DEFAULT_VIEW, FlashLightDefaultPage, false);\r
-void FlashLightDefaultPage::OnStart(void *data)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FlashLightDefaultPage::OnStart");\r
- if (container_ == nullptr) {\r
- container_ = new UIScrollView();\r
- container_->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
- }\r
-\r
- if (recoverLabel_ == nullptr) {\r
- recoverLabel_ = new UILabel();\r
- }\r
- recoverLabel_->SetPosition(RECOVER_LABEL_POS_X, RECOVER_LABEL_POS_Y, RECOVER_LABEL_WIDTH, RECOVER_LABEL_HEIGHT);\r
- recoverLabel_->SetText("是否恢复默认设置");\r
- recoverLabel_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- recoverLabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- recoverLabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, RECOVER_LABEL_FONT_SIZE);\r
- // Add to rootView\r
- container_->Add(recoverLabel_);\r
- recoverLabel_->SetVisible(true);\r
-\r
- if (cancelButton_ == nullptr) {\r
- cancelButton_ = new UILabelButtonExt();\r
- }\r
- cancelButton_->SetPosition(CANCLE_BUTTON_POS_X, CANCLE_BUTTON_POS_Y, CANCLE_BUTTON_WIDTH, CANCLE_BUTTON_HEIGHT);\r
- cancelButton_->SetViewId(CANCLE_BUTTON_ID.c_str());\r
- LOADIMG::LoadBtnImage(cancelButton_, FLASHLIGHT_IMAGE, IMAGE_CONVERTER_TOOL_RECOVERCANCLE,\r
- IMAGE_CONVERTER_TOOL_RECOVERCANCLE);\r
- cancelButton_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- cancelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
- container_->Add(cancelButton_);\r
- cancelButton_->SetVisible(true);\r
-\r
- if (confirmButton_ == nullptr) {\r
- confirmButton_ = new UILabelButtonExt();\r
- }\r
- confirmButton_->SetPosition(CONFIRM_BUTTON_POS_X, CONFIRM_BUTTON_POS_Y, CANCLE_BUTTON_WIDTH, CANCLE_BUTTON_HEIGHT);\r
- confirmButton_->SetViewId(CONFIRM_BUTTON_ID.c_str());\r
- LOADIMG::LoadBtnImage(confirmButton_, FLASHLIGHT_IMAGE, IMAGE_CONVERTER_TOOL_RECOVERCONFIRM,\r
- IMAGE_CONVERTER_TOOL_RECOVERCONFIRM);\r
- confirmButton_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- confirmButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
- container_->Add(confirmButton_);\r
- confirmButton_->SetVisible(true);\r
-\r
- // 设置界面组件回调函数\r
- container_->SetOnDragListener(this);\r
- cancelButton_->SetOnClickListener(this);\r
- confirmButton_->SetOnClickListener(this);\r
- AddViewToPageContainer(container_);\r
-}\r
-\r
-FlashLightDefaultPage::~FlashLightDefaultPage()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FlashLightDefaultPage::~FlashLightDefaultPage");\r
- if (container_ != nullptr) {\r
- container_->RemoveAll();\r
- delete container_;\r
- container_ = nullptr;\r
- }\r
- if (recoverLabel_ != nullptr) {\r
- delete recoverLabel_;\r
- recoverLabel_ = nullptr;\r
- }\r
- if (cancelButton_ != nullptr) {\r
- delete cancelButton_;\r
- cancelButton_ = nullptr;\r
- }\r
- if (confirmButton_ != nullptr) {\r
- delete confirmButton_;\r
- confirmButton_ = nullptr;\r
- }\r
- ImageCacheManager::GetInstance().UnloadSingleRes(FLASHLIGHT_IMAGE);\r
-}\r
-\r
-bool FlashLightDefaultPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FlashLightColorPage::OnDrag");\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_FLASHLIGHT, FlashLightAllView::FLASH_LIGHT_SET_VIEW);\r
- }\r
- return false;\r
-}\r
-\r
-bool FlashLightDefaultPage::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- std::string viewId = view.GetViewId();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FlashLightDefaultPage::OnClick [%s]", viewId.c_str());\r
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
- if (viewId == CONFIRM_BUTTON_ID) {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_FLASHLIGHT, FlashLightAllView::FLASH_LIGTH_VIEW);\r
- FlashLightModel::GetInstance().SetDefault();\r
- } else if (viewId == CANCLE_BUTTON_ID) {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_FLASHLIGHT, FlashLightAllView::FLASH_LIGHT_SET_VIEW);\r
- } else {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FlashLightDefaultPage::OnClick [Invalid]");\r
- }\r
- return false;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: FlashLightSetItemAdapter.cpp\r
- * Create: 2025-11-23\r
- */\r
-#include "flashlight/FlashLightSetItemAdapter.h"\r
-#include "flashlight/FlashLightSetItemView.h"\r
-\r
-namespace OHOS {\r
-FlashLightSetItemAdapter::FlashLightSetItemAdapter() {}\r
-\r
-FlashLightSetItemAdapter::~FlashLightSetItemAdapter()\r
-{\r
- itemDatas_.Clear();\r
-}\r
-\r
-uint16_t FlashLightSetItemAdapter::GetCount(void)\r
-{\r
- return itemDatas_.Size();\r
-}\r
-\r
-void FlashLightSetItemAdapter::SetData(const Graphic::Vector<FlashLightSetItem> &data)\r
-{\r
- if (!itemDatas_.IsEmpty()) {\r
- itemDatas_.Clear();\r
- }\r
- itemDatas_ = data;\r
-}\r
-\r
-UIView *FlashLightSetItemAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (itemDatas_.IsEmpty()) {\r
- return nullptr;\r
- }\r
-\r
- if (index >= itemDatas_.Size() || index < 0) {\r
- return nullptr;\r
- }\r
-\r
- FlashLightSetItem itemData = itemDatas_[index];\r
- FlashLightSetItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new FlashLightSetItemView();\r
- } else {\r
- item = static_cast<FlashLightSetItemView *>(inView);\r
- }\r
- item->SetItemInfo(itemData);\r
- item->SetViewId(itemData.label.c_str());\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void FlashLightSetItemAdapter::AddListItem(const FlashLightSetItem &item)\r
-{\r
- itemDatas_.PushBack(item);\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: heartRate view\r
- * Author:\r
- * Create: 2021-07-26\r
- */\r
-\r
-#include <securec.h>\r
-#include "heartrate/HeartRateView.h"\r
-#include "common/screen.h"\r
-#include "UiConfig.h"\r
-#include "screensetting/ScreenModels.h"\r
-#include "ui_resource_image.h"\r
-#include "common/image_cache_manager.h"\r
-\r
-namespace OHOS {\r
-static HeartRateView *g_pHeartRateView = nullptr;\r
-\r
-// 背景坐标图形\r
-#define ACT_IMAGE_X 0 // 图片坐标起点\r
-#define ACT_IMAGE_Y 115 // 图片坐标起点\r
-#define ACT_IMAGE_COOR_X 45 // 200刻度线到最左端的像素点\r
-#define ACT_IMAGE_COOR_Y 145 // 200刻度线到顶端的像素点\r
-#define ACT_IMAGE_COOR_PIXELS 160 // 实际背景坐标0到200心率值的实际像素点\r
-#define ACT_IMAGE_COOR_VALUE HEART_RATE_LIMIT_UPPER // 图片刻度表示的心率范围\r
-#define ACT_IMAGE_COOR_WIDTH 454\r
-#define ACT_IMAGE_COOR_HEIGHT 220\r
-\r
-// 心电图坐标适配\r
-#define COORDINATE_VALUE 5 // 余量\r
-#define COORDINATE_POINT_X (ACT_IMAGE_COOR_X - COORDINATE_VALUE)\r
-#define COORDINATE_POINT_Y (ACT_IMAGE_COOR_Y - COORDINATE_VALUE * 2)\r
-#define COORDINATE_HEIGHT (ACT_IMAGE_COOR_PIXELS + COORDINATE_VALUE * 2)\r
-#define COORDINATE_WIDTH (HEART_AVE_NUM + COORDINATE_VALUE * 2) // 360点,每点对应240秒(4分钟)\r
-#define COORDINATE_GRAD_MIN_OPA 25\r
-#define COORDINATE_GRAD_MAX_OPA 180\r
-\r
-// 心形心跳\r
-#define HEARTBEAT_IMAGE_WIDTH 92\r
-#define HEARTBEAT_IMAGE_HEIGHT 92\r
-#define HEARTBEAT_IMAGE_X 130\r
-#define HEARTBEAT_IMAGE_Y 25\r
-#define HEARTBEAT_IMAGE_NUM 19\r
-#define HEARTBEAT_DELAY 50\r
-\r
-// 最高心率\r
-#define TOP_IMAGE_WIDTH 32\r
-#define TOP_IMAGE_HEIGHT 32\r
-#define TOP_IMAGE_X 120\r
-#define TOP_IMAGE_Y 340\r
-#define TOP_STROKE_WIDTH 1\r
-#define TOP_RADIUS 4\r
-\r
-#define HEART_RATE_LIMIT_FONT_SIZE 30\r
-#define TOP_TEXT_WIDTH 80\r
-#define TOP_TEXT_HEIGHT (HEART_RATE_LIMIT_FONT_SIZE + 5)\r
-#define TOP_TEXT_X 160\r
-#define TOP_TEXT_Y 337\r
-\r
-// 最低心率\r
-#define BOTTOM_IMAGE_WIDTH 32\r
-#define BOTTOM_IMAGE_HEIGHT 32\r
-#define BOTTOM_IMAGE_X 250\r
-#define BOTTOM_IMAGE_Y 340\r
-#define BOTTOM_STROKE_WIDTH 1\r
-#define BOTTOM_RADIUS 3\r
-\r
-#define BOTTOM_TEXT_WIDTH 80\r
-#define BOTTOM_TEXT_HEIGHT (HEART_RATE_LIMIT_FONT_SIZE + 5)\r
-#define BOTTOM_TEXT_X 290\r
-#define BOTTOM_TEXT_Y 337\r
-\r
-// 静息心率\r
-#define REST_HEART_RATE_FONT_SIZE 40\r
-#define REST_HEART_RATE_X 195\r
-#define REST_HEART_RATE_Y 380\r
-#define REST_HEART_RATE_WIDTH 95\r
-#define REST_HEART_RATE_HEIGHT (REST_HEART_RATE_FONT_SIZE + 5)\r
-\r
-#define REST_HEART_TEXT_FONT_SIZE 30\r
-#define REST_HEART_TEXT_X1 120\r
-#define REST_HEART_TEXT_Y1 390\r
-#define REST_HEART_TEXT_WIDTH1 75\r
-#define REST_HEART_TEXT_HEIGHT1 (REST_HEART_TEXT_FONT_SIZE + 5)\r
-\r
-#define REST_HEART_TEXT_X2 265\r
-#define REST_HEART_TEXT_Y2 390\r
-#define REST_HEART_TEXT_WIDTH2 75\r
-#define REST_HEART_TEXT_HEIGHT2 (REST_HEART_TEXT_FONT_SIZE + 5)\r
-\r
-// 每秒心率\r
-#define PERSEC_HEART_RATE_FONT_SIZE 45\r
-#define PERSEC_HEART_RATE_X 225\r
-#define PERSEC_HEART_RATE_Y 55\r
-#define PERSEC_HEART_RATE_WIDTH 90\r
-#define PERSEC_HEART_RATE_HEIGHT (PERSEC_HEART_RATE_FONT_SIZE + 5)\r
-\r
-#define PERSEC_HEART_TEXT_FONT_SIZE 30\r
-#define PERSEC_HEART_TEXT_X 310\r
-#define PERSEC_HEART_TEXT_Y 75\r
-#define PERSEC_HEART_TEXT_WIDTH 75\r
-#define PERSEC_HEART_TEXT_HEIGHT (PERSEC_HEART_TEXT_FONT_SIZE + 5)\r
-\r
-// 心跳image\r
-static ImageAnimatorInfo g_heartBeatImageInfo[HEARTBEAT_IMAGE_NUM] = {\r
- {PNG_A004_070_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_071_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_072_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_073_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_074_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_075_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_076_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_077_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_078_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_079_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
-\r
- {PNG_A004_080_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_081_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_082_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_083_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_084_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_085_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_086_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_087_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_088_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
-};\r
-\r
-HeartRateView::HeartRateView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView");\r
- dataNume = 0;\r
- currIndex = 0;\r
- serialIndex = 0;\r
- maxRate = 0;\r
- minRate = HEART_RATE_LIMIT_UPPER;\r
- InitHeartRateData();\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
-\r
- g_pHeartRateView = this;\r
-}\r
-\r
-HeartRateView::~HeartRateView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::~HeartRateView");\r
- if (viewiInitStatus) {\r
- int32_t i;\r
- RemoveAll();\r
- delete imageViewCoordinate;\r
- imageViewCoordinate = nullptr;\r
-\r
- chart->ClearDataSerial();\r
- for (i = 0; i < HEART_AVE_NUM; i++) {\r
- delete dataSerial[i];\r
- dataSerial[i] = nullptr;\r
- }\r
- delete chart;\r
- chart = nullptr;\r
- delete imageViewTop;\r
- imageViewTop = nullptr;\r
- delete imageViewBottom;\r
- imageViewBottom = nullptr;\r
- delete dataTopAndbottom;\r
- dataTopAndbottom = nullptr;\r
- imageAnimator->Stop();\r
- delete imageAnimator;\r
- imageAnimator = nullptr;\r
- delete topRate;\r
- topRate = nullptr;\r
- delete bottomRate;\r
- bottomRate = nullptr;\r
- delete ratePerSec;\r
- ratePerSec = nullptr;\r
- delete ratePerSecText;\r
- ratePerSecText = nullptr;\r
- delete restRate;\r
- restRate = nullptr;\r
- delete restRateText1;\r
- restRateText1 = nullptr;\r
- delete restRateText2;\r
- restRateText2 = nullptr;\r
- }\r
- g_pHeartRateView = nullptr;\r
-}\r
-\r
-HeartRateView *HeartRateView::GetInstance(void)\r
-{\r
- return g_pHeartRateView;\r
-}\r
-\r
-int32_t HeartRateView::InitHeartRateData(void) // 初始化心率数据,将存放心率数据的有效字节设置为无效值\r
-{\r
- heartRateData[0].x = INVALID_HEART_VALUE;\r
- heartRateData[0].y = INVALID_HEART_VALUE;\r
-\r
- int32_t ret = memset_s(heartRateData, sizeof(Point) * HEART_AVE_NUM, INVALID_HEART_VALUE, sizeof(Point) * HEART_AVE_NUM);\r
- if (ret != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[InitHeartRateData] memset_s heartRateData fail! ret = %d", ret);\r
- }\r
- return ret;\r
-}\r
-\r
-int32_t HeartRateView::SetHeartRateData(Point *rateData, uint32 rateDataSize)\r
-{\r
- if (rateData == nullptr) {\r
- return OHOS_FAILURE;\r
- }\r
-\r
- if (rateDataSize > sizeof(Point) * HEART_AVE_NUM) {\r
- rateDataSize = sizeof(Point) * HEART_AVE_NUM;\r
- }\r
- InitHeartRateData();\r
- int32_t ret = memcpy_s(heartRateData, sizeof(Point) * HEART_AVE_NUM, rateData, rateDataSize);\r
- if (ret != EOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memcpy_s heartRateData fail! ret = %d", ret);\r
- return OHOS_FAILURE;\r
- }\r
- return OHOS_SUCCESS;\r
-}\r
-\r
-\r
-int32_t HeartRateView::HeartRateDataProc(void)\r
-{\r
- Point datain[HEART_AVE_NUM];\r
- int32_t ret = memcpy_s(datain, sizeof(Point) * HEART_AVE_NUM, heartRateData, sizeof(Point) * HEART_AVE_NUM);\r
- if (ret != EOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memcpy_s rateDataTmp fail! ret = %d", ret);\r
- return OHOS_FAILURE;\r
- }\r
-\r
- ret = memset_s(rateDataTmp, sizeof(Point) * HEART_AVE_NUM, INVALID_HEART_VALUE, sizeof(Point) * HEART_AVE_NUM); // 替换为无效值\r
- if (ret != EOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memset_s rateDataTmp fail! ret = %d", ret);\r
- return OHOS_FAILURE;\r
- }\r
-\r
- dataNume = 0;\r
- for (int32_t i = 0; i < HEART_AVE_NUM; i++) {\r
- if (datain[i].x >= 0 && datain[i].x < HEART_AVE_NUM && datain[i].y > 0 &&\r
- datain[i].y <= HEART_RATE_LIMIT_UPPER) {\r
- rateDataTmp[dataNume].x = datain[i].x + COORDINATE_VALUE;\r
- rateDataTmp[dataNume].y = datain[i].y * ACT_IMAGE_COOR_PIXELS / ACT_IMAGE_COOR_VALUE;\r
- dataNume++;\r
- }\r
- }\r
- return OHOS_SUCCESS;\r
-}\r
-\r
-void HeartRateView::SetLabel(UILabel *label, LabelInfo labelInfo)\r
-{\r
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelInfo.fontSize);\r
- label->SetPosition(labelInfo.x, labelInfo.y);\r
- label->Resize(labelInfo.width, labelInfo.height);\r
- label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- Add(label);\r
-}\r
-\r
-void HeartRateView::HeartRateLabelDisplay(void)\r
-{\r
- LabelInfo PerSecLabel = { PERSEC_HEART_RATE_FONT_SIZE, PERSEC_HEART_RATE_X, PERSEC_HEART_RATE_Y,\r
- PERSEC_HEART_RATE_WIDTH, PERSEC_HEART_RATE_HEIGHT };\r
- LabelInfo PerSecTextLabel = { PERSEC_HEART_TEXT_FONT_SIZE, PERSEC_HEART_TEXT_X, PERSEC_HEART_TEXT_Y,\r
- PERSEC_HEART_TEXT_WIDTH, PERSEC_HEART_TEXT_HEIGHT };\r
-\r
- LabelInfo topLabel = { HEART_RATE_LIMIT_FONT_SIZE, TOP_TEXT_X, TOP_TEXT_Y, TOP_TEXT_WIDTH, TOP_TEXT_HEIGHT };\r
- LabelInfo bottomLabel = { HEART_RATE_LIMIT_FONT_SIZE, BOTTOM_TEXT_X, BOTTOM_TEXT_Y, BOTTOM_TEXT_WIDTH,\r
- BOTTOM_TEXT_HEIGHT };\r
-\r
- LabelInfo restRateLabel = { REST_HEART_RATE_FONT_SIZE, REST_HEART_RATE_X, REST_HEART_RATE_Y, REST_HEART_RATE_WIDTH,\r
- REST_HEART_RATE_HEIGHT };\r
- LabelInfo restRateTextLabel1 = { REST_HEART_TEXT_FONT_SIZE, REST_HEART_TEXT_X1, REST_HEART_TEXT_Y1,\r
- REST_HEART_TEXT_WIDTH1, REST_HEART_TEXT_HEIGHT1 };\r
- LabelInfo restRateTextLabel2 = { REST_HEART_TEXT_FONT_SIZE, REST_HEART_TEXT_X2, REST_HEART_TEXT_Y2,\r
- REST_HEART_TEXT_WIDTH2, REST_HEART_TEXT_HEIGHT2 };\r
-\r
- topRate = new UILabel();\r
- bottomRate = new UILabel();\r
- ratePerSec = new UILabel();\r
- ratePerSecText = new UILabel();\r
- restRate = new UILabel();\r
- restRateText1 = new UILabel();\r
- restRateText2 = new UILabel();\r
-\r
- if (topRate == nullptr || bottomRate == nullptr || ratePerSec == nullptr || ratePerSecText == nullptr ||\r
- restRate == nullptr || restRateText1 == nullptr || restRateText2 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateLabelDisplay] new UILabel fail");\r
- }\r
-\r
- // 实时心率\r
- SetLabel(ratePerSec, PerSecLabel);\r
- SetLabel(ratePerSecText, PerSecTextLabel);\r
- ratePerSec->SetText("--");\r
- ratePerSecText->SetText("次/分");\r
-\r
- // 最高最低心率\r
- SetLabel(topRate, topLabel);\r
- SetLabel(bottomRate, bottomLabel);\r
- topRate->SetText("--");\r
- bottomRate->SetText("--");\r
-\r
- // 静息心率\r
- SetLabel(restRate, restRateLabel);\r
- SetLabel(restRateText1, restRateTextLabel1);\r
- SetLabel(restRateText2, restRateTextLabel2);\r
- restRateText1->SetText("静息");\r
- restRate->SetText("--");\r
- restRateText2->SetText("次/分");\r
-}\r
-\r
-void HeartRateView::HeartRateCoordinate(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateCoordinate start");\r
- // 坐标图片\r
- imageViewCoordinate = new UIImageView();\r
- if (imageViewCoordinate == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateCoordinate] new imageViewCoordinate fail");\r
- return;\r
- }\r
- imageViewCoordinate->SetPosition(ACT_IMAGE_X, ACT_IMAGE_Y);\r
- imageViewCoordinate->SetWidth(ACT_IMAGE_COOR_WIDTH);\r
- imageViewCoordinate->SetHeight(ACT_IMAGE_COOR_HEIGHT);\r
- Add(imageViewCoordinate);\r
-\r
- // 心电图坐标适配\r
- chart = new UIChartPolyline();\r
- if (chart == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateCoordinate] new chart fail");\r
- return;\r
- }\r
- chart->SetPosition(COORDINATE_POINT_X, COORDINATE_POINT_Y);\r
- chart->SetWidth(COORDINATE_WIDTH);\r
- chart->SetHeight(COORDINATE_HEIGHT);\r
- chart->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- chart->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
- chart->SetStyle(STYLE_LINE_WIDTH, 1); // line width\r
-\r
- UIXAxis &xAxis = chart->GetXAxis();\r
- UIYAxis &yAxis = chart->GetYAxis();\r
- xAxis.SetDataRange(0, COORDINATE_WIDTH); // 24小时对应的秒数\r
- yAxis.SetDataRange(0, COORDINATE_HEIGHT);\r
- xAxis.SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0));\r
- yAxis.SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0));\r
- chart->SetGradientOpacity(COORDINATE_GRAD_MIN_OPA, COORDINATE_GRAD_MAX_OPA);\r
- Add(chart);\r
-}\r
-\r
-void HeartRateView::InsertTopAndBottomRateImage(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::InsertTopAndBottomRateImage start");\r
- imageViewTop = new UIImageView();\r
- imageViewBottom = new UIImageView();\r
- if (imageViewTop == nullptr || imageViewBottom == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[InsertTopAndBottomRateImage] new imageViewTop or imageViewBottom fail");\r
- return;\r
- }\r
- imageViewTop->SetPosition(TOP_IMAGE_X, TOP_IMAGE_Y);\r
- imageViewTop->SetWidth(TOP_IMAGE_WIDTH);\r
- imageViewTop->SetHeight(TOP_IMAGE_HEIGHT);\r
- Add(imageViewTop);\r
- imageViewBottom->SetPosition(BOTTOM_IMAGE_X, BOTTOM_IMAGE_Y);\r
- imageViewBottom->SetWidth(BOTTOM_IMAGE_WIDTH);\r
- imageViewBottom->SetHeight(BOTTOM_IMAGE_HEIGHT);\r
- Add(imageViewBottom);\r
-}\r
-\r
-void HeartRateView::UpdataTopAndBottomRate(void)\r
-{\r
- if (chart == nullptr) {\r
- return;\r
- }\r
- if (dataTopAndbottom != nullptr) {\r
- chart->DeleteDataSerial(dataTopAndbottom);\r
- delete dataTopAndbottom;\r
- dataTopAndbottom = nullptr;\r
- }\r
- dataTopAndbottom = new UIChartDataSerial();\r
- if (dataTopAndbottom == nullptr) {\r
- return;\r
- }\r
- if (dataNume != 1) {\r
- dataTopAndbottom->SetMaxDataCount(dataNume); // number of data points\r
- dataTopAndbottom->AddPoints(rateDataTmp, dataNume); // number of data points\r
- } else {\r
- Point tmp[NUM_2];\r
- tmp[0].x = tmp[1].x = rateDataTmp[0].x;\r
- tmp[0].y = tmp[1].y = rateDataTmp[0].y;\r
- dataTopAndbottom->SetMaxDataCount(NUM_2); // number of data points\r
- dataTopAndbottom->AddPoints(tmp, NUM_2); // number of data points\r
- }\r
- dataTopAndbottom->SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0)); // 设置透明\r
- chart->AddDataSerial(dataTopAndbottom);\r
- chart->Invalidate();\r
-\r
- UIChartDataSerial::PointStyle pointStyle;\r
- // 最低心跳\r
- dataTopAndbottom->EnableBottomPoint(true);\r
- pointStyle.radius = BOTTOM_RADIUS; // Inner radius\r
- pointStyle.fillColor = Color::Gray();\r
- pointStyle.strokeWidth = BOTTOM_STROKE_WIDTH; // border width\r
- pointStyle.strokeColor = Color::Black();\r
- dataTopAndbottom->SetBottomPointStyle(pointStyle);\r
- chart->Invalidate();\r
-\r
- uint16_t bottom = dataTopAndbottom->GetValleyData() * ACT_IMAGE_COOR_VALUE / ACT_IMAGE_COOR_PIXELS;\r
- // 最高心跳\r
- dataTopAndbottom->EnableTopPoint(true);\r
- pointStyle.fillColor = Color::Red();\r
- pointStyle.radius = TOP_RADIUS; // Inner radius\r
- pointStyle.strokeColor = Color::Black();\r
- pointStyle.strokeWidth = TOP_STROKE_WIDTH; // border width\r
- dataTopAndbottom->SetTopPointStyle(pointStyle);\r
- chart->Invalidate();\r
-\r
- uint16_t top = dataTopAndbottom->GetPeakData() * ACT_IMAGE_COOR_VALUE / ACT_IMAGE_COOR_PIXELS;\r
- if (top <= HEART_RATE_LIMIT_UPPER) {\r
- maxRate = (maxRate >= top) ? maxRate : top;\r
- }\r
- if (bottom != 0) {\r
- minRate = (minRate <= bottom) ? minRate : bottom;\r
- }\r
-}\r
-\r
-void HeartRateView::ElectrocardiogramOnePoint(Point *rateData, uint16_t index)\r
-{\r
- Point tmp[NUM_2];\r
-\r
- if (rateData == nullptr || chart == nullptr || index >= HEART_AVE_NUM || serialIndex >= HEART_AVE_NUM) {\r
- return;\r
- }\r
-\r
- tmp[0].x = tmp[1].x = rateData[index].x;\r
- tmp[0].y = tmp[1].y = rateData[index].y;\r
-\r
- dataSerial[serialIndex] = new UIChartDataSerial();\r
- if (dataSerial[serialIndex] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[ElectrocardiogramOnePoint] new dataSerial[%d] fail", serialIndex);\r
- serialIndex++;\r
- return;\r
- }\r
-\r
- dataSerial[serialIndex]->SetMaxDataCount(HEART_AVE_NUM); // 设置最大显示的像素点\r
- dataSerial[serialIndex]->AddPoints(tmp, NUM_2);\r
- dataSerial[serialIndex]->SetLineColor(Color::Red());\r
- dataSerial[serialIndex]->SetFillColor(Color::Red());\r
- dataSerial[serialIndex]->EnableGradient(true);\r
-\r
- chart->AddDataSerial(dataSerial[serialIndex]);\r
- chart->Invalidate();\r
- serialIndex++;\r
-}\r
-\r
-void HeartRateView::ElectrocardiogramMultiPoint(Point *rateData, uint16_t rateDataNume)\r
-{\r
- uint16_t i = 0;\r
- uint16_t j = 0;\r
- uint16_t tmp = 1;\r
- if (rateData == nullptr || chart == nullptr || rateDataNume > HEART_AVE_NUM) {\r
- return;\r
- }\r
-\r
- while (i < rateDataNume) {\r
- while ((j + 1 < rateDataNume) && (rateData[j + 1].x - rateData[j].x <= NUM_4)) { // 15分钟对应的秒数\r
- tmp++;\r
- j++;\r
- }\r
- if (tmp == 1) {\r
- ElectrocardiogramOnePoint(rateData, i);\r
- } else {\r
- if (serialIndex >= HEART_AVE_NUM) {\r
- return;\r
- }\r
- if (serialIndex > 0 && dataSerial[serialIndex - 1] != nullptr && i == 0) {\r
- dataSerial[serialIndex - 1]->AddPoints(rateData + 1, tmp - 1); // number of data points\r
- chart->Invalidate();\r
- } else {\r
- dataSerial[serialIndex] = new UIChartDataSerial();\r
- if (dataSerial[serialIndex] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[ElectrocardiogramMultiPoint] new dataSerial[%d] fail", serialIndex);\r
- serialIndex++;\r
- return;\r
- }\r
-\r
- dataSerial[serialIndex]->SetMaxDataCount(HEART_AVE_NUM); // number of data points\r
- dataSerial[serialIndex]->AddPoints(rateData + i, tmp); // number of data points\r
- dataSerial[serialIndex]->SetLineColor(Color::Red());\r
- dataSerial[serialIndex]->SetFillColor(Color::Red());\r
- dataSerial[serialIndex]->EnableGradient(true);\r
-\r
- chart->AddDataSerial(dataSerial[serialIndex]);\r
- chart->Invalidate();\r
- serialIndex++;\r
- }\r
- }\r
- i += tmp;\r
- j = i;\r
- tmp = 1;\r
- }\r
-}\r
-\r
-void HeartRateView::HeartRateElectrocardiogram(void)\r
-{\r
- if (dataNume == 0) {\r
- return;\r
- }\r
- serialIndex = 0;\r
- if (dataNume != 1) {\r
- ElectrocardiogramMultiPoint(rateDataTmp, dataNume); // 多个点\r
- } else {\r
- ElectrocardiogramOnePoint(rateDataTmp, 0); // 一个点\r
- }\r
- currIndex = dataNume;\r
-}\r
-\r
-void HeartRateView::HeartbeatImageAnimator()\r
-{\r
- imageAnimator = new UIImageAnimatorView();\r
- if (imageAnimator == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartbeatImageAnimator] new imageAnimator fail");\r
- return;\r
- }\r
- imageAnimator->SetPosition(HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT);\r
- imageAnimator->SetImageAnimatorSrc(g_heartBeatImageInfo, HEARTBEAT_IMAGE_NUM, HEARTBEAT_DELAY);\r
- imageAnimator->SetRepeat(true);\r
- Add(imageAnimator);\r
- imageAnimator->Start();\r
-}\r
-\r
-void HeartRateView::HeartbeatImageAnimatorStart(void)\r
-{\r
- if (imageAnimator != nullptr) {\r
- imageAnimator->Start();\r
- }\r
-}\r
-\r
-void HeartRateView::HeartbeatImageAnimatorStop(void)\r
-{\r
- if (imageAnimator != nullptr) {\r
- imageAnimator->Stop();\r
- }\r
-}\r
-\r
-bool HeartRateView::InitView(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView::InitView");\r
- HeartRateDataProc();\r
- HeartRateLabelDisplay();\r
- HeartbeatImageAnimator();\r
- HeartRateCoordinate();\r
- InsertTopAndBottomRateImage();\r
- HeartRateElectrocardiogram();\r
- UpdataTopAndBottomRate();\r
- HeartbeatImageAnimatorStop();\r
- InitRefreshInterface();\r
- return true;\r
-}\r
-\r
-void HeartRateView::PreLoad(void)\r
-{\r
- if (!viewiInitStatus) {\r
- if (InitView()) {\r
- viewiInitStatus = true;\r
- }\r
- }\r
-\r
- if (!resLoadStatus) {\r
- ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewTop, HEART_HEARTRATE_TOP);\r
- ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewBottom, HEART_HEARTRATE_BOTTOM);\r
- ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewCoordinate, HEART_HEARTRATECOOR);\r
- resLoadStatus = true;\r
- }\r
-}\r
-\r
-void HeartRateView::UnLoad(void)\r
-{\r
- if (resLoadStatus) {\r
- ImageInfo* img = nullptr;\r
- imageViewTop->SetSrc(img);\r
- imageViewBottom->SetSrc(img);\r
- imageViewCoordinate->SetSrc(img);\r
- ImageCacheManager::GetInstance().UnloadAllInMultiRes(HEART_IAMGES);\r
- resLoadStatus = false;\r
- }\r
-}\r
-\r
-void HeartRateView::InitRefreshInterface(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView::InitRefreshInterface");\r
-\r
- Point *rateData = HeartModel::GetInstance()->GetAveHeartRate();\r
- uint16_t len = HeartModel::GetInstance()->GetAveHeartRateCount();\r
- SetHeartRateData(rateData, sizeof(Point) * len);\r
- uint16_t maxHeartRate = HeartModel::GetInstance()->GetHeartRateMax();\r
- uint16_t minHeartRate = HeartModel::GetInstance()->GetHeartRateMin();\r
- RefreshElectrocardiogram();\r
- if (maxHeartRate > 0 && maxHeartRate < HEART_RATE_LIMIT_UPPER) {\r
- RefreshHeartRateMax(HeartModel::GetInstance()->GetHeartRateMax());\r
- }\r
- if (minHeartRate > 0 && minHeartRate < HEART_RATE_LIMIT_UPPER) {\r
- RefreshHeartRateMin(HeartModel::GetInstance()->GetHeartRateMin());\r
- }\r
-}\r
-\r
-// 刷新心率曲线\r
-void HeartRateView::RefreshElectrocardiogram(void)\r
-{\r
- int32_t ret = HeartRateDataProc();\r
- if (ret != OHOS_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[RefreshElectrocardiogram()] fail");\r
- return;\r
- }\r
- Point *rate = rateDataTmp;\r
-\r
- if (chart == nullptr) {\r
- return;\r
- }\r
-\r
- if (currIndex >= HEART_AVE_NUM) {\r
- currIndex = HEART_AVE_NUM;\r
- }\r
- if (dataNume > currIndex) {\r
- uint16_t tmp = dataNume - currIndex;\r
- if (currIndex > 0) {\r
- rate += (currIndex - 1);\r
- tmp += 1;\r
- }\r
- ElectrocardiogramMultiPoint(rate, tmp);\r
- currIndex = dataNume;\r
- } else if (dataNume == currIndex) { // 当前点平均心率刷新\r
- if (serialIndex > 0 && serialIndex <= HEART_AVE_NUM && dataSerial[serialIndex - 1] != nullptr) {\r
- Point modPoint;\r
- modPoint.x = rate[currIndex - 1].x;\r
- modPoint.y = rate[currIndex - 1].y;\r
-\r
- uint16_t count = dataSerial[serialIndex - 1]->GetDataCount();\r
- dataSerial[serialIndex - 1]->ModifyPoint(count - 1, modPoint);\r
- chart->Invalidate();\r
- }\r
- } else {\r
- return;\r
- }\r
- UpdataTopAndBottomRate(); // 最高、最低心率\r
-}\r
-\r
-// 清空心率曲线\r
-void HeartRateView::ClearElectrocardiogram(void)\r
-{\r
- int32_t i;\r
- dataNume = 0;\r
- currIndex = 0;\r
- maxRate = 0;\r
- minRate = HEART_RATE_LIMIT_UPPER;\r
- InitHeartRateData();\r
-\r
- if (chart == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "chart == nullptr");\r
- return;\r
- }\r
-\r
- if (ratePerSec != nullptr && topRate != nullptr && bottomRate != nullptr && restRate != nullptr) {\r
- ratePerSec->SetText("--");\r
- topRate->SetText("--");\r
- bottomRate->SetText("--");\r
- restRate->SetText("--");\r
- }\r
-\r
- chart->DeleteDataSerial(dataTopAndbottom);\r
- delete dataTopAndbottom;\r
- dataTopAndbottom = nullptr;\r
- for (i = 0; i < serialIndex; i++) {\r
- delete dataSerial[i];\r
- dataSerial[i] = nullptr;\r
- }\r
- chart->ClearDataSerial();\r
-\r
- serialIndex = 0;\r
- chart->Invalidate();\r
-}\r
-\r
-// 刷新每秒上报的心率\r
-void HeartRateView::RefreshHeartRatePerSec(uint16_t value)\r
-{\r
- char heartRate[NUM_4] = "--";\r
- int32_t ret = 0;\r
-\r
- if (ratePerSec == nullptr) {\r
- return;\r
- }\r
-\r
- if (value == 0) {\r
- ratePerSec->SetText("--");\r
- HeartbeatImageAnimatorStop();\r
- return;\r
- }\r
- HeartbeatImageAnimatorStart();\r
- if (value > NUM_99) {\r
- ret = sprintf_s(heartRate, sizeof(heartRate), "%u", value);\r
- } else {\r
- ret = sprintf_s(heartRate, sizeof(heartRate), " %u", value);\r
- }\r
- if (ret > EOK) {\r
- ratePerSec->SetText(heartRate);\r
- }\r
-}\r
-\r
-// 刷新最大心率\r
-void HeartRateView::RefreshHeartRateMax(uint16_t max)\r
-{\r
- char top[NUM_4] = "--";\r
- int32_t ret = 0;\r
- maxRate = (maxRate >= max) ? maxRate : max;\r
- if (topRate == nullptr) {\r
- return;\r
- }\r
- if (maxRate <= HEART_RATE_LIMIT_LOWER) {\r
- topRate->SetText("--");\r
- return;\r
- }\r
- ret = sprintf_s(top, sizeof(top), "%u", maxRate);\r
- if (ret > EOK) {\r
- topRate->SetText(top);\r
- }\r
-}\r
-\r
-// 刷新最小心率\r
-void HeartRateView::RefreshHeartRateMin(uint16_t min)\r
-{\r
- char bottom[NUM_4] = "--";\r
- int32_t ret = 0;\r
-\r
- minRate = (minRate <= min) ? minRate : min;\r
- if (bottomRate == nullptr) {\r
- return;\r
- }\r
- if (minRate >= HEART_RATE_LIMIT_UPPER) {\r
- bottomRate->SetText("--");\r
- return;\r
- }\r
- ret = sprintf_s(bottom, sizeof(bottom), "%u", minRate);\r
- if (ret > EOK) {\r
- bottomRate->SetText(bottom);\r
- }\r
-}\r
-\r
-// 刷新静息心率\r
-void HeartRateView::RefreshRestHeartRate(uint16_t value)\r
-{\r
- char heartRate[NUM_4] = "--";\r
- int32_t ret = 0;\r
-\r
- if (restRate == nullptr) {\r
- return;\r
- }\r
-\r
- if (value == 0 || value == (uint16_t)0xFFFF) { // 无效值\r
- restRate->SetText("--");\r
- } else {\r
- if (value > NUM_99) {\r
- ret = sprintf_s(heartRate, sizeof(heartRate), "%u", value);\r
- } else {\r
- ret = sprintf_s(heartRate, sizeof(heartRate), " %u", value);\r
- }\r
-\r
- if (ret > EOK) {\r
- restRate->SetText(heartRate);\r
- }\r
- }\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardAdapter.h
- * Author:
- * Create: 2021-09-18
- */
-
-#ifndef ADD_CARD_ADAPTER_H
-#define ADD_CARD_ADAPTER_H
-
-#include <list>
-#include <string>
-#include "components/ui_list.h"
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/abstract_adapter.h"
-#include "UiConfig.h"
-#include "wearable_log.h"
-#include "add_card/AddCardItem.h"
-
-namespace OHOS {
-class AddCardAdapter : public AbstractAdapter {
-public:
- explicit AddCardAdapter();
- ~AddCardAdapter() override;
-
- uint16 GetCount(void) override;
-
- UIView *GetView(UIView *inView, int16 index) override;
-
- void AddListItem(const AddCardInfo &item);
-
- void SetItemClickListener(UIView::OnClickListener *itemClickListener)
- {
- itemClickListener_ = itemClickListener;
- }
-
- void ClearItem(void);
-
-private:
- std::list<AddCardInfo> listData_;
- UIView::OnClickListener *itemClickListener_;
-};
-}
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: AddCardItem.h\r
- * Author:\r
- * Create: 2021-11-23\r
- */\r
-\r
-#ifndef ADD_CARD_ITEM_H\r
-#define ADD_CARD_ITEM_H\r
-\r
-#include <cstdint>\r
-#include <map>\r
-#include "components/ui_view.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-typedef struct {\r
- CardId id;\r
- bool addFlag;\r
- const char *cardImg;\r
-} AddCardInfo;\r
-\r
-class AddCardItem : public UIViewGroup {\r
-public:\r
- AddCardItem();\r
- ~AddCardItem() override;\r
- void SetItemInfo(const AddCardInfo &cardInfo);\r
- void SetOnClickListener(OnClickListener *onClickListener);\r
- void UpdateItemInfo(bool addFlag);\r
-private:\r
- void SetUpChild();\r
- UIImageView cardImg_;\r
- UILabelButton cardLabel_;\r
- AddCardInfo cardInfo_;\r
-};\r
-\r
-}\r
-\r
-#endif // ADD_CARD_ITEM_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardModel.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef ADD_CARD_MODEL_H
-#define ADD_CARD_MODEL_H
-
-#include <cstdint>
-#include <map>
-#include "AppViewIDs.h"
-#include "UiConfig.h"
-#include "add_card/AddCardPresenter.h"
-#include "main/MainModel.h"
-
-namespace OHOS {
- class AddCardModel {
- public:
- static AddCardModel &GetInstance(void);
- void SetSelectedCardIndex(uint8_t cardIndex);
- uint8_t GetSelectedCardIndex(void) const;
- void AddCardSetting(void);
- private:
- AddCardModel();
- AddCardModel(const AddCardModel &);
- AddCardModel &operator=(const AddCardModel &);
- virtual ~AddCardModel();
- uint8_t selectedCardIndex{0};
- };
-}
-
-#endif // ADD_CARD_MODEL_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardPresenter.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef ADD_CARD_PRESENTER_H
-#define ADD_CARD_PRESENTER_H
-
-#include "Presenter.h"
-#include "components/ui_list.h"
-#include "components/ui_view.h"
-#include "main/ModelListenerSample.h"
-
-#define TOAST_KEEP_TIME 1000
-
-namespace OHOS {
-static const char *ADD_CARD_ADD = "addcardadd";
-
-class AddCardView;
-class AddCardModel;
-class AddCardPresenter : public Presenter<AddCardView>, public ModelListenerSample,
- public UIView::OnClickListener, public UIView::OnDragListener,
- public ListScrollListener {
-public:
- AddCardPresenter();
- ~AddCardPresenter() override;
-
- void OnTickEvent() override;
- void Notify() override {}
- bool OnClick(UIView &view, const ClickEvent &event) override;
- void OnScrollStart(int16_t index, UIView *view) override;
- void OnScrollEnd(int16_t index, UIView *view) override;
- void OnItemSelected(int16_t index, UIView* view) override;
- bool OnDrag(UIView& view, const DragEvent& event) override;
-private:
- void ResetTickTimer(void);
- AddCardModel *model{nullptr};
- uint64_t startTime{0};
- bool cardCountEvent{false};
-};
-}
-
-#endif // ADD_CARD_PRESENTER_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AddCardView.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef ADD_CARD_VIEW_H
-#define ADD_CARD_VIEW_H
-
-#include "View.h"
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "components/ui_toggle_button.h"
-#include "ChangeSliceListener.h"
-#include "UiConfig.h"
-#include "add_card/AddCardAdapter.h"
-#include "add_card/AddCardModel.h"
-
-namespace OHOS {
-class AddCardPresenter;
-
-class AddCardView : public View<AddCardPresenter> {
-public:
- AddCardView();
- ~AddCardView() override;
-
- static AddCardView *GetInstance()
- {
- static AddCardView instance;
- return &instance;
- }
-
- void OnStart() override;
- void RefreshCardList(void);
- void ExceedsCardCountEvent(bool isVisible);
-private:
- void SetUpListInfo(void);
- void SetUpListView(void);
- void SetUpToast(void);
- UIList contentList_;
- UILabel toastLabel_;
- AddCardAdapter *addCardAdapter_{nullptr};
-};
-}
-#endif // ADD_CARD_VIEW_H
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodBandoff view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-\r
-#ifndef BLOOD_BANDOFF_VIEW_H\r
-#define BLOOD_BANDOFF_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_animator.h"\r
-#include "View.h"\r
-#include "ohos_types.h"\r
-\r
-namespace OHOS {\r
-class BloodBandoffView {\r
-public:\r
- BloodBandoffView();\r
- virtual ~BloodBandoffView();\r
-\r
- UIViewGroup *CreateUIViewGroup();\r
- static BloodBandoffView *GetInstance(void);\r
-\r
- UIViewGroup *GetBandoffViewGroup();\r
- UIImageAnimatorView *GetImageAnimator();\r
-private:\r
- UILabel *label;\r
- UIViewGroup *group;\r
- UIImageView *imageView;\r
- UIImageAnimatorView *imageAnimator;\r
-};\r
-}\r
-\r
-\r
-#endif // 血氧跳转界面
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodOxygen view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-\r
-#ifndef BLOOD_OXYGEN_MODEL_H\r
-#define BLOOD_OXYGEN_MODEL_H\r
-\r
-#include <cstdio>\r
-#include "gfx_utils/list.h"\r
-\r
-namespace OHOS {\r
-class BloodOxygenModel {\r
-public:\r
- ~BloodOxygenModel(){};\r
- static BloodOxygenModel *GetInstance(void);\r
- bool GetBloodOxygenViewStatus(void);\r
- bool GetBloodBandoffViewStatus(void);\r
- void SetBloodOxygenViewStatus(bool oxygenViewStatus);\r
- void SetBloodBandoffViewStatus(bool bandoffViewStatus);\r
-\r
-private:\r
- BloodOxygenModel();\r
- bool OxygenView;\r
- bool BandoffView;\r
-};\r
-}\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodOxygen view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-\r
-#ifndef BLOOD_OXYGEN_PRESENTER_H\r
-#define BLOOD_OXYGEN_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "main/ModelListenerSample.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "ohos_types.h"\r
-\r
-namespace OHOS {\r
-class BloodOxygenView;\r
-class BloodOxygenPresenter : public Presenter<BloodOxygenView>,\r
- public UIView::OnClickListener,\r
- public ModelListenerSample,\r
- public UIView::OnDragListener {\r
-public:\r
- BloodOxygenPresenter();\r
- ~BloodOxygenPresenter() override;\r
- void OnStart() override;\r
- void OnStop() override;\r
- void Notify() override;\r
- static BloodOxygenPresenter *GetInstance(void);\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
-\r
-private:\r
- bool CheckPointersValue(void);\r
- void ReturnInterface(void);\r
- void ProgressNotify(void);\r
- int count;\r
-};\r
-}\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bloodOxygen view\r
- * Author:\r
- * Create: 2021-08-01\r
- */\r
-\r
-#ifndef BLOOD_OXYGEN_VIEW_H\r
-#define BLOOD_OXYGEN_VIEW_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "components/ui_view_group.h"\r
-#include "bloodoxygen/BloodOxygenPresenter.h"\r
-#include "bloodoxygen/BloodBandoffView.h"\r
-\r
-namespace OHOS {\r
-class BloodOxygenView : public View<BloodOxygenPresenter> {\r
-public:\r
- BloodOxygenView();\r
- ~BloodOxygenView() override;\r
-\r
- void OnStart() override;\r
-\r
- static BloodOxygenView *GetInstance(void);\r
-\r
- UILabel *GetPercent();\r
- UIViewGroup *GetBloodOxygenGroup();\r
- UILabelButton *GetTestButton();\r
- UICircleProgress *GetCircleProgress();\r
-private:\r
- bool InitImageDisplay();\r
- bool SetOnDragListener();\r
- UICircleProgress *CreateAndSetUICircleProgress();\r
- UILabelButton *CreateAndSetUIButton(const char *title);\r
- UIView *CreateAndSetUIView(int16 x, int16 y) const;\r
-\r
- BloodBandoffView *bloodbandoff{nullptr};\r
- UIImageView *imageViewMain;\r
- UIImageView *imageViewProgress;\r
- UIImageAnimatorView *imageAnimator;\r
-\r
- UILabel *percent;\r
- UIViewGroup *group;\r
- UILabelButton *testButton;\r
- UICircleProgress *circleProgress;\r
-};\r
-}\r
-\r
-\r
-#endif // 血氧主界面
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth Case List Adapter
- * Author:
- * Create: 2021-07-26
- */
-#ifndef BLUETOOTH_CASE_LIST_ADAPTER_H
-#define BLUETOOTH_CASE_LIST_ADAPTER_H
-
-#include <string>
-#include "components/abstract_adapter.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "player/PlayersPresenter.h"
-#include "bluetooth/BluetoothItemView.h"
-
-namespace OHOS {
-class BluetoothCaseListAdapter : public AbstractAdapter {
-public:
- BluetoothCaseListAdapter() {}
- ~BluetoothCaseListAdapter();
- UIView *GetView(UIView *inView, int16_t index) override;
- uint16_t GetCount() override;
-private:
- char addrTmp[20]; // 20:å—符长度
- BluetoothItemView *item{nullptr};
- UIView::OnClickListener *listener{nullptr};
- void ClickAnimation(BluetoothCaseInfo &itemData, BluetoothItemView *itemView);
-};
-} // namespace OHOS
-#endif // BLUETOOTH_CASE_LIST_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth CaseList Adapter
- * Author:
- * Create: 2021-07-26
- */
-#ifndef BLUETOOTH_DEVICE_CASE_LIST_ADAPTER_H
-#define BLUETOOTH_DEVICE_CASE_LIST_ADAPTER_H
-
-#include <string>
-#include "components/abstract_adapter.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "bluetooth/BluetoothItemView.h"
-
-namespace OHOS {
-class BluetoothDeviceCaseListAdapter : public AbstractAdapter {
-public:
- BluetoothDeviceCaseListAdapter() {}
- ~BluetoothDeviceCaseListAdapter();
- UIView *GetView(UIView *inView, int16_t index) override;
- uint16_t GetCount() override;
-
-private:
- char addrTmp[20]; // 20:å—符长度
- BluetoothItemView *item{nullptr};
- UIView::OnClickListener *listener{nullptr};
-};
-} // namespace OHOS
-#endif // BLUETOOTH_DEVICE_CASE_LIST_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothDeviceListView view 蓝牙耳机设备列表界面\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef BLUETOOTH_DEVICE_LIST_VIEW_H\r
-#define BLUETOOTH_DEVICE_LIST_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_list.h"\r
-#include "bluetooth/BluetoothDeviceCaseListAdapter.h"\r
-\r
-namespace OHOS {\r
-class BluetoothDeviceCaseListAdapter;\r
-class BluetoothDeviceListView {\r
-public:\r
- BluetoothDeviceListView();\r
- ~BluetoothDeviceListView();\r
- static BluetoothDeviceListView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- UIViewGroup *GetGroup(void);\r
- UIList *GetDeviceUIList(void);\r
- void RefreshText(void);\r
-private:\r
- void InitList(void);\r
- void InItEmptyLabel();\r
- void InitNewEquipmentButton();\r
- UIViewGroup *group{nullptr};\r
- UIList *list{nullptr};\r
- UILabel *titleLabel{nullptr};\r
- UILabel *emptyLabel{nullptr};\r
- BluetoothDeviceCaseListAdapter *adapterText{nullptr};\r
- UILabelButton *newEquipmentButton{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // BLUETOOTH_DEVICE_LIST_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothEarListView view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef BLUETOOTH_EAR_LIST_VIEW_H\r
-#define BLUETOOTH_EAR_LIST_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_list.h"\r
-#include "bluetooth/BluetoothCaseListAdapter.h"\r
-\r
-namespace OHOS {\r
-class BluetoothCaseListAdapter;\r
-class BluetoothEarListView {\r
-public:\r
- BluetoothEarListView();\r
- ~BluetoothEarListView();\r
- static BluetoothEarListView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- UIViewGroup *GetGroup(void);\r
- UIList *GetScanUIList(void);\r
- void SetTitleLabel(const char *text);\r
- void SetNewEquipmentButtonAdd(void);\r
- void SetNewEquipmentButtonRemove(void);\r
- void SetCancelConnedRequestButtonAdd(void);\r
- void SetCancelConnedRequestButtonRemove(void);\r
-private:\r
- void InitList(void);\r
- void InitButten(UILabelButton **button, const char *text, const char* id);\r
- UIViewGroup *group{nullptr};\r
- UIList *list{nullptr};\r
- UILabel *titleLabel{nullptr};\r
- BluetoothCaseListAdapter *adapterText{nullptr};\r
- UILabelButton *rescanButton{nullptr};\r
- UILabelButton *cancelConnedRequestButton{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // BLUETOOTH_EAR_LIST_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothEarPhone view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef BLUETOOTH_EAR_PHONE_VIEW_H\r
-#define BLUETOOTH_EAR_PHONE_VIEW_H\r
-\r
-#include <iostream>\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "ohos_timer.h"\r
-#include "graphic_timer.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#define BLUETOOTH_SEARCH_IMAGE_NUM 8\r
-\r
-namespace OHOS {\r
-class BluetoothEarPhoneView {\r
-public:\r
- BluetoothEarPhoneView();\r
- ~BluetoothEarPhoneView();\r
- static BluetoothEarPhoneView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- void BtEnable(void);\r
- void StopBtDiscovery(void);\r
- void BtAnimatorStart(void);\r
- void BtAnimatorStop(void);\r
- void setScanStatus(bool value);\r
- bool getScanStatus(void);\r
-private:\r
- ImageAnimatorInfo searchImageInfo[BLUETOOTH_SEARCH_IMAGE_NUM];\r
- UIViewGroup *group{nullptr};\r
- UILabel *titleLabel{nullptr};\r
- UIImageAnimatorView *imageAnimator{nullptr};\r
- bool scanStart{0};\r
- void BtScanImageAnimator();\r
-};\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-void ScanTimerCallback(int data);\r
-void CancelBrScanHandle(void);\r
-void EndScanHandle(void);\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-} // namespace OHOS\r
-#endif // BLUETOOTH_EAR_PHONE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag. 2022. All rights reserved.\r
- * Description: BluetoothHeadsetEvent.\r
- */\r
-#ifndef BLUETOOTH_HEADSET_EVENT_H\r
-#define BLUETOOTH_HEADSET_EVENT_H\r
-\r
-#include "bts_def.h"\r
-#include "bts_br_gap.h"\r
-#include "td_type.h"\r
-#include "bt_audio.h"\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-enum {\r
- AVRCP_SRV_PRESS_VALUE,\r
- AVRCP_SRV_RELEASED_VALUE,\r
- AVRCP_SRV_INIT_VALUE\r
-};\r
-\r
-typedef struct {\r
- td_pvoid stream_hdl;\r
- uint8_t loc_volume;\r
- uint8_t play_stat;\r
- uint8_t dir_forward;\r
- uint8_t avrcp_button_flag;\r
- bd_addr_t bd_addr;\r
- uint8_t reg_cap_auto;\r
- uint8_t resrv;\r
- profile_connect_state_t avrcp_srv_conn_stat;\r
-} BtAvrcpTgInf;\r
-\r
-void UsingPressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue);\r
-void MediaStatusCallback(bt_avrcp_tg_evt_status_param *eventStatusParam);\r
-void PressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue);\r
-void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);\r
-void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);\r
-void InitBtHeadsetEvent(void);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif // BLUETOOTH_HEADSET_FUNCTION_BUTTONS_HS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothItem view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-\r
-#ifndef BLUETOOTH_ITEM_VIEW_H\r
-#define BLUETOOTH_ITEM_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "UiConfig.h"\r
-#define BLUETOOTH_CONNECT_IMAGE_NUM 8\r
-\r
-namespace OHOS {\r
-class BluetoothItemView : public UIViewGroup {\r
-public:\r
- explicit BluetoothItemView();\r
- ~BluetoothItemView() override;\r
- void SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList);\r
- BluetoothCaseInfo *GetItemInfo(void);\r
- void SetConnectionstatus(const BluetoothCaseInfo& infoData);\r
- void SetUpChild();\r
- void ConnectAnimatorStart(void);\r
- void ConnectAnimatorStop(void);\r
- bool IsConnectAnimator(void);\r
-private:\r
- ImageAnimatorInfo connectImageInfo[BLUETOOTH_CONNECT_IMAGE_NUM];\r
- UIImageView image;\r
- UIButton button;\r
- UILabel connectStateLabel;\r
- UILabel namelabel;\r
- UIImageAnimatorView connectionAnimator;\r
- BluetoothCaseInfo itemInfo_{};\r
- void BtConnectImageAnimator();\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothModel view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-\r
-#ifndef BLUETOOTH_MODEL_H\r
-#define BLUETOOTH_MODEL_H\r
-\r
-#include <list>\r
-#include <cstdio>\r
-#include "gfx_utils/list.h"\r
-\r
-#include "bts_def.h"\r
-#include "bts_br_gap.h"\r
-\r
-namespace OHOS {\r
-constexpr uint16_t BLUETOOTH_CONN_HANDLE = 64;\r
-constexpr uint16_t BLUETOOTH_INTERVAL_TOMAX_MIN = 12;\r
-constexpr uint16_t BLUETOOTH_INTERVAL_TOMAX_MAX = 12;\r
-constexpr uint16_t BLUETOOTH_INTERVAL_TODEFAULT_MIN = 24;\r
-constexpr uint16_t BLUETOOTH_INTERVAL_TODEFAULT_MAX = 48;\r
-constexpr uint16_t BLUETOOTH_LATENCY = 0;\r
-constexpr uint16_t BLUETOOTH_TIMEOUT_MUTIPLIER = 500;\r
-\r
-typedef enum : uint16_t {\r
- CALLERSETTING,\r
- CALLERPLAYERS,\r
-} CallerFactor;\r
-\r
-typedef struct {\r
- unsigned char deviceName[BD_NAME_LEN]; /* Name of the device record, must be in UTF-8 */\r
- unsigned char addr[BD_ADDR_LEN];\r
- int16_t index;\r
- int16_t connIndex;\r
- int16_t temp;\r
-} BluetoothCaseInfo;\r
-\r
-class BluetoothItemView;\r
-class BluetoothModel {\r
-public:\r
- ~BluetoothModel(){};\r
- static BluetoothModel *GetInstance(void);\r
- void Init();\r
- int GetBluetoothCalleridStatus(void);\r
- void SetBluetoothCalleridStatus(int16_t value);\r
- // ɨÃèÉ豸¶ÓÁгõʼ»¯\r
- std::list<BluetoothCaseInfo>& GetCase();\r
- void AddCase(BluetoothCaseInfo caseInfo);\r
- void SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi);\r
- void SortScansCaseRssi();\r
- void SetCaseListClear();\r
- bool CheckExistScanList(BluetoothCaseInfo caseInfo); // È¥ÖØ²Ù×÷\r
- void ResetScanDevicesCase(const BluetoothCaseInfo& caseInfo);\r
- // ÒÑÅä¶ÔÉ豸¶ÓÁгõʼ»¯\r
- void SetConnedDevicesListClear();\r
- void AddConnedDevicesCase(BluetoothCaseInfo caseInfo);\r
- bool CheckExistConnedList(BluetoothCaseInfo caseInfo);\r
- List<BluetoothCaseInfo>& GetConnedDevicesCase();\r
- void SetTempMacValue(BluetoothCaseInfo *caseInfo);\r
- BluetoothCaseInfo *GetTempMacValue(void);\r
- void SetLastConnedAddr(const bd_addr_t *addr);\r
- bd_addr_t *GetLastConnedAddr(void);\r
- void SetTagReconnectJump(bool tag);\r
- bool GetTagReconnectJump(void);\r
- void SetCurView(int16_t viewNum);\r
- int GetCurView(void);\r
- bool GetAclConnected(void);\r
- void SetTagConnectView(bool tag);\r
- bool IsTagConnectView(void);\r
- void SetTagDisconnectView(bool tag);\r
- bool IsTagDisconnectView(void);\r
- void SetTagConnectNew(bool tag);\r
- bool IsTagConnectNew(void);\r
- void SetTagReturnToDeviceListView(bool tag);\r
- bool IsTagReturnToDeviceListView(void);\r
- void SetTagScanDeviceClicked(bool tag);\r
- bool IsTagScanDeviceClicked(void);\r
- void SetBtStatus(void);\r
- BluetoothItemView *GetConnectionView(void);\r
- void SetConnectionView(BluetoothItemView *item);\r
- bool FindNameFromList(BluetoothCaseInfo *caseInfo);\r
- bool GetBluetoothAclState(void);\r
- void BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr);\r
- void BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned int reason, const bd_addr_t &bdAddr);\r
- bool GetAdvStartState(void);\r
- void SetAdvStartState(bool state);\r
- int ConnectRemoteDevice(const bd_addr_t *addr);\r
- bool ConnectRemoteCheck(const bd_addr_t *addr);\r
- char* getWatchName(void);\r
- void ChangeBleConnectToMax();\r
- void ChangeBleConnectToDefault();\r
- \r
-private:\r
- BluetoothModel();\r
- int16_t callerid{0};\r
- void SetUpListCase();\r
- void SetUpConnedDevicesList();\r
- bool FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo);\r
- void InitBluetoothInfo(void);\r
- bool aclConnected{false};\r
- BluetoothCaseInfo tempMacValue{};\r
- bd_addr_t lastConnedAddr{0};\r
- bd_addr_t remoteConnectAddr{0};\r
- BluetoothItemView *selectItemView{nullptr};\r
- std::list<BluetoothCaseInfo> btScansDevicesList_{};\r
- List<BluetoothCaseInfo> *btConnedDevicesList_{nullptr};\r
- bool tagReconnectJump{0};\r
- int16_t curView{0};\r
- bool tagConnectView{true};\r
- bool tagDisconnectView{true};\r
- bool tagConnectNew{false};\r
- bool tagReturnToDeviceListView{false};\r
- bool tagScanDeviceClicked{false};\r
- bool advStartState{false};\r
- char watchName[BD_NAME_LEN] = { 0 };\r
-};\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-void BtGapReadRemoteRssiEventCallback(const bd_addr_t *bdAddr, int rssi, int status);\r
-void BtGapDiscoveryResultCallbak(const bd_addr_t *bdAddr);\r
-void BtGapDiscoveryStateChangedCallback(int status);\r
-void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason);\r
-void SetSortCaseRssi(const bd_addr_t *bdAddr, int rssi);\r
-void BtRemoteNameChangedCallback(const bd_addr_t *bdAddr, const unsigned char *deviceName, unsigned char length);\r
-void BtIsAcceptConnOnSafeModeCallback(const bd_addr_t *bd_addr, bool *res);\r
-void BtInitCallBacks(void);\r
-void BtInitCallBacksEx(void);\r
-void BtInitGatts(void);\r
-void BtInitSpp(void);\r
-void BleAdvStart(void);\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-}\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothOptions view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef BLUETOOTH_OPTIONS_VIEW_H\r
-#define BLUETOOTH_OPTIONS_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "bluetooth/BluetoothCaseListAdapter.h"\r
-\r
-namespace OHOS {\r
-class BluetoothOptionsView {\r
-public:\r
- BluetoothOptionsView();\r
- ~BluetoothOptionsView();\r
- static BluetoothOptionsView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- UILabelButton *GetOptionsOneButton(void);\r
- UILabelButton *GetUnpairButton(void);\r
- void SetUnpair(void);\r
- void SetBtconnect(void);\r
- void SetBtDisconnect(void);\r
- void SetCurrentAddr(bd_addr_t addr);\r
- bd_addr_t GetCurrentAddr(void);\r
- void RefreshText(void);\r
-private:\r
- void InItTitleLabel(void);\r
- void InItLabelButton(void);\r
- UILabelButton *optionsOneButton{nullptr};\r
- UILabelButton *unpairButton{nullptr};\r
- UILabel *titleLabel{nullptr};\r
- UILabel *connectStateLabel{nullptr};\r
- UIViewGroup *group{nullptr};\r
- bd_addr_t currentAddr;\r
-};\r
-} // namespace OHOS\r
-#endif // BLUETOOTH_OPTIONS_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: BluetoothPresenter view\r
- * Create: 2021-10-13\r
- */\r
-\r
-#ifndef BLUETOOTH_PRESENTER_H\r
-#define BLUETOOTH_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "bluetooth/MainBluetoothView.h"\r
-#include "components/ui_view.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_view_group.h"\r
-#include "main/VolumeSettingView.h"\r
-#include "main/UiViewId.h"\r
-\r
-namespace OHOS {\r
-enum BluetoothPresenterNum : uint8_t {\r
- BLUETOOTHEARPHONEVIEW = 0,\r
- BLUETOOTHEARLISTVIEW,\r
- BLUETOOTHDEVICELISTVIEW,\r
- BLUETOOTHEOPTIONSVIEW,\r
- BLUETOOTHRECONNECTVIEW,\r
- TIPSSUCCMESSAGEVIEW,\r
- TIPSCONNFAILMESSAGEVIEW,\r
- TIPSFAILMESSAGEVIEW,\r
- BLUETOOTHEVIEW,\r
- BLUETOOTHEVIEW_MAX,\r
- };\r
-\r
-class MainBluetoothView;\r
-class BluetoothPresenter : public Presenter<MainBluetoothView>, public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- BluetoothPresenter();\r
- ~BluetoothPresenter();\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- static BluetoothPresenter *GetInstance();\r
- bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
- void OnStop() override;\r
- void ClickRescanButton(void);\r
- void ClickNewEquipmentButton(void);\r
- void ClickCancelConnedRequestButton(void);\r
- void ClickUnpairButton(void);\r
- void ClickOptionsOneButton(void);\r
- void ClickSuccBackButton(void);\r
- void ClickFailBackButton(void);\r
- void ClickConnfailBackButton(void);\r
-private:\r
- BluetoothModel *bluetoothMode_{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: Bluetooth Reconnect View\r
- * Author:\r
- * Create: 2021-07-26\r
- */\r
-#ifndef BLUETOOTH_RECONNECT_VIEW_H\r
-#define BLUETOOTH_RECONNECT_VIEW_H\r
-\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/abstract_adapter.h"\r
-#include "components/ui_view_group.h"\r
-#include "bts_def.h"\r
-#define BLUETOOTH_RECONNECT_IMAGE_NUM 8\r
-\r
-namespace OHOS {\r
-class BluetoothReconnectView {\r
-public:\r
- BluetoothReconnectView();\r
- ~BluetoothReconnectView();\r
- static BluetoothReconnectView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- void BtReconnectStart(void);\r
- void BtReconnectStop(void);\r
- bd_addr_t GetcurrentBdAddr(void);\r
- void RefreshBluetoothNameLabel();\r
-private:\r
- ImageAnimatorInfo reconnetImageInfo[BLUETOOTH_RECONNECT_IMAGE_NUM];\r
- void ShowUpTitleLabel(void);\r
- UILabel *titleLabel{nullptr};\r
- UILabel *bluetoothNameLabel{nullptr};\r
- UIImageAnimatorView *reconnectAnimator{nullptr};\r
- UIViewGroup *group{nullptr};\r
- bd_addr_t currentBdAddr;\r
- void BtReconnectImageAnimator();\r
-};\r
-} // namespace OHOS\r
-#endif // BLUETOOTH_RECONNECT_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MainBluetooth view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef MAIN_BLUETOOTH_VIEW_H\r
-#define MAIN_BLUETOOTH_VIEW_H\r
-\r
-#include "View.h"\r
-#include "UiConfig.h"\r
-#include "ChangeSliceListener.h"\r
-#include "bluetooth/BluetoothPresenter.h"\r
-#include "bluetooth/BluetoothCaseListAdapter.h"\r
-#include "bluetooth/BluetoothEarListView.h"\r
-#include "bluetooth/BluetoothEarPhoneView.h"\r
-#include "bluetooth/BluetoothOptionsView.h"\r
-#include "bluetooth/BluetoothReconnectView.h"\r
-#include "bluetooth/TipsConnFailMessageView.h"\r
-#include "bluetooth/TipsSuccMessageView.h"\r
-#include "bluetooth/TipsFailMessageView.h"\r
-#include "bluetooth/BluetoothDeviceListView.h"\r
-#include "bluetooth/BluetoothItemView.h"\r
-\r
-namespace OHOS {\r
-constexpr int16_t NUM_CONTAINER = 9; // NUM_CONTAINER :蓝牙耳机连接的9个界面容器\r
-\r
-class BluetoothPresenter;\r
-class MainBluetoothView;\r
-\r
-class MainBluetoothView : public View<BluetoothPresenter> {\r
-public:\r
- MainBluetoothView();\r
- ~MainBluetoothView() override;\r
-\r
- void OnStart() override;\r
- void DropView(UIView& view);\r
- void ChangeView(int16_t hideView, int16_t showView);\r
- static MainBluetoothView *GetInstance(void);\r
-\r
-private:\r
- bool ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView);\r
- bool ChangeTipsFailMessageView(int16_t hideView, int16_t thisView);\r
- bool ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView);\r
- bool ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView);\r
- bool ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView);\r
- bool ChangeBluetoothEarListView(int16_t hideView, int16_t thisView);\r
- bool ChangeBluetoothView(int16_t hideView, int16_t thisView);\r
- bool ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView);\r
- bool ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView);\r
- bool CheckViewParam(int16_t hideView, int16_t showView);\r
- void CorrespondingJump(int16_t hideView);\r
- void ResetEarListView(int16_t hideView);\r
- void ChangeSettingView();\r
- void DropEarPhoneView();\r
- void DropEarListView();\r
- BluetoothEarListView *bluetoothEarListView{nullptr}; // 耳机连接界面\r
- BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr}; // 搜索界面\r
- BluetoothOptionsView *bluetoothOptionsView{nullptr}; // 连接状态界面\r
- BluetoothReconnectView *bluetoothReconnectView{nullptr}; // 重新连接界面\r
- TipsConnFailMessageView *tipsConnFailMessageView{nullptr}; // 连接失败界面\r
- TipsSuccMessageView *tipsSuccMessageView{nullptr}; // 连接成功界面\r
- TipsFailMessageView *tipsFailMessageView{nullptr}; // 未搜索到蓝牙耳机界面\r
- BluetoothDeviceListView *bluetoothDeviceListView{nullptr}; // 蓝牙已连接设备界面\r
- UIViewGroup *container[NUM_CONTAINER]{nullptr}; // NUM_CONTAINER :蓝牙耳机连接的9个界面容器\r
- typedef bool (MainBluetoothView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
- PreprosssChangeView preProcessView[NUM_CONTAINER];\r
-};\r
-} // namespace OHOS\r
-#endif // MAIN_BLUETOOTH_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: TipsConnFailMessageView view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef TIPS_CONN_FAIL_MESSAGE_VIEW_H\r
-#define TIPS_CONN_FAIL_MESSAGE_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_view.h"\r
-#include "bts_def.h"\r
-\r
-namespace OHOS {\r
-class TipsConnFailMessageView {\r
-public:\r
- TipsConnFailMessageView();\r
- ~TipsConnFailMessageView();\r
- static TipsConnFailMessageView *GetInstance();\r
- UIViewGroup *ShowUpViewInit(void);\r
- void RefreshNameLabel(const bd_addr_t &bdAddr);\r
-private:\r
- void ShowUpButtonBack(void);\r
- void ShowUpTipLabel(void);\r
- void InitNameLabel(void);\r
- UILabel *titleLabel{nullptr};\r
- UILabel *tipLabel{nullptr};\r
- UILabel *tipTwoLabel{nullptr};\r
- UILabel *bluetoothNameLabel{nullptr};\r
- UILabelButton *backButton{nullptr};\r
- UIImageView *tipImg{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // TIPS_CONN_FAIL_MESSAGE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: TipsFailMessageView view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef TIPS_FAIL_MESSAGE_VIEW_H\r
-#define TIPS_FAIL_MESSAGE_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_view.h"\r
-\r
-namespace OHOS {\r
-class TipsFailMessageView {\r
-public:\r
- TipsFailMessageView();\r
- ~TipsFailMessageView();\r
- static TipsFailMessageView *GetInstance();\r
- UIViewGroup *ShowUpViewInit(void);\r
-private:\r
- int ShowUpButtonBack(void);\r
- UILabel *titleLabel{nullptr};\r
- UILabelButton *backButton{nullptr};\r
- UIImageView *tipImg{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // TIPS_FAIL_MESSAGE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: TipsSuccMessage view\r
- * Author:\r
- * Create: 2021-10-13\r
- */\r
-#ifndef TIPS_SUCC_MESSAGE_VIEW_H\r
-#define TIPS_SUCC_MESSAGE_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_view.h"\r
-#include "bts_def.h"\r
-\r
-namespace OHOS {\r
-class TipsSuccMessageView {\r
-public:\r
- TipsSuccMessageView();\r
- ~TipsSuccMessageView();\r
- static TipsSuccMessageView *GetInstance();\r
- UIViewGroup *ShowUpViewInit(void);\r
- void RefreshNameLabel(const bd_addr_t &bdAddr);\r
-private:\r
- void ShowUpButtonBack(void);\r
- void InitNameLabel(void);\r
- UILabel *titleLabel{nullptr};\r
- UILabel *bluetoothNameLabel{nullptr};\r
- UILabelButton *backButton{nullptr};\r
- UIImageView *tipImg{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // TIPS_SUCC_MESSAGE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathDurPage\r
- * Create: 2025-5-13\r
- */\r
-#ifndef BREATH_DUR_PAGE_H\r
-#define BREATH_DUR_PAGE_H\r
-\r
-#include <string>\r
-#include "components/ui_label.h"\r
-#include "components/ui_picker.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_toggle_button.h"\r
-#include "View.h"\r
-#include "UiConfig.h"\r
-#include "SlicePage.h"\r
-#include "SlicePageFactory.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathPresenter.h"\r
-\r
-namespace OHOS {\r
-\r
-class BreathDurPage : public SlicePage<BreathPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- BreathDurPage();\r
- ~BreathDurPage() override;\r
- void OnStart(void* data) override;\r
- void OnStop() override;\r
- void OnResume() override;\r
- void OnPause() override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
-private:\r
- UILabel *lableTitle = nullptr;\r
- UIPicker *pickerTime = nullptr;\r
- UIButton *buttonOk = nullptr;\r
- UIViewGroup *group = nullptr;\r
- UIImageView *center = nullptr;\r
-};\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathExerPage\r
- * Create: 2025-5-13\r
- */\r
-#ifndef BREATH_EXER_PAGE_H\r
-#define BREATH_EXER_PAGE_H\r
-\r
-#include "layout/grid_layout.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_digital_clock.h"\r
-#include "components/ui_image_animator.h"\r
-#include "View.h"\r
-#include "SlicePage.h"\r
-#include "graphic_timer.h"\r
-#include "SlicePageFactory.h"\r
-#include "power_display_service.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathPresenter.h"\r
-\r
-#define ALIPAY_BIND_SEARCH_IMAGE_NUM 80\r
-#define SPEED_IDX_3 3\r
-\r
-namespace OHOS {\r
-class BreathExerPage : public SlicePage<BreathPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- BreathExerPage();\r
- ~BreathExerPage() override;\r
- void OnStart(void* data) override;\r
- void OnStop() override;\r
- void OnPause() override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- void OnTimer();\r
- void SetUpImageAnimator();\r
- void InitImageInfo();\r
-\r
-private:\r
- UIViewGroup *group = nullptr;\r
- UIImageAnimatorView* imageAnimator_ = nullptr;\r
- ImageInfo* imageInfoOen = nullptr;\r
- ImageInfo* imageInfoTwo = nullptr;\r
- ImageInfo* imageInfoThree = nullptr;\r
- uint32_t palyNumber;\r
- ImageAnimatorInfo imageAnimatorImageInfo[SPEED_IDX_3] = { 0 };\r
- ImageAnimatorInfo searchImageInfo[ALIPAY_BIND_SEARCH_IMAGE_NUM];\r
-\r
- class BreathExerPageCallback : public AnimatorCallback {\r
- public:\r
- BreathExerPageCallback(BreathExerPage* page) : BreathExerPage(page) {}\r
- virtual ~BreathExerPageCallback() override {}\r
- void Callback(UIView* view) override;\r
- private:\r
- BreathExerPage* BreathExerPage{nullptr};\r
- };\r
- BreathExerPageCallback* animatorCallBack{nullptr};\r
- Animator *animation = nullptr;\r
-};\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathMainPage\r
- * Create: 2025-5-13\r
- */\r
-#ifndef BREATH_MAIN_PAGE_H\r
-#define BREATH_MAIN_PAGE_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_digital_clock.h"\r
-#include "components/ui_image_animator.h"\r
-#include "View.h"\r
-#include "SlicePageFactory.h"\r
-#include "SlicePage.h"\r
-#include "breath/BreathView.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathPresenter.h"\r
-\r
-namespace OHOS {\r
-\r
-class BreathMainPage : public SlicePage<BreathPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- BreathMainPage() = default;\r
- ~BreathMainPage() override;\r
- void OnStart(void* data) override;\r
- void OnStop() override;\r
- void OnResume() override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
-\r
-private:\r
- UILabel *lableBreathing = nullptr;\r
- UIButton *buttonTime = nullptr;\r
- UIButton *buttonSetting = nullptr;\r
- UIButton *buttonStart = nullptr;\r
- UILabel *lableSetting = nullptr;\r
- UILabel *lableTime = nullptr;\r
- UIViewGroup *group = nullptr;\r
- UIImageView *background = nullptr;\r
- UIImageView *center = nullptr;\r
-};\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathModel\r
- * Create: 2025-5-13\r
- */\r
-#ifndef BREATH_MODEL_H\r
-#define BREATH_MODEL_H\r
-\r
-#include "gfx_utils/graphic_math.h"\r
-namespace OHOS {\r
-#define SPEED_IDX_3 3\r
-class BreathModel {\r
-public:\r
- static BreathModel &GetInstance();\r
- virtual ~BreathModel();\r
- const char **GetDurListData();\r
- const char **GetRhyListData();\r
- uint8_t GetDurListSize();\r
- uint8_t GetRhyListSize();\r
- char *GetTimeDuration();\r
- void SetTimeDuration(uint16_t idx);\r
- void SetTimeRhyation(uint16_t idx);\r
- uint8_t GetSelectTime();\r
- uint8_t GetSelectTempo();\r
- char *GetDuration();\r
- char *GetRhythm();\r
- void SetSaveTime(int32_t idx);\r
- int32_t GetSaveTime();\r
- uint32_t GetTimeBreathing();\r
- uint32_t GetStatusRespiratory();\r
- void SetBeginsTime(int32_t idx);\r
- int32_t GetBeginsTime();\r
- void SetFrequencyScore();\r
- uint8_t GetFrequencyScore();\r
- void SetHeartRate();\r
- uint8_t GetHeartRate();\r
- uint32_t GetTheNumberOfPlays();\r
-\r
-protected:\r
- void DefaultData();\r
-\r
-private:\r
- BreathModel();\r
- BreathModel(const BreathModel &);\r
- BreathModel &operator=(const BreathModel &);\r
- const char *durList[SPEED_IDX_3];\r
- const char *rhyList[SPEED_IDX_3];\r
- uint32_t durListVal[SPEED_IDX_3];\r
- uint32_t rhyListVal[SPEED_IDX_3];\r
- uint16_t data;\r
- uint16_t date;\r
- int32_t saveTime;\r
- int32_t beginsTime;\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathPresenter\r
- * Create: 2025-5-23\r
- */\r
-\r
-#ifndef Breath_PRESENTER_H\r
-#define Breath_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-\r
-namespace OHOS {\r
-constexpr int16_t SET_INT_MAX_ = 255;\r
-\r
-class BreathView;\r
-class BreathPresenter : public Presenter<BreathView> {};\r
-}\r
-\r
-#endif // Breath_PRESENTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathResult\r
- * Create: 2025-5-13\r
- */\r
-#ifndef BREATH_RESULT_PAGE_H\r
-#define BREATH_RESULT_PAGE_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_picker.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_toggle_button.h"\r
-#include "View.h"\r
-#include "UiConfig.h"\r
-#include "SlicePage.h"\r
-#include "SlicePageFactory.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathPresenter.h"\r
-\r
-namespace OHOS {\r
-\r
-class BreathResultPage : public SlicePage<BreathPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- BreathResultPage();\r
- ~BreathResultPage() override;\r
- void OnStart(void* data) override;\r
- void OnStop() override;\r
- void OnResume() override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
-\r
-private:\r
- UILabel *trainingResults = nullptr;\r
- UILabel *trainingFrequencies = nullptr;\r
- UILabel *trainingHeartRate = nullptr;\r
- UILabel *trainingDuration = nullptr;\r
- UILabel *heartRateScout = nullptr;\r
- UILabel *frequenciesScout = nullptr;\r
- UIImageView *scores = nullptr;\r
- UILabel *descriptionBreathing = nullptr;\r
- UILabel *time = nullptr;\r
- UILabel *timeUnit = nullptr;\r
- UILabel *frequencyTimes = nullptr;\r
- UILabel *heartRateTimes = nullptr;\r
- UIViewGroup *group = nullptr;\r
- uint8_t frequencyScore;\r
- uint8_t heartRate;\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathRhyPage\r
- * Create: 2025-5-13\r
- */\r
-#ifndef BREATH_RHY_PAGE_H\r
-#define BREATH_RHY_PAGE_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_picker.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "View.h"\r
-#include "SlicePage.h"\r
-#include "SlicePageFactory.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathPresenter.h"\r
-\r
-namespace OHOS {\r
-\r
-class BreathRhyPage : public SlicePage<BreathPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener,\r
- public UIPicker::SelectedListener {\r
-public:\r
- BreathRhyPage();\r
- ~BreathRhyPage() override;\r
- void OnStart(void* data) override;\r
- void OnResume() override;\r
- void OnPause() override;\r
- void OnStop() override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
-\r
-private:\r
- UILabel *lableRhythm = nullptr;\r
- UIPicker *pickerRhythm = nullptr;\r
- UIButton *buttonOk = nullptr;\r
- UIViewGroup *group = nullptr;\r
- UIImageView *center = nullptr;\r
-};\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathStartPage\r
- * Create: 2025-5-13\r
- */\r
-#ifndef BREATH_START_PAGE_H\r
-#define BREATH_START_PAGE_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "View.h"\r
-#include "SlicePage.h"\r
-#include "graphic_timer.h"\r
-#include "SlicePageFactory.h"\r
-#include "breath/BreathModel.h"\r
-#include "breath/BreathPresenter.h"\r
-\r
-namespace OHOS {\r
-\r
-class BreathStartPage : public SlicePage<BreathPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- BreathStartPage();\r
- ~BreathStartPage() override;\r
- void OnStart(void* data) override;\r
- void OnStop() override;\r
- void OnTimer();\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- void OnPause() override;\r
-private:\r
- UILabel *titleLable = nullptr;\r
- UILabel *guideLable = nullptr;\r
- UIImageView *centerImge = nullptr;\r
- UIViewGroup *group = nullptr;\r
- UIImageView *background = nullptr;\r
-\r
- class BreathStartCallback : public AnimatorCallback {\r
- public:\r
- BreathStartCallback(BreathStartPage* page) : BreathStartPage(page) {}\r
- virtual ~BreathStartCallback() override {}\r
- void Callback(UIView* view) override;\r
- private:\r
- BreathStartPage* BreathStartPage{nullptr};\r
- };\r
- BreathStartCallback* animatorCallBack{nullptr};\r
- Animator *animation = nullptr;\r
-};\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: BreathView\r
- * Create: 2025-5-14\r
- */\r
-\r
-#ifndef BREATH_VIEW_H\r
-#define BREATH_VIEW_H\r
-\r
-#include "View.h"\r
-namespace OHOS {\r
-enum BrearhView {\r
- BREATH_MAIN_VIEW = 1,\r
- BREATH_DUR_VIEW = 2,\r
- BREATH_EXER_VIEW = 3,\r
- BREATH_RHY_VIEW = 4,\r
- BREATH_START_VIEW = 5,\r
- BREATH_RESULT_VIEW = 6,\r
-};\r
-\r
-class BreathPresenter;\r
-class BreathView : public View<BreathPresenter> {};\r
-}\r
-#endif // BREATH_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerItemView.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-\r
-#ifndef CALLER_ITEM_VIEW_H\r
-#define CALLER_ITEM_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_button.h"\r
-\r
-#include "callerlog/CallerLogModel.h"\r
-#include "UiConfig.h"\r
-#include "phoneservice/PhoneService.h"\r
-\r
-namespace OHOS {\r
-class CallerItemView : public UIViewGroup {\r
-public:\r
-\r
- // @param yCoordinates Y轴坐标值\r
- explicit CallerItemView(int32 yCoordinates);\r
- ~CallerItemView() override;\r
-\r
- void SetItemInfo(CallLogInfo *itemInfo, char len);\r
- void SetUpChild();\r
-private:\r
- CallerItemView(const CallerItemView &);\r
- CallerItemView &operator = (const CallerItemView &);\r
- void InitDateMonTime(time_t seconds);\r
-\r
- std::string infoTel; // 电话号码\r
- std::string timeDisplay; // 日期显示\r
- UIImageView icon_;\r
- UIImageView icons_;\r
- UILabel label_;\r
- UILabel labels_;\r
-};\r
-}\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerLogModel.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#ifndef CALLER_LOG_MODEL_H\r
-#define CALLER_LOG_MODEL_H\r
-\r
-#include "string"\r
-#include "phoneservice/PhoneService.h"\r
-#include "AppViewIDs.h"\r
-#include "message.h"\r
-#include "msg_center.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-typedef enum {\r
- CHANGE_STATUS = 0,\r
- SCO_STATUS,\r
- ERROR_MESSAGE\r
-} MessageType;\r
-\r
-enum PhoneStatus {\r
- PHONE_MULTI_STATUS = 0,\r
- PHONE_SINGLE_STATUS\r
-};\r
-\r
-bool MulitplePhoneTextReplaces();\r
-bool FindCallListInfoAndSetPriorityNumber();\r
-void PhoneScoStatausCallback(hfp_sco_connect_state_t state);\r
-void PhoneChangeStatusCallback(const PhoneCallInfo *phoneCall);\r
-void PhoneErrorCallback(PhoneServiceErrorType type, int volume);\r
-void UsingPhoneScoStatausCallback(hfp_sco_connect_state_t state);\r
-void UsingPhoneChangeStatusCallback(const PhoneCallInfo *phoneCall);\r
-void UsingPhoneErrorCallback(PhoneServiceErrorType type);\r
-\r
-namespace OHOS {\r
-class CallerLogModel {\r
-public:\r
- void InitPhoneService();\r
- static CallerLogModel *GetInstance(void);\r
-\r
- std::string GetPhoneNumber(void);\r
- void SetoperateNumber(const char *number, char number_len);\r
-\r
- bool GetPhoneStatus();\r
- void SetMakePhoneStatus(bool status);\r
-\r
- bool GetVolumeScreenStatus();\r
- void SetVolumeScreenStatus(bool status);\r
-\r
- bool GetCallStatus();\r
- void SetCallStatus(bool status);\r
-\r
- bool GetWaitingStatus();\r
- void SetWaitingStatus(bool status);\r
-\r
- bool GetMulitplePhoneStatus();\r
- void SetMulitplePhoneStatus(bool status);\r
-\r
- std::string GetDialingStatus(void);\r
- void SetDialingStatus(const char *text);\r
-\r
- std::string InitDateHourTime();\r
- std::string& DisplayCallDuration();\r
- int CurrCallNum();\r
-\r
- bool GetNotifyFlag(void);\r
- void SetNotifyFlag(bool flag);\r
- bool IsMulitplePhoneStatus(void);\r
-private:\r
- CallerLogModel();\r
- CallerLogModel(const CallerLogModel &);\r
- CallerLogModel &operator=(const CallerLogModel &);\r
- virtual ~CallerLogModel();\r
-\r
- std::string dialingStatus; // 拨号状态\r
- std::string timers; // 时间显示\r
- std::string callDuration; // 通话时长\r
- std::string phoneNumber; // 电话号码\r
- bool mulitplePhoneStatus{false}; // 判断是否多路通话界面\r
- bool waitingStatus{false}; // 判断是否等待提醒界面\r
- bool volumeStatus{false}; // 判断是否音量界面\r
- bool phoneStatus{false}; // 判断是拨打界面还是呼入界面\r
- bool callStatus{false}; // 判断是否正在接听电话\r
- bool notifyFlag{false}; // 判断是否来电呼入 由notify生成界面\r
-};\r
-}\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerLogPresenter.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-\r
-#ifndef CALLER_LOG_PRESENTER_H\r
-#define CALLER_LOG_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "ohos_types.h"\r
-#include "callerlog/CallerLogModel.h"\r
-#include "graphic_timer.h"\r
-#include "sys/time.h"\r
-\r
-\r
-namespace OHOS {\r
-class CallerLogView;\r
-class CallerLogPresenter : public Presenter<CallerLogView>, public UIView::OnClickListener {\r
-public:\r
- CallerLogPresenter();\r
- ~CallerLogPresenter() override;\r
- void OnStop() override;\r
- static CallerLogPresenter *GetInstance(void);\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- void BuletoothHintsCallbackProc(void* data);\r
-private:\r
- void InitBluetoothHints();\r
- void DisableBluetoothHints();\r
- GraphicTimer* hintsCounting{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerLogView.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-\r
-#ifndef CALLER_LOG_VIEW_H\r
-#define CALLER_LOG_VIEW_H\r
-\r
-#include "View.h"\r
-#include "callerlog/CallerLogPresenter.h"\r
-#include "callerlog/CallerItemView.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_list.h"\r
-#include "components/abstract_adapter.h"\r
-#include "phoneservice/PhoneService.h"\r
-#include "vector.h"\r
-#include "ChangeSliceListener.h"\r
-\r
-namespace OHOS {\r
-using namespace Graphic;\r
-class CallerListOnDragListener : public UIView::OnDragListener {\r
-public:\r
- CallerListOnDragListener() {}\r
- ~CallerListOnDragListener() override {}\r
-\r
- bool OnDrag(UIView& view, const DragEvent& event) override\r
- {\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- }\r
-\r
- return false;\r
- }\r
-};\r
-\r
-class CallerUIScrollView : public UIScrollView {\r
-public:\r
- CallerUIScrollView() {}\r
- ~CallerUIScrollView() {}\r
-\r
- bool OnDragEvent(const DragEvent& event) override\r
- {\r
- return UIScrollView::OnDragEvent(event);\r
- }\r
-};\r
-\r
-class CallerLogView : public View<CallerLogPresenter> {\r
-public:\r
- CallerLogView();\r
- ~CallerLogView() override;\r
-\r
- void OnStart() override;\r
- UIViewGroup* GetHintsGroup();\r
- CallerUIScrollView *GetGroupView();\r
- CallerUIScrollView *GetContainerView();\r
- static CallerLogView *GetInstance();\r
- uint32 GetCurrentNumber();\r
- CallLogInfo *GetCurrentCallInfo();\r
-private:\r
- bool InitOrBandOnclickEvent();\r
- bool CreateCallerLogViewGroup(void);\r
- bool CreateNoDataCallerLogViewGroup(void);\r
- void ChangeLabelsStytleClear(int32 groupFinaly, int32 Index);\r
- void ChangeLabelsStytleLog();\r
- void InitBluetoothHintsGroup();\r
-\r
- uint32 currentNumber;\r
- UILabel labelLog;\r
- UILabel labelClear;\r
- CallLogInfo *info{nullptr};\r
- UIViewGroup *groupFirst{nullptr};\r
- UIViewGroup *groupFinal{nullptr};\r
- UIViewGroup *hintsGroup{nullptr};\r
- CallerUIScrollView *container{nullptr};\r
- CallerUIScrollView *group{nullptr};\r
- UIImageView *imageView{nullptr};\r
- UIImageView *hintsImageView{nullptr};\r
- UIView::OnClickListener* clickLeftListener{nullptr};\r
- Vector<CallerItemView *>item;\r
- CallerListOnDragListener *dragListener{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectOpen View\r
- * Create: 2022-03-22\r
- */\r
-#ifndef CONNECT_OPEN_VIEW_H\r
-#define CONNECT_OPEN_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_view.h"\r
-\r
-namespace OHOS {\r
-class ConnectOpenView {\r
-public:\r
- ConnectOpenView();\r
- ~ConnectOpenView();\r
- static ConnectOpenView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void ShowUpBackView(void);\r
- UILabel *titleLabel{nullptr};\r
- UILabel *watchNameLabel{nullptr};\r
- UILabelButton *backButton{nullptr};\r
- UIImageView *tipImg{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // CONNECT_OPEN_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone Presenter\r
- * Create: 2022-01-19\r
- */\r
-\r
-#ifndef CONNECT_PHONE_PRESENTER_H\r
-#define CONNECT_PHONE_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "connectnewphone/ConnectOpenView.h"\r
-#include "NativeLauncher.h"\r
-#include "NativeAbility.h"\r
-\r
-namespace OHOS {\r
-enum ConnectPhonePresenterNum : uint8_t {\r
- CONNECTSELECTVIEW = 0,\r
- CONNECTOPENVIEW,\r
- CONNECTPHONE_MAX,\r
-};\r
-\r
-#define CANCEL_BUTTON "cancelButton"\r
-#define CONFIRM_BUTTON "confirmButton"\r
-#define CONNECT_OPEN_BACK_BUTTON "backButton"\r
-\r
-#define CONNECT_SELECT_VIEW "connectSelectView"\r
-#define CONNECT_OPEN_VIEW "connectOpenView"\r
-\r
-class ConnectPhoneView;\r
-class ConnectPhonePresenter : public Presenter<ConnectPhoneView>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- ConnectPhonePresenter();\r
- ~ConnectPhonePresenter();\r
- static ConnectPhonePresenter *GetInstance();\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- void ConfirmOnClick();\r
-private:\r
-};\r
-} // namespace OHOS\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone View\r
- * Create: 2022-01-19\r
- */\r
-\r
-#ifndef CONNECT_PHONE_VIEW_H\r
-#define CONNECT_PHONE_VIEW_H\r
-\r
-#include "View.h"\r
-#include "connectnewphone/ConnectPhonePresenter.h"\r
-#include "connectnewphone/ConnectSelectView.h"\r
-#include "main/AppGroupView.h"\r
-\r
-namespace OHOS {\r
-constexpr int16_t NUM_CONNECT_PHONE_CONTAINER = 2;\r
-\r
-class ConnectPhonePresenter;\r
-class ConnectPhoneView : public View<ConnectPhonePresenter> {\r
-public:\r
- ConnectPhoneView();\r
- ~ConnectPhoneView() override;\r
- static ConnectPhoneView *GetInstance();\r
- void OnStart() override;\r
- void ChangeView(int16_t hideView, int16_t showView);\r
-\r
-private:\r
- bool ChangeConnectSelectView(int16_t hideView, int16_t thisView);\r
- bool ChangeConnectOpenView(int16_t hideView, int16_t thisView);\r
- bool CheckViewParam(int16_t hideView, int16_t showView);\r
- ConnectSelectView *connectSelectView{nullptr};\r
- ConnectOpenView *connectOpenView{nullptr};\r
- UIViewGroup *container[NUM_CONNECT_PHONE_CONTAINER]{nullptr};\r
- typedef bool (ConnectPhoneView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
- PreprosssChangeView preProcessView[NUM_CONNECT_PHONE_CONTAINER];\r
-};\r
-} // namespace OHOS\r
-#endif // DISCONNECT_PHONE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectSelect View\r
- * Create: 2022-03-22\r
- */\r
-\r
-#ifndef CONNECT_SELECT_VIEW_H\r
-#define CONNECT_SELECT_VIEW_H\r
-\r
-#include "View.h"\r
-#include "connectnewphone/ConnectPhonePresenter.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-class ConnectSelectView {\r
-public:\r
- ConnectSelectView();\r
- ~ConnectSelectView();\r
- static ConnectSelectView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void ShowUpTitleLabel(void);\r
- void CreateUIButton(void);\r
- UILabel *titleLabel{nullptr};\r
- UIButton *cancelButton{nullptr};\r
- UIButton *confirmButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // CONNECT_SELECT_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: DateAdapter\r
- * Create: 2025-03-23\r
- */\r
-\r
-#ifndef DATE_ADAPTER_H\r
-#define DATE_ADAPTER_H\r
-\r
-#include <list>\r
-#include <string>\r
-#include "components/ui_list.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/abstract_adapter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "date/DateModel.h"\r
-#include "date/DateItemView.h"\r
-\r
-namespace OHOS {\r
-class DateAdapter : public AbstractAdapter {\r
-public:\r
- explicit DateAdapter();\r
- ~DateAdapter() override;\r
- void SetData(std::list<DateItem> &data);\r
- uint16_t GetCount(void) override;\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
- void AddListItem(const DateItem &item);\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
- void ClearListItem();\r
-\r
-private:\r
- std::list<DateItem> listData;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: DateButtonAdapter\r
- * Create: 2025-03-23\r
- */\r
-\r
-#ifndef DATE_BUTTON_ADAPTER_H\r
-#define DATE_BUTTON_ADAPTER_H\r
-\r
-#include <list>\r
-#include <string>\r
-#include "components/ui_list.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/abstract_adapter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "date/DateModel.h"\r
-#include "date/DateButtonItemView.h"\r
-\r
-namespace OHOS {\r
-class DateButtonAdapter : public AbstractAdapter {\r
-public:\r
- explicit DateButtonAdapter();\r
- ~DateButtonAdapter() override;\r
-\r
- void SetData(std::list<DateButtonItem> &data);\r
- uint16_t GetCount(void) override;\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
- void AddListItem(const DateButtonItem &item);\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
- void ClearListItem();\r
-\r
-private:\r
- std::list<DateButtonItem> listData;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: DateItemView\r
- * Create: 2025-03-23\r
- */\r
-\r
-#ifndef DATE_ITEM_VIEW_H\r
-#define DATE_ITEM_VIEW_H\r
-\r
-#include "date/DateModel.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_canvas.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-class DateItemView : public UIViewGroup {\r
-public:\r
- explicit DateItemView();\r
- ~DateItemView() override;\r
- virtual void SetItemInfo(const DateItem itemInfo);\r
- virtual void SetUpChild();\r
- const char *GetViewId();\r
- bool GetVisiable();\r
-\r
-private:\r
- UILabel sLabel_1;\r
- UIImageView sIcon;\r
- UILabel sLabel_2;\r
- UIImageView sNextImage;\r
- UIImageView Schedule;\r
- UIImageView Signs;\r
- UIImageView BackGround;\r
- DateItem sItemInfo = {nullptr, nullptr, nullptr, false};\r
-};\r
-}\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: FlashLightDefaultPage\r
- * Create: 2025-04-24\r
- */\r
-\r
-#ifndef FLASHLIGHT_DEFAULT_PAGE_H\r
-#define FLASHLIGHT_DEFAULT_PAGE_H\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button_ext.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "SlicePage.h"\r
-#include "flashlight/FlashLightPresenter.h"\r
-\r
-namespace OHOS {\r
-class FlashLightDefaultPage : public SlicePage<FlashLightPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- FlashLightDefaultPage(){};\r
- ~FlashLightDefaultPage();\r
- void OnStart(void* data) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
-\r
-private:\r
- FlashLightDefaultPage(const FlashLightDefaultPage &) = delete;\r
- FlashLightDefaultPage &operator=(const FlashLightDefaultPage &) = delete;\r
- FlashLightDefaultPage(FlashLightDefaultPage &&) = delete;\r
- FlashLightDefaultPage &operator=(FlashLightDefaultPage &&) = delete;\r
-\r
- UIScrollView *container_ = nullptr;\r
- UILabel *recoverLabel_ = nullptr;\r
- UILabelButtonExt *cancelButton_ = nullptr;\r
- UILabelButtonExt *confirmButton_ = nullptr;\r
-};\r
-} // namespace OHOS\r
-#endif /* FLASHLIGHT_DEFAULT_PAGE_H */\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: FlashLightSetItemAdapter\r
- * Create: 2025-11-23\r
- */\r
-\r
-#ifndef FLASHLIGHTSET_ITEM_ADAPTER_H\r
-#define FLASHLIGHTSET_ITEM_ADAPTER_H\r
-\r
-#include "flashlight/FlashLightSetItemAdapter.h"\r
-#include "flashlight/FlashLightSetItemView.h"\r
-#include "components/abstract_adapter.h"\r
-#include "gfx_utils/vector.h"\r
-\r
-namespace OHOS {\r
-\r
-class FlashLightSetItemAdapter : public AbstractAdapter {\r
-public:\r
- explicit FlashLightSetItemAdapter();\r
- ~FlashLightSetItemAdapter() override;\r
-\r
- /* *\r
- * @brief Sets the UIView adapter data, which is a SettingItem linked list.\r
- *\r
- * @param data Indicates the SettingItem linked list data.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- void SetData(const Graphic::Vector<FlashLightSetItem> &data);\r
-\r
- /* *\r
- * @brief Obtains the <b>data</b> size of the UILabel adapter.\r
- *\r
- * @return Returns the <b>data</b> size of the UILabel adapter.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- uint16_t GetCount(void) override;\r
-\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
-\r
- void AddListItem(const FlashLightSetItem &item);\r
-\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
-private:\r
- Graphic::Vector<FlashLightSetItem> itemDatas_;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif // FLASHLIGHTSET_ITEM_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: FlashlightUiResourceImage\r
- * Create: 2025-04-24\r
- */\r
-\r
-#ifndef FLASHLIGHT_UI_RESOURCE_IMAGE_H\r
-#define FLASHLIGHT_UI_RESOURCE_IMAGE_H\r
-#include <cstdint>\r
-namespace OHOS {\r
-static const int IMAGE_CONVERTER_TOOL_BLINKBUTTON = 0x100001;\r
-static const int IMAGE_CONVERTER_TOOL_BLINKITEM = 0x100002;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR1BUTTON = 0x100003;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR1PRESSBUTTON = 0x100004;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR2BUTTON = 0x100005;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR2PRESSBUTTON = 0x100006;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR3BUTTON = 0x100007;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR3PRESSBUTTON = 0x100008;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR4BUTTON = 0x100009;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR4PRESSBUTTON = 0x10000a;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR5BUTTON = 0x10000b;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR5PRESSBUTTON = 0x10000c;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR6BUTTON = 0x10000d;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR6PRESSBUTTON = 0x10000e;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR7BUTTON = 0x10000f;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR7PRESSBUTTON = 0x100010;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR8BUTTON = 0x100011;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR8PRESSBUTTON = 0x100012;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR9BUTTON = 0x100013;\r
-static const int IMAGE_CONVERTER_TOOL_COLOR9PRESSBUTTON = 0x100014;\r
-static const int IMAGE_CONVERTER_TOOL_COLORITEM = 0x100015;\r
-static const int IMAGE_CONVERTER_TOOL_DOWNARROW = 0x100016;\r
-static const int IMAGE_CONVERTER_TOOL_FLASHLIGHTON = 0x100017;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY1PAGE = 0x100018;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY2PAGE = 0x100019;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY3PAGE = 0x10001a;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY4PAGE = 0x10001b;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY5PAGE = 0x10001c;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY6PAGE = 0x10001d;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY7PAGE = 0x10001e;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY8PAGE = 0x10001f;\r
-static const int IMAGE_CONVERTER_TOOL_PLAY9PAGE = 0x100020;\r
-static const int IMAGE_CONVERTER_TOOL_PLAYBLACKPAGE = 0x100021;\r
-static const int IMAGE_CONVERTER_TOOL_RECOVERBUTTON = 0x100022;\r
-static const int IMAGE_CONVERTER_TOOL_RECOVERCANCLE = 0x100023;\r
-static const int IMAGE_CONVERTER_TOOL_RECOVERCONFIRM = 0x100024;\r
-static const int IMAGE_CONVERTER_TOOL_RIGHTARROW = 0x100025;\r
-} // OHOS\r
-#endif // FLASHLIGHT_UI_RESOURCE_IMAGE_H\r
+++ /dev/null
-#ifndef HEART_MODEL_H\r
-#define HEART_MODEL_H\r
-\r
-#include <ctime>\r
-#include "broadcast_feature.h"\r
-#include "broadcast_service.h"\r
-#include "samgr_lite.h"\r
-#include "clock/MainClockView.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-int PushOHOSMsgToHeartModel(Request *request);\r
-void HeartDataSubscribeTopic(Topic topic);\r
-void HearDatatUnsubscribeTopic(Topic topic);\r
-\r
-#define HEART_ALL_POINTS 360\r
-\r
-typedef struct {\r
- uint16_t x;\r
- uint16_t y;\r
- bool flag;\r
-} Point;\r
-\r
-typedef struct {\r
- /** X coordinate */\r
- uint16_t x;\r
- /** Y coordinate */\r
- uint16_t y;\r
-} HeartPoint;\r
-\r
-typedef struct {\r
- uint16_t perSec;\r
- uint16_t rest;\r
- uint16_t minX;\r
- uint16_t minValue;\r
- uint16_t maxX;\r
- uint16_t maxValue;\r
- uint16_t index;\r
- Point value[HEART_ALL_POINTS];\r
-} HeartInfo;\r
-\r
-#pragma pack(4)\r
-typedef struct {\r
- uint16_t perSec;\r
- uint16_t rest;\r
- uint16_t minX;\r
- uint16_t minValue;\r
- uint16_t maxX;\r
- uint16_t maxValue;\r
- uint16_t index;\r
- HeartPoint value[HEART_ALL_POINTS];\r
-} HeartDatas;\r
-\r
-#pragma pack()\r
-\r
-namespace OHOS {\r
-#define HEART_AVE_NUM 360\r
-#define HEART_RATE_LIMIT_UPPER 200\r
-#define HEART_RATE_LIMIT_LOWER 0\r
-#define INVALID_HEART_VALUE ((int16)0xFFFF)\r
-#define NUM_1 1\r
-#define NUM_2 2\r
-#define NUM_3 3\r
-#define NUM_4 4\r
-#define NUM_5 5\r
-#define NUM_6 6\r
-#define NUM_7 7\r
-#define NUM_16 16\r
-#define NUM_99 99\r
-\r
-typedef struct {\r
- uint32_t heartRatePerSec;\r
- Point heartRateAvg[HEART_AVE_NUM];\r
- uint32_t heartRateRest;\r
- Point heartRateMax;\r
- Point heartRateMin;\r
-} HealthAllDatas;\r
-\r
-class HeartModel {\r
-public:\r
- HeartModel();\r
- ~HeartModel();\r
- static HeartModel *GetInstance(void);\r
- void ObtainingHeartRateData(void);\r
- void PushHealthDatas(HealthMsg healthMsg);\r
- Point* GetAveHeartRate(void);\r
- uint16_t GetAveHeartRateCount(void);\r
- void SetAveHeartRateCount(uint16_t value);\r
- Point* GetMaximumHeartRate(void);\r
- void Init(void);\r
- void HeartRatePros(HeartDatas *heartInfo);\r
- void RefreshHeartRateScreen(uint16_t perSec, uint16_t rest, uint16_t maxRate, uint16_t minRate);\r
- void ClearHeartData(void);\r
- void HandleMaxHeart(uint16_t coord, uint16_t value);\r
- void HandleMinHeart(uint16_t coord, uint16_t value);\r
- void SetHeartRatePerSec(uint32_t sec);\r
- void SetWearStatus(bool status);\r
- bool GetWearStatus(void);\r
- uint16_t GetHeartRateMax(void);\r
- uint16_t GetHeartRateMin(void);\r
-\r
-private:\r
- HealthAllDatas healthDatas;\r
- uint16_t pretime{0};\r
- uint16_t entryTimes{0};\r
- uint16_t aveCount{0};\r
- uint16_t preMaxValue{0};\r
- uint16_t preMaxX{NUM_1};\r
- uint16_t preMinValue{HEART_RATE_LIMIT_UPPER};\r
- uint16_t preMinX{NUM_1};\r
- uint16_t countMax{0};\r
- uint16_t countMin{0};\r
- bool wearStatus{false};\r
-};\r
-}\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Customization View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef CUSTOMIZATION_VIEW_H\r
-#define CUSTOMIZATION_VIEW_H\r
-\r
-#include "View.h"\r
-#include "common/screen.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "components/ui_radio_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-\r
-class IndoorWalkUIScrollView : public UIScrollView {\r
-public:\r
- IndoorWalkUIScrollView() {}\r
- ~IndoorWalkUIScrollView() override {}\r
-\r
- bool OnDragEvent(const DragEvent& event) override\r
- {\r
- return UIScrollView::OnDragEvent(event);\r
- }\r
-};\r
-\r
-class CustomizationView {\r
-public:\r
- CustomizationView();\r
- ~CustomizationView();\r
- static CustomizationView *GetInstance();\r
- UIViewGroup *InitPropertiesView();\r
- UIViewGroup *GetTimeView(void);\r
- UIViewGroup *GetDistancesView(void);\r
- UIViewGroup *GetHeartView(void);\r
- UIViewGroup *GetSpeedView(void);\r
- UIViewGroup *GetStepsView(void);\r
- UIRadioButton *GetTimeRadio(void);\r
- UIRadioButton *GetDistancesRadio(void);\r
- UIRadioButton *GetHeartRadio(void);\r
- UIRadioButton *GetSpeedRadio(void);\r
- UIRadioButton *GetStepsRadio(void);\r
- IndoorWalkUIScrollView *GetCustomizationViewGroup(void);\r
-\r
-private:\r
- bool ShowUpTitleLabel();\r
- bool InitTimeView();\r
- bool InitDistancesView();\r
- bool InitHeartView();\r
- bool InitSpeedView();\r
- bool InitStepsView();\r
- IndoorWalkUIScrollView *group{nullptr};\r
- UILabel *lable{nullptr};\r
- UIViewGroup *timeView{nullptr}; // 时间\r
- UIViewGroup *distancesView{nullptr}; // 距离\r
- UIViewGroup *heartView{nullptr}; // 心率\r
- UIViewGroup *speedView{nullptr}; // 速度\r
- UIViewGroup *stepsView{nullptr}; // 步数\r
-\r
- UIRadioButton *timeRadio{nullptr}; // 时间\r
- UIRadioButton *distancesRadio{nullptr}; // 距离\r
- UIRadioButton *heartRadio{nullptr}; // 心率\r
- UIRadioButton *speedRadio{nullptr}; // 速度\r
- UIRadioButton *stepsRadio{nullptr}; // 步数\r
-\r
- UILabelButton *timeButton{nullptr}; // 时间\r
- UILabelButton *distancesButton{nullptr}; // 距离\r
- UILabelButton *heartButton{nullptr}; // 心率\r
- UILabelButton *speedButton{nullptr}; // 速度\r
- UILabelButton *stepsButton{nullptr}; // 步数\r
-};\r
-} // namespace OHOS\r
-#endif // CUSTOMIZATION_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk End View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef INDOORWALK_END_VIEW_H\r
-#define INDOORWALK_END_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_view_group.h"\r
-#include "common/screen.h"\r
-\r
-namespace OHOS {\r
-\r
-class IndoorWalkEndView {\r
-public:\r
- IndoorWalkEndView();\r
- ~IndoorWalkEndView();\r
- static IndoorWalkEndView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- bool ShowUpTitleLabel(void);\r
- bool CreateUIButton(void);\r
- UILabel *titleLabel{nullptr};\r
- UIButton *cancelButton{nullptr};\r
- UIButton *confirmButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-\r
-} // namespace OHOS\r
-#endif // INDOORWALK_END_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Model\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef INDOORWALK_MODEL_H\r
-#define INDOORWALK_MODEL_H\r
-\r
-#include <cstdio>\r
-#include "string"\r
-#include "gfx_utils/list.h"\r
-#include "components/ui_label.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-void InitIndoorWalkTimer();\r
-void DisableIndoorWalkTimer();\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-namespace OHOS {\r
-class IndoorWalkModel {\r
-public:\r
- ~IndoorWalkModel();\r
- static IndoorWalkModel *GetInstance(void);\r
- std::string GetConnectionView();\r
- void SetConnectionView(const char* id);\r
- void SetTextLableFirstTop(const char *lable, const char *lableUnit);\r
- std::string GetTextLableFirstTop();\r
- std::string GetTextLableUnitFirstTop();\r
- void SetTextLableFirstLeft(const char *lable, const char *lableUnit);\r
- std::string GetTextLableFirstLeft();\r
- std::string GetTextLableUnitFirstLeft();\r
- void SetTextLableFirstRight(const char *lable, const char *lableUnit);\r
- std::string GetTextLableFirstRight();\r
- std::string GetTextLableUnitFirstRight();\r
- void SetTextLableFirstBottom(const char *lable, const char *lableUnit);\r
- std::string GetTextLableFirstBottom();\r
- std::string GetTextLableUnitFirstBottom();\r
- void SetTextLableSecondTop(const char *lable, const char *lableUnit);\r
- std::string GetTextLableSecondTop();\r
- std::string GetTextLableUnitSecondTop();\r
- void SetTextLableSecondLeft(const char *lable, const char *lableUnit);\r
- std::string GetTextLableSecondLeft();\r
- std::string GetTextLableUnitSecondLeft();\r
- void SetTextLableSecondRight(const char *lable, const char *lableUnit);\r
- std::string GetTextLableSecondRight();\r
- std::string GetTextLableUnitSecondRight();\r
- void SetTextLableThirdTop(const char *lable, const char *lableUnit);\r
- std::string GetTextLableThirdTop();\r
- std::string GetTextLableUnitThirdTop();\r
- void SetTextLableThirdBottom(const char *lable, const char *lableUnit);\r
- std::string GetTextLableThirdBottom();\r
- std::string GetTextLableUnitThirdBottom();\r
- void SetTextLableFourth(const char *lable, const char *lableUnit);\r
- std::string GetTextLableFourth();\r
- std::string GetTextLableUnitFourth();\r
- void SetInitialStep(const uint32_t &value);\r
- int GetInitialStep();\r
- std::string& DisplayMotionDuration();\r
- bool OpenDistancesSensor(void);\r
- bool CloseDistancesSensor(void);\r
- void SetInitialDistances(const float &value);\r
- float GetInitialDistances();\r
- void SetCurrentDistances(const float &value);\r
- float GetCurrentDistances();\r
-\r
-private:\r
- IndoorWalkModel();\r
- std::string selectPropertiesID;\r
- uint32_t initialStep;\r
- float initialDistances;\r
- float currentDistances;\r
- std::string textLableFirstTop{"00:00:00"};\r
- std::string textLableUnitFirstTop{"时间"};\r
- std::string textLableFirstLeft{"00:00:00"};\r
- std::string textLableUnitFirstLeft{"时间"};\r
- std::string textLableFirstRight{"00:00:00"};\r
- std::string textLableUnitFirstRight{"时间"};\r
- std::string textLableFirstBottom{"00:00:00"};\r
- std::string textLableUnitFirstBottom{"时间"};\r
- std::string textLableSecondTop{"00:00:00"};\r
- std::string textLableUnitSecondTop{"时间"};\r
- std::string textLableSecondLeft{"00:00:00"};\r
- std::string textLableUnitSecondLeft{"时间"};\r
- std::string textLableSecondRight{"00:00:00"};\r
- std::string textLableUnitSecondRight{"时间"};\r
- std::string textLableThirdTop{"00:00:00"};\r
- std::string textLableUnitThirdTop{"时间"};\r
- std::string textLableThirdBottom{"00:00:00"};\r
- std::string textLableUnitThirdBottom{"时间"};\r
- std::string textLableFourth{"00:00:00"};\r
- std::string textLableUnitFourth{"时间"};\r
-\r
- std::string motionDuration;\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Motion View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef INDOORWALK_MOTION_VIEW_H\r
-#define INDOORWALK_MOTION_VIEW_H\r
-\r
-#include "View.h"\r
-#include "indoorwalk/MotionPageFirst.h"\r
-#include "indoorwalk/MotionPageSecond.h"\r
-#include "indoorwalk/MotionPageThird.h"\r
-#include "indoorwalk/MotionPageFourth.h"\r
-#include "indoorwalk/MotionPageFifth.h"\r
-#include "components/ui_swipe_view.h"\r
-\r
-namespace OHOS {\r
-typedef enum {\r
- MOTION_FIRST = 0,\r
- MOTION_SECOND,\r
- MOTION_THIRD,\r
- MOTION_FOURTH,\r
- MOTION_FIFTH,\r
- MAX_MOTIONPAGE,\r
-} MotionPageId;\r
-\r
-class IndoorWalkMotionView {\r
-public:\r
- IndoorWalkMotionView();\r
- ~IndoorWalkMotionView();\r
- static IndoorWalkMotionView *GetInstance();\r
- void PreLoad(uint16_t index);\r
- UIViewGroup *WalkMotionViewInit(void);\r
- AppGroupView *InitMotionPageFirst(void);\r
- AppGroupView *InitMotionPageSecond(void);\r
- AppGroupView *InitMotionPageThird(void);\r
- AppGroupView *InitMotionPageFourth(void);\r
- AppGroupView *InitMotionPageFifth(void);\r
- void InitialStep(void);\r
-private:\r
- int16_t maxPage = MAX_MOTIONPAGE;\r
- UISwipeView *walkMotionList{nullptr};\r
- MotionPageFirst *motionPageFirst{nullptr};\r
- MotionPageSecond *motionPageSecond{nullptr};\r
- MotionPageThird *motionPageThird{nullptr};\r
- MotionPageFourth *motionPageFourth{nullptr};\r
- MotionPageFifth *motionPageFifth{nullptr};\r
- AppGroupView *recordCard[MAX_MOTIONPAGE]{nullptr};\r
- bool pageStatus[MAX_MOTIONPAGE]{false};\r
-};\r
-} // namespace OHOS\r
-#endif // INDOORWALK_MOTION_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Prepared View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef INDOORWALK_PREPARED_VIEW_H\r
-#define INDOORWALK_PREPARED_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_view_group.h"\r
-#include "common/screen.h"\r
-\r
-namespace OHOS {\r
-class IndoorWalkPreparedView {\r
-public:\r
- IndoorWalkPreparedView();\r
- ~IndoorWalkPreparedView();\r
- static IndoorWalkPreparedView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- bool InitBatteryView();\r
- bool InitHeartbeatView();\r
- bool InitLableVIew();\r
- void IndoorWalkHeartbeatStop();\r
- void IndoorWalkHeartbeatStart();\r
- void RefreshHeartbeatData(int value);\r
-\r
-private:\r
- UILabel *timeLabel{nullptr};\r
- UIImageView *battery{nullptr};\r
- UILabel *batteryLable{nullptr};\r
- UIImageAnimatorView *imageAnimator{nullptr};\r
- UILabel *heartRateLabel{nullptr};\r
- UILabel *titleLabel{nullptr};\r
- UIButton *walkButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // INDOORWALK_PREPARED_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Presenter\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef INDOORWALK_PRESENTER_H\r
-#define INDOORWALK_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "components/ui_label.h"\r
-#include "NativeLauncher.h"\r
-#include "NativeAbility.h"\r
-#include "components/ui_swipe_view.h"\r
-\r
-\r
-namespace OHOS {\r
-enum IndoorWalkPresenterNum : uint8_t {\r
- INDOORWALKPREPAREDVIEW = 0,\r
- INDOORWALKMOTIONVIEW,\r
- CUSTOMIZATIONVIEW,\r
- INDOORWALKENDVIEW,\r
- INDOORWALK_MAX,\r
- };\r
-\r
-static constexpr const char *INDOORWALK_CANCEL_BUTTON = "cancelButton";\r
-static constexpr const char *INDOORWALK_CONFIRM_BUTTON = "confirmButton";\r
-static constexpr const char *WALK_BUTTON = "walkButton";\r
-\r
-static constexpr const char *INDOORWALK_PREPARED_VIEW = "indoorWalkPreparedView";\r
-static constexpr const char *INDOORWALK_MOTION_VIEW = "indoorWalkMotionView";\r
-static constexpr const char *INDOORWALK_END_VIEW = "indoorWalkEndView";\r
-static constexpr const char *CUSTOMIZATION_VIEW = "customizationView";\r
-\r
-static constexpr const char *LABLE_FIRST_TOP = "lableFirstTop";\r
-static constexpr const char *LABLE_FIRST_LEFT = "lableFirstLeft";\r
-static constexpr const char *LABLE_FIRST_RIGHT = "lableFirstRight";\r
-static constexpr const char *LABLE_FIRST_BOTTOM = "lableFirstBottom";\r
-static constexpr const char *LABLE_SECOND_TOP = "lableSecondTop";\r
-static constexpr const char *LABLE_SECOND_LEFT = "lableSecondLeft";\r
-static constexpr const char *LABLE_SECOND_RIGHT = "lableSecondRight";\r
-static constexpr const char *LABLE_THIRD_TOP = "lableThirdTop";\r
-static constexpr const char *LABLE_THIRD_BOTTOM = "lableThirdBottom";\r
-static constexpr const char *LABLE_FOURTH = "lableFourth";\r
-\r
-static constexpr const char *IMAGE_FIRST_TOP = "imageFirstTop";\r
-static constexpr const char *IMAGE_FIRST_LEFT = "imageFirstLeft";\r
-static constexpr const char *IMAGE_FIRST_RIGHT = "imageFirstRight";\r
-static constexpr const char *IMAGE_FIRST_BOTTOM = "imageFirstBottom";\r
-static constexpr const char *IMAGE_SECOND_TOP = "imageSecondTop";\r
-static constexpr const char *IMAGE_SECOND_LEFT = "imageSecondLeft";\r
-static constexpr const char *IMAGE_SECOND_RIGHT = "imageSecondRight";\r
-static constexpr const char *IMAGE_THIRD_TOP = "imageThirdTop";\r
-static constexpr const char *IMAGE_THIRD_BOTTOM = "imageThirdBottom";\r
-static constexpr const char *IMAGE_FOURTH = "imageFourth";\r
-\r
-static constexpr const char *TIME_BUTTON = "timeView"; // 时间\r
-static constexpr const char *DISTANCES_BUTTON = "distancesView"; // 距离\r
-static constexpr const char *HEART_BUTTON = "heartView"; // 心率\r
-static constexpr const char *SPEED_BUTTON = "speedView"; // 速度\r
-static constexpr const char *STEPS_BUTTON = "stepsView"; // 步数\r
-\r
-class IndoorWalkView;\r
-class IndoorWalkPresenter : public Presenter<IndoorWalkView>, public UISwipeView::OnSwipeListener,\r
- public UIView::OnClickListener, public UIView::OnLongPressListener,\r
- public UIView::OnDragListener {\r
-public:\r
- IndoorWalkPresenter();\r
- ~IndoorWalkPresenter() override;\r
- static IndoorWalkPresenter *GetInstance();\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- bool OnLongPress(UIView& view, const LongPressEvent& event) override;\r
- void OnSwipe(UISwipeView& view) override;\r
- void HidePageImageView(void);\r
- void ModifiesProperties(const char* id, const char *lable, const char *lableUnit);\r
- void ModifiesPageFirstTop(const char *lable, const char *lableUnit);\r
- void ModifiesPageFirstLeft(const char *lable, const char *lableUnit);\r
- void ModifiesPageFirstRight(const char *lable, const char *lableUnit);\r
- void ModifiesPageFirstBottom(const char *lable, const char *lableUnit);\r
- void ModifiesPageSecondTop(const char *lable, const char *lableUnit);\r
- void ModifiesPageSecondLeft(const char *lable, const char *lableUnit);\r
- void ModifiesPageSecondRight(const char *lable, const char *lableUnit);\r
- void ModifiesPageThirdTop(const char *lable, const char *lableUnit);\r
- void ModifiesPageThirdBottom(const char *lable, const char *lableUnit);\r
- void ModifiesPageFourth(const char *lable, const char *lableUnit);\r
- void SetPropertiesState(const char* id);\r
- void SetCustomizationState(const char *lableUnit);\r
- void InitStepsValue(char *steps);\r
- void ModifiesTime(void);\r
- void ModifiesDistances(float value);\r
- void ModifiesSteps(int step);\r
- void ModifiesHeartRate(int value);\r
-\r
- void ImageOnClick(const char* id);\r
- void CancelButtonOnClick(const char* id);\r
- void ConfirmButtonOnClick(const char* id);\r
- void WalkButtonOnClick(const char* id);\r
- void TimeViewOnClick(const char* id);\r
- void DistancesViewOnClick(const char* id);\r
- void HeartViewOnClick(const char* id);\r
- void SpeedViewOnClick(const char* id);\r
- void StepsViewOnClick(const char* id);\r
-\r
- void LongPressPageFirst();\r
- void LongPressPageSecond();\r
- void LongPressPageThird();\r
- void LongPressPageFourth();\r
-\r
- void DragIndoorWalkPreparedView();\r
- void DragIndoorWalkMotionView();\r
- void DragIndoorWalkEndView();\r
- void DragCustomizationView();\r
-\r
- void SetPropertiesPageFirstTop();\r
- void SetPropertiesPageFirstLeft();\r
- void SetPropertiesPageFirstRight();\r
- void SetPropertiesPageFirstBottom();\r
- void SetPropertiesPageSecondTop();\r
- void SetPropertiesPageSecondLeft();\r
- void SetPropertiesPageSecondRight();\r
- void SetPropertiesPageThirdTop();\r
- void SetPropertiesPageThirdBottom();\r
- void SetPropertiesPageFourth();\r
-\r
-private:\r
- void ClickFunc(const char *buttonName);\r
- void LongPressFunc(const char *buttonId);\r
- void DragFunc(const char *buttonId);\r
- void ModifiesFunc(const char *buttonName, const char *lable, const char *lableUnit);\r
- void SetPropertiesFunc(const char *buttonName);\r
-};\r
-} // namespace OHOS\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef INDOORWALK_VIEW_H\r
-#define INDOORWALK_VIEW_H\r
-\r
-#include "indoorwalk/IndoorWalkEndView.h"\r
-#include "View.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "indoorwalk/IndoorWalkPreparedView.h"\r
-#include "indoorwalk/CustomizationView.h"\r
-#include "indoorwalk/IndoorWalkMotionView.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-constexpr int16_t NUM_WALKCONTAINER = 4;\r
-\r
-class IndoorWalkPresenter;\r
-class IndoorWalkView : public View<IndoorWalkPresenter> {\r
-public:\r
- IndoorWalkView();\r
- ~IndoorWalkView() override;\r
- static IndoorWalkView *GetInstance();\r
- void OnStart() override;\r
- void OnStop() override;\r
- void ChangeView(int16_t hideView, int16_t showView);\r
-\r
-private:\r
- bool ChangeIndoorWalkPreparedView(int16_t hideView, int16_t thisView);\r
- bool ChangeIndoorWalkMotionView(int16_t hideView, int16_t thisView);\r
- bool ChangeCustomizationView(int16_t hideView, int16_t thisView);\r
- bool ChangeIndoorWalkEndView(int16_t hideView, int16_t thisView);\r
- bool CheckViewParam(int16_t hideView, int16_t showView);\r
- IndoorWalkPreparedView *indoorWalkPreparedView{nullptr};\r
- IndoorWalkMotionView *indoorWalkMotionView{nullptr};\r
- CustomizationView *customizationView{nullptr};\r
- IndoorWalkEndView *indoorWalkEndView{nullptr};\r
- UIViewGroup *container[NUM_WALKCONTAINER]{nullptr};\r
- typedef bool (IndoorWalkView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
- PreprosssChangeView preProcessView[NUM_WALKCONTAINER];\r
-};\r
-} // namespace OHOS\r
-#endif // INDOORWALK_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageFifth View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef MOTION_PAGEFIFTH_VIEW_H\r
-#define MOTION_PAGEFIFTH_VIEW_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "ohos_types.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "main/AppGroupView.h"\r
-\r
-namespace OHOS {\r
-class MotionPageFifth : public AppGroupView {\r
-public:\r
- MotionPageFifth();\r
- ~MotionPageFifth() override;\r
- static MotionPageFifth *GetInstance(void);\r
- bool InitView(void *caller) override;\r
- bool InitPageFifthLableView(void);\r
- bool InitPageFifthImageView(void);\r
-private:\r
- UILabel *lableFifth{nullptr};\r
- UIImageView *imageFifthLeft{nullptr};\r
- UIImageView *imageFifthRight{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // MOTION_PAGEFIFTH_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageFirst View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef MOTION_PAGEFIRST_VIEW_H\r
-#define MOTION_PAGEFIRST_VIEW_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "ohos_types.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "main/AppGroupView.h"\r
-\r
-namespace OHOS {\r
-class MotionPageFirst : public AppGroupView {\r
-public:\r
- MotionPageFirst();\r
- ~MotionPageFirst() override;\r
- static MotionPageFirst *GetInstance(void);\r
- bool InitView(void *caller) override;\r
- bool InitPageFirstImageView(void);\r
- bool InitPageFirstLableTopView(void);\r
- bool InitPageFirstLableLeftView(void);\r
- bool InitPageFirstLableRightView(void);\r
- bool InitPageFirstLableBottomView(void);\r
- void HideInitPageFirstImageView(void);\r
- void ShowInitPageFirstImageView(void);\r
- UILabel *GetLableFirstTop(void);\r
- UILabel *GetLableUnitFirstTop(void);\r
- UILabel *GetLableFirstLeft(void);\r
- UILabel *GetLableUnitFirstLeft(void);\r
- UILabel *GetLableFirstRight(void);\r
- UILabel *GetLableUnitFirstRight(void);\r
- UILabel *GetLableFirstBottom(void);\r
- UILabel *GetLableUnitFirstBottom(void);\r
-private:\r
- void SetLableTemplate(UILabel *label);\r
- void SetUnitLableTemplate(UILabel *label);\r
- UILabel *lableFirstTop{nullptr};\r
- UILabel *lableFirstLeft{nullptr};\r
- UILabel *lableFirstRight{nullptr};\r
- UILabel *lableFirstBottom{nullptr};\r
- UILabel *lableUnitFirstTop{nullptr};\r
- UILabel *lableUnitFirstLeft{nullptr};\r
- UILabel *lableUnitFirstRight{nullptr};\r
- UILabel *lableUnitFirstBottom{nullptr};\r
- UIImageView *backGroundFirst{nullptr};\r
- UIImageView *imageFirstTop{nullptr};\r
- UIImageView *imageFirstLeft{nullptr};\r
- UIImageView *imageFirstRight{nullptr};\r
- UIImageView *imageFirstBottom{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // MOTION_PAGEFIRST_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageFourth View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef MOTION_PAGEFOURTH_VIEW_H\r
-#define MOTION_PAGEFOURTH_VIEW_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "ohos_types.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "main/AppGroupView.h"\r
-\r
-namespace OHOS {\r
-class MotionPageFourth : public AppGroupView {\r
-public:\r
- MotionPageFourth();\r
- ~MotionPageFourth() override;\r
- static MotionPageFourth *GetInstance(void);\r
- bool InitView(void *caller) override;\r
- bool InitPageFourthLableView(void);\r
- bool InitPageFourthImageView(void);\r
- void HideInitPageFourthImageView(void);\r
- void ShowInitPageFourthImageView(void);\r
- UILabel *GetLableFourth(void);\r
- UILabel *GetLableUnitFourth(void);\r
-private:\r
- UILabel *lableFourth{nullptr};\r
- UILabel *lableUnitFourth{nullptr};\r
- UIImageView *backGroundFourth{nullptr};\r
- UIImageView *imageFourth{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // MOTION_PAGEFOURTH_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageSecond View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef MOTION_PAGESECOND_VIEW_H\r
-#define MOTION_PAGESECOND_VIEW_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "ohos_types.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "main/AppGroupView.h"\r
-\r
-namespace OHOS {\r
-class MotionPageSecond : public AppGroupView {\r
-public:\r
- MotionPageSecond();\r
- ~MotionPageSecond() override;\r
- static MotionPageSecond *GetInstance(void);\r
- bool InitView(void *caller) override;\r
- bool InitPageSecondImageView(void);\r
- bool InitPageSecondLableTopView(void);\r
- bool InitPageSecondLableLeftView(void);\r
- bool InitPageSecondLableRightView(void);\r
- void HideInitPageSecondImageView(void);\r
- void ShowInitPageSecondImageView(void);\r
- UILabel *GetLableSecondTop(void);\r
- UILabel *GetLableUnitSecondTop(void);\r
- UILabel *GetLableSecondLeft(void);\r
- UILabel *GetLableUnitSecondLeft(void);\r
- UILabel *GetLableSecondRight(void);\r
- UILabel *GetLableUnitSecondRight(void);\r
-private:\r
- void SetLableTemplate(UILabel *label);\r
- void SetUnitLableTemplate(UILabel *label);\r
- UILabel *lableSecondTop{nullptr};\r
- UILabel *lableSecondLeft{nullptr};\r
- UILabel *lableSecondRight{nullptr};\r
- UILabel *lableUnitSecondTop{nullptr};\r
- UILabel *lableUnitSecondLeft{nullptr};\r
- UILabel *lableUnitSecondRight{nullptr};\r
- UIImageView *backGroundSecond{nullptr};\r
- UIImageView *imageSecondTop{nullptr};\r
- UIImageView *imageSecondLeft{nullptr};\r
- UIImageView *imageSecondRight{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // MOTION_PAGESECOND_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageThird View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#ifndef MOTION_PAGETHIRD_VIEW_H\r
-#define MOTION_PAGETHIRD_VIEW_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "ohos_types.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "main/AppGroupView.h"\r
-\r
-namespace OHOS {\r
-class MotionPageThird : public AppGroupView {\r
-public:\r
- MotionPageThird();\r
- ~MotionPageThird() override;\r
- static MotionPageThird *GetInstance(void);\r
- bool InitView(void *caller) override;\r
- bool InitPageThirdImageView(void);\r
- bool InitPageThirdLableTopView(void);\r
- bool InitPageThirdLableBottomView(void);\r
- void HideInitPageThirdImageView(void);\r
- void ShowInitPageThirdImageView(void);\r
- UILabel *GetLableThirdTop(void);\r
- UILabel *GetLableUnitThirdTop(void);\r
- UILabel *GetLableThirdBottom(void);\r
- UILabel *GetLableUnitThirdBottom(void);\r
-private:\r
- void SetLableTemplate(UILabel *label);\r
- void SetUnitLableTemplate(UILabel *label);\r
- UILabel *lableThirdTop{nullptr};\r
- UILabel *lableThirdBottom{nullptr};\r
- UILabel *lableUnitThirdTop{nullptr};\r
- UILabel *lableUnitThirdBottom{nullptr};\r
- UIImageView *backGroundThird{nullptr};\r
- UIImageView *imageThirdTop{nullptr};\r
- UIImageView *imageThirdBottom{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // MOTION_PAGETHIRD_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- */\r
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MessageAdapter.h\r
- * Author:\r
- * Create: 2021-11-23\r
- */\r
-\r
-#ifndef MESSAGE_ADAPTER_H\r
-#define MESSAGE_ADAPTER_H\r
-\r
-#include <list>\r
-#include <string>\r
-#include "components/ui_list.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/abstract_adapter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "main/MainModel.h"\r
-#include "main/MessageItemView.h"\r
-\r
-namespace OHOS {\r
-class MessageAdapter : public AbstractAdapter {\r
-public:\r
- explicit MessageAdapter();\r
- ~MessageAdapter() override;\r
-\r
- /* *\r
- * @brief Sets the UIView adapter data, which is a WeatherItem linked list.\r
- *\r
- * @param data Indicates the MessageItem linked list data.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- void SetData(std::list<MessageItem> &data);\r
-\r
- /* *\r
- * @brief Obtains the <b>data</b> size of the UILabel adapter.\r
- *\r
- * @return Returns the <b>data</b> size of the UILabel adapter.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- uint16_t GetCount(void) override;\r
-\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
-\r
- void AddListItem(const MessageItem &item);\r
-\r
- void ClearListItem();\r
-\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
-private:\r
- std::list<MessageItem> listData;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: WeekStep\r
- * Author:\r
- * Create: 2021-09-11\r
- */\r
-\r
-#ifndef MESSAGE_MAIN_VIEW_H\r
-#define MESSAGE_MAIN_VIEW_H\r
-\r
-#include "graphic_types.h"\r
-#include "wearable_log.h"\r
-#include "components/ui_card_page.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "main/MessageModel.h"\r
-#include "main/MessageAdapter.h"\r
-\r
-namespace OHOS {\r
-class MessageMainView : public UICardPage {\r
-public:\r
- MessageMainView();\r
- ~MessageMainView() override;\r
- static MessageMainView *GetInstance(void);\r
- bool InitView();\r
- void PreLoad(void) override;\r
- void VerticalViewInits(void);\r
- void ConfirmDeletion(void);\r
- void CancelDeletion(void);\r
- void ShowMessageList(void);\r
- void DeletionView(void);\r
- void NoNotify(void);\r
- void NewNotify(void);\r
- void RefreshMessageList(std::vector<MessageItem> item);\r
- bool InitScrollData();\r
- MessageAdapter *listAdapter{nullptr};\r
- UIList *contentList{nullptr}; // 列表\r
-private:\r
- UILabel *messageLables{nullptr}; // 无消息\r
- UILabel *messageLable{nullptr}; // 通知\r
- UILabel *deletereminder{nullptr}; // 是否删除通知?\r
- UILabelButton *confirm{nullptr}; // 确认\r
- UILabelButton *cancel{nullptr}; // 取消\r
- UIImageView *notice{nullptr}; // 删除图标\r
- UIView::OnClickListener *clickListener{nullptr};\r
- UIView::OnClickListener *confirmListener{nullptr};\r
- UIView::OnClickListener *cancelListener{nullptr};\r
- UIView::OnClickListener *notifyListener{nullptr};\r
- UIView::OnClickListener *newNotifyListener{nullptr};\r
-};\r
-}\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerDisplayView.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#ifndef CALLER_DISPLAY_VIEW_H\r
-#define CALLER_DISPLAY_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_view_group.h"\r
-#include "ohos_types.h"\r
-\r
-namespace OHOS {\r
-class CallerDisplayView {\r
-public:\r
- CallerDisplayView();\r
- ~CallerDisplayView();\r
- UIViewGroup *CreateUIViewGroup();\r
-\r
- static CallerDisplayView *GetInstance();\r
-private:\r
- bool InitAddOnclickevent(void);\r
- bool InitImageViewDisplay(void);\r
- bool InitUILabelDisplay(void);\r
-\r
- UIViewGroup *group{nullptr};\r
- UIView::OnClickListener* clickLeftListener{nullptr};\r
- UIImageView *imageAgreeing{nullptr};\r
- UIImageView *imageDissgree{nullptr};\r
- UILabel *callerDisplay{nullptr};\r
- UILabel *currentTimes{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallingView.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#ifndef CALLING_VIEW_H\r
-#define CALLING_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_view_group.h"\r
-#include "ohos_types.h"\r
-#include "UiConfig.h"\r
-#include "ChangeSliceListener.h"\r
-\r
-\r
-namespace OHOS {\r
-class CallingView {\r
-public:\r
- CallingView();\r
- ~CallingView();\r
- UIViewGroup *CreateUIViewGroup();\r
- UIImageView *GetImageMicrophone();\r
- static CallingView *GetInstance();\r
- UILabel *GetCallingDisplayLabel();\r
- UILabel *GetCallingDurationLabel();\r
-private:\r
- bool InitAddOnclickevent(void);\r
- bool InitImageViewDisplay(void);\r
- bool InitUILabelDisplay(void);\r
-\r
- UIImageView *imageMicrophone{nullptr};\r
- UIViewGroup *group{nullptr};\r
- UIView::OnClickListener* clickLeftListener{nullptr};\r
- UIImageView *imageHandUp{nullptr};\r
- UIImageView *imageHorns{nullptr};\r
- UILabel *callerDisplay{nullptr};\r
- UILabel *currentTimes{nullptr};\r
- UILabel *callDuration{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: DialingScreenView.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#ifndef DIALING_SCREEN_VIEW_H\r
-#define DIALING_SCREEN_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_view_group.h"\r
-#include "ohos_types.h"\r
-\r
-namespace OHOS {\r
-class DialingScreenView {\r
-public:\r
- DialingScreenView();\r
- ~DialingScreenView();\r
- UIViewGroup *CreateUIViewGroup();\r
-\r
- static DialingScreenView *GetInstance();\r
-private:\r
- bool InitUILabelDisplay();\r
-\r
- UIViewGroup *group{nullptr};\r
- UIView::OnClickListener* clickLeftListener{nullptr};\r
- UILabel *dialingId{nullptr};\r
- UILabel *dialingTime{nullptr};\r
- UILabel *currentTimes{nullptr};\r
- UIImageView *handup{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MainCallingPresenter.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#ifndef MAIN_CALLING_PRESENTER_H\r
-#define MAIN_CALLING_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "ohos_types.h"\r
-#include "callerlog/CallerLogModel.h"\r
-#include "main/VolumeSettingView.h"\r
-#include "main/VolumeSettingPresenter.h"\r
-\r
-namespace OHOS {\r
-class MainCallingView;\r
-class MainCallingPresenter : public Presenter<MainCallingView>, public UIView::OnClickListener {\r
-public:\r
- MainCallingPresenter();\r
- ~MainCallingPresenter() override;\r
- static MainCallingPresenter *GetInstance();\r
-\r
- void HonrsViewChange();\r
- bool CallingViewDisplay();\r
- bool InitPointerValue();\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
- VolumeSettingView *GetvolumeSetting();\r
-private:\r
- int changeImage{0};\r
- bool HintsHandupClick();\r
- VolumeSettingView *volumeSetting{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MainCallingView.h\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#ifndef MAIN_CALLING_VIEW_H\r
-#define MAIN_CALLING_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_view_group.h"\r
-#include "ohos_types.h"\r
-#include "makephone/CallerDisplayView.h"\r
-#include "makephone/CallingView.h"\r
-#include "makephone/DialingScreenView.h"\r
-#include "makephone/WaitingHintsView.h"\r
-\r
-namespace OHOS {\r
-class MainCallingPresenter;\r
-class MainCallingView : public View<MainCallingPresenter> {\r
-public:\r
- MainCallingView();\r
- ~MainCallingView() override;\r
-\r
- void OnStart() override;\r
-\r
- static MainCallingView *GetInstance();\r
- UIViewGroup *GetDisplayGroup();\r
- UIViewGroup *GetCallingGroup();\r
- UIViewGroup *GetScreenGroup();\r
- UIViewGroup *GetWaitingGroup();\r
- CallingView *GetCallingView();\r
-private:\r
- bool InitPointerValue();\r
- UIViewGroup *displayGroup{nullptr};\r
- UIViewGroup *callingGroup{nullptr};\r
- UIViewGroup *screenGroup{nullptr};\r
- UIViewGroup *waitingGroup{nullptr};\r
- CallerDisplayView *displayView{nullptr};\r
- CallingView *callView{nullptr};\r
- DialingScreenView *screenView{nullptr};\r
- WaitingHintsView *waitingView{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: WaitingHintsView.h\r
- * Author:\r
- * Create: 2022-03-14\r
- */\r
-#ifndef WAITING_HINTS_VIEW_H\r
-#define WAITING_HINTS_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_view_group.h"\r
-#include "ohos_types.h"\r
-\r
-namespace OHOS {\r
-class WaitingHintsView {\r
-public:\r
- WaitingHintsView();\r
- ~WaitingHintsView();\r
- UIViewGroup *CreateUIViewGroup();\r
-\r
- static WaitingHintsView *GetInstance();\r
-private:\r
- bool InitImageViewDisplay(void);\r
- bool InitUILabelDisplay(void);\r
-\r
- UIViewGroup *group{nullptr};\r
- UIView::OnClickListener* clickLeftListener{nullptr};\r
- UIImageView *imageDissgree{nullptr};\r
- UILabel *callerDisplay{nullptr};\r
- UILabel *newcallHints{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: Bluetooth view 设置页面\r
- * Create: 2021-09-5\r
- */\r
-\r
-#ifndef BLUETOOTH_VIEW_H\r
-#define BLUETOOTH_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_radio_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-class PlayerOnDragListener;\r
-class BluetoothView {\r
-public:\r
- BluetoothView();\r
- virtual ~BluetoothView();\r
- UIViewGroup *LoadBluetoothView(void);\r
- static BluetoothView *GetInstance(void);\r
- UIViewGroup *group{nullptr};\r
- UIRadioButton *GetPhoneButton(void);\r
- UIRadioButton *GetWatchButton(void);\r
- UIButton *GetSettingButton(void);\r
- UILabelButton *GetDeleteButton(void);\r
-private:\r
- UILabel *watchLabel{nullptr};\r
- UILabel *phoneLabel{nullptr};\r
- UILabel *bluetoothLabel{nullptr};\r
- UIImageView *watchImage{nullptr};\r
- UIImageView *phoneImage{nullptr};\r
- UIImageView *bluetoothImage{nullptr};\r
- UIRadioButton *watchButton{nullptr};\r
- UIRadioButton *phoneButton{nullptr};\r
- UIButton *settingButton{nullptr};\r
- UILabelButton *deleteButton{nullptr};\r
- int LoadRadioButton();\r
- int LoadButtonView();\r
- int LoadLabelButton();\r
- int LoadLabel();\r
- int LoadImage();\r
-\r
- void SetUpButton(UILabelButton *btn, const Point& point, int16_t width, int16_t height,\r
- UIView::OnClickListener *listener);\r
-};\r
-} // namespace OHOS\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef PLAYERS_CASE_LIST_ADAPTER_H
-#define PLAYERS_CASE_LIST_ADAPTER_H
-
-#include "components/abstract_adapter.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-class PlayersCaseListAdapter : public AbstractAdapter {
-public:
- PlayersCaseListAdapter() {}
- ~PlayersCaseListAdapter();
- UIView *GetView(UIView *inView, int16_t index) override;
- uint16_t GetCount() override;
-
-private:
- void LabelButtonSet();
- UILabelButton *item{nullptr};
- UIView::OnClickListener *listener{nullptr};
-};
-} // namespace OHOS
-#endif // PLAYERS_CASE_LIST_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: QrcodeConnModel.h\r
- * Author:\r
- * Create: 2025-04-24\r
- */\r
-\r
-#ifndef QRCODE_CONN_MODEL_H\r
-#define QRCODE_CONN_MODEL_H\r
-\r
-#include <cstdint>\r
-#include <map>\r
-#include "AppViewIDs.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-class QrcodeConnModel {\r
-public:\r
- static QrcodeConnModel &GetInstance(void);\r
-\r
-private:\r
- QrcodeConnModel();\r
- QrcodeConnModel(const QrcodeConnModel &);\r
- QrcodeConnModel &operator=(const QrcodeConnModel &);\r
- virtual ~QrcodeConnModel();\r
-\r
-private:\r
-};\r
-}\r
-\r
-#endif // QRCODE_CONN_MODEL_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: QrcodeConnPresenter.h\r
- * Author:\r
- * Create: 2025-04-24\r
- */\r
-\r
-#ifndef QRCODE_CONN_PRESENTER_H\r
-#define QRCODE_CONN_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "components/ui_view.h"\r
-#include "qrcode_conn/QrcodeConnView.h"\r
-#include "qrcode_conn/QrcodeConnModel.h"\r
-\r
-namespace OHOS {\r
-\r
-class QrcodeConnView;\r
-class QrcodeConnModel;\r
-class QrcodeConnPresenter : public Presenter<QrcodeConnView>,\r
- public UIView::OnDragListener {\r
-public:\r
- QrcodeConnPresenter();\r
- ~QrcodeConnPresenter() override;\r
- static QrcodeConnPresenter *GetInstance();\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
-private:\r
-};\r
-}\r
-\r
-#endif // QRCODE_CONN_PRESENTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: QrcodeConnView.h\r
- * Author:\r
- * Create: 2025-04-24\r
- */\r
-\r
-#ifndef QRCODE_CONN_VIEW_H\r
-#define QRCODE_CONN_VIEW_H\r
-\r
-#include <string>\r
-#include "View.h"\r
-#include "components/root_view.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "components/ui_label.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_qrcode.h"\r
-\r
-namespace OHOS {\r
-\r
-class QrcodeConnPresenter;\r
-class QrcodeConnView : public View<QrcodeConnPresenter> {\r
-public:\r
- QrcodeConnView();\r
- ~QrcodeConnView() override;\r
-\r
- static QrcodeConnView *GetInstance();\r
-\r
- void OnStart() override;\r
- void OnStop() override;\r
- void InitView();\r
- void DeInit();\r
-\r
-private:\r
- UIScrollView *group_ = nullptr;\r
- UIQrcode *qrcode_ = nullptr;\r
-};\r
-}\r
-#endif // QRCODE_CONN_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: RebootDevice View\r
- * Create: 2022-04-28\r
- */\r
-#ifndef REBOOTDEVICE_VIEW_H\r
-#define REBOOTDEVICE_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-\r
-namespace OHOS {\r
-class RebootDeviceView {\r
-public:\r
- RebootDeviceView();\r
- ~RebootDeviceView();\r
- static RebootDeviceView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- bool ShowUpRebootDeviceView(void);\r
- UILabel *rebootDeviceLabel{nullptr};\r
- UIButton *rebootDeviceButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // REBOOTDEVICE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Reboot Model\r
- * Create: 2022-04-28\r
- */\r
-\r
-#ifndef REBOOT_MODEL_H\r
-#define REBOOT_MODEL_H\r
-#include <stdint.h>\r
-\r
-namespace OHOS {\r
-enum RebootModelView : uint8_t {\r
- REBOOT,\r
- REBOOTDEVICE,\r
- SHUTDOWNDEVICE,\r
-};\r
-\r
-class RebootModel {\r
-public:\r
- ~RebootModel();\r
- static RebootModel *GetInstance(void);\r
- int16_t GetSelectView(void);\r
- void SetSelectViewId(int16_t value);\r
- bool GetExitsView(void);\r
- void SetExitsView(bool value);\r
- void SoftRebootDevice(void);\r
- void ShutdownDevice(void);\r
-\r
-private:\r
- RebootModel();\r
- int16_t selectView{0};\r
- bool exitsView{false};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Reboot Presenter\r
- * Create: 2022-04-28\r
- */\r
-\r
-#ifndef REBOOT_PRESENTER_H\r
-#define REBOOT_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "NativeLauncher.h"\r
-#include "NativeAbility.h"\r
-\r
-namespace OHOS {\r
-enum RebootPresenterNum : uint8_t {\r
- REBOOTVIEW = 0,\r
- REBOOTDEVICEVIEW,\r
- SHUTDOWNDEVICEVIEW,\r
- REBOOT_MAX,\r
-};\r
-\r
-#define REBOOT_BUTTON "rebootButton"\r
-#define SHUTDOWN_BUTTON "shutdownButton"\r
-#define REBOOTDEVICE_BUTTON "rebootDeviceButton"\r
-#define SHUTDOWNDEVICE_BUTTON "shutdownDeviceButton"\r
-\r
-#define REBOOT_VIEW "rebootView"\r
-#define REBOOTDEVICE_VIEW "rebootDeviceView"\r
-#define SHUTDOWNDEVICE_VIEW "shutdownDeviceView"\r
-\r
-class RebootView;\r
-class RebootPresenter : public Presenter<RebootView>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- RebootPresenter();\r
- ~RebootPresenter();\r
- static RebootPresenter *GetInstance();\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
-\r
-private:\r
-};\r
-} // namespace OHOS\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Reboot View\r
- * Create: 2022-04-28\r
- */\r
-#ifndef REBOOT_VIEW_H\r
-#define REBOOT_VIEW_H\r
-\r
-#include "View.h"\r
-#include "rebootdevice/ShutdownDeviceView.h"\r
-#include "rebootdevice/RebootDeviceView.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-\r
-namespace OHOS {\r
-constexpr int16_t NUM_REBOOT_CONTAINER = 3;\r
-\r
-class RebootPresenter;\r
-class RebootView : public View<RebootPresenter> {\r
-public:\r
- RebootView();\r
- ~RebootView() override;\r
- static RebootView *GetInstance();\r
- void OnStart() override;\r
- UIViewGroup *InitShowUpView(void);\r
- void ChangeView(int16_t hideView, int16_t showView);\r
-\r
-private:\r
- bool ChangeRebootView(int16_t hideView, int16_t thisView);\r
- bool ChangeRebootDeviceView(int16_t hideView, int16_t thisView);\r
- bool ChangeShutdownDeviceView(int16_t hideView, int16_t thisView);\r
- bool CheckViewParam(int16_t hideView, int16_t showView);\r
- bool ShowUpRebootView(void);\r
- bool ShowUpShutdownView(void);\r
- UILabel *rebootLabel{nullptr};\r
- UIButton *rebootButton{nullptr};\r
- UILabel *shutdownLabel{nullptr};\r
- UIButton *shutdownButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
- RebootDeviceView *rebootDeviceView{nullptr};\r
- ShutdownDeviceView *shutdownDeviceView{nullptr};\r
- UIViewGroup *container[NUM_REBOOT_CONTAINER]{nullptr};\r
- typedef bool (RebootView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
- PreprosssChangeView preProcessView[NUM_REBOOT_CONTAINER];\r
-};\r
-} // namespace OHOS\r
-#endif // REBOOT_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ShutdownDevice View\r
- * Create: 2022-04-28\r
- */\r
-#ifndef SHUTDOWNDEVICE_VIEW_H\r
-#define SHUTDOWNDEVICE_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-\r
-namespace OHOS {\r
-class ShutdownDeviceView {\r
-public:\r
- ShutdownDeviceView();\r
- ~ShutdownDeviceView();\r
- static ShutdownDeviceView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- bool ShowUpShutdownDeviceView(void);\r
- UILabel *shutdownDeviceLabel{nullptr};\r
- UIButton *shutdownDeviceButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // SHUTDOWNDEVICE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardAdapter.h
- * Author:
- * Create: 2021-09-18
- */
-
-#ifndef SET_CARD_ADAPTER_H
-#define SET_CARD_ADAPTER_H
-
-#include <list>
-#include <string>
-#include "components/ui_list.h"
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/abstract_adapter.h"
-#include "UiConfig.h"
-#include "wearable_log.h"
-#include "set_card/SetCardItem.h"
-
-namespace OHOS {
-class SetCardAdapter : public AbstractAdapter {
-public:
- explicit SetCardAdapter();
- ~SetCardAdapter() override;
-
- uint16 GetCount(void) override;
-
- UIView *GetView(UIView *inView, int16 index) override;
-
- void AddListItem(const CardInfo &item);
-
- void SetItemClickListener(UIView::OnClickListener *itemClickListener)
- {
- itemClickListener_ = itemClickListener;
- }
-
- void ClearItem(void);
-
-private:
- std::list<CardInfo> listData_;
- UIView::OnClickListener *itemClickListener_;
-};
-}
-#endif
\ No newline at end of file
+++ /dev/null
-/**\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description:\r
- * Author:\r
- * Create:\r
- */\r
-\r
-#ifndef SET_CARD_DELETE_VIEW_H\r
-#define SET_CARD_DELETE_VIEW_H\r
-\r
-#include "components/ui_label_button.h"\r
-#include "set_card/SetCardPresenter.h"\r
-\r
-namespace OHOS {\r
-class SetCardDeleteView : public UIViewGroup {\r
-public:\r
- SetCardDeleteView(SetCardPresenter *presenter);\r
- ~SetCardDeleteView() override;\r
- bool InitView();\r
-private:\r
- SetCardPresenter *presenter_;\r
- UILabelButton confirmBtn;\r
- UILabelButton cancelBtn;\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: SetCardItem.h\r
- * Author:\r
- * Create: 2021-11-23\r
- */\r
-\r
-#ifndef SET_CARD_ITEM_H\r
-#define SET_CARD_ITEM_H\r
-\r
-#include <cstdint>\r
-#include <map>\r
-#include "components/ui_view.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "main/MainModel.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-\r
-class SetCardItem : public UIViewGroup {\r
-public:\r
- SetCardItem();\r
- ~SetCardItem() override;\r
- void SetItemInfo(const CardInfo &cardInfo);\r
- void SetOnClickListener(OnClickListener *onClickListener);\r
-private:\r
- void SetUpChild();\r
- UIImageView cardImg_;\r
- CardInfo cardInfo_;\r
-};\r
-\r
-}\r
-\r
-#endif // SET_CARD_ITEM_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardModel.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SET_CARD_MODEL_H
-#define SET_CARD_MODEL_H
-
-#include <cstdint>
-#include <map>
-#include "AppViewIDs.h"
-#include "UiConfig.h"
-#include "set_card/SetCardPresenter.h"
-#include "set_card/SetCardItem.h"
-
-namespace OHOS {
- class SetCardModel {
- public:
- static SetCardModel &GetInstance(void);
- uint8_t *GetCardShowList(void);
- uint8_t GetCardShowCount(void) const;
- void InitCardShowList(void);
- void SetSelectedCardIndex(uint8_t cardIndex);
- uint8_t GetSelectedCardIndex(void) const;
- void DeleteCardSetting(void);
- void SetSelectedCard(uint8_t cardId);
- uint8_t GetSelectedCard(void);
- private:
- SetCardModel();
- SetCardModel(const SetCardModel &);
- SetCardModel &operator=(const SetCardModel &);
- virtual ~SetCardModel();
-
- uint8_t cardShowList[CARD_SETTING_COUNT_MAX] = { 0 };
- uint8_t cardShowCount{0};
- uint8_t selectedCardIndex{0};
- uint8_t selectedCardId{MAX_CARD};
- };
-}
-
-#endif // SET_CARD_MODEL_H
\ No newline at end of file
+++ /dev/null
-/**\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description:\r
- * Author:\r
- * Create:\r
- */\r
-\r
-#ifndef SET_CARD_NO_CARD_VIEW_H\r
-#define SET_CARD_NO_CARD_VIEW_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "set_card/SetCardPresenter.h"\r
-\r
-namespace OHOS {\r
-class SetCardNoCardView : public UIViewGroup {\r
-public:\r
- SetCardNoCardView(SetCardPresenter *presenter);\r
- ~SetCardNoCardView() override;\r
- bool InitView();\r
-private:\r
- SetCardPresenter *presenter_;\r
- UILabelButton addBtn;\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardPresenter.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SET_CARD_PRESENTER_H
-#define SET_CARD_PRESENTER_H
-
-#include "Presenter.h"
-#include "components/ui_list.h"
-#include "components/ui_view.h"
-#include "main/ModelListenerSample.h"
-
-namespace OHOS {
-
-static const char *SET_CARD_ADD = "setcardadd";
-static const char *SET_CARD_DEL = "setcarddel";
-static const char *SET_CARD_DEL_CONFIRM = "setcarddelconfirm";
-static const char *SET_CARD_DEL_CANCEL = "setcarddelcancel";
-static const char *SET_CARD_IMG = "setcardimg";
-
-const uint16_t MISS_SET_CARD_OPERATION_TIME = 3000;
-
-class SetCardView;
-class SetCardModel;
-class SetCardPresenter : public Presenter<SetCardView>,
- public UIView::OnClickListener, public ModelListenerSample,
- public ListScrollListener {
-public:
- SetCardPresenter();
- ~SetCardPresenter() override;
-
- bool OnClick(UIView &view, const ClickEvent &event) override;
- void OnScrollStart(int16_t index, UIView *view) override;
- void OnScrollEnd(int16_t index, UIView *view) override;
- void OnItemSelected(int16_t index, UIView* view) override;
- void OnTickEvent() override;
- void Notify() override {}
- void InitCardShowList(void);
- uint8_t *GetCardShowList(void);
- uint8_t GetCardShowCount(void) const;
- void SetSelectedCard(uint8_t cardId);
- uint8_t GetSelectedCard(void);
- void SetSelectedCardIndex(uint8_t cardIndex);
-private:
- void GoToMainView(void);
- void ResetTickTimer(void);
- SetCardModel *model{nullptr};
- uint64_t startTime{0};
-};
-}
-
-#endif // SET_CARD_PRESENTER_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardView.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SET_CARD_VIEW_H
-#define SET_CARD_VIEW_H
-
-#include "View.h"
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "components/ui_toggle_button.h"
-#include "ChangeSliceListener.h"
-#include "UiConfig.h"
-#include "set_card/SetCardAdapter.h"
-#include "set_card/SetCardModel.h"
-#include "set_card/SetCardDeleteView.h"
-#include "set_card/SetCardNoCardView.h"
-
-namespace OHOS {
-class SetCardPresenter;
-
-class SetCardView : public View<SetCardPresenter> {
-public:
- SetCardView();
- ~SetCardView() override;
-
- static SetCardView *GetInstance()
- {
- static SetCardView instance;
- return &instance;
- }
-
- void OnStart() override;
- void ShowDeleteView(bool show);
- void ShowAddView(bool show);
- void RefreshCardList(void);
- void SaveSelectCardIndex(void);
-private:
- void SetUpListInfo(void);
- void SetUpListView(void);
- void SetUpDeleteView(void);
- void SetUpAddView(void);
- void ShowCardListView(bool show);
- UIImageView addImg_;
- UIList contentList_;
- UIImageView delImg_;
-
- SetCardDeleteView *deleteView_{nullptr};
- SetCardNoCardView *noCardView_{nullptr};
- SetCardAdapter *setCardAdapter_{nullptr};
- uint32_t scrollIndex_{0};
-};
-}
-#endif // SET_CARD_VIEW_H
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: SetDialInfo.h\r
- * Author:\r
- * Create: 2021-11-23\r
- */\r
-\r
-#ifndef SET_DIAL_INFO_H\r
-#define SET_DIAL_INFO_H\r
-#include <cstdint>\r
-#include <vector>\r
-#include <string>\r
-#include "common/image_cache_manager.h"\r
-namespace OHOS {\r
- typedef struct {\r
- uint8_t dialFlag; /* 1:离线表盘 0:预制表盘 */\r
- uint8_t id; /* 仅预制表盘使用 */\r
- uint32_t resId; /* 仅离线表盘使用 */\r
- std::string dialFullName; /* 仅离线表盘使用 */\r
- std::string imageFullName; /* 仅预制表盘使用 */\r
- std::string dialName;\r
- std::string description; /* 仅离线表盘使用 */\r
- ImageInfo *preImageInfo;\r
- uint8_t capability;\r
- } SetDialInfo;\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetDialModel.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SET_DIAL_MODEL_H
-#define SET_DIAL_MODEL_H
-#include "AppViewIDs.h"
-#include "UiConfig.h"
-#include "set_dial/SetDialInfo.h"
-
-namespace OHOS {
- class SetDialModel {
- public:
- static SetDialModel &GetInstance(void);
- void LoadAllDial(void);
- size_t GetDialCount(void);
- std::vector<SetDialInfo>& GetDialInfo(void);
- std::vector<SetDialInfo>& GetAmbientDialInfo(void);
- void ClearDialInfo(void);
- void SaveDialSetting(uint8_t pageIndex);
- uint8_t GetPageIndex(void);
- private:
- void LoadAllDialFromRam(void);
- void LoadAllDialFromFs(void);
- SetDialModel();
- SetDialModel(const SetDialModel &);
- SetDialModel &operator=(const SetDialModel &);
- virtual ~SetDialModel();
- int32_t ParseDialHeader(const std::string &dialFileName, SetDialInfo &dialInfo);
- std::vector<SetDialInfo> dialInfoList;
- std::vector<SetDialInfo> aodDialInfoList;
- };
-}
-
-#endif // SET_DIAL_MODEL_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetDialPresenter.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SET_DIAL_PRESENTER_H
-#define SET_DIAL_PRESENTER_H
-#include "set_dial/SetDialInfo.h"
-#include "set_dial/SetDialModel.h"
-#include "Presenter.h"
-#include "components/ui_view.h"
-#include "components/ui_roller_view.h"
-#include "key/KeyInputListener.h"
-#include "main/ModelListenerSample.h"
-#include "components/ui_coverflow_view.h"
-#include "main/MainModel.h"
-
-namespace OHOS {
-
-const uint16_t MISS_DIAL_OPERATION_TIME = 3000;
-
-class SetDialView;
-class SetDialModel;
-class SetDialPresenter : public Presenter<SetDialView>,
- public UIView::OnClickListener, public ModelListenerSample,
- public UICoverflowView::OnCoverflowScrollListener,
- public UIRollerView::OnScrollListener {
-public:
- SetDialPresenter();
- ~SetDialPresenter() override;
- static SetDialPresenter *GetCurrentInstance();
- void SpecifyDialSetting(const DialSetting &setting);
- size_t GetDialCount(void);
- std::vector<SetDialInfo>& GetDialInfo(void);
- uint8_t GetPageIndex(void);
- void OnTickEvent() override;
- void Notify() override {}
- void OnStop() override;
- bool OnScroll() override;
- void OnScroll(UIRollerView* roller, std::string currentItemName, float currentItemAngle) override;
- bool OnClick(UIView &view, const ClickEvent &event) override;
- void ResetTickTimer(void);
-private:
- void OnClickAction(void);
- SetDialModel *model{nullptr};
- uint64_t startTime{0};
- bool isSpecific = false;
- DialSetting specificSetting;
-};
-}
-
-#endif // SET_DIAL_PRESENTER_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetDialView.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SET_DIAL_VIEW_H
-#define SET_DIAL_VIEW_H
-
-#include "View.h"
-#include "components/ui_view_group.h"
-#include "components/ui_coverflow_view.h"
-#include "components/ui_roller_view.h"
-#include "ChangeSliceListener.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint8_t DIVISOR_TWO = 2;
-class SetDialPresenter;
-
-enum class DialStyle {
- COVERFLOW = 0,
- ROLLER,
- STYLE_NUM
-};
-
-class SetDialView : public View<SetDialPresenter> {
-public:
- SetDialView();
- ~SetDialView() override;
-
- static SetDialView *GetInstance()
- {
- static SetDialView instance;
- return &instance;
- }
-
- void OnStart() override;
- void CoverflowViewScroll(void);
- void RollerViewScroll(std::string currentItemName, float currentItemAngle);
- uint8_t GetCoverflowPage(void);
-private:
- void SetUpCoverflowView(void);
- void SetUpRollerView(void);
- UICoverflowView coverflow_;
- UIRollerView rollerView_;
- int16_t rollerItemNum_ = 0;
- UILabel label_;
- uint8_t lastIndex_;
-};
-}
-#endif // SET_DIAL_VIEW_H
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
- * Description: SetDialStyleModel.h
- * Author:
- * Create: 2024-06-06
- */
-
-#ifndef SET_DIAL_STYLE_MODEL_H
-#define SET_DIAL_STYLE_MODEL_H
-#include "set_dial/SetDialView.h"
-#include "components/ui_view.h"
-
-namespace OHOS {
-class SetDialStyleModel {
-public:
- static SetDialStyleModel& GetInstance()
- {
- static SetDialStyleModel model;
- return model;
- }
-
- void SetStyle(DialStyle style);
- DialStyle GetStyle();
-
-private:
- constexpr static uint8_t MAX_LEN = 32;
- const char key_[MAX_LEN] = "set_dial_style";
- struct {
- const DialStyle style;
- const char value[MAX_LEN];
- } values_[static_cast<int>(DialStyle::STYLE_NUM)] = {
- {DialStyle::COVERFLOW, "DialStyle::COVERFLOW"},
- {DialStyle::ROLLER, "DialStyle::ROLLER"},
- };
- SetDialStyleModel();
- ~SetDialStyleModel();
- SetDialStyleModel(const SetDialStyleModel&) = delete;
- SetDialStyleModel& operator=(const SetDialStyleModel&) = delete;
-};
-} // OHOS
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
- * Description: SetDialStylePresenter.h
- * Author:
- * Create: 2024-06-06
- */
-
-#ifndef SET_DIAL_STYLE_PRESENTER_H
-#define SET_DIAL_STYLE_PRESENTER_H
-#include "set_dial/SetDialView.h"
-#include "components/ui_view.h"
-#include "Presenter.h"
-
-namespace OHOS {
-class SetDialStyleModel;
-class SetDialStyleView;
-class SetDialStylePresenter : public Presenter<SetDialStyleView, SetDialStyleModel>,
- public UIView::OnClickListener,
- public UIView::OnDragListener {
-public:
- SetDialStylePresenter();
- ~SetDialStylePresenter() override;
- SetDialStylePresenter(const SetDialStylePresenter&) = delete;
- SetDialStylePresenter& operator=(const SetDialStylePresenter&) = delete;
- bool OnClick(UIView &view, const ClickEvent &event) override;
- bool OnDrag(UIView& view, const DragEvent& event) override;
- DialStyle GetCurrentStyle() const
- {
- return curStyle_;
- }
-
-private:
- DialStyle curStyle_ = DialStyle::COVERFLOW;
-};
-
-} // OHOS
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
- * Description: SetDialStyleView.h
- * Author:
- * Create: 2024-06-06
- */
-
-#ifndef SET_DIAL_STYLE_VIEW_H
-#define SET_DIAL_STYLE_VIEW_H
-#include "components/ui_view.h"
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_toggle_button.h"
-#include "set_dial/SetDialView.h"
-#include "View.h"
-
-namespace OHOS {
-class SetDialStylePresenter;
-class SetDialStyleView : public View<SetDialStylePresenter> {
-public:
- SetDialStyleView();
- ~SetDialStyleView() override;
- SetDialStyleView(const SetDialStyleView &) = delete;
- SetDialStyleView& operator=(const SetDialStyleView &) = delete;
-
- void OnStart() override;
- void OnClick(UIView &view);
-
-private:
- UILabel labelCover_;
- UILabel labelRoller_;
- UILabel labelEnableAod_;
- UIToggleButton btnCover_;
- UIToggleButton btnRoller_;
- UIToggleButton btnEnableAod_;
- struct {
- UIToggleButton *btn;
- DialStyle style;
- } styleTable_[static_cast<int>(DialStyle::STYLE_NUM)] = {
- {&btnCover_, DialStyle::COVERFLOW},
- {&btnRoller_, DialStyle::ROLLER},
- };
-};
-} // OHOS
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.\r
- * Description: ota local update\r
- * Author: wangle\r
- * Create: 2025-5-6\r
- */\r
-#ifndef OTA_COMMON_H\r
-#define OTA_COMMON_H\r
-\r
-#define MODLE_THREAD_STACK_SIZE 4096\r
-\r
-#define LOCAL_UPDATE_PROGRESS_5 5\r
-#define LOCAL_UPDATE_PROGRESS_25 25\r
-#define LOCAL_UPDATE_PROGRESS_40 40\r
-#define LOCAL_UPDATE_PROGRESS_50 50\r
-#define LOCAL_UPDATE_PROGRESS_100 100\r
-\r
-#define SLEEP_TIME_S 1000\r
-\r
-#define SLIDING_LENGTH 30\r
-\r
-#define VIEW_MESSAGE_X 53\r
-#define VIEW_MESSAGE_Y 148\r
-#define VIEW_MESSAGE_W 360\r
-#define VIEW_MESSAGE_H 20\r
-#define VIEW_MESSAGE_FONT 20\r
-\r
-#define VIEW_PROGRESS_X 73\r
-#define VIEW_PROGRESS_Y 226\r
-#define VIEW_PROGRESS_W 320\r
-#define VIEW_PROGRESS_H 10\r
-\r
-#define VIEW_UPDATE_X 173\r
-#define VIEW_UPDATE_Y 312\r
-#define VIEW_UPDATE_W 120\r
-#define VIEW_UPDATE_H 40\r
-#define VIEW_UPDATE_FONT 16\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.\r
- * Description: ota local update\r
- * Author: wangle\r
- * Create: 2025-5-6\r
- */\r
-#ifndef OTA_MODEL_H\r
-#define OTA_MODEL_H\r
-#include "osal_task.h"\r
-#include "osal_wait.h"\r
-#include "Model.h"\r
-#include <atomic>\r
-namespace OHOS {\r
-\r
-enum class TaskType { UpdateInfo, LocalUpdate, Unknown };\r
-\r
-struct LocalUpdateData {\r
- uint32_t fileSize;\r
-};\r
-\r
-class OTAPresenter;\r
-class OTAModel : public Model<OTAPresenter> {\r
-public:\r
- OTAModel();\r
- ~OTAModel();\r
-\r
-public:\r
- bool ModelRunTask(TaskType type, void *data);\r
-\r
-protected:\r
- void SwitchTask();\r
- void UpdateInfo(void *data);\r
- void LocalUpdate(void *data);\r
-\r
-protected:\r
- void DelayRebootFor5S();\r
- void UpdatePercentCallback(uint32_t percent);\r
-\r
-protected:\r
- static int OSALKthreadCallback(void *data);\r
- static int WaitCondition(const void *data);\r
-\r
-protected:\r
- static void OtaUpdatePercentCallback(uint32_t percent);\r
-\r
-private:\r
- osal_task *task = nullptr;\r
- osal_wait wait;\r
- std::atomic_bool isIdel;\r
- TaskType type = TaskType::Unknown;\r
- void *data = nullptr;\r
-};\r
-\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.\r
- * Description: ota local update\r
- * Author: wangle\r
- * Create: 2025-5-6\r
- */\r
-#ifndef OTA_PRESENTER_H\r
-#define OTA_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "components/ui_view.h"\r
-#include "set_ota/OTAModel.h"\r
-\r
-namespace OHOS {\r
-\r
-class OTAView;\r
-class OTAPresenter : public Presenter<OTAView, OTAModel>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- void OnStart() override;\r
- void OnStop() override;\r
-\r
-public:\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
-public:\r
- // Model调用\r
- void SetPackageInfo(const char* filePath, uint32_t fileSize);\r
- void SetUpdateProgress(const char* message, uint8_t progress);\r
- void SetErrorMessage(const char* message);\r
- void SetMessage(const char* message);\r
-protected:\r
- void SaveSystemScreen();\r
- void BackSystemScreen();\r
-private:\r
- bool updateEnable = true;\r
- const char* updateFilePath = nullptr;\r
- uint32_t updateFileSize = 0;\r
- uint32_t briScrStatus = 0;\r
-};\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.\r
- * Description: ota local update\r
- * Author: wangle\r
- * Create: 2025-5-6\r
- */\r
-#ifndef OTA_VIEW_H\r
-#define OTA_VIEW_H\r
-\r
-#include "View.h"\r
-#include "Presenter.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_box_progress.h"\r
-#include "components/ui_label_button.h"\r
-\r
-namespace OHOS {\r
-class OTAPresenter;\r
-class OTAView : public View<OTAPresenter> {\r
-public:\r
- OTAView(){};\r
- ~OTAView(){};\r
- void OnStart() override;\r
- void OnStop() override;\r
- void InitMessageCtrl();\r
- void InitProgressCtrl();\r
- void InitUpdateCtrl();\r
- void AddCtrlToView();\r
- void DeInitMessageCtrl();\r
- void DeInitProgressCtrl();\r
- void DeInitUpdateCtrl();\r
-\r
-public:\r
- void SetUpdateEnable();\r
- void SetUpdateDisable();\r
- void SetMessage(const char *msg);\r
- void SetProgress(uint8_t progress);\r
-\r
-private:\r
- UILabel *message = nullptr;\r
- UIBoxProgress *progress = nullptr;\r
- UILabelButton *update = nullptr;\r
-};\r
-} // namespace OHOS\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.
- * Description: SetDesktopModel
- * Author: Hisi Graphic Team
- * Created: 2025-4
- */
-
-#ifndef SET_DESKTOP_MODEL_H
-#define SET_DESKTOP_MODEL_H
-
-#include <cstdint>
-#include <map>
-#include "AppViewIDs.h"
-#include "UiConfig.h"
-
-typedef enum {
- APPLIST_STYLE,
- HEXAGONS_STYLE,
- FOOTBALL_STYLE,
- WATERFALL_STYLE
-} DesktopStyle;
-
-namespace OHOS {
- class SetDesktopModel {
- public:
- static SetDesktopModel &GetInstance(void);
- DesktopStyle GetDesktopStyle(void);
- void SetDesktopStyle(DesktopStyle style);
- private:
- SetDesktopModel() = default;
- virtual ~SetDesktopModel() = default;
- };
-}
-
-#endif // SET_DESKTOP_MODEL_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingAdapter.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SETTING_ADAPTER_H
-#define SETTING_ADAPTER_H
-
-#include <list>
-#include <string>
-#include "components/ui_list.h"
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/abstract_adapter.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "settings/SettingModel.h"
-#include "settings/SettingItemView.h"
-
-namespace OHOS {
-class SettingAdapter : public AbstractAdapter {
-public:
- explicit SettingAdapter();
- ~SettingAdapter() override;
-
- /* *
- * @brief Sets the UIView adapter data, which is a SettingItem linked list.
- *
- * @param data Indicates the SettingItem linked list data.
- * @since 1.0
- * @version 1.0
- */
- void SetData(std::list<SettingItem> &data);
-
- /* *
- * @brief Obtains the <b>data</b> size of the UILabel adapter.
- *
- * @return Returns the <b>data</b> size of the UILabel adapter.
- * @since 1.0
- * @version 1.0
- */
- uint16_t GetCount(void) override;
-
- UIView *GetView(UIView *inView, int16_t index) override;
-
- void AddListItem(const SettingItem &item);
-
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)
- {
- itemClickListener = itemclicklistener;
- }
-private:
- std::list<SettingItem> listData;
- UIView::OnClickListener *itemClickListener{nullptr};
-};
-}
-
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.
- * Description: SettingDesktopPage
- * Author: Hisi Graphic Team
- * Created: 2025-4
- */
-
-#ifndef SETTING_DESKTOP_PAGE_H
-#define SETTING_DESKTOP_PAGE_H
-
-#include "View.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "components/ui_toggle_button.h"
-#include "SlicePage.h"
-#include "UiConfig.h"
-#include "settings/SetDesktopModel.h"
-#include "settings/SettingPresenter.h"
-
-namespace OHOS {
-class SettingDesktopPage : public SlicePage<SettingPresenter>,
- public UIView::OnClickListener,
- public UIView::OnDragListener {
-public:
- SettingDesktopPage();
- ~SettingDesktopPage() override;
- void OnStart(void* data) override;
- void UpdateSelectedStyle(DesktopStyle selectedStyle);
- bool OnClick(UIView &view, const ClickEvent &event) override;
- bool OnDrag(UIView& view, const DragEvent& event) override;
-
-private:
- void InitFootballItem();
- void InitWaterfallItem();
- UIScrollView *scrollview{nullptr};
- UILabel titleText;
- UIToggleButton hexagonsBtn;
- UIToggleButton listBtn;
- UIToggleButton footballBtn_;
- UIToggleButton waterfallBtn_;
- UIImageView hexagonsImage;
- UIImageView listImage;
- UIImageView footballImage_;
- UIImageView waterfallImage_;
- UILabel listText;
- UILabel hexagonsText;
- UILabel footballText_;
- UILabel waterfallText_;
-};
-}
-#endif // SETTING_DESKTOP_PAGE_H
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingItem.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SETTING_ITEM_H
-#define SETTING_ITEM_H
-
-#include <cstdint>
-
-namespace OHOS {
-typedef struct {
- uint32_t targetId;
- const char *icon;
- const char *label;
- bool hasSecondMenu;
- bool enableSlideBack;
-} SettingItem;
-}
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingItemView.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SETTING_ITEM_VIEW_H
-#define SETTING_ITEM_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-
-#include "UiConfig.h"
-#include "settings/SettingModel.h"
-
-namespace OHOS {
-class SettingItemView : public UIViewGroup {
-public:
- explicit SettingItemView();
- ~SettingItemView() override;
- virtual void SetItemInfo(const SettingItem itemInfo);
- virtual void SetUpChild();
- bool SlideBackEnabled() const
- {
- return sItemInfo.enableSlideBack;
- }
- uint32_t GetTargetId();
- const char* GetIconId();
-private:
- UIImageView sIcon;
- UILabel sLabel;
- UIImageView sNextImage;
- SettingItem sItemInfo = { VIEW_INVALID, nullptr, nullptr, false, false };
-};
-}
-
-#endif
+++ /dev/null
-/*
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.
- * Description: SettingMainPage
- * Author: Hisi Graphic Team
- * Created: 2025-4
- */
-
-#ifndef SETTING_MAIN_PAGE_H
-#define SETTING_MAIN_PAGE_H
-
-#include "components/ui_scroll_view.h"
-#include "components/ui_label.h"
-#include "components/ui_list.h"
-#include "SlicePage.h"
-#include "settings/SettingAdapter.h"
-#include "settings/SettingPresenter.h"
-
-namespace OHOS {
-class SettingPresenter;
-class SettingMainPage : public SlicePage<SettingPresenter>,
- public UIView::OnClickListener,
- public UIView::OnDragListener {
-public:
- SettingMainPage() = default;
- ~SettingMainPage() override;
-
- void OnStart(void* data) override;
- void RefreshSettingsList(const SettingItem* item, uint8_t count);
- bool OnClick(UIView &view, const ClickEvent &event) override;
- bool OnDrag(UIView& view, const DragEvent& event) override;
-private:
- SettingAdapter *listAdapter{nullptr};
- UIScrollView *scrollView{nullptr};
- UIList *contentList{nullptr};
- UILabel *title{nullptr};
-};
-}
-#endif // SETTING_MAIN_PAGE_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingModel.h
- * Author:
- * Create: 2021-11-23
- */
-
-#ifndef SETTING_MODEL_H
-#define SETTING_MODEL_H
-
-#include <cstdint>
-#include <map>
-#include "AppViewIDs.h"
-#include "UiConfig.h"
-#include "settings/SettingItem.h"
-#include "settings/SettingPresenter.h"
-
-namespace OHOS {
- static const uint16_t SETTING_ITEM_COUNT = 10;
- class SettingModel {
- public:
- static SettingModel &GetInstance(void);
- void InitSettingItem();
- const SettingItem *GetSettinglistItems() const;
- uint8_t GetSettingListNum() const;
- bool GetBlueToothConnectStatus(void);
- void UpdateBlueToothConnectStatus(bool status);
- private:
- SettingModel();
- SettingModel(const SettingModel &);
- SettingModel &operator=(const SettingModel &);
- virtual ~SettingModel();
- SettingItem settings[SETTING_ITEM_COUNT] = { VIEW_INVALID, nullptr, nullptr, false };
- int usedLen;
- bool btConnectStatus{false};
- };
-}
-
-#endif
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingDetailsPage\r
- * Created: 2025-06-05\r
- */\r
-#ifndef SLEEPING_DETAILS_PAGE_H\r
-#define SLEEPING_DETAILS_PAGE_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "SlicePage.h"\r
-#include "main/LoadImg.h"\r
-#include "ui_resource_sleep.h"\r
-#include "sleep/SleepingPresenter.h"\r
-#include "sleep/SleepingView.h"\r
-#include "sleep/SleepingModel.h"\r
-\r
-namespace OHOS {\r
-class SleepingPresenter;\r
-class SleepingDetailsPage : public SlicePage<SleepingPresenter>,\r
- public UIView::OnDragListener {\r
-public:\r
- SleepingDetailsPage();\r
- ~SleepingDetailsPage() override;\r
-\r
- void OnStart(void* data) override;\r
- void InitPage();\r
- void InitNoDeatilPage();\r
- void InitDetailPage();\r
-\r
- void InitSoberingTime();\r
- void InitRapidEyeMovement();\r
- void InitLightSleepTime();\r
- void InitDeepSleepTime();\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- bool GetRecord();\r
- std::string SetTimeText(std::tuple<uint32_t, uint32_t> timeTuple);\r
- void InitActualSleepTime(std::tuple<uint32_t, uint32_t> timeTuple);\r
- void IoadDeatilActualSleepTime();\r
-private:\r
-\r
- UIScrollView *group{nullptr};\r
- UIImageView *detailsSleepView{nullptr};\r
- UILabel *sleep{nullptr};\r
- UILabel *actualSleepTime{nullptr};\r
- UILabel *actualSleepTimeHours{nullptr};\r
- UILabel *actualSleepTimeHoursText{nullptr};\r
- UILabel *actualSleepTimeMinutes{nullptr};\r
- UILabel *actualSleepTimeMinutesText{nullptr};\r
- UIImageView *grayBg{nullptr};\r
-\r
- UIImageView *image1{nullptr};\r
- UILabel *soberingTime_{nullptr};\r
- UILabel *soberingTimeText{nullptr};\r
- UIImageView *image2{nullptr};\r
- UILabel *rapidEyeMovement_ {nullptr};\r
- UILabel *rapidEyeMovementText{nullptr};\r
- UIImageView *image3{nullptr};\r
- UILabel *lightSleepTime_{nullptr};\r
- UILabel *lightSleepTimeText{nullptr};\r
- UIImageView *image4{nullptr};\r
- UILabel *deepSleepTime_{nullptr};\r
- UILabel *deepSleepTimeText{nullptr};\r
-};\r
-}\r
-\r
-#endif // SLEEPING_DETAILS_PAGE_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingMainPage\r
- * Created: 2025-06-05\r
- */\r
-#ifndef SLEEPING_MAIN_PAGE_H\r
-#define SLEEPING_MAIN_PAGE_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "ui_resource_sleep.h"\r
-#include "main/LoadImg.h"\r
-#include "sleep/TargetSleepTime.h"\r
-#include "sleep/SleepingPresenter.h"\r
-#include "sleep/SleepingView.h"\r
-#include "sleep/SleepingModel.h"\r
-\r
-\r
-namespace OHOS {\r
-class SleepingPresenter;\r
-class SleepingMainPage : public SlicePage<SleepingPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- SleepingMainPage();\r
- ~SleepingMainPage() override;\r
-\r
- void OnStart(void* data) override;\r
- void InitNoRecordPage();\r
- void InitRecordPage();\r
- void IoadActualSleepTime(std::tuple<uint32_t, uint32_t> timeTuple);\r
- void IoadTargetTimeButton(std::tuple<uint32_t, uint32_t> timeTuple);\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- void CircleProgress();\r
- void TargetTimeButton();\r
- uint32_t GetSleepingScores();\r
- void InitSleepTimeLabel();\r
- void ScoreDisplay();\r
- bool GetRecord();\r
- void InitScoreDisplayPicture();\r
-private:\r
-\r
- UIImageView *imageViewMain{nullptr};\r
- UILabel *sleep{nullptr};\r
- UIImageView *moonNoRecord{nullptr};\r
- UIImageView *moon{nullptr};\r
- UILabel *noRecord{nullptr};\r
- UILabel *tips{nullptr};\r
-\r
- UILabel *sleepScores_{nullptr};\r
- UILabel *scoreText{nullptr};\r
- UILabel *sleepScore{nullptr};\r
-\r
- UIImageView *scoreDisplayPicture1{nullptr};\r
- UIImageView *scoreDisplayPicture2{nullptr};\r
- UIImageView *scoreDisplayPicture3{nullptr};\r
- UIImageView *scoreDisplayPicture4{nullptr};\r
- UIImageView *scoreDisplayPicture5{nullptr};\r
- UIImageView *setting{nullptr};\r
- UILabel *actualSleepTimeHours{nullptr};\r
- UILabel *actualSleepTimeHoursText{nullptr};\r
- UILabel *actualSleepTimeMinutes{nullptr};\r
- UILabel *actualSleepTimeMinutesText{nullptr};\r
-\r
- UILabelButton *targetTimeButton{nullptr};\r
- UILabel *targetTimeText{nullptr};\r
- UICircleProgress* circleProgress{nullptr};\r
-\r
- UIScrollView *group{nullptr};\r
-};\r
-}\r
-\r
-#endif // SLEEPING_MAIN_PAGE_H\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingModel\r
- * Created: 2025-06-05\r
- */\r
-#ifndef SLEEPING_MODEL_H\r
-#define SLEEPING_MODEL_H\r
-\r
-#include <cstdint>\r
-#include <map>\r
-#include <vector>\r
-#include <string>\r
-#include <sstream>\r
-#include <ctime>\r
-#include <iomanip>\r
-#include "AppViewIDs.h"\r
-#include "UiConfig.h"\r
-#include "graphic_timer.h"\r
-#include "ohos_timer.h"\r
-#include "wearable_log.h"\r
-#include "diag_service.h"\r
-#include "msg_center_device.h"\r
-#include "diag_common.h"\r
-#include "sleep/SleepingPresenter.h"\r
-\r
-namespace OHOS {\r
- static const uint16_t SLEEP_DATA_DATE_RANGE = 20;\r
- static const uint16_t SLEEP_DATA_START_DATA_RANGE = 24;\r
-\r
- #pragma pack(1)\r
- typedef struct {\r
- bool isSend;\r
- char date[SLEEP_DATA_DATE_RANGE];\r
- uint8_t type; // 睡眠类别 深睡 浅睡 快速动眼 清醒\r
- char start[SLEEP_DATA_START_DATA_RANGE];\r
- char end[SLEEP_DATA_START_DATA_RANGE];\r
- char sleepStart[SLEEP_DATA_START_DATA_RANGE];\r
- char sleepEnd[SLEEP_DATA_START_DATA_RANGE];\r
- } SleepData;\r
- #pragma pack()\r
-\r
-\r
- class SleepingModel {\r
- public:\r
- static SleepingModel &GetInstance(void);\r
- void SendData();\r
- uint8_t* SerializeSleepData(const SleepData* sleepData, size_t* outSize);\r
- void SetSleepData();\r
- void SetTime(uint32_t minute);\r
- std::tuple<uint32_t, uint32_t> GetTime();\r
- void SetData();\r
- std::tuple<uint32_t, uint32_t> GetSoberingTime();\r
- std::tuple<uint32_t, uint32_t> GetRapidEyeMovementTime();\r
- std::tuple<uint32_t, uint32_t> GetLightSleepTime();\r
- std::tuple<uint32_t, uint32_t> GetDeepSleepTime();\r
- std::tuple<uint32_t, uint32_t> GetSleepTime();\r
- void SetSoberingTime();\r
- void SetRapidEyeMovementTime();\r
- void SetLightSleepTime();\r
- void SetDeepSleepTime();\r
- bool GetRecord();\r
- uint32_t GetSleepTimeHours();\r
- uint32_t GetSleepTimeMinutes();\r
- std::tuple<uint32_t, uint32_t> MinutesToHours(uint32_t minutes);\r
- uint32_t TimeDiffInMinutes(const std::string& timeStr1, const std::string& timeStr2);\r
- uint32_t GetDetailData(int type);\r
- uint32_t GetTotalSleepTime();\r
-\r
- private:\r
- SleepingModel();\r
- void PrintSleepData(const SleepData *data);\r
- virtual ~SleepingModel();\r
- uint32_t sleepTarget = 0;\r
- std::vector<SleepData> sleepDataVector;\r
- uint32_t soberingTime;\r
- uint32_t eyeMoveTime;\r
- uint32_t lightTime;\r
- uint32_t deepTime;\r
- };\r
-}\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingPresenter\r
- * Created: 2025-06-05\r
- */\r
-\r
-#ifndef SETTING_PRESENTER_H\r
-#define SETTING_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-\r
-namespace OHOS {\r
-class SleepingView;\r
-class SleepingPresenter : public Presenter<SleepingView> {\r
-};\r
-}\r
-\r
-#endif // SETTING_PRESENTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingView\r
- * Created: 2025-06-05\r
- */\r
-\r
-#ifndef SLEEPING_VIEW_H\r
-#define SLEEPING_VIEW_H\r
-\r
-#include "View.h"\r
-namespace OHOS {\r
-enum SLEEPING_PAGES {\r
- SLEEPING_MAIN_PAGE = 1, // 0 is invalid\r
- SLEEPING_DEATIL_PAGE = 2,\r
- SLEEPING_TARGET_PAGE = 3,\r
-};\r
-\r
-class SleepingPresenter;\r
-class SleepingView : public View<SleepingPresenter> {\r
-};\r
-}\r
-#endif // SLEEPING_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetSleepTime\r
- * Created: 2025-06-05\r
- */\r
-\r
-#ifndef TARGET_SLEEP_TIME_H\r
-#define TARGET_SLEEP_TIME_H\r
-\r
-#include "View.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_picker.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "main/LoadImg.h"\r
-#include "sleep/SleepingPresenter.h"\r
-#include "sleep/SleepingView.h"\r
-namespace OHOS {\r
-class TargetSleepTime : public SlicePage<SleepingPresenter>,\r
- public UIPicker::SelectedListener,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- TargetSleepTime() = default;\r
- ~TargetSleepTime() override;\r
-\r
- void OnStart(void* data) override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- void OnPickerStoped(UIPicker& picker) override;\r
- void TargetTimeButton();\r
- void CreatePicker();\r
- void CreateLabel();\r
- void SetPickerTime();\r
-private:\r
- UILabel* setTraget{nullptr};\r
- UILabel* timerLabel{nullptr};\r
- UILabelButton *startButton{nullptr};\r
- UIImageView *backgroundImage{nullptr};\r
- UIScrollView *group{nullptr};\r
- UIPicker* timerPicker[2]{nullptr};\r
-};\r
-}\r
-#endif // TARGET_SLEEP_TIME_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Sports Model\r
- * Create: 2025-04-28\r
- */\r
-\r
-#ifndef SPORTS_MODEL_H\r
-#define SPORTS_MODEL_H\r
-#include "graphic_timer.h"\r
-\r
-namespace OHOS {\r
-\r
-typedef struct sport_data {\r
- uint32_t step;\r
- uint32_t distance;\r
- int32_t lat;\r
- int32_t lng;\r
- uint32_t speed;\r
- uint16_t heartrate;\r
-} sport_data_t;\r
-\r
-class SportsModel {\r
-public:\r
- ~SportsModel();\r
- static SportsModel *GetInstance(void);\r
- void Init();\r
- bool StartSportsTimer();\r
- void StopSportsTimer(bool isDelete);\r
- void IncrSportsTime();\r
- std::string CountingSportsTime();\r
- bool IsActive();\r
- sport_data_t *GetSportsData();\r
- void ResetSportsData();\r
- uint32_t CalculateSpeed(uint32_t distance);\r
-\r
-private:\r
- SportsModel();\r
- void InitSportsTimer();\r
- uint32_t uiSportTime_ = 0;\r
- bool isActive_{false};\r
- GraphicTimer *pGraphicTimer_{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: sports Presenter\r
- * Create: 2025-04-28\r
- */\r
-\r
-#ifndef SPORTS_PRESENTER_H\r
-#define SPORTS_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-\r
-namespace OHOS {\r
-\r
-class SportsView;\r
-class SportsPresenter : public Presenter<SportsView>,\r
- public UIView::OnDragListener {\r
-public:\r
- SportsPresenter();\r
- ~SportsPresenter();\r
- static SportsPresenter *GetInstance();\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
-private:\r
-};\r
-} // namespace OHOS\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: sports View\r
- * Create: 2025-04-28\r
- */\r
-#ifndef SPORTS_VIEW_H\r
-#define SPORTS_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-\r
-namespace OHOS {\r
-\r
-enum SportDataType {\r
- SPORT_TIME = 0,\r
- SPORT_SETP,\r
- SPORT_DISTANCE,\r
- SPORT_HEARTRATE,\r
- SPORT_SPEED,\r
- SPORT_MAX,\r
-};\r
-\r
-class SportsPresenter;\r
-class SportsView : public View<SportsPresenter> {\r
-public:\r
- SportsView();\r
- ~SportsView() override;\r
- static SportsView *GetInstance();\r
- void OnStart() override;\r
- void SetStep(uint32_t step);\r
- void SetHeartRate(uint16_t heartrate);\r
- void SetDistance(uint32_t distance);\r
- void SetTime(const char *time);\r
- void SetSpeed(uint32_t speed);\r
-\r
-private:\r
- bool InitView();\r
- bool InitLableView(int index, const char *text, uint16_t x, uint16_t y1, uint16_t w, uint16_t y2);\r
- void InitSportDataLabel();\r
- UILabel TitleLabel[SPORT_MAX];\r
- UILabel ContentLabel[SPORT_MAX];\r
- UIViewGroup *group{nullptr};\r
- UIImageView *backGround{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // SPORTS_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: StopwatchAdapter\r
- * Create: 2025-06-06\r
- */\r
-\r
-#ifndef STOPWATCH_ADAPTER_H\r
-#define STOPWATCH_ADAPTER_H\r
-\r
-#include "gfx_utils/list.h"\r
-#include "components/abstract_adapter.h"\r
-#include "stopwatch/StopwatchItemView.h"\r
-\r
-namespace OHOS {\r
-\r
-class StopwatchAdapter : public AbstractAdapter {\r
-public:\r
- explicit StopwatchAdapter();\r
- ~StopwatchAdapter() override;\r
-\r
- void SetData(const List<StopwatchItem> &data);\r
-\r
- uint16_t GetCount(void) override;\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
-\r
-private:\r
- List<StopwatchItem> listData_;\r
-};\r
-}\r
-\r
-#endif // STOPWATCH_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_CLICK_MEA_H\r
-#define TEMP_CLICK_MEA_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempClickMea : public UIScrollView {\r
-public:\r
- TempClickMea();\r
- ~TempClickMea() override;\r
- bool InitClickMea();\r
- static TempClickMea *GetInstance();\r
- void RefreshClickMea(void);\r
-private:\r
- bool TempInitButton(void);\r
- bool TempInitLabel(void);\r
- UILabel *tempLabel{nullptr};\r
- UILabelButton *tempButton[SET_TWO]{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_CONTINUE_WARN_H\r
-#define TEMP_CONTINUE_WARN_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempContinueWarn : public UIViewGroup {\r
-public:\r
- TempContinueWarn();\r
- ~TempContinueWarn() override;\r
- bool InitTempContinue();\r
- static TempContinueWarn *GetInstance();\r
- void RefreshTempContinue(void);\r
-private:\r
- bool TempInitLabel(void);\r
- bool TempInitImage(void);\r
- UIImageView *tempImage{nullptr};\r
- UILabel *tempLabel[SET_THREE]{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_EXIT_INTER_H\r
-#define TEMP_EXIT_INTER_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "main/AppGroupView.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempExitInter : public AppGroupView {\r
-public:\r
- TempExitInter();\r
- ~TempExitInter() override;\r
- static TempExitInter *GetInstance();\r
- bool InitView(void *caller) override;\r
-private:\r
- bool TempInitLabel(void);\r
- bool TempInitImage(void);\r
- bool InitSimilarImage(int16 num, int16 tempX, int16 tempY, const char* imageSrc);\r
- UILabel *tempLabel[SET_TWO]{nullptr};\r
- UIImageView *tempImage[SET_FOUR]{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_EXIT_PROMPT\r
-#define TEMP_EXIT_PROMPT\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempExitPrompt : public UIScrollView {\r
-public:\r
- TempExitPrompt();\r
- ~TempExitPrompt() override;\r
- bool InitExitPrompt();\r
- static TempExitPrompt *GetInstance();\r
-private:\r
- bool TempInitImage(void);\r
- bool TempInitLabel(void);\r
- UIImageView *tempImage[SET_TWO]{nullptr};\r
- UILabel *tempLabel{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_INIT_INTER_H\r
-#define TEMP_INIT_INTER_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "main/AppGroupView.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempInitInter : public AppGroupView {\r
-public:\r
- TempInitInter();\r
- ~TempInitInter() override;\r
- static TempInitInter *GetInstance();\r
- bool InitView(void *caller) override;\r
-private:\r
- bool TempInitImage(void);\r
- bool TempInitButton(void);\r
- bool SetBasicLabel(void);\r
- bool SetAppendLabel(void);\r
- UIImageView *tempImage[SET_THREE]{nullptr};\r
- UILabel *tempLabel[TEMP_SET_SIX]{nullptr};\r
- UILabelButton *buttonTemp{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_JOIN_STUDY_H\r
-#define TEMP_JOIN_STUDY_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempJoinStudy : public UIScrollView {\r
-public:\r
- TempJoinStudy();\r
- ~TempJoinStudy() override;\r
- bool InitJoinStudy();\r
- static TempJoinStudy *GetInstance();\r
-private:\r
- bool TempInitLabel(void);\r
- bool TempInitButton(void);\r
- bool InitSimilarLabel(int16 num, int16 labelY, const char *labelText);\r
- UILabel *tempTitle{nullptr};\r
- UILabel *tempLabel[SET_THREE]{nullptr};\r
- UILabelButton *tempButton[SET_TWO]{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_LITTLE_TIP\r
-#define TEMP_LITTLE_TIP\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempLittleTip : public UIScrollView {\r
-public:\r
- TempLittleTip();\r
- ~TempLittleTip() override;\r
- bool InitLittleTip();\r
- static TempLittleTip *GetInstance();\r
- void RefreshTip(void);\r
-private:\r
- bool SetBasicLabel(void);\r
- bool SetAppendLabel(void);\r
- UILabel *tempLabel[SET_NINE]{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_MAIN_VIEW_H\r
-#define TEMP_MAIN_VIEW_H\r
-\r
-#include <string>\r
-#include "View.h"\r
-#include "components/ui_view_group.h"\r
-#include "ChangeSliceListener.h"\r
-#include "components/ui_swipe_view.h"\r
-#include "temperature/TempPresenter.h"\r
-#include "temperature/TempJoinStudy.h"\r
-#include "temperature/TempMeasure.h"\r
-#include "temperature/TempExitInter.h"\r
-#include "temperature/TempPromptWear.h"\r
-#include "temperature/TempClickMea.h"\r
-#include "temperature/TempRemindWear.h"\r
-#include "temperature/TempMeaProcess.h"\r
-#include "temperature/TempInitInter.h"\r
-#include "temperature/TempWarn.h"\r
-#include "temperature/TempLittleTip.h"\r
-#include "temperature/TempModel.h"\r
-#include "temperature/TempStudyAbout.h"\r
-#include "temperature/TempExitPrompt.h"\r
-#include "temperature/TempContinueWarn.h"\r
-#include "temperature/TempReport.h"\r
-\r
-namespace OHOS {\r
-class TempMainView;\r
-class TempMainView : public View<TempPresenter> {\r
-public:\r
- TempMainView();\r
- ~TempMainView() override;\r
- static TempMainView *GetInstance(void);\r
- void OnStart() override;\r
- void ChangeView(int16 hideView, int16 showView);\r
- void DropView(UIView& view);\r
- int16 GetListenInter(void);\r
- int16 GetWhichInter(void);\r
- bool ChangeMeasure(int16 thisView);\r
- bool ChangePrompt(int16 thisView);\r
- bool ChangeClickMea(int16 thisView);\r
- bool ChangeRemindWear(int16 thisView);\r
- bool ChangeMeaProcess(int16 thisView);\r
- bool ChangeTempInit(int16 thisView);\r
- bool ChangeTempWarn(int16 thisView);\r
- bool ChangeContinue(int16 thisView);\r
- bool ChangeTempTip(int16 thisView);\r
- bool ChangeStudyAbout(int16 thisView);\r
- bool ChangeExitPrompt(int16 thisView);\r
- bool ClickFunc(int16 interf);\r
-private:\r
- bool SetSwipeInter(int16 num);\r
- void DeleteViceInter(void);\r
- UIViewGroup *group{nullptr};\r
- UIViewGroup *container[11]{nullptr}; // 一共有11个界面\r
- UISwipeView *tempSwipeList[2]{nullptr}; // 下拉拖动的界面一共有2个\r
- TempJoinStudy *tempJoinStudy{nullptr};\r
- TempMeasure *tempMeasure{nullptr};\r
- TempExitInter *tempExitInter{nullptr};\r
- TempPromptWear *tempPromptWear{nullptr};\r
- TempClickMea *tempClickMea{nullptr};\r
- TempRemindWear *tempRemindWear{nullptr};\r
- TempMeaProcess *tempMeaProcess{nullptr};\r
- TempInitInter *tempInitInter{nullptr};\r
- TempWarn *tempWarn{nullptr};\r
- TempLittleTip *tempLittleTip{nullptr};\r
- TempContinueWarn *tempContinue{nullptr};\r
- TempExitPrompt *tempExitPrompt{nullptr};\r
- TempStudyAbout *tempStudyAbout{nullptr};\r
- TempReport *tempReport{nullptr};\r
- int16 interListen{-1}; // 监测上一个界面,-1用于还没获得监测界面时的初始化\r
- int16 tempWhichInter{0}; // 监测当前是哪一个温度界面\r
- int16 tempWhichMea{-1}; // 监测当前处于哪一个监测界面\r
-};\r
-} // namespace OHOS\r
-#endif // MAIN_ALARM_VIEW_Ha
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_MEA_PROCESS_H\r
-#define TEMP_MEA_PROCESS_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempMeaProcess : public UIScrollView {\r
-public:\r
- TempMeaProcess();\r
- ~TempMeaProcess() override;\r
- static TempMeaProcess *GetInstance();\r
- bool InitMeaProcess(void);\r
- void TempMeaDelayExit(void);\r
- UICircleProgress *GetCircleProgress(void);\r
- bool GetCircleStatus(void);\r
- void SetCircleStatus(bool status);\r
-private:\r
- bool TempInitImage(void);\r
- bool TempInitLabel(void);\r
- bool TempCirCleProcess(void);\r
- UICircleProgress *tempCircle{nullptr};\r
- UIImageView *imageMeasure{nullptr};\r
- UILabel *tempLabel{nullptr};\r
- bool circleStatus{false};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_MEASURE_H\r
-#define TEMP_MEASURE_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "main/AppGroupView.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempMeasure : public AppGroupView {\r
-public:\r
- TempMeasure();\r
- ~TempMeasure() override;\r
- static TempMeasure *GetInstance();\r
- bool InitView(void *caller) override;\r
-private:\r
- bool TempInitImage(void);\r
- bool TempInitLabel(void);\r
- bool TempInitButton(void);\r
- UILabel *labelMeasure{nullptr};\r
- UIImageView *imageMeasure[SET_THREE]{nullptr};\r
- UILabelButton *buttonMeasure{nullptr};\r
- UILabelButton *backgroudButton{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_MODEL_H\r
-#define TEMP_MODEL_H\r
-\r
-#include "ohos_types.h"\r
-#include "list.h"\r
-#include "source.h"\r
-#include "ChangeSliceListener.h"\r
-\r
-namespace OHOS {\r
-class TempModel {\r
-public:\r
- TempModel();\r
- virtual ~TempModel();\r
- static TempModel *GetInstance(void);\r
- void SetTempInterLis(int16 interListen);\r
- int16 GetTempInterLis(void);\r
-private:\r
- int16 tempInterLis{0}; // 监测是否为首次进入体温应用\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_PRESENTER_H\r
-#define TEMP_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_swipe_view.h"\r
-#include "wearable_log.h"\r
-#include "color.h"\r
-#include "main/ModelListenerSample.h"\r
-\r
-namespace OHOS {\r
-constexpr char* TEMP_JOIN_STUDY = (char*)"tempjoinstudy";\r
-constexpr char* TEMP_INTER_JOIN = (char*)"tempjoin";\r
-constexpr char* TEMP_INTER_EXIT = (char*)"tempexit";\r
-constexpr char* TEMP_MEASURE_BUTTON = (char*)"measurebutton";\r
-constexpr char* TEMP_MEASURE_IMAGE = (char*)"measureimage";\r
-constexpr char* TEMP_MEASURE_PROCESS = (char*)"measureprocess";\r
-constexpr char* TEMP_PROMPT_NEXT = (char*)"temppromptnext";\r
-constexpr char* TEMP_MEA_EXIT = (char*)"tempmeaexit";\r
-constexpr char* TEMP_MEA_IN = (char*)"tempmeain";\r
-constexpr char* TEMP_MEA_AGAIN = (char*)"tempmeaagain";\r
-constexpr char* TEMP_WARN_BUTTON = (char*)"tempwarn";\r
-constexpr char* TEMP_IMAGE_LIT_TIP = (char*)"tempimagelietip";\r
-constexpr char* TEMP_EXIT_THIS = (char*)"tempexitstudy";\r
-constexpr char* TEMP_STUDY_THIS = (char*)"tempaboutstudy";\r
-constexpr char* TEMP_WARN_ID = (char*)"tempwarnid";\r
-constexpr char* TEMP_EXIT_DELETE = (char*)"tempexitdelete";\r
-constexpr char* TEMP_EXIT_TRUE = (char*)"tempexittrue";\r
-constexpr char* TEMP_SWIPE_EXIT = (char*)"tempswipeexit";\r
-constexpr int16 BACKGROUND_IMAGE_WIDTH = 190;\r
-constexpr int16 SET_ZERO = 0;\r
-constexpr int16 SET_ONE = 1;\r
-constexpr int16 SET_TWO = 2;\r
-constexpr int16 SET_THREE = 3;\r
-constexpr int16 SET_FOUR = 4;\r
-constexpr int16 SET_FIVE = 5;\r
-constexpr int16 TEMP_SET_SIX = 6;\r
-constexpr int16 SET_SEVEN = 7;\r
-constexpr int16 SET_EIGHT = 8;\r
-constexpr int16 SET_NINE = 9;\r
-constexpr int16 SET_HUNDRED = 100;\r
-\r
-typedef enum {\r
- JOIN_STUDY_INTER = 0,\r
- MEASURE_INTER,\r
- PROMPT_WEAR,\r
- CLICK_MEA,\r
- REMIND_WEAR,\r
- MEASURE_ING,\r
- MEASURE_INIT,\r
- TEMP_WARN_INTER,\r
- TEMP_TIP,\r
- TEMP_EXIT_STUDY,\r
- TEMP_STUDY\r
-} tempInterfacesId;\r
-\r
-class TempMainView;\r
-class TempPresenter : public Presenter<TempMainView>, public UIView::OnClickListener, public UIView::OnDragListener,\r
- public ModelListenerSample, public UISwipeView::OnSwipeListener {\r
-public:\r
- TempPresenter();\r
- ~TempPresenter() override;\r
- void OnResume() override;\r
- void OnStop() override;\r
- void ClickTempJoin();\r
- void ClickPromptWear();\r
- void ClickPromptNext();\r
- void ClickExitMea();\r
- void ClickIfWear();\r
- void ClickMeaAgain(void);\r
- void ClickMeasure();\r
- void ClickTempTip(void);\r
- void ClickTempExit(void);\r
- void ClickStudyTip(void);\r
- void ClickWarnBack(void);\r
- void ClickExitDelete(void);\r
- void ClickExit(void);\r
- void ClickExitTemp(void);\r
- int8 GetTempListen(void);\r
- ColorType CyanColor(void);\r
- static TempPresenter *GetInstance();\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- bool ClickFuncId(const char *buttonName);\r
- void OnSwipe(UISwipeView &view) override;\r
- void ProgressNotify(void);\r
- void SetTempCountMax(void);\r
- void UpdateTempCount(void);\r
- void Notify() override;\r
-private:\r
- uint8 wearListen{0};\r
- int8 tempListen{-1}; // 监测隐藏界面\r
- int16 countTemp{100}; // 体温进度条默认值为100\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_PROMPT_WEAR_H\r
-#define TEMP_PROMPT_WEAR_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempPromptWear : public UIScrollView {\r
-public:\r
- TempPromptWear();\r
- ~TempPromptWear() override;\r
- bool InitPromptWear();\r
- static TempPromptWear *GetInstance();\r
-private:\r
- bool TempInitLabel(void);\r
- bool TempInitButton(void);\r
- bool TempInitImage(void);\r
- UILabel *tempLabel{nullptr};\r
- UILabelButton *tempButton{nullptr};\r
- UIImageView *tempImage{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_REMIND_WAER_H\r
-#define TEMP_REMIND_WAER_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempRemindWear : public UIScrollView {\r
-public:\r
- TempRemindWear();\r
- ~TempRemindWear() override;\r
- bool InitRemindWear();\r
- static TempRemindWear *GetInstance();\r
-private:\r
- bool TempInitImage(void);\r
- bool TempInitLabel(void);\r
- UIImageView *tempImage[SET_TWO]{nullptr};\r
- UILabel *tempLabel{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_REPORT_H\r
-#define TEMP_REPORT_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "main/AppGroupView.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempReport : public AppGroupView {\r
-public:\r
- TempReport();\r
- ~TempReport() override;\r
- static TempReport *GetInstance();\r
- bool InitView(void *caller) override;\r
-private:\r
- bool SetBasicLabel(void);\r
- bool SetAppendLabel(void);\r
- bool InitSimilarImage(int16 num, int16 tempX, int16 tempY, const char* imageSrc);\r
- bool TempInitImage(void);\r
- UILabel *tempLabel[TEMP_SET_SIX]{nullptr};\r
- UIImageView *tempImage[SET_FIVE]{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_STUDY_ABOUT\r
-#define TEMP_STUDY_ABOUT\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempStudyAbout : public UIScrollView {\r
-public:\r
- TempStudyAbout();\r
- ~TempStudyAbout() override;\r
- bool InitStudyAbout();\r
- static TempStudyAbout *GetInstance();\r
- void RefreshStudy(void);\r
-private:\r
- bool SetBasicLabel(void);\r
- bool SetAppendLabel(void);\r
- UILabel *tempLabel[SET_FIVE]{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#ifndef TEMP_WARN_H\r
-#define TEMP_WARN_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "temperature/TempPresenter.h"\r
-\r
-namespace OHOS {\r
-class TempWarn : public UIScrollView {\r
-public:\r
- TempWarn();\r
- ~TempWarn() override;\r
- bool InitTempWarn();\r
- static TempWarn *GetInstance();\r
- void RefreshTempWarn(void);\r
-private:\r
- bool TempInitImage(void);\r
- bool TempInitButton(void);\r
- bool TempInitLabel(void);\r
- UIImageView *tempImage{nullptr};\r
- UILabelButton *tempButton{nullptr};\r
- UILabel *tempLabel{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TimerTimingPage\r
- * Create: 2025-06-09\r
- */\r
-\r
-#ifndef TIMER_TIMING_PAGE_H\r
-#define TIMER_TIMING_PAGE_H\r
-\r
-#include <sys/time.h>\r
-#include "View.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_scroll_view.h"\r
-#include "components/ui_digital_clock.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_circle_progress.h"\r
-#include "UiConfig.h"\r
-#include "timers/TimerModel.h"\r
-#include "timers/TimerPresenter.h"\r
-#include "SlicePage.h"\r
-#include "ChangeSliceListener.h"\r
-#include "components/ui_sweep_clock.h"\r
-#include "ui_resource_timer.h"\r
-\r
-namespace OHOS {\r
- class TimerTimingPage : public SlicePage<TimerPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
- public:\r
- TimerTimingPage() = default;\r
- ~TimerTimingPage() override;\r
- void OnStart(void *data) override;\r
- void OnResume() override;\r
- void OnPause() override;\r
-\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- void CreateButton();\r
- void CreateTimerTime();\r
- void CircleProgress();\r
- void SetTimerTime(uint32_t durationTime);\r
- void SetupAnimator();\r
- void SetAnimatorStatus(bool status);\r
-\r
- private:\r
- class TimeAnimatorCallback : public AnimatorCallback {\r
- public:\r
- TimeAnimatorCallback() {}\r
- virtual ~TimeAnimatorCallback() override {}\r
- void Callback(UIView *view) override;\r
- };\r
-\r
- class TimerTimingCallback : public AnimatorCallback {\r
- public:\r
- explicit TimerTimingCallback(TimerTimingPage *page) : page_(page) {}\r
- ~TimerTimingCallback() override {}\r
- void Callback(UIView *view) override;\r
-\r
- private:\r
- TimerTimingPage *page_{nullptr};\r
- };\r
-\r
- UIScrollView *group{nullptr};\r
- UISweepClock *sweepClock_{nullptr};\r
- UIDigitalClock *dClock{nullptr};\r
- UILabel *title{nullptr};\r
- UIDigitalClock *timerTime{nullptr};\r
- UIImageView *reset{nullptr};\r
- UIImageView *start{nullptr};\r
- UICircleProgress *circleProgress{nullptr};\r
- UILabel *currentTime_{nullptr};\r
- TimeAnimatorCallback *timeCallback_{nullptr};\r
- Animator *timeAnimator_{nullptr};\r
- TimerTimingCallback *callBack_ = nullptr;\r
- Animator *animator_ = nullptr;\r
- Image *secondHand_{nullptr};\r
- UIImageView *backround{nullptr};\r
- };\r
-}\r
-#endif // TIMER_TIMING_PAGE_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Data View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_DATA_VIEW_H\r
-#define TRAINING_DATA_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_canvas.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-class DataView {\r
-public:\r
- DataView();\r
- ~DataView();\r
- static DataView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- void UpdateDataViewByType();\r
-\r
-private:\r
- void ShowupBackgroup();\r
- void ShowupTopView();\r
- void ShowupLeftView();\r
- void ShowupRightView();\r
- void ShowupBottomView();\r
- void ShowupSepLine();\r
- UIImageView *backGround{nullptr};\r
- UIImageView *heartrate{nullptr};\r
- UICanvas *sepLine{nullptr};\r
- UILabel *topValueLabel{nullptr};\r
- UILabel *topUnitLabel{nullptr};\r
- UILabel *leftValueLabel{nullptr};\r
- UILabel *leftUnitLabel{nullptr};\r
- UILabel *rightValueLabel{nullptr};\r
- UILabel *rightUnitLabel{nullptr};\r
- UILabel *bottomValueLabel{nullptr};\r
- UILabel *bottomUnitLabel{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // TRAINING_DATA_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Menu View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_MENU_VIEW_H\r
-#define TRAINING_MENU_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_list.h"\r
-#include "components/ui_view_group.h"\r
-#include "training/TrainingItemView.h"\r
-#include "training/TrainingAdapter.h"\r
-#include "UiConfig.h"\r
-namespace OHOS {\r
-enum TrainingTypes : uint8_t {\r
- TRAINING_TYPE_OUTDOOR_RUNNING = 0,\r
- TRAINING_TYPE_INDOOR_RUNNING,\r
- TRAINING_TYPE_CYCLING,\r
- TRAINING_TYPE_CLIMBING,\r
- TRAINING_TYPE_INDOOR_SWIMMING,\r
- TRAINING_TYPE_OUTDOOR_SWIMMING,\r
- TRAINING_TYPE_MAX,\r
-};\r
-\r
-#define TRAINING_ITEM_OUTDOOR_RUNNING "trainingItemOutdoorRunning"\r
-#define TRAINING_ITEM_INDOOR_RUNNING "trainingItemIndoorRunning"\r
-#define TRAINING_ITEM_CYCLING "trainingItemCycling"\r
-#define TRAINING_ITEM_CLIMBING "trainingItemClimbing"\r
-#define TRAINING_ITEM_INDOOR_SWIMMING "trainingItemIndoorSwimming"\r
-#define TRAINING_ITEM_OUTDOOR_SWIMMING "trainingItemOutdoorSwimming"\r
-\r
-class MenuView {\r
-public:\r
- MenuView();\r
- ~MenuView();\r
- static MenuView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void CreateUILabel(void);\r
- void CreateUIList(void);\r
- UILabel *titleLabel{nullptr};\r
- UIList *trainingList{nullptr};\r
- TrainingAdapter *listAdapter_{nullptr};\r
- UIViewGroup *group{nullptr};\r
- TrainingItem trainings[TRAINING_TYPE_MAX] = {\r
- {TRAINING_TYPE_OUTDOOR_RUNNING, PNG_APPLIST_WALK_IMAGE, "户外跑步", TRAINING_ITEM_OUTDOOR_RUNNING},\r
- {TRAINING_TYPE_INDOOR_RUNNING, PNG_APPLIST_WALK_IMAGE, "室内跑步", TRAINING_ITEM_INDOOR_RUNNING},\r
- {TRAINING_TYPE_CYCLING, PNG_APPLIST_WALK_IMAGE, "骑行", TRAINING_ITEM_CYCLING},\r
- {TRAINING_TYPE_CLIMBING, PNG_APPLIST_WALK_IMAGE, "登山", TRAINING_ITEM_CLIMBING},\r
- {TRAINING_TYPE_INDOOR_SWIMMING, PNG_APPLIST_WALK_IMAGE, "室内游泳", TRAINING_ITEM_INDOOR_SWIMMING},\r
- {TRAINING_TYPE_OUTDOOR_SWIMMING, PNG_APPLIST_WALK_IMAGE, "户外游泳", TRAINING_ITEM_OUTDOOR_SWIMMING}};\r
-};\r
-} // namespace OHOS\r
-#endif // TRAINING_MENU_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Pause View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_PAUSE_VIEW_H\r
-#define TRAINING_PAUSE_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-#define TRAINING_PAUSE_CONTINUE_BUTTON "trainingPauseContinueButton"\r
-#define TRAINING_PAUSE_FINISH_BUTTON "trainingPauseFinishButton"\r
-\r
-class PauseView {\r
-public:\r
- PauseView();\r
- ~PauseView();\r
- static PauseView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void CreateUILabel(void);\r
- void CreateUIButton(void);\r
- UILabel *timeLabel{nullptr};\r
- UILabel *textLabel{nullptr};\r
- UILabelButton *continueButton{nullptr};\r
- UILabelButton *finishButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // TRAINING_PAUSE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Prepare View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_PREPARE_VIEW_H\r
-#define TRAINING_PREPARE_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-#define TRAINING_PREPARE_START_BUTTON "trainingPrepareStartButton"\r
-class PrepareView {\r
-public:\r
- PrepareView();\r
- ~PrepareView();\r
- static PrepareView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- void UpdateViewByTrainingType(uint8_t trainingType);\r
-\r
-private:\r
- bool InitBatteryView();\r
- bool InitHeartbeatView();\r
- bool InitTimeLableVIew();\r
- bool InitLocatingLableVIew();\r
- bool InitCenterView();\r
- bool InitGPSView();\r
- bool InitHeartrateView();\r
- bool InitStartButtonView();\r
- UILabel *timeLabel{nullptr};\r
- UIImageView *battery{nullptr};\r
- UILabel *batteryLabel{nullptr};\r
- UIImageView *gpsImageView{nullptr};\r
- UILabel *gpsLabel{nullptr};\r
- UIImageView *heartRateImageView{nullptr};\r
- UILabel *heartRateLabel{nullptr};\r
- UILabel *locatingLabel{nullptr};\r
- UILabelButton *startButton{nullptr};\r
- UIButton *iconImageView{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // TRAINING_PREPARE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Prompt View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef PROMPT_VIEW_H\r
-#define PROMPT_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-#define TRAINING_PROMPT_CANCEL_BUTTON "trainingPromptCancelButton"\r
-#define TRAINING_PROMPT_CONFIRM_BUTTON "trainingPromptConfirmButton"\r
-\r
-class PromptView {\r
-public:\r
- PromptView();\r
- ~PromptView();\r
- static PromptView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void CreateUILabel(void);\r
- void CreateUIButton(void);\r
- UILabel *titleLabel{nullptr};\r
- UIButton *cancelButton{nullptr};\r
- UIButton *confirmButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // PROMPT_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetAdapter.h\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#ifndef TARGET_ADAPTER_H\r
-#define TARGET_ADAPTER_H\r
-\r
-#include <list>\r
-#include "training/TargetItemView.h"\r
-#include "components/abstract_adapter.h"\r
-\r
-namespace OHOS {\r
-\r
-class TargetAdapter : public AbstractAdapter {\r
-public:\r
- explicit TargetAdapter();\r
- ~TargetAdapter() override;\r
-\r
- /* *\r
- * @brief Sets the UIView adapter data, which is a SettingItem linked list.\r
- *\r
- * @param data Indicates the SettingItem linked list data.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- void SetData(const std::list<TargetItem> &data);\r
-\r
- /* *\r
- * @brief Obtains the <b>data</b> size of the UILabel adapter.\r
- *\r
- * @return Returns the <b>data</b> size of the UILabel adapter.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- uint16_t GetCount(void) override;\r
-\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
-\r
- void AddListItem(const TargetItem &item);\r
-\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
-private:\r
- std::list<TargetItem> listData_;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif // TARGET_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetItemView\r
- * Author:\r
- * Create: 2025-02-15\r
- */\r
-\r
-#ifndef TARGET_ITEM_H\r
-#define TARGET_ITEM_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-\r
-namespace OHOS {\r
-typedef struct {\r
- uint8_t type;\r
- const char *icon;\r
- const char *label;\r
- const char *viewId;\r
-} TargetItem;\r
-\r
-class TargetItemView : public UIViewGroup {\r
-public:\r
- TargetItemView();\r
- ~TargetItemView() override;\r
-\r
- virtual void SetItemInfo(const TargetItem itemInfo);\r
-\r
-private:\r
- bool InitView();\r
- UIImageView sIcon;\r
- UILabel sLabel;\r
- UIImageView sNextImage;\r
- TargetItem sItemInfo = {0, nullptr, nullptr, nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetSetting View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_TARGET_SETTING_VIEW_H\r
-#define TRAINING_TARGET_SETTING_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_picker.h"\r
-\r
-namespace OHOS {\r
-#define TARGET_SETTING_CONFIRM_BUTTON "targetSettingConfirmButton"\r
-\r
-class TargetSettingView {\r
-public:\r
- TargetSettingView();\r
- ~TargetSettingView();\r
- static TargetSettingView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
- void UpdateViewByTargetType(uint8_t targetType);\r
-\r
-private:\r
- void CreateUILabel(void);\r
- void CreateUIPicker(void);\r
- void CreateUIButton(void);\r
- UILabel *titleLabel{nullptr};\r
- UIPicker *picker{nullptr};\r
- UILabelButton *confirmButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // TRAINING_TARGET_SETTING_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Target View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_TARGET_VIEW_H\r
-#define TRAINING_TARGET_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_list.h"\r
-#include "components/ui_view_group.h"\r
-#include "training/TargetItemView.h"\r
-#include "training/TargetAdapter.h"\r
-#include "UiConfig.h"\r
-namespace OHOS {\r
-enum TrainingTargets : uint8_t {\r
- TRAINING_TARGET_DISTANCE = 0,\r
- TRAINING_TARGET_TIME,\r
- TRAINING_TARGET_CALORIE,\r
- TRAINING_TARGET_MAX,\r
-};\r
-\r
-#define TRAINING_TARGET_ITEM_DISTANCE "trainingTargetItemDistance"\r
-#define TRAINING_TARGET_ITEM_TIME "trainingTargetItemTime"\r
-#define TRAINING_TARGET_ITEM_CALORIE "trainingTargetItemCalorie"\r
-\r
-class TargetView {\r
-public:\r
- TargetView();\r
- ~TargetView();\r
- static TargetView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void CreateUILabel(void);\r
- void CreateUIList(void);\r
- UILabel *titleLabel{nullptr};\r
- UIList *targetList{nullptr};\r
- TargetAdapter *listAdapter_{nullptr};\r
- UIViewGroup *group{nullptr};\r
- TargetItem targets[TRAINING_TARGET_MAX] = {\r
- {TRAINING_TARGET_DISTANCE, PNG_PHONE_IMAGE, "距离", TRAINING_TARGET_ITEM_DISTANCE},\r
- {TRAINING_TARGET_TIME, PNG_WATCH_IMAGE, "时间", TRAINING_TARGET_ITEM_TIME},\r
- {TRAINING_TARGET_CALORIE, PNG_BLUETOOTH_IMAGE, "热量", TRAINING_TARGET_ITEM_CALORIE}};\r
-};\r
-} // namespace OHOS\r
-#endif // TRAINING_TARGET_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingAdapter.h\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#ifndef TRAINING_ADAPTER_H\r
-#define TRAINING_ADAPTER_H\r
-\r
-#include <list>\r
-#include "training/TrainingItemView.h"\r
-#include "components/abstract_adapter.h"\r
-\r
-namespace OHOS {\r
-\r
-class TrainingAdapter : public AbstractAdapter {\r
-public:\r
- explicit TrainingAdapter();\r
- ~TrainingAdapter() override;\r
-\r
- /* *\r
- * @brief Sets the UIView adapter data, which is a SettingItem linked list.\r
- *\r
- * @param data Indicates the SettingItem linked list data.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- void SetData(const std::list<TrainingItem> &data);\r
-\r
- /* *\r
- * @brief Obtains the <b>data</b> size of the UILabel adapter.\r
- *\r
- * @return Returns the <b>data</b> size of the UILabel adapter.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- uint16_t GetCount(void) override;\r
-\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
-\r
- void AddListItem(const TrainingItem &item);\r
-\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
-private:\r
- std::list<TrainingItem> listData_;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif // TRAINING_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingItemView\r
- * Author:\r
- * Create: 2025-02-15\r
- */\r
-\r
-#ifndef TRAINING_ITEM_H\r
-#define TRAINING_ITEM_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-\r
-namespace OHOS {\r
-typedef struct {\r
- uint8_t type;\r
- const char *icon;\r
- const char *label;\r
- const char *viewId;\r
-} TrainingItem;\r
-\r
-class TrainingItemView : public UIViewGroup {\r
-public:\r
- TrainingItemView();\r
- ~TrainingItemView() override;\r
-\r
- virtual void SetItemInfo(const TrainingItem itemInfo);\r
-\r
-private:\r
- bool InitView();\r
- UIImageView sIcon;\r
- UILabel sLabel;\r
- UIImageView sSettingImage;\r
- TrainingItem sItemInfo = {0, nullptr, nullptr, nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingModel.h\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#ifndef TRAINING_MODEL_H\r
-#define TRAINING_MODEL_H\r
-\r
-#include <inttypes.h>\r
-namespace OHOS {\r
-class TrainingModel {\r
-public:\r
- static TrainingModel &GetInstance(void);\r
- void SetCurView(int16_t viewNum);\r
- int16_t GetCurView(void);\r
- void SetCurTrainingType(int8_t trainingType);\r
- int8_t GetCurTrainingType(void);\r
-\r
-private:\r
- TrainingModel();\r
- TrainingModel(const TrainingModel &);\r
- TrainingModel &operator=(const TrainingModel &);\r
- virtual ~TrainingModel();\r
- int16_t curView_{0};\r
- uint8_t trainingType_{0};\r
-};\r
-}\r
-\r
-#endif // TRAINING_MODEL_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingPresenter.h\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#ifndef TRAINING_PRESENTER_H\r
-#define TRAINING_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "training/TrainingView.h"\r
-#include "training/TrainingModel.h"\r
-#include "components/ui_view.h"\r
-\r
-namespace OHOS {\r
-class TrainingView;\r
-class TrainingPresenter : public Presenter<TrainingView>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- TrainingPresenter();\r
- ~TrainingPresenter() override;\r
- static TrainingPresenter *GetInstance();\r
-\r
- void OnResume() override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- void OnPause() override;\r
-private:\r
- void ClickStartButton(void);\r
- void ClickCountineButton(void);\r
- void ClickFinishButton(void);\r
- void ClickCancelButton(void);\r
- void ClickConfirmButton(void);\r
- void TrainingSetting(uint8_t trainingType);\r
- void StartTraining(uint8_t trainingType);\r
- void SettingTarget(uint8_t targetType);\r
- void EnterTarget(void);\r
- void ConfirmTargetSetting(void);\r
- TrainingModel *trainingModel_{nullptr};\r
-};\r
-}\r
-\r
-#endif // TRAINING_PRESENTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingSettingAdapter.h\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#ifndef TRAINING_SETTING_ADAPTER_H\r
-#define TRAINING_SETTING_ADAPTER_H\r
-\r
-#include <list>\r
-#include "training/TrainingSettingItemView.h"\r
-#include "components/abstract_adapter.h"\r
-\r
-namespace OHOS {\r
-\r
-class TrainingSettingAdapter : public AbstractAdapter {\r
-public:\r
- explicit TrainingSettingAdapter();\r
- ~TrainingSettingAdapter() override;\r
-\r
- /* *\r
- * @brief Sets the UIView adapter data, which is a SettingItem linked list.\r
- *\r
- * @param data Indicates the SettingItem linked list data.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- void SetData(const std::list<TrainingSettingItem> &data);\r
-\r
- /* *\r
- * @brief Obtains the <b>data</b> size of the UILabel adapter.\r
- *\r
- * @return Returns the <b>data</b> size of the UILabel adapter.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- uint16_t GetCount(void) override;\r
-\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
-\r
- void AddListItem(const TrainingSettingItem &item);\r
-\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
-private:\r
- std::list<TrainingSettingItem> listData_;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif // TRAINING_SETTING_ADAPTER_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingSettingItemView.h\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#ifndef TRAINING_SETTING_ITEM_H\r
-#define TRAINING_SETTING_ITEM_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-\r
-namespace OHOS {\r
-typedef struct {\r
- uint8_t type;\r
- const char *icon;\r
- const char *label;\r
- const char *viewId;\r
-} TrainingSettingItem;\r
-\r
-class TrainingSettingItemView : public UIViewGroup {\r
-public:\r
- TrainingSettingItemView();\r
- ~TrainingSettingItemView() override;\r
-\r
- virtual void SetItemInfo(const TrainingSettingItem itemInfo);\r
-\r
-private:\r
- bool InitView();\r
- UIImageView sIcon;\r
- UILabel sLabel;\r
- UIImageView sNextImage;\r
- TrainingSettingItem sItemInfo = {0, nullptr, nullptr, nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingSetting View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_SETTING_VIEW_H\r
-#define TRAINING_SETTING_VIEW_H\r
-\r
-#include "components/ui_label.h"\r
-#include "components/ui_list.h"\r
-#include "components/ui_view_group.h"\r
-#include "training/TrainingSettingItemView.h"\r
-#include "training/TrainingSettingAdapter.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-enum TrainingSettings : uint8_t {\r
- TRAINING_SETTING_TARGET = 0,\r
- TRAINING_SETTING_REMIND,\r
- TRAINING_SETTING_MISTOUCH,\r
- TRAINING_SETTING_DATA_DISPLAY,\r
- TRAINING_SETTING_METRONOME,\r
- TRAINING_SETTING_REMOVE,\r
- TRAINING_SETTING_MAX,\r
-};\r
-\r
-#define TRAINING_SETTING_ITEM_TARGET "trainingSettingItemTarget"\r
-#define TRAINING_SETTING_ITEM_REMIND "trainingSettingItemTargetRemind"\r
-#define TRAINING_SETTING_ITEM_MISTOUCH "trainingSettingItemTargetMistouch"\r
-#define TRAINING_SETTING_ITEM_DATA_DISPLAY "trainingSettingItemTargetDataDisplay"\r
-#define TRAINING_SETTING_ITEM_METRONOME "trainingSettingItemTargetMetronome"\r
-#define TRAINING_SETTING_ITEM_REMOVE "trainingSettingItemTargetRemove"\r
-\r
-class TrainingSettingView {\r
-public:\r
- TrainingSettingView();\r
- ~TrainingSettingView();\r
- static TrainingSettingView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void CreateUILabel(void);\r
- void CreateUIList(void);\r
- UILabel *titleLabel{nullptr};\r
- UIList *settingList{nullptr};\r
- TrainingSettingAdapter *listAdapter_{nullptr};\r
- UIViewGroup *group{nullptr};\r
- TrainingSettingItem settings[TRAINING_SETTING_MAX] = {\r
- {TRAINING_SETTING_TARGET, PNG_BLUETOOTH_IMAGE, "目标", TRAINING_SETTING_ITEM_TARGET},\r
- {TRAINING_SETTING_REMIND, PNG_WATCH_IMAGE, "提醒", TRAINING_SETTING_ITEM_REMIND},\r
- {TRAINING_SETTING_MISTOUCH, PNG_PHONE_IMAGE, "防误触", TRAINING_SETTING_ITEM_MISTOUCH},\r
- {TRAINING_SETTING_DATA_DISPLAY, PNG_BLUETOOTH_IMAGE, "数据显示", TRAINING_SETTING_ITEM_DATA_DISPLAY},\r
- {TRAINING_SETTING_METRONOME, PNG_WATCH_IMAGE, "节拍器", TRAINING_SETTING_ITEM_METRONOME},\r
- {TRAINING_SETTING_REMOVE, PNG_PHONE_IMAGE, "移除此运动", TRAINING_SETTING_ITEM_REMOVE}};\r
-};\r
-} // namespace OHOS\r
-#endif // SETTING_SETTING_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingViews View\r
- * Create: 2025-03-22\r
- */\r
-\r
-#ifndef TRAINING_VIEW_H\r
-#define TRAINING_VIEW_H\r
-\r
-#include "View.h"\r
-#include "components/ui_view_group.h"\r
-#include "training/MenuView.h"\r
-#include "training/PrepareView.h"\r
-#include "training/DataView.h"\r
-#include "training/PauseView.h"\r
-#include "training/PromptView.h"\r
-#include "training/TrainingSettingView.h"\r
-#include "training/TargetView.h"\r
-#include "training/TargetSettingView.h"\r
-\r
-namespace OHOS {\r
-enum TrainingViews : uint8_t {\r
- TRAINING_VIEW_MENU,\r
- TRAINING_VIEW_PREPARE,\r
- TRAINING_VIEW_DATA,\r
- TRAINING_VIEW_PAUSE,\r
- TRAINING_VIEW_PROMPT,\r
- TRAINING_VIEW_SETTING,\r
- TRAINING_VIEW_TARGET,\r
- TRAINING_VIEW_TARGET_SETTING,\r
- TRAINING_VIEW_MAX,\r
-};\r
-\r
-constexpr const char *MENU_VIEW_ID = "MenuViewID";\r
-constexpr const char *PREPARE_VIEW_ID = "PrepareViewID";\r
-constexpr const char *DATA_VIEW_ID = "DataViewID";\r
-constexpr const char *PAUSE_VIEW_ID = "PauseViewID";\r
-constexpr const char *PROMPT_VIEW_ID = "PromptViewID";\r
-constexpr const char *SETTING_VIEW_ID = "SettingViewID";\r
-constexpr const char *TARGET_VIEW_ID = "TargetViewID";\r
-constexpr const char *TARGET_SETTING_VIEW_ID = "TargetSettingViewID";\r
-\r
-class TrainingPresenter;\r
-class TrainingView : public View<TrainingPresenter> {\r
-public:\r
- TrainingView();\r
- ~TrainingView() override;\r
- static TrainingView *GetInstance();\r
-\r
- void OnStart() override;\r
- void OnStop() override;\r
- void ChangeView(int16_t hideView, int16_t showView);\r
-\r
-private:\r
- UIViewGroup *container[TRAINING_VIEW_MAX]{nullptr};\r
- typedef bool (TrainingView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
- PreprosssChangeView preProcessView[TRAINING_VIEW_MAX];\r
- bool CheckViewParam(int16_t hideView, int16_t showView);\r
- MenuView *menuView{nullptr};\r
- PrepareView *prepareView{nullptr};\r
- DataView *dataView{nullptr};\r
- PauseView *pauseView{nullptr};\r
- PromptView *promptView{nullptr};\r
- TrainingSettingView *settingView{nullptr};\r
- TargetView *targetView{nullptr};\r
- TargetSettingView *targetSettingView{nullptr};\r
- bool ChangeMenuView(int16_t hideView, int16_t thisView);\r
- bool ChangePrepareView(int16_t hideView, int16_t thisView);\r
- bool ChangeDataView(int16_t hideView, int16_t thisView);\r
- bool ChangePauseView(int16_t hideView, int16_t thisView);\r
- bool ChangePromptView(int16_t hideView, int16_t thisView);\r
- bool ChangeSettingView(int16_t hideView, int16_t thisView);\r
- bool ChangeTargetView(int16_t hideView, int16_t thisView);\r
- bool ChangeTargetSettingView(int16_t hideView, int16_t thisView);\r
-};\r
-}\r
-#endif // TRAINING_VIEW_H\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: weather/WeatherAdapter.h\r
- * Create: 2025-03-23\r
- */\r
-\r
-#ifndef WEATHER_ADAPTER_H\r
-#define WEATHER_ADAPTER_H\r
-\r
-#include <list>\r
-#include <string>\r
-#include "components/ui_list.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/abstract_adapter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "weather/WeatherModel.h"\r
-#include "weather/WeatherItemView.h"\r
-\r
-namespace OHOS {\r
-class WeatherAdapter : public AbstractAdapter {\r
-public:\r
- explicit WeatherAdapter();\r
- ~WeatherAdapter() override;\r
-\r
- /* *\r
- * @brief Sets the UIView adapter data, which is a WeatherItem linked list.\r
- *\r
- * @param data Indicates the WeatherItem linked list data.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- void SetData(std::list<WeatherItem> &data);\r
-\r
- /* *\r
- * @brief Obtains the <b>data</b> size of the UILabel adapter.\r
- *\r
- * @return Returns the <b>data</b> size of the UILabel adapter.\r
- * @since 1.0\r
- * @version 1.0\r
- */\r
- uint16_t GetCount(void) override;\r
-\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
-\r
- void AddListItem(const WeatherItem &item);\r
-\r
- void SetItemClickListener(UIView::OnClickListener *itemclicklistener)\r
- {\r
- itemClickListener = itemclicklistener;\r
- }\r
-private:\r
- std::list<WeatherItem> listData;\r
- UIView::OnClickListener *itemClickListener{nullptr};\r
-};\r
-}\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: WeatherPageSecond\r
- * Create: 2025-03-15\r
- */\r
-\r
-#ifndef WEATHER_PAGESECOND_H\r
-#define WEATHER_PAGESECOND_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_swipe_view.h"\r
-#include "ui_swipe_view.h"\r
-#include "weather/WeatherPresenter.h"\r
-#include "weather/WeatherView.h"\r
-#include "SlicePage.h"\r
-#include "UiConfig.h"\r
-namespace OHOS {\r
-class WeatherPresenter;\r
-class WeatherPageSecond : public SlicePage<WeatherPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener,\r
- public UISwipeView::OnSwipeListener {\r
-public:\r
- WeatherPageSecond();\r
- ~WeatherPageSecond() override;\r
- void OnStart(void* data) override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- void OnSwipe(UISwipeView &view) override;\r
- void WeatherInit(UIViewGroup *group);\r
- void InitLabel(UIViewGroup *group, int count);\r
- void InitImage(UIViewGroup *group, int count);\r
- bool SetSwipeInter();\r
- void InitVecWeather();\r
-private:\r
- WeatherModel *weatherModel = nullptr;\r
- std::vector<HourWeather> houWeather;\r
- UISwipeView *weatherSwipeGroup = nullptr;\r
- UIViewGroup *swipeGroup[SET_THREE]{nullptr};\r
- UIImageView *imgBack[SET_EIGHT]{nullptr};\r
- UILabel *labelTime[SET_EIGHT]{nullptr};\r
- UILabel *labelTemp[SET_EIGHT]{nullptr};\r
- UIImageView *imgWeather[SET_EIGHT]{nullptr};\r
- UIImageView *mainImg{nullptr};\r
- UIImageView *ImagePageKey{nullptr};\r
- int index = 0; // 记录当前是第几个swipe\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: WeatherPageThird\r
- * Create: 2025-03-15\r
- */\r
-\r
-#ifndef WEATHER_PAGETHIRD_H\r
-#define WEATHER_PAGETHIRD_H\r
-\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_list_nested.h"\r
-#include "components/ui_scroll_view_nested.h"\r
-#include "components/ui_swipe_view.h"\r
-#include "main/AppGroupView.h"\r
-#include "weather/WeatherPresenter.h"\r
-#include "weather/WeatherAdapter.h"\r
-#include "SlicePage.h"\r
-#include "UiConfig.h"\r
-namespace OHOS {\r
-class WeatherPageThird : public SlicePage<WeatherPresenter>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener,\r
- public UISwipeView::OnSwipeListener {\r
-public:\r
- WeatherPageThird();\r
- ~WeatherPageThird() override;\r
- void OnStart(void* data) override;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- void OnSwipe(UISwipeView &view) override;\r
- void InitScrollView();\r
- bool InitScrollData();\r
- void RefreshWeathersList(const WeatherItem *item, uint8_t count);\r
-private:\r
- WeatherModel *weatherModel = nullptr;\r
- UIViewGroup *group = nullptr;\r
- UIList *contentList{nullptr};\r
- UILabel *title{nullptr};\r
- WeatherAdapter *listAdapter{nullptr};\r
- UIImageView *mainImg{nullptr};\r
- UIImageView *ImagePageKey{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Customization View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/CustomizationView.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t VIEW_X = 52;\r
-static constexpr uint16_t TIME_VIEW_Y = 155;\r
-static constexpr uint16_t DISTANCES_VIEW_Y = 255;\r
-static constexpr uint16_t HEART_VIEW_Y = 355;\r
-static constexpr uint16_t SPEED_VIEW_Y = 455;\r
-static constexpr uint16_t STEPS_VIEW_Y = 555;\r
-static constexpr uint16_t VIEW_W = 350;\r
-static constexpr uint16_t VIEW_H = 70;\r
-static constexpr uint16_t RADIO_X = 280;\r
-static constexpr uint16_t RADIO_Y = 0;\r
-static constexpr uint16_t RADIO_W = 70;\r
-static constexpr uint16_t RADIO_H = 70;\r
-\r
-static constexpr uint16_t LABLE_X = 152;\r
-static constexpr uint16_t LABLE_Y = 50;\r
-static constexpr uint16_t LABLE_W = 150;\r
-static constexpr uint16_t LABLE_H = 60;\r
-static CustomizationView *g_pCustomizationView{nullptr};\r
-\r
-CustomizationView::CustomizationView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::CustomizationView");\r
- g_pCustomizationView = this;\r
-}\r
-\r
-CustomizationView::~CustomizationView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::~CustomizationView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- }\r
- delete lable;\r
- lable = nullptr;\r
- delete timeView;\r
- timeView = nullptr;\r
- delete distancesView;\r
- distancesView = nullptr;\r
- delete heartView;\r
- heartView = nullptr;\r
- delete speedView;\r
- speedView = nullptr;\r
- delete stepsView;\r
- stepsView = nullptr;\r
- delete timeRadio;\r
- timeRadio = nullptr;\r
- delete distancesRadio;\r
- distancesRadio = nullptr;\r
- delete heartRadio;\r
- heartRadio = nullptr;\r
- delete speedRadio;\r
- speedRadio = nullptr;\r
- delete stepsRadio;\r
- stepsRadio = nullptr;\r
- delete timeButton;\r
- timeButton = nullptr;\r
- delete distancesButton;\r
- distancesButton = nullptr;\r
- delete heartButton;\r
- heartButton = nullptr;\r
- delete speedButton;\r
- speedButton = nullptr;\r
- delete stepsButton;\r
- stepsButton = nullptr;\r
- g_pCustomizationView = nullptr;\r
-}\r
-\r
-CustomizationView *CustomizationView::GetInstance()\r
-{\r
- return g_pCustomizationView;\r
-}\r
-\r
-UIViewGroup *CustomizationView::GetTimeView(void)\r
-{\r
- return timeView;\r
-}\r
-\r
-UIViewGroup *CustomizationView::GetDistancesView(void)\r
-{\r
- return distancesView;\r
-}\r
-\r
-UIViewGroup *CustomizationView::GetHeartView(void)\r
-{\r
- return heartView;\r
-}\r
-\r
-UIViewGroup *CustomizationView::GetSpeedView(void)\r
-{\r
- return speedView;\r
-}\r
-\r
-UIViewGroup *CustomizationView::GetStepsView(void)\r
-{\r
- return stepsView;\r
-}\r
-\r
-UIRadioButton *CustomizationView::GetTimeRadio(void)\r
-{\r
- return timeRadio;\r
-}\r
-\r
-UIRadioButton *CustomizationView::GetDistancesRadio(void)\r
-{\r
- return distancesRadio;\r
-}\r
-\r
-UIRadioButton *CustomizationView::GetHeartRadio(void)\r
-{\r
- return heartRadio;\r
-}\r
-\r
-UIRadioButton *CustomizationView::GetSpeedRadio(void)\r
-{\r
- return speedRadio;\r
-}\r
-\r
-UIRadioButton *CustomizationView::GetStepsRadio(void)\r
-{\r
- return stepsRadio;\r
-}\r
-\r
-IndoorWalkUIScrollView *CustomizationView::GetCustomizationViewGroup()\r
-{\r
- return group;\r
-}\r
-\r
-bool CustomizationView::InitTimeView()\r
-{\r
- timeView = new UIViewGroup;\r
- if (timeView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeView new fail");\r
- return false;\r
- }\r
- timeView->SetPosition(VIEW_X, TIME_VIEW_Y, VIEW_W, VIEW_H);\r
- timeButton = new UILabelButton;\r
- if (timeButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeButton UILabelButton new fail");\r
- return false;\r
- }\r
- timeButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
- timeButton->SetImageSrc(PNG_WALK_TIME_IMAGE, PNG_WALK_TIME_IMAGE);\r
- timeButton->SetText("时间");\r
- timeButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- timeView->Add(timeButton);\r
- timeRadio = new UIRadioButton("Customization");\r
- if (timeRadio == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeRadio UIRadio new fail");\r
- return false;\r
- }\r
- timeRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
- timeView->Add(timeRadio);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitTimeView");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- timeView->SetOnClickListener(clickListener);\r
- timeView->SetViewId(TIME_BUTTON);\r
- timeView->SetDraggable(true);\r
- timeView->SetTouchable(true);\r
- return true;\r
-}\r
-\r
-bool CustomizationView::InitDistancesView()\r
-{\r
- distancesView = new UIViewGroup;\r
- if (distancesView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesView new fail");\r
- return false;\r
- }\r
- distancesView->SetPosition(VIEW_X, DISTANCES_VIEW_Y, VIEW_W, VIEW_H);\r
- distancesButton = new UILabelButton;\r
- if (distancesButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesButton UILabelButton new fail");\r
- return false;\r
- }\r
- distancesButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
- distancesButton->SetImageSrc(PNG_WALK_DISTANCES_IMAGE, PNG_WALK_DISTANCES_IMAGE);\r
- distancesButton->SetText("距离");\r
- distancesButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- distancesView->Add(distancesButton);\r
- distancesRadio = new UIRadioButton("Customization");\r
- if (distancesRadio == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesRadio UIRadio new fail");\r
- return false;\r
- }\r
- distancesRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
- distancesView->Add(distancesRadio);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitDistancesView");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- distancesView->SetOnClickListener(clickListener);\r
- distancesView->SetViewId(DISTANCES_BUTTON);\r
- distancesView->SetDraggable(true);\r
- distancesView->SetTouchable(true);\r
- return true;\r
-}\r
-\r
-bool CustomizationView::InitHeartView()\r
-{\r
- heartView = new UIViewGroup;\r
- if (heartView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartView new fail");\r
- return false;\r
- }\r
- heartView->SetPosition(VIEW_X, HEART_VIEW_Y, VIEW_W, VIEW_H);\r
- heartButton = new UILabelButton;\r
- if (heartButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartButton UILabelButton new fail");\r
- return false;\r
- }\r
- heartButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
- heartButton->SetImageSrc(PNG_WALK_HEART_IMAGE, PNG_WALK_HEART_IMAGE);\r
- heartButton->SetText("心率");\r
- heartButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- heartView->Add(heartButton);\r
- heartRadio = new UIRadioButton("Customization");\r
- if (heartRadio == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRadio UIRadio new fail");\r
- return false;\r
- }\r
- heartRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
- heartView->Add(heartRadio);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitHeartView");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- heartView->SetOnClickListener(clickListener);\r
- heartView->SetViewId(HEART_BUTTON);\r
- heartView->SetDraggable(true);\r
- heartView->SetTouchable(true);\r
- return true;\r
-}\r
-\r
-bool CustomizationView::InitSpeedView()\r
-{\r
- speedView = new UIViewGroup;\r
- if (speedView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedView new fail");\r
- return false;\r
- }\r
- speedView->SetPosition(VIEW_X, SPEED_VIEW_Y, VIEW_W, VIEW_H);\r
- speedButton = new UILabelButton;\r
- if (speedButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedButton UILabelButton new fail");\r
- return false;\r
- }\r
- speedButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
- speedButton->SetImageSrc(PNG_WALK_SPEED_IMAGE, PNG_WALK_SPEED_IMAGE);\r
- speedButton->SetText("速度");\r
- speedButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- speedView->Add(speedButton);\r
- speedRadio = new UIRadioButton("Customization");\r
- if (speedRadio == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedRadio UIRadio new fail");\r
- return false;\r
- }\r
- speedRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
- speedView->Add(speedRadio);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitSpeedView");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- speedView->SetOnClickListener(clickListener);\r
- speedView->SetViewId(SPEED_BUTTON);\r
- speedView->SetDraggable(true);\r
- speedView->SetTouchable(true);\r
- return true;\r
-}\r
-\r
-bool CustomizationView::InitStepsView()\r
-{\r
- stepsView = new UIViewGroup;\r
- if (stepsView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsView new fail");\r
- return false;\r
- }\r
- stepsView->SetPosition(VIEW_X, STEPS_VIEW_Y, VIEW_W, VIEW_H);\r
- stepsButton = new UILabelButton;\r
- if (stepsButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsButton UILabelButton new fail");\r
- return false;\r
- }\r
- stepsButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
- stepsButton->SetImageSrc(PNG_WALK_STEPS_IMAGE, PNG_WALK_STEPS_IMAGE);\r
- stepsButton->SetText("步数");\r
- stepsButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- stepsView->Add(stepsButton);\r
- stepsRadio = new UIRadioButton("Customization");\r
- if (stepsRadio == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsRadio UIRadio new fail");\r
- return false;\r
- }\r
- stepsRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
- stepsView->Add(stepsRadio);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitStepsView");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- stepsView->SetOnClickListener(clickListener);\r
- stepsView->SetViewId(STEPS_BUTTON);\r
- stepsView->SetDraggable(true);\r
- stepsView->SetTouchable(true);\r
- return true;\r
-}\r
-\r
-bool CustomizationView::ShowUpTitleLabel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::ShowUpTitleLabel");\r
- lable = new UILabel();\r
- if (lable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lable new fail");\r
- return false;\r
- }\r
- lable->SetPosition(LABLE_X, LABLE_Y, LABLE_W, LABLE_H);\r
- lable->SetText("自定义");\r
- lable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- lable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- lable->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- return true;\r
-}\r
-\r
-UIViewGroup *CustomizationView::InitPropertiesView()\r
-{\r
- group = new IndoorWalkUIScrollView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0); // 0 : X; 0 : Y\r
- group->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- group->SetHorizontalScrollState(false);\r
-\r
- if ((!ShowUpTitleLabel()) || (!InitTimeView()) || (!InitDistancesView()) ||\r
- (!InitHeartView()) || (!InitSpeedView()) || (!InitStepsView())) {\r
- return nullptr;\r
- }\r
- group->Add(lable);\r
- group->Add(timeView);\r
- group->Add(distancesView);\r
- group->Add(heartView);\r
- group->Add(speedView);\r
- group->Add(stepsView);\r
-\r
- UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (dragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(dragListener);\r
- group->SetScrollBlankSize(100); // 100 : blank size\r
- group->SetViewId(CUSTOMIZATION_VIEW);\r
- group->SetThrowDrag(true);\r
- group->SetDraggable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk End View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/IndoorWalkEndView.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABELS_X = 75;\r
-static constexpr uint16_t LABELS_Y = 150;\r
-static constexpr uint16_t LABELS_W = 324;\r
-static constexpr uint16_t LABELS_H = 160;\r
-static constexpr uint16_t BUTTON_X1 = 85;\r
-static constexpr uint16_t BUTTON_X2 = 279;\r
-static constexpr uint16_t BUTTON_Y = 320;\r
-static constexpr uint16_t BUTTON_W = 90;\r
-static constexpr uint16_t BUTTON_H = 90;\r
-static IndoorWalkEndView *g_pIndoorWalkEndView{nullptr};\r
-\r
-IndoorWalkEndView::IndoorWalkEndView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::IndoorWalkEndView");\r
- g_pIndoorWalkEndView = this;\r
-}\r
-\r
-IndoorWalkEndView::~IndoorWalkEndView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::~IndoorWalkEndView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- }\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete cancelButton;\r
- cancelButton = nullptr;\r
- delete confirmButton;\r
- confirmButton = nullptr;\r
- g_pIndoorWalkEndView = nullptr;\r
-}\r
-\r
-IndoorWalkEndView *IndoorWalkEndView::GetInstance()\r
-{\r
- return g_pIndoorWalkEndView;\r
-}\r
-\r
-bool IndoorWalkEndView::ShowUpTitleLabel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::ShowUpTitleLabel");\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView titleLabel new fail");\r
- return false;\r
- }\r
- titleLabel->SetPosition(LABELS_X, LABELS_Y, LABELS_W, LABELS_H);\r
- titleLabel->SetText("是否结束运动?");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- return true;\r
-}\r
-\r
-bool IndoorWalkEndView::CreateUIButton()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::CreateUIButton");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- cancelButton = new UIButton();\r
- if (cancelButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView cancelButton new fail");\r
- return false;\r
- }\r
- cancelButton->SetPosition(BUTTON_X1, BUTTON_Y, BUTTON_W, BUTTON_H);\r
- cancelButton->SetViewId(INDOORWALK_CANCEL_BUTTON);\r
- cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);\r
- cancelButton->SetOnClickListener(clickListener);\r
-\r
- confirmButton = new UIButton();\r
- if (confirmButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView confirmButton new fail");\r
- return false;\r
- }\r
- confirmButton->SetPosition(BUTTON_X2, BUTTON_Y, BUTTON_W, BUTTON_H);\r
- confirmButton->SetViewId(INDOORWALK_CONFIRM_BUTTON);\r
- confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);\r
- confirmButton->SetOnClickListener(clickListener);\r
- return true;\r
-}\r
-\r
-UIViewGroup *IndoorWalkEndView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView InitShowUpView");\r
- bool ret;\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0); // 0 : X; 0 : Y\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- ret = ShowUpTitleLabel();\r
- if (!ret) {\r
- return nullptr;\r
- }\r
- group->Add(titleLabel);\r
- ret = CreateUIButton();\r
- if (!ret) {\r
- return nullptr;\r
- }\r
- group->Add(cancelButton);\r
- group->Add(confirmButton);\r
- UIView::OnDragListener *indoorWalkDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (indoorWalkDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(indoorWalkDragListener);\r
- group->SetViewId(INDOORWALK_END_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Model\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "ohos_timer.h"\r
-#include "graphic_timer.h"\r
-\r
-namespace OHOS {\r
-#define SENSOR_TYPE_TREADMILL_DISTANCE 0x10011\r
-\r
-/* 跑步机距离 */\r
-typedef struct {\r
- uint32_t distance_info;\r
-} fa_treadmill_distance_result;\r
-\r
-static int g_motionTimes{0};\r
-GraphicTimer* g_startCounting = nullptr; // 定时器\r
-static constexpr uint64_t MS_ONE_SECONDS = 1000;\r
-static constexpr uint16_t NUM_TEN = 10;\r
-static constexpr uint16_t NUM_TIME_MIN = 60;\r
-static constexpr uint16_t NUM_TIME_HOUR = 3600;\r
-static constexpr int32_t NUM_TIME_DAY = 86400;\r
-static constexpr uint16_t STEP_CHAR_NUM = 255;\r
-\r
-IndoorWalkModel::IndoorWalkModel() {}\r
-\r
-IndoorWalkModel::~IndoorWalkModel() {}\r
-\r
-IndoorWalkModel *IndoorWalkModel::GetInstance(void)\r
-{\r
- static IndoorWalkModel instance;\r
- return &instance;\r
-}\r
-\r
-void IndoorWalkModel::SetConnectionView(const char* id)\r
-{\r
- selectPropertiesID = id;\r
-}\r
-\r
-std::string IndoorWalkModel::GetConnectionView()\r
-{\r
- return selectPropertiesID;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableFirstTop(const char *lable, const char *lableUnit)\r
-{\r
- textLableFirstTop = lable;\r
- textLableUnitFirstTop = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableFirstTop()\r
-{\r
- return textLableFirstTop;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitFirstTop()\r
-{\r
- return textLableUnitFirstTop;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableFirstLeft(const char *lable, const char *lableUnit)\r
-{\r
- textLableFirstLeft = lable;\r
- textLableUnitFirstLeft = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableFirstLeft()\r
-{\r
- return textLableFirstLeft;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitFirstLeft()\r
-{\r
- return textLableUnitFirstLeft;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableFirstRight(const char *lable, const char *lableUnit)\r
-{\r
- textLableFirstRight = lable;\r
- textLableUnitFirstRight = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableFirstRight()\r
-{\r
- return textLableFirstRight;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitFirstRight()\r
-{\r
- return textLableUnitFirstRight;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableFirstBottom(const char *lable, const char *lableUnit)\r
-{\r
- textLableFirstBottom = lable;\r
- textLableUnitFirstBottom = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableFirstBottom()\r
-{\r
- return textLableFirstBottom;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitFirstBottom()\r
-{\r
- return textLableUnitFirstBottom;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableSecondTop(const char *lable, const char *lableUnit)\r
-{\r
- textLableSecondTop = lable;\r
- textLableUnitSecondTop = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableSecondTop()\r
-{\r
- return textLableSecondTop;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitSecondTop()\r
-{\r
- return textLableUnitSecondTop;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableSecondLeft(const char *lable, const char *lableUnit)\r
-{\r
- textLableSecondLeft = lable;\r
- textLableUnitSecondLeft = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableSecondLeft()\r
-{\r
- return textLableSecondLeft;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitSecondLeft()\r
-{\r
- return textLableUnitSecondLeft;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableSecondRight(const char *lable, const char *lableUnit)\r
-{\r
- textLableSecondRight = lable;\r
- textLableUnitSecondRight = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableSecondRight()\r
-{\r
- return textLableSecondRight;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitSecondRight()\r
-{\r
- return textLableUnitSecondRight;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableThirdTop(const char *lable, const char *lableUnit)\r
-{\r
- textLableThirdTop = lable;\r
- textLableUnitThirdTop = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableThirdTop()\r
-{\r
- return textLableThirdTop;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitThirdTop()\r
-{\r
- return textLableUnitThirdTop;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableThirdBottom(const char *lable, const char *lableUnit)\r
-{\r
- textLableThirdBottom = lable;\r
- textLableUnitThirdBottom = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableThirdBottom()\r
-{\r
- return textLableThirdBottom;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitThirdBottom()\r
-{\r
- return textLableUnitThirdBottom;\r
-}\r
-\r
-void IndoorWalkModel::SetTextLableFourth(const char *lable, const char *lableUnit)\r
-{\r
- textLableFourth = lable;\r
- textLableUnitFourth = lableUnit;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableFourth()\r
-{\r
- return textLableFourth;\r
-}\r
-\r
-std::string IndoorWalkModel::GetTextLableUnitFourth()\r
-{\r
- return textLableUnitFourth;\r
-}\r
-\r
-void IndoorWalkModel::SetInitialStep(const uint32_t &value)\r
-{\r
- initialStep = value;\r
-}\r
-\r
-int IndoorWalkModel::GetInitialStep()\r
-{\r
- return initialStep;\r
-}\r
-\r
-void IndoorWalkModel::SetInitialDistances(const float &value)\r
-{\r
- initialDistances = value;\r
-}\r
-\r
-float IndoorWalkModel::GetInitialDistances()\r
-{\r
- return initialDistances;\r
-}\r
-\r
-void IndoorWalkModel::SetCurrentDistances(const float &value)\r
-{\r
- currentDistances = value;\r
-}\r
-\r
-float IndoorWalkModel::GetCurrentDistances()\r
-{\r
- return currentDistances;\r
-}\r
-\r
-/* 时间显示 */\r
-std::string& IndoorWalkModel::DisplayMotionDuration()\r
-{\r
- motionDuration.erase();\r
- std::string hours;\r
- std::string minute;\r
- std::string seconds;\r
- if (g_motionTimes >= NUM_TIME_DAY) {\r
- g_motionTimes = 0;\r
- }\r
- int hour = g_motionTimes / NUM_TIME_HOUR;\r
- int min = (g_motionTimes % NUM_TIME_HOUR) / NUM_TIME_MIN;\r
- int sec = (g_motionTimes % NUM_TIME_HOUR) % NUM_TIME_MIN;\r
- if (hour >= 0 && hour < NUM_TEN) {\r
- hours = "0" + std::to_string(hour);\r
- } else {\r
- hours = std::to_string(hour);\r
- }\r
- if (min >= 0 && min < NUM_TEN) {\r
- minute = "0" + std::to_string(min);\r
- } else {\r
- minute = std::to_string(min);\r
- }\r
- if (sec >= 0 && sec < NUM_TEN) {\r
- seconds = "0" + std::to_string(sec);\r
- } else {\r
- seconds = std::to_string(sec);\r
- }\r
-\r
- motionDuration = hours + ":" + minute + ":" + seconds;\r
- return motionDuration;\r
-}\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* 定时器回调函数 */\r
-void IndoorWalkTimerCallback(void* data)\r
-{\r
- (void)data;\r
- g_motionTimes++;\r
- IndoorWalkPresenter *indoorWalkPresenter = IndoorWalkPresenter::GetInstance();\r
- if (indoorWalkPresenter == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkTimerCallback::indoorWalkPresenter new fail");\r
- return;\r
- }\r
- indoorWalkPresenter->ModifiesTime();\r
-}\r
-\r
-/* 开启定时器 */\r
-void InitIndoorWalkTimer()\r
-{\r
- if (g_startCounting != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer already exists!!");\r
- return;\r
- }\r
- uint32_t tick = GetOSTick(MS_ONE_SECONDS);\r
- g_startCounting = new GraphicTimer(tick, IndoorWalkTimerCallback, nullptr, true);\r
- if (g_startCounting == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer new GraphicTimer failed!!");\r
- return;\r
- }\r
- bool retTimer = g_startCounting->Start();\r
- if (!retTimer) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer Start failed!!");\r
- if (g_startCounting != nullptr) {\r
- delete g_startCounting;\r
- g_startCounting = nullptr;\r
- }\r
- return;\r
- }\r
-}\r
-/* 关闭定时器 */\r
-void DisableIndoorWalkTimer()\r
-{\r
- if (g_startCounting != nullptr) {\r
- delete g_startCounting;\r
- g_startCounting = nullptr;\r
- g_motionTimes = 0;\r
- }\r
-}\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-// 打开传感器\r
-bool IndoorWalkModel::OpenDistancesSensor(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::OpenDistancesSensor!!");\r
- return true;\r
-}\r
-\r
-bool IndoorWalkModel::CloseDistancesSensor(void)\r
-{\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Motion View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/IndoorWalkMotionView.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "screensetting/ScreenModels.h"\r
-#include "activity/ActivityModel.h"\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include <iomanip>\r
-\r
-namespace OHOS {\r
-static IndoorWalkMotionView *g_pIndoorWalkMotionView{nullptr};\r
-\r
-struct WalkMotionViewMapper {\r
- MotionPageId id;\r
- AppGroupView *(IndoorWalkMotionView::*func)(void);\r
-};\r
-\r
-static const WalkMotionViewMapper g_pageMapper[] = {\r
- {MOTION_FIRST, &IndoorWalkMotionView::InitMotionPageFirst},\r
- {MOTION_SECOND, &IndoorWalkMotionView::InitMotionPageSecond},\r
- {MOTION_THIRD, &IndoorWalkMotionView::InitMotionPageThird},\r
- {MOTION_FOURTH, &IndoorWalkMotionView::InitMotionPageFourth},\r
- {MOTION_FIFTH, &IndoorWalkMotionView::InitMotionPageFifth},\r
-};\r
-\r
-IndoorWalkMotionView::IndoorWalkMotionView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::IndoorWalkMotionView");\r
- InitIndoorWalkTimer();\r
- IndoorWalkModel::GetInstance()->OpenDistancesSensor();\r
- g_pIndoorWalkMotionView = this;\r
-}\r
-\r
-IndoorWalkMotionView::~IndoorWalkMotionView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::~IndoorWalkMotionView");\r
- for (int32_t i = 0; i < maxPage; i++) {\r
- recordCard[i] = nullptr;\r
- }\r
- delete walkMotionList;\r
- walkMotionList = nullptr;\r
- delete motionPageFirst;\r
- motionPageFirst = nullptr;\r
- delete motionPageSecond;\r
- motionPageSecond = nullptr;\r
- delete motionPageThird;\r
- motionPageThird = nullptr;\r
- delete motionPageFourth;\r
- motionPageFourth = nullptr;\r
- delete motionPageFifth;\r
- motionPageFifth = nullptr;\r
- g_pIndoorWalkMotionView = nullptr;\r
-}\r
-\r
-IndoorWalkMotionView *IndoorWalkMotionView::GetInstance()\r
-{\r
- return g_pIndoorWalkMotionView;\r
-}\r
-\r
-AppGroupView *IndoorWalkMotionView::InitMotionPageFirst(void)\r
-{\r
- motionPageFirst = new MotionPageFirst();\r
- if (motionPageFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFirst new fail");\r
- return nullptr;\r
- }\r
- return motionPageFirst;\r
-}\r
-\r
-AppGroupView *IndoorWalkMotionView::InitMotionPageSecond(void)\r
-{\r
- motionPageSecond = new MotionPageSecond();\r
- if (motionPageSecond == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageSecond new fail");\r
- return nullptr;\r
- }\r
- return motionPageSecond;\r
-}\r
-\r
-AppGroupView *IndoorWalkMotionView::InitMotionPageThird(void)\r
-{\r
- motionPageThird = new MotionPageThird();\r
- if (motionPageThird == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageThird new fail");\r
- return nullptr;\r
- }\r
- return motionPageThird;\r
-}\r
-\r
-AppGroupView *IndoorWalkMotionView::InitMotionPageFourth(void)\r
-{\r
- motionPageFourth = new MotionPageFourth();\r
- if (motionPageFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFourth new fail");\r
- return nullptr;\r
- }\r
- return motionPageFourth;\r
-}\r
-\r
-AppGroupView *IndoorWalkMotionView::InitMotionPageFifth(void)\r
-{\r
- motionPageFifth = new MotionPageFifth();\r
- if (motionPageFifth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFifth new fail");\r
- return nullptr;\r
- }\r
- return motionPageFifth;\r
-}\r
-\r
-UIViewGroup *IndoorWalkMotionView::WalkMotionViewInit(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::WalkMotionViewInit");\r
- walkMotionList = new UISwipeView(UISwipeView::VERTICAL);\r
- if (walkMotionList == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "walkMotionList new fail");\r
- return nullptr;\r
- }\r
- walkMotionList->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- walkMotionList->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); // 0 : X; 0 : Y\r
- walkMotionList->SetLoopState(true);\r
- walkMotionList->SetAnimatorTime(50); // 50:animator drag time(ms)\r
-\r
- for (uint16_t i = 0; i < maxPage; i++) {\r
- recordCard[i] = (this->*(g_pageMapper[i].func))();\r
- if (recordCard[i] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView:: recordCard %d error", i);\r
- return nullptr;\r
- }\r
- recordCard[i]->InitView(this);\r
- walkMotionList->Add(recordCard[i]);\r
- }\r
- UIView::OnDragListener *motionDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (motionDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- UIView::OnClickListener *motionClickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (motionClickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionClickListener GetInstance fail");\r
- return nullptr;\r
- }\r
- UISwipeView::OnSwipeListener *motionSwipeListener = (UISwipeView::OnSwipeListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (motionSwipeListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionSwipeListener GetInstance fail");\r
- return nullptr;\r
- }\r
- walkMotionList->SetOnSwipeListener(motionSwipeListener);\r
- walkMotionList->SetOnClickListener(motionClickListener);\r
- walkMotionList->SetOnDragListener(motionDragListener);\r
- walkMotionList->SetViewId(INDOORWALK_MOTION_VIEW);\r
- walkMotionList->SetDraggable(true);\r
- walkMotionList->SetTouchable(true);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::InitPage over");\r
- IndoorWalkModel::GetInstance()->SetInitialDistances(IndoorWalkModel::GetInstance()->GetCurrentDistances());\r
- InitialStep();\r
- return walkMotionList;\r
-}\r
-\r
-void IndoorWalkMotionView::InitialStep()\r
-{\r
- uint32_t stepValue;\r
- int weekToday = ActivityModel::GetInstance()->GetWeekToday();\r
- ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);\r
- IndoorWalkModel::GetInstance()->SetInitialStep(stepValue);\r
-}\r
-\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Prepared View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/IndoorWalkPreparedView.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "screensetting/ScreenModels.h"\r
-#include "ui_resource_image.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static IndoorWalkPreparedView *g_pIndoorWalkPreparedView{nullptr};\r
-\r
-static constexpr uint16_t HEARTBEAT_IMAGE_WIDTH = 92;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_HEIGHT = 92;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_X = 333;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_Y = 170;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_NUM = 19;\r
-static constexpr uint16_t HEARTBEAT_DELAY = 50;\r
-\r
-static constexpr uint16_t BATTERY_X = 175;\r
-static constexpr uint16_t BATTERY_Y = 84;\r
-static constexpr uint16_t BATTERY_LABEL_X = 232;\r
-static constexpr uint16_t BATTERY_LABEL_Y = 75;\r
-static constexpr uint16_t BATTERY_LABEL_W = 86;\r
-static constexpr uint16_t BATTERY_LABEL_H = 30;\r
-\r
-static constexpr uint16_t HEARTBEAT_LABEL_X = 363;\r
-static constexpr uint16_t HEARTBEAT_LABEL_Y = 241;\r
-static constexpr uint16_t HEARTBEAT_LABEL_W = 86;\r
-static constexpr uint16_t HEARTBEAT_LABEL_H = 30;\r
-\r
-static constexpr uint16_t TIME_LABEL_X = 177;\r
-static constexpr uint16_t TIME_LABEL_Y = 36;\r
-static constexpr uint16_t TIME_LABEL_W = 100;\r
-static constexpr uint16_t TIME_LABEL_H = 30;\r
-\r
-static constexpr uint16_t TITLE_LABEL_X = 127;\r
-static constexpr uint16_t TITLE_LABEL_Y = 348;\r
-static constexpr uint16_t TITLE_LABEL_W = 200;\r
-static constexpr uint16_t TITLE_LABEL_H = 80;\r
-\r
-static constexpr uint16_t WALK_BUTTON_X = 138;\r
-static constexpr uint16_t WALK_BUTTON_Y = 136;\r
-static constexpr uint16_t WALK_BUTTON_W = 180;\r
-static constexpr uint16_t WALK_BUTTON_H = 180;\r
-static constexpr uint16_t STEP_CHAR_NUM = 255;\r
-\r
-// 心跳image\r
-static ImageAnimatorInfo g_heartBeatImageInfo[HEARTBEAT_IMAGE_NUM] = {\r
- {PNG_A004_070_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_071_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_072_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_073_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_074_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_075_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_076_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_077_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_078_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_079_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
-\r
- {PNG_A004_080_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_081_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_082_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_083_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_084_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_085_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_086_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_087_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
- {PNG_A004_088_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
- IMG_SRC_FILE_PATH},\r
-};\r
-\r
-\r
-IndoorWalkPreparedView::IndoorWalkPreparedView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::IndoorWalkPreparedView");\r
- g_pIndoorWalkPreparedView = this;\r
-}\r
-\r
-IndoorWalkPreparedView::~IndoorWalkPreparedView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::~IndoorWalkPreparedView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- }\r
- delete walkButton;\r
- walkButton = nullptr;\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete battery;\r
- battery = nullptr;\r
- delete batteryLable;\r
- batteryLable = nullptr;\r
- delete imageAnimator;\r
- imageAnimator = nullptr;\r
- delete heartRateLabel;\r
- heartRateLabel = nullptr;\r
- delete timeLabel;\r
- timeLabel = nullptr;\r
- g_pIndoorWalkPreparedView = nullptr;\r
-}\r
-\r
-IndoorWalkPreparedView *IndoorWalkPreparedView::GetInstance()\r
-{\r
- return g_pIndoorWalkPreparedView;\r
-}\r
-\r
-bool IndoorWalkPreparedView::InitBatteryView() // 加载电量\r
-{\r
- battery = new UIImageView(); // 电量状态显示\r
- if (battery == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "battery new fail");\r
- return false;\r
- }\r
- battery->SetPosition(BATTERY_X, BATTERY_Y);\r
- ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, battery, DROPDOWN_DROPDOWN_BATTERY);\r
- group->Add(battery);\r
-\r
- batteryLable = new UILabel();\r
- if (batteryLable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryLable new fail");\r
- return false;\r
- }\r
- batteryLable->SetPosition(BATTERY_LABEL_X, BATTERY_LABEL_Y, BATTERY_LABEL_W, BATTERY_LABEL_H);\r
- batteryLable->SetText("--%");\r
- batteryLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
- batteryLable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- group->Add(batteryLable);\r
- return true;\r
-}\r
-\r
-bool IndoorWalkPreparedView::InitHeartbeatView() // 加载心跳\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::InitHeartbeatView start");\r
- imageAnimator = new UIImageAnimatorView();\r
- if (imageAnimator == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::InitHeartbeatView new imageAnimator fail");\r
- return false;\r
- }\r
- imageAnimator->SetPosition(HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT);\r
- imageAnimator->SetImageAnimatorSrc(g_heartBeatImageInfo, HEARTBEAT_IMAGE_NUM, HEARTBEAT_DELAY);\r
- imageAnimator->SetRepeat(true);\r
- group->Add(imageAnimator);\r
-\r
- heartRateLabel = new UILabel();\r
- if (heartRateLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRateLabel new fail");\r
- return false;\r
- }\r
- heartRateLabel->SetPosition(HEARTBEAT_LABEL_X, HEARTBEAT_LABEL_Y, HEARTBEAT_LABEL_W, HEARTBEAT_LABEL_H);\r
- heartRateLabel->SetText("--");\r
- heartRateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
- heartRateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- group->Add(heartRateLabel);\r
- return true;\r
-}\r
-\r
-void IndoorWalkPreparedView::IndoorWalkHeartbeatStart(void)\r
-{\r
- imageAnimator->Start();\r
-}\r
-\r
-void IndoorWalkPreparedView::IndoorWalkHeartbeatStop(void)\r
-{\r
- imageAnimator->Stop();\r
-}\r
-\r
-bool IndoorWalkPreparedView::InitLableVIew() // 加载文本\r
-{\r
- timeLabel = new UILabel();\r
- if (timeLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeLabel new fail");\r
- return false;\r
- }\r
- timeLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y, TIME_LABEL_W, TIME_LABEL_H);\r
- timeLabel->SetText("--:--");\r
- timeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
- timeLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- timeLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(timeLabel);\r
-\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
- return false;\r
- }\r
- titleLabel->SetPosition(TITLE_LABEL_X, TITLE_LABEL_Y, TITLE_LABEL_W, TITLE_LABEL_H);\r
- titleLabel->SetText(" 准备就绪 单击下键开始运动");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 25); // 25 : font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- return true;\r
-}\r
-\r
-\r
-UIViewGroup *IndoorWalkPreparedView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView InitShowUpView");\r
- bool ret;\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0); // 0 : X; 0 : Y\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
-\r
- walkButton = new UIButton(); // 步行状态显示\r
- if (walkButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "walkButton new fail");\r
- return nullptr;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return nullptr;\r
- }\r
- walkButton->SetPosition(WALK_BUTTON_X, WALK_BUTTON_Y, WALK_BUTTON_W, WALK_BUTTON_H);\r
- walkButton->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
- walkButton->SetOnClickListener(clickListener);\r
- walkButton->SetViewId(WALK_BUTTON);\r
- group->Add(walkButton);\r
- ret = InitBatteryView();\r
- if (!ret) {\r
- return nullptr;\r
- }\r
- ret = InitHeartbeatView();\r
- if (!ret) {\r
- return nullptr;\r
- }\r
- ret = InitLableVIew();\r
- if (!ret) {\r
- return nullptr;\r
- }\r
- UIView::OnDragListener *indoorWalkDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (indoorWalkDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(indoorWalkDragListener);\r
- group->SetViewId(INDOORWALK_PREPARED_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void IndoorWalkPreparedView::RefreshHeartbeatData(int value)\r
-{\r
- char heartRateChar[STEP_CHAR_NUM] = {0};\r
-\r
- (void)sprintf_s(heartRateChar, STEP_CHAR_NUM, "%d", value);\r
- if (heartRateLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RefreshHeartbeatData heartRateLabel nullptr");\r
- return;\r
- }\r
- heartRateLabel->SetText(heartRateChar);\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk Presenter\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "indoorwalk/IndoorWalkView.h"\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include "drag_event.h"\r
-#include "UiConfig.h"\r
-#include "wearable_log.h"\r
-#include <sstream>\r
-#include "activity/ActivityModel.h"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_MENU(VIEW_INDOORWALK, IndoorWalkView, IndoorWalkPresenter, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_DEFAULT_IMG, "室内步行");\r
-\r
-static IndoorWalkPresenter *g_pIndoorWalkPresenter = nullptr;\r
-static std::string g_distancesChar;\r
-static constexpr uint16_t CENTERED_Y = 192;\r
-static constexpr uint32_t CONVERSION_NUM = 100000;\r
-static constexpr uint16_t STEP_CHAR_NUM = 255;\r
-\r
-struct IndoorWalkGetViewMapper {\r
- const char *viewId;\r
- void (IndoorWalkPresenter::*Getfunc)(const char* id);\r
-};\r
-\r
-static const IndoorWalkGetViewMapper g_pWalkGetViewMapper[] = {\r
- {IMAGE_FIRST_TOP, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_SECOND_TOP, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_THIRD_TOP, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::ImageOnClick},\r
- {IMAGE_FOURTH, &IndoorWalkPresenter::ImageOnClick},\r
- {INDOORWALK_CANCEL_BUTTON, &IndoorWalkPresenter::CancelButtonOnClick},\r
- {INDOORWALK_CONFIRM_BUTTON, &IndoorWalkPresenter::ConfirmButtonOnClick},\r
- {WALK_BUTTON, &IndoorWalkPresenter::WalkButtonOnClick},\r
- {TIME_BUTTON, &IndoorWalkPresenter::TimeViewOnClick},\r
- {DISTANCES_BUTTON, &IndoorWalkPresenter::DistancesViewOnClick},\r
- {HEART_BUTTON, &IndoorWalkPresenter::HeartViewOnClick},\r
- {SPEED_BUTTON, &IndoorWalkPresenter::SpeedViewOnClick},\r
- {STEPS_BUTTON, &IndoorWalkPresenter::StepsViewOnClick},\r
-};\r
-\r
-void IndoorWalkPresenter::ImageOnClick(const char* id)\r
-{\r
- if (id == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ImageOnClick id nullptr");\r
- return;\r
- }\r
- IndoorWalkModel::GetInstance()->SetConnectionView(id);\r
- IndoorWalkView::GetInstance()->ChangeView(INDOORWALKMOTIONVIEW, CUSTOMIZATIONVIEW);\r
- SetPropertiesState(id);\r
-}\r
-\r
-void IndoorWalkPresenter::CancelButtonOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- IndoorWalkView::GetInstance()->ChangeView(INDOORWALKENDVIEW, INDOORWALKMOTIONVIEW);\r
-}\r
-\r
-void IndoorWalkPresenter::ConfirmButtonOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
-}\r
-\r
-void IndoorWalkPresenter::WalkButtonOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- IndoorWalkView::GetInstance()->ChangeView(INDOORWALKPREPAREDVIEW, INDOORWALKMOTIONVIEW);\r
-}\r
-\r
-void IndoorWalkPresenter::TimeViewOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- std::string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
- std::string duration = IndoorWalkModel::GetInstance()->DisplayMotionDuration();\r
- ModifiesProperties(selectPropertiesid.c_str(), duration.c_str(), "时间");\r
-}\r
-\r
-void IndoorWalkPresenter::DistancesViewOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- std::string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
- ModifiesProperties(selectPropertiesid.c_str(), "0.00", "距离(km)");\r
-}\r
-\r
-void IndoorWalkPresenter::HeartViewOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- std::string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
- ModifiesProperties(selectPropertiesid.c_str(), "--", "心率(bpm)");\r
-}\r
-\r
-void IndoorWalkPresenter::SpeedViewOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- std::string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
- ModifiesProperties(selectPropertiesid.c_str(), "0.00", "速度(km/h)");\r
-}\r
-\r
-void IndoorWalkPresenter::StepsViewOnClick(const char* id)\r
-{\r
- UNUSED(id);\r
- std::string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
- char stepChar[STEP_CHAR_NUM] = {0};\r
- InitStepsValue(stepChar);\r
- ModifiesProperties(selectPropertiesid.c_str(), stepChar, "步数(steps)");\r
-}\r
-\r
-void IndoorWalkPresenter::ClickFunc(const char *buttonId)\r
-{\r
- if (buttonId == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickFunc buttonId nullptr");\r
- return;\r
- }\r
- unsigned int mapperSize = sizeof(g_pWalkGetViewMapper) / sizeof(g_pWalkGetViewMapper[0]);\r
- for (unsigned int i = 0; i < mapperSize; i++) {\r
- if (strcmp(buttonId, g_pWalkGetViewMapper[i].viewId) == 0) {\r
- (this->*(g_pWalkGetViewMapper[i].Getfunc))(buttonId);\r
- return;\r
- }\r
- }\r
- HidePageImageView();\r
-}\r
-\r
-IndoorWalkPresenter::IndoorWalkPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::IndoorWalkPresenter");\r
- g_pIndoorWalkPresenter = this;\r
-}\r
-\r
-IndoorWalkPresenter::~IndoorWalkPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::~IndoorWalkPresenter");\r
- g_pIndoorWalkPresenter = nullptr;\r
-}\r
-\r
-IndoorWalkPresenter *IndoorWalkPresenter::GetInstance()\r
-{\r
- return g_pIndoorWalkPresenter;\r
-}\r
-\r
-void IndoorWalkPresenter::OnSwipe(UISwipeView &view)\r
-{\r
- UNUSED(view);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::OnSwipe");\r
- HidePageImageView();\r
- return;\r
-}\r
-\r
-bool IndoorWalkPresenter::OnClick(UIView& view, const ClickEvent& event)\r
-{\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%s OnClick", view.GetViewId());\r
- ClickFunc(view.GetViewId());\r
- return true;\r
-}\r
-\r
-void IndoorWalkPresenter::InitStepsValue(char *steps)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::InitStepsValue");\r
- uint32_t stepValue;\r
- int weekToday = ActivityModel::GetInstance()->GetWeekToday();\r
- ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);\r
- std::ostringstream ostrHour;\r
- ostrHour << stepValue - IndoorWalkModel::GetInstance()->GetInitialStep();\r
- std::string weekStr = ostrHour.str();\r
- uint32_t ret = memcpy_s(steps, STEP_CHAR_NUM, weekStr.c_str(), weekStr.length());\r
- if (ret != EOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveStepToFile memcpy_s fail. ret=%d", ret);\r
- return;\r
- }\r
-}\r
-\r
-void IndoorWalkPresenter::HidePageImageView()\r
-{\r
- MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
- if (motionPageFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageFirst new fail");\r
- return;\r
- }\r
- motionPageFirst->HideInitPageFirstImageView();\r
- MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
- if (motionPageSecond == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageSecond new fail");\r
- return;\r
- }\r
- motionPageSecond->HideInitPageSecondImageView();\r
- MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
- if (motionPageThird == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageThird new fail");\r
- return;\r
- }\r
- motionPageThird->HideInitPageThirdImageView();\r
- MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();\r
- if (motionPageFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageFourth new fail");\r
- return;\r
- }\r
- motionPageFourth->HideInitPageFourthImageView();\r
-}\r
-\r
-struct IndoorWalkDragMapper {\r
- const char *viewId;\r
- void (IndoorWalkPresenter::*Getfunc)();\r
-};\r
-\r
-static const IndoorWalkDragMapper g_pWalkDragMapper[] = {\r
- {INDOORWALK_PREPARED_VIEW, &IndoorWalkPresenter::DragIndoorWalkPreparedView},\r
- {INDOORWALK_MOTION_VIEW, &IndoorWalkPresenter::DragIndoorWalkMotionView},\r
- {INDOORWALK_END_VIEW, &IndoorWalkPresenter::DragIndoorWalkEndView},\r
- {CUSTOMIZATION_VIEW, &IndoorWalkPresenter::DragCustomizationView},\r
-};\r
-\r
-void IndoorWalkPresenter::DragIndoorWalkPreparedView()\r
-{\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
-}\r
-\r
-void IndoorWalkPresenter::DragIndoorWalkMotionView()\r
-{\r
- IndoorWalkView::GetInstance()->ChangeView(INDOORWALKMOTIONVIEW, INDOORWALKENDVIEW);\r
-}\r
-\r
-void IndoorWalkPresenter::DragIndoorWalkEndView()\r
-{\r
- IndoorWalkView::GetInstance()->ChangeView(INDOORWALKENDVIEW, INDOORWALKMOTIONVIEW);\r
-}\r
-\r
-void IndoorWalkPresenter::DragCustomizationView()\r
-{\r
- IndoorWalkView::GetInstance()->ChangeView(CUSTOMIZATIONVIEW, INDOORWALKMOTIONVIEW);\r
-}\r
-\r
-void IndoorWalkPresenter::DragFunc(const char *buttonId)\r
-{\r
- if (buttonId == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DragFunc nullptr");\r
- return;\r
- }\r
- unsigned int mapperSize = sizeof(g_pWalkDragMapper) / sizeof(g_pWalkDragMapper[0]);\r
- for (unsigned int i = 0; i < mapperSize; i++) {\r
- if (strcmp(buttonId, g_pWalkDragMapper[i].viewId) == 0) {\r
- (this->*(g_pWalkDragMapper[i].Getfunc))();\r
- return;\r
- }\r
- }\r
-}\r
-\r
-bool IndoorWalkPresenter::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- HidePageImageView();\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- DragFunc(view.GetViewId());\r
- }\r
- return true;\r
-}\r
-\r
-struct IndoorWalkLongPressMapper {\r
- const char *viewId;\r
- void (IndoorWalkPresenter::*Getfunc)();\r
-};\r
-\r
-static const IndoorWalkLongPressMapper g_pWalkLongPressMapper[] = {\r
- {LABLE_FIRST_TOP, &IndoorWalkPresenter::LongPressPageFirst},\r
- {LABLE_FIRST_LEFT, &IndoorWalkPresenter::LongPressPageFirst},\r
- {LABLE_FIRST_RIGHT, &IndoorWalkPresenter::LongPressPageFirst},\r
- {LABLE_FIRST_BOTTOM, &IndoorWalkPresenter::LongPressPageFirst},\r
- {LABLE_SECOND_TOP, &IndoorWalkPresenter::LongPressPageSecond},\r
- {LABLE_SECOND_LEFT, &IndoorWalkPresenter::LongPressPageSecond},\r
- {LABLE_SECOND_RIGHT, &IndoorWalkPresenter::LongPressPageSecond},\r
- {LABLE_THIRD_TOP, &IndoorWalkPresenter::LongPressPageThird},\r
- {LABLE_THIRD_BOTTOM, &IndoorWalkPresenter::LongPressPageThird},\r
- {LABLE_FOURTH, &IndoorWalkPresenter::LongPressPageFourth},\r
-};\r
-\r
-void IndoorWalkPresenter::LongPressPageFirst()\r
-{\r
- MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
- if (motionPageFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageFirst new fail");\r
- return;\r
- }\r
- motionPageFirst->ShowInitPageFirstImageView();\r
-}\r
-\r
-void IndoorWalkPresenter::LongPressPageSecond()\r
-{\r
- MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
- if (motionPageSecond == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageSecond new fail");\r
- return;\r
- }\r
- motionPageSecond->ShowInitPageSecondImageView();\r
-}\r
-\r
-void IndoorWalkPresenter::LongPressPageThird()\r
-{\r
- MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
- if (motionPageThird == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageThird new fail");\r
- return;\r
- }\r
- motionPageThird->ShowInitPageThirdImageView();\r
-}\r
-\r
-void IndoorWalkPresenter::LongPressPageFourth()\r
-{\r
- MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();\r
- if (motionPageFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageFourth new fail");\r
- return;\r
- }\r
- motionPageFourth->ShowInitPageFourthImageView();\r
-}\r
-\r
-void IndoorWalkPresenter::LongPressFunc(const char *buttonId)\r
-{\r
- if (buttonId == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LongPressFunc nullptr");\r
- return;\r
- }\r
- unsigned int mapperSize = sizeof(g_pWalkLongPressMapper) / sizeof(g_pWalkLongPressMapper[0]);\r
- for (unsigned int i = 0; i < mapperSize; i++) {\r
- if (strcmp(buttonId, g_pWalkLongPressMapper[i].viewId) == 0) {\r
- (this->*(g_pWalkLongPressMapper[i].Getfunc))();\r
- return;\r
- }\r
- }\r
-}\r
-\r
-bool IndoorWalkPresenter::OnLongPress(UIView& view, const LongPressEvent& event)\r
-{\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnLongPress OnLongPress");\r
- LongPressFunc(view.GetViewId());\r
- return true;\r
-}\r
-\r
-struct IndoorWalkModifiesMapper {\r
- const char *viewId;\r
- void (IndoorWalkPresenter::*Getfunc)(const char *lable, const char *lableUnit);\r
-};\r
-\r
-static const IndoorWalkModifiesMapper g_pWalkModifiesMapper[] = {\r
- {IMAGE_FIRST_TOP, &IndoorWalkPresenter::ModifiesPageFirstTop},\r
- {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::ModifiesPageFirstLeft},\r
- {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::ModifiesPageFirstRight},\r
- {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::ModifiesPageFirstBottom},\r
- {IMAGE_SECOND_TOP, &IndoorWalkPresenter::ModifiesPageSecondTop},\r
- {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::ModifiesPageSecondLeft},\r
- {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::ModifiesPageSecondRight},\r
- {IMAGE_THIRD_TOP, &IndoorWalkPresenter::ModifiesPageThirdTop},\r
- {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::ModifiesPageThirdBottom},\r
- {IMAGE_FOURTH, &IndoorWalkPresenter::ModifiesPageFourth},\r
-};\r
-\r
-void IndoorWalkPresenter::ModifiesFunc(const char *buttonId, const char *lable, const char *lableUnit)\r
-{\r
- if ((buttonId == nullptr) || (lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesFunc nullptr");\r
- return;\r
- }\r
- unsigned int mapperSize = sizeof(g_pWalkModifiesMapper) / sizeof(g_pWalkModifiesMapper[0]);\r
- for (unsigned int i = 0; i < mapperSize; i++) {\r
- if (strcmp(buttonId, g_pWalkModifiesMapper[i].viewId) == 0) {\r
- (this->*(g_pWalkModifiesMapper[i].Getfunc))(lable, lableUnit);\r
- IndoorWalkView::GetInstance()->ChangeView(CUSTOMIZATIONVIEW, INDOORWALKMOTIONVIEW);\r
- return;\r
- }\r
- }\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesProperties(const char* id, const char *lable, const char *lableUnit)\r
-{\r
- if ((id == nullptr) || (lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesProperties nullptr");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesProperties == %s", id);\r
- HidePageImageView();\r
- ModifiesFunc(id, lable, lableUnit);\r
-}\r
-\r
-struct IndoorWalkPropertiesMapper {\r
- const char *viewId;\r
- void (IndoorWalkPresenter::*Getfunc)();\r
-};\r
-\r
-static const IndoorWalkPropertiesMapper g_pWalkPropertiesMapper[] = {\r
- {IMAGE_FIRST_TOP, &IndoorWalkPresenter::SetPropertiesPageFirstTop},\r
- {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::SetPropertiesPageFirstLeft},\r
- {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::SetPropertiesPageFirstRight},\r
- {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::SetPropertiesPageFirstBottom},\r
- {IMAGE_SECOND_TOP, &IndoorWalkPresenter::SetPropertiesPageSecondTop},\r
- {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::SetPropertiesPageSecondLeft},\r
- {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::SetPropertiesPageSecondRight},\r
- {IMAGE_THIRD_TOP, &IndoorWalkPresenter::SetPropertiesPageThirdTop},\r
- {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::SetPropertiesPageThirdBottom},\r
- {IMAGE_FOURTH, &IndoorWalkPresenter::SetPropertiesPageFourth},\r
-};\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageFirstTop()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageFirstLeft()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageFirstRight()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageFirstBottom()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageSecondTop()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageSecondLeft()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageSecondRight()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageThirdTop()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageThirdBottom()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesPageFourth()\r
-{\r
- std::string lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFourth();\r
- SetCustomizationState(lableUnit.c_str());\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesFunc(const char *buttonId)\r
-{\r
- if (buttonId == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPropertiesFunc buttonId nullptr");\r
- return;\r
- }\r
- unsigned int mapperSize = sizeof(g_pWalkPropertiesMapper) / sizeof(g_pWalkPropertiesMapper[0]);\r
- for (unsigned int i = 0; i < mapperSize; i++) {\r
- if (strcmp(buttonId, g_pWalkPropertiesMapper[i].viewId) == 0) {\r
- (this->*(g_pWalkPropertiesMapper[i].Getfunc))();\r
- return;\r
- }\r
- }\r
-}\r
-\r
-void IndoorWalkPresenter::SetPropertiesState(const char* id)\r
-{\r
- if (id == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPropertiesState id nullptr");\r
- return;\r
- }\r
- SetPropertiesFunc(id);\r
-}\r
-\r
-void IndoorWalkPresenter::SetCustomizationState(const char *lableUnit)\r
-{\r
- if (lableUnit == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetCustomizationState lableUnit nullptr");\r
- return;\r
- }\r
- uint16_t customizationY = 0;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCustomizationState %s", lableUnit);\r
- CustomizationView *customizationView = CustomizationView::GetInstance();\r
- if (customizationView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetCustomizationState::customizationView new fail");\r
- return;\r
- }\r
- customizationView->GetTimeRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
- customizationView->GetDistancesRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
- customizationView->GetHeartRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
- customizationView->GetSpeedRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
- customizationView->GetStepsRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
- if (strcmp(lableUnit, "时间") == 0) {\r
- customizationView->GetTimeRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
- customizationY = customizationView->GetTimeView()->GetY();\r
- } else if (strcmp(lableUnit, "距离(km)") == 0) {\r
- customizationView->GetDistancesRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
- customizationY = customizationView->GetDistancesView()->GetY();\r
- } else if (strcmp(lableUnit, "心率(bpm)") == 0) {\r
- customizationView->GetHeartRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
- customizationY = customizationView->GetHeartView()->GetY();\r
- } else if (strcmp(lableUnit, "速度(km/h)") == 0) {\r
- customizationView->GetSpeedRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
- customizationY = customizationView->GetSpeedView()->GetY();\r
- } else if (strcmp(lableUnit, "步数(steps)") == 0) {\r
- customizationView->GetStepsRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
- customizationY = customizationView->GetStepsView()->GetY();\r
- }\r
- customizationView->GetCustomizationViewGroup()->ScrollBy(0, CENTERED_Y - customizationY);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesTime()\r
-{\r
- std::string duration = IndoorWalkModel::GetInstance()->DisplayMotionDuration();\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "时间") == 0) {\r
- ModifiesPageFirstTop(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "时间") == 0) {\r
- ModifiesPageFirstLeft(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "时间") == 0) {\r
- ModifiesPageFirstRight(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "时间") == 0) {\r
- ModifiesPageFirstBottom(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "时间") == 0) {\r
- ModifiesPageSecondTop(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "时间") == 0) {\r
- ModifiesPageSecondLeft(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "时间") == 0) {\r
- ModifiesPageSecondRight(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "时间") == 0) {\r
- ModifiesPageThirdTop(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "时间") == 0) {\r
- ModifiesPageThirdBottom(duration.c_str(), "时间");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "时间") == 0) {\r
- ModifiesPageFourth(duration.c_str(), "时间");\r
- }\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesDistances(float value)\r
-{\r
- g_distancesChar.erase();\r
- value -= IndoorWalkModel::GetInstance()->GetInitialDistances();\r
- value /= CONVERSION_NUM;\r
- g_distancesChar = std::to_string(value).substr(0, std::to_string(value).find(".") + 3);\r
-\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "距离(km)") == 0) {\r
- ModifiesPageFirstTop(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "距离(km)") == 0) {\r
- ModifiesPageFirstLeft(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "距离(km)") == 0) {\r
- ModifiesPageFirstRight(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "距离(km)") == 0) {\r
- ModifiesPageFirstBottom(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "距离(km)") == 0) {\r
- ModifiesPageSecondTop(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "距离(km)") == 0) {\r
- ModifiesPageSecondLeft(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "距离(km)") == 0) {\r
- ModifiesPageSecondRight(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "距离(km)") == 0) {\r
- ModifiesPageThirdTop(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "距离(km)") == 0) {\r
- ModifiesPageThirdBottom(g_distancesChar.c_str(), "距离(km)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "距离(km)") == 0) {\r
- ModifiesPageFourth(g_distancesChar.c_str(), "距离(km)");\r
- }\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesHeartRate(int value)\r
-{\r
- char heartRateChar[STEP_CHAR_NUM] = {0};\r
- (void)sprintf_s(heartRateChar, STEP_CHAR_NUM, "%d", value);\r
-\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageFirstTop(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageFirstLeft(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageFirstRight(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageFirstBottom(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageSecondTop(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageSecondLeft(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageSecondRight(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageThirdTop(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageThirdBottom(heartRateChar, "心率(bpm)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "心率(bpm)") == 0) {\r
- ModifiesPageFourth(heartRateChar, "心率(bpm)");\r
- }\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesSteps(int step)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesSteps ");\r
- char stepChar[STEP_CHAR_NUM] = {0};\r
-\r
- (void)sprintf_s(stepChar, STEP_CHAR_NUM, "%d", step - IndoorWalkModel::GetInstance()->GetInitialStep());\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageFirstTop(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageFirstLeft(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageFirstRight(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageFirstBottom(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageSecondTop(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageSecondLeft(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageSecondRight(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageThirdTop(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageThirdBottom(stepChar, "步数(steps)");\r
- }\r
- if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "步数(steps)") == 0) {\r
- ModifiesPageFourth(stepChar, "步数(steps)");\r
- }\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageFirstTop(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstTop lable nullptr");\r
- return;\r
- }\r
- MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
- if (motionPageFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstTop:motionPageFirst new fail");\r
- return;\r
- }\r
- motionPageFirst->GetLableFirstTop()->SetText(lable);\r
- motionPageFirst->GetLableUnitFirstTop()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableFirstTop(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageFirstLeft(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstLeft lable nullptr");\r
- return;\r
- }\r
- MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
- if (motionPageFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstLeft:motionPageFirst new fail");\r
- return;\r
- }\r
- motionPageFirst->GetLableFirstLeft()->SetText(lable);\r
- motionPageFirst->GetLableUnitFirstLeft()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableFirstLeft(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageFirstRight(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstRight lable nullptr");\r
- return;\r
- }\r
- MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
- if (motionPageFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstRight:motionPageFirst new fail");\r
- return;\r
- }\r
- motionPageFirst->GetLableFirstRight()->SetText(lable);\r
- motionPageFirst->GetLableUnitFirstRight()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableFirstRight(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageFirstBottom(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstBottom lable nullptr");\r
- return;\r
- }\r
- MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
- if (motionPageFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstBottom:motionPageFirst new fail");\r
- return;\r
- }\r
- motionPageFirst->GetLableFirstBottom()->SetText(lable);\r
- motionPageFirst->GetLableUnitFirstBottom()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableFirstBottom(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageSecondTop(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondTop lable nullptr");\r
- return;\r
- }\r
- MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
- if (motionPageSecond == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondTop:motionPageSecond new fail");\r
- return;\r
- }\r
- motionPageSecond->GetLableSecondTop()->SetText(lable);\r
- motionPageSecond->GetLableUnitSecondTop()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableSecondTop(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageSecondLeft(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondLeft lable nullptr");\r
- return;\r
- }\r
- MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
- if (motionPageSecond == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondLeft:motionPageSecond new fail");\r
- return;\r
- }\r
- motionPageSecond->GetLableSecondLeft()->SetText(lable);\r
- motionPageSecond->GetLableUnitSecondLeft()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableSecondLeft(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageSecondRight(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondRight lable nullptr");\r
- return;\r
- }\r
- MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
- if (motionPageSecond == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondRight:motionPageSecond new fail");\r
- return;\r
- }\r
- motionPageSecond->GetLableSecondRight()->SetText(lable);\r
- motionPageSecond->GetLableUnitSecondRight()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableSecondRight(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageThirdTop(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdTop lable nullptr");\r
- return;\r
- }\r
- MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
- if (motionPageThird == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdTop:motionPageThird new fail");\r
- return;\r
- }\r
- motionPageThird->GetLableThirdTop()->SetText(lable);\r
- motionPageThird->GetLableUnitThirdTop()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableThirdTop(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageThirdBottom(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdBottom lable nullptr");\r
- return;\r
- }\r
- MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
- if (motionPageThird == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdBottom:motionPageThird new fail");\r
- return;\r
- }\r
- motionPageThird->GetLableThirdBottom()->SetText(lable);\r
- motionPageThird->GetLableUnitThirdBottom()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableThirdBottom(lable, lableUnit);\r
-}\r
-\r
-void IndoorWalkPresenter::ModifiesPageFourth(const char *lable, const char *lableUnit)\r
-{\r
- if ((lable == nullptr) || (lableUnit == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFourth lable nullptr");\r
- return;\r
- }\r
- MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();\r
- if (motionPageFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFourth:motionPageFourth new fail");\r
- return;\r
- }\r
- motionPageFourth->GetLableFourth()->SetText(lable);\r
- motionPageFourth->GetLableUnitFourth()->SetText(lableUnit);\r
- IndoorWalkModel::GetInstance()->SetTextLableFourth(lable, lableUnit);\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: IndoorWalk View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/IndoorWalkView.h"\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static IndoorWalkView *g_pIndoorWalkView{nullptr};\r
-\r
-IndoorWalkView::IndoorWalkView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::IndoorWalkView");\r
- preProcessView[INDOORWALKPREPAREDVIEW] = &IndoorWalkView::ChangeIndoorWalkPreparedView;\r
- preProcessView[INDOORWALKMOTIONVIEW] = &IndoorWalkView::ChangeIndoorWalkMotionView;\r
- preProcessView[CUSTOMIZATIONVIEW] = &IndoorWalkView::ChangeCustomizationView;\r
- preProcessView[INDOORWALKENDVIEW] = &IndoorWalkView::ChangeIndoorWalkEndView;\r
-\r
- g_pIndoorWalkView = this;\r
-}\r
-\r
-IndoorWalkView::~IndoorWalkView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~IndoorWalkView");\r
- g_pIndoorWalkView = nullptr;\r
-}\r
-\r
-IndoorWalkView *IndoorWalkView::GetInstance()\r
-{\r
- return g_pIndoorWalkView;\r
-}\r
-\r
-void IndoorWalkView::OnStart()\r
-{\r
-\r
- ChangeView(INDOORWALK_MAX, INDOORWALKPREPAREDVIEW);\r
- return;\r
-}\r
-\r
-void IndoorWalkView::OnStop()\r
-{\r
- DisableIndoorWalkTimer();\r
- IndoorWalkModel::GetInstance()->CloseDistancesSensor();\r
- return;\r
-}\r
-\r
-bool IndoorWalkView::ChangeIndoorWalkPreparedView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkPreparedView");\r
- indoorWalkPreparedView = new IndoorWalkPreparedView();\r
- if (indoorWalkPreparedView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkPreparedView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = indoorWalkPreparedView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- indoorWalkPreparedView->IndoorWalkHeartbeatStart();\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool IndoorWalkView::ChangeIndoorWalkMotionView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkMotionView");\r
- indoorWalkMotionView = new IndoorWalkMotionView();\r
- if (indoorWalkMotionView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkMotionView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = indoorWalkMotionView->WalkMotionViewInit();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool IndoorWalkView::ChangeCustomizationView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeCustomizationView");\r
- customizationView = new CustomizationView();\r
- if (customizationView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "customizationView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = customizationView->InitPropertiesView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool IndoorWalkView::ChangeIndoorWalkEndView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkEndView");\r
- indoorWalkEndView = new IndoorWalkEndView();\r
- if (indoorWalkEndView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkEndView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = indoorWalkEndView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool IndoorWalkView::CheckViewParam(int16_t hideView, int16_t showView)\r
-{\r
- if (showView < 0 || showView >= INDOORWALK_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam showView err.");\r
- return false;\r
- }\r
-\r
- if (hideView < 0 || hideView > INDOORWALK_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam hideView err.");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-void IndoorWalkView::ChangeView(int16_t hideView, int16_t showView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::ChangeView %d, %d", hideView, showView);\r
-\r
- if (!CheckViewParam(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam failed.");\r
- return;\r
- }\r
-\r
- PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
-\r
- if (!(this->*tmpPreProcessView)(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::ChangeView %d %dfailed", showView, hideView);\r
- return;\r
- }\r
- if (hideView != INDOORWALK_MAX) {\r
- if (container[hideView] == nullptr) {\r
- return;\r
- }\r
- container[hideView]->SetVisible(false);\r
- }\r
- container[showView]->SetVisible(true);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView:: ChangeView end!!!%d", showView);\r
- Draw();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageFifth View\r
- * Create: 2022-03-02\r
- */\r
-#include "indoorwalk/MotionPageFifth.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABELS_X = 137;\r
-static constexpr uint16_t LABELS_Y = 62;\r
-static constexpr uint16_t LABELS_W = 180;\r
-static constexpr uint16_t LABELS_H = 60;\r
-static constexpr uint16_t IMAGE_X1 = 42;\r
-static constexpr uint16_t IMAGE_X2 = 242;\r
-static constexpr uint16_t IMAGE_Y = 142;\r
-static MotionPageFifth *g_pMotionPageFifth{nullptr};\r
-\r
-MotionPageFifth::MotionPageFifth()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth::MotionPageFifth");\r
- g_pMotionPageFifth = this;\r
-}\r
-\r
-MotionPageFifth::~MotionPageFifth()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth::~MotionPageFifth");\r
- RemoveAll();\r
- delete lableFifth;\r
- lableFifth = nullptr;\r
- delete imageFifthLeft;\r
- imageFifthLeft = nullptr;\r
- delete imageFifthRight;\r
- imageFifthRight = nullptr;\r
- g_pMotionPageFifth = nullptr;\r
-}\r
-\r
-MotionPageFifth *MotionPageFifth::GetInstance()\r
-{\r
- return g_pMotionPageFifth;\r
-}\r
-\r
-bool MotionPageFifth::InitPageFifthLableView()\r
-{\r
- lableFifth = new UILabel();\r
- if (lableFifth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFifth new fail");\r
- return false;\r
- }\r
- lableFifth->SetPosition(LABELS_X, LABELS_Y, LABELS_W, LABELS_H);\r
- lableFifth->SetText("训练压力");\r
- lableFifth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- lableFifth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- lableFifth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- Add(lableFifth);\r
- return true;\r
-}\r
-\r
-bool MotionPageFifth::InitPageFifthImageView()\r
-{\r
- imageFifthLeft = new UIImageView();\r
- if (imageFifthLeft == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFifthLeft new fail");\r
- return false;\r
- }\r
- imageFifthLeft->SetPosition(IMAGE_X1, IMAGE_Y);\r
- imageFifthLeft->SetSrc(PNG_AEROBIC_IMAGE);\r
- Add(imageFifthLeft);\r
-\r
- imageFifthRight = new UIImageView();\r
- if (imageFifthRight == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFifthRight new fail");\r
- return false;\r
- }\r
- imageFifthRight->SetPosition(IMAGE_X2, IMAGE_Y);\r
- imageFifthRight->SetSrc(PNG_ANAEROBIC_IMAGE);\r
- Add(imageFifthRight);\r
- return true;\r
-}\r
-\r
-bool MotionPageFifth::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth InitView %p", caller);\r
- bool ret = InitPageFifthLableView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageFifthImageView();\r
- if (!ret) {\r
- return false;\r
- }\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageFirst View\r
- * Create: 2022-03-02\r
- */\r
-\r
-#include "indoorwalk/MotionPageFirst.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t TOP_X = 92;\r
-static constexpr uint16_t TOP_Y = 92;\r
-static constexpr uint16_t TOP_W = 270;\r
-static constexpr uint16_t LEFT_X = 47;\r
-static constexpr uint16_t LEFT_Y = 192;\r
-static constexpr uint16_t LEFT_W = 180;\r
-static constexpr uint16_t RIGHT_X = 227;\r
-static constexpr uint16_t RIGHT_Y = 192;\r
-static constexpr uint16_t RIGHT_W = 180;\r
-static constexpr uint16_t BOTTOM_X = 92;\r
-static constexpr uint16_t BOTTOM_Y = 292;\r
-static constexpr uint16_t BOTTOM_W = 270;\r
-static constexpr uint16_t LABLE_H = 70;\r
-static constexpr uint16_t UNIT_TOP_Y = 151;\r
-static constexpr uint16_t UNIT_LEFT_Y = 250;\r
-static constexpr uint16_t UNIT_RIGHT_Y = 250;\r
-static constexpr uint16_t UNIT_BOTTOM_Y = 350;\r
-static constexpr uint16_t UNIT_H = 50;\r
-\r
-static MotionPageFirst *g_pMotionPageFirst{nullptr};\r
-\r
-MotionPageFirst::MotionPageFirst()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst::MotionPageFirst");\r
- g_pMotionPageFirst = this;\r
-}\r
-\r
-MotionPageFirst::~MotionPageFirst()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst::~MotionPageFirst");\r
- RemoveAll();\r
- delete lableFirstTop;\r
- lableFirstTop = nullptr;\r
- delete lableFirstLeft;\r
- lableFirstLeft = nullptr;\r
- delete lableFirstRight;\r
- lableFirstRight = nullptr;\r
- delete lableFirstBottom;\r
- lableFirstBottom = nullptr;\r
- delete lableUnitFirstTop;\r
- lableUnitFirstTop = nullptr;\r
- delete lableUnitFirstLeft;\r
- lableUnitFirstLeft = nullptr;\r
- delete lableUnitFirstRight;\r
- lableUnitFirstRight = nullptr;\r
- delete lableUnitFirstBottom;\r
- lableUnitFirstBottom = nullptr;\r
- delete imageFirstTop;\r
- imageFirstTop = nullptr;\r
- delete imageFirstLeft;\r
- imageFirstLeft = nullptr;\r
- delete imageFirstRight;\r
- imageFirstRight = nullptr;\r
- delete imageFirstBottom;\r
- imageFirstBottom = nullptr;\r
- g_pMotionPageFirst = nullptr;\r
-}\r
-\r
-MotionPageFirst *MotionPageFirst::GetInstance()\r
-{\r
- return g_pMotionPageFirst;\r
-}\r
-\r
-void MotionPageFirst::SetLableTemplate(UILabel *label)\r
-{\r
- if (label == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");\r
- return;\r
- }\r
- UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (longPressListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
- return;\r
- }\r
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- label->SetOnLongPressListener(longPressListener);\r
- label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- label->SetTouchable(true);\r
-}\r
-\r
-void MotionPageFirst::SetUnitLableTemplate(UILabel *label)\r
-{\r
- if (label == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");\r
- return;\r
- }\r
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
- label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-}\r
-\r
-bool MotionPageFirst::InitPageFirstLableTopView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableFirstTop();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableFirstTop = new UILabel();\r
- lableUnitFirstTop = new UILabel();\r
- if ((lableFirstTop == nullptr) || (lableUnitFirstTop == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstTop new fail");\r
- return false;\r
- }\r
- lableFirstTop->SetPosition(TOP_X, TOP_Y, TOP_W, LABLE_H);\r
- lableFirstTop->SetText(lable.c_str());\r
- SetLableTemplate(lableFirstTop);\r
- lableFirstTop->SetViewId(LABLE_FIRST_TOP);\r
- Add(lableFirstTop);\r
-\r
- lableUnitFirstTop->SetPosition(TOP_X, UNIT_TOP_Y, TOP_W, UNIT_H);\r
- lableUnitFirstTop->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitFirstTop);\r
- Add(lableUnitFirstTop);\r
- return true;\r
-}\r
-\r
-bool MotionPageFirst::InitPageFirstLableLeftView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableFirstLeft();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableFirstLeft = new UILabel();\r
- lableUnitFirstLeft = new UILabel();\r
- if ((lableFirstLeft == nullptr) || (lableUnitFirstLeft == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstLeft new fail");\r
- return false;\r
- }\r
-\r
- lableFirstLeft->SetPosition(LEFT_X, LEFT_Y, LEFT_W, LABLE_H);\r
- lableFirstLeft->SetText(lable.c_str());\r
- SetLableTemplate(lableFirstLeft);\r
- lableFirstLeft->SetViewId(LABLE_FIRST_LEFT);\r
- Add(lableFirstLeft);\r
-\r
- lableUnitFirstLeft->SetPosition(LEFT_X, UNIT_LEFT_Y, LEFT_W, UNIT_H);\r
- lableUnitFirstLeft->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitFirstLeft);\r
- Add(lableUnitFirstLeft);\r
- return true;\r
-}\r
-\r
-bool MotionPageFirst::InitPageFirstLableRightView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableFirstRight();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableFirstRight = new UILabel();\r
- lableUnitFirstRight = new UILabel();\r
- if ((lableFirstRight == nullptr) || (lableUnitFirstRight == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstRight new fail");\r
- return false;\r
- }\r
- lableFirstRight->SetPosition(RIGHT_X, RIGHT_Y, RIGHT_W, LABLE_H);\r
- lableFirstRight->SetText(lable.c_str());\r
- SetLableTemplate(lableFirstRight);\r
- lableFirstRight->SetViewId(LABLE_FIRST_RIGHT);\r
- Add(lableFirstRight);\r
-\r
- lableUnitFirstRight->SetPosition(RIGHT_X, UNIT_RIGHT_Y, RIGHT_W, UNIT_H);\r
- lableUnitFirstRight->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitFirstRight);\r
- Add(lableUnitFirstRight);\r
- return true;\r
-}\r
-\r
-bool MotionPageFirst::InitPageFirstLableBottomView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableFirstBottom();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableFirstBottom = new UILabel();\r
- lableUnitFirstBottom = new UILabel();\r
- if ((lableFirstBottom == nullptr) || (lableUnitFirstBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstBottom new fail");\r
- return false;\r
- }\r
- lableFirstBottom->SetPosition(BOTTOM_X, BOTTOM_Y, BOTTOM_W, LABLE_H);\r
- lableFirstBottom->SetText(lable.c_str());\r
- SetLableTemplate(lableFirstBottom);\r
- lableFirstBottom->SetViewId(LABLE_FIRST_BOTTOM);\r
- Add(lableFirstBottom);\r
-\r
- lableUnitFirstBottom->SetPosition(BOTTOM_X, UNIT_BOTTOM_Y, BOTTOM_W, UNIT_H);\r
- lableUnitFirstBottom->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitFirstBottom);\r
- Add(lableUnitFirstBottom);\r
- return true;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableFirstTop(void)\r
-{\r
- return lableFirstTop;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableUnitFirstTop(void)\r
-{\r
- return lableUnitFirstTop;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableFirstLeft(void)\r
-{\r
- return lableFirstLeft;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableUnitFirstLeft(void)\r
-{\r
- return lableUnitFirstLeft;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableFirstRight(void)\r
-{\r
- return lableFirstRight;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableUnitFirstRight(void)\r
-{\r
- return lableUnitFirstRight;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableFirstBottom(void)\r
-{\r
- return lableFirstBottom;\r
-}\r
-\r
-UILabel *MotionPageFirst::GetLableUnitFirstBottom(void)\r
-{\r
- return lableUnitFirstBottom;\r
-}\r
-\r
-\r
-bool MotionPageFirst::InitPageFirstImageView()\r
-{\r
- imageFirstTop = new UIImageView();\r
- imageFirstLeft = new UIImageView();\r
- imageFirstRight = new UIImageView();\r
- imageFirstBottom = new UIImageView();\r
- if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFirst new fail");\r
- return false;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- imageFirstTop->SetPosition(TOP_X, TOP_Y);\r
- imageFirstTop->SetSrc(PNG_OPTIONS_BOX2_IMAGE);\r
- imageFirstTop->SetOnClickListener(clickListener);\r
- imageFirstTop->SetViewId(IMAGE_FIRST_TOP);\r
- imageFirstTop->SetTouchable(true);\r
- Add(imageFirstTop);\r
-\r
- imageFirstLeft->SetPosition(LEFT_X, LEFT_Y);\r
- imageFirstLeft->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
- imageFirstLeft->SetOnClickListener(clickListener);\r
- imageFirstLeft->SetViewId(IMAGE_FIRST_LEFT);\r
- imageFirstLeft->SetTouchable(true);\r
- Add(imageFirstLeft);\r
-\r
- imageFirstRight->SetPosition(RIGHT_X, RIGHT_Y);\r
- imageFirstRight->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
- imageFirstRight->SetOnClickListener(clickListener);\r
- imageFirstRight->SetViewId(IMAGE_FIRST_RIGHT);\r
- imageFirstRight->SetTouchable(true);\r
- Add(imageFirstRight);\r
-\r
- imageFirstBottom->SetPosition(BOTTOM_X, BOTTOM_Y);\r
- imageFirstBottom->SetSrc(PNG_OPTIONS_BOX2_IMAGE);\r
- imageFirstBottom->SetOnClickListener(clickListener);\r
- imageFirstBottom->SetViewId(IMAGE_FIRST_BOTTOM);\r
- imageFirstBottom->SetTouchable(true);\r
- Add(imageFirstBottom);\r
- return true;\r
-}\r
-\r
-void MotionPageFirst::HideInitPageFirstImageView()\r
-{\r
- if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageFirstImageView imageFirst nullptr");\r
- return;\r
- }\r
- imageFirstTop->SetVisible(false);\r
- imageFirstLeft->SetVisible(false);\r
- imageFirstRight->SetVisible(false);\r
- imageFirstBottom->SetVisible(false);\r
-}\r
-\r
-void MotionPageFirst::ShowInitPageFirstImageView()\r
-{\r
- if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageFirstImageView imageFirst nullptr");\r
- return;\r
- }\r
- imageFirstTop->SetVisible(true);\r
- imageFirstLeft->SetVisible(true);\r
- imageFirstRight->SetVisible(true);\r
- imageFirstBottom->SetVisible(true);\r
-}\r
-\r
-bool MotionPageFirst::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst InitView %p", caller);\r
- bool ret;\r
- backGroundFirst = new UIImageView();\r
- if (backGroundFirst == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFirst new fail");\r
- return false;\r
- }\r
- backGroundFirst->SetPosition(0, 0); // 0 : X; 0 : Y\r
- backGroundFirst->SetSrc(PNG_WALK_BACK_GROUND);\r
- Add(backGroundFirst);\r
- ret = InitPageFirstLableTopView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageFirstLableLeftView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageFirstLableRightView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageFirstLableBottomView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageFirstImageView();\r
- if (!ret) {\r
- return false;\r
- }\r
- HideInitPageFirstImageView();\r
- SetTouchable(true);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageFourth View\r
- * Create: 2022-03-02\r
- */\r
-#include "indoorwalk/MotionPageFourth.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABLE_X = 52;\r
-static constexpr uint16_t LABLE_Y = 177;\r
-static constexpr uint16_t LABLE_W = 350;\r
-static constexpr uint16_t LABLE_H = 100;\r
-static constexpr uint16_t LABLE_UNIT_Y = 269;\r
-static constexpr uint16_t LABLE_UNIT_H = 50;\r
-static MotionPageFourth *g_pMotionPageFourth{nullptr};\r
-\r
-MotionPageFourth::MotionPageFourth()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth::MotionPageFourth");\r
- g_pMotionPageFourth = this;\r
-}\r
-\r
-MotionPageFourth::~MotionPageFourth()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth::~MotionPageFourth");\r
- RemoveAll();\r
- delete lableFourth;\r
- lableFourth = nullptr;\r
- delete lableUnitFourth;\r
- lableUnitFourth = nullptr;\r
- delete imageFourth;\r
- imageFourth = nullptr;\r
- g_pMotionPageFourth = nullptr;\r
-}\r
-\r
-MotionPageFourth *MotionPageFourth::GetInstance()\r
-{\r
- return g_pMotionPageFourth;\r
-}\r
-\r
-bool MotionPageFourth::InitPageFourthLableView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableFourth();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFourth();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableFourth = new UILabel();\r
- if (lableFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFourth new fail");\r
- return false;\r
- }\r
- UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (longPressListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
- return false;\r
- }\r
- lableFourth->SetPosition(LABLE_X, LABLE_Y, LABLE_W, LABLE_H);\r
- lableFourth->SetText(lable.c_str());\r
- lableFourth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 65); // 65 : font data\r
- lableFourth->SetOnLongPressListener(longPressListener);\r
- lableFourth->SetViewId(LABLE_FOURTH);\r
- lableFourth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- lableFourth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- lableFourth->SetTouchable(true);\r
- Add(lableFourth);\r
-\r
- lableUnitFourth = new UILabel();\r
- if (lableUnitFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableUnitFourth new fail");\r
- return false;\r
- }\r
- lableUnitFourth->SetPosition(LABLE_X, LABLE_UNIT_Y, LABLE_W, LABLE_UNIT_H);\r
- lableUnitFourth->SetText(lableUnit.c_str());\r
- lableUnitFourth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data\r
- lableUnitFourth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- lableUnitFourth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- Add(lableUnitFourth);\r
- return true;\r
-}\r
-\r
-UILabel *MotionPageFourth::GetLableFourth(void)\r
-{\r
- return lableFourth;\r
-}\r
-\r
-UILabel *MotionPageFourth::GetLableUnitFourth(void)\r
-{\r
- return lableUnitFourth;\r
-}\r
-\r
-bool MotionPageFourth::InitPageFourthImageView()\r
-{\r
- imageFourth = new UIImageView();\r
- if (imageFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFourth new fail");\r
- return false;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- imageFourth->SetPosition(LABLE_X, LABLE_Y);\r
- imageFourth->SetSrc(PNG_OPTIONS_BOX4_IMAGE);\r
- imageFourth->SetViewId(IMAGE_FOURTH);\r
- imageFourth->SetOnClickListener(clickListener);\r
- imageFourth->SetTouchable(true);\r
- Add(imageFourth);\r
- return true;\r
-}\r
-\r
-void MotionPageFourth::HideInitPageFourthImageView()\r
-{\r
- if (imageFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageFourthImageView imageFourth nullptr");\r
- return;\r
- }\r
- imageFourth->SetVisible(false);\r
-}\r
-\r
-void MotionPageFourth::ShowInitPageFourthImageView()\r
-{\r
- if (imageFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageFourthImageView imageFourth nullptr");\r
- return;\r
- }\r
- imageFourth->SetVisible(true);\r
-}\r
-\r
-bool MotionPageFourth::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth InitView %p", caller);\r
- bool ret;\r
- backGroundFourth = new UIImageView();\r
- if (backGroundFourth == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFourth new fail");\r
- return false;\r
- }\r
- backGroundFourth->SetPosition(0, 0); // 0 : X; 0 : Y\r
- backGroundFourth->SetSrc(PNG_WALK_BACK_GROUND);\r
- Add(backGroundFourth);\r
- ret = InitPageFourthLableView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageFourthImageView();\r
- if (!ret) {\r
- return false;\r
- }\r
- HideInitPageFourthImageView();\r
- SetTouchable(true);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageSecond View\r
- * Create: 2022-03-02\r
- */\r
-#include "indoorwalk/MotionPageSecond.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t TOP_X = 92;\r
-static constexpr uint16_t TOP_Y = 97;\r
-static constexpr uint16_t TOP_W = 270;\r
-static constexpr uint16_t LEFT_X = 47;\r
-static constexpr uint16_t LEFT_Y = 232;\r
-static constexpr uint16_t LEFT_W = 180;\r
-static constexpr uint16_t RIGHT_X = 227;\r
-static constexpr uint16_t RIGHT_Y = 232;\r
-static constexpr uint16_t RIGHT_W = 180;\r
-static constexpr uint16_t LABLE_H = 70;\r
-static constexpr uint16_t UNIT_TOP_Y = 154;\r
-static constexpr uint16_t UNIT_Y = 289;\r
-static constexpr uint16_t UNIT_H = 50;\r
-static MotionPageSecond *g_pMotionPageSecond{nullptr};\r
-\r
-MotionPageSecond::MotionPageSecond()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond::MotionPageSecond");\r
- g_pMotionPageSecond = this;\r
-}\r
-\r
-MotionPageSecond::~MotionPageSecond()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond::~MotionPageSecond");\r
- RemoveAll();\r
- delete lableSecondTop;\r
- lableSecondTop = nullptr;\r
- delete lableSecondLeft;\r
- lableSecondLeft = nullptr;\r
- delete lableSecondRight;\r
- lableSecondRight = nullptr;\r
- delete lableUnitSecondTop;\r
- lableUnitSecondTop = nullptr;\r
- delete lableUnitSecondLeft;\r
- lableUnitSecondLeft = nullptr;\r
- delete lableUnitSecondRight;\r
- lableUnitSecondRight = nullptr;\r
- delete imageSecondTop;\r
- imageSecondTop = nullptr;\r
- delete imageSecondLeft;\r
- imageSecondLeft = nullptr;\r
- delete imageSecondRight;\r
- imageSecondRight = nullptr;\r
- g_pMotionPageSecond = nullptr;\r
-}\r
-\r
-MotionPageSecond *MotionPageSecond::GetInstance()\r
-{\r
- return g_pMotionPageSecond;\r
-}\r
-\r
-void MotionPageSecond::SetLableTemplate(UILabel *label)\r
-{\r
- if (label == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");\r
- return;\r
- }\r
- UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (longPressListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
- return;\r
- }\r
- label->SetOnLongPressListener(longPressListener);\r
- label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- label->SetTouchable(true);\r
-}\r
-\r
-bool MotionPageSecond::InitPageSecondLableTopView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableSecondTop();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableSecondTop = new UILabel();\r
- lableUnitSecondTop = new UILabel();\r
- if ((lableSecondTop == nullptr) || (lableUnitSecondTop == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondTop new fail");\r
- return false;\r
- }\r
- lableSecondTop->SetPosition(TOP_X, TOP_Y, TOP_W, LABLE_H);\r
- lableSecondTop->SetText(lable.c_str());\r
- lableSecondTop->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data\r
- SetLableTemplate(lableSecondTop);\r
- lableSecondTop->SetViewId(LABLE_SECOND_TOP);\r
- Add(lableSecondTop);\r
-\r
- lableUnitSecondTop->SetPosition(TOP_X, UNIT_TOP_Y, TOP_W, UNIT_H);\r
- lableUnitSecondTop->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitSecondTop);\r
- Add(lableUnitSecondTop);\r
- return true;\r
-}\r
-\r
-bool MotionPageSecond::InitPageSecondLableLeftView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableSecondLeft();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableSecondLeft = new UILabel();\r
- lableUnitSecondLeft = new UILabel();\r
- if ((lableSecondLeft == nullptr) || (lableUnitSecondLeft == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondLeft new fail");\r
- return false;\r
- }\r
- lableSecondLeft->SetPosition(LEFT_X, LEFT_Y, LEFT_W, LABLE_H);\r
- lableSecondLeft->SetText(lable.c_str());\r
- lableSecondLeft->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- SetLableTemplate(lableSecondLeft);\r
- lableSecondLeft->SetViewId(LABLE_SECOND_LEFT);\r
- Add(lableSecondLeft);\r
-\r
- lableUnitSecondLeft->SetPosition(LEFT_X, UNIT_Y, LEFT_W, UNIT_H);\r
- lableUnitSecondLeft->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitSecondLeft);\r
- Add(lableUnitSecondLeft);\r
- return true;\r
-}\r
-\r
-bool MotionPageSecond::InitPageSecondLableRightView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableSecondRight();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableSecondRight = new UILabel();\r
- lableUnitSecondRight = new UILabel();\r
- if ((lableSecondRight == nullptr) || (lableUnitSecondRight == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondRight new fail");\r
- return false;\r
- }\r
- lableSecondRight->SetPosition(RIGHT_X, RIGHT_Y, RIGHT_W, LABLE_H);\r
- lableSecondRight->SetText(lable.c_str());\r
- lableSecondRight->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
- SetLableTemplate(lableSecondRight);\r
- lableSecondRight->SetViewId(LABLE_SECOND_RIGHT);\r
- Add(lableSecondRight);\r
-\r
- lableUnitSecondRight->SetPosition(RIGHT_X, UNIT_Y, RIGHT_W, UNIT_H);\r
- lableUnitSecondRight->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitSecondRight);\r
- Add(lableUnitSecondRight);\r
- return true;\r
-}\r
-\r
-void MotionPageSecond::SetUnitLableTemplate(UILabel *label)\r
-{\r
- if (label == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");\r
- return;\r
- }\r
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
- label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-}\r
-\r
-UILabel *MotionPageSecond::GetLableSecondTop(void)\r
-{\r
- return lableSecondTop;\r
-}\r
-\r
-UILabel *MotionPageSecond::GetLableUnitSecondTop(void)\r
-{\r
- return lableUnitSecondTop;\r
-}\r
-\r
-UILabel *MotionPageSecond::GetLableSecondLeft(void)\r
-{\r
- return lableSecondLeft;\r
-}\r
-\r
-UILabel *MotionPageSecond::GetLableUnitSecondLeft(void)\r
-{\r
- return lableUnitSecondLeft;\r
-}\r
-\r
-UILabel *MotionPageSecond::GetLableSecondRight(void)\r
-{\r
- return lableSecondRight;\r
-}\r
-\r
-UILabel *MotionPageSecond::GetLableUnitSecondRight(void)\r
-{\r
- return lableUnitSecondRight;\r
-}\r
-\r
-bool MotionPageSecond::InitPageSecondImageView()\r
-{\r
- imageSecondTop = new UIImageView();\r
- imageSecondLeft = new UIImageView();\r
- imageSecondRight = new UIImageView();\r
- if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageSecond new fail");\r
- return false;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- imageSecondTop->SetPosition(TOP_X, TOP_Y);\r
- imageSecondTop->SetSrc(PNG_OPTIONS_BOX2_IMAGE);\r
- imageSecondTop->SetViewId(IMAGE_SECOND_TOP);\r
- imageSecondTop->SetOnClickListener(clickListener);\r
- imageSecondTop->SetTouchable(true);\r
- Add(imageSecondTop);\r
-\r
- imageSecondLeft->SetPosition(LEFT_X, LEFT_Y);\r
- imageSecondLeft->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
- imageSecondLeft->SetViewId(IMAGE_SECOND_LEFT);\r
- imageSecondLeft->SetOnClickListener(clickListener);\r
- imageSecondLeft->SetTouchable(true);\r
- Add(imageSecondLeft);\r
-\r
- imageSecondRight->SetPosition(RIGHT_X, RIGHT_Y);\r
- imageSecondRight->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
- imageSecondRight->SetViewId(IMAGE_SECOND_RIGHT);\r
- imageSecondRight->SetOnClickListener(clickListener);\r
- imageSecondRight->SetTouchable(true);\r
- Add(imageSecondRight);\r
- return true;\r
-}\r
-\r
-void MotionPageSecond::HideInitPageSecondImageView()\r
-{\r
- if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageSecondImageView imageSecond nullptr");\r
- return;\r
- }\r
- imageSecondTop->SetVisible(false);\r
- imageSecondLeft->SetVisible(false);\r
- imageSecondRight->SetVisible(false);\r
-}\r
-\r
-void MotionPageSecond::ShowInitPageSecondImageView()\r
-{\r
- if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageSecondImageView imageSecond nullptr");\r
- return;\r
- }\r
- imageSecondTop->SetVisible(true);\r
- imageSecondLeft->SetVisible(true);\r
- imageSecondRight->SetVisible(true);\r
-}\r
-\r
-bool MotionPageSecond::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond InitView %p", caller);\r
- bool ret;\r
- backGroundSecond = new UIImageView();\r
- if (backGroundSecond == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundSecond new fail");\r
- return false;\r
- }\r
- backGroundSecond->SetPosition(0, 0); // 0 : X; 0 : Y\r
- backGroundSecond->SetSrc(PNG_WALK_BACK_GROUND);\r
- Add(backGroundSecond);\r
- ret = InitPageSecondLableTopView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageSecondLableLeftView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageSecondLableRightView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageSecondImageView();\r
- if (!ret) {\r
- return false;\r
- }\r
- HideInitPageSecondImageView();\r
- SetTouchable(true);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Motion PageThird View\r
- * Create: 2022-03-02\r
- */\r
-#include "indoorwalk/MotionPageThird.h"\r
-#include "indoorwalk/IndoorWalkPresenter.h"\r
-#include "indoorwalk/IndoorWalkModel.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABLE_X = 52;\r
-static constexpr uint16_t TOP_Y = 112;\r
-static constexpr uint16_t BOTTOM_Y = 252;\r
-static constexpr uint16_t LABLE_W = 350;\r
-static constexpr uint16_t LABLE_H = 80;\r
-static constexpr uint16_t UNIT_TOP_Y = 180;\r
-static constexpr uint16_t UNIT_BOTTOM_Y = 320;\r
-static constexpr uint16_t UNIT_H = 50;\r
-static MotionPageThird *g_pMotionPageThird{nullptr};\r
-\r
-MotionPageThird::MotionPageThird()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird::MotionPageThird");\r
- g_pMotionPageThird = this;\r
-}\r
-\r
-MotionPageThird::~MotionPageThird()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird::~MotionPageThird");\r
- RemoveAll();\r
- delete lableThirdTop;\r
- lableThirdTop = nullptr;\r
- delete lableUnitThirdTop;\r
- lableUnitThirdTop = nullptr;\r
- delete lableThirdBottom;\r
- lableThirdBottom = nullptr;\r
- delete lableUnitThirdBottom;\r
- lableUnitThirdBottom = nullptr;\r
- delete imageThirdTop;\r
- imageThirdTop = nullptr;\r
- delete imageThirdBottom;\r
- imageThirdBottom = nullptr;\r
- g_pMotionPageThird = nullptr;\r
-}\r
-\r
-MotionPageThird *MotionPageThird::GetInstance()\r
-{\r
- return g_pMotionPageThird;\r
-}\r
-\r
-void MotionPageThird::SetLableTemplate(UILabel *label)\r
-{\r
- if (label == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");\r
- return;\r
- }\r
- UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (longPressListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
- return;\r
- }\r
- label->SetOnLongPressListener(longPressListener);\r
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60); // 60 : font data\r
- label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- label->SetTouchable(true);\r
-}\r
-\r
-bool MotionPageThird::InitPageThirdLableTopView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableThirdTop();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableThirdTop = new UILabel();\r
- lableUnitThirdTop = new UILabel();\r
- if ((lableThirdTop == nullptr) || (lableUnitThirdTop == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableThirdTop new fail");\r
- return false;\r
- }\r
- lableThirdTop->SetPosition(LABLE_X, TOP_Y, LABLE_W, LABLE_H);\r
- lableThirdTop->SetText(lable.c_str());\r
- SetLableTemplate(lableThirdTop);\r
- lableThirdTop->SetViewId(LABLE_THIRD_TOP);\r
- Add(lableThirdTop);\r
-\r
- lableUnitThirdTop->SetPosition(LABLE_X, UNIT_TOP_Y, LABLE_W, UNIT_H);\r
- lableUnitThirdTop->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitThirdTop);\r
- Add(lableUnitThirdTop);\r
- return true;\r
-}\r
-\r
-void MotionPageThird::SetUnitLableTemplate(UILabel *label)\r
-{\r
- if (label == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");\r
- return;\r
- }\r
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
- label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-}\r
-\r
-bool MotionPageThird::InitPageThirdLableBottomView()\r
-{\r
- std::string lable;\r
- std::string lableUnit;\r
- lable = IndoorWalkModel::GetInstance()->GetTextLableThirdBottom();\r
- lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom();\r
- if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
- lable = "0";\r
- } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
- lable = "00:00:00";\r
- } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
- lable = "0.00";\r
- }\r
- lableThirdBottom = new UILabel();\r
- lableUnitThirdBottom = new UILabel();\r
- if ((lableThirdBottom == nullptr) || (lableUnitThirdBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableThirdBottom new fail");\r
- return false;\r
- }\r
- lableThirdBottom->SetPosition(LABLE_X, BOTTOM_Y, LABLE_W, LABLE_H);\r
- lableThirdBottom->SetText(lable.c_str());\r
- SetLableTemplate(lableThirdBottom);\r
- lableThirdBottom->SetViewId(LABLE_THIRD_BOTTOM);\r
- Add(lableThirdBottom);\r
-\r
- lableUnitThirdBottom->SetPosition(LABLE_X, UNIT_BOTTOM_Y, LABLE_W, UNIT_H);\r
- lableUnitThirdBottom->SetText(lableUnit.c_str());\r
- SetUnitLableTemplate(lableUnitThirdBottom);\r
- Add(lableUnitThirdBottom);\r
- return true;\r
-}\r
-\r
-UILabel *MotionPageThird::GetLableThirdTop(void)\r
-{\r
- return lableThirdTop;\r
-}\r
-\r
-UILabel *MotionPageThird::GetLableUnitThirdTop(void)\r
-{\r
- return lableUnitThirdTop;\r
-}\r
-\r
-UILabel *MotionPageThird::GetLableThirdBottom(void)\r
-{\r
- return lableThirdBottom;\r
-}\r
-\r
-UILabel *MotionPageThird::GetLableUnitThirdBottom(void)\r
-{\r
- return lableUnitThirdBottom;\r
-}\r
-\r
-bool MotionPageThird::InitPageThirdImageView()\r
-{\r
- imageThirdTop = new UIImageView();\r
- imageThirdBottom = new UIImageView();\r
- if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageThird new fail");\r
- return false;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return false;\r
- }\r
- imageThirdTop->SetPosition(LABLE_X, TOP_Y);\r
- imageThirdTop->SetSrc(PNG_OPTIONS_BOX3_IMAGE);\r
- imageThirdTop->SetViewId(IMAGE_THIRD_TOP);\r
- imageThirdTop->SetOnClickListener(clickListener);\r
- imageThirdTop->SetTouchable(true);\r
- Add(imageThirdTop);\r
-\r
- imageThirdBottom->SetPosition(LABLE_X, BOTTOM_Y);\r
- imageThirdBottom->SetSrc(PNG_OPTIONS_BOX3_IMAGE);\r
- imageThirdBottom->SetViewId(IMAGE_THIRD_BOTTOM);\r
- imageThirdBottom->SetOnClickListener(clickListener);\r
- imageThirdBottom->SetTouchable(true);\r
- Add(imageThirdBottom);\r
- return true;\r
-}\r
-\r
-void MotionPageThird::HideInitPageThirdImageView()\r
-{\r
- if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageThirdImageView imageThird nullptr");\r
- return;\r
- }\r
- imageThirdTop->SetVisible(false);\r
- imageThirdBottom->SetVisible(false);\r
-}\r
-\r
-void MotionPageThird::ShowInitPageThirdImageView()\r
-{\r
- if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageThirdImageView imageThird nullptr");\r
- return;\r
- }\r
- imageThirdTop->SetVisible(true);\r
- imageThirdBottom->SetVisible(true);\r
-}\r
-\r
-bool MotionPageThird::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird InitView %p", caller);\r
- bool ret;\r
- backGroundThird = new UIImageView();\r
- if (backGroundThird == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundThird new fail");\r
- return false;\r
- }\r
- backGroundThird->SetPosition(0, 0); // 0 : X; 0 : Y\r
- backGroundThird->SetSrc(PNG_WALK_BACK_GROUND);\r
- Add(backGroundThird);\r
- ret = InitPageThirdLableTopView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageThirdLableBottomView();\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitPageThirdImageView();\r
- if (!ret) {\r
- return false;\r
- }\r
- HideInitPageThirdImageView();\r
- SetTouchable(true);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- */\r
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MessageAdapter.cpp\r
- * Author:\r
- * Create: 2021-11-23\r
- */\r
-\r
-#include "main/MessageAdapter.h"\r
-\r
-namespace OHOS {\r
-MessageAdapter::MessageAdapter() {}\r
-\r
-MessageAdapter::~MessageAdapter()\r
-{\r
- listData.clear();\r
-}\r
-\r
-uint16_t MessageAdapter::GetCount(void)\r
-{\r
- return listData.size();\r
-}\r
-\r
-void MessageAdapter::SetData(std::list<MessageItem> &data)\r
-{\r
- if (!listData.empty()) {\r
- listData.clear();\r
- }\r
- std::list<MessageItem>::iterator it;\r
- for (it = data.begin(); it != data.end(); it++) {\r
- listData.push_back(*it);\r
- }\r
-}\r
-\r
-UIView *MessageAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData.empty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData.size()) {\r
- return nullptr;\r
- }\r
-\r
- std::list<MessageItem>::iterator it = listData.begin();\r
- for (int i = 0; i < index; i++) {\r
- it++;\r
- }\r
- MessageItem itemData = *it;\r
- MessageItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new MessageItemView();\r
- } else {\r
- item = static_cast<MessageItemView *>(inView);\r
- }\r
-\r
- item->SetItemInfo(itemData);\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void MessageAdapter::AddListItem(const MessageItem &item)\r
-{\r
- listData.push_back(item);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "listData == %d-------zsy", listData.size());\r
- for (const auto& item : listData) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageItem.App == %s-------zsy", item.label_1.c_str());\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageItem.Content == %s-------zsy", item.label_2.c_str());\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageItem.Info == %s-------zsy", item.label_3.c_str());\r
- }\r
-}\r
-\r
-void MessageAdapter::ClearListItem()\r
-{\r
- listData.clear();\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: WeekStep\r
- * Author:\r
- * Create: 2021-09-11\r
- */\r
-\r
-#include "main/MessageMainView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "common/screen.h"\r
-#include "main/MainPresenterSample.h"\r
-#include "screensetting/ScreenModels.h"\r
-#include "settings/SettingModel.h"\r
-#include "ui_resource_image.h"\r
-\r
-namespace OHOS {\r
-\r
-static MessageMainView *g_pMessageMainView = nullptr;\r
-\r
-constexpr int16_t DISTURB_IMG_X = 117;\r
-constexpr int16_t DISTURB_IMG_Y = 50;\r
-constexpr int16_t SCREEN_IMG_X = 251;\r
-constexpr int16_t SCREEN_IMG_Y = 50;\r
-constexpr int16_t PHONE_IMG_X = 49;\r
-constexpr int16_t PHONE_IMG_Y = 184;\r
-constexpr int16_t ALARM_IMG_X = 184;\r
-constexpr int16_t ALARM_IMG_Y = 184;\r
-constexpr int16_t SETTING_IMG_X = 319;\r
-constexpr int16_t SETTING_IMG_Y = 184;\r
-\r
-constexpr int16_t BLUETOOTH_IMG_X = 145;\r
-constexpr int16_t BLUETOOTH_IMG_Y = 335;\r
-constexpr int16_t BATTERY_IMG_X = 195;\r
-constexpr int16_t BATTERY_IMG_Y = 340;\r
-\r
-constexpr int16_t DISTURB_LABEL_X = 136;\r
-constexpr int16_t DISTURB_LABEL_Y = 145;\r
-constexpr int16_t SCREEN_LABEL_X = 270;\r
-constexpr int16_t SCREEN_LABEL_Y = 145;\r
-constexpr int16_t PHONE_LABEL_X = 68;\r
-constexpr int16_t PHONE_LABEL_Y = 279;\r
-constexpr int16_t ALARM_LABEL_X = 203;\r
-constexpr int16_t ALARM_LABEL_Y = 279;\r
-constexpr int16_t SETTING_LABEL_X = 338;\r
-constexpr int16_t SETTING_LABEL_Y = 279;\r
-\r
-constexpr int16_t BATTERY_LABEL_X = 247;\r
-constexpr int16_t BATTERY_LABEL_Y = 335;\r
-constexpr int16_t DATE_LABEL_X = 173;\r
-constexpr int16_t DATE_LABEL_Y = 374;\r
-\r
-constexpr int16_t FONT_DEFAULT_SIZE = 24;\r
-constexpr int16_t TEXT_WIDTH = 86;\r
-constexpr int16_t TEXT_HEIGHT = 30;\r
-\r
-constexpr int16_t NONOTICE_LABLE_X = 141;\r
-constexpr int16_t NONOTICE_LABLE_Y = 212;\r
-\r
-MessageMainView::MessageMainView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::MessageMainView");\r
- g_pMessageMainView = this;\r
-}\r
-\r
-MessageMainView::~MessageMainView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::~MessageMainView");\r
- RemoveAll();\r
- delete messageLables;\r
- messageLables = nullptr;\r
- delete messageLable;\r
- messageLable = nullptr;\r
- delete deletereminder;\r
- deletereminder = nullptr;\r
- delete confirm;\r
- confirm = nullptr;\r
- delete cancel;\r
- cancel = nullptr;\r
- delete notice;\r
- notice = nullptr;\r
- delete contentList;\r
- contentList = nullptr;\r
- if (listAdapter != nullptr) {\r
- delete listAdapter;\r
- listAdapter = nullptr;\r
- }\r
- g_pMessageMainView = nullptr;\r
- MessageModel::GetInstance().SetViewStatus(false);\r
-}\r
-\r
-MessageMainView *MessageMainView::GetInstance(void)\r
-{\r
- return g_pMessageMainView;\r
-}\r
-\r
-bool MessageMainView::InitView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::InitView");\r
- messageLable = new UILabel();\r
- if (messageLable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageLable new fail");\r
- return false;\r
- }\r
- messageLable->SetPosition(175, 20, 100, 30);\r
- messageLable->SetText("通知");\r
- messageLable->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- messageLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24);\r
- messageLable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- messageLable->SetViewId("Notify");\r
- messageLable->SetTouchable(true);\r
- notifyListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();\r
- messageLable->SetOnClickListener(notifyListener);\r
- // 删除图标\r
- notice = new UIImageView();\r
- if (notice == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimerTimingView:: new startButton fail");\r
- return false;\r
- }\r
- notice->SetPosition(175, 330);\r
- notice->Resize(100, 100);\r
- notice->SetSrc(ALARM_TRUE_ADD_PATH);\r
- notice->SetViewId("Delete");\r
- notice->SetTouchable(true);\r
- clickListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();\r
- notice->SetOnClickListener(clickListener);\r
- ShowMessageList();\r
- InitScrollData();\r
- Add(messageLable);\r
- Add(notice);\r
- return true;\r
-}\r
-\r
-void MessageMainView::PreLoad(void)\r
-{\r
- if (! MessageModel::GetInstance().GetViewStatus()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::PreLoad,viewiInitStatus == false");\r
- InitView();\r
- DeletionView();\r
- NoNotify();\r
- const std::vector<MessageItem> itemInfo = MessageModel::GetInstance().GetMessagelistItems();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::PreLoad,itemInfo == %d", itemInfo.size());\r
- if (itemInfo.size() == 0) {\r
- messageLable->SetVisible(false);\r
- notice->SetVisible(false);\r
- contentList->SetVisible(false);\r
- deletereminder->SetVisible(false);\r
- confirm->SetVisible(false);\r
- cancel->SetVisible(false);\r
- messageLables->SetVisible(true);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::PreLoad,itemInfo.size() == 0");\r
- } else {\r
- messageLable->SetVisible(true);\r
- notice->SetVisible(true);\r
- contentList->SetVisible(true);\r
- deletereminder->SetVisible(false);\r
- confirm->SetVisible(false);\r
- cancel->SetVisible(false);\r
- messageLables->SetVisible(false);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::PreLoad,itemInfo.size() != 0");\r
- }\r
- MessageModel::GetInstance().SetViewStatus(true);\r
- }\r
-}\r
-\r
-void MessageMainView::ShowMessageList(void)\r
-{\r
- contentList = new UIList();\r
- if (contentList == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::ShowMessageList contentList is nullptr");\r
- return;\r
- }\r
- contentList->SetPosition(32, 70);\r
- contentList->Resize(HORIZONTAL_RESOLUTION, 318); // 364: height\r
- contentList->SetSelectPosition(120); // middle position\r
- contentList->SetDraggable(true);\r
- contentList->SetThrowDrag(true);\r
- contentList->EnableAutoAlign(true);\r
- contentList->SetElastic(true);\r
- Add(contentList);\r
-}\r
-\r
-void MessageMainView::ConfirmDeletion(void)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::ConfirmDeletion");\r
- if (notice->IsVisible()) {\r
- notice->SetVisible(false);\r
- }\r
- if (messageLable->IsVisible()) {\r
- messageLable->SetVisible(false);\r
- }\r
- if (contentList->IsVisible()) {\r
- contentList->SetVisible(false);\r
- }\r
- if (! deletereminder->IsVisible()) {\r
- deletereminder->SetVisible(true);\r
- }\r
- if (! confirm->IsVisible()) {\r
- confirm->SetVisible(true);\r
- }\r
- if (! cancel->IsVisible()) {\r
- cancel->SetVisible(true);\r
- }\r
-}\r
-\r
-void MessageMainView::NewNotify(void)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::NewNotify");\r
- if (messageLables->IsVisible()) {\r
- messageLables->SetVisible(false);\r
- }\r
- if (! notice->IsVisible()) {\r
- notice->SetVisible(true);\r
- }\r
- if (! messageLable->IsVisible()) {\r
- messageLable->SetVisible(true);\r
- }\r
- if (! contentList->IsVisible()) {\r
- contentList->SetVisible(true);\r
- }\r
-}\r
-\r
-void MessageMainView::DeletionView(void)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::DeletionView");\r
- // 标题\r
- deletereminder = new UILabel();\r
- if (deletereminder == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deletereminder new fail");\r
- return;\r
- }\r
- deletereminder->SetPosition(177, 145); // widget's left position and top position\r
- deletereminder->Resize(260, 204); // widget's width and height\r
- deletereminder->SetViewId("deletereminder");// Set style\r
-\r
- // Set additional property\r
- deletereminder->SetText("是否删除通知?");\r
- deletereminder->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- deletereminder->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- deletereminder->SetRollSpeed(0);\r
-\r
- // 确认按钮\r
- confirm = new UILabelButton();\r
- if (confirm == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "confirm new fail");\r
- return;\r
- }\r
- confirm->SetPosition(88, 255); // widget's left position and top position\r
- confirm->Resize(70, 50); // widget's width and height\r
- confirm->SetViewId("Confirm");// Set style\r
-\r
- // Set additional property\r
- confirm->SetText("确认");\r
- confirm->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 16);\r
- confirm->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- confirmListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();\r
- confirm->SetOnClickListener(confirmListener);\r
-\r
- // 取消按钮\r
- cancel = new UILabelButton();\r
- if (cancel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cancel new fail");\r
- return;\r
- // cancel = new UILabelButton();\r
- }\r
- cancel->SetPosition(301, 251); // widget's left position and top position\r
- cancel->Resize(70, 50); // widget's width and height\r
- cancel->SetViewId("Cancel");// Set style\r
-\r
- // Set additional property\r
- cancel->SetText("取消");\r
- cancel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 16);\r
- cancel->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- cancelListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();\r
- cancel->SetOnClickListener(cancelListener);\r
- Add(deletereminder);\r
- Add(confirm);\r
- Add(cancel);\r
-}\r
-\r
-void MessageMainView::VerticalViewInits(void)\r
-{\r
- if (deletereminder->IsVisible()) {\r
- deletereminder->SetVisible(false);\r
- }\r
- if (confirm->IsVisible()) {\r
- confirm->SetVisible(false);\r
- }\r
- if (cancel->IsVisible()) {\r
- cancel->SetVisible(false);\r
- }\r
- if (! messageLables->IsVisible()) {\r
- messageLables->SetVisible(true);\r
- }\r
-}\r
-\r
-void MessageMainView::NoNotify(void)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::NoNotify");\r
- messageLables = new UILabel();\r
- if (messageLables == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageLable new fail");\r
- return;\r
- }\r
- messageLables->SetPosition(177, 212, 100, 30);\r
- messageLables->SetText("无消息");\r
- messageLables->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- messageLables->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24);\r
- messageLables->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- messageLables->SetViewId("NoNotify");\r
- messageLables->SetTouchable(true);\r
- newNotifyListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();\r
- messageLables->SetOnClickListener(newNotifyListener);\r
- Add(messageLables);\r
-}\r
-\r
-void MessageMainView::CancelDeletion(void)\r
-{\r
- if (deletereminder->IsVisible()) {\r
- deletereminder->SetVisible(false);\r
- }\r
- if (confirm->IsVisible()) {\r
- confirm->SetVisible(false);\r
- }\r
- if (cancel->IsVisible()) {\r
- cancel->SetVisible(false);\r
- }\r
- if (! messageLable->IsVisible()) {\r
- messageLable->SetVisible(true);\r
- }\r
- if (! notice->IsVisible()) {\r
- notice->SetVisible(true);\r
- }\r
- if (! contentList->IsVisible()) {\r
- contentList->SetVisible(true);\r
- }\r
-}\r
-\r
-void MessageMainView::RefreshMessageList(std::vector<MessageItem> item)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::RefreshMessageList");\r
- if (listAdapter == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::RefreshMessageList listAdapter is nullptr");\r
- listAdapter = new MessageAdapter();\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::RefreshMessageList");\r
- if (item.size() == 0) {\r
- return;\r
- } else {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::RefreshMessageList %d", item.size());\r
- listAdapter->ClearListItem();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "listAdapter->ClearListItem");\r
- for (size_t i = 0; i < item.size(); ++i) {\r
- listAdapter->AddListItem(item[i]);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "listAdapter->AddListItem");\r
- }\r
- }\r
- if (contentList == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageMainView::contentList fail");\r
- return;\r
- }\r
- contentList->ScrollTo(0);\r
- contentList->SetAdapter(listAdapter);\r
- contentList->RefreshList();\r
-}\r
-\r
-bool MessageMainView::InitScrollData()\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageMainView::InitScrollData");\r
- const std::vector<MessageItem> itemInfo = MessageModel::GetInstance().GetMessagelistItems();\r
- RefreshMessageList(itemInfo);\r
- return true;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallerDisplayView.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#include "makephone/CallerDisplayView.h"\r
-#include "makephone/MainCallingPresenter.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16 MATH_ZERO = 0;\r
-\r
-// 来电显示\r
-static constexpr uint16 LABEL_PERCENT_POSITION_X = 0;\r
-static constexpr uint16 LABEL_PERCENT_POSITION_Y = 80;\r
-static constexpr uint16 VIEW_DISTANCE_TO_LEFT_SIDE = HORIZONTAL_RESOLUTION;\r
-static constexpr uint16 TITLE_LABEL_DEFAULT_HEIGHT = 80;\r
-\r
-// 当前时间\r
-static constexpr uint16 LABEL_CURREMTTIME_POSITION_X = 0;\r
-static constexpr uint16 LABEL_CURREMTTIME_POSITION_Y = 340;\r
-\r
-// 图片坐标\r
-static constexpr uint16 IMAGE_DISSGREE_POSITION_X = 80;\r
-static constexpr uint16 IMAGE_AGREEING_POSITION_X = 270;\r
-static constexpr uint16 IMAGE_ALL_POSITION_Y = 240;\r
-\r
-// 字体大小\r
-static constexpr uint16 FONT_CURRENT_SIZE = 25;\r
-static constexpr uint16 FONT_CALLER_SIZE = 40;\r
-static CallerDisplayView *g_pMainView = nullptr;\r
-CallerDisplayView::CallerDisplayView()\r
-{\r
- g_pMainView = this;\r
-}\r
-\r
-CallerDisplayView::~CallerDisplayView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerDisplayView::~CallerDisplayView");\r
- group->RemoveAll();\r
-\r
- delete imageAgreeing;\r
- imageAgreeing = nullptr;\r
-\r
- delete imageDissgree;\r
- imageDissgree = nullptr;\r
-\r
- delete callerDisplay;\r
- callerDisplay = nullptr;\r
-\r
- delete currentTimes;\r
- currentTimes = nullptr;\r
-\r
- delete group;\r
- group = nullptr;\r
-\r
- g_pMainView = nullptr;\r
-}\r
-\r
-CallerDisplayView *CallerDisplayView::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-bool CallerDisplayView::InitAddOnclickevent()\r
-{\r
- clickLeftListener = (UIView::OnClickListener*)OHOS::MainCallingPresenter::GetInstance();\r
- if (clickLeftListener == nullptr) {\r
- return false;\r
- }\r
- imageAgreeing->SetOnClickListener(clickLeftListener);\r
- imageDissgree->SetOnClickListener(clickLeftListener);\r
- return true;\r
-}\r
-\r
-bool CallerDisplayView::InitImageViewDisplay()\r
-{\r
- imageAgreeing = new UIImageView();\r
- if (imageAgreeing == nullptr) {\r
- return false;\r
- }\r
- imageAgreeing->SetPosition(IMAGE_AGREEING_POSITION_X, IMAGE_ALL_POSITION_Y); // 30 : offset\r
- imageAgreeing->SetSrc(PNG_AGREEING_IMAGE_PATH);\r
- imageAgreeing->SetTouchable(true);\r
- imageAgreeing->SetViewId("answer");\r
- group->Add(imageAgreeing);\r
-\r
- imageDissgree = new UIImageView();\r
- if (imageDissgree == nullptr) {\r
- return false;\r
- }\r
- imageDissgree->SetPosition(IMAGE_DISSGREE_POSITION_X, IMAGE_ALL_POSITION_Y); // 30 : offset\r
- imageDissgree->SetSrc(PNG_DISSGREE_IMAGE_PATH);\r
- imageDissgree->SetTouchable(true);\r
- imageDissgree->SetViewId("displayHandUp");\r
- group->Add(imageDissgree);\r
-\r
- return true;\r
-}\r
-\r
-bool CallerDisplayView::InitUILabelDisplay()\r
-{\r
- callerDisplay = new UILabel();\r
- if (callerDisplay == nullptr) {\r
- return false;\r
- }\r
- callerDisplay->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y, VIEW_DISTANCE_TO_LEFT_SIDE,\r
- TITLE_LABEL_DEFAULT_HEIGHT);\r
- callerDisplay->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- callerDisplay->SetText(CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- callerDisplay->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- callerDisplay->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CALLER_SIZE);\r
- callerDisplay->SetTextColor(Color::White());\r
- group->Add(callerDisplay);\r
-\r
- currentTimes = new UILabel();\r
- if (currentTimes == nullptr) {\r
- return false;\r
- }\r
- currentTimes->SetPosition(LABEL_CURREMTTIME_POSITION_X, LABEL_CURREMTTIME_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- currentTimes->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- currentTimes->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- currentTimes->SetText(CallerLogModel::GetInstance()->InitDateHourTime().c_str());\r
- currentTimes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CURRENT_SIZE);\r
- currentTimes->SetTextColor(Color::White());\r
- group->Add(currentTimes);\r
- return true;\r
-}\r
-\r
-UIViewGroup *CallerDisplayView::CreateUIViewGroup()\r
-{\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerDisplayView::UIViewGroup::new group error");\r
- return nullptr;\r
- }\r
- group->SetPosition(MATH_ZERO, MATH_ZERO);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); // 454 : value\r
-\r
- if (!InitImageViewDisplay()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerDisplayView::InitImageViewDisplay error");\r
- return nullptr;\r
- }\r
-\r
- if (!InitAddOnclickevent()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerDisplayView::InitAddOnclickevent error");\r
- return nullptr;\r
- }\r
-\r
- if (!InitUILabelDisplay()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerDisplayView::InitUILabelDisplay error");\r
- return nullptr;\r
- }\r
-\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: CallingView.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#include "makephone/CallingView.h"\r
-#include "makephone/MainCallingPresenter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-\r
-namespace OHOS {\r
-static constexpr uint16 MATH_ZERO = 0;\r
-\r
-// 来电显示\r
-static constexpr uint16 LABEL_PERCENT_POSITION_X = 0;\r
-static constexpr uint16 LABEL_PERCENT_POSITION_Y = 100;\r
-\r
-static constexpr uint16 VIEW_DISTANCE_TO_LEFT_SIDE = HORIZONTAL_RESOLUTION;\r
-static constexpr uint16 TITLE_LABEL_DEFAULT_HEIGHT = 80;\r
-\r
-// 当前时间\r
-static constexpr uint16 LABEL_CURREMTTIME_POSITION_X = 0;\r
-static constexpr uint16 LABEL_CURREMTTIME_POSITION_Y = 360;\r
-\r
-// 图片坐标\r
-static constexpr uint16 LABEL_CALLERD_POSITION_X = 0;\r
-static constexpr uint16 LABEL_CALLERD_POSITION_Y = 160;\r
-static constexpr uint16 IMAGE_HONRS_POSITION_X = 185;\r
-static constexpr uint16 IMAGE_HONRS_POSITION_Y = 10;\r
-static constexpr uint16 IMAGE_DISSGREE_POSITION_X = 70;\r
-static constexpr uint16 IMAGE_AGREEING_POSITION_X = 280;\r
-static constexpr uint16 IMAGE_ALL_POSITION_Y = 240;\r
-\r
-// 字体大小\r
-static constexpr uint16 LABEL_TIME_FONT_SIZE = 25;\r
-static constexpr uint16 LABEL_DISPLAY_FONE_SIZE = 40;\r
-static CallingView *g_pMainView = nullptr;\r
-\r
-CallingView::CallingView()\r
-{\r
- g_pMainView = this;\r
-}\r
-\r
-CallingView::~CallingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallingView::~CallingView");\r
- group->RemoveAll();\r
- delete imageMicrophone;\r
- imageMicrophone = nullptr;\r
-\r
- delete imageHandUp;\r
- imageHandUp = nullptr;\r
-\r
- delete imageHorns;\r
- imageHorns = nullptr;\r
-\r
- delete callerDisplay;\r
- callerDisplay = nullptr;\r
-\r
- delete currentTimes;\r
- currentTimes = nullptr;\r
-\r
- delete callDuration;\r
- callDuration = nullptr;\r
-\r
- delete group;\r
- group = nullptr;\r
-\r
- g_pMainView = nullptr;\r
-}\r
-\r
-CallingView *CallingView::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-bool CallingView::InitAddOnclickevent()\r
-{\r
- clickLeftListener = (UIView::OnClickListener*)OHOS::MainCallingPresenter::GetInstance();\r
- if (clickLeftListener == nullptr) {\r
- return false;\r
- }\r
-\r
- imageMicrophone->SetOnClickListener(clickLeftListener);\r
- imageHandUp->SetOnClickListener(clickLeftListener);\r
- imageHorns->SetOnClickListener(clickLeftListener);\r
-\r
- return true;\r
-}\r
-\r
-\r
-UILabel *CallingView::GetCallingDurationLabel()\r
-{\r
- return callDuration;\r
-}\r
-\r
-bool CallingView::InitImageViewDisplay()\r
-{\r
- imageMicrophone = new UIImageView();\r
- if (imageMicrophone == nullptr) {\r
- return false;\r
- }\r
- imageMicrophone->SetPosition(IMAGE_AGREEING_POSITION_X, IMAGE_ALL_POSITION_Y); // 30 : offset\r
- imageMicrophone->SetSrc(PNG_MICROPHONE_OPEN_IMAGE_PATH);\r
- imageMicrophone->SetTouchable(true);\r
- imageMicrophone->SetViewId("microphoneChange");\r
- group->Add(imageMicrophone);\r
-\r
- imageHandUp = new UIImageView();\r
- if (imageHandUp == nullptr) {\r
- return false;\r
- }\r
- imageHandUp->SetPosition(IMAGE_DISSGREE_POSITION_X, IMAGE_ALL_POSITION_Y); // 30 : offset\r
- imageHandUp->SetSrc(PNG_DISSGREE_IMAGE_PATH);\r
- imageHandUp->SetTouchable(true);\r
- imageHandUp->SetViewId("callingHandUp");\r
- group->Add(imageHandUp);\r
-\r
- imageHorns = new UIImageView();\r
- if (imageHorns == nullptr) {\r
- return false;\r
- }\r
- imageHorns->SetPosition(IMAGE_HONRS_POSITION_X, IMAGE_HONRS_POSITION_Y); // 30 : offset\r
- imageHorns->SetSrc(PNG_SOUNDBUTTON2);\r
- imageHorns->SetTouchable(true);\r
- imageHorns->SetViewId("volumeSwitch");\r
-\r
- group->Add(imageHorns);\r
- return true;\r
-}\r
-\r
-UIImageView *CallingView::GetImageMicrophone()\r
-{\r
- return imageMicrophone;\r
-}\r
-\r
-UILabel *CallingView::GetCallingDisplayLabel()\r
-{\r
- return callerDisplay;\r
-}\r
-\r
-bool CallingView::InitUILabelDisplay()\r
-{\r
- callerDisplay = new UILabel();\r
- if (callerDisplay == nullptr) {\r
- return false;\r
- }\r
- callerDisplay->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- callerDisplay->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- callerDisplay->SetText(CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- callerDisplay->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- callerDisplay->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_DISPLAY_FONE_SIZE);\r
- callerDisplay->SetTextColor(Color::White());\r
- group->Add(callerDisplay);\r
-\r
- callDuration = new UILabel();\r
- if (callDuration == nullptr) {\r
- return false;\r
- }\r
- callDuration->SetPosition(LABEL_CALLERD_POSITION_X, LABEL_CALLERD_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- callDuration->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- callDuration->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- callDuration->SetText(CallerLogModel::GetInstance()->DisplayCallDuration().c_str());\r
- callDuration->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TIME_FONT_SIZE);\r
- callDuration->SetTextColor(Color::White());\r
- group->Add(callDuration);\r
-\r
- currentTimes = new UILabel();\r
- if (currentTimes == nullptr) {\r
- return false;\r
- }\r
- currentTimes->SetPosition(LABEL_CURREMTTIME_POSITION_X, LABEL_CURREMTTIME_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- currentTimes->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- currentTimes->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- currentTimes->SetText(CallerLogModel::GetInstance()->InitDateHourTime().c_str());\r
- currentTimes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TIME_FONT_SIZE);\r
- currentTimes->SetTextColor(Color::White());\r
-\r
- group->Add(currentTimes);\r
- return true;\r
-}\r
-\r
-UIViewGroup *CallingView::CreateUIViewGroup()\r
-{\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallingView::UIViewGroup::new group error");\r
- return nullptr;\r
- }\r
- group->SetPosition(MATH_ZERO, MATH_ZERO);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); // 454 : value\r
-\r
- if (!InitImageViewDisplay()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallingView::InitImageViewDisplay error");\r
- return nullptr;\r
- }\r
-\r
- if (!InitAddOnclickevent()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallingView::InitAddOnclickevent error");\r
- return nullptr;\r
- }\r
-\r
- if (!InitUILabelDisplay()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallingView::InitUILabelDisplay error");\r
- return nullptr;\r
- }\r
-\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: DialingScreenView.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "makephone/DialingScreenView.h"\r
-#include "makephone/MainCallingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16 MATH_ZERO = 0;\r
-\r
-// 图片显示\r
-static constexpr uint16 IMAGE_HANDUP_POSITION_X = 177;\r
-static constexpr uint16 IMAGE_HANDUP_POSITION_Y = 210;\r
-\r
-// 来电显示\r
-static constexpr uint16 LABEL_ADRESS_POSITION_X = 0;\r
-static constexpr uint16 LABEL_ADRESS_POSITION_Y = 90;\r
-static constexpr uint16 VIEW_DISTANCE_TO_LEFT_SIDE = HORIZONTAL_RESOLUTION;\r
-static constexpr uint16 TITLE_LABEL_DEFAULT_HEIGHT = 60;\r
-\r
-// 拨出时间\r
-static constexpr uint16 LABEL_DIALING_POSITION_X = 0;\r
-static constexpr uint16 LABEL_DIALING_POSITION_Y = 150;\r
-\r
-// 当前时间\r
-static constexpr uint16 LABEL_CURRENT_POSITION_X = 0;\r
-static constexpr uint16 LABEL_CURRENT_POSITION_Y = 340;\r
-\r
-// 字体大小\r
-static constexpr uint16 FONT_TIME_SIZE = 25;\r
-static constexpr uint16 FONT_AIALING_SIZE = 40;\r
-static constexpr uint16 FONT_CURRENT_SIZE = 20;\r
-static DialingScreenView *g_pMainView = nullptr;\r
-DialingScreenView::DialingScreenView()\r
-{\r
- g_pMainView = this;\r
-}\r
-\r
-DialingScreenView::~DialingScreenView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DialingScreenView::~DialingScreenView");\r
- group->RemoveAll();\r
- delete dialingId;\r
- dialingId = nullptr;\r
-\r
- delete dialingTime;\r
- dialingTime = nullptr;\r
-\r
- delete currentTimes;\r
- currentTimes = nullptr;\r
-\r
- delete handup;\r
- handup = nullptr;\r
-\r
- delete group;\r
- group = nullptr;\r
-\r
- g_pMainView = nullptr;\r
-}\r
-\r
-DialingScreenView *DialingScreenView::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-bool DialingScreenView::InitUILabelDisplay()\r
-{\r
- dialingId = new UILabel();\r
- if (dialingId == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialingScreenView::new UILabel fail");\r
- return false;\r
- }\r
- dialingId->SetPosition(LABEL_ADRESS_POSITION_X, LABEL_ADRESS_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- dialingId->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- dialingId->SetText(CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- dialingId->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- dialingId->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_AIALING_SIZE);\r
- dialingId->SetTextColor(Color::White());\r
- group->Add(dialingId);\r
-\r
- dialingTime = new UILabel();\r
- if (dialingTime == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialingScreenView::new Label fail");\r
- return false;\r
- }\r
- dialingTime->SetPosition(LABEL_DIALING_POSITION_X, LABEL_DIALING_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- dialingTime->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- dialingTime->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- dialingTime->SetText(CallerLogModel::GetInstance()->GetDialingStatus().c_str());\r
- dialingTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_TIME_SIZE);\r
- dialingTime->SetTextColor(Color::White());\r
- group->Add(dialingTime);\r
-\r
- currentTimes = new UILabel();\r
- if (currentTimes == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerDisplayView::new Label fail");\r
- return false;\r
- }\r
- currentTimes->SetPosition(LABEL_CURRENT_POSITION_X, LABEL_CURRENT_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- currentTimes->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- currentTimes->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- currentTimes->SetText(CallerLogModel::GetInstance()->InitDateHourTime().c_str());\r
- currentTimes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CURRENT_SIZE);\r
- currentTimes->SetTextColor(Color::White());\r
- group->Add(currentTimes);\r
-\r
- return true;\r
-}\r
-\r
-UIViewGroup *DialingScreenView::CreateUIViewGroup()\r
-{\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialingScreenView::new group error");\r
- return nullptr;\r
- }\r
- group->SetPosition(MATH_ZERO, MATH_ZERO);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); // 454 : value\r
-\r
- if (!InitUILabelDisplay()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialingScreenView::InitImageViewDisplay error");\r
- return nullptr;\r
- }\r
-\r
- handup = new UIImageView();\r
- if (handup == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialingScreenView::new UIImageView error");\r
- return nullptr;\r
- }\r
- handup->SetPosition(IMAGE_HANDUP_POSITION_X, IMAGE_HANDUP_POSITION_Y); // 30 : offset\r
- handup->SetSrc(PNG_DISSGREE_IMAGE_PATH);\r
- handup->SetTouchable(true);\r
- handup->SetViewId("dialingHandUp");\r
-\r
- clickLeftListener = (UIView::OnClickListener*)OHOS::MainCallingPresenter::GetInstance();\r
- if (clickLeftListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialingScreenView::new clickLeftListener error");\r
- return nullptr;\r
- }\r
- handup->SetOnClickListener(clickLeftListener);\r
- group->Add(handup);\r
-\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MainCallingPresenter.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-\r
-#include "wearable_log.h"\r
-#include "common/image_cache_manager.h"\r
-#include "UiConfig.h"\r
-#include "ui_resource_image.h"\r
-#include "makephone/MainCallingPresenter.h"\r
-#include "makephone/CallingView.h"\r
-#include "makephone/CallerDisplayView.h"\r
-#include "makephone/DialingScreenView.h"\r
-#include "makephone/MainCallingView.h"\r
-#include "NativeRegisterManager.h"\r
-#include "phoneservice/PhoneService.h"\r
-#include "makephone/WaitingHintsView.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_SLICE(VIEW_MAEKPHONE_SAMPLE, MainCallingView, MainCallingPresenter);\r
-\r
-static MainCallingPresenter *g_pMainView = nullptr;\r
-static constexpr int32 NUM_10 = 10;\r
-MainCallingPresenter::MainCallingPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::MainCallingPresenter");\r
- g_pMainView = this;\r
-}\r
-\r
-MainCallingPresenter::~MainCallingPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::~MainCallingPresenter");\r
- if (volumeSetting != nullptr) {\r
- delete volumeSetting;\r
- volumeSetting = nullptr;\r
- }\r
- g_pMainView = nullptr;\r
-}\r
-\r
-MainCallingPresenter *MainCallingPresenter::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-void MainCallingPresenter::HonrsViewChange()\r
-{\r
- if (volumeSetting == nullptr) {\r
- volumeSetting = new VolumeSettingView();\r
- if (volumeSetting == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::volumeSetting nullptr err");\r
- return;\r
- }\r
- if (!volumeSetting->SetUpVolume()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::volumeSetting SetUpVolume fail");\r
- return;\r
- }\r
- volumeSetting->GetProgress()->SetValue(AudioManager::GetInstance().GetVolume(AUDIO_STREAM_VOICE_CALL_BT_SCO));\r
- if (AudioManager::GetInstance().GetVolume(AUDIO_STREAM_VOICE_CALL_BT_SCO) == 0) {\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);\r
- volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);\r
- }\r
- view_->AddViewToRootContainer(volumeSetting);\r
- }\r
- VolumeSliderEventListener *volumeSliderEventListener = volumeSetting->GetVolumeEventListener();\r
- if (volumeSliderEventListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::volumeSliderEventListener nullptr err");\r
- return;\r
- }\r
-\r
- volumeSliderEventListener->SetPlayerCoefficients(VOLUMEPHONE); // 进度条系数\r
-\r
- if (!InitPointerValue()) {\r
- return;\r
- }\r
-\r
- view_->GetScreenGroup()->SetVisible(false);\r
- view_->GetDisplayGroup()->SetVisible(false);\r
- view_->GetCallingGroup()->SetVisible(false);\r
- view_->GetWaitingGroup()->SetVisible(false);\r
-\r
- volumeSetting->SetVisible(true);\r
- // 刷新UI\r
- RootView::GetInstance()->Invalidate();\r
-}\r
-\r
-bool MainCallingPresenter::CallingViewDisplay()\r
-{\r
- if (!InitPointerValue()) {\r
- return false;\r
- }\r
- view_->GetScreenGroup()->SetVisible(false);\r
- view_->GetDisplayGroup()->SetVisible(false);\r
- view_->GetCallingGroup()->SetVisible(true);\r
- view_->GetWaitingGroup()->SetVisible(false);\r
- return true;\r
-}\r
-\r
-bool MainCallingPresenter::InitPointerValue()\r
-{\r
- if (CallerDisplayView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] CallerDisplayView error");\r
- return false;\r
- }\r
-\r
- if (DialingScreenView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] DialingScreenView error");\r
- return false;\r
- }\r
-\r
- if (CallingView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] CallingView error");\r
- return false;\r
- }\r
-\r
- if (WaitingHintsView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] WaitingHintsView error");\r
- return false;\r
- }\r
-\r
- if (view_->GetScreenGroup() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] view_ GetScreenGroup error");\r
- return false;\r
- }\r
-\r
- if (view_->GetDisplayGroup() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] view_ GetDisplayGroup error");\r
- return false;\r
- }\r
-\r
- if (view_->GetCallingGroup() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] view_ GetCallingGroup error");\r
- return false;\r
- }\r
-\r
- if (view_->GetWaitingGroup() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[InitPointerValue] view_ GetWaitingGroup error");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-bool MainCallingPresenter::HintsHandupClick()\r
-{\r
- if (RejectIncomingCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[HintsHandupClick] RejectIncomingCall error");\r
- return false;\r
- }\r
- CallerLogModel::GetInstance()->SetWaitingStatus(false);\r
- CallerLogModel::GetInstance()->SetCallStatus(true);\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID, PRIORITY_ONE);\r
- return true;\r
-}\r
-\r
-bool MainCallingPresenter::OnClick(UIView& view, const ClickEvent& event)\r
-{\r
- UNUSED(event);\r
-\r
- if (!InitPointerValue()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::InitPointerValue error");\r
- return false;\r
- }\r
-\r
- if (strcmp(view.GetViewId(), "microphoneChange") == 0) {\r
- if (changeImage == 0) {\r
- changeImage = 1;\r
- view_->GetCallingView()->GetImageMicrophone()->SetSrc(PNG_MICROPHONE_CLOSE_IMAGE_PATH);\r
- SetMicMute(true);\r
- } else {\r
- changeImage = 0;\r
- view_->GetCallingView()->GetImageMicrophone()->SetSrc(PNG_MICROPHONE_OPEN_IMAGE_PATH);\r
- SetMicMute(false);\r
- }\r
- return true;\r
- } else if (strcmp(view.GetViewId(), "displayHandUp") == 0 || strcmp(view.GetViewId(), "callingHandUp") == 0||\r
- strcmp(view.GetViewId(), "dialingHandUp") == 0) {\r
- if (strcmp(view.GetViewId(), "displayHandUp") == 0) {\r
- // 手表拒接呼入来电\r
- if (RejectIncomingCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::RejectIncomingCall() fail");\r
- return false;\r
- }\r
- }\r
- if (FinishCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::FinishCall() fail");\r
- return false;\r
- }\r
- return true;\r
- } else if (strcmp(view.GetViewId(), "volumeSwitch") == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::honrs show");\r
- HonrsViewChange();\r
- } else if (strcmp(view.GetViewId(), "hintsHandup") == 0) {\r
- if (!HintsHandupClick()) {\r
- return false;\r
- }\r
- } else if (strcmp(view.GetViewId(), "answer") == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::phone calling");\r
- // 界面的显示和隐藏\r
- SetMicMute(false);\r
- // 手表接听呼入来电\r
- if (AcceptIncomingCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::AcceptIncomingCall() fail");\r
- return false;\r
- }\r
- return true;\r
- }\r
- return true;\r
-}\r
-\r
-VolumeSettingView *MainCallingPresenter::GetvolumeSetting()\r
-{\r
- return volumeSetting;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MainCallingView.cpp\r
- * Author:\r
- * Create: 2021-10-12\r
- */\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "makephone/MainCallingView.h"\r
-#include "makephone/MainCallingPresenter.h"\r
-#include "callerlog/CallerLogModel.h"\r
-\r
-namespace OHOS {\r
-static MainCallingView *g_pMainView = nullptr;\r
-MainCallingView::MainCallingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingView::MainCallingView");\r
- g_pMainView = this;\r
-}\r
-\r
-MainCallingView::~MainCallingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingView::~MainCallingView");\r
- delete displayView;\r
- displayView = nullptr;\r
-\r
- delete callView;\r
- callView = nullptr;\r
-\r
- delete screenView;\r
- screenView = nullptr;\r
-\r
- g_pMainView = nullptr;\r
-}\r
-\r
-MainCallingView *MainCallingView::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-UIViewGroup *MainCallingView::GetDisplayGroup()\r
-{\r
- return displayGroup;\r
-}\r
-\r
-UIViewGroup *MainCallingView::GetCallingGroup()\r
-{\r
- return callingGroup;\r
-}\r
-\r
-UIViewGroup *MainCallingView::GetScreenGroup()\r
-{\r
- return screenGroup;\r
-}\r
-\r
-UIViewGroup *MainCallingView::GetWaitingGroup()\r
-{\r
- return waitingGroup;\r
-}\r
-\r
-CallingView *MainCallingView::GetCallingView()\r
-{\r
- return callView;\r
-}\r
-\r
-bool MainCallingView::InitPointerValue()\r
-{\r
- displayView = new CallerDisplayView();\r
- if (displayView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::displayView");\r
- return false;\r
- }\r
-\r
- displayGroup = displayView->CreateUIViewGroup();\r
- if (displayGroup == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::displayGroup");\r
- return false;\r
- }\r
-\r
- callView = new CallingView();\r
- if (callView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::callView");\r
- return false;\r
- }\r
-\r
- callingGroup = callView->CreateUIViewGroup();\r
- if (callingGroup == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::callingGroup");\r
- return false;\r
- }\r
-\r
- screenView = new DialingScreenView();\r
- if (screenView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::screenView");\r
- return false;\r
- }\r
-\r
- screenGroup = screenView->CreateUIViewGroup();\r
- if (screenGroup == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::screenGroup");\r
- return false;\r
- }\r
-\r
- waitingView = new WaitingHintsView();\r
- if (waitingView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::WaitingHintsView");\r
- return false;\r
- }\r
-\r
- waitingGroup = waitingView->CreateUIViewGroup();\r
- if (waitingGroup == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingView::waitingGroup");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-void MainCallingView::OnStart()\r
-{\r
-\r
- if (!InitPointerValue()) {\r
- return;\r
- }\r
-\r
- AddViewToRootContainer(displayGroup);\r
- AddViewToRootContainer(callingGroup);\r
- AddViewToRootContainer(screenGroup);\r
- AddViewToRootContainer(waitingGroup);\r
-\r
- waitingGroup->SetVisible(false);\r
- callingGroup->SetVisible(false);\r
- if (CallerLogModel::GetInstance()->GetCallStatus()) {\r
- displayGroup->SetVisible(false);\r
- callingGroup->SetVisible(true);\r
- screenGroup->SetVisible(false);\r
- } else if (CallerLogModel::GetInstance()->GetWaitingStatus()) {\r
- screenGroup->SetVisible(false);\r
- displayGroup->SetVisible(false);\r
- waitingGroup->SetVisible(true);\r
- } else if (CallerLogModel::GetInstance()->GetPhoneStatus()) {\r
- displayGroup->SetVisible(false);\r
- } else {\r
- screenGroup->SetVisible(false);\r
- }\r
- CallerLogModel::GetInstance()->SetVolumeScreenStatus(false);\r
- if (CallerLogModel::GetInstance()->GetMulitplePhoneStatus()) {\r
- MulitplePhoneTextReplaces();\r
- CallerLogModel::GetInstance()->SetMulitplePhoneStatus(false);\r
- }\r
- return;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: WaitingHintsView.cpp\r
- * Author:\r
- * Create: 2022-03-14\r
- */\r
-#include "makephone/WaitingHintsView.h"\r
-#include "UiConfig.h"\r
-#include "callerlog/CallerLogModel.h"\r
-#include "makephone/MainCallingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16 MATH_ZERO = 0;\r
-// 挂断按钮位置\r
-static constexpr uint16 IMAGE_HANDUP_POSITION_X = 177;\r
-static constexpr uint16 IMAGE_HANDUP_POSITION_Y = 270;\r
-\r
-// 新来电显示\r
-static constexpr uint16 LABEL_PERCENT_POSITION_X = 0;\r
-static constexpr uint16 LABEL_PERCENT_POSITION_Y = 100;\r
-\r
-static constexpr uint16 VIEW_DISTANCE_TO_LEFT_SIDE = HORIZONTAL_RESOLUTION;\r
-static constexpr uint16 TITLE_LABEL_DEFAULT_HEIGHT = 80;\r
-\r
-// 字体大小\r
-static constexpr uint16 LABEL_DISPLAY_FONE_SIZE = 40;\r
-\r
-// 标签坐标\r
-static constexpr uint16 LABEL_CALLERD_POSITION_X = 0;\r
-static constexpr uint16 LABEL_CALLERD_POSITION_Y = 180;\r
-\r
-static WaitingHintsView *g_pMainView = nullptr;\r
-WaitingHintsView::WaitingHintsView()\r
-{\r
- g_pMainView = this;\r
-}\r
-\r
-WaitingHintsView::~WaitingHintsView()\r
-{\r
- g_pMainView = nullptr;\r
-}\r
-\r
-UIViewGroup *WaitingHintsView::CreateUIViewGroup()\r
-{\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WaitingHintsView::new group error");\r
- return nullptr;\r
- }\r
- group->SetPosition(MATH_ZERO, MATH_ZERO);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); // 454 : value\r
-\r
- if (!InitImageViewDisplay()) {\r
- return nullptr;\r
- }\r
- if (!InitUILabelDisplay()) {\r
- return nullptr;\r
- }\r
- return group;\r
-}\r
-\r
-WaitingHintsView *WaitingHintsView::GetInstance()\r
-{\r
- return g_pMainView;\r
-}\r
-\r
-bool WaitingHintsView::InitImageViewDisplay()\r
-{\r
- imageDissgree = new UIImageView();\r
- if (imageDissgree == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WaitingHintsView::new imageDissgree error");\r
- return false;\r
- }\r
- imageDissgree->SetPosition(IMAGE_HANDUP_POSITION_X, IMAGE_HANDUP_POSITION_Y); // 30 : offset\r
- imageDissgree->SetSrc(PNG_DISSGREE_IMAGE_PATH);\r
- imageDissgree->SetTouchable(true);\r
- imageDissgree->SetViewId("hintsHandup");\r
-\r
- clickLeftListener = (UIView::OnClickListener*)OHOS::MainCallingPresenter::GetInstance();\r
- if (clickLeftListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WaitingHintsView::new clickLeftListener error");\r
- return false;\r
- }\r
- imageDissgree->SetOnClickListener(clickLeftListener);\r
- group->Add(imageDissgree);\r
- return true;\r
-}\r
-\r
-bool WaitingHintsView::InitUILabelDisplay()\r
-{\r
- callerDisplay = new UILabel();\r
- if (callerDisplay == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WaitingHintsView::new callerDisplay error");\r
- return false;\r
- }\r
- callerDisplay->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- callerDisplay->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- callerDisplay->SetText(CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- callerDisplay->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- callerDisplay->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_DISPLAY_FONE_SIZE);\r
- callerDisplay->SetTextColor(Color::White());\r
- group->Add(callerDisplay);\r
-\r
- newcallHints = new UILabel();\r
- if (newcallHints == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WaitingHintsView::new newcallHints error");\r
- return false;\r
- }\r
- newcallHints->SetPosition(LABEL_CALLERD_POSITION_X, LABEL_CALLERD_POSITION_Y,\r
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);\r
- newcallHints->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- newcallHints->SetText("新来电");\r
- newcallHints->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- newcallHints->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_DISPLAY_FONE_SIZE);\r
- newcallHints->SetTextColor(Color::White());\r
- group->Add(newcallHints);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: bluetooth view 设置页面\r
- * Create: 2021-09-5\r
- */\r
-#include "player/BluetoothView.h"\r
-#include "player/PlayersView.h"\r
-#include "UiConfig.h"\r
-#include "bluetooth/BluetoothEarPhoneView.h"\r
-#include "player/PlayersPresenter.h"\r
-\r
-namespace OHOS {\r
-static BluetoothView *g_bluetoothView{nullptr};\r
-static constexpr uint16_t TEXT_WIDTH = 155;\r
-static constexpr uint16_t TEXT_HEIGHT = 40;\r
-static constexpr uint16_t HEIGHT = 55;\r
-static constexpr uint16_t HEIGHT2 = 75;\r
-static constexpr uint16_t WIDTH = 55;\r
-static constexpr uint16_t WIDTH2 = 75;\r
-static constexpr uint16_t BUTTON_WIDTH = 180;\r
-static constexpr uint16_t BUTTON_HEIGHT = 40;\r
-\r
-constexpr uint16_t BLUETOOTH_OK = 0;\r
-constexpr int16_t BLUETOOTH_ERROR = (-1);\r
-\r
-static constexpr uint16_t IMAGE_X = 50;\r
-static constexpr uint16_t IMAGE_Y = 98;\r
-static constexpr uint16_t IMAGE_Y2 = 187;\r
-static constexpr uint16_t IMAGE_Y3 = 278;\r
-static constexpr uint16_t STEP_LABEL_X = 155;\r
-static constexpr uint16_t BUTTON_X = 320;\r
-static constexpr uint16_t BUTTON_X2 = 313;\r
-static constexpr uint16_t BUTTON_X3 = 135;\r
-static constexpr uint16_t BUTTON_Y = 104;\r
-static constexpr uint16_t BUTTON_Y2 = 194;\r
-static constexpr uint16_t BUTTON_Y3 = 278;\r
-static constexpr uint16_t BUTTON_Y4 = 402;\r
-static constexpr uint16_t STEP_LABEL_Y = 108;\r
-static constexpr uint16_t STEP_LABEL_Y2 = 199;\r
-static constexpr uint16_t STEP_LABEL_Y3 = 290;\r
-\r
-BluetoothView::BluetoothView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::BluetoothView");\r
- g_bluetoothView = this;\r
-}\r
-\r
-BluetoothView::~BluetoothView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::~BluetoothView");\r
- group->RemoveAll();\r
- UIView::OnClickListener *click = watchButton->GetOnClickListener();\r
- if (click != nullptr) {\r
- delete click;\r
- }\r
- delete watchButton;\r
- watchButton = nullptr;\r
- click = phoneButton->GetOnClickListener();\r
- if (click != nullptr) {\r
- delete click;\r
- }\r
- delete phoneButton;\r
- phoneButton = nullptr;\r
- delete settingButton;\r
- settingButton = nullptr;\r
- click = deleteButton->GetOnClickListener();\r
- if (click != nullptr) {\r
- delete click;\r
- }\r
- click = nullptr;\r
- delete deleteButton;\r
- deleteButton = nullptr;\r
- delete watchLabel;\r
- watchLabel = nullptr;\r
- delete phoneLabel;\r
- phoneLabel = nullptr;\r
- delete bluetoothLabel;\r
- bluetoothLabel = nullptr;\r
- delete watchImage;\r
- watchImage = nullptr;\r
- delete phoneImage;\r
- phoneImage = nullptr;\r
- delete bluetoothImage;\r
- bluetoothImage = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_bluetoothView = nullptr;\r
-}\r
-\r
-BluetoothView *BluetoothView::GetInstance(void)\r
-{\r
- return g_bluetoothView;\r
-}\r
-\r
-UIButton *BluetoothView::GetSettingButton(void)\r
-{\r
- return settingButton;\r
-}\r
-\r
-UILabelButton *BluetoothView::GetDeleteButton(void)\r
-{\r
- return deleteButton;\r
-}\r
-\r
-UIRadioButton *BluetoothView::GetWatchButton(void)\r
-{\r
- return watchButton;\r
-}\r
-\r
-UIRadioButton *BluetoothView::GetPhoneButton(void)\r
-{\r
- return phoneButton;\r
-}\r
-\r
-// Button OnClick\r
-class BluetoothOnClickListener : public UIView::OnClickListener {\r
-public:\r
- explicit BluetoothOnClickListener(UIView* view) : view_(view) {}\r
- ~BluetoothOnClickListener() {}\r
-\r
- bool OnClick(UIView& view, const ClickEvent& event) override\r
- {\r
- UNUSED(view);\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListener OnClick");\r
- BluetoothView *bluetoothView = BluetoothView::GetInstance();\r
- if (bluetoothView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView is nullptr");\r
- return false;\r
- }\r
- if (view_ == (UIView *)bluetoothView->GetWatchButton()) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "watchButton OnClick");\r
- } else if (view_ == (UIView *)bluetoothView->GetPhoneButton()) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneButton OnClick");\r
- } else if (view_ == (UIView *)bluetoothView->GetSettingButton()) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "settingButton OnClick");\r
- JumpView *jumpView = JumpView::GetInstance();\r
- if (jumpView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
- return false;\r
- }\r
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,\r
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
- } else if (view_ == (UIView *)bluetoothView->GetDeleteButton()) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "deleteButton OnClick");\r
- }\r
- return true;\r
- }\r
-private:\r
- UIView *view_ = nullptr;\r
-};\r
-\r
-void BluetoothView::SetUpButton(UILabelButton *btn, const Point& point,\r
- int16_t width, int16_t height, UIView::OnClickListener *listener)\r
-{\r
- if (btn == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btn null!");\r
- return;\r
- }\r
- btn->SetPosition(point.x, point.y, width, height);\r
- btn->SetOnClickListener(listener);\r
-}\r
-\r
-int BluetoothView::LoadRadioButton()\r
-{\r
- if (watchButton == nullptr) {\r
- watchButton = new UIRadioButton("MusicCategory");\r
- if (watchButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchButton UIRadio new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- }\r
- if (phoneButton == nullptr) {\r
- phoneButton = new UIRadioButton("MusicCategory");\r
- if (phoneButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneButton UIRadio new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- }\r
- UIView::OnClickListener *listener1 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(watchButton));\r
- if (listener1 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener1 new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- watchButton->SetPosition(BUTTON_X, BUTTON_Y, WIDTH, HEIGHT);\r
- watchButton->SetOnClickListener(listener1);\r
- watchButton->SetTouchable(false);\r
- UIView::OnClickListener *listener2 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(phoneButton));\r
- if (listener2 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener2 new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- phoneButton->SetPosition(BUTTON_X, BUTTON_Y2, WIDTH, HEIGHT);\r
- phoneButton->SetOnClickListener(listener2);\r
- phoneButton->SetTouchable(false);\r
- return BLUETOOTH_OK;\r
-}\r
-\r
-int BluetoothView::LoadLabelButton()\r
-{\r
- struct Point pointBtn;\r
- // 跳转按钮\r
- pointBtn.x = BUTTON_X2;\r
- pointBtn.y = BUTTON_Y3;\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- settingButton->SetPosition(pointBtn.x, pointBtn.y, WIDTH, HEIGHT);\r
- settingButton->SetOnClickListener(clickListener);\r
- settingButton->SetImageSrc(PNG_SETTTING_BUTTON_IMAGE, PNG_SETTTING_BUTTON_IMAGE);\r
- settingButton->SetViewId(BLUETOOTH_SETTING_BUTTON);\r
- // 删除按钮\r
- pointBtn.x = BUTTON_X3;\r
- pointBtn.y = BUTTON_Y4;\r
- UIView::OnClickListener *listener4 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(deleteButton));\r
- if (listener4 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener4 new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- SetUpButton(deleteButton, pointBtn, BUTTON_WIDTH, BUTTON_HEIGHT, listener4);\r
- deleteButton->SetText("删除音乐");\r
- deleteButton->SetVisible(false);\r
- return BLUETOOTH_OK;\r
-}\r
-\r
-int BluetoothView::LoadButtonView()\r
-{\r
- if (LoadRadioButton() == BLUETOOTH_ERROR) {\r
- return BLUETOOTH_ERROR;\r
- }\r
- if (settingButton == nullptr) {\r
- settingButton = new UIButton();\r
- if (settingButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "settingButton UIButton new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- }\r
- if (deleteButton == nullptr) {\r
- deleteButton = new UILabelButton();\r
- if (deleteButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deleteButton UILabelButton new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LoadButtonView");\r
- if (LoadLabelButton() == BLUETOOTH_ERROR) {\r
- return BLUETOOTH_ERROR;\r
- }\r
- return BLUETOOTH_OK;\r
-}\r
-\r
-int BluetoothView::LoadLabel(void)\r
-{\r
- // 标题文本\r
- if (watchLabel == nullptr) {\r
- watchLabel = new UILabel();\r
- if (watchLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchLabel new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- }\r
- watchLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y, TEXT_WIDTH, TEXT_HEIGHT);\r
- watchLabel->SetText("手表音乐");\r
- watchLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- if (phoneLabel == nullptr) {\r
- phoneLabel = new UILabel();\r
- if (phoneLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneLabel new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- }\r
- phoneLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y2, TEXT_WIDTH, TEXT_HEIGHT);\r
- phoneLabel->SetText("手机音乐");\r
- phoneLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- if (bluetoothLabel == nullptr) {\r
- bluetoothLabel = new UILabel();\r
- if (bluetoothLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothLabel new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- }\r
- bluetoothLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y3, TEXT_WIDTH, TEXT_HEIGHT);\r
- bluetoothLabel->SetText("蓝牙音乐");\r
- bluetoothLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
- return BLUETOOTH_OK;\r
-}\r
-\r
-int BluetoothView::LoadImage(void)\r
-{\r
- // 图片图标\r
- watchImage = new UIImageView();\r
- if (watchImage == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchImage new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- watchImage->SetPosition(IMAGE_X, IMAGE_Y, WIDTH2, HEIGHT2);\r
- watchImage->SetSrc(PNG_WATCH_IMAGE);\r
-\r
- phoneImage = new UIImageView();\r
- if (phoneImage == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- phoneImage->SetPosition(IMAGE_X, IMAGE_Y2, WIDTH2, HEIGHT2);\r
- phoneImage->SetSrc(PNG_PHONE_IMAGE);\r
-\r
- bluetoothImage = new UIImageView();\r
- if (bluetoothImage == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothImage new fail");\r
- return BLUETOOTH_ERROR;\r
- }\r
- bluetoothImage->SetPosition(IMAGE_X, IMAGE_Y3, WIDTH2, HEIGHT2);\r
- bluetoothImage->SetSrc(PNG_BLUETOOTH_IMAGE);\r
- return BLUETOOTH_OK;\r
-}\r
-\r
-UIViewGroup *BluetoothView::LoadBluetoothView()\r
-{\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- LoadButtonView();\r
- LoadLabel();\r
- LoadImage();\r
-\r
- group->Add(watchLabel);\r
- group->Add(phoneLabel);\r
- group->Add(bluetoothLabel);\r
- group->Add(watchButton);\r
- group->Add(phoneButton);\r
- group->Add(settingButton);\r
- group->Add(deleteButton);\r
- group->Add(watchImage);\r
- group->Add(phoneImage);\r
- group->Add(bluetoothImage);\r
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- if (earDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(earDragListener);\r
- group->SetViewId(BLUETOOTH_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-#include <string>
-#include "player/PlayersCaseListAdapter.h"
-#include "gfx_utils/list.h"
-#include "player/PlayersView.h"
-#include "player/PlayersPresenter.h"
-#include "wearable_log.h"
-#include "player/PlayersModel.h"
-
-namespace OHOS {
-constexpr uint16_t TESTCASE_BUTTON_HEIGHT = 64;
-constexpr uint16_t STYLE_BORDER_WIDTH_VALUE = 4;
-constexpr uint16_t STYLE_BORDER_RADIUS_VALUE = 12;
-static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333;
-
-PlayersCaseListAdapter::~PlayersCaseListAdapter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");
- delete listener;
- listener = nullptr;
-}
-
-uint16_t PlayersCaseListAdapter::GetCount()
-{
- return PlayersListGroup::GetInstance()->GetCase().Size();
-}
-
-class BtnOnClickListListener : public UIView::OnClickListener {
-public:
- BtnOnClickListListener() {}
- ~BtnOnClickListListener() {}
- bool OnClick(UIView& view, const ClickEvent& event) override;
-
-private:
- void BtnOnListData(UIView& view);
- char *sliceId_{nullptr};
- int16_t index_{0};
-};
-
-bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener sliceId_: %s.", sliceId_);
- UNUSED(event);
- int ret;
- int32_t playerState;
- uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");
- return false;
- }
- BtnOnListData(view);
- // 标记当前播放歌曲index_
- PlayersModel::GetInstance()->SetCurrentIndex(index_);
- // 本地播放文件路径和状态
- std::string strSrcMusic(APP_MUSIC_PATH);
- std::string tempStr("/");
- std::string strName = sliceId_;
- PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "uri: %s.", PlayersModel::GetInstance()->GetPlayerUri().c_str());
- std::string strSongName = sliceId_;
- std::string pureName = strSongName.substr(0, strSongName.rfind("."));
- playersView->TitleSetText(pureName.c_str());
- playersView->SetPlayerListGroupStatus(false);
- // 刷新UI
- RootView::GetInstance()->Invalidate();
-
- state = playersView->GetPlayerButtonState();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state);
- if (state == UICheckBox::UICheckBoxState::UNSELECTED) {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
- /* start play */
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play");
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
- if (playerState == PlayerStates::PLAYER_PAUSED) {
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
- }
- PlayersModel::GetInstance()->PlayerStat(); // 播放
- } else if (state == UICheckBox::UICheckBoxState::SELECTED) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
- if (playerState == PlayerStates::PLAYER_STARTED) {
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
- }
- PlayersModel::GetInstance()->PlayerStat();
- }
- return true;
-}
-
-void BtnOnClickListListener::BtnOnListData(UIView& view)
-{
- index_ = view.GetViewIndex();
- List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();
- ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();
- for (uint16_t i = 0; i < index_; i++) {
- node = node->next_;
- }
- sliceId_ = node->data_.sliceId;
-}
-
-void PlayersCaseListAdapter::LabelButtonSet()
-{
- if (item == nullptr) {
- return;
- }
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
-}
-
-UIView *PlayersCaseListAdapter::GetView(UIView* inView, int16_t index)
-{
- List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();
- if (playersCaseList.IsEmpty()) {
- return nullptr;
- }
- if ((index > playersCaseList.Size() - 1) || (index < 0)) {
- return nullptr;
- }
- if (inView == nullptr) {
- item = new UILabelButton();
- if (item == nullptr) {
- return nullptr;
- }
- item->SetPosition(0, 0);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::INACTIVE);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::INACTIVE);
- item->Resize(HORIZONTAL_RESOLUTION, TESTCASE_BUTTON_HEIGHT);
- } else {
- item = static_cast<UILabelButton*>(inView);
- }
- ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();
- for (uint16_t i = 0; i < index; i++) {
- node = node->next_;
- }
- if (listener == nullptr) {
- listener = new BtnOnClickListListener();
- if (listener == nullptr) {
- return nullptr;
- }
- item->SetOnClickListener(listener);
- } else {
- item->SetOnClickListener(listener);
- }
- std::string strSongName = node->data_.sliceId;
- std::string pureName = strSongName.substr(0, strSongName.rfind("."));
- const char *songName = pureName.c_str();
- item->SetText(songName);
- item->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); // 24: means font size
- item->SetViewIndex(index);
- item->SetAlign(TEXT_ALIGNMENT_CENTER);
- item->SetLabelPosition(24, 0); // 24: lable x-coordinate
- LabelButtonSet();
- return item;
-}
-} // namespace OHOS
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: QrcodeConnModel.cpp\r
- * Author:\r
- * Create: 2025-04-24\r
- */\r
-\r
-#include "qrcode_conn/QrcodeConnModel.h"\r
-\r
-namespace OHOS {\r
-QrcodeConnModel::QrcodeConnModel() {}\r
-\r
-QrcodeConnModel::~QrcodeConnModel() {}\r
-\r
-QrcodeConnModel &QrcodeConnModel::GetInstance()\r
-{\r
- static QrcodeConnModel instance;\r
- return instance;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: QrcodeConnPresenter.cpp\r
- * Author:\r
- * Create: 2025-04-24\r
- */\r
-#include "qrcode_conn/QrcodeConnPresenter.h"\r
-#include "uiservice/ui_service.h"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_MENU(VIEW_QRCODE_CONN, QrcodeConnView, QrcodeConnPresenter, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_DEFAULT_IMG,\r
- "二维码连接");\r
-\r
-static QrcodeConnPresenter *g_QrcodeConnPresenter = nullptr;\r
-\r
-QrcodeConnPresenter::QrcodeConnPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnPresenter::QrcodeConnPresenter");\r
- g_QrcodeConnPresenter = this;\r
-}\r
-\r
-QrcodeConnPresenter::~QrcodeConnPresenter() {}\r
-\r
-QrcodeConnPresenter *QrcodeConnPresenter::GetInstance()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnPresenter GetInstance");\r
- return g_QrcodeConnPresenter;\r
-}\r
-\r
-bool QrcodeConnPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- std::string id = view.GetViewId();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnPresenter::OnDrag [%s]", id.c_str());\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- return false;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: QrcodeConnView.cpp\r
- * Author:\r
- * Create: 2025-04-24\r
- */\r
-\r
-#include "qrcode_conn/QrcodeConnView.h"\r
-#include "qrcode_conn/QrcodeConnPresenter.h"\r
-#include "qrcode_conn/QrcodeConnModel.h"\r
-#include "bluetooth/BluetoothModel.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-static const uint32_t QRCODE_POS_X = 76;\r
-static const uint32_t QRCODE_POS_Y = 76;\r
-static const uint32_t QRCODE_WIDTH = 282;\r
-static const uint32_t QRCODE_HEIGHT = 282;\r
-static const uint32_t PAD_SIZE = 10;\r
-\r
-static QrcodeConnView *g_pQrcodeConnView = nullptr;\r
-\r
-QrcodeConnView::QrcodeConnView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnView::QrcodeConnView");\r
- g_pQrcodeConnView = this;\r
-}\r
-\r
-QrcodeConnView::~QrcodeConnView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnView::~QrcodeConnView");\r
- g_pQrcodeConnView = nullptr;\r
-}\r
-\r
-QrcodeConnView *QrcodeConnView::GetInstance()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnView::GetInstance");\r
- return g_pQrcodeConnView;\r
-}\r
-\r
-void QrcodeConnView::InitView()\r
-{\r
- if (group_ == nullptr) {\r
- group_ = new UIScrollView();\r
- group_->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- group_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
- }\r
- if (qrcode_ == nullptr) {\r
- qrcode_ = new UIQrcode();\r
- }\r
- qrcode_->SetPosition(QRCODE_POS_X, QRCODE_POS_Y, QRCODE_WIDTH, QRCODE_HEIGHT);\r
- qrcode_->SetQrcodeInfo(BluetoothModel::GetInstance()->getWatchName());\r
- qrcode_->SetStyle(STYLE_PADDING_LEFT, PAD_SIZE);\r
- qrcode_->SetStyle(STYLE_PADDING_RIGHT, PAD_SIZE);\r
- qrcode_->SetStyle(STYLE_PADDING_TOP, PAD_SIZE);\r
- qrcode_->SetStyle(STYLE_PADDING_BOTTOM, PAD_SIZE);\r
- group_->Add(qrcode_);\r
- UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::QrcodeConnPresenter::GetInstance();\r
- group_->SetOnDragListener(dragListener);\r
- // 更新\r
- group_->SetVisible(true);\r
- AddViewToRootContainer(group_);\r
- GetRootContainer()->Invalidate();\r
-}\r
-\r
-void QrcodeConnView::DeInit()\r
-{\r
- if (group_ != nullptr) {\r
- group_->RemoveAll();\r
- delete group_;\r
- group_ = nullptr;\r
- }\r
- if (qrcode_ != nullptr) {\r
- delete qrcode_;\r
- qrcode_ = nullptr;\r
- }\r
-}\r
-\r
-void QrcodeConnView::OnStart()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnView::OnStart");\r
- InitView();\r
-}\r
-\r
-void QrcodeConnView::OnStop()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "QrcodeConnView::OnStop");\r
- DeInit();\r
- return;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: RebootDevice View\r
- * Create: 2022-04-28\r
- */\r
-\r
-#include "rebootdevice/RebootDeviceView.h"\r
-#include "PageTransitionMgr.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "rebootdevice/RebootPresenter.h"\r
-\r
-namespace OHOS {\r
-static RebootDeviceView *g_pRebootDeviceView{nullptr};\r
-RebootDeviceView::RebootDeviceView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootDeviceView::RebootDeviceView");\r
- g_pRebootDeviceView = this;\r
-}\r
-\r
-RebootDeviceView::~RebootDeviceView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootDeviceView::~RebootDeviceView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- }\r
- delete rebootDeviceLabel;\r
- rebootDeviceLabel = nullptr;\r
- delete rebootDeviceButton;\r
- rebootDeviceButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_pRebootDeviceView = nullptr;\r
-}\r
-\r
-RebootDeviceView *RebootDeviceView::GetInstance()\r
-{\r
- return g_pRebootDeviceView;\r
-}\r
-\r
-bool RebootDeviceView::ShowUpRebootDeviceView()\r
-{\r
- if (rebootDeviceLabel == nullptr) {\r
- rebootDeviceLabel = new UILabel();\r
- if (rebootDeviceLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpRebootDeviceView rebootDeviceLabel new fail");\r
- return false;\r
- }\r
- }\r
- rebootDeviceLabel->SetPosition(152, 272, 150, 45); // 152:x 272:y 150:width 45:height\r
- rebootDeviceLabel->SetText("重启");\r
- rebootDeviceLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data\r
- rebootDeviceLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- rebootDeviceLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-\r
- if (rebootDeviceButton == nullptr) {\r
- rebootDeviceButton = new UIButton();\r
- if (rebootDeviceButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpRebootDeviceView rebootDeviceButton new fail");\r
- return false;\r
- }\r
- }\r
- rebootDeviceButton->SetPosition(172, 147, 110, 110); // 172:x 147:y 110:width 110:height\r
- rebootDeviceButton->SetImageSrc(PNG_REBOOT_BUTTON_IMAGE, PNG_REBOOT_BUTTON_IMAGE);\r
- rebootDeviceButton->SetViewId(REBOOTDEVICE_BUTTON);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::RebootPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance nullptr");\r
- return false;\r
- }\r
- rebootDeviceButton->SetOnClickListener(clickListener);\r
- return true;\r
-}\r
-\r
-UIViewGroup *RebootDeviceView::InitShowUpView(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootDeviceView::InitShowUpView");\r
- bool ret;\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0); // 0:x; 0:y\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- ret = ShowUpRebootDeviceView();\r
- if (!ret) {\r
- return nullptr;\r
- }\r
- group->Add(rebootDeviceLabel);\r
- group->Add(rebootDeviceButton);\r
-\r
- UIView::OnDragListener *rebootDeviceDragListener = (UIView::OnDragListener *)OHOS::RebootPresenter::GetInstance();\r
- if (rebootDeviceDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rebootDeviceDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (!PageTransitionMgr::GetInstance().CanSlideBack()) { // support default slide back firstly\r
- group->SetOnDragListener(rebootDeviceDragListener);\r
- }\r
- group->SetViewId(REBOOTDEVICE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Reboot Model\r
- * Create: 2022-04-28\r
- */\r
-\r
-#include "rebootdevice/RebootModel.h"\r
-#include "dfx_reboot.h"\r
-\r
-namespace OHOS {\r
-RebootModel::RebootModel() {}\r
-\r
-RebootModel::~RebootModel() {}\r
-\r
-RebootModel *RebootModel::GetInstance(void)\r
-{\r
- static RebootModel instance;\r
- return &instance;\r
-}\r
-\r
-int16_t RebootModel::GetSelectView(void)\r
-{\r
- return selectView;\r
-}\r
-\r
-void RebootModel::SetSelectViewId(int16_t value)\r
-{\r
- selectView = value;\r
-}\r
-\r
-bool RebootModel::GetExitsView(void)\r
-{\r
- return exitsView;\r
-}\r
-\r
-void RebootModel::SetExitsView(bool value)\r
-{\r
- exitsView = value;\r
-}\r
-\r
-void RebootModel::SoftRebootDevice(void)\r
-{\r
- uapi_system_reboot(SYSTEM_SOFT_REBOOT);\r
-}\r
-\r
-void RebootModel::ShutdownDevice(void)\r
-{\r
- uapi_system_shutdown(0);\r
-}\r
-\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Reboot Presenter
- * Create: 2022-04-28
- */
-
-#include "rebootdevice/RebootPresenter.h"
-#include "rebootdevice/RebootView.h"
-#include "rebootdevice/RebootModel.h"
-#include "drag_event.h"
-#include "wearable_log.h"
-#include "NativeRegisterManager.h"
-
-namespace OHOS {
-
-REGIST_SLICE(VIEW_REBOOT, RebootView, RebootPresenter);
-
-static RebootPresenter *g_pRebootPresenter = nullptr;
-
-RebootPresenter::RebootPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::RebootPresenter");
- g_pRebootPresenter = this;
-}
-
-RebootPresenter::~RebootPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::~RebootPresenter");
- g_pRebootPresenter = nullptr;
-}
-
-RebootPresenter *RebootPresenter::GetInstance()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter GetInstance");
- return g_pRebootPresenter;
-}
-
-bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event)
-{
- UNUSED(event);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");
- if (strcmp(view.GetViewId(), REBOOT_BUTTON) == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTVIEW, REBOOTDEVICEVIEW);
- } else if (strcmp(view.GetViewId(), SHUTDOWN_BUTTON) == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTVIEW, SHUTDOWNDEVICEVIEW);
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_BUTTON) == 0) {
- // 重启
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick");
- RebootModel::GetInstance()->SoftRebootDevice();
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_BUTTON) == 0) {
- // 关机
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SHUTDOWNDEVICE_BUTTON OnClick");
- RebootModel::GetInstance()->ShutdownDevice();
- }
- return true;
-}
-
-bool RebootPresenter::OnDrag(UIView& view, const DragEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::OnDrag");
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- if (strcmp(view.GetViewId(), REBOOT_VIEW) == 0) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_VIEW) == 0) {
- if (RebootModel::GetInstance()->GetExitsView() == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTDEVICEVIEW, REBOOTVIEW);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
- RebootModel::GetInstance()->SetExitsView(false);
- }
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_VIEW) == 0) {
- if (RebootModel::GetInstance()->GetExitsView() == 0) {
- RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, REBOOTVIEW);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
- RebootModel::GetInstance()->SetExitsView(false);
- }
- }
- }
- return true;
-}
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Reboot View
- * Create: 2022-04-28
- */
-
-#include "rebootdevice/RebootView.h"
-#include "PageTransitionMgr.h"
-#include "rebootdevice/RebootModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "rebootdevice/RebootPresenter.h"
-
-namespace OHOS {
-static RebootView *g_pRebootView{nullptr};
-RebootView::RebootView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::RebootView");
- preProcessView[REBOOTVIEW] = &RebootView::ChangeRebootView;
- preProcessView[REBOOTDEVICEVIEW] = &RebootView::ChangeRebootDeviceView;
- preProcessView[SHUTDOWNDEVICEVIEW] = &RebootView::ChangeShutdownDeviceView;
- g_pRebootView = this;
-}
-
-RebootView::~RebootView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::~RebootView");
- if (group != nullptr) {
- group->RemoveAll();
- }
- delete rebootLabel;
- rebootLabel = nullptr;
- delete rebootButton;
- rebootButton = nullptr;
- delete shutdownLabel;
- shutdownLabel = nullptr;
- delete shutdownButton;
- shutdownButton = nullptr;
- delete group;
- group = nullptr;
- g_pRebootView = nullptr;
-}
-
-RebootView *RebootView::GetInstance()
-{
- return g_pRebootView;
-}
-
-void RebootView::OnStart()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::~OnStart");
- if (RebootModel::GetInstance()->GetSelectView() == REBOOT) {
- ChangeView(REBOOT_MAX, REBOOTVIEW);
- } else if (RebootModel::GetInstance()->GetSelectView() == REBOOTDEVICE) {
- ChangeView(REBOOT_MAX, REBOOTDEVICEVIEW);
- RebootModel::GetInstance()->SetSelectViewId(REBOOT);
- } else if (RebootModel::GetInstance()->GetSelectView() == SHUTDOWNDEVICE) {
- ChangeView(REBOOT_MAX, SHUTDOWNDEVICEVIEW);
- RebootModel::GetInstance()->SetSelectViewId(REBOOT);
- }
- return;
-}
-
-bool RebootView::ShowUpRebootView()
-{
- if (rebootLabel == nullptr) {
- rebootLabel = new UILabel();
- if (rebootLabel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpRebootView rebootLabel new fail");
- return false;
- }
- }
- rebootLabel->SetPosition(49, 272, 150, 45); // 49:x 272:y 150:width 45:height
- rebootLabel->SetText("重启");
- rebootLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data
- rebootLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
- rebootLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-
- if (rebootButton == nullptr) {
- rebootButton = new UIButton();
- if (rebootButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpRebootView rebootButton new fail");
- return false;
- }
- }
- rebootButton->SetPosition(69, 147, 110, 110); // 69:x 147:y 110:width 110:height
- rebootButton->SetImageSrc(PNG_REBOOT_BUTTON_IMAGE, PNG_REBOOT_BUTTON_IMAGE);
- rebootButton->SetViewId(REBOOT_BUTTON);
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::RebootPresenter::GetInstance();
- if (clickListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance nullptr");
- return false;
- }
- rebootButton->SetOnClickListener(clickListener);
- return true;
-}
-
-bool RebootView::ShowUpShutdownView()
-{
- if (shutdownLabel == nullptr) {
- shutdownLabel = new UILabel();
- if (shutdownLabel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpShutdownView shutdownLabel new fail");
- return false;
- }
- }
- shutdownLabel->SetPosition(255, 272, 150, 45); // 255:x 272:y 150:width 45:height
- shutdownLabel->SetText("关机");
- shutdownLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data
- shutdownLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
- shutdownLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-
- if (shutdownButton == nullptr) {
- shutdownButton = new UIButton();
- if (shutdownButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpShutdownView shutdownButton new fail");
- return false;
- }
- }
- shutdownButton->SetPosition(275, 147, 110, 110); // 275:x 147:y 110:width 110:height
- shutdownButton->SetImageSrc(PNG_SHUTDOWN_BUTTON_IMAGE, PNG_SHUTDOWN_BUTTON_IMAGE);
- shutdownButton->SetViewId(SHUTDOWN_BUTTON);
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::RebootPresenter::GetInstance();
- if (clickListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance nullptr");
- return false;
- }
- shutdownButton->SetOnClickListener(clickListener);
- return true;
-}
-
-UIViewGroup *RebootView::InitShowUpView(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::InitShowUpView");
- bool ret;
- if (group == nullptr) {
- group = new UIViewGroup();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
- return nullptr;
- }
- group->SetPosition(0, 0); // 0:x; 0:y
- group->SetWidth(HORIZONTAL_RESOLUTION);
- group->SetHeight(VERTICAL_RESOLUTION);
- }
- ret = ShowUpRebootView();
- if (!ret) {
- return nullptr;
- }
- group->Add(rebootLabel);
- group->Add(rebootButton);
-
- ret = ShowUpShutdownView();
- if (!ret) {
- return nullptr;
- }
- group->Add(shutdownLabel);
- group->Add(shutdownButton);
- UIView::OnDragListener *rebootDragListener = (UIView::OnDragListener *)OHOS::RebootPresenter::GetInstance();
- if (rebootDragListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rebootDragListener GetInstance fail");
- return nullptr;
- }
- if (!PageTransitionMgr::GetInstance().CanSlideBack()) { // support default slide back firstly
- group->SetOnDragListener(rebootDragListener);
- }
- group->SetViewId(REBOOT_VIEW);
- group->SetDraggable(true);
- group->SetTouchable(true);
- return group;
-}
-
-bool RebootView::ChangeRebootView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- // init view
- UIViewGroup *viewGroup = InitShowUpView();
- if (viewGroup == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "viewGroup nullptr fail");
- return false;
- }
- container[thisView] = viewGroup;
- AddViewToRootContainer(container[thisView]);
- return true;
-}
-
-bool RebootView::ChangeRebootDeviceView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeRebootDeviceView");
- rebootDeviceView = new RebootDeviceView();
- if (rebootDeviceView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rebootDeviceView new fail");
- return false;
- }
- // init view
- UIViewGroup *viewGroup = rebootDeviceView->InitShowUpView();
- if (viewGroup == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "viewGroup nullptr fail");
- return false;
- }
- container[thisView] = viewGroup;
- AddViewToRootContainer(container[thisView]);
- }
- return true;
-}
-
-bool RebootView::ChangeShutdownDeviceView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeShutdownDeviceView");
- shutdownDeviceView = new ShutdownDeviceView();
- if (shutdownDeviceView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "shutdownDeviceView new fail");
- return false;
- }
- // init view
- UIViewGroup *viewGroup = shutdownDeviceView->InitShowUpView();
- if (viewGroup == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "viewGroup nullptr fail");
- return false;
- }
- container[thisView] = viewGroup;
- AddViewToRootContainer(container[thisView]);
- }
- return true;
-}
-
-bool RebootView::CheckViewParam(int16_t hideView, int16_t showView)
-{
- if (showView < 0 || showView >= REBOOT_MAX) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RebootView::CheckViewParam showView err.");
- return false;
- }
-
- if (hideView < 0 || hideView > REBOOT_MAX) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RebootView::CheckViewParam hideView err.");
- return false;
- }
-
- return true;
-}
-
-void RebootView::ChangeView(int16_t hideView, int16_t showView)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::ChangeView %d, %d", hideView, showView);
-
- if (!CheckViewParam(hideView, showView)) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RebootView::CheckViewParam failed.");
- return;
- }
-
- PreprosssChangeView tmpPreProcessView = preProcessView[showView];
-
- if (!(this->*tmpPreProcessView)(hideView, showView)) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RebootView::ChangeView %d %dfailed", showView, hideView);
- return;
- }
- if (hideView != REBOOT_MAX) {
- if (container[hideView] == nullptr) {
- return;
- }
- container[hideView]->SetVisible(false);
- }
- container[showView]->SetVisible(true);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView:: ChangeView end!!!%d", showView);
- Draw();
-}
-}
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ShutdownDevice View\r
- * Create: 2022-04-28\r
- */\r
-\r
-#include "rebootdevice/ShutdownDeviceView.h"\r
-#include "PageTransitionMgr.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "rebootdevice/RebootPresenter.h"\r
-\r
-namespace OHOS {\r
-static ShutdownDeviceView *g_pShutdownDeviceView{nullptr};\r
-ShutdownDeviceView::ShutdownDeviceView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShutdownDeviceView::ShutdownDeviceView");\r
- g_pShutdownDeviceView = this;\r
-}\r
-\r
-ShutdownDeviceView::~ShutdownDeviceView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShutdownDeviceView::~ShutdownDeviceView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- }\r
- delete shutdownDeviceLabel;\r
- shutdownDeviceLabel = nullptr;\r
- delete shutdownDeviceButton;\r
- shutdownDeviceButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- g_pShutdownDeviceView = nullptr;\r
-}\r
-\r
-ShutdownDeviceView *ShutdownDeviceView::GetInstance()\r
-{\r
- return g_pShutdownDeviceView;\r
-}\r
-\r
-bool ShutdownDeviceView::ShowUpShutdownDeviceView()\r
-{\r
- if (shutdownDeviceLabel == nullptr) {\r
- shutdownDeviceLabel = new UILabel();\r
- if (shutdownDeviceLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpShutdownDeviceView shutdownDeviceLabel new fail");\r
- return false;\r
- }\r
- }\r
- shutdownDeviceLabel->SetPosition(152, 272, 150, 45); // 152:x 272:y 150:width 45:height\r
- shutdownDeviceLabel->SetText("关机");\r
- shutdownDeviceLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data\r
- shutdownDeviceLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- shutdownDeviceLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-\r
- if (shutdownDeviceButton == nullptr) {\r
- shutdownDeviceButton = new UIButton();\r
- if (shutdownDeviceButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowUpShutdownDeviceView shutdownDeviceButton new fail");\r
- return false;\r
- }\r
- }\r
- shutdownDeviceButton->SetPosition(172, 147, 110, 110); // 172:x 147:y 110:width 110:height\r
- shutdownDeviceButton->SetImageSrc(PNG_SHUTDOWN_BUTTON_IMAGE, PNG_SHUTDOWN_BUTTON_IMAGE);\r
- shutdownDeviceButton->SetViewId(SHUTDOWNDEVICE_BUTTON);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::RebootPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance nullptr");\r
- return false;\r
- }\r
- shutdownDeviceButton->SetOnClickListener(clickListener);\r
- return true;\r
-}\r
-\r
-UIViewGroup *ShutdownDeviceView::InitShowUpView(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShutdownDeviceView::InitShowUpView");\r
- bool ret;\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0); // 0:x; 0:y\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
-\r
- ret = ShowUpShutdownDeviceView();\r
- if (!ret) {\r
- return nullptr;\r
- }\r
- group->Add(shutdownDeviceLabel);\r
- group->Add(shutdownDeviceButton);\r
- UIView::OnDragListener *rebootDragListener = (UIView::OnDragListener *)OHOS::RebootPresenter::GetInstance();\r
- if (rebootDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rebootDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (!PageTransitionMgr::GetInstance().CanSlideBack()) { // support default slide back firstly\r
- group->SetOnDragListener(rebootDragListener);\r
- }\r
- group->SetViewId(SHUTDOWNDEVICE_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardAdapter.cpp
- * Author:
- * Create: 2021-09-18
- */
-
-#include "set_card/SetCardAdapter.h"
-
-namespace OHOS {
-SetCardAdapter::SetCardAdapter() {}
-
-SetCardAdapter::~SetCardAdapter()
-{
- listData_.clear();
-}
-
-uint16 SetCardAdapter::GetCount(void)
-{
- return listData_.size();
-}
-
-void SetCardAdapter::ClearItem(void)
-{
- listData_.clear();
-}
-
-UIView *SetCardAdapter::GetView(UIView *inView, int16 index)
-{
- if (index >= (int16)listData_.size() || index < 0) {
- return nullptr;
- }
-
- std::list<CardInfo>::iterator it = listData_.begin();
- for (int i = 0; i < index; i++) {
- it++;
- }
-
- SetCardItem *item = nullptr;
- if (inView == nullptr) {
- item = new SetCardItem();
- if (item == nullptr) {
- return nullptr;
- }
- } else {
- item = static_cast<SetCardItem *>(inView);
- }
-
- item->SetItemInfo(*it);
- item->SetViewIndex(index);
- item->SetOnClickListener(itemClickListener_);
- return item;
-}
-
-void SetCardAdapter::AddListItem(const CardInfo &item)
-{
- listData_.push_back(item);
-}
-} // namespace OHOS
+++ /dev/null
-/**\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description.\r
- * Author:\r
- * Create:\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "set_card/SetCardDeleteView.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-\r
-SetCardDeleteView::SetCardDeleteView(SetCardPresenter *presenter)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardDeleteView::SetCardDeleteView");\r
- presenter_ = presenter;\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- InitView();\r
- Add(&confirmBtn);\r
- Add(&cancelBtn);\r
-}\r
-\r
-SetCardDeleteView::~SetCardDeleteView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardDeleteView::~SetCardDeleteView");\r
- Remove(&confirmBtn);\r
- Remove(&cancelBtn);\r
-}\r
-\r
-bool SetCardDeleteView::InitView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardDeleteView::InitView");\r
- confirmBtn.SetPosition(184, 118);\r
- confirmBtn.Resize(86, 50);\r
- confirmBtn.SetViewId(SET_CARD_DEL_CONFIRM);\r
- confirmBtn.SetText("删除");\r
- confirmBtn.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- confirmBtn.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- confirmBtn.SetOnClickListener(presenter_);\r
-\r
- cancelBtn.SetPosition(186, 231);\r
- cancelBtn.Resize(82, 50);\r
- cancelBtn.SetViewId(SET_CARD_DEL_CANCEL);\r
- cancelBtn.SetText("取消");\r
- cancelBtn.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- cancelBtn.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- cancelBtn.SetOnClickListener(presenter_);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-#include "set_card/SetCardItem.h"\r
-#include "set_card/SetCardPresenter.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
- SetCardItem::SetCardItem()\r
- {\r
- SetPosition(0, 0, 454, 280);\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- SetUpChild();\r
- Add(&cardImg_);\r
- }\r
-\r
- SetCardItem::~SetCardItem()\r
- {\r
- Remove(&cardImg_);\r
- }\r
-\r
- void SetCardItem::SetUpChild()\r
- {\r
- cardImg_.SetPosition(87, 0);\r
- cardImg_.Resize(280, 280);\r
- cardImg_.SetResizeMode(UIImageView::FILL);\r
- cardImg_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
- }\r
-\r
- void SetCardItem::SetItemInfo(const CardInfo &cardInfo)\r
- {\r
- cardInfo_ = cardInfo;\r
- cardImg_.SetSrc(cardInfo.cardImg);\r
- cardImg_.SetViewId(SET_CARD_IMG);\r
- }\r
-\r
- void SetCardItem::SetOnClickListener(OnClickListener *onClickListener)\r
- {\r
- cardImg_.SetOnClickListener(onClickListener);\r
- cardImg_.SetTouchable(true);\r
- }\r
-};\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardModel.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "set_card/SetCardModel.h"
-#include "main/MainModel.h"
-#include "kv_store.h"
-#include "securec.h"
-
-namespace OHOS {
- SetCardModel::SetCardModel() {}
-
- SetCardModel::~SetCardModel() {}
-
- SetCardModel &SetCardModel::GetInstance()
- {
- static SetCardModel instance;
- return instance;
- }
-
- void SetCardModel::InitCardShowList(void)
- {
- MainModel::GetInstance().InitCardSettings();
- uint8_t cardCount = MainModel::GetInstance().GetCardSettingCount();
- CardId *cardSettings = MainModel::GetInstance().GetCardSettings();
- cardShowCount = 0;
- for (uint8_t i = 0; i < cardCount; i++) {
- if (cardSettings[i] == WATCH_FACE) {
- continue;
- }
- cardShowList[cardShowCount++] = cardSettings[i];
- }
- }
-
- uint8_t *SetCardModel::GetCardShowList(void)
- {
- return cardShowList;
- }
-
- uint8_t SetCardModel::GetCardShowCount(void) const
- {
- return cardShowCount;
- }
-
- void SetCardModel::SetSelectedCardIndex(uint8_t cardIndex)
- {
- selectedCardIndex = cardIndex;
- }
-
- uint8_t SetCardModel::GetSelectedCardIndex(void) const
- {
- return selectedCardIndex;
- }
-
- void SetCardModel::DeleteCardSetting(void)
- {
- MainModel::GetInstance().DeleteCardSetting(selectedCardIndex);
- }
-
- void SetCardModel::SetSelectedCard(uint8_t cardId)
- {
- selectedCardId = cardId;
- }
-
- uint8_t SetCardModel::GetSelectedCard(void)
- {
- return selectedCardId;
- }
-}
+++ /dev/null
-/**\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description.\r
- * Author:\r
- * Create:\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "set_card/SetCardNoCardView.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-\r
-SetCardNoCardView::SetCardNoCardView(SetCardPresenter *presenter)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardNoCardView::SetCardNoCardView");\r
- presenter_ = presenter;\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- InitView();\r
- Add(&addBtn);\r
-}\r
-\r
-SetCardNoCardView::~SetCardNoCardView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardNoCardView::~SetCardNoCardView");\r
- Remove(&addBtn);\r
-}\r
-\r
-bool SetCardNoCardView::InitView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardNoCardView::InitView");\r
- addBtn.SetPosition(184, 118);\r
- addBtn.Resize(86, 50);\r
- addBtn.SetViewId(SET_CARD_ADD);\r
- addBtn.SetText("添加");\r
- addBtn.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- addBtn.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- addBtn.SetOnClickListener(presenter_);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardPresenter.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "set_card/SetCardView.h"
-#include "set_card/SetCardModel.h"
-#include "set_card/SetCardPresenter.h"
-#include "hal_tick.h"
-#include "NativeRegisterManager.h"
-
-
-namespace OHOS {
-
-REGIST_SLICE(VIEW_SET_CARD, SetCardView, SetCardPresenter);
-
- SetCardPresenter::SetCardPresenter()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::SetCardPresenter");
- model = &SetCardModel::GetInstance();
- ResetTickTimer();
- }
-
- SetCardPresenter::~SetCardPresenter()
- {
- }
-
- bool SetCardPresenter::OnClick(UIView &view, const ClickEvent &event)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::OnClick");
- if (strcmp(view.GetViewId(), SET_CARD_ADD) == 0) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::SET_CARD_ADD");
- NativeAbility::GetInstance().ChangeSlice(VIEW_ADD_CARD);
- } else if (strcmp(view.GetViewId(), SET_CARD_DEL) == 0) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::SET_CARD_DEL");
- view_->SaveSelectCardIndex();
- view_->ShowDeleteView(true);
- } else if (strcmp(view.GetViewId(), SET_CARD_DEL_CONFIRM) == 0) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::SET_CARD_DEL_CONFIRM");
- model->DeleteCardSetting();
- view_->ShowDeleteView(false);
- view_->RefreshCardList();
- } else if (strcmp(view.GetViewId(), SET_CARD_DEL_CANCEL) == 0) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::SET_CARD_DEL_CANCEL");
- view_->ShowDeleteView(false);
- } else if (strcmp(view.GetViewId(), SET_CARD_IMG) == 0) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::SET_CARD_IMG");
- GoToMainView();
- }
- ResetTickTimer();
- return true;
- }
-
- void SetCardPresenter::OnScrollStart(int16_t index, UIView *view)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::OnScrollStart index = %d", index);
- return;
- }
-
- void SetCardPresenter::OnScrollEnd(int16_t index, UIView *view)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::OnScrollEnd index = %d", index);
- if (view == nullptr) {
- return;
- }
- SetSelectedCardIndex(index);
- ResetTickTimer();
- }
-
- void SetCardPresenter::OnItemSelected(int16_t index, UIView* view)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::OnItemSelected index = %d", index);
- if (view == nullptr) {
- return;
- }
- }
- void SetCardPresenter::InitCardShowList(void)
- {
- model->InitCardShowList();
- }
-
- uint8_t *SetCardPresenter::GetCardShowList(void)
- {
- return model->GetCardShowList();
- }
-
- uint8_t SetCardPresenter::GetCardShowCount(void) const
- {
- return model->GetCardShowCount();
- }
-
- void SetCardPresenter::SetSelectedCard(uint8_t cardId)
- {
- model->SetSelectedCard(cardId);
- }
-
- uint8_t SetCardPresenter::GetSelectedCard(void)
- {
- return model->GetSelectedCard();
- }
-
- void SetCardPresenter::SetSelectedCardIndex(uint8_t cardIndex)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::SetSelectedCardIndex %d", cardIndex);
- model->SetSelectedCardIndex(cardIndex);
- }
-
- void SetCardPresenter::GoToMainView(void)
- {
- uint8_t *cardSettings = model->GetCardShowList();
- uint8_t selectIndex = model->GetSelectedCardIndex();
- if (selectIndex < model->GetCardShowCount()) {
- const CardInfo *info = MainModel::GetInstance().GetCardInfo(static_cast<CardId>(cardSettings[selectIndex]));
- if (info != nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardPresenter::GoToMainView %d", info->id);
- MainModel::GetInstance().SetFromSetCardView(true);
- MainModel::GetInstance().SetFromCardId(info->id);
- }
- }
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- }
-
- void SetCardPresenter::OnTickEvent()
- {
- uint64_t current_time = static_cast<uint64_t>(HALTick::GetInstance().GetTime());
-
- if ((startTime != 0) && (current_time - startTime > MISS_SET_CARD_OPERATION_TIME)) {
- GoToMainView();
- }
- }
-
- void SetCardPresenter::ResetTickTimer(void)
- {
- startTime = static_cast<uint64_t>(HALTick::GetInstance().GetTime());
-
- }
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetCardView.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include <string>
-#include "set_card/SetCardView.h"
-#include "set_card/SetCardPresenter.h"
-
-namespace OHOS {
-SetCardView::SetCardView():contentList_(UIList::HORIZONTAL)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardView::SetCardView");
-}
-
-SetCardView::~SetCardView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardView::~SetCardView");
- if (deleteView_ != nullptr) {
- delete deleteView_;
- deleteView_ = nullptr;
- }
-
- if (noCardView_ != nullptr) {
- delete noCardView_;
- noCardView_ = nullptr;
- }
-
- if (setCardAdapter_ != nullptr) {
- delete setCardAdapter_;
- setCardAdapter_ = nullptr;
- }
-}
-
-void SetCardView::OnStart()
-{
- setCardAdapter_ = new SetCardAdapter();
- setCardAdapter_->SetItemClickListener(presenter_);
- SetUpListInfo();
- SetUpListView();
- SetUpDeleteView();
- SetUpAddView();
- ShowDeleteView(false);
- if (setCardAdapter_->GetCount() == 0) {
- ShowAddView(true);
- }
-}
-
-void SetCardView::SetUpListInfo(void)
-{
- presenter_->InitCardShowList();
- uint8_t num = presenter_->GetCardShowCount();
- uint8_t *cardSettings = presenter_->GetCardShowList();
- uint8_t selectCardId = presenter_->GetSelectedCard();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpListInfo::selectCardId = %u", selectCardId);
- setCardAdapter_->ClearItem();
- for (uint8_t i = 0; i < num; i++) {
- const CardInfo *info = MainModel::GetInstance().GetCardInfo(
- static_cast<CardId>(cardSettings[i]));
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpListInfo::%d %s", info->id, info->cardImg);
- if (selectCardId == info->id) {
- presenter_->SetSelectedCardIndex(i);
- scrollIndex_ = i;
- presenter_->SetSelectedCard(MAX_CARD);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpListInfo::scrollIndex_ = %u", scrollIndex_);
- }
- setCardAdapter_->AddListItem(*info);
- }
-}
-
-void SetCardView::SetUpListView(void)
-{
- addImg_.SetPosition(187, 10);
- addImg_.Resize(80, 80);
- addImg_.SetResizeMode(UIImageView::FILL);
- addImg_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
- addImg_.SetSrc(PNG_SET_CARD_ADD);
- addImg_.SetViewId(SET_CARD_ADD);
- addImg_.SetVisible(false);
-
- contentList_.SetPosition(0, 92);
- contentList_.Resize(HORIZONTAL_RESOLUTION, 280);
- contentList_.SetScrollBlankSize(HORIZONTAL_RESOLUTION / 2);
- contentList_.SetSelectPosition(HORIZONTAL_RESOLUTION / 2);
- contentList_.SetDraggable(true);
- contentList_.SetThrowDrag(true);
- contentList_.EnableAutoAlign(true);
- contentList_.SetScrollStateListener(presenter_);
- contentList_.SetMaxScrollDistance(1000);
- contentList_.SetAdapter(setCardAdapter_);
- contentList_.SetVisible(false);
- contentList_.ScrollTo(scrollIndex_);
-
- delImg_.SetPosition(187, 374);
- delImg_.Resize(80, 80);
- delImg_.SetResizeMode(UIImageView::FILL);
- delImg_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
- delImg_.SetSrc(PNG_SET_CARD_DEL);
- delImg_.SetViewId(SET_CARD_DEL);
- delImg_.SetVisible(false);
-
- addImg_.SetTouchable(true);
- addImg_.SetOnClickListener(presenter_);
- delImg_.SetTouchable(true);
- delImg_.SetOnClickListener(presenter_);
-
- AddViewToRootContainer(&addImg_);
- AddViewToRootContainer(&contentList_);
- AddViewToRootContainer(&delImg_);
-}
-
-void SetCardView::SetUpDeleteView(void)
-{
- deleteView_ = new SetCardDeleteView(presenter_);
- if (deleteView_ == nullptr) {
- return;
- }
- deleteView_->SetVisible(false);
- AddViewToRootContainer(deleteView_);
-}
-
-void SetCardView::SetUpAddView(void)
-{
- noCardView_ = new SetCardNoCardView(presenter_);
- if (noCardView_ == nullptr) {
- return;
- }
- noCardView_->SetVisible(false);
- AddViewToRootContainer(noCardView_);
-}
-
-void SetCardView::ShowCardListView(bool show)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardView::ShowCardListView %u", show);
- if (show) {
- addImg_.SetVisible(true);
- contentList_.SetVisible(true);
- delImg_.SetVisible(true);
- } else {
- addImg_.SetVisible(false);
- contentList_.SetVisible(false);
- delImg_.SetVisible(false);
- }
-}
-
-void SetCardView::ShowDeleteView(bool show)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardView::ShowDeleteView %u", show);
- if (show) {
- ShowCardListView(false);
- deleteView_->SetVisible(true);
- } else {
- ShowCardListView(true);
- deleteView_->SetVisible(false);
- }
-}
-
-void SetCardView::ShowAddView(bool show)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCardView::ShowAddView %u", show);
- if (show) {
- ShowCardListView(false);
- noCardView_->SetVisible(true);
- } else {
- ShowCardListView(true);
- noCardView_->SetVisible(false);
- }
-}
-
-void SetCardView::RefreshCardList(void)
-{
- contentList_.RemoveAll();
- SetUpListInfo();
- contentList_.RefreshList();
- if (setCardAdapter_->GetCount() == 0) {
- ShowAddView(true);
- }
-}
-
-void SetCardView::SaveSelectCardIndex(void)
-{
- uint8_t cardIdex = contentList_.GetSelectView()->GetViewIndex();
- presenter_->SetSelectedCardIndex(cardIdex);
-}
-
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetDialModel.cpp
- * Author:
- * Create: 2021-11-23
- */
-#include <algorithm>
-#include "main/MainModel.h"
-#include "set_dial/SetDialModel.h"
-#include "kv_store.h"
-#include "securec.h"
-#include "dirent.h"
-#include "main/DialBinParser.h"
-#include "wearable_log.h"
-
-namespace OHOS {
- SetDialModel::SetDialModel() {}
-
- SetDialModel::~SetDialModel() {}
-
- SetDialModel &SetDialModel::GetInstance()
- {
- static SetDialModel instance;
- return instance;
- }
- void SetDialModel::LoadAllDial()
- {
- LoadAllDialFromRam(); // 导入在线表盘
- size_t dialSize = dialInfoList.size();
- size_t aodSize = aodDialInfoList.size();
- LoadAllDialFromFs(); // 导入离线表盘
- /* 只排序离线表盘 */
- std::sort(dialInfoList.begin() + dialSize, dialInfoList.end(), [](const SetDialInfo& f, const SetDialInfo& n) {
- return f.dialName < n.dialName;
- });
- std::sort(aodDialInfoList.begin() + aodSize,
- aodDialInfoList.end(),
- [](const SetDialInfo &f, const SetDialInfo &n) { return f.dialName < n.dialName; });
- }
-
- void SetDialModel::LoadAllDialFromRam()
- {
- for (uint8_t i = 0; i < MainModel::GetInstance().GetDialInfoNum(); i++) {
- const DialInfo *info = MainModel::GetInstance().GetDialInfo(i);
- if (info != nullptr) {
- SetDialInfo dialInfo{0};
- dialInfo.dialFlag = 0;
- dialInfo.id = i;
- dialInfo.dialName = info->dialName;
- dialInfo.imageFullName = info->dialImg;
- ImageInfo* imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(info->dialImg, false);
- if (info == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LoadAllDialFromRam loadimage %s fail",
- info->dialImg);
- continue;
- }
- dialInfo.preImageInfo = imageInfo;
- if (info->capability == DIAL_DISPLAY_CAPABILITY_NORMAL_ONLY) {
- dialInfoList.push_back(dialInfo);
- } else if (info->capability == DIAL_DISPLAY_CAPABILITY_AMBITIENT_ONLY) {
- aodDialInfoList.push_back(dialInfo);
- } else {
- dialInfoList.push_back(dialInfo);
- aodDialInfoList.push_back(dialInfo);
- }
- }
- }
- }
-
- void SetDialModel::LoadAllDialFromFs()
- {
- int ret;
- struct dirent *direntp;
-
- // 打开目录
- DIR *dirp = opendir(APP_DIAL_PATH);
- // 遍历文件
- if (dirp != nullptr) {
- while ((direntp = readdir(dirp)) != nullptr) {
- SetDialInfo dialInfo{0};
- int ret = ParseDialHeader(direntp->d_name, dialInfo);
- if (ret == 0) {
- if (dialInfo.capability == DIAL_DISPLAY_CAPABILITY_NORMAL_ONLY) {
- dialInfoList.push_back(dialInfo);
- } else if (dialInfo.capability == DIAL_DISPLAY_CAPABILITY_AMBITIENT_ONLY) {
- aodDialInfoList.push_back(dialInfo);
- } else {
- dialInfoList.push_back(dialInfo);
- aodDialInfoList.push_back(dialInfo);
- }
- }
- }
- }
- // 关闭目录
- closedir(dirp);
- return;
- }
-
- int32_t SetDialModel::ParseDialHeader(const std::string &dialFileName, SetDialInfo &dialInfo)
- {
- std::string dialFullName = APP_DIAL_PATH;
- dialFullName += "/";
- dialFullName += dialFileName;
- FILE *fp = fopen(dialFullName.c_str(), "rb");
- if (fp == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ParseDialHeader cannot open file: %s",
- dialFullName.c_str());
- return -1;
- }
- DialPreviewInfo preInfo{0};
- bool ret = DialBinParserManager::GetInstance()->GetDialPreviewInfo(dialFullName, fp, &preInfo);
- if (!ret) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetDialPreviewInfo %s fail",
- dialFullName.c_str());
- fclose(fp);
- return -1;
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ParseDialHeader dialFullName: %s",
- dialFullName.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ParseDialHeader dialName: %s",
- preInfo.dialName);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ParseDialHeader description: %s",
- preInfo.description);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ParseDialHeader previewImgId: %u",
- preInfo.imgId);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ParseDialHeader imageOffset: %u",
- preInfo.offset);
- ImageInfo *info = ImageCacheManager::GetInstance().LoadOneInMultiRes(
- preInfo.imgId, dialFullName, fp, false, preInfo.offset);
- if (info == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ParseDialHeader loadimage fail");
- fclose(fp);
- return -1;
- }
-
- dialInfo.dialFlag = 1;
- dialInfo.id = 0;
- dialInfo.resId = preInfo.imgId;
- dialInfo.dialFullName = dialFullName;
- dialInfo.dialName = preInfo.dialName;
- dialInfo.description = preInfo.description;
- dialInfo.preImageInfo = info;
- dialInfo.capability = preInfo.capability;
-
- fclose(fp);
- return 0;
- }
-
- void SetDialModel::SaveDialSetting(uint8_t pageIndex)
- {
- if (pageIndex >= dialInfoList.size()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialModel SaveDialSetting [%u %u]",
- pageIndex, dialInfoList.size());
- return;
- }
- DialSetting diagSetting;
- SetDialInfo &info = dialInfoList[pageIndex];
- diagSetting.dialFlag = info.dialFlag;
- diagSetting.dialId = info.id;
- diagSetting.dialFullName = info.dialFullName;
- MainModel::GetInstance().AddDialSetting(diagSetting);
- }
-
- size_t SetDialModel::GetDialCount(void)
- {
- return dialInfoList.size();
- }
-
- std::vector<SetDialInfo>& SetDialModel::GetDialInfo(void)
- {
- return dialInfoList;
- }
-
- std::vector<SetDialInfo>& SetDialModel::GetAmbientDialInfo(void)
- {
- return aodDialInfoList;
- }
-
- void SetDialModel::ClearDialInfo(void)
- {
- for (auto iter : dialInfoList) {
- if (iter.dialFlag) {
- ImageCacheManager::GetInstance().UnloadOneInMultiRes(iter.resId, iter.dialFullName);
- } else {
- ImageCacheManager::GetInstance().UnloadSingleRes(iter.imageFullName);
- }
- }
- dialInfoList.clear();
- aodDialInfoList.clear();
- }
-
- uint8_t SetDialModel::GetPageIndex(void)
- {
- uint8_t index = 0;
- DialSetting dialSetting = MainModel::GetInstance().GetDialSetting();
- for (auto iter : dialInfoList) {
- if (dialSetting.dialFlag) {
- if (strcmp(iter.dialFullName.c_str(), dialSetting.dialFullName.c_str()) == 0) {
- return index;
- }
- } else {
- if ((!iter.dialFlag) && (iter.id == dialSetting.dialId)) {
- return index;
- }
- }
- index++;
- }
- return 0;
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetDialPresenter.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "set_dial/SetDialView.h"
-#include "set_dial/SetDialModel.h"
-#include "set_dial/SetDialPresenter.h"
-#include "hal_tick.h"
-#include "NativeRegisterManager.h"
-
-
-namespace OHOS {
-namespace {
-SetDialPresenter *g_presenter = nullptr;
-} // anonymous namespace
-
-REGIST_SLICE(VIEW_SET_DIAL, SetDialView, SetDialPresenter);
-
- SetDialPresenter::SetDialPresenter()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialPresenter::SetDialPresenter");
- model = &SetDialModel::GetInstance();
- model->LoadAllDial();
- ResetTickTimer();
- g_presenter = this;
- specificSetting.dialFlag = 0;
- specificSetting.dialId = 0;
- }
-
- SetDialPresenter::~SetDialPresenter()
- {
- g_presenter = nullptr;
- }
-
- SetDialPresenter *SetDialPresenter::GetCurrentInstance()
- {
- return g_presenter;
- }
-
- void SetDialPresenter::SpecifyDialSetting(const DialSetting &setting)
- {
- isSpecific = true;
- specificSetting = setting;
- }
-
- void SetDialPresenter::OnClickAction(void)
- {
- uint8_t pageIndex = view_->GetCoverflowPage();
- model->SaveDialSetting(pageIndex);
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- }
-
- bool SetDialPresenter::OnClick(UIView &view, const ClickEvent &event)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialPresenter::OnClick");
- OnClickAction();
- return true;
- }
-
- bool SetDialPresenter::OnScroll()
- {
- view_->CoverflowViewScroll();
- return true;
- }
-
- void SetDialPresenter::OnScroll(UIRollerView* roller, std::string currentItemName, float currentItemAngle)
- {
- view_->RollerViewScroll(currentItemName, currentItemAngle);
- }
-
- size_t SetDialPresenter::GetDialCount(void)
- {
- return model->GetDialCount();
- }
-
- std::vector<SetDialInfo>& SetDialPresenter::GetDialInfo(void)
- {
- return model->GetDialInfo();
- }
-
- uint8_t SetDialPresenter::GetPageIndex(void)
- {
- return model->GetPageIndex();
- }
-
- void SetDialPresenter::OnTickEvent()
- {
- uint64_t current_time = static_cast<uint64_t>(HALTick::GetInstance().GetTime());
- if ((startTime != 0) && (current_time - startTime > MISS_DIAL_OPERATION_TIME)) {
- OnClickAction();
- }
- }
-
- void SetDialPresenter::OnStop()
- {
- model->ClearDialInfo();
- if (isSpecific) {
- MainModel::GetInstance().GetDialSetting() = specificSetting;
- MainModel::GetInstance().AddDialSetting(specificSetting);
- }
- }
-
- void SetDialPresenter::ResetTickTimer(void)
- {
- startTime = static_cast<uint64_t>(HALTick::GetInstance().GetTime());
- }
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SetDialView.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include <string>
-#include "set_dial/SetDialView.h"
-#include "set_dial/SetDialPresenter.h"
-#include "set_dial_style/SetDialStyleModel.h"
-
-namespace OHOS {
-SetDialView::SetDialView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialView::SetDialView");
-}
-
-SetDialView::~SetDialView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialView::~SetDialView");
-}
-
-void SetDialView::OnStart()
-{
- if (SetDialStyleModel::GetInstance().GetStyle() == DialStyle::COVERFLOW) {
- SetUpCoverflowView();
- } else {
- SetUpRollerView();
- }
-}
-
-void SetDialView::SetUpCoverflowView(void)
-{
- coverflow_.SetPosition(0, 0, GetRootContainer()->GetWidth(), GetRootContainer()->GetHeight());
- coverflow_.SetIntercept(true);
- coverflow_.SetOnCoverflowListener(presenter_);
- coverflow_.SetOnClickListener(presenter_);
- coverflow_.SetThrowDrag(true);
- std::vector<SetDialInfo> &dialInfo = presenter_->GetDialInfo();
- for (auto iter : dialInfo) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialView::SetUpCoverflowView %s",
- iter.dialName.c_str());
- coverflow_.Add(iter.dialName.c_str(), iter.preImageInfo);
- }
- lastIndex_ = presenter_->GetPageIndex();
- coverflow_.SetCurrentPage(lastIndex_);
-
- label_.SetPosition(127, 50, 200, 50);
- label_.SetTextColor(Color::White());
- label_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- label_.SetText(dialInfo[lastIndex_].dialName.c_str());
- label_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-
- AddViewToRootContainer(&coverflow_);
- AddViewToRootContainer(&label_);
-}
-
-void SetDialView::SetUpRollerView(void)
-{
- rollerView_.SetPosition(0, 0, GetRootContainer()->GetWidth(), GetRootContainer()->GetHeight());
- rollerView_.SetItemSize(150, 150); // 150: item size
- rollerView_.SetThrowDrag(true);
- rollerView_.SetItemPadding(80); // 80: item padding
- AddViewToRootContainer(&rollerView_);
-
- std::vector<SetDialInfo> &dialInfo = presenter_->GetDialInfo();
- for (auto iter : dialInfo) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialView::SetUpRollerView %s",
- iter.dialName.c_str());
- bool succ = rollerView_.AddItem(iter.dialName, iter.preImageInfo);
- rollerItemNum_ += succ ? 1 : 0;
- }
- float scalerCoef = 0.55;
- uint16_t w = GetRootContainer()->GetWidth();
- uint16_t h = GetRootContainer()->GetHeight();
- rollerView_.SetItemSize(w * scalerCoef, h * scalerCoef);
- lastIndex_ = presenter_->GetPageIndex();
- rollerView_.SetCurrentItem(dialInfo[lastIndex_].dialName);
- rollerView_.SetOnClickListener(presenter_);
- rollerView_.SetOnScrollListener(presenter_);
-
- label_.SetPosition(127, 50, 200, 50);
- label_.SetTextColor(Color::White());
- label_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- label_.SetText(dialInfo[lastIndex_].dialName.c_str());
- label_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- AddViewToRootContainer(&label_);
-}
-
-void SetDialView::CoverflowViewScroll(void)
-{
- int16_t contMidX = static_cast<int16_t>(GetRootContainer()->GetWidth() / DIVISOR_TWO);
- int16_t minOffset = contMidX;
- uint8_t newCenterIndex = lastIndex_;
- for (uint8_t i = 0; i < coverflow_.GetChildrenNumber(); i++) {
- Rect rect = coverflow_.GetViewByIndex(i)->GetOrigRect();
- int16_t x = rect.GetLeft();
- int16_t x1 = rect.GetRight();
- int16_t xMid = static_cast<int16_t>(x + (x1 - x + 1) / DIVISOR_TWO);
- int16_t distance = MATH_ABS(xMid - contMidX);
- if (distance < minOffset) {
- newCenterIndex = i;
- minOffset = distance;
- }
- }
- if (newCenterIndex != lastIndex_) {
- lastIndex_ = newCenterIndex;
- std::vector<SetDialInfo> &dialInfo = presenter_->GetDialInfo();
- label_.SetText(dialInfo[lastIndex_].dialName.c_str());
- }
-
- Rect curViewRect = coverflow_.GetViewByIndex(lastIndex_)->GetOrigRect();
- int16_t centerMid = curViewRect.GetLeft() + curViewRect.GetWidth() / DIVISOR_TWO;
- int16_t offset = MATH_ABS(contMidX - centerMid);
- if (offset > curViewRect.GetWidth() / DIVISOR_TWO) {
- label_.SetStyle(STYLE_TEXT_OPA, 0);
- } else {
- uint8_t alpha = (uint8_t)((1.0f - ((float)offset / (curViewRect.GetWidth() / DIVISOR_TWO))) * OPA_OPAQUE);
- label_.SetStyle(STYLE_TEXT_OPA, alpha);
- }
- presenter_->ResetTickTimer();
-}
-
-void SetDialView::RollerViewScroll(std::string currentItemName, float currentItemAngle)
-{
- const float baseAngle = 360.0;
- const float halfBaseAngle = 180.0;
- if (FloatMoreEqual(currentItemAngle, halfBaseAngle)) {
- currentItemAngle -= baseAngle;
- }
- if (currentItemAngle < 0) {
- currentItemAngle = -currentItemAngle;
- }
- float maxAngle = baseAngle / rollerItemNum_;
- float coef = 1.0 - 1.0 / (maxAngle) * currentItemAngle;
- label_.SetStyle(STYLE_TEXT_OPA, coef * OPA_OPAQUE);
- label_.SetText(currentItemName.c_str());
- std::vector<SetDialInfo> &dialInfo = presenter_->GetDialInfo();
- for (uint8_t i = 0; i < dialInfo.size(); ++i) {
- if (dialInfo[i].dialName == currentItemName) {
- lastIndex_ = i;
- }
- }
- presenter_->ResetTickTimer();
-}
-
-uint8_t SetDialView::GetCoverflowPage(void)
-{
- return lastIndex_;
-}
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
- * Description: SetDialStyleModel.cpp
- * Author:
- * Create: 2024-06-06
- */
-
-#include "set_dial_style/SetDialStyleModel.h"
-#include "kv_store.h"
-
-namespace OHOS {
-void SetDialStyleModel::SetStyle(DialStyle style)
-{
- int len = sizeof(values_) / sizeof(values_[0]);
- for (int i = 0; i < len; ++i) {
- if (values_[i].style == style) {
- UtilsSetValue(key_, values_[i].value);
- break;
- }
- }
-}
-
-DialStyle SetDialStyleModel::GetStyle()
-{
- int len = sizeof(values_) / sizeof(values_[0]);
- char temp[MAX_LEN];
- UtilsGetValue(key_, temp, MAX_LEN);
- for (int i = 0; i < len; ++i) {
- if (strcmp(temp, values_[i].value) == 0) {
- return values_[i].style;
- }
- }
- return DialStyle::COVERFLOW;
-}
-
-SetDialStyleModel::SetDialStyleModel()
-{
-}
-
-SetDialStyleModel::~SetDialStyleModel()
-{
-}
-} // OHOS
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
- * Description: SetDialStylePresenter.cpp
- * Author:
- * Create: 2024-06-06
- */
-
-#include "set_dial_style/SetDialStyleView.h"
-#include "set_dial_style/SetDialStyleModel.h"
-#include "set_dial_style/SetDialStylePresenter.h"
-#include "NativeRegisterManager.h"
-
-namespace OHOS {
-
-REGIST_SLICE(VIEW_SET_DIAL_STYLE, SetDialStyleView, SetDialStylePresenter);
-
-SetDialStylePresenter::SetDialStylePresenter()
-{
- Attach(&SetDialStyleModel::GetInstance());
-}
-
-SetDialStylePresenter::~SetDialStylePresenter()
-{
-}
-
-bool SetDialStylePresenter::OnClick(UIView &view, const ClickEvent &event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialStylePresenter::OnClick");
- view_->OnClick(view);
- return true;
-}
-
-bool SetDialStylePresenter::OnDrag(UIView& view, const DragEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialStylePresenter::OnDrag");
- UNUSED(view);
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice");
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
- NativeAbility::GetInstance().ChangeSlice(preSlice);
- }
- return true;
-}
-} // OHOS
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
- * Description: SetDialStyleView.cpp
- * Author:
- * Create: 2024-06-06
- */
-
-#include "set_dial_style/SetDialStyleView.h"
-#include "PageTransitionMgr.h"
-#include "set_dial_style/SetDialStyleModel.h"
-#include "set_dial_style/SetDialStylePresenter.h"
-#include "main/MainModel.h"
-
-namespace OHOS {
-SetDialStyleView::SetDialStyleView()
-{
-}
-
-SetDialStyleView::~SetDialStyleView()
-{
-}
-
-void SetDialStyleView::OnStart()
-{
- GetRootContainer()->SetDraggable(true);
- GetRootContainer()->SetTouchable(true);
- if (!PageTransitionMgr::GetInstance().CanSlideBack()) { // support default slide back firstly
- GetRootContainer()->SetOnDragListener(presenter_);
- }
- const int16_t BTN_HEIGHT = 55;
- const int16_t BTN_WIDTH = 113;
- const int16_t LABEL_WIDTH = 110;
- const int16_t LABEL_HEIGHT = 18;
- const int16_t COVER_X = 20;
- const int16_t ROLLER_X = 158;
- const int16_t ENABLE_X = 296;
- const int16_t Y1 = 176;
- const int16_t Y2 = 250;
-
- labelCover_.SetPosition(COVER_X, Y2, LABEL_WIDTH, LABEL_HEIGHT);
- labelCover_.SetText("Coverflow");
- AddViewToRootContainer(&labelCover_);
-
- labelRoller_.SetPosition(ROLLER_X, Y2, LABEL_WIDTH, LABEL_HEIGHT);
- labelRoller_.SetText("Roller");
- AddViewToRootContainer(&labelRoller_);
-
- btnCover_.SetPosition(COVER_X, Y1, BTN_WIDTH, BTN_HEIGHT);
- AddViewToRootContainer(&btnCover_);
- btnRoller_.SetPosition(ROLLER_X, Y1, BTN_WIDTH, BTN_HEIGHT);
- AddViewToRootContainer(&btnRoller_);
-
- labelEnableAod_.SetPosition(ENABLE_X, Y2, LABEL_WIDTH, LABEL_HEIGHT);
- labelEnableAod_.SetText("打开熄屏显示");
- AddViewToRootContainer(&labelEnableAod_);
- btnEnableAod_.SetPosition(ENABLE_X, Y1, BTN_WIDTH, BTN_HEIGHT);
- AddViewToRootContainer(&btnEnableAod_);
- btnEnableAod_.SetState(MainModel::GetInstance().IsAodEnabled());
-
- const DialStyle style = SetDialStyleModel::GetInstance().GetStyle();
- int len = sizeof(styleTable_) / sizeof(styleTable_[0]);
- for (int i = 0; i < len; ++i) {
- if (style == styleTable_[i].style) {
- styleTable_[i].btn->SetState(true);
- } else {
- styleTable_[i].btn->SetState(false);
- }
- }
-
- btnCover_.SetOnClickListener(presenter_);
- btnRoller_.SetOnClickListener(presenter_);
- btnEnableAod_.SetOnClickListener(presenter_);
-}
-
-void SetDialStyleView::OnClick(UIView &view)
-{
- const UIToggleButton *ptr = dynamic_cast<UIToggleButton*>(&view);
- if (ptr == nullptr) {
- return;
- }
- if (ptr == &btnEnableAod_) {
- MainModel::GetInstance().EnableAod(ptr->GetState());
- return;
- }
- int len = sizeof(styleTable_) / sizeof(styleTable_[0]);
- for (int i = 0; i < len; ++i) {
- if (ptr == styleTable_[i].btn) {
- styleTable_[i].btn->SetState(true);
- SetDialStyleModel::GetInstance().SetStyle(styleTable_[i].style);
- } else {
- styleTable_[i].btn->SetState(false);
- }
- }
-}
-} // OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.\r
- * Description: ota local update\r
- * Author: wangle\r
- * Create: 2025-5-6\r
- */\r
-#include "set_ota/OTACommon.h"\r
-#include "set_ota/OTAModel.h"\r
-#include "set_ota/OTAPresenter.h"\r
-#include "tcxo.h"\r
-#include "upg.h"\r
-#include "upg_porting.h"\r
-#include "upg_definitions.h"\r
-#include "upg_common_porting.h"\r
-#include "wearable_log.h"\r
-\r
-\r
-namespace OHOS {\r
-OTAModel::OTAModel()\r
-{\r
- isIdel = true;\r
- wait.wait = nullptr;\r
- if (osal_wait_init(&wait) != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ota osal_wait_init error");\r
- return;\r
- }\r
- task = osal_kthread_create(&OTAModel::OSALKthreadCallback, this, "ota_model", MODLE_THREAD_STACK_SIZE);\r
- if (task == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ota osal_wait_init error");\r
- osal_wait_destroy(&wait);\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "model init succ");\r
-}\r
-OTAModel::~OTAModel()\r
-{\r
- if (task != nullptr) {\r
- osal_kthread_destroy(task, 0);\r
- }\r
- if (wait.wait != nullptr) {\r
- osal_wait_destroy(&wait);\r
- }\r
-}\r
-\r
-int OTAModel::WaitCondition(const void *data)\r
-{\r
- OTAModel *model = (OTAModel *)data;\r
- return model->isIdel ? 0 : 1; // 不空闲说明有任务\r
-}\r
-\r
-int OTAModel::OSALKthreadCallback(void *data)\r
-{\r
- OTAModel *model = (OTAModel *)data;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "model thread... callback");\r
- while (true) { // osal_kthread_destroy规定 线程销毁前必须一直存在\r
- osal_wait_interruptible(&model->wait, &OTAModel::WaitCondition, data);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "model thread... wait done");\r
- model->SwitchTask();\r
- }\r
- return 0;\r
-}\r
-bool OTAModel::ModelRunTask(TaskType tasktype, void *taskdata)\r
-{\r
- if (!isIdel)\r
- return false;\r
- type = tasktype;\r
- data = taskdata;\r
- isIdel = false;\r
- osal_wait_wakeup(&wait);\r
- return true;\r
-}\r
-void OTAModel::SwitchTask()\r
-{\r
- switch (type) {\r
- case TaskType::UpdateInfo:\r
- UpdateInfo(data);\r
- isIdel = true;\r
- break;\r
- case TaskType::LocalUpdate:\r
- LocalUpdate(data);\r
- isIdel = true;\r
- break;\r
- default:\r
- break; // 不处理\r
- }\r
-}\r
-\r
-void OTAModel::UpdateInfo(void *data)\r
-{\r
- uint32_t total_size = 0;\r
- do {\r
- FILE *fp = fopen(upg_get_pkg_file_path(), "rb");\r
- if (fp == nullptr) {\r
- break;\r
- }\r
- fseek(fp, 0L, SEEK_END);\r
- total_size = ftell(fp);\r
- fclose(fp);\r
- } while (false);\r
- presenter_->SetPackageInfo(upg_get_pkg_file_path(), total_size);\r
-}\r
-void OTAModel::LocalUpdate(void *data)\r
-{\r
- upg_prepare_info_t info{((LocalUpdateData *)data)->fileSize};\r
-\r
- // update 准备工作\r
- presenter_->SetUpdateProgress("upg_prepare", LOCAL_UPDATE_PROGRESS_5);\r
- errcode_t ret = uapi_upg_prepare(&info);\r
- if (ret != ERRCODE_SUCC) {\r
- presenter_->SetErrorMessage("uapi_upg_prepare error");\r
- return;\r
- }\r
-\r
- // update 申请升级\r
- presenter_->SetUpdateProgress("upg_request_upgrade", LOCAL_UPDATE_PROGRESS_25);\r
- ret = uapi_upg_request_upgrade(false);\r
- if (ret != ERRCODE_SUCC) {\r
- presenter_->SetErrorMessage("uapi_upg_request_upgrade error");\r
- return;\r
- }\r
- // 备份\r
- presenter_->SetUpdateProgress("upg_image_backups", LOCAL_UPDATE_PROGRESS_40);\r
- ret = upg_image_backups_update();\r
- if (ret != ERRCODE_SUCC) {\r
- presenter_->SetErrorMessage("upg_image_backups_update error");\r
- return;\r
- }\r
-\r
- // update 开始升级\r
- presenter_->SetUpdateProgress("upg_start", LOCAL_UPDATE_PROGRESS_50);\r
- ret = uapi_upg_start();\r
- if (ret != ERRCODE_SUCC) {\r
- presenter_->SetErrorMessage("uapi_upg_start error");\r
- return;\r
- }\r
- presenter_->SetUpdateProgress("reboot", LOCAL_UPDATE_PROGRESS_100);\r
- DelayRebootFor5S();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "update");\r
-}\r
-void OTAModel::DelayRebootFor5S()\r
-{\r
- char temp[60] = "";\r
- for (int i = 5; i > 0; i--) {\r
- sprintf_s(temp, sizeof(temp), "%ds后系统将进行重启\r\n完成后续升级操作", i);\r
- presenter_->SetMessage(temp);\r
- osal_msleep(SLEEP_TIME_S);\r
- }\r
- upg_reboot();\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.\r
- * Description: ota local update\r
- * Author: wangle\r
- * Create: 2025-5-6\r
- */\r
-#include "AppViewIDs.h"\r
-#include "NativeRegisterManager.h"\r
-#include "gfx_utils/graphic_math.h"\r
-#include "set_ota/OTACommon.h"\r
-#include "set_ota/OTAView.h"\r
-#include "set_ota/OTAPresenter.h"\r
-#include "set_ota/OTAModel.h"\r
-#include "main/HealthModel.h"\r
-#include "uiservice/ui_service.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_SLICE(VIEW_SET_OTA, OTAView, OTAPresenter);\r
-\r
-void OTAPresenter::OnStart()\r
-{\r
- if (model_ == nullptr) {\r
- Attach(new OTAModel);\r
- }\r
- if (model_ != nullptr) {\r
- model_->Attach(this);\r
- }\r
- view_->SetUpdateDisable();\r
- view_->SetMessage("正在获取升级文件信息...");\r
- view_->SetProgress(0);\r
- model_->ModelRunTask(TaskType::UpdateInfo, nullptr);\r
-}\r
-void OTAPresenter::OnStop()\r
-{\r
- if (model_ != nullptr) {\r
- delete model_;\r
- model_ = nullptr;\r
- }\r
-}\r
-bool OTAPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- if (strcmp(view.GetViewId(), "update") == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OTA OnClick... update");\r
- // 调用model升级方法\r
- model_->ModelRunTask(TaskType::LocalUpdate, nullptr);\r
- view_->SetMessage("正在升级...");\r
- view_->SetProgress(0);\r
- view_->SetUpdateDisable();\r
- updateEnable = true; // 升级中, 禁止右滑退出\r
- SaveSystemScreen(); // 升级中, 设置屏幕常亮\r
- }\r
- return true;\r
-}\r
-bool OTAPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OTA OnDrag...");\r
- if (updateEnable && event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- int16_t deltaX = event.GetDeltaX();\r
- int16_t deltaY = event.GetDeltaY();\r
- if (MATH_ABS(deltaX) >= MATH_ABS(deltaY) && MATH_ABS(deltaX) > SLIDING_LENGTH) {\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM);\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-void OTAPresenter::SetPackageInfo(const char *filePath, uint32_t fileSize)\r
-{\r
- char tempBuffer[60] = "";\r
- updateFilePath = filePath;\r
- updateFileSize = fileSize;\r
- updateEnable = true;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OTA SetPackageInfo");\r
- if (fileSize != 0) {\r
- double tempSizeMB = 1.0 * updateFileSize / 1024 / 1024;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "calc");\r
- sprintf_s(tempBuffer, sizeof(tempBuffer), "升级文件:%s\r\n大小:%.2lfMB", filePath, tempSizeMB);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "sprintf");\r
- view_->SetUpdateEnable();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "View setEnable");\r
- view_->SetMessage(tempBuffer);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "view SetMessage");\r
- } else {\r
- sprintf_s(tempBuffer, sizeof(tempBuffer), "升级文件:%s\r\n不存在或已损坏", filePath);\r
- view_->SetUpdateDisable();\r
- view_->SetMessage(tempBuffer);\r
- }\r
-}\r
-\r
-void OTAPresenter::SetUpdateProgress(const char *message, uint8_t progress)\r
-{\r
- char tempBuffer[60] = "";\r
- sprintf_s(tempBuffer, sizeof(tempBuffer), "正在升级...%u%%...\r\n%s", progress, message);\r
- view_->SetMessage(tempBuffer);\r
- view_->SetProgress(progress);\r
-}\r
-void OTAPresenter::SetErrorMessage(const char *message)\r
-{\r
- char tempBuffer[60] = "";\r
- sprintf_s(tempBuffer, sizeof(tempBuffer), "升级失败...\r\n%s", message);\r
- view_->SetMessage(tempBuffer);\r
- view_->SetUpdateEnable(); // 升级失败后, 允许重新升级\r
- updateEnable = false; // 升级失败后, 允许右滑退出\r
- BackSystemScreen(); // 升级失败后, 回滚屏幕亮屏设置\r
-}\r
-void OTAPresenter::SetMessage(const char *message)\r
-{\r
- view_->SetMessage(message);\r
-}\r
-void OTAPresenter::SaveSystemScreen()\r
-{\r
- briScrStatus = HealthModel::GetInstance()->GetBriScrStatus();\r
- if (briScrStatus == 0) { // 若系统常亮未打开则打开系统常亮\r
- ScreenOffEnable(0);\r
- HealthModel::GetInstance()->UpdateBriScrStatus(1);\r
- }\r
-}\r
-void OTAPresenter::BackSystemScreen()\r
-{\r
- if (briScrStatus == 0) { // 若系统原本未处于常亮则恢复\r
- ScreenOffEnable(1);\r
- HealthModel::GetInstance()->UpdateBriScrStatus(0);\r
- }\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.\r
- * Description: ota local update\r
- * Author: wangle\r
- * Create: 2025-5-6\r
- */\r
-#include "UiConfig.h"\r
-#include "set_ota/OTACommon.h"\r
-#include "set_ota/OTAView.h"\r
-#include "set_ota/OTAPresenter.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-void OTAView::OnStart()\r
-{\r
- InitMessageCtrl();\r
- InitProgressCtrl();\r
- InitUpdateCtrl();\r
- AddCtrlToView();\r
-}\r
-void OTAView::InitMessageCtrl()\r
-{\r
- if (message == nullptr) {\r
- message = new UILabel();\r
- }\r
- message->SetPosition(VIEW_MESSAGE_X, VIEW_MESSAGE_Y);\r
- message->Resize(VIEW_MESSAGE_W, VIEW_MESSAGE_H);\r
- message->SetViewId("message");\r
- message->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
- message->SetStyle(STYLE_TEXT_FONT, VIEW_MESSAGE_FONT);\r
- message->SetStyle(STYLE_LINE_SPACE, 0);\r
-\r
- message->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- message->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- message->SetRollSpeed(0);\r
- message->SetFont(DEFAULT_VECTOR_FONT_FILENAME, VIEW_MESSAGE_FONT);\r
-}\r
-void OTAView::InitProgressCtrl()\r
-{\r
- if (progress == nullptr) {\r
- progress = new UIBoxProgress();\r
- }\r
- progress->SetViewId("progress");\r
- progress->SetDirection(UIBoxProgress::Direction::DIR_LEFT_TO_RIGHT);\r
- progress->SetPosition(VIEW_PROGRESS_X, VIEW_PROGRESS_Y, VIEW_PROGRESS_W, VIEW_PROGRESS_H);\r
- progress->SetValue(0);\r
- progress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, Color::Red().full);\r
- progress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);\r
- progress->SetStyle(STYLE_BORDER_COLOR, Color::Yellow().full);\r
- progress->SetStep(1);\r
- progress->EnableBackground(true);\r
-}\r
-void OTAView::InitUpdateCtrl()\r
-{\r
- if (update == nullptr) {\r
- update = new UILabelButton();\r
- }\r
- update->SetPosition(VIEW_UPDATE_X, VIEW_UPDATE_Y);\r
- update->Resize(VIEW_UPDATE_W, VIEW_UPDATE_H);\r
- update->SetViewId("update");\r
- update->SetText("升级");\r
- update->SetFont(DEFAULT_VECTOR_FONT_FILENAME, VIEW_UPDATE_FONT);\r
- update->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- update->SetOnClickListener(presenter_);\r
-}\r
-void OTAView::AddCtrlToView()\r
-{\r
- if (GetRootContainer() == nullptr)\r
- return;\r
- message->SetVisible(true);\r
- progress->SetVisible(true);\r
- update->SetVisible(true);\r
- GetRootContainer()->Add(message);\r
- GetRootContainer()->Add(progress);\r
- GetRootContainer()->Add(update);\r
- GetRootContainer()->SetTouchable(true); // 添加滑动响应\r
- GetRootContainer()->SetDraggable(true);\r
- GetRootContainer()->SetOnDragListener(presenter_);\r
-}\r
-void OTAView::OnStop()\r
-{\r
- DeInitMessageCtrl();\r
- DeInitProgressCtrl();\r
- DeInitUpdateCtrl();\r
-}\r
-void OTAView::DeInitMessageCtrl()\r
-{\r
- if (message != nullptr) {\r
- delete message;\r
- message = nullptr;\r
- }\r
-}\r
-void OTAView::DeInitProgressCtrl()\r
-{\r
- if (progress != nullptr) {\r
- delete progress;\r
- progress = nullptr;\r
- }\r
-}\r
-void OTAView::DeInitUpdateCtrl()\r
-{\r
- if (update != nullptr) {\r
- delete update;\r
- update = nullptr;\r
- }\r
-}\r
-void OTAView::SetUpdateEnable()\r
-{\r
- if (update == nullptr)\r
- return;\r
- update->Enable();\r
-}\r
-void OTAView::SetUpdateDisable()\r
-{\r
- if (update == nullptr)\r
- return;\r
- update->Disable();\r
-}\r
-\r
-void OTAView::SetMessage(const char *msg)\r
-{\r
- if (message == nullptr)\r
- return;\r
- message->SetText(msg);\r
-}\r
-void OTAView::SetProgress(uint8_t progressNum)\r
-{\r
- if (progress == nullptr)\r
- return;\r
- progress->SetValue(progressNum);\r
-}\r
-\r
-} // namespace OHOS\r
+++ /dev/null
-/*
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.
- * Description: SetDesktopModel
- * Author: Hisi Graphic Team
- * Created: 2025-4
- */
-
-#include "settings/SetDesktopModel.h"
-#include "kv_store.h"
-#include "securec.h"
-
-namespace OHOS {
- static const int STYLE_VALUE_LEN = 32;
-
- SetDesktopModel &SetDesktopModel::GetInstance()
- {
- static SetDesktopModel instance;
- return instance;
- }
-
- DesktopStyle SetDesktopModel::GetDesktopStyle(void)
- {
- DesktopStyle style;
- char temp[STYLE_VALUE_LEN] = { 0 };
- (void)UtilsGetValue("applist_style", temp, STYLE_VALUE_LEN);
- if (strcmp(temp, "hexagons") == 0) {
- style = HEXAGONS_STYLE;
- } else if (strcmp(temp, "football") == 0) {
- style = FOOTBALL_STYLE;
- } else if (strcmp(temp, "waterfall") == 0) {
- style = WATERFALL_STYLE;
- } else {
- style = APPLIST_STYLE;
- }
- return style;
- }
-
- void SetDesktopModel::SetDesktopStyle(DesktopStyle style)
- {
- if (style == APPLIST_STYLE) {
- (void)UtilsSetValue("applist_style", "list");
- } else if (style == HEXAGONS_STYLE) {
- (void)UtilsSetValue("applist_style", "hexagons");
- } else if (style == FOOTBALL_STYLE) {
- (void)UtilsSetValue("applist_style", "football");
- } else if (style == WATERFALL_STYLE) {
- (void)UtilsSetValue("applist_style", "waterfall");
- }
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingAdapter.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "settings/SettingAdapter.h"
-
-namespace OHOS {
-SettingAdapter::SettingAdapter() {}
-
-SettingAdapter::~SettingAdapter()
-{
- listData.clear();
-}
-
-uint16_t SettingAdapter::GetCount(void)
-{
- return listData.size();
-}
-
-void SettingAdapter::SetData(std::list<SettingItem> &data)
-{
- if (!listData.empty()) {
- listData.clear();
- }
- std::list<SettingItem>::iterator it;
- for (it = data.begin(); it != data.end(); it++) {
- listData.push_back(*it);
- }
-}
-
-UIView *SettingAdapter::GetView(UIView *inView, int16_t index)
-{
- if (listData.empty()) {
- return nullptr;
- }
- if (index < 0) {
- return nullptr;
- }
- size_t uindex = index;
- if (uindex >= listData.size()) {
- return nullptr;
- }
-
- std::list<SettingItem>::iterator it = listData.begin();
- for (int i = 0; i < index; i++) {
- it++;
- }
- SettingItem itemData = *it;
- SettingItemView *item = nullptr;
- if (inView == nullptr) {
- item = new SettingItemView();
- } else {
- item = static_cast<SettingItemView *>(inView);
- }
-
- item->SetItemInfo(itemData);
- item->SetOnClickListener(itemClickListener);
- return item;
-}
-
-void SettingAdapter::AddListItem(const SettingItem &item)
-{
- listData.push_back(item);
-}
-} // namespace OHOS
+++ /dev/null
-/*
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.
- * Description: SettingDesktopPage
- * Author: Hisi Graphic Team
- * Created: 2025-4
- */
-
-#include "settings/SettingDesktopPage.h"
-#include <string>
-#include "components/ui_scroll_view_nested.h"
-#include "common/screen.h"
-#include "wearable_log.h"
-#include "NativeAbility.h"
-#include "PageTransitionMgr.h"
-#include "SlicePageFactory.h"
-#include "settings/SettingView.h"
-
-namespace OHOS {
-static const char *SET_DESKTOP_LIST = "setdesktopList";
-static const char *SET_DESKTOP_HEXAGONS = "setdesktopHexagons";
-static const char *SET_DESKTOP_FOOTBALL = "setdesktopFootball";
-static const char *SET_DESKTOP_WATERFALL = "setdesktopWaterfall";
-
-REGIST_SLICE_PAGE(VIEW_SETTING, SETTING_PAGES::SETTING_DESKTOP_PAGE, SettingDesktopPage, false);
-SettingDesktopPage::SettingDesktopPage()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingDesktopPage::SettingDesktopPage");
-}
-
-SettingDesktopPage::~SettingDesktopPage()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingDesktopPage::~SettingDesktopPage");
- if (scrollview != nullptr) {
- scrollview->RemoveAll();
- delete scrollview;
- scrollview = nullptr;
- }
-}
-
-void SettingDesktopPage::OnStart(void *data)
-{
- if (GetBackDragListener() == nullptr) { // support default slide back firstly
- GetSlicePageContainer()->SetOnDragListener(this);
- }
-
- scrollview = new UIScrollViewNested(UIAbstractScroll::HORIZONTAL);
- UIScrollViewNested *nested = dynamic_cast<UIScrollViewNested*>(scrollview);
- if (nested != nullptr) {
- nested->SetBoundaryIntercept(DragEvent::DIRECTION_LEFT_TO_RIGHT, false);
- }
- scrollview->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- AddViewToPageContainer(scrollview);
-
- titleText.SetPosition(180, 45, 260, 110);
- titleText.SetText("桌面");
- titleText.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
- titleText.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40);
- titleText.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- AddViewToPageContainer(&titleText);
-
- listImage.SetPosition(0, 135, 190, 190);
- listImage.SetSrc(PNG_SET_DESKTOP_BG_IMAGE);
- scrollview->Add(&listImage);
-
- listBtn.SetPosition(22, 157, 148, 148);
- listBtn.SetImages(PNG_SET_DESKTOP_LIST_IMAGE, PNG_SET_DESKTOP_LIST_IMAGE);
- listBtn.SetViewId(SET_DESKTOP_LIST);
- scrollview->Add(&listBtn);
-
- listText.SetPosition(61, 328, 200, 60);
- listText.SetText("列表");
- listText.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
- listText.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- listText.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- scrollview->Add(&listText);
-
- hexagonsImage.SetPosition(150, 135, 190, 190);
- hexagonsImage.SetSrc(PNG_SET_DESKTOP_BG_IMAGE);
- scrollview->Add(&hexagonsImage);
-
- hexagonsBtn.SetPosition(172, 157, 148, 148);
- hexagonsBtn.SetImages(PNG_SET_DESKTOP_HEXAGONS_IMAGE, PNG_SET_DESKTOP_HEXAGONS_IMAGE);
- hexagonsBtn.SetViewId(SET_DESKTOP_HEXAGONS);
- scrollview->Add(&hexagonsBtn);
-
- hexagonsText.SetPosition(218, 328, 200, 60);
- hexagonsText.SetText("蜂窝");
- hexagonsText.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
- hexagonsText.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- hexagonsText.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- scrollview->Add(&hexagonsText);
-
- InitFootballItem();
- InitWaterfallItem();
- listBtn.SetOnClickListener(this);
- hexagonsBtn.SetOnClickListener(this);
- footballBtn_.SetOnClickListener(this);
- waterfallBtn_.SetOnClickListener(this);
- UpdateSelectedStyle(SetDesktopModel::GetInstance().GetDesktopStyle());
-}
-
-void SettingDesktopPage::UpdateSelectedStyle(DesktopStyle selectedStyle)
-{
- hexagonsImage.SetVisible(false);
- hexagonsBtn.SetState(false);
- listImage.SetVisible(false);
- listBtn.SetState(false);
- footballImage_.SetVisible(false);
- footballBtn_.SetState(false);
- waterfallImage_.SetVisible(false);
- waterfallBtn_.SetState(false);
-
- if (selectedStyle == HEXAGONS_STYLE) { // 1: select hexagons style
- hexagonsImage.SetVisible(true);
- hexagonsBtn.SetState(true);
- } else if (selectedStyle == FOOTBALL_STYLE) { // 2: select football style
- footballImage_.SetVisible(true);
- footballBtn_.SetState(true);
- } else if (selectedStyle == WATERFALL_STYLE) { // 3: select waterfall style
- waterfallImage_.SetVisible(true);
- waterfallBtn_.SetState(true);
- } else {
- listImage.SetVisible(true);
- listBtn.SetState(true);
- }
-}
-
-void SettingDesktopPage::InitFootballItem()
-{
- footballImage_.SetPosition(300, 135, 190, 190);
- footballImage_.SetSrc(PNG_SET_DESKTOP_BG_IMAGE);
- scrollview->Add(&footballImage_);
-
- footballBtn_.SetPosition(322, 157, 148, 148);
- footballBtn_.SetImages(PNG_SET_DESKTOP_HEXAGONS_IMAGE, PNG_SET_DESKTOP_HEXAGONS_IMAGE);
- footballBtn_.SetViewId(SET_DESKTOP_FOOTBALL);
- scrollview->Add(&footballBtn_);
-
- footballText_.SetPosition(368, 328, 200, 60);
- footballText_.SetText("足球");
- footballText_.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
- footballText_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- footballText_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- scrollview->Add(&footballText_);
-}
-
-void SettingDesktopPage::InitWaterfallItem()
-{
- waterfallImage_.SetPosition(450, 135, 190, 190);
- waterfallImage_.SetSrc(PNG_SET_DESKTOP_BG_IMAGE);
- scrollview->Add(&waterfallImage_);
-
- waterfallBtn_.SetPosition(472, 157, 148, 148);
- waterfallBtn_.SetImages(PNG_SET_DESKTOP_HEXAGONS_IMAGE, PNG_SET_DESKTOP_HEXAGONS_IMAGE);
- waterfallBtn_.SetViewId(SET_DESKTOP_WATERFALL);
- scrollview->Add(&waterfallBtn_);
-
- waterfallText_.SetPosition(518, 328, 200, 60);
- waterfallText_.SetText("瀑布");
- waterfallText_.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
- waterfallText_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- waterfallText_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- scrollview->Add(&waterfallText_);
-}
-
-bool SettingDesktopPage::OnDrag(UIView& view, const DragEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingDesktopPage::OnDrag");
- UNUSED(view);
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice");
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
- NativeAbility::GetInstance().ChangeSlice(preSlice);
- }
- return false;
-}
-
-bool SettingDesktopPage::OnClick(UIView &view, const ClickEvent &event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingDesktopPage::OnClick");
- if (strcmp(view.GetViewId(), SET_DESKTOP_HEXAGONS) == 0) {
- SetDesktopModel::GetInstance().SetDesktopStyle(DesktopStyle::HEXAGONS_STYLE);
- } else if (strcmp(view.GetViewId(), SET_DESKTOP_LIST) == 0) {
- SetDesktopModel::GetInstance().SetDesktopStyle(DesktopStyle::APPLIST_STYLE);
- } else if (strcmp(view.GetViewId(), SET_DESKTOP_FOOTBALL) == 0) {
- SetDesktopModel::GetInstance().SetDesktopStyle(DesktopStyle::FOOTBALL_STYLE);
- } else if (strcmp(view.GetViewId(), SET_DESKTOP_WATERFALL) == 0) {
- SetDesktopModel::GetInstance().SetDesktopStyle(DesktopStyle::WATERFALL_STYLE);
- }
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
- NativeAbility::GetInstance().ChangeSlice(preSlice);
- return true;
-}
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingItemView.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "wearable_log.h"
-#include "settings/SettingItemView.h"
-
-namespace OHOS {
- static constexpr int16 SETTING_ICON_X = 20;
- static constexpr int16 NUM_22 = 22;
- static constexpr int16_t SETTING_ITEM_BUTTON_HEIGHT = 100;
- static constexpr int16_t SETTING_ITEM_LABEL_WIDTH = 155;
- static constexpr int16_t SETTING_ITEM_LABEL_HEIGHT = 100;
- static constexpr int16 SETTING_ITEM_FONT_SIZE = 35;
- static constexpr int16_t SETTINGS_RESIZE_SIZE = 100;
- static constexpr int16_t SETTING_SICON_Y = 15;
- static constexpr int16 NUMS_2 = 2;
- static constexpr int16 NUMS_50 = 50;
-
- SettingItemView::SettingItemView()
- {
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, SETTING_ITEM_BUTTON_HEIGHT);
- SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
- SetStyle(STYLE_BACKGROUND_OPA, UN_OPACITY);
- SetTouchable(true);
- SetUpChild();
-
- Add(&sIcon);
- Add(&sLabel);
- Add(&sNextImage);
- }
-
- SettingItemView::~SettingItemView()
- {
- Remove(&sIcon);
- Remove(&sLabel);
- Remove(&sNextImage);
- }
-
- void SettingItemView::SetItemInfo(const SettingItem itemInfo)
- {
- sItemInfo = itemInfo;
- sIcon.SetSrc(itemInfo.icon);
- sLabel.SetText(itemInfo.label);
- sNextImage.SetVisible(itemInfo.hasSecondMenu);
- }
-
- void SettingItemView::SetUpChild()
- {
- sIcon.SetPosition(SETTING_ICON_X, SETTING_SICON_Y);
- sIcon.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
-
- sLabel.SetPosition(SETTING_ITEM_LABEL_WIDTH, 0);
- sLabel.Resize(SETTING_ITEM_LABEL_WIDTH, SETTING_ITEM_LABEL_HEIGHT);
- sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, SETTING_ITEM_FONT_SIZE);
- sLabel.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);
- sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);
- sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
- sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-
- sNextImage.SetSrc(PNG_SETTING_NEXT_IMAGE);
- sNextImage.SetPosition(LA_HORIZONTAL_RESOLUTION - NUMS_50, (SETTING_ITEM_HEIGHT - sNextImage.GetHeight()) / NUMS_2);
- sNextImage.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
- }
-
- uint32_t SettingItemView::GetTargetId()
- {
- return sItemInfo.targetId;
- }
-
- const char* SettingItemView::GetIconId()
- {
- return sItemInfo.icon;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.
- * Description: SettingMainPage
- * Author: Hisi Graphic Team
- * Created: 2025-4
- */
-
-#include <string>
-
-#include "settings/SettingMainPage.h"
-#include "components/ui_list_nested.h"
-#include "components/ui_scroll_view_nested.h"
-#include "NativeAbility.h"
-#include "SlicePageFactory.h"
-#include "settings/SettingItem.h"
-#include "settings/SettingPresenter.h"
-#include "settings/SettingView.h"
-#include "PageTransitionMgr.h"
-#include "settings/SetDesktopModel.h"
-#include "rebootdevice/RebootModel.h"
-#include "settings/SettingModel.h"
-
-namespace OHOS {
-REGIST_SLICE_PAGE(VIEW_SETTING, SETTING_PAGES::SETTING_MAIN_PAGE, SettingMainPage, true);
-
-static constexpr uint8_t SETTINGS_ITEM_FONT_SIZE = 40;
-static constexpr int16_t SETTINGS_RESIZE_SIZE_WIDTH = 100;
-static constexpr int16_t SETTINGS_RESIZE_SIZE_HEIGHT = 60;
-static constexpr int16_t SETTING_TITLE_POSITION_X = 187;
-static constexpr int16_t SETTING_LIST_POSITION_X = 32;
-static constexpr int16_t SETTING_LIST_POSITION_Y = 90;
-static constexpr int16_t SETTING_SCROLLBLANKSIZE = 50;
-static constexpr int16 MAX_SCR_DIS = 1000;
-static constexpr int16 LIST_POS = 20;
-static constexpr int16 SNUM_2 = 2;
-
-SettingMainPage::~SettingMainPage()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingMainPage::~SettingMainPage");
- if (scrollView != nullptr) {
- scrollView->RemoveAll();
- delete scrollView;
- scrollView = nullptr;
- }
-
- if (title != nullptr) {
- delete title;
- title = nullptr;
- }
-
- if (listAdapter != nullptr) {
- delete listAdapter;
- listAdapter = nullptr;
- }
-
- if (contentList != nullptr) {
- delete contentList;
- contentList = nullptr;
- }
-}
-
-void SettingMainPage::OnStart(void* data)
-{
- title = new UILabel();
- if (title == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingMainPage::OnStart::title is nullptr");
- return;
- }
- title->SetPosition(SETTING_TITLE_POSITION_X, 0);
- title->SetText("设置");
- title->Resize(SETTINGS_RESIZE_SIZE_WIDTH, SETTINGS_RESIZE_SIZE_HEIGHT);
- title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SETTINGS_ITEM_FONT_SIZE);
- title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- title->SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);
- title->SetStyle(STYLE_TEXT_COLOR, Color::White().full);
- title->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
- title->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-
- contentList = new UIListNested();
- if (contentList == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingMainPage::OnStart::contentList is nullptr");
- return;
- }
- contentList->SetPosition(SETTING_LIST_POSITION_X, SETTING_LIST_POSITION_Y);
- contentList->Resize(HORIZONTAL_RESOLUTION, 364); // 364: height
- contentList->SetScrollBlankSize(SETTING_SCROLLBLANKSIZE);
- contentList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position
- contentList->SetDraggable(true);
- contentList->SetThrowDrag(true);
- contentList->EnableAutoAlign(true);
- contentList->SetMaxScrollDistance(MAX_SCR_DIS);
-
- scrollView = new UIScrollViewNested();
- if (scrollView == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingMainPage::OnStart::scrollView is nullptr");
- return;
- }
- scrollView->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- scrollView->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
- scrollView->SetStyle(STYLE_BACKGROUND_OPA, UN_OPACITY);
- scrollView->SetThrowDrag(true);
-
- if (PageTransitionMgr::GetInstance().GetTopSlideBackImage() == nullptr) { // support default slide back firstly
- scrollView->SetOnDragListener(this);
- }
- scrollView->Add(title);
- scrollView->Add(contentList);
- SettingModel::GetInstance().InitSettingItem();
- AddViewToPageContainer(scrollView);
- RefreshSettingsList(SettingModel::GetInstance().GetSettinglistItems(),
- SettingModel::GetInstance().GetSettingListNum());
-}
-
-void SettingMainPage::RefreshSettingsList(const SettingItem* item, uint8_t count)
-{
- listAdapter = new SettingAdapter();
- if (listAdapter == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingMainPage::OnStart::listAdapter is nullptr");
- return;
- }
- listAdapter->SetItemClickListener(this);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingMainPage::RefreshSettingsList");
- for (int i = 0; i < count; i++) {
- listAdapter->AddListItem(item[i]);
- }
- contentList->SetAdapter(listAdapter);
-}
-
-bool SettingMainPage::OnDrag(UIView& view, const DragEvent& event)
-{
- UNUSED(view);
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice(VIEW_APPLIST)");
- if (SetDesktopModel::GetInstance().GetDesktopStyle() == HEXAGONS_STYLE) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_BACK_TO_HEXAGONS);
- } else if (SetDesktopModel::GetInstance().GetDesktopStyle() == WATERFALL_STYLE) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_BACK_TO_WATERFALL);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
- }
- }
- return false;
-}
-
-bool SettingMainPage::OnClick(UIView &view, const ClickEvent &event)
-{
- UNUSED(event);
- SettingItemView *settingItemView = static_cast<SettingItemView *>(&view);
- uint32_t targetId = settingItemView->GetTargetId();
- uint16_t sliceId = static_cast<uint16_t>(targetId & SLICE_MASK);
- uint16_t pageId = static_cast<uint16_t>(targetId >> PAGE_OFFSET);
- if (sliceId == VIEW_REBOOT) {
- if (strstr(settingItemView->GetIconId(), "REBOOT") != nullptr) {
- RebootModel::GetInstance()->SetSelectViewId(REBOOTDEVICE);
- RebootModel::GetInstance()->SetExitsView(true);
- } else {
- RebootModel::GetInstance()->SetSelectViewId(SHUTDOWNDEVICE);
- RebootModel::GetInstance()->SetExitsView(true);
- }
- }
- if (sliceId != VIEW_SETTING) {
- if (settingItemView->SlideBackEnabled()) {
- NativeAbility::GetInstance().ChangeSlice(sliceId, TransitionType::TRANSITION_INVALID,
- gSliceDefaultPriority, true);
- } else {
- NativeAbility::GetInstance().ChangeSlice(sliceId);
- }
- } else {
- NativeAbility::GetInstance().SwitchPageInSlice(pageId, nullptr, TransitionType::TRANSITION_INVALID, true);
- }
- return true;
-}
-}
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingModel.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include "settings/SettingModel.h"
-#include "Slice.h"
-#include "main/PullUpDownView.h"
-#include "settings/SettingView.h"
-
-namespace OHOS {
- SettingModel::SettingModel() {}
-
- SettingModel::~SettingModel() {}
-
- SettingModel &SettingModel::GetInstance()
- {
- static SettingModel instance;
- return instance;
- }
-
- void SettingModel::InitSettingItem()
- {
- int index = 0;
- settings[index++] = {static_cast<uint32_t>(VIEW_BLUETOOTH_EARPHONE), PNG_BLUETOOTH_STITLE,
- "蓝牙耳机", true, false};
- settings[index++] = {static_cast<uint32_t>(VIEW_CONNECT_PHONE), PNG_CONNECT_PHONE_IMAGE, "连接手机", true, true};
- settings[index++] = {static_cast<uint32_t>(VIEW_REBOOT), PNG_SETTTING_REBOOT_IMAGE, "重启", true, true};
- settings[index++] = {static_cast<uint32_t>(VIEW_REBOOT), PNG_SETTTING_SHUTDOWN_IMAGE, "关机", true, true};
- settings[index++] = {static_cast<uint32_t>(VIEW_SET_DIAL), PNG_SETTTING_DESKTOP_IMAGE, "表盘", true, false};
- settings[index++] = {static_cast<uint32_t>(VIEW_SETTING) | (SETTING_DESKTOP_PAGE << PAGE_OFFSET),
- PNG_SETTTING_DESKTOP_IMAGE, "桌面", true, true};
- settings[index++] = {static_cast<uint32_t>(VIEW_SET_CARD), PNG_SETTTING_DESKTOP_IMAGE, "卡片", true, false};
- settings[index++] = {static_cast<uint32_t>(VIEW_SET_DIAL_STYLE), PNG_SETTTING_DESKTOP_IMAGE,
- "表盘风格", true, true};
- settings[index++] = {static_cast<uint32_t>(VIEW_RESTORE_DEFAULTS), PNG_SETTTING_DESKTOP_IMAGE,
- "恢复出厂", true, true};
- settings[index++] = {static_cast<uint32_t>(VIEW_SET_OTA), PNG_SETTTING_DESKTOP_IMAGE, "OTA升级", true, true};
- usedLen = index;
- }
-
- const SettingItem *SettingModel::GetSettinglistItems() const
- {
- return settings;
- }
-
- uint8_t SettingModel::GetSettingListNum() const
- {
- return usedLen;
- }
-
- bool SettingModel::GetBlueToothConnectStatus(void)
- {
- return btConnectStatus;
- }
-
- void SettingModel::UpdateBlueToothConnectStatus(bool status)
- {
- btConnectStatus = status;
- if (PullUpDownView::GetInstance() != nullptr) {
- PullUpDownView::GetInstance()->UpdateBlueToothStatus(status);
- }
- }
-}
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingDetailsPage\r
- * Created: 2025-06-05\r
- */\r
-#include <sys/time.h>\r
-#include <string>\r
-#include "ohos_timer.h"\r
-#include "wearable_log.h"\r
-#include "SlicePageFactory.h"\r
-#include "common/image_cache_manager.h"\r
-#include "AppViewIDs.h"\r
-#include "NativeAbility.h"\r
-#include "sleep/SleepingView.h"\r
-#include "sleep/SleepingModel.h"\r
-#include "sleep/SleepingDetailsPage.h"\r
-\r
-namespace OHOS {\r
-\r
-static constexpr int16_t SLEEPDETAIL_SLEEP_X = 97;\r
-static constexpr int16_t SLEEPDETAIL_SLEEP_Y = 31;\r
-static constexpr int16_t SLEEPDETAIL_SLEEP_WIDTH = 260;\r
-static constexpr int16_t SLEEPDETAIL_SLEEP_HEIGHT = 53;\r
-static constexpr int16_t SLEEPDETAIL_SLEEP_FONT_SIZE = 38;\r
-static constexpr int16_t SLEEPDETAIL_IMAGE1_X = 77;\r
-static constexpr int16_t SLEEPDETAIL_IMAGE1_Y = 215;\r
-static constexpr int16_t SLEEPDETAIL_SOBERINGTIME_X = 103;\r
-static constexpr int16_t SLEEPDETAIL_SOBERINGTIME_Y = 205;\r
-static constexpr int16_t SLEEPDETAIL_SOBERINGTIME_WIDTH = 48;\r
-static constexpr int16_t SLEEPDETAIL_SOBERINGTIME_HEIGHT = 29;\r
-static constexpr int16_t SLEEPDETAIL_SOBERINGTIME_FONT_SIZE = 24;\r
-static constexpr int16_t SLEEPDETAIL_IMAGE2_Y = 254;\r
-static constexpr int16_t SLEEPDETAIL_IMAGE3_Y = 291;\r
-static constexpr int16_t SLEEPDETAIL_IMAGE4_Y = 330;\r
-static constexpr int16_t SLEEPDETAIL_RAPID_Y = 244;\r
-static constexpr int16_t SLEEPDETAIL_RAPID_WIDTH = 100;\r
-static constexpr int16_t SLEEPDETAIL_RAPID_HEIGHT = 38;\r
-static constexpr int16_t SLEEPDETAIL_LIGHT_Y = 283;\r
-static constexpr int16_t SLEEPDETAIL_DEEP_Y = 322;\r
-static constexpr int16_t SLEEPDETAIL_GRAYBG_X = 62;\r
-static constexpr int16_t SLEEPDETAIL_GRAYBG_Y = 185;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEP_X = 180;\r
-static constexpr int16_t SLEEPDETAIL_ACTUAL_NORECODE_X = 96;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEP_Y = 100;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEP_WIDTH = 200;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEP_HEIGHT = 35;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEP_FONT_SIZE = 32;\r
-static constexpr int16_t SLEEPDETAIL_LABEL_WIDTH = 160;\r
-static constexpr int16_t SLEEPDETAIL_PADDING_RIGHT = 30;\r
-static constexpr int16_t SLEEPDETAIL_SOBERINGTEXT_X = 220;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEP_NORECORD_X = 179;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEP_NORECORD_Y = 110;\r
-static constexpr int16_t SLEEPDETAIL_SOBERTIMETEXT_X = 300;\r
-static constexpr int16_t SLEEPDETAIL_SOBERTIMETEXT_Y = 190;\r
-static constexpr int16_t SLEEPDETAIL_RAPIDTIMETEXT_Y = 230;\r
-static constexpr int16_t SLEEPDETAIL_LIGHTIMETEXT_Y = 270;\r
-static constexpr int16_t SLEEPDETAIL_DEEPIMETEXT_Y = 310;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEPTIMEHOURS_FONT_SIZE = 40;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT = 50;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEPTIMINUTES_FONT_SIZE = 40;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALMINUTE_X = 230;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALMINUTE_Y = 116;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALHOUR_X = 135;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALHOUR_Y = 100;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALHOURTEXT_X = 170;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALMINUTETEXT_X = 280;\r
-static constexpr int16_t ACTUALHOURS_X = 140;\r
-static constexpr int16_t ACTUALHOURSTEXT_X = 180;\r
-static constexpr int16_t ACTUALMINUTESTEXT_X = 270;\r
-\r
-REGIST_SLICE_PAGE(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_DEATIL_PAGE, SleepingDetailsPage, false);\r
-\r
-SleepingDetailsPage::SleepingDetailsPage()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepingDetailsPage::SleepingDetailsPage");\r
-}\r
-\r
-SleepingDetailsPage::~SleepingDetailsPage()\r
-{\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
-\r
- if (detailsSleepView != nullptr) {\r
- delete detailsSleepView;\r
- detailsSleepView = nullptr;\r
- }\r
-\r
- if (sleep != nullptr) {\r
- delete sleep;\r
- sleep = nullptr;\r
- }\r
-\r
- if (actualSleepTime != nullptr) {\r
- delete actualSleepTime;\r
- actualSleepTime = nullptr;\r
- }\r
-\r
- if (actualSleepTimeHours != nullptr) {\r
- delete actualSleepTimeHours;\r
- actualSleepTimeHours = nullptr;\r
- }\r
-\r
- if (actualSleepTimeHoursText != nullptr) {\r
- delete actualSleepTimeHoursText;\r
- actualSleepTimeHoursText = nullptr;\r
- }\r
-\r
- if (actualSleepTimeMinutes != nullptr) {\r
- delete actualSleepTimeMinutes;\r
- actualSleepTimeMinutes = nullptr;\r
- }\r
-\r
- if (actualSleepTimeMinutesText != nullptr) {\r
- delete actualSleepTimeMinutesText;\r
- actualSleepTimeMinutesText = nullptr;\r
- }\r
-\r
- if (grayBg != nullptr) {\r
- delete grayBg;\r
- grayBg = nullptr;\r
- }\r
-\r
- if (image1 != nullptr) {\r
- delete image1;\r
- image1 = nullptr;\r
- }\r
-\r
- if (soberingTime_ != nullptr) {\r
- delete soberingTime_;\r
- soberingTime_ = nullptr;\r
- }\r
-\r
- if (soberingTimeText != nullptr) {\r
- delete soberingTimeText;\r
- soberingTimeText = nullptr;\r
- }\r
-\r
- if (image2 != nullptr) {\r
- delete image2;\r
- image2 = nullptr;\r
- }\r
-\r
- if (rapidEyeMovement_ != nullptr) {\r
- delete rapidEyeMovement_;\r
- rapidEyeMovement_ = nullptr;\r
- }\r
-\r
- if (rapidEyeMovementText != nullptr) {\r
- delete rapidEyeMovementText;\r
- rapidEyeMovementText = nullptr;\r
- }\r
-\r
- if (image3 != nullptr) {\r
- delete image3;\r
- image3 = nullptr;\r
- }\r
-\r
- if (lightSleepTime_ != nullptr) {\r
- delete lightSleepTime_;\r
- lightSleepTime_ = nullptr;\r
- }\r
-\r
- if (lightSleepTimeText != nullptr) {\r
- delete lightSleepTimeText;\r
- lightSleepTimeText = nullptr;\r
- }\r
-\r
- if (image4 != nullptr) {\r
- delete image4;\r
- image4 = nullptr;\r
- }\r
-\r
- if (deepSleepTime_ != nullptr) {\r
- delete deepSleepTime_;\r
- deepSleepTime_ = nullptr;\r
- }\r
-\r
- if (deepSleepTimeText != nullptr) {\r
- delete deepSleepTimeText;\r
- deepSleepTimeText = nullptr;\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepingDetailsPage::~SleepingDetailsPage");\r
-}\r
-\r
-void SleepingDetailsPage::OnStart(void* data)\r
-{\r
- group = new UIScrollView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group is nullptr");\r
- return;\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(RESOLUTION_WIDTH, RESOLUTION_HEIGHT);\r
- group->SetViewId("sleepDetails");\r
-\r
- detailsSleepView = new UIImageView();\r
- if (detailsSleepView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "detailsSleepView is nullptr");\r
- return;\r
- }\r
- LOADIMG::LoadImageViewImg(detailsSleepView, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_BACKGROUND);\r
- detailsSleepView->SetPosition(0, 0, RESOLUTION_WIDTH, RESOLUTION_HEIGHT);\r
- group->Add(detailsSleepView);\r
-\r
- sleep = new UILabel();\r
- if (sleep == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep is nullptr");\r
- return;\r
- }\r
- sleep->SetPosition(SLEEPDETAIL_SLEEP_X, SLEEPDETAIL_SLEEP_Y);\r
- sleep->Resize(SLEEPDETAIL_SLEEP_WIDTH, SLEEPDETAIL_SLEEP_HEIGHT);\r
- sleep->SetText("睡眠");\r
- sleep->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- sleep->SetTextColor(Color::White());\r
- sleep->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SLEEP_FONT_SIZE);\r
- sleep->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(sleep);\r
-\r
- InitPage();\r
-\r
- if (GetRecord() == true) {\r
- InitDetailPage();\r
- } else {\r
- InitNoDeatilPage();\r
- };\r
- group->SetOnDragListener(this);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- AddViewToPageContainer(group);\r
-}\r
-\r
-void SleepingDetailsPage::InitSoberingTime()\r
-{\r
- image1 = new UIImageView();\r
- if (image1 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image1 is nullptr");\r
- return;\r
- }\r
- image1->SetPosition(SLEEPDETAIL_IMAGE1_X, SLEEPDETAIL_IMAGE1_Y);\r
- LOADIMG::LoadImageViewImg(image1, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_RED_CIR);\r
- group->Add(image1);\r
- soberingTime_ = new UILabel();\r
- if (soberingTime_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soberingTime_ is nullptr");\r
- return;\r
- }\r
- soberingTime_->SetPosition(SLEEPDETAIL_SOBERINGTIME_X, SLEEPDETAIL_SOBERINGTIME_Y);\r
- soberingTime_->Resize(SLEEPDETAIL_SOBERINGTIME_WIDTH, SLEEPDETAIL_SOBERINGTIME_HEIGHT);\r
- soberingTime_->SetText("清醒");\r
- soberingTime_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- soberingTime_->SetTextColor(Color::White());\r
- soberingTime_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- soberingTime_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(soberingTime_);\r
-}\r
-\r
-void SleepingDetailsPage::InitRapidEyeMovement()\r
-{\r
- image2 = new UIImageView();\r
- if (image2 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image2 is nullptr");\r
- return;\r
- }\r
- image2->SetPosition(SLEEPDETAIL_IMAGE1_X, SLEEPDETAIL_IMAGE2_Y);\r
- LOADIMG::LoadImageViewImg(image2, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_ORANGE_CIR);\r
- group->Add(image2);\r
-\r
- rapidEyeMovement_ = new UILabel();\r
- if (rapidEyeMovement_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rapidEyeMovement_ is nullptr");\r
- return;\r
- }\r
- rapidEyeMovement_->SetPosition(SLEEPDETAIL_SOBERINGTIME_X, SLEEPDETAIL_RAPID_Y);\r
- rapidEyeMovement_->Resize(SLEEPDETAIL_RAPID_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- rapidEyeMovement_->SetText("快速动眼");\r
- rapidEyeMovement_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- rapidEyeMovement_->SetTextColor(Color::White());\r
- rapidEyeMovement_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- rapidEyeMovement_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(rapidEyeMovement_);\r
-}\r
-\r
-void SleepingDetailsPage::InitLightSleepTime()\r
-{\r
- image3 = new UIImageView();\r
- if (image3 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image3 is nullptr");\r
- return;\r
- }\r
- image3->SetPosition(SLEEPDETAIL_IMAGE1_X, SLEEPDETAIL_IMAGE3_Y);\r
- LOADIMG::LoadImageViewImg(image3, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_GREEN_CIR);\r
- group->Add(image3);\r
-\r
- lightSleepTime_ = new UILabel();\r
- if (lightSleepTime_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lightSleepTime_ is nullptr");\r
- return;\r
- }\r
- lightSleepTime_->SetPosition(SLEEPDETAIL_SOBERINGTIME_X, SLEEPDETAIL_LIGHT_Y);\r
- lightSleepTime_->Resize(SLEEPDETAIL_SOBERINGTIME_WIDTH, SLEEPDETAIL_SOBERINGTIME_HEIGHT);\r
- lightSleepTime_->SetText("浅睡");\r
- lightSleepTime_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- lightSleepTime_->SetTextColor(Color::White());\r
- lightSleepTime_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- lightSleepTime_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(lightSleepTime_);\r
-}\r
-\r
-void SleepingDetailsPage::InitDeepSleepTime()\r
-{\r
- image4 = new UIImageView();\r
- if (image4 == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image4 is nullptr");\r
- return;\r
- }\r
- image4->SetPosition(SLEEPDETAIL_IMAGE1_X, SLEEPDETAIL_IMAGE4_Y);\r
- LOADIMG::LoadImageViewImg(image4, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_BLUE_CIR);\r
- group->Add(image4);\r
-\r
- deepSleepTime_ = new UILabel();\r
- if (deepSleepTime_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deepSleepTime_ is nullptr");\r
- return;\r
- }\r
- deepSleepTime_->SetPosition(SLEEPDETAIL_SOBERINGTIME_X, SLEEPDETAIL_DEEP_Y);\r
- deepSleepTime_->Resize(SLEEPDETAIL_SOBERINGTIME_WIDTH, SLEEPDETAIL_SOBERINGTIME_HEIGHT);\r
- deepSleepTime_->SetText("深睡");\r
- deepSleepTime_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- deepSleepTime_->SetTextColor(Color::White());\r
- deepSleepTime_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- deepSleepTime_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(deepSleepTime_);\r
-}\r
-\r
-void SleepingDetailsPage::InitPage()\r
-{\r
- grayBg = new UIImageView();\r
- if (grayBg == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "grayBg is nullptr");\r
- return;\r
- }\r
- grayBg->SetPosition(SLEEPDETAIL_GRAYBG_X, SLEEPDETAIL_GRAYBG_Y);\r
- LOADIMG::LoadImageViewImg(grayBg, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_RECORD_BG);\r
- group->Add(grayBg);\r
-\r
- // 加载详情四项\r
- InitSoberingTime();\r
- InitRapidEyeMovement();\r
- InitLightSleepTime();\r
- InitDeepSleepTime();\r
-}\r
-\r
-void SleepingDetailsPage::IoadDeatilActualSleepTime()\r
-{\r
- actualSleepTimeHours = new UILabel();\r
- if (actualSleepTimeHours == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeHours is nullptr");\r
- return;\r
- }\r
-\r
- actualSleepTimeHours->SetTextColor(Color::White());\r
- actualSleepTimeHours->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_ACTUALSLEEPTIMEHOURS_FONT_SIZE);\r
- actualSleepTimeHours->SetVisible(false);\r
-\r
- actualSleepTimeHoursText = new UILabel();\r
- if (actualSleepTimeHoursText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeHoursText is nullptr");\r
- return;\r
- }\r
- actualSleepTimeHoursText->SetText("小时");\r
- actualSleepTimeHoursText->Resize(SLEEPDETAIL_SOBERINGTIME_WIDTH, SLEEPDETAIL_SOBERINGTIME_HEIGHT);\r
- actualSleepTimeHoursText->SetTextColor(Color::White());\r
- actualSleepTimeHoursText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- actualSleepTimeHoursText->SetVisible(false);\r
-\r
- actualSleepTimeMinutes = new UILabel();\r
- if (actualSleepTimeMinutes == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeMinutes is nullptr");\r
- return;\r
- }\r
-\r
- actualSleepTimeMinutes->Resize(SLEEPDETAIL_RAPID_WIDTH, SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT);\r
- actualSleepTimeMinutes->SetTextColor(Color::White());\r
- actualSleepTimeMinutes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_ACTUALSLEEPTIMINUTES_FONT_SIZE);\r
- actualSleepTimeMinutes->SetVisible(false);\r
-\r
- actualSleepTimeMinutesText = new UILabel();\r
- if (actualSleepTimeMinutesText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeHours is nullptr");\r
- return;\r
- }\r
-\r
- actualSleepTimeMinutesText->SetText("分钟");\r
- actualSleepTimeMinutesText->Resize(SLEEPDETAIL_SOBERINGTIME_WIDTH, SLEEPDETAIL_SOBERINGTIME_HEIGHT);\r
- actualSleepTimeMinutesText->SetTextColor(Color::White());\r
- actualSleepTimeMinutesText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- actualSleepTimeMinutesText->SetVisible(false);\r
-}\r
-\r
-void SleepingDetailsPage::InitActualSleepTime(std::tuple<uint32_t, uint32_t> timeTuple)\r
-{\r
- IoadDeatilActualSleepTime();\r
- uint32_t hours = std::get<0>(timeTuple);\r
- uint32_t minutes = std::get<1>(timeTuple);\r
-\r
- if ((hours == 0) && (minutes != 0)) {\r
- actualSleepTimeMinutes->SetPosition(SLEEPDETAIL_ACTUALSLEEP_X, SLEEPDETAIL_ACTUALSLEEP_Y);\r
- actualSleepTimeMinutes->SetVisible(true);\r
- actualSleepTimeMinutes->SetText(std::to_string(minutes).c_str());\r
- group->Add(actualSleepTimeMinutes);\r
-\r
- actualSleepTimeMinutesText->SetPosition(SLEEPDETAIL_ACTUALMINUTE_X, SLEEPDETAIL_ACTUALMINUTE_Y);\r
- actualSleepTimeMinutesText->SetVisible(true);\r
- group->Add(actualSleepTimeMinutesText);\r
- } else if ((hours != 0) && (minutes == 0)) {\r
- actualSleepTimeHours->SetPosition(SLEEPDETAIL_ACTUALSLEEP_X, SLEEPDETAIL_ACTUALSLEEP_Y);\r
- actualSleepTimeHours->Resize(SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT, SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT);\r
- actualSleepTimeHours->SetVisible(true);\r
- actualSleepTimeHours->SetText(std::to_string(hours).c_str());\r
- group->Add(actualSleepTimeHours);\r
-\r
- actualSleepTimeHoursText->SetPosition(SLEEPDETAIL_ACTUALMINUTE_X, SLEEPDETAIL_ACTUALMINUTE_Y);\r
- actualSleepTimeHoursText->SetVisible(true);\r
- group->Add(actualSleepTimeHoursText);\r
- } else if ((hours != 0) && (minutes != 0)) {\r
- actualSleepTimeHours->SetPosition(SLEEPDETAIL_ACTUALHOUR_X, SLEEPDETAIL_ACTUALHOUR_Y);\r
- actualSleepTimeHours->Resize(SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT, SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT);\r
-\r
- actualSleepTimeHours->SetVisible(true);\r
- actualSleepTimeHours->SetText(std::to_string(hours).c_str());\r
- group->Add(actualSleepTimeHours);\r
-\r
- actualSleepTimeHoursText->SetPosition(SLEEPDETAIL_ACTUALHOURTEXT_X, SLEEPDETAIL_ACTUALMINUTE_Y);\r
- actualSleepTimeHoursText->SetVisible(true);\r
- group->Add(actualSleepTimeHoursText);\r
-\r
- actualSleepTimeMinutes->SetPosition(SLEEPDETAIL_ACTUALMINUTE_X, SLEEPDETAIL_ACTUALHOUR_Y);\r
- actualSleepTimeMinutes->SetVisible(true);\r
- actualSleepTimeMinutes->SetText(std::to_string(minutes).c_str());\r
- group->Add(actualSleepTimeMinutes);\r
-\r
- actualSleepTimeMinutesText->SetPosition(SLEEPDETAIL_ACTUALMINUTETEXT_X, SLEEPDETAIL_ACTUALMINUTE_Y);\r
- actualSleepTimeMinutesText->SetVisible(true);\r
- group->Add(actualSleepTimeMinutesText);\r
- } else if ((hours == 0) && (minutes == 0)) {\r
- actualSleepTimeHours->SetPosition(ACTUALHOURS_X, SLEEPDETAIL_ACTUALHOUR_Y);\r
- actualSleepTimeHours->Resize(SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT, SLEEPDETAIL_ACTUALSLEEPTIMINUTES_HEIGHT);\r
- actualSleepTimeHours->SetVisible(true);\r
- actualSleepTimeHours->SetText("--");\r
- group->Add(actualSleepTimeHours);\r
-\r
- actualSleepTimeHoursText->SetPosition(ACTUALHOURSTEXT_X, SLEEPDETAIL_ACTUALMINUTE_Y);\r
- actualSleepTimeHoursText->SetVisible(true);\r
- group->Add(actualSleepTimeHoursText);\r
-\r
- actualSleepTimeMinutes->SetPosition(SLEEPDETAIL_ACTUALMINUTE_X, SLEEPDETAIL_ACTUALHOUR_Y);\r
- actualSleepTimeMinutes->SetVisible(true);\r
- actualSleepTimeMinutes->SetText("--");\r
- group->Add(actualSleepTimeMinutes);\r
-\r
- actualSleepTimeMinutesText->SetPosition(ACTUALMINUTESTEXT_X, SLEEPDETAIL_ACTUALMINUTE_Y);\r
- actualSleepTimeMinutesText->SetVisible(true);\r
- group->Add(actualSleepTimeMinutesText);\r
- }\r
-}\r
-\r
-void SleepingDetailsPage::InitDetailPage()\r
-{\r
- InitActualSleepTime(SleepingModel::GetInstance().GetSleepTime());\r
-\r
- soberingTimeText = new UILabel();\r
- if (soberingTimeText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soberingTimeText is nullptr");\r
- return;\r
- }\r
- soberingTimeText->SetText((SetTimeText(SleepingModel::GetInstance().GetSoberingTime())).c_str());\r
- soberingTimeText->SetPosition(SLEEPDETAIL_SOBERINGTEXT_X, SLEEPDETAIL_SOBERINGTIME_Y);\r
-\r
- soberingTimeText->Resize(SLEEPDETAIL_LABEL_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- soberingTimeText->SetTextColor(Color::White());\r
- soberingTimeText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- soberingTimeText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- soberingTimeText->SetStyle(STYLE_PADDING_RIGHT, SLEEPDETAIL_PADDING_RIGHT);\r
- group->Add(soberingTimeText);\r
-\r
- rapidEyeMovementText = new UILabel();\r
- if (rapidEyeMovementText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rapidEyeMovementText is nullptr");\r
- return;\r
- }\r
- rapidEyeMovementText->SetText((SetTimeText(SleepingModel::GetInstance().GetRapidEyeMovementTime())).c_str());\r
- rapidEyeMovementText->SetPosition(SLEEPDETAIL_SOBERINGTEXT_X, SLEEPDETAIL_RAPID_Y);\r
-\r
- rapidEyeMovementText->Resize(SLEEPDETAIL_LABEL_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- rapidEyeMovementText->SetTextColor(Color::White());\r
- rapidEyeMovementText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- rapidEyeMovementText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- rapidEyeMovementText->SetStyle(STYLE_PADDING_RIGHT, SLEEPDETAIL_PADDING_RIGHT);\r
- group->Add(rapidEyeMovementText);\r
-\r
- lightSleepTimeText = new UILabel();\r
- if (lightSleepTimeText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lightSleepTimeText is nullptr");\r
- return;\r
- }\r
- lightSleepTimeText->SetText((SetTimeText(SleepingModel::GetInstance().GetLightSleepTime())).c_str());\r
- lightSleepTimeText->SetPosition(SLEEPDETAIL_SOBERINGTEXT_X, SLEEPDETAIL_LIGHT_Y);\r
- lightSleepTimeText->Resize(SLEEPDETAIL_LABEL_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- lightSleepTimeText->SetTextColor(Color::White());\r
- lightSleepTimeText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- lightSleepTimeText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- lightSleepTimeText->SetStyle(STYLE_PADDING_RIGHT, SLEEPDETAIL_PADDING_RIGHT);\r
- group->Add(lightSleepTimeText);\r
-\r
- deepSleepTimeText = new UILabel();\r
- if (deepSleepTimeText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deepSleepTimeText is nullptr");\r
- return;\r
- }\r
- deepSleepTimeText->SetText((SetTimeText(SleepingModel::GetInstance().GetDeepSleepTime())).c_str());\r
- deepSleepTimeText->SetPosition(SLEEPDETAIL_SOBERINGTEXT_X, SLEEPDETAIL_DEEP_Y);\r
- deepSleepTimeText->Resize(SLEEPDETAIL_LABEL_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- deepSleepTimeText->SetTextColor(Color::White());\r
- deepSleepTimeText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- deepSleepTimeText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- deepSleepTimeText->SetStyle(STYLE_PADDING_RIGHT, SLEEPDETAIL_PADDING_RIGHT);\r
- group->Add(deepSleepTimeText);\r
-}\r
-\r
-void SleepingDetailsPage::InitNoDeatilPage()\r
-{\r
- actualSleepTime = new UILabel();\r
- if (actualSleepTime == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTime is nullptr");\r
- return;\r
- }\r
- actualSleepTime->SetText("无记录");\r
- actualSleepTime->SetPosition(SLEEPDETAIL_ACTUALSLEEP_NORECORD_X, SLEEPDETAIL_ACTUALSLEEP_NORECORD_Y);\r
- actualSleepTime->Resize(SLEEPDETAIL_ACTUAL_NORECODE_X, SLEEPDETAIL_SOBERINGTIME_WIDTH);\r
- actualSleepTime->SetTextColor(Color::White());\r
- actualSleepTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_ACTUALSLEEP_FONT_SIZE);\r
- group->Add(actualSleepTime);\r
-\r
- soberingTimeText = new UILabel();\r
- if (soberingTimeText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soberingTimeText is nullptr");\r
- return;\r
- }\r
- soberingTimeText->SetText("--");\r
- soberingTimeText->SetPosition(SLEEPDETAIL_SOBERTIMETEXT_X, SLEEPDETAIL_SOBERTIMETEXT_Y);\r
- soberingTimeText->Resize(SLEEPDETAIL_RAPID_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- soberingTimeText->SetTextColor(Color::White());\r
- soberingTimeText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- soberingTimeText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(soberingTimeText);\r
-\r
- rapidEyeMovementText = new UILabel();\r
- if (rapidEyeMovementText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rapidEyeMovementText is nullptr");\r
- return;\r
- }\r
- rapidEyeMovementText->SetText("--");\r
- rapidEyeMovementText->SetPosition(SLEEPDETAIL_SOBERTIMETEXT_X, SLEEPDETAIL_RAPIDTIMETEXT_Y);\r
- rapidEyeMovementText->Resize(SLEEPDETAIL_RAPID_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- rapidEyeMovementText->SetTextColor(Color::White());\r
- rapidEyeMovementText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- rapidEyeMovementText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(rapidEyeMovementText);\r
-\r
- lightSleepTimeText = new UILabel();\r
- if (lightSleepTimeText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lightSleepTimeText is nullptr");\r
- return;\r
- }\r
- lightSleepTimeText->SetText("--");\r
- lightSleepTimeText->SetPosition(SLEEPDETAIL_SOBERTIMETEXT_X, SLEEPDETAIL_LIGHTIMETEXT_Y);\r
- lightSleepTimeText->Resize(SLEEPDETAIL_RAPID_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- lightSleepTimeText->SetTextColor(Color::White());\r
- lightSleepTimeText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- lightSleepTimeText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(lightSleepTimeText);\r
-\r
- deepSleepTimeText = new UILabel();\r
- if (deepSleepTimeText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deepSleepTimeText is nullptr");\r
- return;\r
- }\r
- deepSleepTimeText->SetText("--");\r
- deepSleepTimeText->SetPosition(SLEEPDETAIL_SOBERTIMETEXT_X, SLEEPDETAIL_DEEPIMETEXT_Y);\r
- deepSleepTimeText->Resize(SLEEPDETAIL_RAPID_WIDTH, SLEEPDETAIL_RAPID_HEIGHT);\r
- deepSleepTimeText->SetTextColor(Color::White());\r
- deepSleepTimeText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_SOBERINGTIME_FONT_SIZE);\r
- deepSleepTimeText->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(deepSleepTimeText);\r
-}\r
-\r
-std::string SleepingDetailsPage::SetTimeText(std::tuple<uint32_t, uint32_t> timeTuple)\r
-{\r
- uint32_t hours = std::get<0>(timeTuple);\r
- uint32_t minutes = std::get<1>(timeTuple);\r
-\r
- std::string str = "";\r
- if ((hours == 0) && (minutes != 0)) {\r
- str = std::to_string(minutes) + "分钟";\r
- } else if ((hours != 0) && (minutes == 0)) {\r
- str = std::to_string(hours) + "小时";\r
- } else if ((hours != 0) && (minutes != 0)) {\r
- str = std::to_string(hours) + "小时" + std::to_string(minutes) + "分钟";\r
- } else if ((hours == 0) && (minutes == 0)) {\r
- str = "---";\r
- }\r
- return str;\r
-}\r
-\r
-bool SleepingDetailsPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- UNUSED(view);\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_MAIN_PAGE);\r
- }\r
- return true;\r
-}\r
-\r
-bool SleepingDetailsPage::GetRecord()\r
-{\r
- if (SleepingModel::GetInstance().GetRecord()) {\r
- return true;\r
- }\r
- return false;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingMainPage\r
- * Created: 2025-06-05\r
- */\r
-\r
-#include <string>\r
-#include "components/ui_list_nested.h"\r
-#include "components/ui_scroll_view_nested.h"\r
-#include "NativeAbility.h"\r
-#include "SlicePageFactory.h"\r
-#include "PageTransitionMgr.h"\r
-#include "settings/SetDesktopModel.h"\r
-#include "rebootdevice/RebootModel.h"\r
-#include "common/image_cache_manager.h"\r
-#include "diag_service.h"\r
-#include "msg_center_device.h"\r
-#include "diag_common.h"\r
-#include "sleep/TargetSleepTime.h"\r
-#include "sleep/SleepingMainPage.h"\r
-#include "sleep/SleepingPresenter.h"\r
-#include "sleep/SleepingView.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_SLICE_PAGE(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_MAIN_PAGE, SleepingMainPage, true);\r
-\r
-static constexpr int16_t SLEEPMAIN_SLEEP_X = 190;\r
-static constexpr int16_t SLEEPMAIN_SLEEP_Y = 50;\r
-static constexpr int16_t SLEEPMAIN_SLEEP_WIDTH = 64;\r
-static constexpr int16_t SLEEPMAIN_SLEEP_HEIGHT = 38;\r
-static constexpr int16_t SLEEPMAIN_SLEEP_FONT_SIZE = 38;\r
-static constexpr int16_t SLEEPMAIN_NORECORD_X = 179;\r
-static constexpr int16_t SLEEPMAIN_NORECORD_Y = 179;\r
-static constexpr int16_t SLEEPMAIN_NORECORD_WIDTH = 96;\r
-static constexpr int16_t SLEEPMAIN_NORECORD_HEIGHT = 48;\r
-static constexpr int16_t SLEEPMAIN_NORECORD_FONT_SIZE = 38;\r
-static constexpr int16_t SLEEPMAIN_TIPS_X = 93;\r
-static constexpr int16_t SLEEPMAIN_TIPS_Y = 321;\r
-static constexpr int16_t SLEEPMAIN_TIPS_WIDTH = 188;\r
-static constexpr int16_t SLEEPMAIN_TIPS_HEIGHT = 87;\r
-static constexpr int16_t SLEEPMAIN_TIPS_FONT_SIZE = 24;\r
-static constexpr int16_t SLEEPMAIN_SCORE_X = 164;\r
-static constexpr int16_t SLEEPMAIN_SCORE_Y = 129;\r
-static constexpr int16_t SLEEPMAIN_SCORE_WIDTH = 95;\r
-static constexpr int16_t SLEEPMAIN_SCORE_HEIGHT = 65;\r
-static constexpr int16_t SLEEPMAIN_SCORE_FONT_SIZE = 56;\r
-static constexpr int16_t SLEEPMAIN_MOONNORECORD_X = 154;\r
-static constexpr int16_t SLEEPMAIN_MOONNORECORD_Y = 154;\r
-static constexpr int16_t SLEEPMAIN_SCORETEXT_FONT_SIZE = 21;\r
-static constexpr int16_t SLEEP_SCORE_THRESHOLD_1 = 20;\r
-static constexpr int16_t SLEEP_SCORE_THRESHOLD_2 = 40;\r
-static constexpr int16_t SLEEP_SCORE_THRESHOLD_3 = 60;\r
-static constexpr int16_t SLEEP_SCORE_THRESHOLD_4 = 80;\r
-static constexpr int16_t SLEEP_SCORE_THRESHOLD_5 = 100;\r
-static constexpr int16_t SLEEP_FONT_SIZE_LARGE = 40;\r
-static constexpr int16_t SLEEPMAIN_SCORETEXT_X = 265;\r
-static constexpr int16_t SLEEPMAIN_SCORETEXT_Y = 161;\r
-static constexpr int16_t SLEEP_LABEL_WIDTH = 48;\r
-static constexpr int16_t SLEEP_LABEL_HEIGHT = 29;\r
-static constexpr int16_t SLEEP_TIME_LABEL_WIDTH = 100;\r
-static constexpr int16_t SLEEP_TIME_LABEL_HEIGHT = 50;\r
-static constexpr int16_t SLEEPMAIN_SETTING_X = 280;\r
-static constexpr int16_t SLEEPMAIN_SETTING_Y = 374;\r
-static constexpr int16_t SLEEPMAIN_ACTUALMINUTE_X = 230;\r
-static constexpr int16_t SLEEPMAIN_ACTUALMINUTE_Y = 319;\r
-static constexpr int16_t SLEEPMAIN_ACTUALHOUR_X = 135;\r
-static constexpr int16_t ACTUALHOURS_X = 140;\r
-static constexpr int16_t ACTUALMINUTES_X = 180;\r
-static constexpr int16_t ACTUALMINUTES_Y = 303;\r
-static constexpr int16_t SLEEPMAIN_ACTUALHOURTEXT_X = 170;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEPTIMEHOURS_FONT_SIZE = 32;\r
-static constexpr int16_t SLEEPMAIN_HEIGHT = 50;\r
-static constexpr int16_t SLEEPDETAIL_ACTUALSLEEPTIMINUTES_FONT_SIZE = 40;\r
-static constexpr int16_t SLEEPMAIN_ACTUALMINUTETEXT_X = 280;\r
-static constexpr int16_t SLEEPMAIN_ACTUALH_X = 170;\r
-static constexpr int16_t SLEEPMAIN_ACTUALMINUTETEXT2_X = 270;\r
-static constexpr int16_t SLEEPMAIN_CIR_HIGHT = 444;\r
-static constexpr int16_t SLEEPMAIN_CIR_X = 228;\r
-static constexpr int16_t SLEEPMAIN_CIR_Y = 228;\r
-static constexpr int16_t SLEEPMAIN_CIR_RADIUS = 215;\r
-static constexpr int16_t SLEEPMAIN_CIR_ANGLE = 360;\r
-static constexpr int16_t SLEEPMAIN_CIR_RANGE = 100;\r
-static constexpr int16_t SLEEPMAIN_CIR_LINE_WIDTH = 10;\r
-static constexpr int16_t SLEEPMAIN_SCORE = 100;\r
-static constexpr int16_t SLEEPMAIN_RATE = 100;\r
-static constexpr float MINUTE_HOUR = 60.0f;\r
-static constexpr int16_t TARGETTIMETEXT_Y = 363;\r
-static constexpr int16_t TARGETTIMEBUTTON_X = 137;\r
-static constexpr int16_t TARGETTIMETEXT_WIDTH = 184;\r
-static constexpr int16_t TARGETTIMETEXT_HIGHT = 46;\r
-static constexpr int16_t MAIN_SLEEP_COLOR_R = 181;\r
-static constexpr int16_t MAIN_SLEEP_COLOR_G = 402;\r
-static constexpr int16_t MAIN_SLEEP_COLOR_B = 255;\r
-static constexpr int16_t MAIN_SLEEP_OPT = 110;\r
-static constexpr int16_t MAIN_SLEEP_RANGE = 10;\r
-static constexpr int16_t MAIN_SLEEP_POSX_2 = 2;\r
-static constexpr int16_t MAIN_SLEEP_POSX_3 = 3;\r
-static constexpr int16_t MAIN_SLEEP_POSX_4 = 4;\r
-static constexpr int16_t MAIN_SLEEP_MOON_POSX = 198;\r
-static constexpr int16_t MAIN_SLEEP_SCORE_HEIGHT = 192;\r
-static constexpr int16_t MAIN_SLEEP_SCORE_X = 131;\r
-static constexpr int16_t MAIN_SLEEP_SCORE_Y = 200;\r
-static constexpr int16_t MAIN_SLEEP_STAR1_X = 145;\r
-static constexpr int16_t MAIN_SLEEP_STAR2_X = 180;\r
-static constexpr int16_t MAIN_SLEEP_STAR3_X = 215;\r
-static constexpr int16_t MAIN_SLEEP_STAR4_X = 250;\r
-static constexpr int16_t MAIN_SLEEP_STAR5_X = 285;\r
-static constexpr int16_t MAIN_SLEEP_STAR_Y = 255;\r
-static constexpr int16_t MAIN_SLEEP_SCORE_TEXT_FONT_SIZE = 55;\r
-static constexpr int16_t MAIN_SLEEP_STAR_NUM = 5;\r
-\r
-int posX[MAIN_SLEEP_STAR_NUM] = {MAIN_SLEEP_STAR1_X, MAIN_SLEEP_STAR2_X, MAIN_SLEEP_STAR3_X, MAIN_SLEEP_STAR4_X, MAIN_SLEEP_STAR5_X};\r
-int posY = MAIN_SLEEP_STAR_Y;\r
-\r
-SleepingMainPage::SleepingMainPage()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepingMainPage::SleepingMainPage");\r
-}\r
-\r
-SleepingMainPage::~SleepingMainPage()\r
-{\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
-\r
- if (imageViewMain != nullptr) {\r
- delete imageViewMain;\r
- imageViewMain = nullptr;\r
- }\r
-\r
- if (sleep != nullptr) {\r
- delete sleep;\r
- sleep = nullptr;\r
- }\r
-\r
- if (moonNoRecord != nullptr) {\r
- delete moonNoRecord;\r
- moonNoRecord = nullptr;\r
- }\r
-\r
- if (moon != nullptr) {\r
- delete moon;\r
- moon = nullptr;\r
- }\r
-\r
- if (noRecord != nullptr) {\r
- delete noRecord;\r
- noRecord = nullptr;\r
- }\r
-\r
- if (tips != nullptr) {\r
- delete tips;\r
- tips = nullptr;\r
- }\r
-\r
- if (sleepScores_ != nullptr) {\r
- delete sleepScores_;\r
- sleepScores_ = nullptr;\r
- }\r
-\r
- if (scoreText != nullptr) {\r
- delete scoreText;\r
- scoreText = nullptr;\r
- }\r
-\r
- if (sleepScore != nullptr) {\r
- delete sleepScore;\r
- sleepScore = nullptr;\r
- }\r
-\r
- if (scoreDisplayPicture1 != nullptr) {\r
- delete scoreDisplayPicture1;\r
- scoreDisplayPicture1 = nullptr;\r
- }\r
-\r
- if (scoreDisplayPicture2 != nullptr) {\r
- delete scoreDisplayPicture2;\r
- scoreDisplayPicture2 = nullptr;\r
- }\r
-\r
- if (scoreDisplayPicture3 != nullptr) {\r
- delete scoreDisplayPicture3;\r
- scoreDisplayPicture3 = nullptr;\r
- }\r
- if (scoreDisplayPicture4 != nullptr) {\r
- delete scoreDisplayPicture4;\r
- scoreDisplayPicture4 = nullptr;\r
- }\r
-\r
- if (scoreDisplayPicture5 != nullptr) {\r
- delete scoreDisplayPicture5;\r
- scoreDisplayPicture5 = nullptr;\r
- }\r
-\r
- if (setting != nullptr) {\r
- delete setting;\r
- setting = nullptr;\r
- }\r
-\r
- if (targetTimeText != nullptr) {\r
- delete targetTimeText;\r
- targetTimeText = nullptr;\r
- }\r
-\r
- if (actualSleepTimeHours != nullptr) {\r
- delete actualSleepTimeHours;\r
- actualSleepTimeHours = nullptr;\r
- }\r
-\r
- if (actualSleepTimeHoursText != nullptr) {\r
- delete actualSleepTimeHoursText;\r
- actualSleepTimeHoursText = nullptr;\r
- }\r
-\r
- if (actualSleepTimeMinutes != nullptr) {\r
- delete actualSleepTimeMinutes;\r
- actualSleepTimeMinutes = nullptr;\r
- }\r
-\r
- if (actualSleepTimeMinutesText != nullptr) {\r
- delete actualSleepTimeMinutesText;\r
- actualSleepTimeMinutesText = nullptr;\r
- }\r
-\r
- if (targetTimeButton != nullptr) {\r
- delete targetTimeButton;\r
- targetTimeButton = nullptr;\r
- }\r
-\r
- if (circleProgress != nullptr) {\r
- delete circleProgress;\r
- circleProgress = nullptr;\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepingMainPage::~SleepingMainPage");\r
-}\r
-\r
-void SleepingMainPage::OnStart(void* data)\r
-{\r
- group = new UIScrollView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group is nullptr");\r
- return;\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(RESOLUTION_WIDTH, RESOLUTION_HEIGHT);\r
- group->SetViewId("sleepMain");\r
-\r
- imageViewMain = new UIImageView();\r
- if (imageViewMain == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageViewMain is nullptr");\r
- return;\r
- }\r
- LOADIMG::LoadImageViewImg(imageViewMain, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_BACKGROUND);\r
- imageViewMain->SetPosition(0, 0, RESOLUTION_WIDTH, RESOLUTION_HEIGHT);\r
- group->Add(imageViewMain);\r
-\r
- if (GetRecord() == false) {\r
- InitNoRecordPage();\r
- } else {\r
- InitRecordPage();\r
- }\r
-\r
- group->SetOnDragListener(this);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- AddViewToPageContainer(group);\r
-}\r
-\r
-void SleepingMainPage::InitNoRecordPage()\r
-{\r
- sleep = new UILabel();\r
- if (sleep == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep is nullptr");\r
- return;\r
- }\r
- sleep->SetPosition(SLEEPMAIN_SLEEP_X, SLEEPMAIN_SLEEP_Y);\r
- sleep->Resize(SLEEPMAIN_SLEEP_WIDTH, SLEEPMAIN_SLEEP_HEIGHT);\r
- sleep->SetText("睡眠");\r
- sleep->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- sleep->SetTextColor(Color::White());\r
- sleep->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_SLEEP_FONT_SIZE);\r
- sleep->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(sleep);\r
-\r
- moonNoRecord = new UIImageView();\r
- if (moonNoRecord == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "moonNoRecord is nullptr");\r
- return;\r
- }\r
- LOADIMG::LoadImageViewImg(moonNoRecord, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_NORECORD_SLEEP);\r
- moonNoRecord->SetPosition(SLEEPMAIN_MOONNORECORD_X, SLEEPMAIN_MOONNORECORD_Y);\r
- group->Add(moonNoRecord);\r
-\r
- noRecord = new UILabel();\r
- if (noRecord == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "noRecord is nullptr");\r
- return;\r
- }\r
- noRecord->SetPosition(SLEEPMAIN_NORECORD_X, SLEEPMAIN_NORECORD_Y);\r
- noRecord->Resize(SLEEPMAIN_NORECORD_WIDTH, SLEEPMAIN_NORECORD_HEIGHT);\r
- noRecord->SetText("无记录");\r
- noRecord->SetTextColor(Color::White());\r
- noRecord->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_NORECORD_FONT_SIZE);\r
- noRecord->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(noRecord);\r
-\r
- tips = new UILabel();\r
- if (tips == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tips is nullptr");\r
- return;\r
- }\r
- tips->SetPosition(SLEEPMAIN_TIPS_X, SLEEPMAIN_TIPS_Y);\r
- tips->Resize(SLEEPMAIN_TIPS_WIDTH, SLEEPMAIN_TIPS_HEIGHT);\r
- tips->SetText("睡眠时间过短或睡眠中动作幅度大,手表可能检测不到睡眠");\r
- tips->SetTextColor(Color::White());\r
- tips->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_TIPS_FONT_SIZE);\r
- tips->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(tips);\r
-}\r
-\r
-void SleepingMainPage::InitRecordPage()\r
-{\r
- SleepingModel::GetInstance().SendData();\r
- CircleProgress();\r
- moon = new UIImageView();\r
- if (moon == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "moon is nullptr");\r
- return;\r
- }\r
-\r
- moon->SetPosition(MAIN_SLEEP_MOON_POSX, TARGETTIMETEXT_HIGHT);\r
- LOADIMG::LoadImageViewImg(moon, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_RECORD_SLEEP);\r
- group->Add(moon);\r
-\r
- sleepScores_ = new UILabel();\r
- if (sleepScores_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleepScores_ is nullptr");\r
- return;\r
- }\r
-\r
- sleepScores_->SetText(std::to_string(GetSleepingScores()).c_str());\r
- sleepScores_->SetPosition(SLEEPMAIN_SCORE_X, SLEEPMAIN_SCORE_Y);\r
- sleepScores_->Resize(SLEEPMAIN_SCORE_WIDTH, SLEEPMAIN_SCORE_HEIGHT);\r
- sleepScores_->SetTextColor(Color::White());\r
- sleepScores_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- sleepScores_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_SCORE_FONT_SIZE);\r
- sleepScores_->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(sleepScores_);\r
-\r
- scoreText = new UILabel();\r
- if (scoreText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scoreText is nullptr");\r
- return;\r
- }\r
- scoreText->SetText("分");\r
- scoreText->SetPosition(SLEEPMAIN_SCORETEXT_X, SLEEPMAIN_SCORETEXT_Y);\r
- scoreText->Resize(MAIN_SLEEP_SCORE_TEXT_FONT_SIZE, SLEEPMAIN_TIPS_FONT_SIZE);\r
- scoreText->SetTextColor(Color::White());\r
- scoreText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_SCORETEXT_FONT_SIZE);\r
- group->Add(scoreText);\r
- ScoreDisplay();\r
- sleepScore = new UILabel();\r
- if (sleepScore == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleepScore is nullptr");\r
- return;\r
- }\r
- sleepScore->SetText("夜间睡眠得分");\r
- sleepScore->Resize(MAIN_SLEEP_SCORE_HEIGHT, SLEEPMAIN_NORECORD_HEIGHT);\r
- sleepScore->SetPosition(MAIN_SLEEP_SCORE_X, MAIN_SLEEP_SCORE_Y);\r
- sleepScore->SetTextColor(Color::White());\r
- sleepScore->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPDETAIL_ACTUALSLEEPTIMEHOURS_FONT_SIZE);\r
- group->Add(sleepScore);\r
-\r
- // 显示具体睡觉时间\r
- IoadActualSleepTime(SleepingModel::GetInstance().GetSleepTime());\r
-\r
- // 加载目标按钮\r
- IoadTargetTimeButton(SleepingModel::GetInstance().GetTime());\r
-}\r
-void SleepingMainPage::InitScoreDisplayPicture()\r
-{\r
- if (scoreDisplayPicture1 == nullptr) {\r
- scoreDisplayPicture1 = new UIImageView();\r
- }\r
- scoreDisplayPicture1->SetPosition(posX[0], posY);\r
- group->Add(scoreDisplayPicture1);\r
-\r
- if (scoreDisplayPicture2 == nullptr) {\r
- scoreDisplayPicture2 = new UIImageView();\r
- }\r
- scoreDisplayPicture2->SetPosition(posX[1], posY);\r
- group->Add(scoreDisplayPicture2);\r
-\r
- if (scoreDisplayPicture3 == nullptr) {\r
- scoreDisplayPicture3 = new UIImageView();\r
- }\r
- scoreDisplayPicture3->SetPosition(posX[MAIN_SLEEP_POSX_2], posY);\r
- group->Add(scoreDisplayPicture3);\r
-\r
- if (scoreDisplayPicture4 == nullptr) {\r
- scoreDisplayPicture4 = new UIImageView();\r
- }\r
- scoreDisplayPicture4->SetPosition(posX[MAIN_SLEEP_POSX_3], posY);\r
- group->Add(scoreDisplayPicture4);\r
-\r
- if (scoreDisplayPicture5 == nullptr) {\r
- scoreDisplayPicture5 = new UIImageView();\r
- }\r
-\r
- scoreDisplayPicture5->SetPosition(posX[MAIN_SLEEP_POSX_4], posY);\r
- group->Add(scoreDisplayPicture5);\r
-}\r
-\r
-void SleepingMainPage::ScoreDisplay()\r
-{\r
- InitScoreDisplayPicture();\r
- if (GetSleepingScores() < SLEEP_SCORE_THRESHOLD_1) {\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture1, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture2, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture3, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture4, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture5, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- } else if (GetSleepingScores() >= SLEEP_SCORE_THRESHOLD_1 && GetSleepingScores() < SLEEP_SCORE_THRESHOLD_2) {\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture1, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture2, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture3, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture4, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture5, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- } else if (GetSleepingScores() >= SLEEP_SCORE_THRESHOLD_2 && GetSleepingScores() < SLEEP_SCORE_THRESHOLD_3) {\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture1, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture2, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture3, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture4, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture5, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- } else if (GetSleepingScores() >= SLEEP_SCORE_THRESHOLD_3 && GetSleepingScores() < SLEEP_SCORE_THRESHOLD_4) {\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture1, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture2, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture3, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture4, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture5, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- } else if (GetSleepingScores() >= SLEEP_SCORE_THRESHOLD_4 && GetSleepingScores() < SLEEP_SCORE_THRESHOLD_5) {\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture1, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture2, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture3, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture4, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture5, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_GRAY);\r
- } else if (GetSleepingScores() == SLEEP_SCORE_THRESHOLD_5) {\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture1, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture2, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture3, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture4, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- LOADIMG::LoadImageViewImg(scoreDisplayPicture5, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_STAR_YELLOW);\r
- }\r
-}\r
-\r
-void SleepingMainPage::InitSleepTimeLabel()\r
-{\r
- actualSleepTimeHours = new UILabel();\r
- if (actualSleepTimeHours == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeHours is nullptr");\r
- return;\r
- }\r
-\r
- actualSleepTimeHours->SetTextColor(Color::White());\r
- actualSleepTimeHours->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEP_FONT_SIZE_LARGE);\r
- actualSleepTimeHours->SetVisible(false);\r
-\r
- actualSleepTimeHoursText = new UILabel();\r
- if (actualSleepTimeHoursText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeHoursText is nullptr");\r
- return;\r
- }\r
- actualSleepTimeHoursText->SetText("小时");\r
- actualSleepTimeHoursText->Resize(SLEEP_LABEL_WIDTH, SLEEP_LABEL_HEIGHT);\r
- actualSleepTimeHoursText->SetTextColor(Color::White());\r
- actualSleepTimeHoursText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_TIPS_FONT_SIZE);\r
- actualSleepTimeHoursText->SetVisible(false);\r
-\r
- actualSleepTimeMinutes = new UILabel();\r
- if (actualSleepTimeMinutes == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeMinutes is nullptr");\r
- return;\r
- }\r
-\r
- actualSleepTimeMinutes->Resize(SLEEP_TIME_LABEL_WIDTH, SLEEP_TIME_LABEL_HEIGHT);\r
- actualSleepTimeMinutes->SetTextColor(Color::White());\r
- actualSleepTimeMinutes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEP_FONT_SIZE_LARGE);\r
- actualSleepTimeMinutes->SetVisible(false);\r
-\r
- actualSleepTimeMinutesText = new UILabel();\r
- if (actualSleepTimeMinutesText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "actualSleepTimeMinutesText is nullptr");\r
- return;\r
- }\r
-\r
- actualSleepTimeMinutesText->SetText("分钟");\r
- actualSleepTimeMinutesText->Resize(SLEEP_LABEL_WIDTH, SLEEP_LABEL_HEIGHT);\r
- actualSleepTimeMinutesText->SetTextColor(Color::White());\r
- actualSleepTimeMinutesText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_TIPS_FONT_SIZE);\r
- actualSleepTimeMinutesText->SetVisible(false);\r
-}\r
-\r
-void SleepingMainPage::IoadTargetTimeButton(std::tuple<uint32_t, uint32_t> timeTuple)\r
-{\r
- uint32_t hours = std::get<0>(timeTuple);\r
- uint32_t minutes = std::get<1>(timeTuple);\r
-\r
- std::string str = "";\r
- if ((hours == 0) && (minutes != 0)) {\r
- str = std::to_string(minutes) + "分钟";\r
- } else if ((hours != 0) && (minutes == 0)) {\r
- str = std::to_string(hours) + "小时";\r
- } else if ((hours != 0) && (minutes != 0)) {\r
- if (minutes < MAIN_SLEEP_RANGE && hours >= MAIN_SLEEP_RANGE) {\r
- str = " " + std::to_string(hours) + ":0" + std::to_string(minutes);\r
- } else if (hours < MAIN_SLEEP_RANGE && minutes >= MAIN_SLEEP_RANGE) {\r
- str = " 0"+ std::to_string(hours) + ":" + std::to_string(minutes);\r
- } else if (minutes < MAIN_SLEEP_RANGE && hours < MAIN_SLEEP_RANGE) {\r
- str = " 0" + std::to_string(hours) + ":0" + std::to_string(minutes);\r
- } else if (minutes >= MAIN_SLEEP_RANGE && hours >= MAIN_SLEEP_RANGE) {\r
- str = " " + std::to_string(hours) + ":" + std::to_string(minutes);\r
- }\r
- }\r
- targetTimeButton = new UILabelButton();\r
- if (targetTimeButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "targetTimeButton is nullptr");\r
- return;\r
- }\r
- targetTimeButton->SetPosition(TARGETTIMEBUTTON_X, TARGETTIMETEXT_Y);\r
- targetTimeButton->SetViewId("targetTime");\r
- targetTimeButton->SetOnClickListener(this);\r
- targetTimeButton->SetStyle(STYLE_BACKGROUND_COLOR,\r
- Color::GetColorFromRGBA(MAIN_SLEEP_COLOR_R, MAIN_SLEEP_COLOR_G,\r
- MAIN_SLEEP_COLOR_B, MAIN_SLEEP_OPT).full);\r
- targetTimeButton->SetStyleForState (\r
- STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(\r
- MAIN_SLEEP_COLOR_R, MAIN_SLEEP_COLOR_G, MAIN_SLEEP_COLOR_B, MAIN_SLEEP_OPT).full, UIButton::PRESSED);\r
- targetTimeButton->Resize(TARGETTIMETEXT_WIDTH, TARGETTIMETEXT_HIGHT);\r
- targetTimeButton->SetTextColor(Color::White());\r
- targetTimeButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_TIPS_FONT_SIZE);\r
- group->Add(targetTimeButton);\r
-\r
- targetTimeText = new UILabel();\r
- if (targetTimeText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "targetTimeText is nullptr");\r
- return;\r
- }\r
- std::string targetText = "目标" + str;\r
- targetTimeText->SetText(targetText.c_str());\r
- targetTimeText->SetPosition(SLEEPMAIN_MOONNORECORD_X, TARGETTIMETEXT_Y);\r
- targetTimeText->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- targetTimeText->Resize(TARGETTIMETEXT_WIDTH, TARGETTIMETEXT_HIGHT);\r
- targetTimeText->SetTextColor(Color::White());\r
- targetTimeText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SLEEPMAIN_TIPS_FONT_SIZE);\r
- targetTimeText->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- group->Add(targetTimeText);\r
-\r
- if (setting == nullptr) {\r
- setting = new UIImageView();\r
- }\r
- setting->SetPosition(SLEEPMAIN_SETTING_X, SLEEPMAIN_SETTING_Y);\r
- LOADIMG::LoadImageViewImg(setting, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_SETTING);\r
- group->Add(setting);\r
-}\r
-\r
-void SleepingMainPage::IoadActualSleepTime(std::tuple<uint32_t, uint32_t> timeTuple)\r
-{\r
- InitSleepTimeLabel();\r
- uint32_t hours = std::get<0>(timeTuple);\r
- uint32_t minutes = std::get<1>(timeTuple);\r
-\r
- if ((hours == 0) && (minutes != 0)) {\r
- actualSleepTimeMinutes->SetPosition(ACTUALMINUTES_X, ACTUALMINUTES_Y);\r
- actualSleepTimeMinutes->SetVisible(true);\r
- actualSleepTimeMinutes->SetText(std::to_string(minutes).c_str());\r
- group->Add(actualSleepTimeMinutes);\r
-\r
- actualSleepTimeMinutesText->SetPosition(SLEEPMAIN_ACTUALMINUTE_X, SLEEPMAIN_ACTUALMINUTE_Y);\r
- actualSleepTimeMinutesText->SetVisible(true);\r
- group->Add(actualSleepTimeMinutesText);\r
- } else if ((hours != 0) && (minutes == 0)) {\r
- actualSleepTimeHours->SetPosition(ACTUALMINUTES_X, ACTUALMINUTES_Y);\r
- actualSleepTimeHours->Resize(SLEEPMAIN_HEIGHT, SLEEPMAIN_HEIGHT);\r
-\r
- actualSleepTimeHours->SetVisible(true);\r
- actualSleepTimeHours->SetText(std::to_string(hours).c_str());\r
- group->Add(actualSleepTimeHours);\r
-\r
- actualSleepTimeHoursText->SetPosition(SLEEPMAIN_ACTUALMINUTE_X, SLEEPMAIN_ACTUALMINUTE_Y);\r
- actualSleepTimeHoursText->SetVisible(true);\r
- group->Add(actualSleepTimeHoursText);\r
- } else if ((hours != 0) && (minutes != 0)) {\r
- actualSleepTimeHours->SetPosition(SLEEPMAIN_ACTUALHOUR_X, ACTUALMINUTES_Y);\r
- actualSleepTimeHours->Resize(SLEEPMAIN_HEIGHT, SLEEPMAIN_HEIGHT);\r
-\r
- actualSleepTimeHours->SetVisible(true);\r
- actualSleepTimeHours->SetText(std::to_string(hours).c_str());\r
- group->Add(actualSleepTimeHours);\r
-\r
- actualSleepTimeHoursText->SetPosition(SLEEPMAIN_ACTUALHOURTEXT_X, SLEEPMAIN_ACTUALMINUTE_Y);\r
- actualSleepTimeHoursText->SetVisible(true);\r
- group->Add(actualSleepTimeHoursText);\r
-\r
- actualSleepTimeMinutes->SetPosition(SLEEPMAIN_ACTUALMINUTE_X, ACTUALMINUTES_Y);\r
- actualSleepTimeMinutes->SetVisible(true);\r
- actualSleepTimeMinutes->SetText(std::to_string(minutes).c_str());\r
- group->Add(actualSleepTimeMinutes);\r
-\r
- actualSleepTimeMinutesText->SetPosition(SLEEPMAIN_ACTUALMINUTETEXT_X, SLEEPMAIN_ACTUALMINUTE_Y);\r
- actualSleepTimeMinutesText->SetVisible(true);\r
- group->Add(actualSleepTimeMinutesText);\r
- } else if ((hours == 0) && (minutes == 0)) {\r
- actualSleepTimeHours->SetPosition(ACTUALHOURS_X, ACTUALMINUTES_Y);\r
- actualSleepTimeHours->Resize(SLEEPMAIN_HEIGHT, SLEEPMAIN_HEIGHT);\r
- actualSleepTimeHours->SetVisible(true);\r
- actualSleepTimeHours->SetText("--");\r
- group->Add(actualSleepTimeHours);\r
-\r
- actualSleepTimeHoursText->SetPosition(ACTUALMINUTES_X, SLEEPMAIN_ACTUALMINUTE_Y);\r
- actualSleepTimeHoursText->SetVisible(true);\r
- group->Add(actualSleepTimeHoursText);\r
-\r
- actualSleepTimeMinutes->SetPosition(SLEEPMAIN_ACTUALMINUTE_X, ACTUALMINUTES_Y);\r
- actualSleepTimeMinutes->SetVisible(true);\r
- actualSleepTimeMinutes->SetText("--");\r
- group->Add(actualSleepTimeMinutes);\r
-\r
- actualSleepTimeMinutesText->SetPosition(SLEEPMAIN_ACTUALMINUTETEXT2_X, SLEEPMAIN_ACTUALMINUTE_Y);\r
- actualSleepTimeMinutesText->SetVisible(true);\r
- group->Add(actualSleepTimeMinutesText);\r
- }\r
-}\r
-\r
-void SleepingMainPage::CircleProgress()\r
-{\r
- if (circleProgress == nullptr) {\r
- circleProgress = new UICircleProgress();\r
- }\r
- circleProgress->SetPosition(0, 0);\r
- circleProgress->Resize(SLEEPMAIN_CIR_HIGHT, SLEEPMAIN_CIR_HIGHT);\r
-\r
- circleProgress->SetCenterPosition(SLEEPMAIN_CIR_X, SLEEPMAIN_CIR_Y);\r
- circleProgress->SetRadius(SLEEPMAIN_CIR_RADIUS);\r
- circleProgress->SetStartAngle(0);\r
- circleProgress->SetEndAngle(SLEEPMAIN_CIR_ANGLE);\r
- circleProgress->SetRange(0, SLEEPMAIN_CIR_RANGE);\r
- circleProgress->SetBackgroundStyle(STYLE_LINE_COLOR, 0xFF6f29a0);\r
- circleProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xFFB566FF);\r
- circleProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, SLEEPMAIN_CIR_LINE_WIDTH);\r
- circleProgress->SetForegroundStyle(STYLE_LINE_WIDTH, SLEEPMAIN_CIR_LINE_WIDTH);\r
-\r
- group->Add(circleProgress);\r
- circleProgress->SetValue(GetSleepingScores());\r
- circleProgress->Invalidate();\r
-}\r
-\r
-uint32_t SleepingMainPage::GetSleepingScores()\r
-{\r
- uint32_t hours = SleepingModel::GetInstance().GetSleepTimeHours();\r
- uint32_t minutes = SleepingModel::GetInstance().GetSleepTimeMinutes();\r
- std::tuple<uint32_t, uint32_t> timeTuple = SleepingModel::GetInstance().GetTime();\r
- uint32_t timeHours = std::get<0>(timeTuple);\r
- uint32_t timeMinutes = std::get<1>(timeTuple);\r
- if (((hours * MINUTE_HOUR) + minutes) > ((timeHours * MINUTE_HOUR) + timeMinutes)) {\r
- return SLEEPMAIN_SCORE;\r
- } else {\r
- float score = ((hours * MINUTE_HOUR) + minutes) / ((timeHours * MINUTE_HOUR) + timeMinutes);\r
- return uint32_t(score * SLEEPMAIN_RATE);\r
- }\r
-}\r
-\r
-bool SleepingMainPage::GetRecord()\r
-{\r
- if (SleepingModel::GetInstance().GetRecord()) {\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-bool SleepingMainPage::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- UNUSED(view);\r
- if (strcmp(view.GetViewId(), "targetTime") == 0) {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_TARGET_PAGE);\r
- }\r
- return true;\r
-}\r
-\r
-bool SleepingMainPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepingMainPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- } else if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_DEATIL_PAGE);\r
- }\r
- return true;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingModel\r
- * Created: 2025-06-05\r
- */\r
-\r
-#include <sys/time.h>\r
-#include <time.h>\r
-#include <string>\r
-#include <cstring>\r
-#include "main/HealthModel.h"\r
-#include "uiservice/ui_service.h"\r
-#include "wearable_log.h"\r
-#include "NativeAbility.h"\r
-#include "ui_test_group.h"\r
-#include "graphic_timer.h"\r
-#include "ohos_timer.h"\r
-#include "wearable_onlinelog.h"\r
-#include "sleep/SleepingModel.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint64_t SLEEPMODEL_MINUTE_HOUR = 60;\r
-static constexpr uint64_t SLEEPMODEL_HOUR = 23;\r
-static constexpr uint64_t SLEEPMODEL_MINUTE = 59;\r
-static constexpr uint64_t SLEEPMODEL_ERROR = 100;\r
-static constexpr uint64_t SLEEPMODEL_DEEP = 4;\r
-static constexpr uint64_t SLEEPMODEL_LIGHT = 3;\r
-static constexpr uint64_t SLEEPMODEL_EYEMOVE = 2;\r
-static constexpr uint64_t SLEEPMODEL_EIGHT_HOUR = 480;\r
-\r
-SleepingModel::SleepingModel()\r
-{\r
- SetSleepData();\r
- SetSoberingTime();\r
- SetRapidEyeMovementTime();\r
- SetLightSleepTime();\r
- SetDeepSleepTime();\r
- SetTime(SLEEPMODEL_EIGHT_HOUR);\r
-}\r
-\r
-SleepingModel::~SleepingModel()\r
-{\r
-}\r
-\r
-bool SleepingModel::GetRecord()\r
-{\r
- if (sleepDataVector.empty() == true) {\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-uint8_t* SleepingModel::SerializeSleepData(const SleepData* sleepData, size_t* outSize)\r
-{\r
- if (sleepData == nullptr) {\r
- return nullptr;\r
- }\r
- size_t dataSize = sizeof(SleepData);\r
- *outSize = dataSize;\r
- uint8_t* buffer = new uint8_t[dataSize];\r
- uint8_t isSendValue = sleepData->isSend ? 1 : 0;\r
- memcpy_s(buffer, sizeof(isSendValue), &isSendValue, sizeof(isSendValue));\r
- memcpy_s(buffer + offsetof(SleepData, date), sizeof(sleepData->date),\r
- sleepData->date, sizeof(sleepData->date));\r
- memcpy_s(buffer + offsetof(SleepData, type), sizeof(sleepData->type),\r
- &sleepData->type, sizeof(sleepData->type));\r
- memcpy_s(buffer + offsetof(SleepData, start), sizeof(sleepData->start),\r
- sleepData->start, sizeof(sleepData->start));\r
- memcpy_s(buffer + offsetof(SleepData, end), sizeof(sleepData->end),\r
- sleepData->end, sizeof(sleepData->end));\r
- memcpy_s(buffer + offsetof(SleepData, sleepStart), sizeof(sleepData->sleepStart),\r
- sleepData->sleepStart, sizeof(sleepData->sleepStart));\r
- memcpy_s(buffer + offsetof(SleepData, sleepEnd), sizeof(sleepData->sleepEnd),\r
- sleepData->sleepEnd, sizeof(sleepData->sleepEnd));\r
- return buffer;\r
-}\r
-\r
-void SleepingModel::SendData()\r
-{\r
-#ifndef _WIN32\r
- // 发送数据\r
- size_t dataSize;\r
- for (int i = 0; i < sleepDataVector.size(); i++) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "send Date number: %d\n", i+1);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "send front isSend: %s\n\n",\r
- sleepDataVector[i].isSend ? "true" : "false");\r
- if (sleepDataVector[i].isSend == true) {\r
- continue;\r
- }\r
- PrintSleepData(&sleepDataVector[i]);\r
- uint8_t* serializedData = SerializeSleepData(&sleepDataVector[i], &dataSize);\r
- errcode_t ret = uapi_diag_service_send_log(msg_center_get_trans_channel(),\r
- MSGCENTER_TYPE_ID_SLEEP_DATA, serializedData, dataSize);\r
- delete[] serializedData;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MSGCENTER_TYPE_ID_SLEEP_DATA ret = %d", ret);\r
- if (ret == 0) {\r
- sleepDataVector[i].isSend = true;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "isSend after: %s\n\n", sleepDataVector[i].isSend ? "true" : "false");\r
- }\r
-#endif\r
-}\r
-\r
-void SleepingModel::SetSleepData()\r
-{\r
-#ifndef _WIN32\r
- sleepDataVector.push_back({\r
- false, "2025-06-03", 4, "2025-06-03 00:00:00", "2025-06-03 00:30:00",\r
- "2025-06-03 00:00:00", "2025-06-03 07:50:00"\r
- });\r
- sleepDataVector.push_back({\r
- false, "2025-06-03", 2, "2025-06-03 00:30:00", "2025-06-03 03:00:00",\r
- "2025-06-03 00:00:00", "2025-06-03 07:50:00"\r
- });\r
- sleepDataVector.push_back({\r
- false, "2025-06-03", 3, "2025-06-03 03:00:00", "2025-06-03 03:30:00",\r
- "2025-06-03 00:00:00", "2025-06-03 07:50:00"\r
- });\r
- sleepDataVector.push_back({\r
- false, "2025-06-03", 1, "2025-06-03 03:30:00", "2025-06-03 05:30:00",\r
- "2025-06-03 00:00:00", "2025-06-03 07:50:00"\r
- });\r
- sleepDataVector.push_back({\r
- false, "2025-06-03", 3, "2025-06-03 05:30:00", "2025-06-03 06:00:00",\r
- "2025-06-03 00:00:00", "2025-06-03 07:50:00"\r
- });\r
- sleepDataVector.push_back({\r
- false, "2025-06-03", 2, "2025-06-03 06:00:00", "2025-06-03 07:30:00",\r
- "2025-06-03 00:00:00", "2025-06-03 07:50:00"\r
- });\r
- sleepDataVector.push_back({\r
- false, "2025-06-03", 4, "2025-06-03 07:30:00", "2025-06-03 07:50:00",\r
- "2025-06-03 00:00:00", "2025-06-03 07:50:00"\r
- });\r
-#endif\r
-}\r
-\r
-void SleepingModel::PrintSleepData(const SleepData *data)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "isSend: %s\n\n", data->isSend ? "true" : "false");\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PrintSleepData Date: %s\n", data->date);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sleep type: %u\n", data->type);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Start: %s\n", data->start);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "End: %s\n", data->end);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sleep Start: %s\n", data->sleepStart);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sleep End: %s\n", data->sleepEnd);\r
-}\r
-\r
-SleepingModel &SleepingModel::GetInstance()\r
-{\r
- static SleepingModel instance;\r
- return instance;\r
-}\r
-\r
-std::tuple<uint32_t, uint32_t> SleepingModel::GetSoberingTime()\r
-{\r
- return MinutesToHours(soberingTime);\r
-}\r
-\r
-std::tuple<uint32_t, uint32_t> SleepingModel::GetRapidEyeMovementTime()\r
-{\r
- return MinutesToHours(eyeMoveTime);\r
-}\r
-\r
-std::tuple<uint32_t, uint32_t> SleepingModel::GetLightSleepTime()\r
-{\r
- return MinutesToHours(lightTime);\r
-}\r
-\r
-std::tuple<uint32_t, uint32_t> SleepingModel::GetDeepSleepTime()\r
-{\r
- return MinutesToHours(deepTime);\r
-}\r
-\r
-std::tuple<uint32_t, uint32_t> SleepingModel::GetSleepTime()\r
-{\r
- return MinutesToHours(GetTotalSleepTime());\r
-}\r
-\r
-std::tuple<uint32_t, uint32_t> SleepingModel::MinutesToHours(uint32_t minutes)\r
-{\r
- if (minutes == 0) {\r
- return std::make_tuple(0, 0);\r
- }\r
- int hours = minutes / SLEEPMODEL_MINUTE_HOUR;\r
- int remainingMinutes = minutes % SLEEPMODEL_MINUTE_HOUR;\r
-\r
- if (hours > SLEEPMODEL_HOUR || remainingMinutes > SLEEPMODEL_MINUTE) {\r
- return std::make_tuple(SLEEPMODEL_ERROR, 0);\r
- }\r
-\r
- return std::make_tuple(hours, remainingMinutes);\r
-}\r
-\r
-uint32_t SleepingModel::GetSleepTimeHours()\r
-{\r
- std::tuple<uint32_t, uint32_t> timeTuple = GetSleepTime();\r
- return std::get<0>(timeTuple);\r
-}\r
-\r
-uint32_t SleepingModel::GetSleepTimeMinutes()\r
-{\r
- std::tuple<uint32_t, uint32_t> timeTuple = GetSleepTime();\r
- return std::get<1>(timeTuple);\r
-}\r
-\r
-void SleepingModel::SetTime(uint32_t minute)\r
-{\r
- sleepTarget = minute;\r
-}\r
-\r
-std::tuple<uint32_t, uint32_t> SleepingModel::GetTime()\r
-{\r
- return MinutesToHours(sleepTarget);\r
-}\r
-\r
-uint32_t SleepingModel::TimeDiffInMinutes(const std::string& timeStr1, const std::string& timeStr2)\r
-{\r
- std::tm tm1 = {};\r
- std::tm tm2 = {};\r
-\r
- std::istringstream iss1(timeStr1);\r
- std::istringstream iss2(timeStr2);\r
-\r
- iss1 >> std::get_time(&tm1, "%Y-%m-%d %H:%M:%S");\r
- if (iss1.fail()) {\r
- return -1;\r
- }\r
-\r
- iss2 >> std::get_time(&tm2, "%Y-%m-%d %H:%M:%S");\r
- if (iss2.fail()) {\r
- return -1;\r
- }\r
-\r
- std::time_t t1 = std::mktime(&tm1);\r
- std::time_t t2 = std::mktime(&tm2);\r
- if (t1 == -1 || t2 == -1) {\r
- return -1;\r
- }\r
-\r
- double diff_seconds = std::difftime(t2, t1);\r
- return static_cast<uint32_t>(diff_seconds / SLEEPMODEL_MINUTE_HOUR);\r
-}\r
-\r
-// 遍历vector中的结构体 获取对应类型的时间差\r
-uint32_t SleepingModel::GetDetailData(int type)\r
-{\r
- uint32_t min = 0;\r
- for (size_t i = 0; i < sleepDataVector.size(); ++i) {\r
- if (sleepDataVector[i].type == type) {\r
- min += TimeDiffInMinutes(sleepDataVector[i].start, sleepDataVector[i].end);\r
- }\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetDetailData type: %d\n", type);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetDetailData min: %d\n", min);\r
- return min;\r
-}\r
-\r
-// 获取总睡觉时间的时间差\r
-uint32_t SleepingModel::GetTotalSleepTime()\r
-{\r
- uint32_t time = TimeDiffInMinutes(sleepDataVector[0].sleepStart, sleepDataVector[0].sleepEnd);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetTotalSleepTime time: %d\n", time);\r
- return time;\r
-}\r
-\r
-void SleepingModel::SetSoberingTime()\r
-{\r
- soberingTime = GetDetailData(SLEEPMODEL_DEEP);\r
-}\r
-void SleepingModel::SetRapidEyeMovementTime()\r
-{\r
- eyeMoveTime=GetDetailData(SLEEPMODEL_LIGHT);\r
-}\r
-void SleepingModel::SetLightSleepTime()\r
-{\r
- lightTime = GetDetailData(SLEEPMODEL_EYEMOVE);\r
-}\r
-void SleepingModel::SetDeepSleepTime()\r
-{\r
- deepTime = GetDetailData(1);\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SleepingPresenter\r
- * Created: 2025-06-05\r
- */\r
-\r
-#include "NativeRegisterManager.h"\r
-#include "sleep/SleepingView.h"\r
-#include "sleep/SleepingPresenter.h"\r
-\r
-namespace OHOS {\r
-REGIST_MENU(VIEW_SLEEPING, SleepingView, SleepingPresenter, SLEEP_ICON, PNG_APPLIST_DEFAULT_IMG, "睡眠");\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetSleepTime\r
- * Created: 2025-06-05\r
- */\r
-#include <string>\r
-#include "components/ui_list_nested.h"\r
-#include "components/ui_scroll_view_nested.h"\r
-#include "NativeAbility.h"\r
-#include "SlicePageFactory.h"\r
-#include "PageTransitionMgr.h"\r
-#include "settings/SetDesktopModel.h"\r
-#include "rebootdevice/RebootModel.h"\r
-#include "common/image_cache_manager.h"\r
-#include "sleep/TargetSleepTime.h"\r
-#include "sleep/SleepingMainPage.h"\r
-#include "sleep/SleepingPresenter.h"\r
-#include "sleep/SleepingView.h"\r
-\r
-namespace OHOS {\r
-constexpr uint8_t BACKGROUND_FONT = 40;\r
-constexpr uint8_t HIGHTLIGHT_FONT = 50;\r
-static constexpr int16_t TARGET_SLEEP_SETTARGET_X = 120;\r
-static constexpr int16_t TARGET_SLEEP_SETTARGET_Y = 40;\r
-static constexpr int16_t TARGET_SLEEP_SETTARGET_WIDTH = 200;\r
-static constexpr int16_t TARGET_SLEEP_SETTARGET_HIGHT = 38;\r
-static constexpr int16_t TARGET_SLEEP_SETTARGET_FONT_SIZE = 32;\r
-static constexpr int16_t TARGET_SLEEP_START_X = 112;\r
-static constexpr int16_t TARGET_SLEEP_START_Y = 347;\r
-static constexpr int16_t TARGET_SLEEP_START_WIDTH = 232;\r
-static constexpr int16_t TARGET_SLEEP_START_HIGHT = 76;\r
-static constexpr int16_t TARGET_SLEEP_PICKER2_X = 270;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_Y = 132;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_WIDTH = 80;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_HIGHT = 188;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_BORDER = 3;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_RADIUS = 11;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_ITEM = 63;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_HOUR = 24;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_MINUTE = 60;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_HOUR_RANGE = 23;\r
-static constexpr int16_t TARGET_SLEEP_PICKER_MINUTE_RANGE = 59;\r
-static constexpr int16_t TARGET_SLEEP_TIMERLABEL_X = 131;\r
-static constexpr int16_t TARGET_SLEEP_TIMERLABEL2_X = 273;\r
-static constexpr int16_t TARGET_SLEEP_TIMERLABEL_Y = 99;\r
-static constexpr int16_t TARGET_SLEEP_TIMERLABEL2_Y = 90;\r
-static constexpr int16_t TARGET_SLEEP_TIMERLABEL_WIDTH = 55;\r
-static constexpr int16_t TARGET_SLEEP_TIMERLABEL_HEIGHT = 30;\r
-static constexpr uint8_t TIMERLABEL_FONT = 24;\r
-static constexpr int16_t TARGET_SLEEP_COLOR_R = 181;\r
-static constexpr int16_t TARGET_SLEEP_COLOR_G = 402;\r
-static constexpr int16_t TARGET_SLEEP_COLOR_B = 255;\r
-static constexpr int16_t NUM_PICKER = 2;\r
-static constexpr int16_t TARGET_SLEEP_PICKER1_X = 115;\r
-static constexpr int16_t TARGET_SLEEP_PICKER2_Y = 255;\r
-\r
-// 时间选择器分钟列\r
-const char *uiPickerMinute[] = {"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",\r
- "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",\r
- "21", "22", "23", "24", "25", "26", "27", "28", "29", "30",\r
- "31", "32", "33", "34", "35", "36", "37", "38", "39", "40",\r
- "41", "42", "43", "44", "45", "46", "47", "48", "49", "50",\r
- "51", "52", "53", "54", "55", "56", "57", "58", "59"};\r
-\r
-// 时间选择器小时列\r
-const char *uiPickerHour[] = {"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14",\r
- "15", "16", "17", "18", "19", "20", "21", "22", "23"};\r
-\r
-REGIST_SLICE_PAGE(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_TARGET_PAGE, TargetSleepTime, false);\r
-\r
-TargetSleepTime::~TargetSleepTime()\r
-{\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
-\r
- if (setTraget != nullptr) {\r
- delete setTraget;\r
- setTraget = nullptr;\r
- }\r
-\r
- if (timerLabel != nullptr) {\r
- delete timerLabel;\r
- timerLabel = nullptr;\r
- }\r
-\r
- if (startButton != nullptr) {\r
- delete startButton;\r
- startButton = nullptr;\r
- }\r
-\r
- if (backgroundImage != nullptr) {\r
- delete backgroundImage;\r
- backgroundImage = nullptr;\r
- }\r
-\r
- for (int i = 0; i < NUM_PICKER; i++) {\r
- if (timerPicker[i] != nullptr) {\r
- delete timerPicker[i];\r
- timerPicker[i] = nullptr;\r
- }\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetSleepTime::~TargetSleepTime");\r
-}\r
-\r
-void TargetSleepTime::OnStart(void* data)\r
-{\r
- group = new UIScrollView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group is nullptr");\r
- return;\r
- }\r
- group->SetPosition(0, 0);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
-\r
- backgroundImage = new UIImageView();\r
- if (backgroundImage == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backgroundImage is nullptr");\r
- return;\r
- }\r
- backgroundImage->SetPosition(0, 0);\r
- LOADIMG::LoadImageViewImg(backgroundImage, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_BLACK_BG);\r
- group->Add(backgroundImage);\r
-\r
- setTraget = new UILabel();\r
- if (setTraget == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "setTraget is nullptr");\r
- return;\r
- }\r
- setTraget->SetPosition(TARGET_SLEEP_SETTARGET_X, TARGET_SLEEP_SETTARGET_Y);\r
- setTraget->Resize(TARGET_SLEEP_SETTARGET_WIDTH, TARGET_SLEEP_SETTARGET_HIGHT);\r
- setTraget->SetText("设置目标");\r
- setTraget->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- setTraget->SetTextColor(Color::White());\r
- setTraget->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TARGET_SLEEP_SETTARGET_FONT_SIZE);\r
- setTraget->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- group->Add(setTraget);\r
-\r
- TargetTimeButton();\r
- CreateLabel();\r
- CreatePicker();\r
-\r
- group->SetOnDragListener(this);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- AddViewToPageContainer(group);\r
-}\r
-\r
-void TargetSleepTime::TargetTimeButton()\r
-{\r
- startButton = new UILabelButton();\r
- if (startButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startButton is nullptr");\r
- return;\r
- }\r
- startButton->SetPosition(TARGET_SLEEP_START_X, TARGET_SLEEP_START_Y);\r
- startButton->Resize(TARGET_SLEEP_START_WIDTH, TARGET_SLEEP_START_HIGHT);\r
- startButton->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- startButton->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- startButton->SetViewId("start");\r
-\r
- startButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TARGET_SLEEP_SETTARGET_FONT_SIZE);\r
- startButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Purple().full);\r
- startButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::White().full, UIButton::PRESSED);\r
- startButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::White().full, UIButton::RELEASED);\r
- startButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::INACTIVE);\r
- LOADIMG::LoadBtnImage(startButton, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_SETTIMEBTN, IMAGE_CONVERTER_TOOL_SETTIMEBTN);\r
- startButton->SetText("开始");\r
- startButton->SetTextColor(Color::White());\r
- startButton->Enable();\r
- startButton->SetOnClickListener(this);\r
- group->Add(startButton);\r
-}\r
-\r
-void TargetSleepTime::SetPickerTime()\r
-{\r
- std::tuple<uint32_t, uint32_t> time = SleepingModel::GetInstance().GetTime();\r
- uint32_t timeHours = std::get<0>(time);\r
- uint32_t timeMinutes = std::get<1>(time);\r
- timerPicker[0] -> SetSelected(timeHours);\r
- timerPicker[1] -> SetSelected(timeMinutes);\r
-}\r
-\r
-void TargetSleepTime::CreatePicker()\r
-{\r
- int posX[NUM_PICKER] = {TARGET_SLEEP_PICKER1_X, TARGET_SLEEP_PICKER2_Y};\r
- int posY = TARGET_SLEEP_PICKER_Y;\r
- for (int i = 0; i < NUM_PICKER; i++) {\r
- if (timerPicker[i] == nullptr) {\r
- timerPicker[i] = new UIPicker();\r
- }\r
- timerPicker[i]->SetPosition(posX[i], posY);\r
- timerPicker[i]->Resize(TARGET_SLEEP_PICKER_WIDTH, TARGET_SLEEP_PICKER_HIGHT);\r
- timerPicker[i]->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- timerPicker[i]->SetStyle(STYLE_BORDER_WIDTH, TARGET_SLEEP_PICKER_BORDER);\r
- timerPicker[i]->SetStyle(STYLE_BORDER_RADIUS, TARGET_SLEEP_PICKER_RADIUS);\r
- timerPicker[i]->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);\r
- timerPicker[i]->SetItemHeight(TARGET_SLEEP_PICKER_ITEM);\r
- timerPicker[i]->SetLoopState(true);\r
- timerPicker[i]->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
- timerPicker[i]->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
- timerPicker[i]->SetTextColor(Color::Gray(), Color::White());\r
- if (i == 0) {\r
- timerPicker[i]->SetValues(uiPickerHour, TARGET_SLEEP_PICKER_HOUR);\r
- timerPicker[i]->SetSelected(TARGET_SLEEP_PICKER_HOUR_RANGE);\r
- } else {\r
- timerPicker[i]->SetValues(uiPickerMinute, TARGET_SLEEP_PICKER_MINUTE);\r
- timerPicker[i]->SetSelected(TARGET_SLEEP_PICKER_MINUTE_RANGE);\r
- }\r
- timerPicker[i]->SetOnClickListener(this);\r
- timerPicker[i]->SetOnDragListener(this);\r
- timerPicker[i]->RegisterSelectedListener(this);\r
- timerPicker[i]->SetDraggable(true);\r
- group->Add(timerPicker[i]);\r
- }\r
-\r
- timerPicker[0]->SetViewId("hourPicker");\r
- timerPicker[1]->SetViewId("minPicker");\r
- SetPickerTime();\r
-}\r
-\r
-bool TargetSleepTime::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- UNUSED(event);\r
- std::string viewId = view.GetViewId();\r
- if (viewId == "start") {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimerMainPage::OnClick viewId == ONE_MIN");\r
- int hour = std::stoi(uiPickerHour[timerPicker[0]->GetSelected()]);\r
- uint8_t minute = std::stoi(uiPickerMinute[timerPicker[1]->GetSelected()]);\r
- SleepingModel::GetInstance().SetTime((hour * TARGET_SLEEP_PICKER_MINUTE) + minute);\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_MAIN_PAGE);\r
- }\r
- return false;\r
-}\r
-\r
-void TargetSleepTime::CreateLabel()\r
-{\r
- if (timerLabel == nullptr) {\r
- timerLabel = new UILabel();\r
- }\r
- timerLabel->SetPosition(TARGET_SLEEP_TIMERLABEL_X, TARGET_SLEEP_TIMERLABEL_Y);\r
- timerLabel->Resize(TARGET_SLEEP_TIMERLABEL_WIDTH, TARGET_SLEEP_TIMERLABEL_HEIGHT);\r
- timerLabel->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- timerLabel->SetText("小时");\r
- timerLabel->SetStyle(STYLE_BACKGROUND_COLOR, 0xFFB566FF);\r
- timerLabel->SetTextColor(Color::Black());\r
- timerLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- timerLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TIMERLABEL_FONT);\r
- timerLabel->SetVisible(false);\r
-\r
- group->Add(timerLabel);\r
-}\r
-\r
-bool TargetSleepTime::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetSleepTime::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_SLEEPING, SLEEPING_PAGES::SLEEPING_MAIN_PAGE);\r
- }\r
- if (view.GetViewId() == "hourPicker") {\r
- timerPicker[0]->SetStyle(STYLE_BORDER_COLOR,\r
- Color::GetColorFromRGB(TARGET_SLEEP_COLOR_R, TARGET_SLEEP_COLOR_G, TARGET_SLEEP_COLOR_B).full);\r
- timerPicker[1]->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);\r
- timerPicker[0]->Invalidate();\r
- timerPicker[1]->Invalidate();\r
- timerLabel->SetVisible(true);\r
- timerLabel->SetPosition(TARGET_SLEEP_TIMERLABEL_X, TARGET_SLEEP_TIMERLABEL2_Y);\r
- timerLabel->SetText("小时");\r
- timerLabel->Invalidate();\r
- } else if (view.GetViewId() == "minPicker") {\r
- timerPicker[1]->SetStyle(STYLE_BORDER_COLOR,\r
- Color::GetColorFromRGB(TARGET_SLEEP_COLOR_R, TARGET_SLEEP_COLOR_G, TARGET_SLEEP_COLOR_B).full);\r
- timerPicker[0]->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);\r
- timerPicker[0]->Invalidate();\r
- timerPicker[1]->Invalidate();\r
- timerLabel->SetVisible(true);\r
- timerLabel->SetPosition(TARGET_SLEEP_TIMERLABEL2_X, TARGET_SLEEP_TIMERLABEL2_Y);\r
- timerLabel->SetText("分钟");\r
- timerLabel->Invalidate();\r
- }\r
- return true;\r
-}\r
-\r
-void TargetSleepTime::OnPickerStoped(UIPicker& picker)\r
-{\r
- if (picker.GetViewId() == "hourPicker") {\r
- uint16_t hour = picker.GetSelected();\r
- picker.SetStyle(STYLE_BORDER_COLOR,\r
- Color::GetColorFromRGB(TARGET_SLEEP_COLOR_R, TARGET_SLEEP_COLOR_G, TARGET_SLEEP_COLOR_B).full);\r
- picker.Invalidate();\r
- if ((hour == 0) && (timerPicker[1]->GetSelected() == 0)) {\r
- startButton->SetText("");\r
- startButton->Disable();\r
- LOADIMG::LoadBtnImage(startButton, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_START_GRAY,\r
- IMAGE_CONVERTER_TOOL_START_GRAY);\r
- } else {\r
- startButton->SetText("开始");\r
- startButton->SetTextColor(Color::White());\r
- startButton->Enable();\r
- LOADIMG::LoadBtnImage(startButton, SLEEP_IMAGE,\r
- IMAGE_CONVERTER_TOOL_SETTIMEBTN, IMAGE_CONVERTER_TOOL_SETTIMEBTN);\r
- }\r
- timerLabel->SetVisible(true);\r
- timerLabel->SetPosition(TARGET_SLEEP_TIMERLABEL_X, TARGET_SLEEP_TIMERLABEL2_Y);\r
- timerLabel->SetText("小时");\r
- timerLabel->Invalidate();\r
- } else {\r
- uint16_t minute = picker.GetSelected();\r
- picker.SetStyle(STYLE_BORDER_COLOR,\r
- Color::GetColorFromRGB(TARGET_SLEEP_COLOR_R, TARGET_SLEEP_COLOR_G, TARGET_SLEEP_COLOR_B).full);\r
- picker.Invalidate();\r
- if ((minute == 0) && (timerPicker[0]->GetSelected() == 0)) {\r
- startButton->SetText("");\r
- startButton->Disable();\r
- LOADIMG::LoadBtnImage(startButton, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_START_GRAY,\r
- IMAGE_CONVERTER_TOOL_START_GRAY);\r
- } else {\r
- startButton->SetText("开始");\r
- startButton->SetTextColor(Color::White());\r
- startButton->Enable();\r
- LOADIMG::LoadBtnImage(startButton, SLEEP_IMAGE, IMAGE_CONVERTER_TOOL_SETTIMEBTN,\r
- IMAGE_CONVERTER_TOOL_SETTIMEBTN);\r
- }\r
- timerLabel->SetVisible(true);\r
- timerLabel->SetPosition(TARGET_SLEEP_TIMERLABEL2_X, TARGET_SLEEP_TIMERLABEL2_Y);\r
- timerLabel->SetText("分钟");\r
- timerLabel->Invalidate();\r
- }\r
-}\r
-}\r
-\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Sports Model\r
- * Create: 2025-04-28\r
- */\r
-\r
-#include "sports/SportsView.h"\r
-#include "sports/SportsModel.h"\r
-#include "samgr_lite.h"\r
-#include "broadcast_feature.h"\r
-#include "broadcast_service.h"\r
-#include "wearable_log.h"\r
-#include "heartrate/HeartModel.h"\r
-#include "device_location.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-using namespace OHOS;\r
-static sport_data_t g_sportData = {0};\r
-static void Notify(void *args, const Topic topic, Request *request);\r
-\r
-Subscriber sportsSubscirber = {\r
- .identity = nullptr,\r
- .args = nullptr,\r
- .Notify = Notify,\r
-};\r
-\r
-void SportsSubscribeTopic(Topic topic)\r
-{\r
-#if !defined(_WIN32)\r
- BroadcastApi *broadcastApi = nullptr;\r
- IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
- if (api == nullptr) {\r
- return;\r
- }\r
- int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
- if (result != 0 || broadcastApi == nullptr) {\r
- return;\r
- }\r
- int ret = broadcastApi->SubscribeTopic((IUnknown *)broadcastApi, topic, &sportsSubscirber);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsSubscribeTopic ret = %d, topic = %u", ret, topic);\r
- broadcastApi->Release((IUnknown *)broadcastApi);\r
-#endif\r
-}\r
-\r
-void SportsUnsubscribeTopic(Topic topic)\r
-{\r
-#if !defined(_WIN32)\r
- BroadcastApi *broadcastApi = nullptr;\r
- IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
- if (api == nullptr) {\r
- return;\r
- }\r
- int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
- if (result != 0 || broadcastApi == nullptr) {\r
- return;\r
- }\r
- broadcastApi->UnsubscribeTopic((IUnknown *)broadcastApi, topic, &sportsSubscirber);\r
- broadcastApi->Release((IUnknown *)broadcastApi);\r
-#endif\r
-}\r
-\r
-static void Notify(void *args, const Topic topic, Request *request)\r
-{\r
- UNUSED(args);\r
- UNUSED(topic);\r
- if (request == nullptr) {\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "topic=[%d,%d]\n", topic, request->msgId);\r
- SportsView *sportView = SportsView::GetInstance();\r
- bool active = OHOS::SportsModel::GetInstance()->IsActive();\r
- if (sportView != nullptr && active) {\r
- if (request->msgId == TOPIC_EVENT_HEARTRATE_UPDATA) {\r
- HeartDatas *sportsInfo = (HeartDatas *)request->data;\r
- g_sportData.heartrate = sportsInfo->perSec;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "heartrate=[%d]\n", g_sportData.heartrate);\r
- sportView->SetHeartRate(g_sportData.heartrate);\r
- }\r
- if (request->msgId == TOPIC_EVENT_STEPDATA_UPDATE) {\r
- g_sportData.step += *(uint32_t *)request->data;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "step=[%d]\n", g_sportData.step);\r
- sportView->SetStep(g_sportData.step);\r
- }\r
- if (request->msgId == TOPIC_EVENT_SPORT_DISTANCE) {\r
- g_sportData.distance += *(uint32_t *)request->data;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "distance=[%d]\n", g_sportData.distance);\r
- sportView->SetDistance(g_sportData.distance);\r
- uint32_t speed = OHOS::SportsModel::GetInstance()->CalculateSpeed(g_sportData.distance);\r
- g_sportData.speed = speed;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "speed=[%d]\n", g_sportData.speed);\r
- sportView->SetSpeed(speed);\r
- }\r
- if (request->msgId == TOPIC_EVENT_LOCATION) {\r
- LocationInfo_t *locationData = (LocationInfo_t *)request->data;\r
- g_sportData.lat = locationData->latitude_;\r
- g_sportData.lng = locationData->longitude_;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "location=[%d,%d]\n", g_sportData.lat, g_sportData.lng);\r
- }\r
- }\r
-}\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-namespace OHOS {\r
-\r
-static constexpr uint16_t MS_ONE_SECONDS = 1000;\r
-static constexpr uint16_t NUM_TEN = 10;\r
-static constexpr uint16_t NUM_TIME_MIN = 60;\r
-static constexpr uint16_t NUM_TIME_HOUR = 3600;\r
-static constexpr uint32_t NUM_TIME_DAY = 86400;\r
-\r
-SportsModel::SportsModel()\r
-{\r
- InitSportsTimer();\r
-}\r
-\r
-SportsModel::~SportsModel()\r
-{\r
- StopSportsTimer(true);\r
- SportsUnsubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);\r
- SportsUnsubscribeTopic(TOPIC_EVENT_STEPDATA_UPDATE);\r
- SportsUnsubscribeTopic(TOPIC_EVENT_SPORT_DISTANCE);\r
- SportsUnsubscribeTopic(TOPIC_EVENT_LOCATION);\r
-}\r
-\r
-SportsModel *SportsModel::GetInstance(void)\r
-{\r
- static SportsModel instance;\r
- return &instance;\r
-}\r
-\r
-void SportsModel::Init()\r
-{\r
- SportsSubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);\r
- SportsSubscribeTopic(TOPIC_EVENT_STEPDATA_UPDATE);\r
- SportsSubscribeTopic(TOPIC_EVENT_SPORT_DISTANCE);\r
- SportsSubscribeTopic(TOPIC_EVENT_LOCATION);\r
-}\r
-\r
-std::string SportsModel::CountingSportsTime()\r
-{\r
- std::string strSportTime;\r
- std::string hours;\r
- std::string minute;\r
- std::string seconds;\r
- if (uiSportTime_ >= NUM_TIME_DAY) {\r
- uiSportTime_ = 0;\r
- }\r
- int hour = uiSportTime_ / NUM_TIME_HOUR;\r
- int min = (uiSportTime_ % NUM_TIME_HOUR) / NUM_TIME_MIN;\r
- int sec = (uiSportTime_ % NUM_TIME_HOUR) % NUM_TIME_MIN;\r
- if (hour >= 0 && hour < NUM_TEN) {\r
- hours = "0" + std::to_string(hour);\r
- } else {\r
- hours = std::to_string(hour);\r
- }\r
- if (min >= 0 && min < NUM_TEN) {\r
- minute = "0" + std::to_string(min);\r
- } else {\r
- minute = std::to_string(min);\r
- }\r
- if (sec >= 0 && sec < NUM_TEN) {\r
- seconds = "0" + std::to_string(sec);\r
- } else {\r
- seconds = std::to_string(sec);\r
- }\r
-\r
- strSportTime = hours + ":" + minute + ":" + seconds;\r
- return strSportTime;\r
-}\r
-\r
-void SportsModel::IncrSportsTime()\r
-{\r
- uiSportTime_++;\r
-}\r
-\r
-/* 定时器回调函数 */\r
-static void SportsTimerCallback(void *data)\r
-{\r
- (void)data;\r
- SportsModel::GetInstance()->IncrSportsTime();\r
- SportsView *view = SportsView::GetInstance();\r
- if (view != nullptr) {\r
- std::string sportTime = SportsModel::GetInstance()->CountingSportsTime();\r
- view->SetTime(sportTime.c_str());\r
- }\r
-}\r
-\r
-/* 创建定时器 */\r
-void SportsModel::InitSportsTimer()\r
-{\r
- if (pGraphicTimer_ != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SportsModel::InitSportsTimer GraphicTimer already exists!!");\r
- return;\r
- }\r
- uint32_t tick = GetOSTick(MS_ONE_SECONDS);\r
- pGraphicTimer_ = new GraphicTimer(tick, SportsTimerCallback, nullptr, true);\r
- if (pGraphicTimer_ == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SportsModel::InitSportsTimer new GraphicTimer failed!!");\r
- return;\r
- }\r
-}\r
-\r
-/* 开启定时器 */\r
-bool SportsModel::StartSportsTimer()\r
-{\r
- if (pGraphicTimer_ != nullptr) {\r
- bool retTimer = pGraphicTimer_->Start();\r
- if (!retTimer) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartSportsTimer GraphicTimer Start failed!!");\r
- if (pGraphicTimer_ != nullptr) {\r
- delete pGraphicTimer_;\r
- pGraphicTimer_ = nullptr;\r
- }\r
- return false;\r
- }\r
- isActive_ = true;\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-/* 关闭定时器 */\r
-void SportsModel::StopSportsTimer(bool isDelete)\r
-{\r
- if (pGraphicTimer_ != nullptr) {\r
- pGraphicTimer_->Stop();\r
- isActive_ = false;\r
- if (isDelete) {\r
- delete pGraphicTimer_;\r
- pGraphicTimer_ = nullptr;\r
- uiSportTime_ = 0;\r
- }\r
- }\r
-}\r
-\r
-bool SportsModel::IsActive()\r
-{\r
- return isActive_;\r
-}\r
-\r
-sport_data_t *SportsModel::GetSportsData()\r
-{\r
- return &g_sportData;\r
-}\r
-\r
-void SportsModel::ResetSportsData()\r
-{\r
- uiSportTime_ = 0;\r
- memset_s(&g_sportData, sizeof(sport_data_t), 0, sizeof(sport_data_t));\r
-}\r
-\r
-uint32_t SportsModel::CalculateSpeed(uint32_t distance)\r
-{\r
- uint32_t speed_multiply100 = 0;\r
- if (uiSportTime_ != 0) {\r
- speed_multiply100 = (distance * NUM_TIME_HOUR) / (uiSportTime_ * NUM_TEN);\r
- }\r
- return speed_multiply100;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SPorts Presenter\r
- * Create: 2025-04-28\r
- */\r
-\r
-#include "sports/SportsPresenter.h"\r
-#include "sports/SportsView.h"\r
-#include "sports/SportsModel.h"\r
-#include "wearable_log.h"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_SLICE(VIEW_SPORTS, SportsView, SportsPresenter);\r
-\r
-static SportsPresenter *g_pSportsPresenter = nullptr;\r
-\r
-SportsPresenter::SportsPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsPresenter::SportsPresenter");\r
- g_pSportsPresenter = this;\r
-}\r
-\r
-SportsPresenter::~SportsPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsPresenter::~SportsPresenter");\r
- g_pSportsPresenter = nullptr;\r
-}\r
-\r
-SportsPresenter *SportsPresenter::GetInstance()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsPresenter GetInstance");\r
- return g_pSportsPresenter;\r
-}\r
-\r
-bool SportsPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsPresenter::OnDrag");\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsPresenter::OnDrag ChangeSlice");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);\r
- }\r
- return true;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Sports View\r
- * Create: 2025-04-28\r
- */\r
-\r
-#include "sports/SportsView.h"\r
-#include "sports/SportsModel.h"\r
-#include "sports/SportsPresenter.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "uiservice/ui_service.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t NUM_TEN = 10;\r
-static constexpr uint16_t NUM_HUNDRED = 100;\r
-static constexpr uint16_t NUM_THOUSAND = 1000;\r
-static constexpr uint16_t LEFT1_X = 47;\r
-static constexpr uint16_t LEFT1_Y = 100;\r
-static constexpr uint16_t LEFT1_W = 180;\r
-static constexpr uint16_t RIGHT1_X = 227;\r
-static constexpr uint16_t RIGHT1_Y = 100;\r
-static constexpr uint16_t RIGHT1_W = 180;\r
-static constexpr uint16_t LEFT2_X = 47;\r
-static constexpr uint16_t LEFT2_Y = 210;\r
-static constexpr uint16_t LEFT2_W = 180;\r
-static constexpr uint16_t RIGHT2_X = 227;\r
-static constexpr uint16_t RIGHT2_Y = 210;\r
-static constexpr uint16_t RIGHT2_W = 180;\r
-static constexpr uint16_t BOTTOM_X = 92;\r
-static constexpr uint16_t BOTTOM_Y = 320;\r
-static constexpr uint16_t BOTTOM_W = 270;\r
-static constexpr uint16_t LABLE_H = 70;\r
-static constexpr uint16_t UNIT_LEFT1_Y = 150;\r
-static constexpr uint16_t UNIT_RIGHT1_Y = 150;\r
-static constexpr uint16_t UNIT_LEFT2_Y = 260;\r
-static constexpr uint16_t UNIT_RIGHT2_Y = 260;\r
-static constexpr uint16_t UNIT_BOTTOM_Y = 370;\r
-static constexpr uint16_t UNIT_H = 50;\r
-static constexpr uint16_t CONTENT_FONT = 40;\r
-static constexpr uint16_t TITLE_FONT = 30;\r
-\r
-static SportsView *g_pSportsView{nullptr};\r
-SportsView::SportsView()\r
-{\r
- ScreenTurnOn(-1);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsView::SportsView");\r
- g_pSportsView = this;\r
-}\r
-\r
-SportsView::~SportsView()\r
-{\r
- ScreenTurnOff();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SportsView::~SportsView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- }\r
- if (backGround != nullptr) {\r
- delete backGround;\r
- backGround = nullptr;\r
- }\r
- delete group;\r
- group = nullptr;\r
- g_pSportsView = nullptr;\r
-}\r
-\r
-SportsView *SportsView::GetInstance()\r
-{\r
- return g_pSportsView;\r
-}\r
-\r
-bool SportsView::InitLableView(int index, const char *text, uint16_t x, uint16_t y1, uint16_t w, uint16_t y2)\r
-{\r
- if (index < SPORT_TIME || index >= SPORT_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SportsView::InitLableView index param error");\r
- return false;\r
- }\r
-\r
- ContentLabel[index].SetPosition(x, y1, w, LABLE_H);\r
- ContentLabel[index].SetFont(DEFAULT_VECTOR_FONT_FILENAME, CONTENT_FONT);\r
- ContentLabel[index].SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- ContentLabel[index].SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(&ContentLabel[index]);\r
-\r
- TitleLabel[index].SetPosition(x, y2, w, UNIT_H);\r
- TitleLabel[index].SetText(text);\r
- TitleLabel[index].SetFont(DEFAULT_VECTOR_FONT_FILENAME, TITLE_FONT);\r
- TitleLabel[index].SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- TitleLabel[index].SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(&TitleLabel[index]);\r
- return true;\r
-}\r
-\r
-void SportsView::InitSportDataLabel()\r
-{\r
- ContentLabel[SPORT_TIME].SetText("00:00:00");\r
- ContentLabel[SPORT_SETP].SetText("0");\r
- ContentLabel[SPORT_DISTANCE].SetText("0.00");\r
- ContentLabel[SPORT_HEARTRATE].SetText("0");\r
- ContentLabel[SPORT_SPEED].SetText("0.00");\r
-}\r
-\r
-bool SportsView::InitView()\r
-{\r
- bool ret = false;\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return false;\r
- }\r
- group->SetPosition(0, 0); // 0:x; 0:y\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- group->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
-\r
- backGround = new UIImageView();\r
- if (backGround == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFirst new fail");\r
- return false;\r
- }\r
- backGround->SetPosition(0, 0); // 0 : X; 0 : Y\r
- backGround->SetSrc(PNG_WALK_BACK_GROUND);\r
- group->Add(backGround);\r
-\r
- InitSportDataLabel();\r
- ret = InitLableView(SPORT_SETP, "步数", LEFT1_X, LEFT1_Y, LEFT1_W, UNIT_LEFT1_Y);\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitLableView(SPORT_DISTANCE, "距离(km)", RIGHT1_X, RIGHT1_Y, RIGHT1_W, UNIT_RIGHT1_Y);\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitLableView(SPORT_HEARTRATE, "心率(bpm)", LEFT2_X, LEFT2_Y, LEFT2_W, UNIT_LEFT2_Y);\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitLableView(SPORT_SPEED, "速度(km/h)", RIGHT2_X, RIGHT2_Y, RIGHT2_W, UNIT_RIGHT2_Y);\r
- if (!ret) {\r
- return false;\r
- }\r
- ret = InitLableView(SPORT_TIME, "时间", BOTTOM_X, BOTTOM_Y, BOTTOM_W, UNIT_BOTTOM_Y);\r
- if (!ret) {\r
- return false;\r
- }\r
- UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(SportsPresenter::GetInstance());\r
- group->SetOnDragListener(dragListener);\r
-\r
- AddViewToRootContainer(group);\r
- return true;\r
-}\r
-\r
-void SportsView::OnStart()\r
-{\r
- if (!InitView()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SportsView::OnStart InitView fail");\r
- }\r
- return;\r
-}\r
-\r
-void SportsView::SetStep(uint32_t step)\r
-{\r
- ContentLabel[SPORT_SETP].SetText(std::to_string(step).c_str());\r
- ContentLabel[SPORT_SETP].Invalidate();\r
-}\r
-\r
-void SportsView::SetHeartRate(uint16_t heartrate)\r
-{\r
- ContentLabel[SPORT_HEARTRATE].SetText(std::to_string(heartrate).c_str());\r
- ContentLabel[SPORT_HEARTRATE].Invalidate();\r
-}\r
-\r
-void SportsView::SetDistance(uint32_t distance)\r
-{\r
- std::string distance_str;\r
- uint32_t distance_int_part = distance / NUM_THOUSAND;\r
- uint32_t distance_fractional_part = (distance % NUM_THOUSAND) / NUM_TEN;\r
- if (distance_fractional_part < NUM_TEN) {\r
- distance_str = std::to_string(distance_int_part) + ".0" + std::to_string(distance_fractional_part);\r
- } else {\r
- distance_str = std::to_string(distance_int_part) + "." + std::to_string(distance_fractional_part);\r
- }\r
- ContentLabel[SPORT_DISTANCE].SetText(distance_str.c_str());\r
- ContentLabel[SPORT_DISTANCE].Invalidate();\r
-}\r
-\r
-void SportsView::SetSpeed(uint32_t speed)\r
-{\r
- std::string speed_str;\r
- uint32_t speed_int_part = speed / NUM_HUNDRED;\r
- uint32_t speed_fractional_part = speed % NUM_HUNDRED;\r
-\r
- if (speed_fractional_part < NUM_TEN) {\r
- speed_str = std::to_string(speed_int_part) + ".0" + std::to_string(speed_fractional_part);\r
- } else {\r
- speed_str = std::to_string(speed_int_part) + "." + std::to_string(speed_fractional_part);\r
- }\r
-\r
- ContentLabel[SPORT_SPEED].SetText(speed_str.c_str());\r
- ContentLabel[SPORT_SPEED].Invalidate();\r
-}\r
-\r
-void SportsView::SetTime(const char *time)\r
-{\r
- ContentLabel[SPORT_TIME].SetText(time);\r
- ContentLabel[SPORT_TIME].Invalidate();\r
-}\r
-\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: StopwatchAdapter\r
- * Create: 2025-06-06\r
- */\r
-#include "stopwatch/StopwatchAdapter.h"\r
-#include "stopwatch/StopwatchItemView.h"\r
-\r
-namespace OHOS {\r
-StopwatchAdapter::StopwatchAdapter() {}\r
-\r
-StopwatchAdapter::~StopwatchAdapter()\r
-{\r
- listData_.Clear();\r
-}\r
-\r
-uint16_t StopwatchAdapter::GetCount(void)\r
-{\r
- return listData_.Size();\r
-}\r
-\r
-void StopwatchAdapter::SetData(const List<StopwatchItem> &data)\r
-{\r
- if (!listData_.IsEmpty()) {\r
- listData_.Clear();\r
- }\r
- ListNode<StopwatchItem> *node = data.Head();\r
- while (node != data.End()) {\r
- listData_.PushBack(node->data_);\r
- node = node->next_;\r
- }\r
-}\r
-\r
-UIView *StopwatchAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData_.IsEmpty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData_.Size()) {\r
- return nullptr;\r
- }\r
-\r
- ListNode<StopwatchItem> *node = listData_.Head();\r
- for (int i = 0; i < index; i++) {\r
- node = node->next_;\r
- }\r
- StopwatchItem itemData = node->data_;\r
- StopwatchItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new StopwatchItemView();\r
- } else {\r
- item = static_cast<StopwatchItemView *>(inView);\r
- }\r
- size_t rindex = listData_.Size() - index;\r
- item->SetItemInfo(rindex, itemData);\r
- return item;\r
-}\r
-\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "font/ui_font.h"\r
-#include "temperature/TempClickMea.h"\r
-\r
-namespace OHOS {\r
-static TempClickMea *g_tempClickMea = nullptr;\r
-\r
-static const int16 TEMP_LABEL_FIRST_X = 40;\r
-static const int16 TEMP_LABEL_FIRST_Y = 100;\r
-static const int16 TEMP_LABEL_FIRST_WIDTH = 350;\r
-static const int16 TEMP_LABEL_FIRST_HEIGHT = 180;\r
-static const int16 TEMP_BUTTON_X = 120;\r
-static const int16 TEMP_BUTTON_FIRST_Y = 290;\r
-static const int16 TEMP_BUTTON_SECOND_Y = 390;\r
-static const int16 TEMP_BUTTON_WIDTH = 220;\r
-static const int16 TEMP_BUTTON_HEIGHT = 80;\r
-static const int16 TEMP_LABEL_FONT = 36;\r
-static const char *TEMP_CLICK_MEA_LABEL = (char*)"为减少环境影响,建议在室内、无风、无冷/热源干扰条件下进行测量。";\r
-static const char *TEMP_BUTTON_INTER_LABEL = (char*)"立即测量";\r
-static const char *TEMP_BUTTON_CLOSE_LABEL = (char*)"稍后测量";\r
-\r
-TempClickMea::TempClickMea()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempClickMea::TempClickMea");\r
- g_tempClickMea = this;\r
-}\r
-\r
-TempClickMea::~TempClickMea()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempClickMea::~TempClickMea");\r
- RemoveAll();\r
- int num;\r
- if (tempLabel != nullptr) {\r
- delete tempLabel;\r
- tempLabel = nullptr;\r
- }\r
- for (num = SET_ZERO; num < SET_TWO; num++) {\r
- if (tempButton[num] != nullptr) {\r
- delete tempButton[num];\r
- tempButton[num] = nullptr;\r
- }\r
- }\r
- g_tempClickMea = nullptr;\r
-}\r
-\r
-TempClickMea *TempClickMea::GetInstance(void)\r
-{\r
- return g_tempClickMea;\r
-}\r
-\r
-bool TempClickMea::TempInitButton(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- tempButton[SET_ZERO] = new UILabelButton();\r
- if (tempButton[SET_ZERO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempClickMea::TempInitButton new tempButton[SET_ZERO] error");\r
- return false;\r
- }\r
- tempButton[SET_ZERO]->SetPosition(TEMP_BUTTON_X, TEMP_BUTTON_FIRST_Y, TEMP_BUTTON_WIDTH, TEMP_BUTTON_HEIGHT);\r
- tempButton[SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT);\r
- tempButton[SET_ZERO]->SetText(TEMP_BUTTON_INTER_LABEL);\r
- tempButton[SET_ZERO]->SetViewId(TEMP_MEA_IN);\r
- tempButton[SET_ZERO]->SetOnClickListener(clickListener);\r
- tempButton[SET_ZERO]->SetStyleForState(STYLE_BACKGROUND_COLOR,\r
- TempPresenter::GetInstance()->CyanColor().full, UIButton::RELEASED);\r
- tempButton[SET_ZERO]->SetStyleForState(STYLE_BACKGROUND_COLOR,\r
- TempPresenter::GetInstance()->CyanColor().full, UIButton::PRESSED);\r
- tempButton[SET_ZERO]->SetStyleForState(STYLE_BACKGROUND_COLOR,\r
- TempPresenter::GetInstance()->CyanColor().full, UIButton::INACTIVE);\r
- Add(tempButton[SET_ZERO]);\r
-\r
- tempButton[SET_ONE] = new UILabelButton();\r
- if (tempButton[SET_ONE] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitButton new tempButton[SET_ONE] error");\r
- return false;\r
- }\r
- tempButton[SET_ONE]->SetPosition(TEMP_BUTTON_X, TEMP_BUTTON_SECOND_Y, TEMP_BUTTON_WIDTH, TEMP_BUTTON_HEIGHT);\r
- tempButton[SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT);\r
- tempButton[SET_ONE]->SetText(TEMP_BUTTON_CLOSE_LABEL);\r
- tempButton[SET_ONE]->SetViewId(TEMP_MEA_EXIT);\r
- tempButton[SET_ONE]->SetOnClickListener(clickListener);\r
- tempButton[SET_ONE]->SetTextColor(OHOS::TempPresenter::GetInstance()->CyanColor());\r
- tempButton[SET_ONE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::RELEASED);\r
- tempButton[SET_ONE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::PRESSED);\r
- tempButton[SET_ONE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::INACTIVE);\r
- Add(tempButton[SET_ONE]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempClickMea::TempInitLabel(void)\r
-{\r
- tempLabel = new UILabel();\r
- if (tempLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempClickMea::TempInitLabel new label fail");\r
- return false;\r
- }\r
- tempLabel->SetText(TEMP_CLICK_MEA_LABEL);\r
- tempLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT);\r
- tempLabel->SetPosition(TEMP_LABEL_FIRST_X, TEMP_LABEL_FIRST_Y, TEMP_LABEL_FIRST_WIDTH, TEMP_LABEL_FIRST_HEIGHT);\r
- Add(tempLabel);\r
- return true;\r
-}\r
-\r
-bool TempClickMea::InitClickMea(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempClickMea::InitClickMea");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempClickMea::InitClickMea TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetScrollBlankSize(50); // 50:font size\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempClickMea::InitClickMea TempInitLabel() false");\r
- return false;\r
- }\r
- if (!TempInitButton()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempClickMea::InitClickMea TempInitButton() false");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-void TempClickMea::RefreshClickMea(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempClickMea::RefreshClickMea");\r
- ScrollBy(0, TEMP_LABEL_FIRST_Y - tempLabel->GetY());\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempContinueWarn.h"\r
-\r
-namespace OHOS {\r
-static TempContinueWarn *g_tempContinueWarn = nullptr;\r
-\r
-static const int16 TEMP_IMAGE_X = 182;\r
-static const int16 TEMP_IMAGE_Y = 30;\r
-static const int16 TEMP_LABEL_ONE_X = 190;\r
-static const int16 TEMP_LABEL_ONE_Y = 130;\r
-static const int16 TEMP_LABEL_ONE_WIDTH = 100;\r
-static const int16 TEMP_LABEL_ONE_HEIGHT = 35;\r
-static const int16 TEMP_LABEL_ONE_FONT = 35;\r
-static const int16 TEMP_LABEL_TWO_X = 155;\r
-static const int16 TEMP_LABEL_TWO_Y = 200;\r
-static const int16 TEMP_LABEL_TWO_WIDTH = 200;\r
-static const int16 TEMP_LABEL_TWO_HEIGHT = 45;\r
-static const int16 TEMP_LABEL_TWO_FONT = 40;\r
-static const int16 TEMP_LABEL_THREE_X = 70;\r
-static const int16 TEMP_LABEL_THREE_Y = 265;\r
-static const int16 TEMP_LABEL_THREE_WIDTH = 290;\r
-static const int16 TEMP_LABEL_THREE_HEIGHT = 60;\r
-static const char *TEMP_LABEL_ONE_TEXT = (char*)"体温";\r
-static const char *TEMP_HOT_WARN = (char*)"体温过高";\r
-static const char *TEMP_COLD_WARN = (char*)"体温过低";\r
-static const char *TEMP_HOT_WARN_LABEL = (char*)"最近10分钟体温高于37.2";\r
-static const char *TEMP_COLD_WARN_LABEL = (char*)"最近10分钟体温低于35.5";\r
-\r
-TempContinueWarn::TempContinueWarn()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::TempContinueWarn");\r
- g_tempContinueWarn = this;\r
-}\r
-\r
-TempContinueWarn::~TempContinueWarn()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::~TempContinueWarn");\r
- RemoveAll();\r
- int16 num;\r
- if (tempImage != nullptr) {\r
- delete tempImage;\r
- tempImage = nullptr;\r
- }\r
- for (num = SET_ZERO; num < SET_THREE; num++) {\r
- if (tempLabel[num] != nullptr) {\r
- delete tempLabel[num];\r
- tempLabel[num] = nullptr;\r
- }\r
- }\r
- g_tempContinueWarn = nullptr;\r
-}\r
-\r
-TempContinueWarn *TempContinueWarn::GetInstance(void)\r
-{\r
- return g_tempContinueWarn;\r
-}\r
-\r
-bool TempContinueWarn::TempInitLabel(void)\r
-{\r
- tempLabel[SET_ZERO] = new UILabel();\r
- if (tempLabel[SET_ZERO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::TempInitLabel new tempLabel[SET_ZERO] fail");\r
- return false;\r
- }\r
- tempLabel[SET_ZERO]->SetPosition(TEMP_LABEL_ONE_X, TEMP_LABEL_ONE_Y, TEMP_LABEL_ONE_WIDTH, TEMP_LABEL_ONE_HEIGHT);\r
- tempLabel[SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_ONE_FONT);\r
- tempLabel[SET_ZERO]->SetText(TEMP_LABEL_ONE_TEXT);\r
- tempLabel[SET_ZERO]->SetTextColor(Color::Gray());\r
- tempLabel[SET_ZERO]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- Add(tempLabel[SET_ZERO]);\r
- \r
- tempLabel[SET_ONE] = new UILabel();\r
- if (tempLabel[SET_ONE] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::TempInitLabel new tempLabel[SET_ONE] fail");\r
- return false;\r
- }\r
- tempLabel[SET_ONE]->SetPosition(TEMP_LABEL_TWO_X, TEMP_LABEL_TWO_Y, TEMP_LABEL_TWO_WIDTH, TEMP_LABEL_TWO_HEIGHT);\r
- tempLabel[SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_TWO_FONT);\r
- Add(tempLabel[SET_ONE]);\r
-\r
- tempLabel[SET_TWO] = new UILabel();\r
- if (tempLabel[SET_TWO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::TempInitLabel new tempLabel[2] fail");\r
- return false;\r
- }\r
- tempLabel[SET_TWO]->SetPosition(TEMP_LABEL_THREE_X, TEMP_LABEL_THREE_Y, TEMP_LABEL_THREE_WIDTH,\r
- TEMP_LABEL_THREE_HEIGHT);\r
- tempLabel[SET_TWO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_ONE_FONT);\r
- tempLabel[SET_TWO]->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- tempLabel[SET_TWO]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- Add(tempLabel[SET_TWO]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempContinueWarn::TempInitImage(void)\r
-{\r
- tempImage = new UIImageView();\r
- if (tempImage == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::TempInitImage new tempImage fail");\r
- return false;\r
- }\r
- tempImage->SetPosition(TEMP_IMAGE_X, TEMP_IMAGE_Y);\r
- tempImage->SetSrc(TEMP_LITTLE_MEASURE);\r
- Add(tempImage);\r
-\r
- return true;\r
-}\r
-\r
-bool TempContinueWarn::InitTempContinue(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::InitTempContinue");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::InitTempContinue TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::InitTempContinue TempInitImage() error");\r
- return false;\r
- }\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::InitTempContinue TempInitLabel() error");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-void TempContinueWarn::RefreshTempContinue(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::RefreshTempContinue");\r
- int8 tempListener = TempPresenter::GetInstance()->GetTempListen();\r
- if (tempListener == 0) {\r
- tempLabel[SET_ONE]->SetText(TEMP_COLD_WARN);\r
- tempLabel[SET_ONE]->SetTextColor(Color::Blue());\r
- tempLabel[SET_TWO]->SetText(TEMP_HOT_WARN_LABEL);\r
- } else if (tempListener == 1) {\r
- tempLabel[SET_ONE]->SetText(TEMP_HOT_WARN);\r
- tempLabel[SET_ONE]->SetTextColor(Color::Orange());\r
- tempLabel[SET_TWO]->SetText(TEMP_COLD_WARN_LABEL);\r
- }\r
- return;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include "layout/grid_layout.h"\r
-#include "font/ui_font.h"\r
-#include <string>\r
-#include "temperature/TempExitInter.h"\r
-\r
-namespace OHOS {\r
-static TempExitInter *g_tempExitInter = nullptr;\r
-\r
-static const int16 EXIT_LABEL_X = 40;\r
-static const int16 EXIT_LABEL_Y_FIRST = 140;\r
-static const int16 EXIT_THIS_Y_FIRST = 155;\r
-static const int16 EXIT_LABEL_Y_SECOND = 265;\r
-static const int16 EXIT_THIS_Y_SECOND = 275;\r
-static const int16 EXIT_IMAGE_X = 65;\r
-static const int16 EXIT_IMAGE_THIS_X = 325;\r
-static const int16 EXIT_IMAGE_EXIT_Y = 145;\r
-static const int16 EXIT_IMAGE_STUDY_Y = 270;\r
-static const int16 EXIT_LABEL_WIDTH = 400;\r
-static const int16 EXIT_LABEL_HEIGHT = 80;\r
-static const int16 EXIT_LABEL_GROUP_WIDTH = 390;\r
-static const int16 EXIT_LABEL_GROUP_HEIGHT = 110;\r
-static const int16 EXIT_GROUP_ONE_X = 40;\r
-static const int16 EXIT_GROUP_ONE_Y = 140;\r
-static const int16 EXIT_GROUP_TWO_Y = 265;\r
-static const int16 EXIT_LABEL_FONT = 35;\r
-static const char *EXIT_LABEL_TEXT_FIRST = (char*)"退出研究";\r
-static const char *EXIT_LABEL_TEXT_SECOND = (char*)"关于研究";\r
-\r
-TempExitInter::TempExitInter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempExitInter::TempExitInter");\r
- g_tempExitInter = this;\r
-}\r
-\r
-TempExitInter::~TempExitInter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempExitInter::~TempExitInter");\r
- RemoveAll();\r
- for (int32_t labelNum = SET_ZERO; labelNum < SET_TWO; labelNum++) {\r
- if (tempLabel[labelNum] != nullptr) {\r
- delete tempLabel[labelNum];\r
- tempLabel[labelNum] = nullptr;\r
- }\r
- }\r
- for (int32_t ImageNum = SET_ZERO; ImageNum < SET_FOUR; ImageNum++) {\r
- if (tempImage[ImageNum] != nullptr) {\r
- delete tempImage[ImageNum];\r
- tempImage[ImageNum] = nullptr;\r
- }\r
- }\r
- g_tempExitInter = nullptr;\r
-}\r
-\r
-TempExitInter *TempExitInter::GetInstance(void)\r
-{\r
- return g_tempExitInter;\r
-}\r
-\r
-bool TempExitInter::TempInitLabel(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- tempLabel[SET_ZERO] = new UILabel();\r
- if (tempLabel[SET_ZERO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::InitExit new tempLabel[SET_ZERO] fail");\r
- return false;\r
- }\r
- tempLabel[SET_ZERO]->SetPosition(EXIT_LABEL_X, EXIT_LABEL_Y_FIRST, EXIT_LABEL_WIDTH, EXIT_LABEL_HEIGHT);\r
- tempLabel[SET_ZERO]->SetText(EXIT_LABEL_TEXT_FIRST);\r
- tempLabel[SET_ZERO]->SetViewId(TEMP_EXIT_THIS);\r
- tempLabel[SET_ZERO]->SetTouchable(true);\r
- tempLabel[SET_ZERO]->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- tempLabel[SET_ZERO]->SetOnClickListener(clickListener);\r
- tempLabel[SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT);\r
- Add(tempLabel[SET_ZERO]);\r
-\r
- tempLabel[SET_ONE] = new UILabel();\r
- if (tempLabel[SET_ONE] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::InitExit new tempLabel[SET_ONE] fail");\r
- return false;\r
- }\r
- tempLabel[SET_ONE]->SetPosition(EXIT_LABEL_X, EXIT_LABEL_Y_SECOND, EXIT_LABEL_WIDTH, EXIT_LABEL_HEIGHT);\r
- tempLabel[SET_ONE]->SetText(EXIT_LABEL_TEXT_SECOND);\r
- tempLabel[SET_ONE]->SetViewId(TEMP_STUDY_THIS);\r
- tempLabel[SET_ONE]->SetTouchable(true);\r
- tempLabel[SET_ONE]->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- tempLabel[SET_ONE]->SetOnClickListener(clickListener);\r
- tempLabel[SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_LABEL_FONT);\r
- Add(tempLabel[SET_ONE]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempExitInter::InitSimilarImage(int16 num, int16 tempX, int16 tempY, const char* imageSrc)\r
-{\r
- tempImage[num] = new UIImageView();\r
- if (tempImage[num] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::InitSimilarImage new tempImage[%d] fail", num);\r
- return false;\r
- }\r
- tempImage[num]->SetPosition(tempX, tempY);\r
- tempImage[num]->SetSrc(imageSrc);\r
- Add(tempImage[num]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempExitInter::TempInitImage(void)\r
-{\r
- if (!InitSimilarImage(SET_ZERO, EXIT_IMAGE_X, EXIT_IMAGE_EXIT_Y, TEMP_EXIT)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::TempInitImage new tempImage[SET_ZERO] fail");\r
- return false;\r
- }\r
- if (!InitSimilarImage(SET_ONE, EXIT_IMAGE_X, EXIT_IMAGE_STUDY_Y, TEMP_ABOUT_STUDY)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::TempInitImage new tempImage[SET_ONE] fail");\r
- return false;\r
- }\r
- if (!InitSimilarImage(SET_TWO, EXIT_IMAGE_THIS_X, EXIT_THIS_Y_FIRST, PNG_SETTTING_BUTTON_IMAGE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::TempInitImage new tempImage[SET_TWO] fail");\r
- return false;\r
- }\r
- if (!InitSimilarImage(SET_THREE, EXIT_IMAGE_THIS_X, EXIT_THIS_Y_SECOND, PNG_SETTTING_BUTTON_IMAGE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::TempInitImage new tempImage[SET_THREE] fail");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-bool TempExitInter::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempExitInter::InitExit");\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::InitView TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UNUSED(caller);\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
-\r
- SetOnDragListener(listener);\r
- SetViewId(TEMP_SWIPE_EXIT);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::InitView TempInitLabel() false");\r
- return false;\r
- }\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitInter::InitView TempInitImage() false");\r
- return false;\r
- }\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include "layout/grid_layout.h"\r
-#include <string>\r
-#include "temperature/TempExitPrompt.h"\r
-\r
-namespace OHOS {\r
-static TempExitPrompt *g_tempExitPrompt = nullptr;\r
-\r
-static const int16 EXIT_PROMPT_LABEL_X = 40;\r
-static const int16 EXIT_PROMPT_LABEL_Y = 90;\r
-static const int16 EXIT_PROMPT_LABEL_WEIGHT = 380;\r
-static const int16 EXIT_PROMPT_LABEL_HEIGHT = 320;\r
-static const int16 EXIT_PROMPT_DELETE_X = 80;\r
-static const int16 EXIT_PROMPT_TRUE_X = 290;\r
-static const int16 EXIT_PROMPT_IMAGE_Y = 325;\r
-static const int16 EXIT_PROMPT_LABEL_FONT = 35;\r
-static const char *EXIT_PROMPT_LABEL = (char*)"退出研究后,您的历史相关数据将被清除,且无法继续使用该应用。若需体验,需重新加入体温研究。是否退出?";\r
-\r
-TempExitPrompt::TempExitPrompt()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempExitPrompt::TempExitPrompt");\r
- g_tempExitPrompt = this;\r
-}\r
-\r
-TempExitPrompt::~TempExitPrompt()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempExitPrompt::~TempExitPrompt");\r
- RemoveAll();\r
- int num;\r
- if (tempLabel != nullptr) {\r
- delete tempLabel;\r
- tempLabel = nullptr;\r
- }\r
- for (num = SET_ZERO; num < SET_TWO; num++) {\r
- if (tempImage[num] != nullptr) {\r
- delete tempImage[num];\r
- tempImage[num] = nullptr;\r
- }\r
- }\r
- g_tempExitPrompt = nullptr;\r
-}\r
-\r
-TempExitPrompt *TempExitPrompt::GetInstance(void)\r
-{\r
- return g_tempExitPrompt;\r
-}\r
-\r
-bool TempExitPrompt::TempInitImage(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- tempImage[SET_ZERO] = new UIImageView();\r
- if (tempImage[SET_ZERO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::TempInitImage new tempImage[SET_ZERO] fail");\r
- return false;\r
- }\r
- tempImage[SET_ZERO]->SetPosition(EXIT_PROMPT_DELETE_X, EXIT_PROMPT_IMAGE_Y);\r
- tempImage[SET_ZERO]->SetSrc(TEMP_DELETE);\r
- tempImage[SET_ZERO]->SetOnClickListener(clickListener);\r
- tempImage[SET_ZERO]->SetViewId(TEMP_EXIT_DELETE);\r
- tempImage[SET_ZERO]->SetTouchable(true);\r
- Add(tempImage[SET_ZERO]);\r
-\r
- tempImage[SET_ONE] = new UIImageView();\r
- if (tempImage[SET_ONE] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::TempInitImage new tempImage[SET_ONE] fail");\r
- return false;\r
- }\r
- tempImage[SET_ONE]->SetPosition(EXIT_PROMPT_TRUE_X, EXIT_PROMPT_IMAGE_Y);\r
- tempImage[SET_ONE]->SetSrc(TEMP_TRUE);\r
- tempImage[SET_ONE]->SetOnClickListener(clickListener);\r
- tempImage[SET_ONE]->SetViewId(TEMP_EXIT_TRUE);\r
- tempImage[SET_ONE]->SetTouchable(true);\r
- Add(tempImage[SET_ONE]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempExitPrompt::TempInitLabel(void)\r
-{\r
- tempLabel = new UILabel();\r
- if (tempLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitPrompt::TempInitLabel new tempLabel fail");\r
- return false;\r
- }\r
- tempLabel->SetPosition(EXIT_PROMPT_LABEL_X, EXIT_PROMPT_LABEL_Y,\r
- EXIT_PROMPT_LABEL_WEIGHT, EXIT_PROMPT_LABEL_HEIGHT);\r
- tempLabel->SetText(EXIT_PROMPT_LABEL);\r
- tempLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, EXIT_PROMPT_LABEL_FONT);\r
- tempLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- Add(tempLabel);\r
-\r
- return true;\r
-}\r
-\r
-bool TempExitPrompt::InitExitPrompt(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempExitPrompt::InitExitPrompt");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetThrowDrag(true);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitPrompt::InitExitPrompt TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitPrompt::InitExitPrompt TempInitLabel() false");\r
- return false;\r
- }\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempExitPrompt::InitExitPrompt TempInitImage() false");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempInitInter.h"\r
-\r
-namespace OHOS {\r
-static TempInitInter *g_tempInitInter = nullptr;\r
-\r
-static const int16 TEMP_INIT_DROP_X = 200;\r
-static const int16 TEMP_INIT_DROP_Y = 405;\r
-static const int16 TEMP_INIT_DROP_WIDTH = 45;\r
-static const int16 TEMP_INIT_BUTTON_X = 110;\r
-static const int16 TEMP_INIT_BUTTON_Y = 330;\r
-static const int16 TEMP_INIT_BUTTON_WIDTH = 220;\r
-static const int16 TEMP_INIT_BUTTON_HEIGHT = 80;\r
-static const int16 TEMP_INIT_BUTTON_FONT = 35;\r
-static const int16 LABEL_ONE_X = 90;\r
-static const int16 LABEL_TWO_X = 265;\r
-static const int16 TEMP_INIT_LABEL_THREE_X = 105;\r
-static const int16 TEMP_INIT_LABEL_THREE_Y = 80;\r
-static const int16 TEMP_INIT_IMAGE_TIP_X = 255;\r
-static const int16 TEMP_INIT_IMAGE_TIP_Y = 85;\r
-static const int16 TEMP_INIT_IMAGE_TIP_WIDTH = 35;\r
-static const int16 TEMP_INIT_IMAGE_TIP_HEIGHT = 35;\r
-static const int16 LABEL_THREE_WIDTH = 300;\r
-static const int16 TEMP_INIT_LABEL_FOUR_X = 180;\r
-static const int16 TEMP_INIT_LABEL_FOUR_Y = 120;\r
-static const int16 TEMP_INIT_LABEL_TIME_X = 200;\r
-static const int16 TEMP_INIT_LABEL_TIME_Y = 120;\r
-static const int16 LABEL_FIVE_X = 80;\r
-static const int16 TEMP_INIT_LABEL_FIVE_Y = 275;\r
-static const int16 LABEL_FIVE_WIDTH = 320;\r
-static const int16 LABEL_FIVE_HEIGHT = 50;\r
-static const int16 TEMP_INIT_LABEL_TEMP_Y = 160;\r
-static const int16 TITLE_WIDTH = 90;\r
-static const int16 TITLE_HEIGHT = 50;\r
-static const int16 TEMP_INIT_LABEL_WIDTH = 120;\r
-static const int16 TEMP_INIT_LABEL_HEIGHT = 60;\r
-static const int16 TEMP_INIT_LABEL_SKIN_Y = 220;\r
-static const int16 TEMP_INIT_LABEL_SKIN_HEIGHT = 25;\r
-static const int16 TEMP_INIT_TEMP_FONT = 55;\r
-static const int16 TEMP_INIT_TEMP_SKIN_FONT = 20;\r
-static const int16 TEMP_INIT_TEMP_TITLE_FONT = 35;\r
-static const int16 TEMP_LABEL_MAX = 6;\r
-static const char *TEMP_INIT_BUTTON = (char *)"再次测量";\r
-static const char *TEMP_INIT_TEMP_LABEL = (char *)"36.5";\r
-static const char *TEMP_INIT_SKIN_TEMP_LABEL = (char *)"34.5";\r
-static const char *TEMP_INIT_SKIN_SMALL_LABEL = (char *)"体温(℃) 皮肤温度(℃)";\r
-static const char *TEMP_INIT_TITLE = (char *)"体温";\r
-static const char *TEMP_INIT_TITLE_TIME = (char *)"刚刚";\r
-static const char *TEMP_INIT_LABEL_TIP = (char *)"佩戴不足10分钟,可能影响到温度精确性,数据仅供参考";\r
-\r
-TempInitInter::TempInitInter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempInitInter::TempInitInter");\r
- g_tempInitInter = this;\r
-}\r
-\r
-TempInitInter::~TempInitInter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempInitInter::~TempInitInter");\r
- RemoveAll();\r
- for (int8_t stNum = SET_ZERO; stNum < SET_THREE; stNum++) {\r
- if (tempImage[stNum] != nullptr) {\r
- delete tempImage[stNum];\r
- tempImage[stNum] = nullptr;\r
- }\r
- }\r
- for (int8_t ndNum = SET_ZERO; ndNum < TEMP_LABEL_MAX; ndNum++) {\r
- if (tempLabel[ndNum] != nullptr) {\r
- delete tempLabel[ndNum];\r
- tempLabel[ndNum] = nullptr;\r
- }\r
- }\r
- if (buttonTemp != nullptr) {\r
- delete buttonTemp;\r
- buttonTemp = nullptr;\r
- }\r
- g_tempInitInter = nullptr;\r
-}\r
-\r
-TempInitInter *TempInitInter::GetInstance(void)\r
-{\r
- return g_tempInitInter;\r
-}\r
-\r
-bool TempInitInter::TempInitImage(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- tempImage[SET_ZERO] = new UIImageView();\r
- if (tempImage[SET_ZERO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::TempInitImage new tempImage[SET_ZERO] fail");\r
- return false;\r
- }\r
- tempImage[SET_ZERO]->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- tempImage[SET_ZERO]->SetSrc(TEMP_BACKGROUND);\r
- Add(tempImage[SET_ZERO]);\r
-\r
- tempImage[SET_ONE] = new UIImageView();\r
- if (tempImage[SET_ONE] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitMeasure new image[SET_ONE] fail");\r
- return false;\r
- }\r
- tempImage[SET_ONE]->SetPosition(TEMP_INIT_DROP_X, TEMP_INIT_DROP_Y, TEMP_INIT_DROP_WIDTH, TEMP_INIT_DROP_WIDTH);\r
- tempImage[SET_ONE]->SetSrc(TEMP_UP_DROP);\r
- Add(tempImage[SET_ONE]);\r
-\r
- tempImage[SET_TWO] = new UIImageView();\r
- if (tempImage[SET_TWO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitMeasure new image[SET_TWO] fail");\r
- return false;\r
- }\r
- tempImage[SET_TWO]->SetPosition(TEMP_INIT_IMAGE_TIP_X,\r
- TEMP_INIT_IMAGE_TIP_Y, TEMP_INIT_IMAGE_TIP_WIDTH, TEMP_INIT_IMAGE_TIP_HEIGHT);\r
- tempImage[SET_TWO]->SetTouchable(true);\r
- tempImage[SET_TWO]->SetViewId(TEMP_IMAGE_LIT_TIP);\r
- tempImage[SET_TWO]->SetSrc(TEMP_LIT_TIP);\r
- tempImage[SET_TWO]->SetOnClickListener(clickListener);\r
- tempImage[SET_TWO]->SetTouchable(true);\r
- Add(tempImage[SET_TWO]);\r
-\r
- return true;\r
-}\r
-\r
-typedef struct {\r
- int16 labelNum;\r
- int16 x;\r
- int16 y;\r
- int16 width;\r
- int16 height;\r
- char* name;\r
- int16 font;\r
- const char* text;\r
-} TempInitItem;\r
-\r
-static const TempInitItem tempInitItem[] = {\r
- { SET_ZERO, LABEL_ONE_X, TEMP_INIT_LABEL_TEMP_Y, TEMP_INIT_LABEL_WIDTH, TEMP_INIT_LABEL_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_INIT_TEMP_FONT, TEMP_INIT_TEMP_LABEL },\r
- { SET_ONE, LABEL_TWO_X, TEMP_INIT_LABEL_TEMP_Y, TEMP_INIT_LABEL_WIDTH, TEMP_INIT_LABEL_WIDTH,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_INIT_TEMP_FONT, TEMP_INIT_SKIN_TEMP_LABEL },\r
- { SET_TWO, TEMP_INIT_LABEL_THREE_X, TEMP_INIT_LABEL_SKIN_Y, LABEL_THREE_WIDTH, TITLE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_INIT_TEMP_SKIN_FONT, TEMP_INIT_SKIN_SMALL_LABEL },\r
- { SET_THREE, TEMP_INIT_LABEL_FOUR_X, TEMP_INIT_LABEL_THREE_Y, TITLE_WIDTH, TITLE_WIDTH,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_INIT_TEMP_TITLE_FONT, TEMP_INIT_TITLE },\r
- { SET_FOUR, TEMP_INIT_LABEL_TIME_X, TEMP_INIT_LABEL_TIME_Y, TITLE_WIDTH, TITLE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_INIT_TEMP_SKIN_FONT, TEMP_INIT_TITLE_TIME },\r
- { SET_FIVE, LABEL_FIVE_X, TEMP_INIT_LABEL_FIVE_Y, LABEL_FIVE_WIDTH, LABEL_FIVE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_INIT_TEMP_SKIN_FONT, TEMP_INIT_LABEL_TIP },\r
-};\r
-\r
-bool TempInitInter::SetBasicLabel(void)\r
-{\r
- for (int num = 0; num <= SET_FIVE; num++) {\r
- tempLabel[tempInitItem[num].labelNum] = new UILabel();\r
- if (tempLabel[tempInitItem[num].labelNum] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::SetBasicLabel new tempLabel[%d] fail",\r
- tempInitItem[num].labelNum);\r
- return false;\r
- }\r
- tempLabel[tempInitItem[num].labelNum]->SetPosition(tempInitItem[num].x, tempInitItem[num].y,\r
- tempInitItem[num].width, tempInitItem[num].height);\r
- tempLabel[tempInitItem[num].labelNum]->SetFont(tempInitItem[num].name, tempInitItem[num].font);\r
- tempLabel[tempInitItem[num].labelNum]->SetText(tempInitItem[num].text);\r
- Add(tempLabel[tempInitItem[num].labelNum]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TempInitInter::SetAppendLabel(void)\r
-{\r
- tempLabel[SET_ZERO]->SetTextColor(TempPresenter::GetInstance()->CyanColor());\r
- tempLabel[SET_TWO]->SetTextColor(Color::Gray());\r
- tempLabel[SET_FOUR]->SetTextColor(Color::Gray());\r
- tempLabel[SET_FIVE]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- tempLabel[SET_FIVE]->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-\r
- return true;\r
-}\r
-\r
-bool TempInitInter::TempInitButton(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- buttonTemp = new UILabelButton();\r
- if (buttonTemp == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::TempInitButton new label fail");\r
- return false;\r
- }\r
- buttonTemp->SetPosition(TEMP_INIT_BUTTON_X, TEMP_INIT_BUTTON_Y, TEMP_INIT_BUTTON_WIDTH, TEMP_INIT_BUTTON_HEIGHT);\r
- buttonTemp->SetText(TEMP_INIT_BUTTON);\r
- buttonTemp->SetViewId(TEMP_MEA_AGAIN);\r
- buttonTemp->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_INIT_BUTTON_FONT);\r
- buttonTemp->SetTextColor(OHOS::TempPresenter::GetInstance()->CyanColor());\r
- buttonTemp->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::RELEASED);\r
- buttonTemp->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::PRESSED);\r
- buttonTemp->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::INACTIVE);\r
- buttonTemp->SetOnClickListener(clickListener);\r
- Add(buttonTemp);\r
- return true;\r
-}\r
-\r
-bool TempInitInter::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempInitInter::InitView");\r
- UNUSED(caller);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::InitView TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
-\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::InitView TempInitImage() false");\r
- return false;\r
- }\r
- if (!SetBasicLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::InitView TempInitLabel() false");\r
- return false;\r
- }\r
- if (!SetAppendLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::InitView TempLowLabel() false");\r
- return false;\r
- }\r
- if (!TempInitButton()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempInitInter::InitView TempInitButton() false");\r
- return false;\r
- }\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include "layout/grid_layout.h"\r
-#include <string>\r
-#include "temperature/TempJoinStudy.h"\r
-\r
-namespace OHOS {\r
-static TempJoinStudy *g_tempJoinStudy = nullptr;\r
-static const int16 TEMP_TITLE_X = 150;\r
-static const int16 TEMP_TITLE_Y = 50;\r
-static const int16 TEMP_TITLE_WIDTH = 150;\r
-static const int16 TEMP_TITLE_HEIGHT = 45;\r
-static const int16 TEMP_TITLE_FONT = 36;\r
-static const int16 TEMP_FIRST_LABEL_FONT = 35;\r
-static const int16 TEMP_LABEL_FIRST_X = 45;\r
-static const int16 TEMP_LABEL_FIRST_Y = 120;\r
-static const int16 TEMP_LABEL_SECOND_Y = 350;\r
-static const int16 TEMP_LABEL_THIRD_Y = 650;\r
-static const int16 TEMP_LABEL_FIRST_WIDTH = 350;\r
-static const int16 TEMP_LABEL_FIRST_HEIGHT = 400;\r
-static const int16 TEMP_BUTTON_X = 120;\r
-static const int16 TEMP_BUTTON_FIRST_Y = 940;\r
-static const int16 TEMP_BUTTON_SECOND_Y = 1040;\r
-static const int16 TEMP_BUTTON_WEDITH = 220;\r
-static const int16 TEMP_BUTTON_HEIGHT = 80;\r
-static const int16 TEMP_LABEL_MAX = 3;\r
-static const int16 TEMP_BUTTON_MAX = 2;\r
-static const char *TEMP_TITLE_TEXT = (char*)"体温研究";\r
-static const char *TEMP_LABEL_ONE = (char*)"本功能通过内置温度传感器测量腕部皮肤温度,主要研究腕部皮肤温度和体温的关系。";\r
-static const char *TEMP_LABEL_TWO = (char*)"本功能用于18岁以上健康人群测量运动过程,及之后腕部皮肤温度和体温的变化,请加入研究,以便及时观察运动前后身体的变化。";\r
-static const char *TEMP_LABEL_THREE = (char*)"测量需佩戴10分钟以上,且容易受到环境因素影响。目前达不到水银体温计的精度,测量结果仅供参考,不作为医疗诊断依据。";\r
-static const char *TEMP_BUTTON_ONE = (char*)"加入研究";\r
-static const char *TEMP_BUTTON_TWO = (char*)"退出";\r
-\r
-TempJoinStudy::TempJoinStudy()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempJoinStudy");\r
- g_tempJoinStudy = this;\r
-}\r
-\r
-TempJoinStudy::~TempJoinStudy()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::~TempJoinStudy");\r
- RemoveAll();\r
- if (tempTitle != nullptr) {\r
- delete tempTitle;\r
- tempTitle = nullptr;\r
- }\r
- for (int32_t numLabel = SET_ZERO; numLabel < TEMP_LABEL_MAX; numLabel++) {\r
- if (tempLabel[numLabel] != nullptr) {\r
- delete tempLabel[numLabel];\r
- tempLabel[numLabel] = nullptr;\r
- }\r
- }\r
- for (int32_t numButton = SET_ZERO; numButton < TEMP_BUTTON_MAX; numButton++) {\r
- if (tempButton[numButton] != nullptr) {\r
- delete tempButton[numButton];\r
- tempButton[numButton] = nullptr;\r
- }\r
- }\r
- g_tempJoinStudy = nullptr;\r
-}\r
-\r
-TempJoinStudy *TempJoinStudy::GetInstance(void)\r
-{\r
- return g_tempJoinStudy;\r
-}\r
-\r
-bool TempJoinStudy::InitSimilarLabel(int16 num, int16 labelY, const char *labelText)\r
-{\r
- tempLabel[num] = new UILabel();\r
- if (tempLabel[num] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[%d] error", num);\r
- return false;\r
- }\r
- tempLabel[num]->SetPosition(TEMP_LABEL_FIRST_X, labelY, TEMP_LABEL_FIRST_WIDTH, TEMP_LABEL_FIRST_HEIGHT);\r
- tempLabel[num]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- tempLabel[num]->SetText(labelText);\r
- tempLabel[num]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_FIRST_LABEL_FONT);\r
- Add(tempLabel[num]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempJoinStudy::TempInitLabel(void)\r
-{\r
- tempTitle = new UILabel();\r
- if (tempTitle == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempTitle error");\r
- return false;\r
- }\r
- tempTitle->SetPosition(TEMP_TITLE_X, TEMP_TITLE_Y, TEMP_TITLE_WIDTH, TEMP_TITLE_HEIGHT);\r
- tempTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_TITLE_FONT);\r
- tempTitle->SetText(TEMP_TITLE_TEXT);\r
- Add(tempTitle);\r
-\r
- if (!InitSimilarLabel(SET_ZERO, TEMP_LABEL_FIRST_Y, TEMP_LABEL_ONE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ZERO] error");\r
- return false;\r
- }\r
- if (!InitSimilarLabel(SET_ONE, TEMP_LABEL_SECOND_Y, TEMP_LABEL_TWO)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ONE] error");\r
- return false;\r
- }\r
- if (!InitSimilarLabel(SET_TWO, TEMP_LABEL_THIRD_Y, TEMP_LABEL_THREE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitLabel new tempLabel[SET_ONE] error");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-bool TempJoinStudy::TempInitButton(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- tempButton[SET_ZERO] = new UILabelButton();\r
- if (tempButton[SET_ZERO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitButton new tempButton[SET_ZERO] error");\r
- return false;\r
- }\r
- tempButton[SET_ZERO]->SetPosition(TEMP_BUTTON_X, TEMP_BUTTON_FIRST_Y, TEMP_BUTTON_WEDITH, TEMP_BUTTON_HEIGHT);\r
- tempButton[SET_ZERO]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_TITLE_FONT);\r
- tempButton[SET_ZERO]->SetText(TEMP_BUTTON_ONE);\r
- tempButton[SET_ZERO]->SetViewId(TEMP_INTER_JOIN);\r
- tempButton[SET_ZERO]->SetOnClickListener(clickListener);\r
- tempButton[SET_ZERO]->SetStyleForState(STYLE_BACKGROUND_COLOR,\r
- OHOS::TempPresenter::GetInstance()->CyanColor().full, UIButton::RELEASED);\r
- tempButton[SET_ZERO]->SetStyleForState(STYLE_BACKGROUND_COLOR,\r
- OHOS::TempPresenter::GetInstance()->CyanColor().full, UIButton::PRESSED);\r
- tempButton[SET_ZERO]->SetStyleForState(STYLE_BACKGROUND_COLOR,\r
- OHOS::TempPresenter::GetInstance()->CyanColor().full, UIButton::INACTIVE);\r
- Add(tempButton[SET_ZERO]);\r
-\r
- tempButton[SET_ONE] = new UILabelButton();\r
- if (tempButton[SET_ONE] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::TempInitButton new tempButton[SET_ONE] error");\r
- return false;\r
- }\r
- tempButton[SET_ONE]->SetPosition(TEMP_BUTTON_X, TEMP_BUTTON_SECOND_Y, TEMP_BUTTON_WEDITH, TEMP_BUTTON_HEIGHT);\r
- tempButton[SET_ONE]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_TITLE_FONT);\r
- tempButton[SET_ONE]->SetText(TEMP_BUTTON_TWO);\r
- tempButton[SET_ONE]->SetViewId(TEMP_INTER_EXIT);\r
- tempButton[SET_ONE]->SetOnClickListener(clickListener);\r
- tempButton[SET_ONE]->SetTextColor(OHOS::TempPresenter::GetInstance()->CyanColor());\r
- tempButton[SET_ONE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::RELEASED);\r
- tempButton[SET_ONE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::PRESSED);\r
- tempButton[SET_ONE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::INACTIVE);\r
- Add(tempButton[SET_ONE]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempJoinStudy::InitJoinStudy(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::InitJoinStudy");\r
- SetViewId(TEMP_JOIN_STUDY);\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetThrowDrag(true);\r
- SetScrollBlankSize(50); // 50:font size\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::InitJoinStudy TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::InitJoinStudy TempInitLabel() false");\r
- return false;\r
- }\r
- if (!TempInitButton()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempJoinStudy::InitJoinStudy TempInitButton() false");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempLittleTip.h"\r
-\r
-namespace OHOS {\r
-static TempLittleTip *g_tempJoinStudy = nullptr;\r
-\r
-static const int16 TEMP_TIP_LABEL_ONE_X = 180;\r
-static const int16 TEMP_TIP_LABEL_ONE_Y = 45;\r
-static const int16 TEMP_TIP_LABEL_TITLE_WIDTH = 230;\r
-static const int16 TEMP_TIP_LABEL_TITLE_HEIGHT = 70;\r
-static const int16 TEMP_TIP_LABEL_X = 45;\r
-static const int16 TEMP_TIP_LABEL_TWO_Y = 130;\r
-static const int16 TEMP_TIP_LABEL_THREE_Y = 610;\r
-static const int16 TEMP_TIP_LABEL_FOUR_Y = 670;\r
-static const int16 TEMP_TIP_LABEL_FIVE_Y = 1070;\r
-static const int16 TEMP_TIP_LABEL_SIX_Y = 1120;\r
-static const int16 TEMP_TIP_LABEL_SIX_HEIGHT = 300;\r
-static const int16 TEMP_TIP_LABEL_SEVEN_Y = 1340;\r
-static const int16 TEMP_TIP_LABEL_SEVEN_HEIGHT = 480;\r
-static const int16 TEMP_TIP_LABEL_EIGHT_Y = 2030;\r
-static const int16 TEMP_TIP_LABEL_NIGHT_Y = 2330;\r
-static const int16 TEMP_TIP_LABEL_TITLE_X = 160;\r
-static const int16 TEMP_LABEL_WIDTH = 350;\r
-static const int16 TEMP_LABEL_HEIGHT = 420;\r
-static const int16 TEMP_TIP_TITLE_FONT = 38;\r
-static const int16 TEMP_TIP_TEXT_FONT = 34;\r
-static const int16 TEMP_LABEL_MAX = 9;\r
-static const int16 SET_SIX = 6;\r
-static const char *TEMP_TIP_LABEL_ONE = (char *)"体温";\r
-static const char *TEMP_TIP_LABEL_TWO = (char *)"人体内部的温度称体温。保持恒定的体温,是保持新陈代谢和生命活动的正常进行的必要条件。正常的体温不是一个温度点,\\r
-而是一个体温的范围,大概在36℃-37℃之间(腋窝)通常人体低于35℃为低体温,高于37.2℃为发热。";\r
-static const char *TEMP_TIP_LABEL_THREE = (char *)"皮肤温度";\r
-static const char *TEMP_TIP_LABEL_FOUR = (char *)"皮肤温度是指皮肤表面的温度。人体各部位的皮肤温度不同,且受环境、生理因素等影响显著。室内环境下,\\r
-人体腕部皮肤温度大概在32-34℃,维持舒适的皮肤温度是保证人体热舒适的重要条件";\r
-static const char *TEMP_TIP_LABEL_FIVE = (char *)"测量须知";\r
-static const char *TEMP_TIP_LABEL_SIX = (char *)"● 本设备支持的测量范围为:体温:34-42℃皮肤温度:20-42℃";\r
-static const char *TEMP_TIP_LABEL_SEVEN = (char *)"● 受周围环境影响,测量精度可能会下降。注意以下事项,有助于减少误差:·确保偏紧佩戴10分钟以上,\\r
-在室温(25℃左右)安静状态下测量;·确保手腕处没有水、酒精等液体;·运动、洗澡、室内室外环境切换时,请等待30分钟后在测量;·请避免在阳光直射,有风,又冷/热源的环境下进行测量。";\r
-static const char *TEMP_TIP_LABEL_EIGHT = (char *)"● 穿戴设备在未佩戴、环境温度过低(< 35℃)、过高(> 37.2℃)等条件下会进行出值限制。";\r
-static const char *TEMP_TIP_LABEL_NINE = (char *)"● 测量结果仅供参考,不作为医疗诊断依据";\r
-\r
-TempLittleTip::TempLittleTip()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempLittleTip::TempLittleTip");\r
- g_tempJoinStudy = this;\r
-}\r
-\r
-TempLittleTip::~TempLittleTip()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempLittleTip::~TempLittleTip");\r
- RemoveAll();\r
- int8 num;\r
- for (num = 0; num < TEMP_LABEL_MAX; num++) {\r
- if (tempLabel[num] != nullptr) {\r
- delete tempLabel[num];\r
- tempLabel[num] = nullptr;\r
- }\r
- }\r
- g_tempJoinStudy = nullptr;\r
-}\r
-\r
-TempLittleTip *TempLittleTip::GetInstance(void)\r
-{\r
- return g_tempJoinStudy;\r
-}\r
-\r
-typedef struct {\r
- int16 labelNum;\r
- int16 x;\r
- int16 y;\r
- int16 width;\r
- int16 height;\r
- char* name;\r
- int16 font;\r
- const char* text;\r
-} TempTipItem;\r
-\r
-static const TempTipItem tempTipItem[] = {\r
- { SET_ZERO, TEMP_TIP_LABEL_ONE_X, TEMP_TIP_LABEL_ONE_Y, TEMP_TIP_LABEL_TITLE_WIDTH, TEMP_TIP_LABEL_TITLE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TITLE_FONT, TEMP_TIP_LABEL_ONE },\r
- { SET_ONE, TEMP_TIP_LABEL_X, TEMP_TIP_LABEL_TWO_Y, TEMP_LABEL_WIDTH, TEMP_LABEL_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TEXT_FONT, TEMP_TIP_LABEL_TWO },\r
- { SET_TWO, TEMP_TIP_LABEL_TITLE_X, TEMP_TIP_LABEL_THREE_Y, TEMP_TIP_LABEL_TITLE_WIDTH,\r
- TEMP_TIP_LABEL_TITLE_HEIGHT, (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TITLE_FONT, TEMP_TIP_LABEL_THREE },\r
- { SET_THREE, TEMP_TIP_LABEL_X, TEMP_TIP_LABEL_FOUR_Y, TEMP_LABEL_WIDTH, TEMP_LABEL_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TEXT_FONT, TEMP_TIP_LABEL_FOUR },\r
- { SET_FOUR, TEMP_TIP_LABEL_TITLE_X, TEMP_TIP_LABEL_FIVE_Y, TEMP_TIP_LABEL_TITLE_WIDTH,\r
- TEMP_TIP_LABEL_TITLE_HEIGHT, (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TITLE_FONT, TEMP_TIP_LABEL_FIVE },\r
- { SET_FIVE, TEMP_TIP_LABEL_X, TEMP_TIP_LABEL_SIX_Y, TEMP_LABEL_WIDTH, TEMP_TIP_LABEL_SIX_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TEXT_FONT, TEMP_TIP_LABEL_SIX },\r
- { SET_SIX, TEMP_TIP_LABEL_X, TEMP_TIP_LABEL_SEVEN_Y, TEMP_LABEL_WIDTH, TEMP_TIP_LABEL_SEVEN_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TEXT_FONT, TEMP_TIP_LABEL_SEVEN },\r
- { SET_SEVEN, TEMP_TIP_LABEL_X, TEMP_TIP_LABEL_EIGHT_Y, TEMP_LABEL_WIDTH, TEMP_TIP_LABEL_SIX_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TEXT_FONT, TEMP_TIP_LABEL_EIGHT },\r
- { SET_EIGHT, TEMP_TIP_LABEL_X, TEMP_TIP_LABEL_NIGHT_Y, TEMP_LABEL_WIDTH, TEMP_TIP_LABEL_SIX_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_TEXT_FONT, TEMP_TIP_LABEL_NINE },\r
-};\r
-\r
-bool TempLittleTip::SetBasicLabel(void)\r
-{\r
- for (int num = 0; num <= SET_EIGHT; num++) {\r
- tempLabel[tempTipItem[num].labelNum] = new UILabel();\r
- if (tempLabel[tempTipItem[num].labelNum] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempLittleTip::SetBasicLabel new tempLabel[%d] fail",\r
- tempTipItem[num].labelNum);\r
- return false;\r
- }\r
- tempLabel[tempTipItem[num].labelNum]->SetPosition(tempTipItem[num].x, tempTipItem[num].y,\r
- tempTipItem[num].width, tempTipItem[num].height);\r
- tempLabel[tempTipItem[num].labelNum]->SetFont(tempTipItem[num].name, tempTipItem[num].font);\r
- tempLabel[tempTipItem[num].labelNum]->SetText(tempTipItem[num].text);\r
- Add(tempLabel[tempTipItem[num].labelNum]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TempLittleTip::SetAppendLabel(void)\r
-{\r
- for (int num = 0; num <= SET_EIGHT; num++) {\r
- if (tempLabel[tempTipItem[num].labelNum] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempLittleTip::SetAppendLabel tempTipItem[%d] nullptr",\r
- tempTipItem[num].labelNum);\r
- return false;\r
- }\r
- if (num == SET_ZERO || num == SET_TWO || num == SET_FOUR) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempLittleTip::SetAppendLabel continue");\r
- continue;\r
- }\r
- tempLabel[tempTipItem[num].labelNum]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- }\r
- return true;\r
-}\r
-\r
-bool TempLittleTip::InitLittleTip(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempLittleTip::InitLittleTip");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetThrowDrag(true);\r
- SetScrollBlankSize(50); // 50:font size\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempLittleTip::InitLittleTip TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!SetBasicLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempLittleTip::InitLittleTip SetLabel() false");\r
- return false;\r
- }\r
- if (!SetAppendLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempLittleTip::InitLittleTip SetAppendLabel() false");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-void TempLittleTip::RefreshTip(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempLittleTip::RefreshTip");\r
- ScrollBy(0, TEMP_TIP_LABEL_ONE_Y - tempLabel[0]->GetY());\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "temperature/TempMainView.h"\r
-#include "UiConfig.h"\r
-#include "temperature/TempMeaProcess.h"\r
-#include "temperature/TempWarn.h"\r
-\r
-namespace OHOS {\r
-static TempMainView *g_tempMainView = nullptr;\r
-\r
-static const int16 FIRST_TIME_JOIN = 0;\r
-static const int16 SECOND_TIME_JOIN = 1;\r
-static const int16 LABEL_FIRST_X = 200;\r
-static const int16 LABEL_FIRST_Y = 60;\r
-static const int16 LABEL_FIRST_WIDTH = 150;\r
-static const int16 LABEL_FIRST_HEIGHT = 45;\r
-static const int16 LABEL_FIRST_FONT = 35;\r
-static const int16 INTERFACES_MAX = 10;\r
-\r
-TempMainView::TempMainView()\r
-{\r
- g_tempMainView = this;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::TempMainView");\r
-}\r
-\r
-TempMainView::~TempMainView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::~TempMainView");\r
- for (int16_t numGroup = SET_ZERO; numGroup <= INTERFACES_MAX; numGroup++) {\r
- if (container[numGroup] != nullptr) {\r
- container[numGroup] = nullptr;\r
- }\r
- }\r
- for (int16_t numSwipe = SET_ZERO; numSwipe < SET_TWO; numSwipe++) {\r
- if (tempSwipeList[numSwipe] != nullptr) {\r
- tempSwipeList[numSwipe]->RemoveAll();\r
- delete tempSwipeList[numSwipe];\r
- tempSwipeList[numSwipe] = nullptr;\r
- }\r
- }\r
- DeleteViceInter();\r
- group = nullptr;\r
- g_tempMainView = nullptr;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::~TempMainView");\r
-}\r
-\r
-TempMainView *TempMainView::GetInstance(void)\r
-{\r
- return g_tempMainView;\r
-}\r
-\r
-void TempMainView::OnStart()\r
-{\r
-\r
- int16 tempInterListen = TempModel::GetInstance()->GetTempInterLis();\r
- if (tempInterListen == FIRST_TIME_JOIN) {\r
- tempJoinStudy = new TempJoinStudy();\r
- if (tempJoinStudy == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempJoinStudy null error!");\r
- return;\r
- }\r
- container[0] = tempJoinStudy;\r
- tempJoinStudy->InitJoinStudy();\r
- tempWhichInter = JOIN_STUDY_INTER;\r
- group = container[0];\r
- } else if (tempInterListen == SECOND_TIME_JOIN) {\r
- AppGroupView *view[SET_TWO] = {nullptr};\r
- if (!SetSwipeInter(0)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::OnStart SetSwipeInter[0] null error!");\r
- return;\r
- }\r
- tempMeasure = new TempMeasure();\r
- if (tempMeasure == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempMeasure null error!");\r
- return;\r
- }\r
- view[0] = tempMeasure;\r
- view[0]->InitView(this);\r
-\r
- tempExitInter = new TempExitInter();\r
- if (tempExitInter == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempExitInter null error!");\r
- return;\r
- }\r
- view[1] = tempExitInter;\r
- view[1]->InitView(this);\r
- tempSwipeList[0]->Add(view[0]);\r
- tempSwipeList[0]->Add(view[1]);\r
- container[MEASURE_INTER] = tempSwipeList[0];\r
- group = container[MEASURE_INTER];\r
- tempWhichInter = MEASURE_INTER;\r
- }\r
- AddViewToRootContainer(group);\r
- return;\r
-}\r
-\r
-void TempMainView::DeleteViceInter(void)\r
-{\r
- if (tempJoinStudy != nullptr) {\r
- delete tempJoinStudy;\r
- tempJoinStudy = nullptr;\r
- }\r
- if (tempMeasure != nullptr) {\r
- delete tempMeasure;\r
- tempMeasure = nullptr;\r
- }\r
- if (tempExitInter != nullptr) {\r
- delete tempExitInter;\r
- tempExitInter = nullptr;\r
- }\r
- if (tempPromptWear != nullptr) {\r
- delete tempPromptWear;\r
- tempPromptWear = nullptr;\r
- }\r
- if (tempClickMea != nullptr) {\r
- delete tempClickMea;\r
- tempClickMea = nullptr;\r
- }\r
- if (tempRemindWear != nullptr) {\r
- delete tempRemindWear;\r
- tempRemindWear = nullptr;\r
- }\r
- if (tempMeaProcess != nullptr) {\r
- delete tempMeaProcess;\r
- tempMeaProcess = nullptr;\r
- }\r
- if (tempInitInter != nullptr) {\r
- delete tempInitInter;\r
- tempInitInter = nullptr;\r
- }\r
- if (tempWarn != nullptr) {\r
- delete tempWarn;\r
- tempWarn = nullptr;\r
- }\r
- if (tempLittleTip != nullptr) {\r
- delete tempLittleTip;\r
- tempLittleTip = nullptr;\r
- }\r
- if (tempExitPrompt != nullptr) {\r
- delete tempExitPrompt;\r
- tempExitPrompt = nullptr;\r
- }\r
- if (tempStudyAbout != nullptr) {\r
- delete tempStudyAbout;\r
- tempStudyAbout = nullptr;\r
- }\r
-}\r
-\r
-int16 TempMainView::GetWhichInter(void)\r
-{\r
- return tempWhichInter;\r
-}\r
-\r
-bool TempMainView::SetSwipeInter(int16 num)\r
-{\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: SetSwipeInter TempPresenter null!");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- UISwipeView::OnSwipeListener* onSwipeListener =\r
- static_cast<UISwipeView::OnSwipeListener*>(OHOS::TempPresenter::GetInstance());\r
- tempSwipeList[num] = new UISwipeView(UISwipeView::VERTICAL);\r
- if (tempSwipeList[num] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tempSwipeList[num] new fail");\r
- return false;\r
- }\r
- tempSwipeList[num]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- tempSwipeList[num]->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- tempSwipeList[num]->SetOnDragListener(listener);\r
- tempSwipeList[num]->SetOnSwipeListener(onSwipeListener);\r
- tempSwipeList[num]->SetDraggable(true);\r
- tempSwipeList[num]->SetTouchable(true);\r
- tempSwipeList[num]->SetAnimatorTime(50); // 50 animator drag time(ms)\r
-\r
- return true;\r
-}\r
-\r
-int16 TempMainView::GetListenInter(void)\r
-{\r
- return interListen;\r
-}\r
-\r
-void TempMainView::DropView(UIView& view)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView");\r
- if (&view == container[PROMPT_WEAR]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[PROMPT_WEAR]");\r
- ChangeView(PROMPT_WEAR, MEASURE_INTER);\r
- } else if (&view == container[CLICK_MEA]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[CLICK_MEA]");\r
- ChangeView(CLICK_MEA, PROMPT_WEAR);\r
- } else if (&view == container[REMIND_WEAR]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[REMIND_WEAR]");\r
- ChangeView(REMIND_WEAR, CLICK_MEA);\r
- } else if (&view == container[TEMP_EXIT_STUDY]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[TEMP_EXIT_STUDY]");\r
- ChangeView(TEMP_EXIT_STUDY, tempWhichMea);\r
- } else if (&view == container[TEMP_WARN_INTER]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[TEMP_WARN_INTER]");\r
- ChangeView(TEMP_WARN_INTER, MEASURE_INTER);\r
- } else if (&view == container[TEMP_STUDY]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[TEMP_STUDY] tempWhichMea = %d", tempWhichMea);\r
- ChangeView(TEMP_STUDY, tempWhichMea);\r
- } else if (&view == container[TEMP_TIP]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[TEMP_TIP]");\r
- ChangeView(TEMP_TIP, MEASURE_INIT);\r
- } else if (&view == container[MEASURE_ING]) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::DropView::container[MEASURE_ING]");\r
- if (interListen == CLICK_MEA) {\r
- ChangeView(MEASURE_ING, CLICK_MEA);\r
- } else if (interListen == MEASURE_INIT) {\r
- ChangeView(MEASURE_ING, MEASURE_INIT);\r
- }\r
- if (TempMeaProcess::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::GetInstance() null error!");\r
- return;\r
- }\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::GetInstance() null error!");\r
- return;\r
- }\r
- TempMeaProcess::GetInstance()->SetCircleStatus(false);\r
- TempPresenter::GetInstance()->SetTempCountMax();\r
- } else {\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- }\r
- return;\r
-}\r
-\r
-bool TempMainView::ChangePrompt(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangePrompt");\r
- if (container[thisView] == nullptr) {\r
- tempPromptWear = new TempPromptWear();\r
- if (tempPromptWear == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempPromptWear null error!");\r
- return false;\r
- }\r
- container[thisView] = tempPromptWear;\r
- tempPromptWear->InitPromptWear();\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeMeasure(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure");\r
- if (container[thisView] == nullptr) {\r
- AppGroupView *view[SET_THREE] = {nullptr};\r
- if (!SetSwipeInter(SET_ZERO)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure SetSwipeInter[0] null error!");\r
- return false;\r
- }\r
- tempMeasure = new TempMeasure();\r
- if (tempMeasure == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure tempMeasure null error!");\r
- return false;\r
- }\r
- view[SET_ZERO] = tempMeasure;\r
- if (!view[SET_ZERO]->InitView(this)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure view [0] InitView null error!");\r
- return false;\r
- }\r
-\r
- tempExitInter = new TempExitInter();\r
- if (tempExitInter == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure tempExitInter null error!");\r
- return false;\r
- }\r
- view[SET_ONE] = tempExitInter;\r
- if (!view[SET_ONE]->InitView(this)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure view [1] InitView null error!");\r
- return false;\r
- }\r
- tempSwipeList[SET_ZERO]->Add(view[SET_ZERO]);\r
- tempSwipeList[SET_ZERO]->Add(view[SET_ONE]);\r
- container[thisView] = tempSwipeList[SET_ZERO];\r
-\r
- AddViewToRootContainer(container[thisView]);\r
- TempModel::GetInstance()->SetTempInterLis(SECOND_TIME_JOIN);\r
- }\r
- tempWhichInter = thisView;\r
- tempWhichMea = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeClickMea(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeClickMea");\r
- if (container[thisView] == nullptr) {\r
- tempClickMea = new TempClickMea();\r
- if (tempClickMea == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeClickMea tempClickMea null error!");\r
- return false;\r
- }\r
- container[thisView] = tempClickMea;\r
- if (!tempClickMea->InitClickMea()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeClickMea InitClickMea error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- if (TempClickMea::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempClickMea:: GetInstance error!");\r
- return false;\r
- }\r
- TempClickMea::GetInstance()->RefreshClickMea();\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeRemindWear(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeRemindWear");\r
- if (container[thisView] == nullptr) {\r
- tempRemindWear = new TempRemindWear();\r
- if (tempRemindWear == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempRemindWear null error!");\r
- return false;\r
- }\r
- container[thisView] = tempRemindWear;\r
- if (!tempRemindWear->InitRemindWear()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeRemindWear InitRemindWear error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeMeaProcess(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeaProcess");\r
- if (container[thisView] == nullptr) {\r
- tempMeaProcess = new TempMeaProcess();\r
- if (tempMeaProcess == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempMeaProcess null error!");\r
- return false;\r
- }\r
- container[thisView] = tempMeaProcess;\r
- if (!tempMeaProcess->InitMeaProcess()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeaProcess InitMeaProcess error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- if (TempMeaProcess::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess:: GetInstance error!");\r
- return false;\r
- }\r
- TempMeaProcess::GetInstance()->SetCircleStatus(true);\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeTempInit(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeTempInit");\r
- if (container[thisView] == nullptr) {\r
- AppGroupView *view[SET_THREE] = {nullptr};\r
- if (!SetSwipeInter(SET_ONE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure SetSwipeInter[1] null error!");\r
- return false;\r
- }\r
- tempInitInter = new TempInitInter();\r
- if (tempInitInter == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempInitInter null error!");\r
- return false;\r
- }\r
- view[SET_ZERO] = tempInitInter;\r
- if (!view[SET_ZERO]->InitView(this)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeTempInit view [0] InitView null error!");\r
- return false;\r
- }\r
-\r
- tempExitInter = new TempExitInter();\r
- if (tempExitInter == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: OnStart tempExitInter null error!");\r
- return false;\r
- }\r
- view[SET_ONE] = tempExitInter;\r
- if (!view[SET_ONE]->InitView(this)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeTempInit view [1] InitView null error!");\r
- return false;\r
- }\r
-\r
- tempReport = new TempReport();\r
- if (tempReport == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure tempReport null error!");\r
- return false;\r
- }\r
- view[SET_TWO] = tempReport;\r
- if (!view[SET_TWO]->InitView(this)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeMeasure view [2] InitView null error!");\r
- return false;\r
- }\r
- tempSwipeList[SET_ONE]->Add(view[SET_ZERO]);\r
- tempSwipeList[SET_ONE]->Add(view[SET_ONE]);\r
- tempSwipeList[SET_ONE]->Add(view[SET_TWO]);\r
- container[thisView] = tempSwipeList[SET_ONE];\r
-\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- tempWhichInter = thisView;\r
- tempWhichMea = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeTempWarn(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeTempWarn");\r
- if (container[thisView] == nullptr) {\r
- tempWarn = new TempWarn();\r
- if (tempWarn == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeTempWarn tempWarn null error!");\r
- return false;\r
- }\r
- container[thisView] = tempWarn;\r
- if (!tempWarn->InitTempWarn()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::InitTempWarn tempWarn null error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- if (TempWarn::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::GetInstance null error!");\r
- return false;\r
- }\r
- TempWarn::GetInstance()->RefreshTempWarn();\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeContinue(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeContinue");\r
- if (container[thisView] == nullptr) {\r
- tempContinue = new TempContinueWarn();\r
- if (tempContinue == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeTempWarn tempContinue null error!");\r
- return false;\r
- }\r
- container[thisView] = tempContinue;\r
- if (!tempContinue->InitTempContinue()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::InitTempWarn tempContinue null error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- if (TempContinueWarn::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempContinueWarn::GetInstance null error!");\r
- return false;\r
- }\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeTempTip(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeTempTip");\r
- if (container[thisView] == nullptr) {\r
- tempLittleTip = new TempLittleTip();\r
- if (tempLittleTip == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: ChangeTempTip tempLittleTip null error!");\r
- return false;\r
- }\r
- container[thisView] = tempLittleTip;\r
- if (!tempLittleTip->InitLittleTip()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: ChangeTempTip InitLittleTip null error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- if (TempLittleTip::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempLittleTip:: GetInstance error!");\r
- return false;\r
- }\r
- TempLittleTip::GetInstance()->RefreshTip();\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeExitPrompt(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeExitPrompt");\r
- if (container[thisView] == nullptr) {\r
- tempExitPrompt = new TempExitPrompt();\r
- if (tempExitPrompt == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: ChangeExitPrompt tempExitPrompt null error!");\r
- return false;\r
- }\r
- container[thisView] = tempExitPrompt;\r
- if (!tempExitPrompt->InitExitPrompt()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: ChangeExitPrompt InitExitPrompt null error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-bool TempMainView::ChangeStudyAbout(int16 thisView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeStudyAbout");\r
- if (container[thisView] == nullptr) {\r
- tempStudyAbout = new TempStudyAbout();\r
- if (tempStudyAbout == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: ChangeStudyAbout tempStudyAbout null error!");\r
- return false;\r
- }\r
- container[thisView] = tempStudyAbout;\r
- if (!tempStudyAbout->InitStudyAbout()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView:: ChangeStudyAbout InitStudyAbout null error!");\r
- return false;\r
- }\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- if (TempStudyAbout::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempStudyAbout:: GetInstance error!");\r
- return false;\r
- }\r
- TempStudyAbout::GetInstance()->RefreshStudy();\r
- tempWhichInter = thisView;\r
- return true;\r
-}\r
-\r
-struct TempViewMapper {\r
- const int16 viewId;\r
- bool (TempMainView::*func)(int16 thisView);\r
-};\r
-\r
-static const TempViewMapper ViewMapper[] = {\r
- {MEASURE_INTER, &TempMainView::ChangeMeasure},\r
- {PROMPT_WEAR, &TempMainView::ChangePrompt},\r
- {CLICK_MEA, &TempMainView::ChangeClickMea},\r
- {REMIND_WEAR, &TempMainView::ChangeRemindWear},\r
- {MEASURE_ING, &TempMainView::ChangeMeaProcess},\r
- {MEASURE_INIT, &TempMainView::ChangeTempInit},\r
- {TEMP_WARN_INTER, &TempMainView::ChangeTempWarn},\r
- {TEMP_TIP, &TempMainView::ChangeTempTip},\r
- {TEMP_EXIT_STUDY, &TempMainView::ChangeExitPrompt},\r
- {TEMP_STUDY, &TempMainView::ChangeStudyAbout},\r
-};\r
-\r
-bool TempMainView::ClickFunc(int16 interf)\r
-{\r
- int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]);\r
- for (int i = 0; i < funcSize; i++) {\r
- if (interf == ViewMapper[i].viewId) {\r
- bool jug = (this->*(ViewMapper[i].func))(interf);\r
- if (!jug) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: ChangeInterFace[%d] false", interf);\r
- return false;\r
- }\r
- return true;\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-void TempMainView::ChangeView(int16 hideView, int16 showView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeView hideView = %d, showView = %d", hideView, showView);\r
- if (hideView > INTERFACES_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeView Overstep ones bounds");\r
- return;\r
- }\r
- interListen = hideView;\r
- if (!ClickFunc(showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMainView::ChangeView ClickFunc error");\r
- return;\r
- }\r
- container[hideView]->SetVisible(false);\r
- container[showView]->SetVisible(true);\r
- \r
- Draw();\r
- return;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempMeaProcess.h"\r
-#include "temperature/TempMainView.h"\r
-\r
-namespace OHOS {\r
-static TempMeaProcess *g_tempMeaProcess = nullptr;\r
-\r
-static const int16 MEASURE_PROCESS_IMAGE_X = 130;\r
-static const int16 MEASURE_PROCESS_IMAGE_Y = 128;\r
-static const int16 MEASURE_PROCESS_BUTTON_X = 120;\r
-static const int16 MEASURE_PROCESS_BUTTON_Y = 135;\r
-static const int16 MEASURE_PROCESS_WIDTH = 80;\r
-static const int16 MEASURE_PROCESS_CIRCLE_WIDTH = 300;\r
-static const int16 CIRCLE_PROGRESS_CENTER_X = 161;\r
-static const int16 CIRCLE_PROGRESS_CENTER_Y = 161;\r
-static const int16 MEA_CIRCLE_RADIUS = 115;\r
-static const int16 MEA_CIRCLE_VALUE = 100;\r
-static const int16 MEA_CIRCLE_PROGRESS_WIDTH = 20;\r
-static const int16 MEA_CIRCLE_PROGRESS_LEFT = 10;\r
-static const int16 MEA_CIRCLE_PROGRESS_TOP = 5;\r
-static const int16 MEA_CIRCLE_PROGRESS_STARTANGLE = 360;\r
-static const int16 MEA_CIRCLE_PROGRESS_ENDANGLE = 0;\r
-static const int16 MEA_PROCESS_LABEL_FONT = 34;\r
-static const int16 MEA_PROCESS_LABEL_X = 155;\r
-static const int16 MEA_PROCESS_LABEL_Y = 370;\r
-static const int16 MEA_PROCESS_LABEL_WIDTH = 150;\r
-static const int16 MEA_PROCESS_LABEL_HEIGHT = 80;\r
-static const int16 MEASURE_IMAGE_WAITING_X = 114;\r
-static const int16 MEASURE_IMAGE_WAITING_Y = 112;\r
-static const int16 CIRCLE_PROGRESS_POSITION_X = 50;\r
-static const int16 CIRCLE_PROGRESS_POSITION_Y = 52;\r
-static const int16 CIRCLE_PROGRESS_POSITION_WIDTH = 300;\r
-constexpr char *MEA_PROCESS_LABEL_TEXT = (char*)"正在测试";\r
-\r
-TempMeaProcess::TempMeaProcess()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::TempMeaProcess");\r
- g_tempMeaProcess = this;\r
-}\r
-\r
-TempMeaProcess::~TempMeaProcess()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::~TempMeaProcess");\r
- RemoveAll();\r
- if (tempCircle != nullptr) {\r
- delete tempCircle;\r
- tempCircle = nullptr;\r
- }\r
- if (imageMeasure != nullptr) {\r
- delete imageMeasure;\r
- imageMeasure = nullptr;\r
- }\r
- if (tempLabel != nullptr) {\r
- delete tempLabel;\r
- tempLabel = nullptr;\r
- }\r
- g_tempMeaProcess = nullptr;\r
-}\r
-\r
-TempMeaProcess *TempMeaProcess::GetInstance(void)\r
-{\r
- return g_tempMeaProcess;\r
-}\r
-\r
-bool TempMeaProcess::TempCirCleProcess()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::TempCirCleProcess");\r
- tempCircle = new UICircleProgress();\r
- if (tempCircle == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::TempCirCleProcess new tempCircle fail");\r
- return false;\r
- }\r
- tempCircle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y,\r
- CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_WIDTH);\r
- tempCircle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y);\r
- tempCircle->SetRadius(MEA_CIRCLE_RADIUS);\r
- tempCircle->SetValue(MEA_CIRCLE_VALUE);\r
- tempCircle->SetBackgroundStyle(STYLE_LINE_WIDTH,\r
- tempCircle->GetBackgroundStyle(STYLE_LINE_WIDTH) + MEA_CIRCLE_PROGRESS_WIDTH);\r
- tempCircle->SetForegroundStyle(STYLE_LINE_WIDTH,\r
- tempCircle->GetForegroundStyle(STYLE_LINE_WIDTH) + MEA_CIRCLE_PROGRESS_WIDTH);\r
- tempCircle->SetStyle(STYLE_PADDING_LEFT, MEA_CIRCLE_PROGRESS_LEFT);\r
- tempCircle->SetStyle(STYLE_PADDING_TOP, MEA_CIRCLE_PROGRESS_TOP);\r
- tempCircle->SetStartAngle(MEA_CIRCLE_PROGRESS_STARTANGLE);\r
- tempCircle->SetEndAngle(MEA_CIRCLE_PROGRESS_ENDANGLE);\r
- tempCircle->SetLineColor(Color::Gray());\r
- Add(tempCircle);\r
- return true;\r
-}\r
-\r
-bool TempMeaProcess::TempInitImage(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
-\r
- imageMeasure = new UIImageView();\r
- if (imageMeasure == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::InitMeasure new image fail");\r
- return false;\r
- }\r
- imageMeasure->SetPosition(MEASURE_PROCESS_IMAGE_X, MEASURE_PROCESS_IMAGE_Y,\r
- MEASURE_PROCESS_WIDTH, MEASURE_PROCESS_WIDTH);\r
- imageMeasure->SetSrc(TEMP_MEASURE);\r
- imageMeasure->SetViewId(TEMP_MEASURE_IMAGE);\r
- imageMeasure->SetOnClickListener(clickListener);\r
- Add(imageMeasure);\r
-\r
- return true;\r
-}\r
-\r
-bool TempMeaProcess::TempInitLabel(void)\r
-{\r
- tempLabel = new UILabel();\r
- if (tempLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::InitMeasure new label fail");\r
- return false;\r
- }\r
- tempLabel->SetText(MEA_PROCESS_LABEL_TEXT);\r
- tempLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MEA_PROCESS_LABEL_FONT);\r
- tempLabel->SetPosition(MEA_PROCESS_LABEL_X, MEA_PROCESS_LABEL_Y, MEA_PROCESS_LABEL_WIDTH,\r
- MEA_PROCESS_LABEL_HEIGHT);\r
- Add(tempLabel);\r
- return true;\r
-}\r
-\r
-UICircleProgress *TempMeaProcess::GetCircleProgress()\r
-{\r
- return tempCircle;\r
-}\r
-\r
-bool TempMeaProcess::GetCircleStatus(void)\r
-{\r
- return circleStatus;\r
-}\r
-\r
-void TempMeaProcess::SetCircleStatus(bool status)\r
-{\r
- circleStatus = status;\r
-}\r
-\r
-bool TempMeaProcess::InitMeaProcess(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::InitMeaProcess");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::InitMeaProcess TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetViewId(TEMP_MEASURE_PROCESS);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::InitMeaProcess TempInitImage() false");\r
- return false;\r
- }\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::InitMeaProcess TempInitLabel() false");\r
- return false;\r
- }\r
- if (!TempCirCleProcess()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeaProcess::InitMeaProcess TempCirCleProcess() false");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempMeasure.h"\r
-\r
-namespace OHOS {\r
-static TempMeasure *g_tempMeasure = nullptr;\r
-\r
-static const char *MEASURE_TITLE = (char*)"体温";\r
-static const char *MEASURE_BUTTON = (char*)"测量";\r
-static const int16 MEASURE_TITLE_FONT = 40;\r
-static const int16 MEASURE_BUTTON_FONT = 35;\r
-static const int16 MEASURE_TITLE_X = 185;\r
-static const int16 MEASURE_TITLE_Y = 30;\r
-static const int16 MEASURE_TITLE_WIDTH = 155;\r
-static const int16 MEASURE_TITLE_HEIGHT = 155;\r
-static const int16 MEASURE_IMAGE_X = 130;\r
-static const int16 MEASURE_IMAGE_Y = 126;\r
-static const int16 MEASURE_IMAGE_WAITING_X = 114;\r
-static const int16 MEASURE_IMAGE_WAITING_Y = 111;\r
-static const int16 BACKGROUND_IMAGE_X = 135;\r
-static const int16 BACKGROUND_IMAGE_Y = 125;\r
-static const int16 MEASURE_WIDTH = 80;\r
-static const int16 MEASURE_DROP_WIDTH = 45;\r
-static const int16 MEASURE_DROP_X = 200;\r
-static const int16 MEASURE_DROP_Y = 415;\r
-static const int16 MEASURE_BUTTON_X = 110;\r
-static const int16 MEASURE_BUTTON_Y = 340;\r
-static const int16 MEASURE_BUTTON_WIDTH = 220;\r
-static const int16 MEASURE_BUTTON_HEIGHT = 80;\r
-static const int16 TEMP_IMAGE_MAX = 2;\r
-static const int16 TEMP_IMAGE_Y = 35;\r
-static const int16 TEMP_COLD_IMAGE_X = 120;\r
-static const int16 TEMP_HOT_IMAGE_X = 275;\r
-static const int16 TEMP_IMAGE_WIDTH = 60;\r
-static const int16 TEMP_IMAGE_HEIGHT = 58;\r
-\r
-TempMeasure::TempMeasure()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeasure::TempMeasure");\r
- g_tempMeasure = this;\r
-}\r
-\r
-TempMeasure::~TempMeasure()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeasure::~TempMeasure");\r
- RemoveAll();\r
- int numMeasure;\r
- if (labelMeasure != nullptr) {\r
- delete labelMeasure;\r
- labelMeasure = nullptr;\r
- }\r
- if (buttonMeasure != nullptr) {\r
- delete buttonMeasure;\r
- buttonMeasure = nullptr;\r
- }\r
- if (backgroudButton != nullptr) {\r
- delete backgroudButton;\r
- backgroudButton = nullptr;\r
- }\r
- for (numMeasure = SET_ZERO; numMeasure < SET_THREE; numMeasure++) {\r
- if (imageMeasure[numMeasure] != nullptr) {\r
- delete imageMeasure[numMeasure];\r
- imageMeasure[numMeasure] = nullptr;\r
- }\r
- }\r
- g_tempMeasure = nullptr;\r
-}\r
-\r
-TempMeasure *TempMeasure::GetInstance(void)\r
-{\r
- return g_tempMeasure;\r
-}\r
-\r
-bool TempMeasure::TempInitImage(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeasure::TempInitImage");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- imageMeasure[SET_ZERO] = new UIImageView();\r
- if (imageMeasure[SET_ZERO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitMeasure new image fail");\r
- return false;\r
- }\r
- imageMeasure[SET_ZERO]->SetPosition(MEASURE_IMAGE_X, MEASURE_IMAGE_Y, MEASURE_WIDTH, MEASURE_WIDTH);\r
- imageMeasure[SET_ZERO]->SetSrc(TEMP_MEASURE);\r
- imageMeasure[SET_ZERO]->SetViewId(TEMP_MEASURE_IMAGE);\r
- imageMeasure[SET_ZERO]->SetTouchable(true);\r
- imageMeasure[SET_ZERO]->SetOnClickListener(clickListener);\r
- Add(imageMeasure[SET_ZERO]);\r
-\r
- imageMeasure[SET_ONE] = new UIImageView();\r
- if (imageMeasure[SET_ONE] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitMeasure new image fail");\r
- return false;\r
- }\r
- imageMeasure[SET_ONE]->SetPosition(MEASURE_DROP_X, MEASURE_DROP_Y, MEASURE_DROP_WIDTH, MEASURE_DROP_WIDTH);\r
- imageMeasure[SET_ONE]->SetSrc(TEMP_UP_DROP);\r
- Add(imageMeasure[SET_ONE]);\r
- \r
- imageMeasure[SET_TWO] = new UIImageView();\r
- if (imageMeasure[SET_TWO] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitMeasure new image fail");\r
- return false;\r
- }\r
- imageMeasure[SET_TWO]->SetPosition(MEASURE_IMAGE_WAITING_X, MEASURE_IMAGE_WAITING_Y);\r
- imageMeasure[SET_TWO]->SetSrc(TEMP_WAITING);\r
- Add(imageMeasure[SET_TWO]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempMeasure::TempInitLabel(void)\r
-{\r
- labelMeasure = new UILabel();\r
- if (labelMeasure == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitMeasure new label fail");\r
- return false;\r
- }\r
- labelMeasure->SetText(MEASURE_TITLE);\r
- labelMeasure->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MEASURE_TITLE_FONT);\r
- labelMeasure->SetPosition(MEASURE_TITLE_X, MEASURE_TITLE_Y, MEASURE_TITLE_WIDTH, MEASURE_TITLE_HEIGHT);\r
- Add(labelMeasure);\r
-\r
- return true;\r
-}\r
-\r
-bool TempMeasure::TempInitButton(void)\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- buttonMeasure = new UILabelButton();\r
- if (buttonMeasure == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitMeasure new label fail");\r
- return false;\r
- }\r
- buttonMeasure->SetPosition(MEASURE_BUTTON_X, MEASURE_BUTTON_Y, MEASURE_BUTTON_WIDTH, MEASURE_BUTTON_HEIGHT);\r
- buttonMeasure->SetText(MEASURE_BUTTON);\r
- buttonMeasure->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MEASURE_BUTTON_FONT);\r
- buttonMeasure->SetViewId(TEMP_MEASURE_BUTTON);\r
- buttonMeasure->SetTextColor(OHOS::TempPresenter::GetInstance()->CyanColor());\r
- buttonMeasure->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::RELEASED);\r
- buttonMeasure->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::PRESSED);\r
- buttonMeasure->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Gray().full, UIButton::INACTIVE);\r
- buttonMeasure->SetOnClickListener(clickListener);\r
- Add(buttonMeasure);\r
-\r
- return true;\r
-}\r
-\r
-bool TempMeasure::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitView");\r
- UNUSED(caller);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitView TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetDraggable(true);\r
- SetTouchable(true);\r
- SetOnDragListener(listener);\r
- \r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitView TempInitLabel() false");\r
- return false;\r
- }\r
- if (!TempInitButton()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitView TempInitButton() false");\r
- return false;\r
- }\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempMeasure::InitView TempInitImage() false");\r
- return false;\r
- }\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "temperature/TempModel.h"\r
-#include "UiConfig.h"\r
-#include "temperature/TempModel.h"\r
-\r
-namespace OHOS {\r
-TempModel::TempModel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempModel::TempModel");\r
-}\r
-\r
-TempModel::~TempModel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempModel::~TempModel");\r
-}\r
-\r
-TempModel *TempModel::GetInstance(void)\r
-{\r
- static TempModel tempModel;\r
- return &tempModel;\r
-}\r
-\r
-void TempModel::SetTempInterLis(int16 interListen)\r
-{\r
- tempInterLis = interListen;\r
-}\r
-\r
-int16 TempModel::GetTempInterLis(void)\r
-{\r
- return tempInterLis;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "temperature/TempPresenter.h"\r
-#include "temperature/TempMainView.h"\r
-#include "ChangeSliceListener.h"\r
-#include "graphic_service.h"\r
-#include "uiservice/ui_service.h"\r
-#include "string"\r
-#include "iostream"\r
-#include "sstream"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_MENU(VIEW_MAIN_TEMP, TempMainView, TempPresenter, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "体温");\r
-\r
-static TempPresenter *g_tempPresenter = nullptr;\r
-\r
-ColorType TempPresenter::CyanColor()\r
-{\r
- return Color::GetColorFromRGB(0x1C, 0xF4, 0xED);\r
-}\r
-\r
-TempPresenter::TempPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter new");\r
- g_tempPresenter = this;\r
-}\r
-\r
-TempPresenter::~TempPresenter()\r
-{\r
- g_tempPresenter = nullptr;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::~TempPresenter");\r
-}\r
-\r
-TempPresenter *TempPresenter::GetInstance()\r
-{\r
- return g_tempPresenter;\r
-}\r
-\r
-void TempPresenter::OnResume(void) \r
-{\r
- SendMsgToUIService(UI_ADD_SLEEP_VETO, 0, nullptr, 0);\r
-}\r
-\r
-void TempPresenter::OnStop(void)\r
-{\r
- SendMsgToUIService(UI_RM_SLEEP_VETO, 0, nullptr, 0);\r
-}\r
-\r
-bool TempPresenter::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnDrag TempMainView::GetInstance() nullptr");\r
- return false;\r
- }\r
- TempMainView::GetInstance()->DropView(view);\r
- }\r
- return true;\r
-}\r
-\r
-void TempPresenter::ProgressNotify(void)\r
-{\r
- if (TempMeaProcess::GetInstance() == nullptr) {\r
- return;\r
- }\r
- if (TempMeaProcess::GetInstance()->GetCircleStatus() &&\r
- TempMeaProcess::GetInstance()->GetCircleProgress() != nullptr) {\r
- if (countTemp > 0) {\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&TempPresenter::UpdateTempCount, this));\r
- } else {\r
- TempMeaProcess::GetInstance()->SetCircleStatus(false);\r
- if (TempMainView::GetInstance() != nullptr) {\r
- TempMainView::GetInstance()->ChangeView(MEASURE_ING, MEASURE_INIT);\r
- }\r
- SetTempCountMax();\r
- }\r
- }\r
- return;\r
-}\r
-\r
-void TempPresenter::SetTempCountMax(void)\r
-{\r
- countTemp = SET_HUNDRED;\r
-}\r
-\r
-void TempPresenter::UpdateTempCount(void)\r
-{\r
- if (TempMeaProcess::GetInstance() != nullptr) {\r
- TempMeaProcess::GetInstance()->GetCircleProgress()->SetValue(countTemp);\r
- }\r
- countTemp--;\r
-}\r
-\r
-void TempPresenter::ClickTempJoin(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickTempJoin start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickTempJoin TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(JOIN_STUDY_INTER, MEASURE_INTER);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickPromptWear(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickPromptWear start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickPromptWear TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(MEASURE_INTER, PROMPT_WEAR);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickPromptNext(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickPromptWear start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickPromptNext TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(PROMPT_WEAR, CLICK_MEA);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickExitMea(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickExitMea start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickExitMea TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(CLICK_MEA, MEASURE_INTER);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickIfWear(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickIfWear start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickIfWear TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- if (wearListen == 0) {\r
- TempMainView::GetInstance()->ChangeView(CLICK_MEA, MEASURE_ING);\r
- } else {\r
- TempMainView::GetInstance()->ChangeView(CLICK_MEA, REMIND_WEAR);\r
- }\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickMeaAgain(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickMeaAgain start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickMeaAgain TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(MEASURE_INIT, MEASURE_ING);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickMeasure(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickMeasure start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickMeasure TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(CLICK_MEA, MEASURE_ING);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickTempTip(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickTempTip start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickTempTip TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(MEASURE_INTER, TEMP_TIP);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickTempExit(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickTempExit start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickTempExit TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- int theView = TempMainView::GetInstance()->GetWhichInter();\r
- if (theView != MEASURE_INTER && theView != MEASURE_INIT) {\r
- theView = MEASURE_INIT;\r
- }\r
- TempMainView::GetInstance()->ChangeView(theView, TEMP_EXIT_STUDY);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickStudyTip(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickStudyTip start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickStudyTip TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- int theView = TempMainView::GetInstance()->GetWhichInter();\r
- if (theView != MEASURE_INTER && theView != MEASURE_INIT) {\r
- theView = MEASURE_INIT;\r
- }\r
- TempMainView::GetInstance()->ChangeView(theView, TEMP_STUDY);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickWarnBack(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickWarnBack start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickStudyTip TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(TEMP_WARN_INTER, MEASURE_INTER);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickExitDelete(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickExitDelete start");\r
- if (TempMainView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickExitDelete TempMainView::GetInstance() nullptr");\r
- return;\r
- }\r
- TempMainView::GetInstance()->ChangeView(TEMP_EXIT_STUDY, TempMainView::GetInstance()->GetListenInter());\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickExit(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickExit start");\r
- uint16 preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
- NativeAbility::GetInstance().ChangeSlice(preSlice);\r
- if (TempModel::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempModel::GetInstance null error!");\r
- return;\r
- }\r
- TempModel::GetInstance()->SetTempInterLis(0);\r
- return;\r
-}\r
-\r
-void TempPresenter::ClickExitTemp(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickExitTemp start");\r
- uint16 preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
- NativeAbility::GetInstance().ChangeSlice(preSlice);\r
- return;\r
-}\r
-\r
-int8 TempPresenter::GetTempListen(void)\r
-{\r
- return tempListen;\r
-}\r
-\r
-struct TempPresentMapper1 {\r
- const char *viewId;\r
- void (TempPresenter::*func)(void);\r
-};\r
-\r
-static const TempPresentMapper1 PresentMapper[] = {\r
- {TEMP_INTER_EXIT, &TempPresenter::ClickExitTemp},\r
- {TEMP_INTER_JOIN, &TempPresenter::ClickTempJoin},\r
- {TEMP_MEASURE_IMAGE, &TempPresenter::ClickPromptWear},\r
- {TEMP_MEASURE_BUTTON, &TempPresenter::ClickPromptWear},\r
- {TEMP_PROMPT_NEXT, &TempPresenter::ClickPromptNext},\r
- {TEMP_MEA_EXIT, &TempPresenter::ClickExitMea},\r
- {TEMP_MEA_IN, &TempPresenter::ClickIfWear},\r
- {TEMP_MEA_AGAIN, &TempPresenter::ClickMeaAgain},\r
- {TEMP_IMAGE_LIT_TIP, &TempPresenter::ClickTempTip},\r
- {TEMP_EXIT_THIS, &TempPresenter::ClickTempExit},\r
- {TEMP_STUDY_THIS, &TempPresenter::ClickStudyTip},\r
- {TEMP_WARN_ID, &TempPresenter::ClickWarnBack},\r
- {TEMP_EXIT_DELETE, &TempPresenter::ClickExitDelete},\r
- {TEMP_EXIT_TRUE, &TempPresenter::ClickExit},\r
-};\r
-\r
-bool TempPresenter::ClickFuncId(const char *buttonName)\r
-{\r
- if (buttonName == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickFuncId buttonName nullptr error!");\r
- return false;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::ClickFuncId buttonName = %s", buttonName);\r
- for (uint16 i = 0; i < sizeof(PresentMapper) / sizeof(PresentMapper[0]); i++) {\r
- if (strcmp(buttonName, PresentMapper[i].viewId) == 0) {\r
- (this->*(PresentMapper[i].func))();\r
- return true;\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-bool TempPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnClick ");\r
- UNUSED(event);\r
- ClickFuncId(view.GetViewId());\r
- return true;\r
-}\r
-\r
-void TempPresenter::OnSwipe(UISwipeView &view)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnSwipe ");\r
- UNUSED(view);\r
- return;\r
-}\r
-\r
-void TempPresenter::Notify(void)\r
-{\r
- ProgressNotify();\r
- return;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempPromptWear.h"\r
-\r
-namespace OHOS {\r
-static TempPromptWear *g_tempPromptWear = nullptr;\r
-\r
-static const int16 PROMPT_LABEL_X = 45;\r
-static const int16 PROMPT_LABEL_Y = 180;\r
-static const int16 PROMPT_LABEL_WIDTH = 350;\r
-static const int16 PROMPT_LABEL_HEIGHT = 200;\r
-static const int16 PROMPT_LABEL_BUTTON_X = 63;\r
-static const int16 PROMPT_LABEL_BUTTON_Y = 366;\r
-static const int16 PROMPT_IMAGE_X = 120;\r
-static const int16 PROMPT_IMAGE_Y = 70;\r
-static const int16 PROMPT_BUTTON_WIDHT = 320;\r
-static const int16 PROMPT_BUTTON_HEIGHT = 101;\r
-static const int16 PROMPT_LABEL_FONT = 35;\r
-static const char *PROMPT_WEAR_LABEL = (char*)"为确保测量准确,建议偏紧佩戴,并保持佩戴10分钟以上再测量";\r
-static const char *PROMPT_BUTTON_LABEL = (char*)"下一步";\r
-\r
-TempPromptWear::TempPromptWear()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPromptWear::TempPromptWear");\r
- g_tempPromptWear = this;\r
-}\r
-\r
-TempPromptWear::~TempPromptWear()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPromptWear::~TempPromptWear");\r
- RemoveAll();\r
- if (tempLabel != nullptr) {\r
- delete tempLabel;\r
- tempLabel = nullptr;\r
- }\r
- if (tempButton != nullptr) {\r
- delete tempButton;\r
- tempButton = nullptr;\r
- }\r
- if (tempImage != nullptr) {\r
- delete tempImage;\r
- tempImage = nullptr;\r
- }\r
- g_tempPromptWear = nullptr;\r
-}\r
-\r
-TempPromptWear *TempPromptWear::GetInstance(void)\r
-{\r
- return g_tempPromptWear;\r
-}\r
-\r
-bool TempPromptWear::TempInitLabel(void)\r
-{\r
- tempLabel = new UILabel();\r
- if (tempLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPromptWear::TempInitLabel new tempLabel fail");\r
- return false;\r
- }\r
- tempLabel->SetPosition(PROMPT_LABEL_X, PROMPT_LABEL_Y, PROMPT_LABEL_WIDTH, PROMPT_LABEL_HEIGHT);\r
- tempLabel->SetText(PROMPT_WEAR_LABEL);\r
- tempLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PROMPT_LABEL_FONT);\r
- Add(tempLabel);\r
-\r
- return true;\r
-}\r
-\r
-bool TempPromptWear::TempInitButton(void)\r
-{\r
- tempButton = new UILabelButton();\r
- if (tempButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPromptWear::InitMeasure new tempButton fail");\r
- return false;\r
- }\r
- tempButton->SetPosition(PROMPT_LABEL_BUTTON_X, PROMPT_LABEL_BUTTON_Y, PROMPT_BUTTON_WIDHT, PROMPT_BUTTON_HEIGHT);\r
- tempButton->SetText(PROMPT_BUTTON_LABEL);\r
- tempButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PROMPT_LABEL_FONT);\r
- tempButton->SetViewId(TEMP_PROMPT_NEXT);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- tempButton->SetOnClickListener(clickListener);\r
- tempButton->SetTextColor(OHOS::TempPresenter::GetInstance()->CyanColor());\r
- tempButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- Add(tempButton);\r
-\r
- return true;\r
-}\r
-\r
-bool TempPromptWear::TempInitImage(void)\r
-{\r
- tempImage = new UIImageView();\r
- if (tempImage == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPromptWear::InitMeasure new UIImageView fail");\r
- return false;\r
- }\r
- tempImage->SetPosition(PROMPT_IMAGE_X, PROMPT_IMAGE_Y); // 30 : offset\r
- tempImage->SetSrc(TEMP_ICON_ENTER);\r
- Add(tempImage);\r
-\r
- return true;\r
-}\r
-\r
-bool TempPromptWear::InitPromptWear(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPromptWear::InitPromptWear");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPromptWear::InitPromptWear TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPromptWear::InitPromptWear TempInitLabel() fail");\r
- return false;\r
- }\r
- if (!TempInitButton()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPromptWear::InitPromptWear TempInitButton() fail");\r
- return false;\r
- }\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPromptWear::InitPromptWear TempInitImage() fail");\r
- return false;\r
- }\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempRemindWear.h"\r
-\r
-namespace OHOS {\r
-static TempRemindWear *g_tempRemindWear = nullptr;\r
-\r
-static const int16 REMIND_BACKGROUND_X = 180;\r
-static const int16 REMIND_BACKGROUND_Y = 350;\r
-static const int16 REMIND_WEAR_IMAGE_X = 120;\r
-static const int16 REMIND_WEAR_IMAGE_WIDTH = 100;\r
-static const int16 REMIND_ROTATE_X = 180;\r
-static const int16 REMIND_ROTATE_Y = 345;\r
-static const int16 REMIND_WEAR_IMAGE_Y = 70;\r
-static const int16 REMIND_LABEL_X = 105;\r
-static const int16 REMIND_LABEL_Y = 200;\r
-static const int16 REMIND_LABEL_WIDTH = 350;\r
-static const int16 REMIND_LABEL_HEIGHT = 200;\r
-static const int16 REMIND_LABEL_FONT = 35;\r
-static const char *REMIND_WEAR_LABEL = (char*)"请佩戴手表测量";\r
-\r
-TempRemindWear::TempRemindWear()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempRemindWear::TempRemindWear");\r
- g_tempRemindWear = this;\r
-}\r
-\r
-TempRemindWear::~TempRemindWear()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempRemindWear::~TempRemindWear");\r
- RemoveAll();\r
- int num;\r
- if (tempLabel != nullptr) {\r
- delete tempLabel;\r
- tempLabel = nullptr;\r
- }\r
- for (num = 0; num < SET_TWO; num++) {\r
- if (tempImage[num] != nullptr) {\r
- delete tempImage[num];\r
- tempImage[num] = nullptr;\r
- }\r
- }\r
- g_tempRemindWear = nullptr;\r
-}\r
-\r
-TempRemindWear *TempRemindWear::GetInstance(void)\r
-{\r
- return g_tempRemindWear;\r
-}\r
-\r
-bool TempRemindWear::TempInitImage(void)\r
-{\r
- tempImage[0] = new UIImageView();\r
- if (tempImage[0] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempRemindWear::InitRemindWear new tempImage[0] fail");\r
- return false;\r
- }\r
- tempImage[0]->SetPosition(REMIND_WEAR_IMAGE_X, REMIND_WEAR_IMAGE_Y);\r
- tempImage[0]->SetSrc(TEMP_ICON_ENTER);\r
- Add(tempImage[0]);\r
-\r
- tempImage[1] = new UIImageView();\r
- if (tempImage[1] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempRemindWear::InitRemindWear new tempImage[1] fail");\r
- return false;\r
- }\r
- tempImage[1]->SetPosition(REMIND_ROTATE_X, REMIND_ROTATE_Y);\r
- tempImage[1]->SetSrc(TEMP_ROTATE);\r
- Add(tempImage[1]);\r
- \r
- return true;\r
-}\r
-\r
-bool TempRemindWear::TempInitLabel(void)\r
-{\r
- tempLabel = new UILabel();\r
- if (tempLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempRemindWear::InitPromptWear new tempLabel fail");\r
- return false;\r
- }\r
- tempLabel->SetPosition(REMIND_LABEL_X, REMIND_LABEL_Y, REMIND_LABEL_WIDTH, REMIND_LABEL_HEIGHT);\r
- tempLabel->SetText(REMIND_WEAR_LABEL);\r
- tempLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, REMIND_LABEL_FONT);\r
- Add(tempLabel);\r
-\r
- return true;\r
-}\r
-\r
-bool TempRemindWear::InitRemindWear(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempRemindWear::InitRemindWear");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetThrowDrag(true);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempRemindWear::InitRemindWear TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempRemindWear::InitRemindWear TempInitImage() false");\r
- return false;\r
- }\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempRemindWear::InitRemindWear TempInitLabel() false");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include "layout/grid_layout.h"\r
-#include "font/ui_font.h"\r
-#include <string>\r
-#include "temperature/TempReport.h"\r
-\r
-namespace OHOS {\r
-static TempReport *g_tempReport = nullptr;\r
-\r
-static const int16 TEMP_LABEL_ONE_X = 170;\r
-static const int16 TEMP_LABEL_ONE_Y = 30;\r
-static const int16 TEMP_LABEL_ONE_WIDTH = 100;\r
-static const int16 TEMP_LABEL_ONE_HEIGHT = 55;\r
-static const int16 TEMP_LABEL_TWO_X = 180;\r
-static const int16 TEMP_LABEL_TWO_Y = 90;\r
-static const int16 TEMP_LABEL_TWO_WIDTH = 130;\r
-static const int16 TEMP_LABEL_TWO_HEIGHT = 35;\r
-static const int16 TEMP_LABEL_THREE_X = 150;\r
-static const int16 TEMP_LABEL_THREE_Y = 270;\r
-static const int16 TEMP_LABEL_THREE_WIDTH = 90;\r
-static const int16 TEMP_LABEL_THREE_HEIGHT = 40;\r
-static const int16 TEMP_LABEL_FOUR_X = 260;\r
-static const int16 TEMP_LABEL_FIVE_X = 60;\r
-static const int16 TEMP_LABEL_FIVE_Y = 320;\r
-static const int16 TEMP_LABEL_FIVE_WIDTH = 300;\r
-static const int16 TEMP_LABEL_FIVE_HEIGHT = 60;\r
-static const int16 TEMP_LABEL_SIX_X = 190;\r
-static const int16 TEMP_LABEL_SIX_Y = 385;\r
-static const int16 TEMP_LABEL_SIX_WIDTH = 80;\r
-static const int16 TEMP_LABEL_SIX_HEIGHT = 40;\r
-static const int16 TEMP_IMAGE_ONE_X = 70;\r
-static const int16 TEMP_IMAGE_ONE_Y = 30;\r
-static const int16 TEMP_IMAGE_TWO_X = 275;\r
-static const int16 TEMP_IMAGE_TWO_Y = 50;\r
-static const int16 TEMP_IMAGE_THREE_X = 117;\r
-static const int16 TEMP_IMAGE_THREE_Y = 273;\r
-static const int16 TEMP_IMAGE_FOUR_X = 230;\r
-static const int16 TEMP_FOUR_X = 40;\r
-static const int16 TEMP_IMAGE_FOUR_Y = 120;\r
-static const int16 TEMP_TITLE_FONT = 50;\r
-static const int16 TEMP_LABEL_FONT = 35;\r
-static const int16 TEMP_TIP_FONT = 30;\r
-static const int16 TEMP_LITTLE_TIP_FONT = 25;\r
-static const char *TEMP_LABEL_FIVE_TEXT = (char *)"可能受佩带松紧、环境冷热等影响,测量结果仅供参考";\r
-static const char *TEMP_LABEL_SIX_TEXT = (char *)"测量";\r
-static const char *TEMP_NUMBERS = (char *)"36.5";\r
-static const char *TEMP_TIME_TIP = (char *)"1分钟前";\r
-\r
-TempReport::TempReport()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempReport::TempReport");\r
- g_tempReport = this;\r
-}\r
-\r
-TempReport::~TempReport()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempReport::~TempReport");\r
- RemoveAll();\r
- for (int16_t labelNum = 0; labelNum < TEMP_SET_SIX; labelNum++) {\r
- if (tempLabel[labelNum] != nullptr) {\r
- delete tempLabel[labelNum];\r
- tempLabel[labelNum] = nullptr;\r
- }\r
- }\r
- for (int16_t imageNum = 0; imageNum < SET_FIVE; imageNum++) {\r
- if (tempImage[imageNum] != nullptr) {\r
- delete tempImage[imageNum];\r
- tempImage[imageNum] = nullptr;\r
- }\r
- }\r
- g_tempReport = nullptr;\r
-}\r
-\r
-TempReport *TempReport::GetInstance(void)\r
-{\r
- return g_tempReport;\r
-}\r
-\r
-typedef struct {\r
- int16 labelNum;\r
- int16 x;\r
- int16 y;\r
- int16 width;\r
- int16 height;\r
- char* name;\r
- int16 font;\r
- const char* text;\r
-} TempReportItem;\r
-\r
-static const TempReportItem tempReportItem[] = {\r
- {SET_ZERO, TEMP_LABEL_ONE_X, TEMP_LABEL_ONE_Y, TEMP_LABEL_ONE_WIDTH, TEMP_LABEL_ONE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TITLE_FONT, TEMP_NUMBERS},\r
- {SET_ONE, TEMP_LABEL_TWO_X, TEMP_LABEL_TWO_Y, TEMP_LABEL_TWO_WIDTH, TEMP_LABEL_TWO_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_TIP_FONT, TEMP_TIME_TIP},\r
- {SET_TWO, TEMP_LABEL_THREE_X, TEMP_LABEL_THREE_Y, TEMP_LABEL_THREE_WIDTH, TEMP_LABEL_THREE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT, TEMP_NUMBERS},\r
- {SET_THREE, TEMP_LABEL_FOUR_X, TEMP_LABEL_THREE_Y, TEMP_LABEL_THREE_WIDTH, TEMP_LABEL_THREE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT, TEMP_NUMBERS},\r
- {SET_FOUR, TEMP_LABEL_FIVE_X, TEMP_LABEL_FIVE_Y, TEMP_LABEL_FIVE_WIDTH, TEMP_LABEL_FIVE_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LITTLE_TIP_FONT, TEMP_LABEL_FIVE_TEXT},\r
- {SET_FIVE, TEMP_LABEL_SIX_X, TEMP_LABEL_SIX_Y, TEMP_LABEL_SIX_WIDTH, TEMP_LABEL_SIX_HEIGHT,\r
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT, TEMP_LABEL_SIX_TEXT},\r
-};\r
-\r
-bool TempReport::SetBasicLabel(void)\r
-{\r
- for (int num = 0; num <= SET_FIVE; num++) {\r
- tempLabel[tempReportItem[num].labelNum] = new UILabel();\r
- if (tempLabel[tempReportItem[num].labelNum] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::InitLittleTip new tempLabel[%d] fail",\r
- tempReportItem[num].labelNum);\r
- return false;\r
- }\r
- tempLabel[tempReportItem[num].labelNum]->SetPosition(tempReportItem[num].x, tempReportItem[num].y,\r
- tempReportItem[num].width, tempReportItem[num].height);\r
- tempLabel[tempReportItem[num].labelNum]->SetFont(tempReportItem[num].name, tempReportItem[num].font);\r
- tempLabel[tempReportItem[num].labelNum]->SetText(tempReportItem[num].text);\r
- Add(tempLabel[tempReportItem[num].labelNum]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TempReport::SetAppendLabel(void)\r
-{\r
- if (tempLabel[SET_FOUR] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::SetAppendLabel new tempLabel[SET_FOUR] fail");\r
- return false;\r
- }\r
- tempLabel[SET_FOUR]->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- tempLabel[SET_FOUR]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- tempLabel[SET_FIVE]->SetTextColor(TempPresenter::GetInstance()->CyanColor());\r
-\r
- return true;\r
-}\r
-\r
-bool TempReport::InitSimilarImage(int16 num, int16 tempX, int16 tempY, const char* imageSrc)\r
-{\r
- tempImage[num] = new UIImageView();\r
- if (tempImage[num] == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::InitSimilarImage new tempImage[%d] fail", num);\r
- return false;\r
- }\r
- tempImage[num]->SetPosition(tempX, tempY);\r
- tempImage[num]->SetSrc(imageSrc);\r
- Add(tempImage[num]);\r
-\r
- return true;\r
-}\r
-\r
-bool TempReport::TempInitImage(void)\r
-{\r
- if (!InitSimilarImage(SET_ZERO, TEMP_IMAGE_ONE_X, TEMP_IMAGE_ONE_Y, TEMP_LITTLE_MEASURE)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::TempReport InitSimilarImage false");\r
- return false;\r
- }\r
- if (!InitSimilarImage(SET_ONE, TEMP_IMAGE_TWO_X, TEMP_IMAGE_TWO_Y, TEMP_LIT_TIP)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::TempReport InitSimilarImage false");\r
- return false;\r
- }\r
- if (!InitSimilarImage(SET_TWO, TEMP_IMAGE_THREE_X, TEMP_IMAGE_THREE_Y, TEMP_POINT)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::TempReport InitSimilarImage false");\r
- return false;\r
- }\r
- if (!InitSimilarImage(SET_THREE, TEMP_IMAGE_FOUR_X, TEMP_IMAGE_THREE_Y, TEMP_REV_POINTER)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::TempReport InitSimilarImage false");\r
- return false;\r
- }\r
- if (!InitSimilarImage(SET_FOUR, TEMP_FOUR_X, TEMP_IMAGE_FOUR_Y, TEMP_REPORT)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::TempReport InitSimilarImage false");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-bool TempReport::InitView(void *caller)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempReport::InitView");\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::InitView TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UNUSED(caller);\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
-\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::InitView TempInitImage false");\r
- return false;\r
- }\r
- if (!SetBasicLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::InitView SetBasicLabel false");\r
- return false;\r
- }\r
- if (!SetAppendLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempReport::InitView SetAppendLabel false");\r
- return false;\r
- }\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: temperature
- * Author:
- * Create: 2022-02-15
- */
-
-#include "UiConfig.h"
-#include <string>
-#include "temperature/TempStudyAbout.h"
-
-namespace OHOS {
-static TempStudyAbout *g_tempStudyAbout = nullptr;
-
-static const int16 TEMP_LABEL_ONE_X = 150;
-static const int16 TEMP_LABEL_ONE_Y = 50;
-static const int16 TEMP_LABEL_ONE_WIDTH = 150;
-static const int16 TEMP_LABEL_ONE_HEIGHT = 45;
-static const int16 TEMP_LABEL_TWO_X = 45;
-static const int16 TEMP_LABEL_TWO_Y = 110;
-static const int16 TEMP_LABEL_TWO_WIDTH = 390;
-static const int16 TEMP_LABEL_TWO_HEIGHT = 200;
-static const int16 TEMP_LABEL_THREE_Y = 310;
-static const int16 TEMP_LABEL_FOUR_Y = 520;
-static const int16 LABEL_FOUR_HEIGHT = 310;
-static const int16 TEMP_LABEL_FIVE_Y = 843;
-static const int16 TEMP_LABEL_FONT = 35;
-static const int16 TEMP_LABEL_TIP_FONT = 28;
-static const char *TEMP_STUDY_LABEL_ONE = (char *)"关于研究";
-static const char *TEMP_STUDY_LABEL_TWO = (char *)"本功能通过内置温度传感器测量腕部皮肤温度,主要研究腕部皮肤温度和体温的关系";
-static const char *TEMP_STUDY_LABEL_THREE = (char *)"本功能用于18岁以上健康人群测量运动过程,及之后腕部皮肤温度和体温的变化。";
-static const char *TEMP_STUDY_LABEL_FOUR = (char *)"测量需佩戴10分钟以上,且容易受到环境因素影响。目前达不到水银体温计精度,测量结果仅供参考,不作为医疗诊断依据。";
-static const char *TEMP_STUDY_LABEL_FIVE = (char *)"加入研究时间2022/3/84:16:35OPM";
-
-TempStudyAbout::TempStudyAbout()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::TempStudyAbout");
- g_tempStudyAbout = this;
-}
-
-TempStudyAbout::~TempStudyAbout()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::~TempStudyAbout");
- RemoveAll();
- int8 num;
- for (num = SET_ZERO; num < SET_FIVE; num++) {
- if (tempLabel[num] != nullptr) {
- delete tempLabel[num];
- tempLabel[num] = nullptr;
- }
- }
- g_tempStudyAbout = nullptr;
-}
-
-TempStudyAbout *TempStudyAbout::GetInstance(void)
-{
- return g_tempStudyAbout;
-}
-
-typedef struct {
- int16 labelNum;
- int16 x;
- int16 y;
- int16 width;
- int16 height;
- char* name;
- int16 font;
- const char* text;
-} TempStudyItem;
-
-static const TempStudyItem tempStudyItem[] = {
- { SET_ZERO, TEMP_LABEL_ONE_X, TEMP_LABEL_ONE_Y, TEMP_LABEL_ONE_WIDTH, TEMP_LABEL_ONE_HEIGHT,
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT, TEMP_STUDY_LABEL_ONE },
- { SET_ONE, TEMP_LABEL_TWO_X, TEMP_LABEL_TWO_Y, TEMP_LABEL_TWO_WIDTH, TEMP_LABEL_TWO_HEIGHT,
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT, TEMP_STUDY_LABEL_TWO },
- { SET_TWO, TEMP_LABEL_TWO_X, TEMP_LABEL_THREE_Y, TEMP_LABEL_TWO_WIDTH, TEMP_LABEL_TWO_HEIGHT,
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT, TEMP_STUDY_LABEL_THREE },
- { SET_THREE, TEMP_LABEL_TWO_X, TEMP_LABEL_FOUR_Y, TEMP_LABEL_TWO_WIDTH, LABEL_FOUR_HEIGHT,
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_FONT, TEMP_STUDY_LABEL_FOUR },
- { SET_FOUR, TEMP_LABEL_TWO_X, TEMP_LABEL_FIVE_Y, TEMP_LABEL_TWO_WIDTH, TEMP_LABEL_TWO_HEIGHT,
- (char *)DEFAULT_VECTOR_FONT_FILENAME, TEMP_LABEL_TIP_FONT, TEMP_STUDY_LABEL_FIVE },
-};
-
-bool TempStudyAbout::SetBasicLabel(void)
-{
- for (int num = 0; num <= SET_FOUR; num++) {
- tempLabel[tempStudyItem[num].labelNum] = new UILabel();
- if (tempLabel[tempStudyItem[num].labelNum] == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::InitLittleTip new tempLabel[%d] fail",
- tempStudyItem[num].labelNum);
- return false;
- }
- tempLabel[tempStudyItem[num].labelNum]->SetPosition(tempStudyItem[num].x, tempStudyItem[num].y,
- tempStudyItem[num].width, tempStudyItem[num].height);
- tempLabel[tempStudyItem[num].labelNum]->SetFont(tempStudyItem[num].name, tempStudyItem[num].font);
- tempLabel[tempStudyItem[num].labelNum]->SetText(tempStudyItem[num].text);
- Add(tempLabel[tempStudyItem[num].labelNum]);
- }
- return true;
-}
-
-bool TempStudyAbout::SetAppendLabel(void)
-{
- if (tempLabel[SET_FOUR] == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::SetAppendLabel new tempLabel[SET_FOUR] fail");
- return false;
- }
- tempLabel[SET_FOUR]->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
- tempLabel[SET_FOUR]->SetTextColor(Color::Gray());
-
- return true;
-}
-
-bool TempStudyAbout::InitStudyAbout(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::InitStudyAbout");
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- SetThrowDrag(true);
- if (TempPresenter::GetInstance() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::InitStudyAbout TempPresenter::GetInstance() nullptr");
- return false;
- }
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());
- SetOnDragListener(listener);
- SetHorizontalScrollState(false);
- SetScrollBlankSize(50); // 50:font size
- SetDraggable(true);
- SetTouchable(true);
-
- if (!SetBasicLabel()) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::InitStudyAbout SetBasicLabel() false");
- return false;
- }
- if (!SetAppendLabel()) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::InitStudyAbout SetAppendLabel() false");
- return false;
- }
- return true;
-}
-
-void TempStudyAbout::RefreshStudy(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempStudyAbout::RefreshStudy");
- ScrollBy(0, TEMP_LABEL_ONE_Y - tempLabel[0]->GetY());
-}
-}
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2022-02-15\r
- */\r
-\r
-#include "UiConfig.h"\r
-#include <string>\r
-#include "temperature/TempWarn.h"\r
-\r
-namespace OHOS {\r
-static TempWarn *g_tempWarn = nullptr;\r
-\r
-static const int16 TEMP_WARN_IMAGE_X = 182;\r
-static const int16 TEMP_WARN_IMAGE_Y = 57;\r
-static const int16 TEMP_WARN_BUTTON_X = 63;\r
-static const int16 TEMP_WARN_BUTTON_Y = 366;\r
-static const int16 TEMP_WARN_BUTTON_WIDHT = 320;\r
-static const int16 TEMP_WARN_BUTTON_HEIGHT = 101;\r
-static const int16 TEMP_WARN_LABEL_FONT = 35;\r
-static const int16 TEMP_WARN_LABEL_X = 60;\r
-static const int16 TEMP_WARN_LABEL_Y = 160;\r
-static const int16 TEMP_WARN_LABEL_WIDTH = 350;\r
-static const int16 TEMP_WARN_LABEL_HEIGHT = 200;\r
-static const char *TEMP_WARN_BUTTON_TEXT = (char*)"知道了";\r
-static const char *TEMP_WARN_COLD_LABEL = (char*)"当前体温温度过低(低于35℃),请检测佩戴状态并做好重复测量";\r
-static const char *TEMP_WARN_HOT_LABEL = (char*)"当前体温温度过高(高于37.2℃),请检测佩戴状态并做好重复测量";\r
-static const char *TEMP_WARN_ENVIR = (char*)"检测到手表周围温度波动。可能是受环境变化、高功耗应用、佩戴郭松、手表沾水等影响,请进行相应调整并等待10分钟在进行测量";\r
-\r
-TempWarn::TempWarn()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempWarn::TempWarn");\r
- g_tempWarn = this;\r
-}\r
-\r
-TempWarn::~TempWarn()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempWarn::~TempWarn");\r
- RemoveAll();\r
- if (tempImage != nullptr) {\r
- delete tempImage;\r
- tempImage = nullptr;\r
- }\r
- if (tempButton != nullptr) {\r
- delete tempButton;\r
- tempButton = nullptr;\r
- }\r
- if (tempLabel != nullptr) {\r
- delete tempLabel;\r
- tempLabel = nullptr;\r
- }\r
- g_tempWarn = nullptr;\r
-}\r
-\r
-TempWarn *TempWarn::GetInstance(void)\r
-{\r
- return g_tempWarn;\r
-}\r
-\r
-bool TempWarn::TempInitImage(void)\r
-{\r
- tempImage = new UIImageView();\r
- if (tempImage == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::InitRemindWear new tempImage fail");\r
- return false;\r
- }\r
- tempImage->SetPosition(TEMP_WARN_IMAGE_X, TEMP_WARN_IMAGE_Y);\r
- tempImage->SetSrc(TEMP_WARN);\r
- Add(tempImage);\r
-\r
- return true;\r
-}\r
-\r
-bool TempWarn::TempInitButton(void)\r
-{\r
- tempButton = new UILabelButton();\r
- if (tempButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::InitMeasure new tempButton fail");\r
- return false;\r
- }\r
- tempButton->SetPosition(TEMP_WARN_BUTTON_X, TEMP_WARN_BUTTON_Y, TEMP_WARN_BUTTON_WIDHT, TEMP_WARN_BUTTON_HEIGHT);\r
- tempButton->SetText(TEMP_WARN_BUTTON_TEXT);\r
- tempButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_WARN_LABEL_FONT);\r
- tempButton->SetViewId(TEMP_WARN_ID);\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TempPresenter::GetInstance();\r
- tempButton->SetOnClickListener(clickListener);\r
- tempButton->SetTextColor(OHOS::TempPresenter::GetInstance()->CyanColor());\r
- tempButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- Add(tempButton);\r
-\r
- return true;\r
-}\r
-\r
-bool TempWarn::TempInitLabel(void)\r
-{\r
- tempLabel = new UILabel();\r
- if (tempLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::TempInitLabel new tempLabel fail");\r
- return false;\r
- }\r
- tempLabel->SetPosition(TEMP_WARN_LABEL_X, TEMP_WARN_LABEL_Y, TEMP_WARN_LABEL_WIDTH, TEMP_WARN_LABEL_HEIGHT);\r
- tempLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEMP_WARN_LABEL_FONT);\r
- tempLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- Add(tempLabel);\r
-\r
- return true;\r
-}\r
-\r
-bool TempWarn::InitTempWarn(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempWarn::InitTempWarn");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- SetThrowDrag(true);\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::InitTempWarn TempPresenter::GetInstance() nullptr");\r
- return false;\r
- }\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(TempPresenter::GetInstance());\r
- SetOnDragListener(listener);\r
- SetDraggable(true);\r
- SetTouchable(true);\r
-\r
- if (!TempInitImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::InitTempWarn TempInitImage() false");\r
- return false;\r
- }\r
- if (!TempInitButton()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::InitTempWarn TempInitButton() false");\r
- return false;\r
- }\r
- if (!TempInitLabel()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::InitTempWarn TempInitLabel() false");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-void TempWarn::RefreshTempWarn(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempWarn::RefreshTempWarn");\r
- if (TempPresenter::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::RefreshTempWarn GetInstance nullptr");\r
- return;\r
- }\r
- if (tempLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempWarn::RefreshTempWarn tempLabel nullptr");\r
- return;\r
- }\r
- int8 tempListener = TempPresenter::GetInstance()->GetTempListen();\r
- if (tempListener == 0) {\r
- tempLabel->SetText(TEMP_WARN_COLD_LABEL);\r
- } else if (tempListener == 1) {\r
- tempLabel->SetText(TEMP_WARN_HOT_LABEL);\r
- } else {\r
- tempLabel->SetText(TEMP_WARN_ENVIR);\r
- }\r
- return;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TimerTimingPage\r
- * Create: 2025-06-09\r
- */\r
-\r
-#include <cmath>\r
-#include <string>\r
-#include "timers/TimerTimingPage.h"\r
-#include "ui_test_group.h"\r
-#include "timers/TimerPresenter.h"\r
-#include "wearable_log.h"\r
-#include "timers/TimerView.h"\r
-#include "SlicePageFactory.h"\r
-#include "common/image_cache_manager.h"\r
-#include "pwm.h"\r
-#include "main/LoadImg.h"\r
-#ifdef BUILD_IN_LINUX\r
-#include "localtime.h"\r
-#endif\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t NUM_TEN = 10;\r
-static constexpr uint16_t TIMING_TITLE_POSITION_X = 170;\r
-static constexpr uint16_t TIMING_TITLE_POSITION_Y = 110;\r
-static constexpr uint16_t TIMING_TITLE_SIZE_WIDTH = 114;\r
-static constexpr uint16_t TIMING_TITLE_SIZE_HEIGHT = 38;\r
-static constexpr uint16_t TIMING_TITLE_FONT = 38;\r
-static constexpr uint16_t TIMING_LABEL_CURTIME_XPOS = 199;\r
-static constexpr uint16_t TIMING_LABEL_CURTIME_YPOS = 54;\r
-static constexpr uint16_t TIMING_LABEL_CURTIME_WIDTH = 67;\r
-static constexpr uint16_t TIMING_LABEL_CURTIME_HEIGHT = 24;\r
-static constexpr uint16_t TIMING_LABEL_CURTIME_FONT_SIZE = 24;\r
-static constexpr uint16_t TIMING_START_IMAGE_XPOS = 251;\r
-static constexpr uint16_t TIMING_START_IMAGE_YPOS = 306;\r
-static constexpr uint16_t TIMING_START_IMAGE_SIZE = 96;\r
-static constexpr uint16_t TIMING_RESET_IMAGE_XPOS = 107;\r
-static constexpr uint16_t TIMING_RESET_IMAGE_YPOS = 306;\r
-static constexpr uint16_t TIMING_RESET_IMAGE_SIZE = 96;\r
-static constexpr uint16_t TIMING_TIMER_TIME_XPOS = 85;\r
-static constexpr uint16_t TIMING_TIMER_TIME_YPOS = 182;\r
-static constexpr uint16_t TIMING_TIMER_TIME_WIDTH = 322;\r
-static constexpr uint16_t TIMING_TIMER_TIME_HEIGHT = 90;\r
-static constexpr uint16_t TIMING_TIMER_TIME_FONT_SIZE = 72;\r
-static constexpr uint16_t HOUR_TIME = 3600;\r
-static constexpr uint16_t MIN_TIME = 60;\r
-static constexpr uint16_t TIMING_CIRCLE_LINE_WIDTH = 10;\r
-static constexpr uint16_t TIMING_CIRCLE = 227;\r
-static constexpr uint16_t CIRCLE_RADIUS = 222;\r
-static constexpr uint16_t TIMING_CIRCLE_END = 360;\r
-static constexpr uint32_t TIMING_CIRCLE_RANGE = 100000;\r
-static constexpr uint16_t MAX_SCR_DIS = 1000;\r
-static constexpr uint32_t HOUR_RANGE = 60000;\r
-static constexpr uint16_t TIMING_HAND_POSITION_XPOS = 224;\r
-static constexpr uint16_t TIMING_HAND_POSITION_YPOS = 4;\r
-static constexpr uint16_t TIMING_HAND_CENTER_XPOS = 3;\r
-static constexpr uint16_t TIMING_HAND_CENTER_YPOS = 223;\r
-static constexpr uint16_t TIMING_HAND_WIDTH = 2;\r
-static constexpr uint16_t TIMING_HAND_HEIGHT = 5;\r
-\r
-REGIST_SLICE_PAGE(VIEW_TIMER, TIMER_PAGES::TIMER_TIMING_PAGE, TimerTimingPage, false);\r
-\r
-static std::string GetCurrentTimeStr()\r
-{\r
- struct tm localTime;\r
- time_t seconds = time(nullptr);\r
- localtime_r(&seconds, &localTime);\r
- std::string currTime;\r
- if (localTime.tm_hour < NUM_TEN) {\r
- currTime += "0";\r
- }\r
- currTime += std::to_string(localTime.tm_hour) + ":";\r
- if (localTime.tm_min < NUM_TEN) {\r
- currTime += "0";\r
- }\r
- currTime += std::to_string(localTime.tm_min);\r
- return currTime;\r
-}\r
-\r
-TimerTimingPage::~TimerTimingPage()\r
-{\r
- bool ret = ImageCacheManager::GetInstance().UnloadAllInMultiRes(TIMER_IMAGE);\r
- if (ret == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UnloadTimerImage fail");\r
- }\r
-\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
-\r
- if (sweepClock_ != nullptr) {\r
- sweepClock_->RemoveAll();\r
- delete sweepClock_;\r
- sweepClock_ = nullptr;\r
- }\r
-\r
- if (dClock != nullptr) {\r
- delete dClock;\r
- dClock = nullptr;\r
- }\r
-\r
- if (title != nullptr) {\r
- delete title;\r
- title = nullptr;\r
- }\r
-\r
- if (timerTime != nullptr) {\r
- delete timerTime;\r
- timerTime = nullptr;\r
- }\r
-\r
- if (reset != nullptr) {\r
- delete reset;\r
- reset = nullptr;\r
- }\r
-\r
- if (start != nullptr) {\r
- delete start;\r
- start = nullptr;\r
- }\r
-\r
- if (circleProgress != nullptr) {\r
- delete circleProgress;\r
- circleProgress = nullptr;\r
- }\r
-\r
- if (currentTime_ != nullptr) {\r
- delete currentTime_;\r
- currentTime_ = nullptr;\r
- }\r
-\r
- if (timeCallback_ != nullptr) {\r
- delete timeCallback_;\r
- timeCallback_ = nullptr;\r
- }\r
-\r
- if (timeAnimator_ != nullptr) {\r
- delete timeAnimator_;\r
- timeAnimator_ = nullptr;\r
- }\r
-\r
- if (callBack_ != nullptr) {\r
- delete callBack_;\r
- callBack_ = nullptr;\r
- }\r
-\r
- if (animator_ != nullptr) {\r
- delete animator_;\r
- animator_ = nullptr;\r
- }\r
-\r
- if (secondHand_ != nullptr) {\r
- delete secondHand_;\r
- secondHand_ = nullptr;\r
- }\r
-\r
- if (backround != nullptr) {\r
- delete backround;\r
- backround = nullptr;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::~TimerTimingPage");\r
-}\r
-\r
-void TimerTimingPage::OnStart(void *data)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart() Start!");\r
- bool ret = ImageCacheManager::GetInstance().LoadAllInMultiRes(TIMER_IMAGE);\r
- if (ret == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadTimerImage fail");\r
- return;\r
- }\r
- if (group == nullptr) {\r
- group = new UIScrollView();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new group");\r
- }\r
- group->SetPosition(0, 0, VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- group->SetThrowDrag(true);\r
-\r
- if (backround == nullptr) {\r
- backround = new UIImageView();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new backround");\r
- }\r
- ImageInfo *image =\r
- ImageCacheManager::GetInstance().LoadOneInMultiRes(IMAGE_CONVERTER_TOOL_TIMER_BG, TIMER_IMAGE);\r
- if (image == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart backround source fail");\r
- return;\r
- }\r
- backround->SetSrc(image);\r
- backround->SetPosition(0, 0, VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
-\r
- if (sweepClock_ == nullptr) {\r
- sweepClock_ = new UISweepClock();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new sweepClock_");\r
- }\r
- sweepClock_->SetPosition(0, 0);\r
- sweepClock_->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- sweepClock_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
-\r
- if (secondHand_ == nullptr) {\r
- secondHand_ = new Image();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new secondHand_");\r
- }\r
- ImageInfo *second =\r
- ImageCacheManager::GetInstance().LoadOneInMultiRes(IMAGE_CONVERTER_TOOL_TIMER_POINTER, TIMER_IMAGE);\r
- if (second == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart second source fail");\r
- return;\r
- }\r
- secondHand_->SetSrc(second);\r
- sweepClock_->SetHandImage(UISweepClock::HandType::SECOND_HAND, *secondHand_,\r
- {TIMING_HAND_POSITION_XPOS, TIMING_HAND_POSITION_YPOS}, {TIMING_HAND_CENTER_XPOS, TIMING_HAND_CENTER_YPOS});\r
- sweepClock_->SetHandLine(UISweepClock::HandType::HOUR_HAND, {TIMING_HAND_POSITION_XPOS, TIMING_HAND_POSITION_YPOS},\r
- {TIMING_HAND_CENTER_XPOS, TIMING_HAND_CENTER_YPOS}, Color::White(), TIMING_HAND_WIDTH, TIMING_HAND_HEIGHT,\r
- OPA_TRANSPARENT);\r
- sweepClock_->SetHandLine(UISweepClock::HandType::MINUTE_HAND,\r
- {TIMING_HAND_POSITION_XPOS, TIMING_HAND_POSITION_YPOS}, {TIMING_HAND_CENTER_XPOS, TIMING_HAND_CENTER_YPOS},\r
- Color::White(), TIMING_HAND_WIDTH, TIMING_HAND_HEIGHT, OPA_TRANSPARENT);\r
-\r
- // 标题\r
- if (title == nullptr) {\r
- title = new UILabel();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new title");\r
- }\r
- title->SetPosition(TIMING_TITLE_POSITION_X, TIMING_TITLE_POSITION_Y);\r
- title->Resize(TIMING_TITLE_SIZE_WIDTH, TIMING_TITLE_SIZE_HEIGHT);\r
- title->SetText("计时器");\r
- title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TIMING_TITLE_FONT);\r
- title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- title->SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- title->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- title->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
-\r
- if (currentTime_ == nullptr) {\r
- currentTime_ = new UILabel();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new currentTime_");\r
- }\r
- currentTime_->SetPosition(TIMING_LABEL_CURTIME_XPOS, TIMING_LABEL_CURTIME_YPOS);\r
- currentTime_->Resize(TIMING_LABEL_CURTIME_WIDTH, TIMING_LABEL_CURTIME_HEIGHT);\r
- currentTime_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TIMING_LABEL_CURTIME_FONT_SIZE);\r
- currentTime_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- currentTime_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- currentTime_->SetVisible(true);\r
-\r
- group->Add(backround);\r
- CircleProgress();\r
- group->Add(sweepClock_);\r
- CreateButton();\r
- CreateTimerTime();\r
- group->Add(title);\r
- group->Add(currentTime_);\r
- group->SetOnDragListener(this);\r
- AddViewToPageContainer(group);\r
-\r
- if (timeCallback_ == nullptr) {\r
- timeCallback_ = new TimeAnimatorCallback();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new timeCallback_");\r
- }\r
-\r
- if (timeAnimator_ == nullptr) {\r
- timeAnimator_ = new Animator(timeCallback_, currentTime_, 0, true);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnStart new Animator timeAnimator_");\r
- }\r
- timeAnimator_->Start();\r
-}\r
-\r
-void TimerTimingPage::OnResume()\r
-{\r
- if (TimerModel::GetInstance().GetExistTimer()) {\r
- SetAnimatorStatus(true);\r
- TimerModel::GetInstance().SetExistTimer(false);\r
- }\r
- if (timeAnimator_ != nullptr) {\r
- if (timeAnimator_->GetState() == Animator::STOP) {\r
- timeAnimator_->Start();\r
- }\r
- }\r
- if (!start->IsTouchable()) {\r
- LOADIMG::LoadImageViewImg(start, TIMER_IMAGE, IMAGE_CONVERTER_TOOL_TIMER_PAUSE);\r
- }\r
-}\r
-\r
-void TimerTimingPage::OnPause()\r
-{\r
- if (TimerModel::GetInstance().GetIsTiming()) {\r
- TimerModel::GetInstance().SetExistTimer(true);\r
- }\r
- if (timeAnimator_ != nullptr) {\r
- if (timeAnimator_->GetState() != Animator::STOP) {\r
- timeAnimator_->Stop();\r
- }\r
- }\r
- SetAnimatorStatus(false);\r
-}\r
-\r
-void TimerTimingPage::CreateButton()\r
-{\r
- ImageInfo *image1 = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_PLAY, TIMER_IMAGE);\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_EXIT, TIMER_IMAGE);\r
- // 开始/暂停按钮\r
- if (start == nullptr) {\r
- start = new UIImageView();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::CreateButton new start");\r
- }\r
- start->SetPosition(TIMING_START_IMAGE_XPOS, TIMING_START_IMAGE_YPOS);\r
- start->Resize(TIMING_START_IMAGE_SIZE, TIMING_START_IMAGE_SIZE);\r
- start->SetViewId(START_PAUSE);\r
- start->SetTouchable(true);\r
- start->SetOnClickListener(this);\r
- start->SetSrc(image1);\r
- group->Add(start);\r
-\r
- // 复位按钮\r
- ImageInfo *image2 = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_EXIT, TIMER_IMAGE);\r
- if (reset == nullptr) {\r
- reset = new UIImageView();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::CreateButton new reset");\r
- }\r
- reset->SetPosition(TIMING_RESET_IMAGE_XPOS, TIMING_RESET_IMAGE_YPOS);\r
- reset->Resize(TIMING_RESET_IMAGE_SIZE, TIMING_RESET_IMAGE_SIZE);\r
- reset->SetViewId(RESET);\r
- reset->SetTouchable(true);\r
- reset->SetOnClickListener(this);\r
- reset->SetSrc(image2);\r
- group->Add(reset);\r
-}\r
-\r
-void TimerTimingPage::CreateTimerTime()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::CreateTimerTime() Start!");\r
- if (timerTime == nullptr) {\r
- timerTime = new UIDigitalClock();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::CreateTimerTime() new timerTime!");\r
- }\r
- timerTime->SetPosition(TIMING_TIMER_TIME_XPOS, TIMING_TIMER_TIME_YPOS);\r
- timerTime->Resize(TIMING_TIMER_TIME_WIDTH, TIMING_TIMER_TIME_HEIGHT);\r
- timerTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TIMING_TIMER_TIME_FONT_SIZE);\r
- timerTime->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR);\r
- timerTime->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full);\r
- uint32_t durationTime = TimerModel::GetInstance().GetDurationTime();\r
- uint8_t hour = durationTime / HOUR_TIME;\r
- uint8_t minute = durationTime % HOUR_TIME / MIN_TIME;\r
- uint8_t second = durationTime % MIN_TIME;\r
- timerTime->SetTime24Hour(hour, minute, second);\r
- group->Add(timerTime);\r
-}\r
-\r
-void TimerTimingPage::CircleProgress()\r
-{\r
- // 动态计时圈\r
- if (circleProgress == nullptr) {\r
- circleProgress = new UICircleProgress();\r
- }\r
- circleProgress->SetPosition(0, 0); // widget's left position and top position\r
- circleProgress->Resize(RESOLUTION_WIDTH, RESOLUTION_HEIGHT); // widget's width and height\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_BG_CIR, TIMER_IMAGE);\r
- ImageInfo *image1 = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_PBG, TIMER_IMAGE);\r
- circleProgress->SetImage(image1, image);\r
- circleProgress->EnableBackground(true);\r
- circleProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, TIMING_CIRCLE_LINE_WIDTH);\r
- circleProgress->SetForegroundStyle(STYLE_LINE_WIDTH, TIMING_CIRCLE_LINE_WIDTH);\r
- circleProgress->EnableBackground(true);\r
- circleProgress->SetCenterPosition(TIMING_CIRCLE, TIMING_CIRCLE);\r
- circleProgress->SetRadius(CIRCLE_RADIUS);\r
- circleProgress->SetStartAngle(0);\r
- circleProgress->SetEndAngle(TIMING_CIRCLE_END);\r
- circleProgress->SetRange(TIMING_CIRCLE_RANGE, 0);\r
- circleProgress->SetValue(TIMING_CIRCLE_RANGE);\r
- // Add to rootView\r
- SetupAnimator();\r
- group->Add(circleProgress);\r
-}\r
-\r
-// 单位为毫秒计算\r
-void TimerTimingPage::SetTimerTime(uint32_t onTime)\r
-{\r
- uint64_t time = onTime / MAX_SCR_DIS;\r
- uint8_t hour = time / HOUR_TIME;\r
- uint8_t minute = time % HOUR_TIME / MIN_TIME;\r
- uint8_t second = time % MIN_TIME;\r
- timerTime->SetTime24Hour(hour, minute, second);\r
- uint32_t totalTime = TimerModel::GetInstance().GetDurationTime();\r
- double percentage = static_cast<double>(onTime) / (totalTime * MAX_SCR_DIS);\r
- double value = round(percentage * TIMING_CIRCLE_RANGE);\r
- circleProgress->SetValue(value);\r
- sweepClock_->SetSweepTime24Hour(0, 0, percentage * HOUR_RANGE);\r
-\r
- if (onTime <= 0) {\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_PAUSE, TIMER_IMAGE);\r
- ImageInfo *image1 = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_EXIT, TIMER_IMAGE);\r
- start->SetSrc(image);\r
- start->SetTouchable(false);\r
- reset->SetSrc(image1);\r
- TimerModel::GetInstance().SetIsPause(false);\r
- TimerModel::GetInstance().SetIsTiming(false);\r
- start->Invalidate();\r
- reset->Invalidate();\r
- }\r
- circleProgress->Invalidate();\r
- timerTime->Invalidate();\r
-}\r
-\r
-void TimerTimingPage::SetupAnimator()\r
-{\r
- callBack_ = new TimerTimingCallback(this);\r
- animator_ = new Animator(callBack_, nullptr, 0, true);\r
-}\r
-\r
-void TimerTimingPage::TimerTimingCallback::Callback(UIView *view)\r
-{\r
- (void)view;\r
- static int count = 0;\r
- struct timeval current_time;\r
- gettimeofday(¤t_time, nullptr);\r
-\r
- uint32_t overTime = TimerModel::GetInstance().GetDurationTime();\r
- uint32_t s_time = TimerModel::GetInstance().GetStartTime();\r
- uint32_t saveTime = TimerModel::GetInstance().GetSaveTime();\r
- uint64_t c_time = current_time.tv_sec * MAX_SCR_DIS + current_time.tv_usec / MAX_SCR_DIS;\r
- int32_t remTime = overTime * MAX_SCR_DIS - (c_time - s_time) - saveTime;\r
-\r
- page_->SetTimerTime(remTime);\r
- if (remTime <= 0) {\r
- page_->animator_->Stop();\r
- page_->SetTimerTime(0);\r
- // 调用pwm接口实现马达震动,客户自实现\r
- }\r
-}\r
-\r
-void TimerTimingPage::SetAnimatorStatus(bool status)\r
-{\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_PAUSE_ORANGE, TIMER_IMAGE);\r
- ImageInfo *image1 = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_PLAY, TIMER_IMAGE);\r
- ImageInfo *image2 = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_RESTART, TIMER_IMAGE);\r
- if (status) {\r
- start->SetSrc(image);\r
- reset->SetSrc(image2);\r
- animator_->Start();\r
- TimerModel::GetInstance().InitTimer();\r
- } else {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::SetAnimatorStatus status == false");\r
- animator_->Stop();\r
- start->SetSrc(image1);\r
- TimerModel::GetInstance().DisableTimer();\r
- }\r
-}\r
-\r
-bool TimerTimingPage::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
- (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- if (TimerModel::GetInstance().GetIsTiming()) {\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnDrag ChangeSlice(VIEW_APPLIST)");\r
- } else {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_TIMER, TIMER_PAGES::TIMER_MAIN_PAGE);\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-bool TimerTimingPage::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- UNUSED(event);\r
- std::string viewId = view.GetViewId();\r
- if (viewId == RESET) {\r
- if (TimerModel::GetInstance().GetIsTiming()) {\r
- // 停止计时器 修改复位图标 重新将时间复原\r
- SetAnimatorStatus(false);\r
- TimerModel::GetInstance().SetIsTiming(false);\r
- uint32_t durationTime = TimerModel::GetInstance().GetDurationTime();\r
- uint8_t hour = durationTime / HOUR_TIME;\r
- uint8_t minute = durationTime % HOUR_TIME / MIN_TIME;\r
- uint8_t second = durationTime % MIN_TIME;\r
- timerTime->SetTime24Hour(hour, minute, second);\r
- TimerModel::GetInstance().SetSaveTime(true, 0);\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_EXIT, TIMER_IMAGE);\r
- reset->SetSrc(image);\r
- circleProgress->SetValue(TIMING_CIRCLE_RANGE);\r
- sweepClock_->SetSweepTime24Hour(0, 0, 0);\r
- } else if (! TimerModel::GetInstance().GetIsTiming() && TimerModel::GetInstance().GetIsPause()) {\r
- TimerModel::GetInstance().SetIsTiming(false);\r
- uint32_t durationTime = TimerModel::GetInstance().GetDurationTime();\r
- uint8_t hour = durationTime / HOUR_TIME;\r
- uint8_t minute = durationTime % HOUR_TIME / MIN_TIME;\r
- uint8_t second = durationTime % MIN_TIME;\r
- timerTime->SetTime24Hour(hour, minute, second);\r
- TimerModel::GetInstance().SetSaveTime(true, 0);\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(\r
- IMAGE_CONVERTER_TOOL_TIMER_EXIT, TIMER_IMAGE);\r
- reset->SetSrc(image);\r
- circleProgress->SetValue(TIMING_CIRCLE_RANGE);\r
- sweepClock_->SetSweepTime24Hour(0, 0, 0);\r
- TimerModel::GetInstance().SetIsPause(false);\r
- } else {\r
- NativeAbility::GetInstance().SwitchSlice(VIEW_TIMER, TIMER_PAGES::TIMER_MAIN_PAGE);\r
- }\r
- } else if (viewId == START_PAUSE) {\r
- if (TimerModel::GetInstance().GetIsTiming()) {\r
- SetAnimatorStatus(false);\r
- TimerModel::GetInstance().SetIsTiming(false);\r
- struct timeval current_time;\r
- gettimeofday(¤t_time, nullptr);\r
- uint32_t time = (current_time.tv_sec * MAX_SCR_DIS + current_time.tv_usec / MAX_SCR_DIS) -\r
- TimerModel::GetInstance().GetStartTime();\r
- TimerModel::GetInstance().SetSaveTime(false, time);\r
- TimerModel::GetInstance().SetIsPause(true);\r
- } else {\r
- SetAnimatorStatus(true);\r
- TimerModel::GetInstance().SetIsTiming(true);\r
- struct timeval current_time;\r
- gettimeofday(¤t_time, nullptr);\r
- uint32_t s_time = current_time.tv_sec * MAX_SCR_DIS + current_time.tv_usec / MAX_SCR_DIS; // 转换成ms\r
- TimerModel::GetInstance().SetStartTime(s_time);\r
- TimerModel::GetInstance().SetIsPause(false);\r
- }\r
- } else {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimerTimingPage::OnClick");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-void TimerTimingPage::TimeAnimatorCallback::Callback(UIView *view)\r
-{\r
- UILabel *timeLabel = dynamic_cast<UILabel *>(view);\r
- if (timeLabel == nullptr) {\r
- return;\r
- }\r
- std::string currTime = GetCurrentTimeStr();\r
- timeLabel->SetText(currTime.c_str());\r
- timeLabel->Invalidate();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Data View\r
- * Create: 2025-03-22\r
- */\r
-#include "training/DataView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t TOP_VALUE_LABEL_FONT = 80;\r
-static constexpr uint16_t VALUE_LABEL_FONT = 60;\r
-static constexpr uint16_t UNIT_LABEL_FONT = 30;\r
-static constexpr uint16_t TOP_VALUE_LABEL_X = 164;\r
-static constexpr uint16_t TOP_VALUE_LABEL_Y = 45;\r
-static constexpr uint16_t TOP_VALUE_LABEL_W = 200;\r
-static constexpr uint16_t TOP_VALUE_LABEL_H = 60;\r
-static constexpr uint16_t TOP_UNIT_LABEL_X = 184;\r
-static constexpr uint16_t TOP_UNIT_LABEL_Y = 135;\r
-static constexpr uint16_t TOP_UNIT_LABEL_W = 200;\r
-static constexpr uint16_t TOP_UNIT_LABEL_H = 60;\r
-static constexpr uint16_t LEFT_VALUE_LABEL_X = 52;\r
-static constexpr uint16_t LEFT_VALUE_LABEL_Y = 176;\r
-static constexpr uint16_t LEFT_VALUE_LABEL_W = 200;\r
-static constexpr uint16_t LEFT_VALUE_LABEL_H = 60;\r
-static constexpr uint16_t LEFT_UNIT_LABEL_X = 71;\r
-static constexpr uint16_t LEFT_UNIT_LABEL_Y = 247;\r
-static constexpr uint16_t LEFT_UNIT_LABEL_W = 200;\r
-static constexpr uint16_t LEFT_UNIT_LABEL_H = 60;\r
-static constexpr uint16_t RIGHT_VALUE_LABEL_X = 310;\r
-static constexpr uint16_t RIGHT_VALUE_LABEL_Y = 181;\r
-static constexpr uint16_t RIGHT_VALUE_LABEL_W = 200;\r
-static constexpr uint16_t RIGHT_VALUE_LABEL_H = 60;\r
-static constexpr uint16_t RIGHT_UNIT_LABEL_X = 323;\r
-static constexpr uint16_t RIGHT_UNIT_LABEL_Y = 253;\r
-static constexpr uint16_t RIGHT_UNIT_LABEL_W = 200;\r
-static constexpr uint16_t RIGHT_UNIT_LABEL_H = 60;\r
-static constexpr uint16_t BOTTOM_VALUE_LABEL_X = 113;\r
-static constexpr uint16_t BOTTOM_VALUE_LABEL_Y = 297;\r
-static constexpr uint16_t BOTTOM_VALUE_LABEL_W = 200;\r
-static constexpr uint16_t BOTTOM_VALUE_LABEL_H = 60;\r
-static constexpr uint16_t BOTTOM_UNIT_LABEL_X = 217;\r
-static constexpr uint16_t BOTTOM_UNIT_LABEL_Y = 374;\r
-static constexpr uint16_t BOTTOM_UNIT_LABEL_W = 200;\r
-static constexpr uint16_t BOTTOM_UNIT_LABEL_H = 60;\r
-static constexpr uint16_t SEP_LINE_X = 234;\r
-static constexpr uint16_t SEP_LINE_Y = 181;\r
-static constexpr uint16_t SEP_LINE_W = 4;\r
-static constexpr uint16_t SEP_LINE_H = 85;\r
-\r
-static DataView *g_pDataView{nullptr};\r
-\r
-DataView::DataView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DataView::DataView");\r
- g_pDataView = this;\r
-}\r
-\r
-DataView::~DataView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DataView::~DataView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (backGround != nullptr) {\r
- delete backGround;\r
- backGround = nullptr;\r
- }\r
- if (heartrate != nullptr) {\r
- delete heartrate;\r
- heartrate = nullptr;\r
- }\r
- if (sepLine != nullptr) {\r
- delete sepLine;\r
- sepLine = nullptr;\r
- }\r
- if (topValueLabel != nullptr) {\r
- delete topValueLabel;\r
- topValueLabel = nullptr;\r
- }\r
- if (topUnitLabel != nullptr) {\r
- delete topUnitLabel;\r
- topUnitLabel = nullptr;\r
- }\r
- if (leftValueLabel != nullptr) {\r
- delete leftValueLabel;\r
- leftValueLabel = nullptr;\r
- }\r
- if (leftUnitLabel != nullptr) {\r
- delete leftUnitLabel;\r
- leftUnitLabel = nullptr;\r
- }\r
- if (rightValueLabel != nullptr) {\r
- delete rightValueLabel;\r
- rightValueLabel = nullptr;\r
- }\r
- if (rightUnitLabel != nullptr) {\r
- delete rightUnitLabel;\r
- rightUnitLabel = nullptr;\r
- }\r
- if (bottomValueLabel != nullptr) {\r
- delete bottomValueLabel;\r
- bottomValueLabel = nullptr;\r
- }\r
- if (bottomUnitLabel != nullptr) {\r
- delete bottomUnitLabel;\r
- bottomUnitLabel = nullptr;\r
- }\r
- g_pDataView = nullptr;\r
-}\r
-\r
-DataView *DataView::GetInstance()\r
-{\r
- return g_pDataView;\r
-}\r
-\r
-void DataView::ShowupBackgroup()\r
-{\r
- backGround = new UIImageView();\r
- if (backGround == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFirst new fail");\r
- return;\r
- }\r
- backGround->SetPosition(0, 0);\r
- backGround->SetSrc(PNG_WALK_BACK_GROUND);\r
- group->Add(backGround);\r
-}\r
-\r
-void DataView::ShowupTopView()\r
-{\r
- // Add Label to App\r
- if (topValueLabel == nullptr) {\r
- topValueLabel = new UILabel();\r
- }\r
- topValueLabel->SetPosition(TOP_VALUE_LABEL_X, TOP_VALUE_LABEL_Y);\r
- topValueLabel->Resize(TOP_VALUE_LABEL_W, TOP_VALUE_LABEL_H);\r
-\r
- // Set additional property\r
- topValueLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- topValueLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- topValueLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, VALUE_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(topValueLabel);\r
-\r
- // Add Label to App\r
- if (topUnitLabel == nullptr) {\r
- topUnitLabel = new UILabel();\r
- }\r
- topUnitLabel->SetPosition(TOP_UNIT_LABEL_X, TOP_UNIT_LABEL_Y);\r
- topUnitLabel->Resize(TOP_UNIT_LABEL_W, TOP_UNIT_LABEL_H);\r
-\r
- // Set additional property\r
- topUnitLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- topUnitLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- topUnitLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNIT_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(topUnitLabel);\r
-}\r
-\r
-void DataView::ShowupLeftView()\r
-{\r
- // Add Label to App\r
- if (leftValueLabel == nullptr) {\r
- leftValueLabel = new UILabel();\r
- }\r
- leftValueLabel->SetPosition(LEFT_VALUE_LABEL_X, LEFT_VALUE_LABEL_Y);\r
- leftValueLabel->Resize(LEFT_VALUE_LABEL_W, LEFT_VALUE_LABEL_H);\r
-\r
- // Set additional property\r
- leftValueLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- leftValueLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- leftValueLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, VALUE_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(leftValueLabel);\r
-\r
- // Add Label to App\r
- if (leftUnitLabel == nullptr) {\r
- leftUnitLabel = new UILabel();\r
- }\r
- leftUnitLabel->SetPosition(LEFT_UNIT_LABEL_X, LEFT_UNIT_LABEL_Y);\r
- leftUnitLabel->Resize(LEFT_UNIT_LABEL_W, LEFT_UNIT_LABEL_H);\r
-\r
- // Set additional property\r
- leftUnitLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- leftUnitLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- leftUnitLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNIT_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(leftUnitLabel);\r
-}\r
-\r
-void DataView::ShowupRightView()\r
-{\r
- // Add Label to App\r
- if (rightValueLabel == nullptr) {\r
- rightValueLabel = new UILabel();\r
- }\r
- rightValueLabel->SetPosition(RIGHT_VALUE_LABEL_X, RIGHT_VALUE_LABEL_Y);\r
- rightValueLabel->Resize(RIGHT_VALUE_LABEL_W, RIGHT_VALUE_LABEL_H);\r
-\r
- // Set additional property\r
- rightValueLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- rightValueLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- rightValueLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, VALUE_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(rightValueLabel);\r
-\r
- // Add Label to App\r
- if (rightUnitLabel == nullptr) {\r
- rightUnitLabel = new UILabel();\r
- }\r
- rightUnitLabel->SetPosition(RIGHT_UNIT_LABEL_X, RIGHT_UNIT_LABEL_Y);\r
- rightUnitLabel->Resize(RIGHT_UNIT_LABEL_W, RIGHT_UNIT_LABEL_H);\r
-\r
- // Set additional property\r
- rightUnitLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- rightUnitLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- rightUnitLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNIT_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(rightUnitLabel);\r
-}\r
-\r
-void DataView::ShowupBottomView()\r
-{\r
- // Add Label to App\r
- if (bottomValueLabel == nullptr) {\r
- bottomValueLabel = new UILabel();\r
- }\r
- bottomValueLabel->SetPosition(BOTTOM_VALUE_LABEL_X, BOTTOM_VALUE_LABEL_Y);\r
- bottomValueLabel->Resize(BOTTOM_VALUE_LABEL_W, BOTTOM_VALUE_LABEL_H);\r
-\r
- // Set additional property\r
- bottomValueLabel->SetText("00:12:15");\r
- bottomValueLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- bottomValueLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- bottomValueLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, VALUE_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(bottomValueLabel);\r
-\r
- // Add Label to App\r
- if (bottomUnitLabel == nullptr) {\r
- bottomUnitLabel = new UILabel();\r
- }\r
- bottomUnitLabel->SetPosition(BOTTOM_UNIT_LABEL_X, BOTTOM_UNIT_LABEL_Y);\r
- bottomUnitLabel->Resize(BOTTOM_UNIT_LABEL_W, BOTTOM_UNIT_LABEL_H);\r
-\r
- // Set additional property\r
- bottomUnitLabel->SetText("时间");\r
- bottomUnitLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- bottomUnitLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- bottomUnitLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UNIT_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(bottomUnitLabel);\r
-}\r
-\r
-void DataView::ShowupSepLine()\r
-{\r
- sepLine = new UICanvas();\r
- if (sepLine == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowupSepLine new fail");\r
- return;\r
- }\r
- sepLine->SetPosition(SEP_LINE_X, SEP_LINE_Y, SEP_LINE_W, SEP_LINE_H);\r
- sepLine->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);\r
- sepLine->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- group->Add(sepLine);\r
-}\r
-\r
-UIViewGroup *DataView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DataView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- ShowupBackgroup();\r
- ShowupTopView();\r
- ShowupLeftView();\r
- ShowupRightView();\r
- ShowupBottomView();\r
- ShowupSepLine();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(DATA_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void DataView::UpdateDataViewByType()\r
-{\r
- uint8_t trainingType = TrainingModel::GetInstance().GetCurTrainingType();\r
- if (trainingType == TRAINING_TYPE_OUTDOOR_RUNNING) {\r
- topValueLabel->SetText("105");\r
- topUnitLabel->SetText("心率(次/分钟)");\r
- leftValueLabel->SetText("00'35\"");\r
- leftUnitLabel->SetText("配速(/km)");\r
- rightValueLabel->SetText("3.25");\r
- rightUnitLabel->SetText("距离(km)");\r
- } else if (trainingType == TRAINING_TYPE_INDOOR_RUNNING) {\r
- topValueLabel->SetText("105");\r
- topUnitLabel->SetText("心率(次/分钟)");\r
- leftValueLabel->SetText("00'35\"");\r
- leftUnitLabel->SetText("配速(/km)");\r
- rightValueLabel->SetText("3.25");\r
- rightUnitLabel->SetText("距离(km)");\r
- } else if (trainingType == TRAINING_TYPE_CYCLING) {\r
- topValueLabel->SetText("105");\r
- topUnitLabel->SetText("心率(次/分钟)");\r
- leftValueLabel->SetText("00'35\"");\r
- leftUnitLabel->SetText("配速(/km)");\r
- rightValueLabel->SetText("3.25");\r
- rightUnitLabel->SetText("距离(km)");\r
- } else if (trainingType == TRAINING_TYPE_CLIMBING) {\r
- topValueLabel->SetText("198");\r
- topUnitLabel->SetText("海拔(m)");\r
- leftValueLabel->SetText("535");\r
- leftUnitLabel->SetText("累计上升(m)");\r
- rightValueLabel->SetText("180");\r
- rightUnitLabel->SetText("累计下降(m)");\r
- } else if (trainingType == TRAINING_TYPE_INDOOR_SWIMMING) {\r
- topValueLabel->SetText("105");\r
- topUnitLabel->SetText("心率(次/分钟)");\r
- leftValueLabel->SetText("235");\r
- leftUnitLabel->SetText("热量(kcal)");\r
- rightValueLabel->SetText("125");\r
- rightUnitLabel->SetText("距离(km)");\r
- } else if (trainingType == TRAINING_TYPE_OUTDOOR_SWIMMING) {\r
- topValueLabel->SetText("105");\r
- topUnitLabel->SetText("心率(次/分钟)");\r
- leftValueLabel->SetText("235");\r
- leftUnitLabel->SetText("热量(kcal)");\r
- rightValueLabel->SetText("125");\r
- rightUnitLabel->SetText("距离(km)");\r
- }\r
- topValueLabel->Invalidate();\r
- topUnitLabel->Invalidate();\r
- leftValueLabel->Invalidate();\r
- leftUnitLabel->Invalidate();\r
- rightValueLabel->Invalidate();\r
- rightUnitLabel->Invalidate();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Menu View\r
- * Create: 2025-03-22\r
- */\r
-#include "training/MenuView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t TITLI_LABEL_FONT = 50;\r
-static constexpr uint16_t TITLI_LABEL_X = 133;\r
-static constexpr uint16_t TITLI_LABEL_Y = 36;\r
-static constexpr uint16_t TITLI_LABEL_W = 200;\r
-static constexpr uint16_t TITLI_LABEL_H = 60;\r
-static constexpr uint16_t LIST_X = 42;\r
-static constexpr uint16_t LIST_Y = 95;\r
-static constexpr uint16_t LIST_W = 420;\r
-static constexpr uint16_t LIST_H = 305;\r
-\r
-static MenuView *g_pMenuView{nullptr};\r
-\r
-MenuView::MenuView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MenuView::MenuView");\r
- g_pMenuView = this;\r
-}\r
-\r
-MenuView::~MenuView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MenuView::~MenuView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (titleLabel != nullptr) {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (trainingList != nullptr) {\r
- delete trainingList;\r
- trainingList = nullptr;\r
- }\r
- if (listAdapter_ != nullptr) {\r
- delete listAdapter_;\r
- listAdapter_ = nullptr;\r
- }\r
- g_pMenuView = nullptr;\r
-}\r
-\r
-MenuView *MenuView::GetInstance()\r
-{\r
- return g_pMenuView;\r
-}\r
-\r
-void MenuView::CreateUILabel()\r
-{\r
- // Add Label to App\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- }\r
- titleLabel->SetPosition(TITLI_LABEL_X, TITLI_LABEL_Y);\r
- titleLabel->Resize(TITLI_LABEL_W, TITLI_LABEL_H);\r
-\r
- // Set additional property\r
- titleLabel->SetText("体能训练");\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TITLI_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(titleLabel);\r
-}\r
-\r
-void MenuView::CreateUIList()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
-\r
- // Add List to App\r
- if (trainingList == nullptr) {\r
- trainingList = new UIList();\r
- }\r
- trainingList->SetPosition(LIST_X, LIST_Y);\r
- trainingList->Resize(LIST_W, LIST_H);\r
-\r
- // Set additional property\r
- if (listAdapter_ == nullptr) {\r
- listAdapter_ = new TrainingAdapter();\r
- }\r
- listAdapter_->SetItemClickListener(clickListener);\r
- std::list<TrainingItem> trainingItemList(trainings, trainings + TRAINING_TYPE_MAX);\r
- listAdapter_->SetData(trainingItemList);\r
-\r
- trainingList->SetAdapter(listAdapter_);\r
- trainingList->RefreshList();\r
-\r
- // Add to rootView\r
- group->Add(trainingList);\r
-}\r
-\r
-UIViewGroup *MenuView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MenuView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- CreateUILabel();\r
- CreateUIList();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(MENU_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- */\r
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Pause View\r
- * Create: 2025-03-22\r
- */\r
-#include "training/PauseView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t TIME_LABEL_FONT = 30;\r
-static constexpr uint16_t TIME_LABEL_X = 194;\r
-static constexpr uint16_t TIME_LABEL_Y = 42;\r
-static constexpr uint16_t TIME_LABEL_W = 200;\r
-static constexpr uint16_t TIME_LABEL_H = 60;\r
-static constexpr uint16_t TEXT_LABEL_FONT = 70;\r
-static constexpr uint16_t TEXT_LABEL_X = 128;\r
-static constexpr uint16_t TEXT_LABEL_Y = 133;\r
-static constexpr uint16_t TEXT_LABEL_W = 337;\r
-static constexpr uint16_t TEXT_LABEL_H = 152;\r
-static constexpr uint16_t BUTTON_FONT = 40;\r
-static constexpr uint16_t BUTTON_X = 136;\r
-static constexpr uint16_t BUTTON_Y1 = 236;\r
-static constexpr uint16_t BUTTON_Y2 = 329;\r
-static constexpr uint16_t BUTTON_W = 193;\r
-static constexpr uint16_t BUTTON_H = 75;\r
-\r
-#define BUTTON_TEXT_CONTINUE "继续"\r
-#define BUTTON_TEXT_FINISH "结束"\r
-\r
-static PauseView *g_pPauseView{nullptr};\r
-\r
-PauseView::PauseView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PauseView::PauseView");\r
- g_pPauseView = this;\r
-}\r
-\r
-PauseView::~PauseView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PauseView::~PauseView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (timeLabel != nullptr) {\r
- delete timeLabel;\r
- timeLabel = nullptr;\r
- }\r
- if (textLabel != nullptr) {\r
- delete textLabel;\r
- textLabel = nullptr;\r
- }\r
- if (continueButton != nullptr) {\r
- delete continueButton;\r
- continueButton = nullptr;\r
- }\r
- if (finishButton != nullptr) {\r
- delete finishButton;\r
- finishButton = nullptr;\r
- }\r
- g_pPauseView = nullptr;\r
-}\r
-\r
-PauseView *PauseView::GetInstance()\r
-{\r
- return g_pPauseView;\r
-}\r
-\r
-void PauseView::CreateUILabel()\r
-{\r
- // Add Label to App\r
- if (timeLabel == nullptr) {\r
- timeLabel = new UILabel();\r
- }\r
- timeLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y);\r
- timeLabel->Resize(TIME_LABEL_W, TIME_LABEL_H);\r
-\r
- // Set additional property\r
- timeLabel->SetText("11:59");\r
- timeLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- timeLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- timeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TIME_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(timeLabel);\r
-\r
- // Add Label to App\r
- if (textLabel == nullptr) {\r
- textLabel = new UILabel();\r
- }\r
- textLabel->SetPosition(TEXT_LABEL_X, TEXT_LABEL_Y);\r
- textLabel->Resize(TEXT_LABEL_W, TEXT_LABEL_H);\r
-\r
- // Set additional property\r
- textLabel->SetText("已暂停");\r
- textLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- textLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- textLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TEXT_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(textLabel);\r
-}\r
-\r
-void PauseView::CreateUIButton()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
- // Add LabelButtonExt to App\r
- if (continueButton == nullptr) {\r
- continueButton = new UILabelButton();\r
- }\r
- continueButton->SetPosition(BUTTON_X, BUTTON_Y1);\r
- continueButton->Resize(BUTTON_W, BUTTON_H);\r
- continueButton->SetViewId(TRAINING_PAUSE_CONTINUE_BUTTON);\r
-\r
- // Set additional property\r
- continueButton->SetText(BUTTON_TEXT_CONTINUE);\r
- continueButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_FONT);\r
- continueButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- continueButton->SetOnClickListener(clickListener);\r
-\r
- // Add to rootView\r
- group->Add(continueButton);\r
-\r
- // Add LabelButtonExt to App\r
- if (finishButton == nullptr) {\r
- finishButton = new UILabelButton();\r
- }\r
- finishButton->SetPosition(BUTTON_X, BUTTON_Y2);\r
- finishButton->Resize(BUTTON_W, BUTTON_H);\r
- finishButton->SetViewId(TRAINING_PAUSE_FINISH_BUTTON);\r
- finishButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffbc321e);\r
-\r
- // Set additional property\r
- finishButton->SetText(BUTTON_TEXT_FINISH);\r
- finishButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_FONT);\r
- finishButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- finishButton->SetOnClickListener(clickListener);\r
-\r
- // Add to rootView\r
- group->Add(finishButton);\r
-}\r
-\r
-UIViewGroup *PauseView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PauseView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- CreateUILabel();\r
- CreateUIButton();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(PAUSE_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Prepare View\r
- * Create: 2025-03-22\r
- */\r
-#include "training/PrepareView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-#include "screensetting/ScreenModels.h"\r
-#include "ui_resource_image.h"\r
-\r
-namespace OHOS {\r
-\r
-static constexpr uint16_t HEARTBEAT_IMAGE_X = 366;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_Y = 165;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_W = 56;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_H = 56;\r
-static constexpr uint16_t HEARTBEAT_IMAGE_NUM = 19;\r
-static constexpr uint16_t HEARTBEAT_DELAY = 50;\r
-static constexpr uint16_t HEARTBEAT_LABEL_X = 363;\r
-static constexpr uint16_t HEARTBEAT_LABEL_Y = 241;\r
-static constexpr uint16_t HEARTBEAT_LABEL_W = 86;\r
-static constexpr uint16_t HEARTBEAT_LABEL_H = 30;\r
-static constexpr uint16_t HEARTBEAT_LABEL_FONT = 30;\r
-static constexpr uint16_t BATTERY_X = 175;\r
-static constexpr uint16_t BATTERY_Y = 84;\r
-static constexpr uint16_t BATTERY_LABEL_FONT = 30;\r
-static constexpr uint16_t BATTERY_LABEL_X = 232;\r
-static constexpr uint16_t BATTERY_LABEL_Y = 75;\r
-static constexpr uint16_t BATTERY_LABEL_W = 86;\r
-static constexpr uint16_t BATTERY_LABEL_H = 30;\r
-static constexpr uint16_t GPS_X = 30;\r
-static constexpr uint16_t GPS_Y = 167;\r
-static constexpr uint16_t GPS_W = 56;\r
-static constexpr uint16_t GPS_H = 56;\r
-static constexpr uint16_t GPS_LABEL_FONT = 30;\r
-static constexpr uint16_t GPS_LABEL_X = 29;\r
-static constexpr uint16_t GPS_LABEL_Y = 227;\r
-static constexpr uint16_t GPS_LABEL_W = 200;\r
-static constexpr uint16_t GPS_LABEL_H = 60;\r
-static constexpr uint16_t TIME_LABEL_FONT = 30;\r
-static constexpr uint16_t TIME_LABEL_X = 177;\r
-static constexpr uint16_t TIME_LABEL_Y = 36;\r
-static constexpr uint16_t TIME_LABEL_W = 100;\r
-static constexpr uint16_t TIME_LABEL_H = 30;\r
-static constexpr uint16_t LOCATING_LABEL_FONT = 25;\r
-static constexpr uint16_t LOCATING_LABEL_X = 127;\r
-static constexpr uint16_t LOCATING_LABEL_Y = 348;\r
-static constexpr uint16_t LOCATING_LABEL_W = 200;\r
-static constexpr uint16_t LOCATING_LABEL_H = 80;\r
-static constexpr uint16_t WALK_BUTTON_X = 138;\r
-static constexpr uint16_t WALK_BUTTON_Y = 136;\r
-static constexpr uint16_t WALK_BUTTON_W = 180;\r
-static constexpr uint16_t WALK_BUTTON_H = 180;\r
-static constexpr uint16_t START_BUTTON_X = 196;\r
-static constexpr uint16_t START_BUTTON_Y = 373;\r
-static constexpr uint16_t START_BUTTON_W = 73;\r
-static constexpr uint16_t START_BUTTON_H = 73;\r
-static constexpr uint16_t START_BUTTON_FONT = 30;\r
-\r
-static PrepareView *g_pPrepareView{nullptr};\r
-\r
-PrepareView::PrepareView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PrepareView::PrepareView");\r
- g_pPrepareView = this;\r
-}\r
-\r
-PrepareView::~PrepareView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PrepareView::~PrepareView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (timeLabel != nullptr) {\r
- delete timeLabel;\r
- timeLabel = nullptr;\r
- }\r
- if (battery != nullptr) {\r
- delete battery;\r
- battery = nullptr;\r
- }\r
- if (batteryLabel != nullptr) {\r
- delete batteryLabel;\r
- batteryLabel = nullptr;\r
- }\r
- if (gpsImageView != nullptr) {\r
- delete gpsImageView;\r
- gpsImageView = nullptr;\r
- }\r
- if (gpsLabel != nullptr) {\r
- delete gpsLabel;\r
- gpsLabel = nullptr;\r
- }\r
- if (heartRateImageView != nullptr) {\r
- delete heartRateImageView;\r
- heartRateImageView = nullptr;\r
- }\r
- if (heartRateLabel != nullptr) {\r
- delete heartRateLabel;\r
- heartRateLabel = nullptr;\r
- }\r
- if (locatingLabel != nullptr) {\r
- delete locatingLabel;\r
- locatingLabel = nullptr;\r
- }\r
- if (startButton != nullptr) {\r
- delete startButton;\r
- startButton = nullptr;\r
- }\r
- if (iconImageView != nullptr) {\r
- delete iconImageView;\r
- iconImageView = nullptr;\r
- }\r
- g_pPrepareView = nullptr;\r
-}\r
-\r
-PrepareView *PrepareView::GetInstance()\r
-{\r
- return g_pPrepareView;\r
-}\r
-\r
-bool PrepareView::InitTimeLableVIew()\r
-{\r
- timeLabel = new UILabel();\r
- if (timeLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeLabel new fail");\r
- return false;\r
- }\r
- timeLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y, TIME_LABEL_W, TIME_LABEL_H);\r
- timeLabel->SetText("11:59");\r
- timeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TIME_LABEL_FONT);\r
- timeLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- timeLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(timeLabel);\r
- return true;\r
-}\r
-\r
-bool PrepareView::InitLocatingLableVIew()\r
-{\r
- locatingLabel = new UILabel();\r
- if (locatingLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locatingLabel new fail");\r
- return false;\r
- }\r
- locatingLabel->SetPosition(LOCATING_LABEL_X, LOCATING_LABEL_Y, LOCATING_LABEL_W, LOCATING_LABEL_H);\r
- locatingLabel->SetText("定位中\n请在空旷处等待");\r
- locatingLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LOCATING_LABEL_FONT);\r
- locatingLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- locatingLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(locatingLabel);\r
- return true;\r
-}\r
-\r
-bool PrepareView::InitBatteryView() // 加载电量\r
-{\r
- battery = new UIImageView(); // 电量状态显示\r
- if (battery == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "battery new fail");\r
- return false;\r
- }\r
- battery->SetPosition(BATTERY_X, BATTERY_Y);\r
- ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, battery, DROPDOWN_DROPDOWN_BATTERY);\r
- group->Add(battery);\r
-\r
- batteryLabel = new UILabel();\r
- if (batteryLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryLabel new fail");\r
- return false;\r
- }\r
- batteryLabel->SetPosition(BATTERY_LABEL_X, BATTERY_LABEL_Y, BATTERY_LABEL_W, BATTERY_LABEL_H);\r
- batteryLabel->SetText("30%");\r
- batteryLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BATTERY_LABEL_FONT);\r
- batteryLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- group->Add(batteryLabel);\r
- return true;\r
-}\r
-\r
-bool PrepareView::InitCenterView()\r
-{\r
- iconImageView = new UIButton(); // 步行状态显示\r
- if (iconImageView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "iconImageView new fail");\r
- return false;\r
- }\r
-\r
- iconImageView->SetPosition(WALK_BUTTON_X, WALK_BUTTON_Y, WALK_BUTTON_W, WALK_BUTTON_H);\r
-\r
- group->Add(iconImageView);\r
- return true;\r
-}\r
-\r
-bool PrepareView::InitGPSView()\r
-{\r
- // Add ImageView to App\r
- if (gpsImageView == nullptr) {\r
- gpsImageView = new UIImageView();\r
- }\r
- gpsImageView->SetPosition(GPS_X, GPS_Y);\r
- gpsImageView->Resize(GPS_W, GPS_H);\r
-\r
- // Set additional property\r
-\r
- // Add to rootView\r
- group->Add(gpsImageView);\r
-\r
- // Add Label to App\r
- if (gpsLabel == nullptr) {\r
- gpsLabel = new UILabel();\r
- }\r
- gpsLabel->SetPosition(GPS_LABEL_X, GPS_LABEL_Y);\r
- gpsLabel->Resize(GPS_LABEL_W, GPS_LABEL_H);\r
-\r
- // Set additional property\r
- gpsLabel->SetText("GPS");\r
- gpsLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- gpsLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- gpsLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, GPS_LABEL_FONT);\r
-\r
- // Add to rootView\r
- group->Add(gpsLabel);\r
- return true;\r
-}\r
-\r
-bool PrepareView::InitHeartrateView()\r
-{\r
- // Add ImageView to App\r
- if (heartRateImageView == nullptr) {\r
- heartRateImageView = new UIImageView();\r
- }\r
- heartRateImageView->SetPosition(HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y);\r
- heartRateImageView->Resize(HEARTBEAT_IMAGE_W, HEARTBEAT_IMAGE_H);\r
-\r
- // Add to rootView\r
- group->Add(heartRateImageView);\r
-\r
- heartRateLabel = new UILabel();\r
- if (heartRateLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRateLabel new fail");\r
- return false;\r
- }\r
- heartRateLabel->SetPosition(HEARTBEAT_LABEL_X, HEARTBEAT_LABEL_Y, HEARTBEAT_LABEL_W, HEARTBEAT_LABEL_H);\r
- heartRateLabel->SetText("95");\r
- heartRateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEARTBEAT_LABEL_FONT);\r
- heartRateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- group->Add(heartRateLabel);\r
- return true;\r
-}\r
-\r
-bool PrepareView::InitStartButtonView()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return false;\r
- }\r
-\r
- // Add LabelButtonExt to App\r
- if (startButton == nullptr) {\r
- startButton = new UILabelButton();\r
- }\r
- startButton->SetPosition(START_BUTTON_X, START_BUTTON_Y); // widget's left position and top position\r
- startButton->Resize(START_BUTTON_W, START_BUTTON_H); // widget's width and height\r
- startButton->SetViewId(TRAINING_PREPARE_START_BUTTON); // Set style\r
- startButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffff1500);\r
-\r
- // Set additional property\r
- startButton->SetText("开始");\r
- startButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, START_BUTTON_FONT);\r
- startButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- startButton->SetOnClickListener(clickListener);\r
-\r
- // Add to rootView\r
- group->Add(startButton);\r
- return true;\r
-}\r
-\r
-UIViewGroup *PrepareView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PrepareView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- InitTimeLableVIew();\r
- InitBatteryView();\r
- // InitLocatingLableVIew();\r
- InitCenterView();\r
- InitGPSView();\r
- InitHeartrateView();\r
- InitStartButtonView();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(PREPARE_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void PrepareView::UpdateViewByTrainingType(uint8_t trainingType)\r
-{\r
- if (trainingType == TRAINING_TYPE_OUTDOOR_RUNNING) {\r
- gpsImageView->SetVisible(true);\r
- gpsLabel->SetVisible(true);\r
- iconImageView->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
- } else if (trainingType == TRAINING_TYPE_INDOOR_RUNNING) {\r
- gpsImageView->SetVisible(false);\r
- gpsLabel->SetVisible(false);\r
- iconImageView->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
- } else if (trainingType == TRAINING_TYPE_CYCLING) {\r
- gpsImageView->SetVisible(true);\r
- gpsLabel->SetVisible(true);\r
- iconImageView->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
- } else if (trainingType == TRAINING_TYPE_CLIMBING) {\r
- gpsImageView->SetVisible(true);\r
- gpsLabel->SetVisible(true);\r
- iconImageView->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
- } else if (trainingType == TRAINING_TYPE_INDOOR_SWIMMING) {\r
- gpsImageView->SetVisible(false);\r
- gpsLabel->SetVisible(false);\r
- iconImageView->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
- } else if (trainingType == TRAINING_TYPE_OUTDOOR_SWIMMING) {\r
- gpsImageView->SetVisible(true);\r
- gpsLabel->SetVisible(true);\r
- iconImageView->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
- }\r
- iconImageView->Invalidate();\r
- gpsImageView->Invalidate();\r
- gpsLabel->Invalidate();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Prompt View\r
- * Create: 2025-03-22\r
- */\r
-#include "training/PromptView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABELS_X = 65;\r
-static constexpr uint16_t LABELS_Y = 100;\r
-static constexpr uint16_t LABELS_W = 324;\r
-static constexpr uint16_t LABELS_H = 160;\r
-static constexpr uint16_t LABELS_FONT = 35;\r
-static constexpr uint16_t BUTTON_X1 = 85;\r
-static constexpr uint16_t BUTTON_X2 = 279;\r
-static constexpr uint16_t BUTTON_Y = 320;\r
-static constexpr uint16_t BUTTON_W = 90;\r
-static constexpr uint16_t BUTTON_H = 90;\r
-static const char *PROMPT_CONTENT = "本次运动距离过短,不会记录数据。是否结束?";\r
-static PromptView *g_pPromptView{nullptr};\r
-\r
-PromptView::PromptView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PromptView::PromptView");\r
- g_pPromptView = this;\r
-}\r
-\r
-PromptView::~PromptView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PromptView::~PromptView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (titleLabel != nullptr) {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (cancelButton != nullptr) {\r
- delete cancelButton;\r
- cancelButton = nullptr;\r
- }\r
- if (confirmButton != nullptr) {\r
- delete confirmButton;\r
- confirmButton = nullptr;\r
- }\r
- g_pPromptView = nullptr;\r
-}\r
-\r
-PromptView *PromptView::GetInstance()\r
-{\r
- return g_pPromptView;\r
-}\r
-\r
-void PromptView::CreateUILabel()\r
-{\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PromptView titleLabel new fail");\r
- return;\r
- }\r
- titleLabel->SetPosition(LABELS_X, LABELS_Y, LABELS_W, LABELS_H);\r
- titleLabel->SetText(PROMPT_CONTENT);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABELS_FONT);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- group->Add(titleLabel);\r
- }\r
-}\r
-\r
-void PromptView::CreateUIButton()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
-\r
- if (cancelButton == nullptr) {\r
- cancelButton = new UIButton();\r
- if (cancelButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PromptView cancelButton new fail");\r
- return;\r
- }\r
- cancelButton->SetPosition(BUTTON_X1, BUTTON_Y, BUTTON_W, BUTTON_H);\r
- cancelButton->SetViewId(TRAINING_PROMPT_CANCEL_BUTTON);\r
- cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);\r
- cancelButton->SetOnClickListener(clickListener);\r
- group->Add(cancelButton);\r
- }\r
- if (confirmButton == nullptr) {\r
- confirmButton = new UIButton();\r
- if (confirmButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PromptView confirmButton new fail");\r
- return;\r
- }\r
- confirmButton->SetPosition(BUTTON_X2, BUTTON_Y, BUTTON_W, BUTTON_H);\r
- confirmButton->SetViewId(TRAINING_PROMPT_CONFIRM_BUTTON);\r
- confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);\r
- confirmButton->SetOnClickListener(clickListener);\r
- group->Add(confirmButton);\r
- }\r
-}\r
-\r
-UIViewGroup *PromptView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PromptView InitShowUpView");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- CreateUILabel();\r
- CreateUIButton();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(PROMPT_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetAdapter\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-#include "training/TargetAdapter.h"\r
-#include "training/TargetItemView.h"\r
-\r
-namespace OHOS {\r
-TargetAdapter::TargetAdapter() {}\r
-\r
-TargetAdapter::~TargetAdapter()\r
-{\r
- listData_.clear();\r
-}\r
-\r
-uint16_t TargetAdapter::GetCount(void)\r
-{\r
- return listData_.size();\r
-}\r
-\r
-void TargetAdapter::SetData(const std::list<TargetItem> &data)\r
-{\r
- if (!listData_.empty()) {\r
- listData_.clear();\r
- }\r
- listData_ = data;\r
-}\r
-\r
-UIView *TargetAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData_.empty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData_.size()) {\r
- return nullptr;\r
- }\r
-\r
- std::list<TargetItem>::iterator it = listData_.begin();\r
- for (int i = 0; i < index; i++) {\r
- it++;\r
- }\r
- TargetItem itemData = *it;\r
- TargetItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new TargetItemView();\r
- } else {\r
- item = static_cast<TargetItemView *>(inView);\r
- }\r
- item->SetItemInfo(itemData);\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void TargetAdapter::AddListItem(const TargetItem &item)\r
-{\r
- listData_.push_back(item);\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetItemView\r
- * Author:\r
- * Create: 2025-02-15\r
- */\r
-\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TargetItemView.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t ITEM_X = 0;\r
-static constexpr uint16_t ITEM_Y = 0;\r
-static constexpr uint16_t ITEM_W = 382;\r
-static constexpr uint16_t ITEM_H = 100;\r
-static constexpr uint16_t ICON_X = 0;\r
-static constexpr uint16_t ICON_Y = 0;\r
-static constexpr uint16_t LABEL_X = 100;\r
-static constexpr uint16_t LABEL_Y = 0;\r
-static constexpr uint16_t LABEL_W = 200;\r
-static constexpr uint16_t LABEL_H = 100;\r
-static constexpr uint16_t LABEL_FONT = 35;\r
-static constexpr uint16_t IMAGE_W = 300;\r
-static constexpr uint16_t IMAGE_H = 0;\r
-\r
-TargetItemView::TargetItemView()\r
-{\r
- InitView();\r
-}\r
-\r
-TargetItemView::~TargetItemView()\r
-{\r
- Remove(&sIcon);\r
- Remove(&sLabel);\r
- Remove(&sNextImage);\r
-}\r
-\r
-bool TargetItemView::InitView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetItemView::InitView");\r
- SetPosition(ITEM_X, ITEM_Y, ITEM_W, ITEM_H);\r
- SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- SetStyle(STYLE_BACKGROUND_OPA, UN_OPACITY);\r
- SetTouchable(true);\r
-\r
- sIcon.SetPosition(ICON_X, ICON_Y);\r
- sIcon.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- sLabel.SetPosition(LABEL_X, LABEL_Y);\r
- sLabel.Resize(LABEL_W, LABEL_H);\r
- sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
- sLabel.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- sNextImage.SetSrc(PNG_SETTING_NEXT_IMAGE);\r
- sNextImage.SetPosition(IMAGE_W, IMAGE_H);\r
- sNextImage.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- Add(&sIcon);\r
- Add(&sLabel);\r
- Add(&sNextImage);\r
- return true;\r
-}\r
-\r
-void TargetItemView::SetItemInfo(const TargetItem itemInfo)\r
-{\r
- sItemInfo = itemInfo;\r
- sIcon.SetSrc(itemInfo.icon);\r
- sLabel.SetText(itemInfo.label);\r
- SetViewId(itemInfo.viewId);\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TargetSetting View\r
- * Create: 2025-03-22\r
- */\r
-#include "training/TargetSettingView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABELS_X = 153;\r
-static constexpr uint16_t LABELS_Y = 30;\r
-static constexpr uint16_t LABELS_W = 200;\r
-static constexpr uint16_t LABELS_H = 50;\r
-static constexpr uint16_t LABELS_FONT = 40;\r
-static constexpr uint16_t PICKER_X = 160;\r
-static constexpr uint16_t PICKER_Y = 85;\r
-static constexpr uint16_t PICKER_W = 199;\r
-static constexpr uint16_t PICKER_H = 241;\r
-static constexpr uint16_t PICKER_ITEM_H = 50;\r
-static constexpr uint16_t BUTTON_X = 87;\r
-static constexpr uint16_t BUTTON_Y = 351;\r
-static constexpr uint16_t BUTTON_W = 279;\r
-static constexpr uint16_t BUTTON_H = 116;\r
-static constexpr uint16_t BUTTON_FONT = 40;\r
-static constexpr uint8_t BACKGROUND_FONT = 40;\r
-static constexpr uint8_t HIGHTLIGHT_FONT = 50;\r
-\r
-static TargetSettingView *g_pTargetSettingView{nullptr};\r
-\r
-TargetSettingView::TargetSettingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetSettingView::TargetSettingView");\r
- g_pTargetSettingView = this;\r
-}\r
-\r
-TargetSettingView::~TargetSettingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetSettingView::~TargetSettingView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (titleLabel != nullptr) {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (picker != nullptr) {\r
- delete picker;\r
- picker = nullptr;\r
- }\r
- if (confirmButton != nullptr) {\r
- delete confirmButton;\r
- confirmButton = nullptr;\r
- }\r
- g_pTargetSettingView = nullptr;\r
-}\r
-\r
-TargetSettingView *TargetSettingView::GetInstance()\r
-{\r
- return g_pTargetSettingView;\r
-}\r
-\r
-void TargetSettingView::CreateUILabel()\r
-{\r
- // Add Label to App\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- }\r
- titleLabel->SetPosition(LABELS_X, LABELS_Y);\r
- titleLabel->Resize(LABELS_W, LABELS_H);\r
- titleLabel->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- // Set additional property\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABELS_FONT);\r
-\r
- // Add to rootView\r
- group->Add(titleLabel);\r
-}\r
-\r
-void TargetSettingView::CreateUIPicker()\r
-{\r
- // Add Picker to App\r
- if (picker == nullptr) {\r
- picker = new UIPicker();\r
- }\r
- picker->SetPosition(PICKER_X, PICKER_Y);\r
- picker->Resize(PICKER_W, PICKER_H);\r
- picker->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- // Set additional property\r
- picker->SetItemHeight(PICKER_ITEM_H);\r
-\r
- picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
- picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
-\r
- // Add to rootView\r
- group->Add(picker);\r
-}\r
-\r
-void TargetSettingView::CreateUIButton()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
-\r
- // Add LabelButtonExt to App\r
- if (confirmButton == nullptr) {\r
- confirmButton = new UILabelButton();\r
- }\r
- confirmButton->SetPosition(BUTTON_X, BUTTON_Y);\r
- confirmButton->Resize(BUTTON_W, BUTTON_H);\r
- confirmButton->SetViewId(TARGET_SETTING_CONFIRM_BUTTON);\r
- confirmButton->SetTouchable(true);\r
-\r
- // Set additional property\r
- confirmButton->SetText("确定");\r
- confirmButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_FONT);\r
-\r
- confirmButton->SetOnClickListener(clickListener);\r
-\r
- // Add to rootView\r
- group->Add(confirmButton);\r
-}\r
-\r
-UIViewGroup *TargetSettingView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetSettingView InitShowUpView");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- CreateUILabel();\r
- CreateUIPicker();\r
- CreateUIButton();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(TARGET_SETTING_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-\r
-void TargetSettingView::UpdateViewByTargetType(uint8_t targetType)\r
-{\r
- if (targetType == TRAINING_TARGET_DISTANCE) {\r
- titleLabel->SetText("距离");\r
- const char *uiDistanceData[] = {"1km", "3km", "5km", "10km"};\r
- picker->SetValues(uiDistanceData, sizeof(uiDistanceData) / sizeof(uiDistanceData[0]));\r
- picker->SetTextColor(Color::Gray(), Color::Teal());\r
- confirmButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Teal().full);\r
- } else if (targetType == TRAINING_TARGET_TIME) {\r
- titleLabel->SetText("时间");\r
- const char *uiTimeData[] = {"10分钟", "20分钟", "30分钟", "60分钟"};\r
- picker->SetValues(uiTimeData, sizeof(uiTimeData) / sizeof(uiTimeData[0]));\r
- picker->SetTextColor(Color::Gray(), Color::Orange());\r
- confirmButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Orange().full);\r
- } else if (targetType == TRAINING_TARGET_CALORIE) {\r
- titleLabel->SetText("热量");\r
- const char *uiCalorieData[] = {"100千卡", "200千卡", "300千卡", "500千卡", "1000千卡"};\r
- picker->SetValues(uiCalorieData, sizeof(uiCalorieData) / sizeof(uiCalorieData[0]));\r
- picker->SetTextColor(Color::Gray(), Color::Magenta());\r
- confirmButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Magenta().full);\r
- }\r
- titleLabel->Invalidate();\r
- picker->Invalidate();\r
- confirmButton->Invalidate();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: Target View\r
- * Create: 2025-03-22\r
- */\r
-#include "training/TargetView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABELS_X = 133;\r
-static constexpr uint16_t LABELS_Y = 36;\r
-static constexpr uint16_t LABELS_W = 200;\r
-static constexpr uint16_t LABELS_H = 60;\r
-static constexpr uint16_t LABELS_FONT = 50;\r
-static constexpr uint16_t LIST_X = 42;\r
-static constexpr uint16_t LIST_Y = 95;\r
-static constexpr uint16_t LIST_W = 382;\r
-static constexpr uint16_t LIST_H = 305;\r
-\r
-static TargetView *g_pTargetView{nullptr};\r
-\r
-TargetView::TargetView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetView::TargetView");\r
- g_pTargetView = this;\r
-}\r
-\r
-TargetView::~TargetView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetView::~TargetView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (titleLabel != nullptr) {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (targetList != nullptr) {\r
- delete targetList;\r
- targetList = nullptr;\r
- }\r
- if (listAdapter_ != nullptr) {\r
- delete listAdapter_;\r
- listAdapter_ = nullptr;\r
- }\r
- g_pTargetView = nullptr;\r
-}\r
-\r
-TargetView *TargetView::GetInstance()\r
-{\r
- return g_pTargetView;\r
-}\r
-\r
-void TargetView::CreateUILabel()\r
-{\r
- // Add Label to App\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- }\r
- titleLabel->SetPosition(LABELS_X, LABELS_Y);\r
- titleLabel->Resize(LABELS_W, LABELS_H);\r
-\r
- // Set additional property\r
- titleLabel->SetText("目标");\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABELS_FONT);\r
-\r
- // Add to rootView\r
- group->Add(titleLabel);\r
-}\r
-\r
-void TargetView::CreateUIList()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
-\r
- // Add List to App\r
- if (targetList == nullptr) {\r
- targetList = new UIList();\r
- }\r
- targetList->SetPosition(LIST_X, LIST_Y);\r
- targetList->Resize(LIST_W, LIST_H);\r
- targetList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-\r
- // Set additional property\r
- if (listAdapter_ == nullptr) {\r
- listAdapter_ = new TargetAdapter();\r
- }\r
- listAdapter_->SetItemClickListener(clickListener);\r
- std::list<TargetItem> targetItemList(targets, targets + TRAINING_TARGET_MAX);\r
- listAdapter_->SetData(targetItemList);\r
-\r
- targetList->SetAdapter(listAdapter_);\r
- targetList->RefreshList();\r
-\r
- // Add to rootView\r
- group->Add(targetList);\r
-}\r
-\r
-UIViewGroup *TargetView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TargetView InitShowUpView");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- CreateUILabel();\r
- CreateUIList();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(TARGET_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingAdapter.cpp\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-#include "training/TrainingAdapter.h"\r
-#include "training/TrainingItemView.h"\r
-\r
-namespace OHOS {\r
-TrainingAdapter::TrainingAdapter() {}\r
-\r
-TrainingAdapter::~TrainingAdapter()\r
-{\r
- listData_.clear();\r
-}\r
-\r
-uint16_t TrainingAdapter::GetCount(void)\r
-{\r
- return listData_.size();\r
-}\r
-\r
-void TrainingAdapter::SetData(const std::list<TrainingItem> &data)\r
-{\r
- if (!listData_.empty()) {\r
- listData_.clear();\r
- }\r
- listData_ = data;\r
-}\r
-\r
-UIView *TrainingAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData_.empty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData_.size()) {\r
- return nullptr;\r
- }\r
-\r
- std::list<TrainingItem>::iterator it = listData_.begin();\r
- for (int i = 0; i < index; i++) {\r
- it++;\r
- }\r
- TrainingItem itemData = *it;\r
- TrainingItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new TrainingItemView();\r
- } else {\r
- item = static_cast<TrainingItemView *>(inView);\r
- }\r
- item->SetItemInfo(itemData);\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void TrainingAdapter::AddListItem(const TrainingItem &item)\r
-{\r
- listData_.push_back(item);\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: temperature\r
- * Author:\r
- * Create: 2025-02-15\r
- */\r
-\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "ui_resource_image.h"\r
-#include "training/TrainingItemView.h"\r
-#include "screensetting/ScreenModels.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t ITEM_X = 0;\r
-static constexpr uint16_t ITEM_Y = 0;\r
-static constexpr uint16_t ITEM_W = 382;\r
-static constexpr uint16_t ITEM_H = 100;\r
-static constexpr uint16_t ICON_X = 0;\r
-static constexpr uint16_t ICON_Y = 0;\r
-static constexpr uint16_t LABEL_X = 100;\r
-static constexpr uint16_t LABEL_Y = 0;\r
-static constexpr uint16_t LABEL_W = 200;\r
-static constexpr uint16_t LABEL_H = 100;\r
-static constexpr uint16_t LABEL_FONT = 35;\r
-static constexpr uint16_t IMAGE_W = 300;\r
-static constexpr uint16_t IMAGE_H = 0;\r
-\r
-TrainingItemView::TrainingItemView()\r
-{\r
- InitView();\r
-}\r
-\r
-TrainingItemView::~TrainingItemView()\r
-{\r
- Remove(&sIcon);\r
- Remove(&sLabel);\r
- Remove(&sSettingImage);\r
-}\r
-\r
-bool TrainingItemView::InitView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingItemView::InitView");\r
- SetPosition(ITEM_X, ITEM_Y, ITEM_W, ITEM_H);\r
- SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- SetStyle(STYLE_BACKGROUND_OPA, UN_OPACITY);\r
- SetTouchable(true);\r
-\r
- sIcon.SetPosition(ICON_X, ICON_Y);\r
- sIcon.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- sLabel.SetPosition(LABEL_X, LABEL_Y);\r
- sLabel.Resize(LABEL_W, LABEL_H);\r
- sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
- sLabel.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, &sSettingImage, DROPDOWN_DROPDOWN_SETTING);\r
- sSettingImage.SetPosition(IMAGE_W, IMAGE_H);\r
- sSettingImage.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- Add(&sIcon);\r
- Add(&sLabel);\r
- Add(&sSettingImage);\r
- return true;\r
-}\r
-\r
-void TrainingItemView::SetItemInfo(const TrainingItem itemInfo)\r
-{\r
- sItemInfo = itemInfo;\r
- sIcon.SetSrc(itemInfo.icon);\r
- sLabel.SetText(itemInfo.label);\r
- SetViewId(itemInfo.viewId);\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingModel.cpp\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#include "training/TrainingModel.h"\r
-\r
-namespace OHOS {\r
-TrainingModel::TrainingModel() {}\r
-\r
-TrainingModel::~TrainingModel() {}\r
-\r
-TrainingModel &TrainingModel::GetInstance()\r
-{\r
- static TrainingModel instance;\r
- return instance;\r
-}\r
-\r
-void TrainingModel::SetCurView(int16_t viewNum)\r
-{\r
- curView_ = viewNum;\r
-}\r
-\r
-int16_t TrainingModel::GetCurView(void)\r
-{\r
- return curView_;\r
-}\r
-\r
-void TrainingModel::SetCurTrainingType(int8_t trainingType)\r
-{\r
- trainingType_ = trainingType;\r
-}\r
-\r
-int8_t TrainingModel::GetCurTrainingType(void)\r
-{\r
- return trainingType_;\r
-}\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: SettingPresenter.cpp\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#include "training/TrainingModel.h"\r
-#include "training/TrainingPresenter.h"\r
-#include "NativeRegisterManager.h"\r
-namespace OHOS {\r
-\r
-REGIST_MENU(VIEW_TRAINING, TrainingView, TrainingPresenter, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_DEFAULT_IMG,\r
- "体能训练");\r
-\r
-static TrainingPresenter *g_trainingPresenter = nullptr;\r
-TrainingPresenter::TrainingPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::TrainingPresenter");\r
- trainingModel_ = &TrainingModel::GetInstance();\r
- g_trainingPresenter = this;\r
-}\r
-\r
-TrainingPresenter::~TrainingPresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::~TrainingPresenter");\r
- g_trainingPresenter = nullptr;\r
-}\r
-\r
-TrainingPresenter *TrainingPresenter::GetInstance(void)\r
-{\r
- return g_trainingPresenter;\r
-}\r
-\r
-void TrainingPresenter::OnResume(void)\r
-{\r
- Presenter<TrainingView>::OnResume();\r
-}\r
-\r
-void TrainingPresenter::OnPause(void)\r
-{\r
- Presenter<TrainingView>::OnPause();\r
- return;\r
-}\r
-\r
-void TrainingPresenter::ClickStartButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick ClickStartButton");\r
- view_->ChangeView(TRAINING_VIEW_PREPARE, TRAINING_VIEW_DATA);\r
- DataView::GetInstance()->UpdateDataViewByType();\r
-}\r
-\r
-void TrainingPresenter::ClickCountineButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick ClickCountineButton");\r
- view_->ChangeView(TRAINING_VIEW_PAUSE, TRAINING_VIEW_DATA);\r
- DataView::GetInstance()->UpdateDataViewByType();\r
-}\r
-\r
-void TrainingPresenter::ClickFinishButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick ClickFinishButton");\r
- view_->ChangeView(TRAINING_VIEW_PAUSE, TRAINING_VIEW_PROMPT);\r
-}\r
-\r
-void TrainingPresenter::ClickCancelButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick ClickCancelButton");\r
- view_->ChangeView(TRAINING_VIEW_PROMPT, TRAINING_VIEW_PAUSE);\r
-}\r
-\r
-void TrainingPresenter::ClickConfirmButton(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick ClickConfirmButton");\r
- view_->ChangeView(TRAINING_VIEW_PROMPT, TRAINING_VIEW_MENU);\r
-}\r
-\r
-void TrainingPresenter::TrainingSetting(uint8_t trainingType)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick TrainingSetting, type = %d", trainingType);\r
- view_->ChangeView(TRAINING_VIEW_MENU, TRAINING_VIEW_SETTING);\r
-}\r
-\r
-void TrainingPresenter::StartTraining(uint8_t trainingType)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick TrainingSetting, type = %d", trainingType);\r
- view_->ChangeView(TRAINING_VIEW_MENU, TRAINING_VIEW_PREPARE);\r
- trainingModel_->SetCurTrainingType(trainingType);\r
- PrepareView::GetInstance()->UpdateViewByTrainingType(trainingType);\r
-}\r
-\r
-void TrainingPresenter::EnterTarget(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick EnterTarget");\r
- view_->ChangeView(TRAINING_VIEW_SETTING, TRAINING_VIEW_TARGET);\r
-}\r
-\r
-void TrainingPresenter::SettingTarget(uint8_t targetType)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick SettingTarget, type = %d", targetType);\r
- view_->ChangeView(TRAINING_VIEW_TARGET, TRAINING_VIEW_TARGET_SETTING);\r
- TargetSettingView::GetInstance()->UpdateViewByTargetType(targetType);\r
-}\r
-\r
-void TrainingPresenter::ConfirmTargetSetting(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresenter::OnClick ConfirmTargetSetting");\r
- view_->ChangeView(TRAINING_VIEW_TARGET_SETTING, TRAINING_VIEW_SETTING);\r
-}\r
-\r
-bool TrainingPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingPresent::OnClick view:%s", view.GetViewId());\r
- bool isSettingClicked = event.GetCurrentPos().x > 350 ? true : false;\r
- if (strcmp(view.GetViewId(), TRAINING_PREPARE_START_BUTTON) == 0) {\r
- ClickStartButton();\r
- } else if (strcmp(view.GetViewId(), TRAINING_PAUSE_CONTINUE_BUTTON) == 0) {\r
- ClickCountineButton();\r
- } else if (strcmp(view.GetViewId(), TRAINING_PAUSE_FINISH_BUTTON) == 0) {\r
- ClickFinishButton();\r
- } else if (strcmp(view.GetViewId(), TRAINING_PROMPT_CANCEL_BUTTON) == 0) {\r
- ClickCancelButton();\r
- } else if (strcmp(view.GetViewId(), TRAINING_PROMPT_CONFIRM_BUTTON) == 0) {\r
- ClickConfirmButton();\r
- } else if (strcmp(view.GetViewId(), TRAINING_SETTING_ITEM_TARGET) == 0) {\r
- EnterTarget();\r
- } else if (strcmp(view.GetViewId(), TRAINING_TARGET_ITEM_DISTANCE) == 0) {\r
- SettingTarget(TRAINING_TARGET_DISTANCE);\r
- } else if (strcmp(view.GetViewId(), TRAINING_TARGET_ITEM_TIME) == 0) {\r
- SettingTarget(TRAINING_TARGET_TIME);\r
- } else if (strcmp(view.GetViewId(), TRAINING_TARGET_ITEM_CALORIE) == 0) {\r
- SettingTarget(TRAINING_TARGET_CALORIE);\r
- } else if (strcmp(view.GetViewId(), TARGET_SETTING_CONFIRM_BUTTON) == 0) {\r
- ConfirmTargetSetting();\r
- } else if (strcmp(view.GetViewId(), TRAINING_ITEM_OUTDOOR_RUNNING) == 0) {\r
- if (isSettingClicked) {\r
- TrainingSetting(TRAINING_TYPE_OUTDOOR_RUNNING);\r
- } else {\r
- StartTraining(TRAINING_TYPE_OUTDOOR_RUNNING);\r
- }\r
- } else if (strcmp(view.GetViewId(), TRAINING_ITEM_INDOOR_RUNNING) == 0) {\r
- if (isSettingClicked) {\r
- TrainingSetting(TRAINING_TYPE_INDOOR_RUNNING);\r
- } else {\r
- StartTraining(TRAINING_TYPE_INDOOR_RUNNING);\r
- }\r
- } else if (strcmp(view.GetViewId(), TRAINING_ITEM_CYCLING) == 0) {\r
- if (isSettingClicked) {\r
- TrainingSetting(TRAINING_TYPE_CYCLING);\r
- } else {\r
- StartTraining(TRAINING_TYPE_CYCLING);\r
- }\r
- } else if (strcmp(view.GetViewId(), TRAINING_ITEM_CLIMBING) == 0) {\r
- if (isSettingClicked) {\r
- TrainingSetting(TRAINING_TYPE_CLIMBING);\r
- } else {\r
- StartTraining(TRAINING_TYPE_CLIMBING);\r
- }\r
- } else if (strcmp(view.GetViewId(), TRAINING_ITEM_INDOOR_SWIMMING) == 0) {\r
- if (isSettingClicked) {\r
- TrainingSetting(TRAINING_TYPE_INDOOR_SWIMMING);\r
- } else {\r
- StartTraining(TRAINING_TYPE_INDOOR_SWIMMING);\r
- }\r
- } else if (strcmp(view.GetViewId(), TRAINING_ITEM_OUTDOOR_SWIMMING) == 0) {\r
- if (isSettingClicked) {\r
- TrainingSetting(TRAINING_TYPE_OUTDOOR_SWIMMING);\r
- } else {\r
- StartTraining(TRAINING_TYPE_OUTDOOR_SWIMMING);\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingOnDragListener::OnDrag");\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_RIGHT_TO_LEFT) {\r
- if (strcmp(view.GetViewId(), MENU_VIEW_ID) == 0) {\r
- // view_->ChangeView(TRAINING_VIEW_MENU, TRAINING_VIEW_PREPARE);\r
- } else if (strcmp(view.GetViewId(), PREPARE_VIEW_ID) == 0) {\r
- // view_->ChangeView(TRAINING_VIEW_PREPARE, TRAINING_VIEW_DATA);\r
- // DataView::GetInstance()->UpdateDataViewByType();\r
- } else if (strcmp(view.GetViewId(), DATA_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_DATA, TRAINING_VIEW_PAUSE);\r
- } else if (strcmp(view.GetViewId(), PAUSE_VIEW_ID) == 0) {\r
- // view_->ChangeView(TRAINING_VIEW_PAUSE, TRAINING_VIEW_PROMPT);\r
- } else if (strcmp(view.GetViewId(), PROMPT_VIEW_ID) == 0) {\r
- // view_->ChangeView(TRAINING_VIEW_PROMPT, TRAINING_VIEW_MENU);\r
- }\r
- } else if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- if (strcmp(view.GetViewId(), MENU_VIEW_ID) == 0) {\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- } else if (strcmp(view.GetViewId(), PREPARE_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_PREPARE, TRAINING_VIEW_MENU);\r
- } else if (strcmp(view.GetViewId(), DATA_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_DATA, TRAINING_VIEW_PREPARE);\r
- } else if (strcmp(view.GetViewId(), PAUSE_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_PAUSE, TRAINING_VIEW_DATA);\r
- } else if (strcmp(view.GetViewId(), PROMPT_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_PROMPT, TRAINING_VIEW_PAUSE);\r
- } else if (strcmp(view.GetViewId(), SETTING_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_SETTING, TRAINING_VIEW_MENU);\r
- } else if (strcmp(view.GetViewId(), TARGET_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_TARGET, TRAINING_VIEW_SETTING);\r
- } else if (strcmp(view.GetViewId(), TARGET_SETTING_VIEW_ID) == 0) {\r
- view_->ChangeView(TRAINING_VIEW_TARGET_SETTING, TRAINING_VIEW_TARGET);\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingSettingAdapter.cpp\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-#include "training/TrainingSettingAdapter.h"\r
-#include "training/TrainingSettingItemView.h"\r
-\r
-namespace OHOS {\r
-TrainingSettingAdapter::TrainingSettingAdapter() {}\r
-\r
-TrainingSettingAdapter::~TrainingSettingAdapter()\r
-{\r
- listData_.clear();\r
-}\r
-\r
-uint16_t TrainingSettingAdapter::GetCount(void)\r
-{\r
- return listData_.size();\r
-}\r
-\r
-void TrainingSettingAdapter::SetData(const std::list<TrainingSettingItem> &data)\r
-{\r
- if (!listData_.empty()) {\r
- listData_.clear();\r
- }\r
- listData_ = data;\r
-}\r
-\r
-UIView *TrainingSettingAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData_.empty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData_.size()) {\r
- return nullptr;\r
- }\r
-\r
- std::list<TrainingSettingItem>::iterator it = listData_.begin();\r
- for (int i = 0; i < index; i++) {\r
- it++;\r
- }\r
- TrainingSettingItem itemData = *it;\r
- TrainingSettingItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new TrainingSettingItemView();\r
- } else {\r
- item = static_cast<TrainingSettingItemView *>(inView);\r
- }\r
- item->SetItemInfo(itemData);\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void TrainingSettingAdapter::AddListItem(const TrainingSettingItem &item)\r
-{\r
- listData_.push_back(item);\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingSettingItemView.cpp\r
- * Author:\r
- * Create: 2025-02-15\r
- */\r
-\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingSettingItemView.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t ITEM_X = 0;\r
-static constexpr uint16_t ITEM_Y = 0;\r
-static constexpr uint16_t ITEM_W = 382;\r
-static constexpr uint16_t ITEM_H = 100;\r
-static constexpr uint16_t ICON_X = 0;\r
-static constexpr uint16_t ICON_Y = 0;\r
-static constexpr uint16_t LABEL_X = 100;\r
-static constexpr uint16_t LABEL_Y = 0;\r
-static constexpr uint16_t LABEL_W = 200;\r
-static constexpr uint16_t LABEL_H = 100;\r
-static constexpr uint16_t LABEL_FONT = 35;\r
-static constexpr uint16_t IMAGE_W = 300;\r
-static constexpr uint16_t IMAGE_H = 0;\r
-\r
-TrainingSettingItemView::TrainingSettingItemView()\r
-{\r
- InitView();\r
-}\r
-\r
-TrainingSettingItemView::~TrainingSettingItemView()\r
-{\r
- Remove(&sIcon);\r
- Remove(&sLabel);\r
- Remove(&sNextImage);\r
-}\r
-\r
-bool TrainingSettingItemView::InitView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingSettingItemView::InitView");\r
- SetPosition(ITEM_X, ITEM_Y, ITEM_W, ITEM_H);\r
- SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- SetStyle(STYLE_BACKGROUND_OPA, UN_OPACITY);\r
- SetTouchable(true);\r
-\r
- sIcon.SetPosition(ICON_X, ICON_Y);\r
- sIcon.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
-\r
- sLabel.SetPosition(LABEL_X, LABEL_Y);\r
- sLabel.Resize(LABEL_W, LABEL_H);\r
- sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
- sLabel.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
- sLabel.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- sLabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- sLabel.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- sLabel.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-\r
- sNextImage.SetSrc(PNG_SETTING_NEXT_IMAGE);\r
- sNextImage.SetPosition(IMAGE_W, IMAGE_H);\r
- sNextImage.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
- Add(&sIcon);\r
- Add(&sLabel);\r
- Add(&sNextImage);\r
- return true;\r
-}\r
-\r
-void TrainingSettingItemView::SetItemInfo(const TrainingSettingItem itemInfo)\r
-{\r
- sItemInfo = itemInfo;\r
- sIcon.SetSrc(itemInfo.icon);\r
- sLabel.SetText(itemInfo.label);\r
- SetViewId(itemInfo.viewId);\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingSettingView\r
- * Create: 2025-03-22\r
- */\r
-#include "training/TrainingSettingView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "training/TrainingPresenter.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t LABELS_X = 133;\r
-static constexpr uint16_t LABELS_Y = 36;\r
-static constexpr uint16_t LABELS_W = 200;\r
-static constexpr uint16_t LABELS_H = 60;\r
-static constexpr uint16_t LABELS_FONT = 50;\r
-static constexpr uint16_t LIST_X = 42;\r
-static constexpr uint16_t LIST_Y = 95;\r
-static constexpr uint16_t LIST_W = 382;\r
-static constexpr uint16_t LIST_H = 305;\r
-\r
-static TrainingSettingView *g_pSettingView{nullptr};\r
-\r
-TrainingSettingView::TrainingSettingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingSettingView::TrainingSettingView");\r
- g_pSettingView = this;\r
-}\r
-\r
-TrainingSettingView::~TrainingSettingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingSettingView::~TrainingSettingView");\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
- if (titleLabel != nullptr) {\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- }\r
- if (settingList != nullptr) {\r
- delete settingList;\r
- settingList = nullptr;\r
- }\r
- if (listAdapter_ != nullptr) {\r
- delete listAdapter_;\r
- listAdapter_ = nullptr;\r
- }\r
- g_pSettingView = nullptr;\r
-}\r
-\r
-TrainingSettingView *TrainingSettingView::GetInstance()\r
-{\r
- return g_pSettingView;\r
-}\r
-\r
-void TrainingSettingView::CreateUILabel()\r
-{\r
- // Add Label to App\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- }\r
- titleLabel->SetPosition(LABELS_X, LABELS_Y);\r
- titleLabel->Resize(LABELS_W, LABELS_H);\r
-\r
- // Set additional property\r
- titleLabel->SetText("设置");\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABELS_FONT);\r
-\r
- // Add to rootView\r
- group->Add(titleLabel);\r
-}\r
-\r
-void TrainingSettingView::CreateUIList()\r
-{\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
-\r
- // Add List to App\r
- if (settingList == nullptr) {\r
- settingList = new UIList();\r
- }\r
- settingList->SetPosition(LIST_X, LIST_Y);\r
- settingList->Resize(LIST_W, LIST_H);\r
- settingList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-\r
- // Set additional property\r
- if (listAdapter_ == nullptr) {\r
- listAdapter_ = new TrainingSettingAdapter();\r
- }\r
- listAdapter_->SetItemClickListener(clickListener);\r
- std::list<TrainingSettingItem> trainingSettingItemList(settings, settings + TRAINING_SETTING_MAX);\r
- listAdapter_->SetData(trainingSettingItemList);\r
-\r
- settingList->SetAdapter(listAdapter_);\r
- settingList->RefreshList();\r
-\r
- // Add to rootView\r
- group->Add(settingList);\r
-}\r
-\r
-UIViewGroup *TrainingSettingView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingSettingView InitShowUpView");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- CreateUILabel();\r
- CreateUIList();\r
- UIView::OnDragListener *trainingDragListener = (UIView::OnDragListener *)OHOS::TrainingPresenter::GetInstance();\r
- if (trainingDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "trainingDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- group->SetOnDragListener(trainingDragListener);\r
- group->SetViewId(SETTING_VIEW_ID);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: TrainingView.cpp\r
- * Author:\r
- * Create: 2025-11-23\r
- */\r
-\r
-#include "training/TrainingView.h"\r
-#include "training/TrainingPresenter.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-static TrainingView *g_pTrainingView = nullptr;\r
-\r
-TrainingView::TrainingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView::TrainingView");\r
- preProcessView[TRAINING_VIEW_MENU] = &TrainingView::ChangeMenuView;\r
- preProcessView[TRAINING_VIEW_PREPARE] = &TrainingView::ChangePrepareView;\r
- preProcessView[TRAINING_VIEW_DATA] = &TrainingView::ChangeDataView;\r
- preProcessView[TRAINING_VIEW_PAUSE] = &TrainingView::ChangePauseView;\r
- preProcessView[TRAINING_VIEW_PROMPT] = &TrainingView::ChangePromptView;\r
- preProcessView[TRAINING_VIEW_SETTING] = &TrainingView::ChangeSettingView;\r
- preProcessView[TRAINING_VIEW_TARGET] = &TrainingView::ChangeTargetView;\r
- preProcessView[TRAINING_VIEW_TARGET_SETTING] = &TrainingView::ChangeTargetSettingView;\r
- g_pTrainingView = this;\r
-}\r
-\r
-TrainingView::~TrainingView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView::~TrainingView");\r
- g_pTrainingView = nullptr;\r
-}\r
-\r
-TrainingView *TrainingView::GetInstance()\r
-{\r
- return g_pTrainingView;\r
-}\r
-\r
-void TrainingView::OnStart()\r
-{\r
- ChangeView(TRAINING_VIEW_MAX, TRAINING_VIEW_MENU);\r
-}\r
-\r
-void TrainingView::OnStop()\r
-{\r
- if (menuView != nullptr) {\r
- delete menuView;\r
- menuView = nullptr;\r
- }\r
- if (prepareView != nullptr) {\r
- delete prepareView;\r
- prepareView = nullptr;\r
- }\r
- if (dataView != nullptr) {\r
- delete dataView;\r
- dataView = nullptr;\r
- }\r
- if (pauseView != nullptr) {\r
- delete pauseView;\r
- pauseView = nullptr;\r
- }\r
- if (promptView != nullptr) {\r
- delete promptView;\r
- promptView = nullptr;\r
- }\r
- if (settingView != nullptr) {\r
- delete settingView;\r
- settingView = nullptr;\r
- }\r
- if (targetView != nullptr) {\r
- delete targetView;\r
- targetView = nullptr;\r
- }\r
- if (targetSettingView != nullptr) {\r
- delete targetSettingView;\r
- targetSettingView = nullptr;\r
- }\r
-}\r
-\r
-bool TrainingView::ChangeMenuView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeMenuView");\r
- menuView = new MenuView();\r
- if (menuView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = menuView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::ChangePrepareView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangePrepareView");\r
- prepareView = new PrepareView();\r
- if (prepareView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = prepareView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::ChangeDataView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeDataView");\r
- dataView = new DataView();\r
- if (dataView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = dataView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::ChangePauseView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangePauseView");\r
- pauseView = new PauseView();\r
- if (pauseView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = pauseView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::ChangePromptView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangePromptView");\r
- promptView = new PromptView();\r
- if (promptView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = promptView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::ChangeSettingView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeSettingView");\r
- settingView = new TrainingSettingView();\r
- if (settingView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = settingView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::ChangeTargetView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTargetView");\r
- targetView = new TargetView();\r
- if (targetView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = targetView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::ChangeTargetSettingView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTargetSettingView");\r
- targetSettingView = new TargetSettingView();\r
- if (targetSettingView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = targetSettingView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool TrainingView::CheckViewParam(int16_t hideView, int16_t showView)\r
-{\r
- if (showView < 0 || showView >= TRAINING_VIEW_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView::CheckViewParam showView err.");\r
- return false;\r
- }\r
-\r
- if (hideView < 0 || hideView > TRAINING_VIEW_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView::CheckViewParam hideView err.");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-void TrainingView::ChangeView(int16_t hideView, int16_t showView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView::ChangeView %d, %d", hideView, showView);\r
-\r
- if (!CheckViewParam(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView::CheckViewParam failed.");\r
- return;\r
- }\r
-\r
- PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
-\r
- if (!(this->*tmpPreProcessView)(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingView::ChangeView %d %dfailed", showView, hideView);\r
- return;\r
- }\r
- if (hideView != TRAINING_VIEW_MAX) {\r
- if (container[hideView] == nullptr) {\r
- return;\r
- }\r
- container[hideView]->SetVisible(false);\r
- }\r
- container[showView]->SetVisible(true);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView:: ChangeView end!!!%d", showView);\r
- Draw();\r
-}\r
-}\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: SettingView.cpp
- * Author:
- * Create: 2021-11-23
- */
-
-#include <string>
-
-#include "uisample/UISampleView.h"
-#include "uisample/UISamplePresenter.h"
-#include "ui_test_group.h"
-
-namespace OHOS {
-static UISampleView *g_pUISampleView = nullptr;
-
-UISampleView::UISampleView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UISampleView::UISampleView");
- g_pUISampleView = this;
-}
-
-UISampleView::~UISampleView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UISampleView::~UISampleView");
- g_pUISampleView = nullptr;
-}
-
-UISampleView* UISampleView::GetInstance()
-{
- return g_pUISampleView;
-}
-
-void UISampleView::InitView()
-{
- if ((mainList_ == nullptr) && (adapter_ == nullptr)) {
- mainList_ = new UIList(UIList::VERTICAL);
- mainList_->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- mainList_->SetThrowDrag(true);
- mainList_->SetReboundSize(100); // 100: rebound size
- mainList_->SetElastic(true);
- mainList_->SetYScrollBarVisible(true);
- adapter_ = new TestCaseListAdapter();
- UITestGroup::GetInstance()->SetUpTestCase();
- mainList_->SetAdapter(adapter_);
-
- dragListener_ = new UISampleOnDragListener();
- if (dragListener_ == nullptr) {
- return;
- }
- mainList_->SetOnDragListener(dragListener_);
- }
- AddViewToRootContainer(mainList_);
- GetRootContainer()->Invalidate();
-}
-
-void UISampleView::OnStart()
-{
- InitView();
-}
-
-void UISampleView::OnStop()
-{
- if (adapter_ != nullptr) {
- delete adapter_;
- adapter_ = nullptr;
- }
- if (dragListener_ != nullptr) {
- delete dragListener_;
- dragListener_ = nullptr;
- }
- if (mainList_ != nullptr) {
- delete mainList_;
- mainList_ = nullptr;
- }
- return;
-}
-}
+++ /dev/null
-/*
- * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "test_case_list_adapter.h"
-#include "common/screen.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "gfx_utils/list.h"
-#include "ui_test.h"
-#include "uisample/UISampleView.h"
-#include "ui_test_group.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-namespace {
-const uint16_t TESTCASE_BUTTON_HEIGHT = 100;
-const uint16_t STYLE_BORDER_WIDTH_VALUE = 4;
-} // namespace
-
-static RootView::OnKeyActListener *g_keyListener = nullptr;
-
-uint16_t TestCaseListAdapter::GetCount()
-{
- return UITestGroup::GetInstance()->GetTestCase().Size();
-}
-
-class TransparentBackButton : public UIButton {
-public:
- TransparentBackButton() : UIButton()
- {
- opaScale_ = OPA_TRANSPARENT;
- }
-
- bool OnClickEvent(const ClickEvent& event) override
- {
- UISampleView::GetInstance()->GetRootContainer()->RemoveAll();
- UITest* uiTest = UITestGroup::GetInstance()->GetTestCase(GetViewId());
- if (uiTest != nullptr) {
- uiTest->TearDown();
- }
- RootView::GetInstance()->SetOnKeyActListener(g_keyListener);
- g_keyListener = nullptr;
- UISampleView::GetInstance()->InitView();
- return true;
- }
-};
-
-class UiTestClickListener : public UIView::OnClickListener {
-public:
- UiTestClickListener() {}
- ~UiTestClickListener()
- {
- if (backBtn_ != nullptr) {
- delete backBtn_;
- backBtn_ = nullptr;
- }
- }
-
- bool OnClick(UIView& view, const ClickEvent& event) override
- {
- UIViewGroup* rootContainer = UISampleView::GetInstance()->GetRootContainer();
- UITest* uiTest = UITestGroup::GetInstance()->GetTestCase(view.GetViewId());
- if (uiTest == nullptr) {
- return false;
- }
- uiTest->SetUp();
- rootContainer->RemoveAll();
- UIView* tempView = const_cast<UIView*>(uiTest->GetTestView());
- if (tempView != nullptr) {
- tempView->SetTouchable(true);
- tempView->SetViewId(view.GetViewId());
- tempView->SetPosition(tempView->GetX(), tempView->GetY());
- rootContainer->Add(tempView);
- g_keyListener = RootView::GetInstance()->GetOnKeyActListener();
- RootView::GetInstance()->SetOnKeyActListener(nullptr);
- }
- if (backBtn_ == nullptr) {
- backBtn_ = new TransparentBackButton();
- backBtn_->SetPosition(0, 202, 50, 50); // 0: x position, 202: y position, 50: width and height
- }
- backBtn_->SetViewId(view.GetViewId());
- rootContainer->Add(backBtn_);
- rootContainer->Invalidate();
- return true;
- }
-
-private:
- UIButton* backBtn_{nullptr};
-};
-
-UIView* TestCaseListAdapter::GetView(UIView* inView, int16_t index)
-{
- List<TestCaseInfo> testCaseList = UITestGroup::GetInstance()->GetTestCase();
- if (testCaseList.IsEmpty()) {
- return nullptr;
- }
- if ((index > testCaseList.Size() - 1) || (index < 0)) {
- return nullptr;
- }
- UILabelButton* item = nullptr;
- if (inView == nullptr) {
- item = new UILabelButton();
- item->SetPosition(0, 0);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::INACTIVE);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::INACTIVE);
- item->Resize(HORIZONTAL_RESOLUTION - TEXT_DISTANCE_TO_LEFT_SIDE, TESTCASE_BUTTON_HEIGHT);
- } else {
- item = static_cast<UILabelButton*>(inView);
- }
-
- if (listener_ == nullptr) {
- listener_ = new UiTestClickListener();
- }
- ListNode<TestCaseInfo>* node = testCaseList.Begin();
- for (uint16_t i = 0; i < index; i++) {
- node = node->next_;
- }
- item->SetOnClickListener(listener_);
- item->SetText(node->data_.sliceId);
- item->SetViewId(node->data_.sliceId);
- item->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40: means font size
- item->SetViewIndex(index);
- item->SetAlign(TEXT_ALIGNMENT_LEFT);
- item->SetLabelPosition(150, 0); // 150: label x-coordinate
- item->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::INACTIVE);
- item->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::INACTIVE);
- return item;
-}
-
-int16_t TestCaseListAdapter::GetItemWidthWithMargin(int16_t index)
-{
- // 2: two borders on both sides
- return HORIZONTAL_RESOLUTION - TEXT_DISTANCE_TO_LEFT_SIDE + STYLE_BORDER_WIDTH_VALUE * 2;
-}
-
-int16_t TestCaseListAdapter::GetItemHeightWithMargin(int16_t index)
-{
- return TESTCASE_BUTTON_HEIGHT + STYLE_BORDER_WIDTH_VALUE * 2; // 2: two borders on both sides
-}
-} // namespace OHOS
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: WeatherAdapter\r
- * Create: 2025-03-23\r
- */\r
-\r
-#include "weather/WeatherAdapter.h"\r
-\r
-namespace OHOS {\r
-WeatherAdapter::WeatherAdapter() {}\r
-\r
-WeatherAdapter::~WeatherAdapter()\r
-{\r
- listData.clear();\r
-}\r
-\r
-uint16_t WeatherAdapter::GetCount(void)\r
-{\r
- return listData.size();\r
-}\r
-\r
-void WeatherAdapter::SetData(std::list<WeatherItem> &data)\r
-{\r
- if (!listData.empty()) {\r
- listData.clear();\r
- }\r
- std::list<WeatherItem>::iterator it;\r
- for (it = data.begin(); it != data.end(); it++) {\r
- listData.push_back(*it);\r
- }\r
-}\r
-\r
-UIView *WeatherAdapter::GetView(UIView *inView, int16_t index)\r
-{\r
- if (listData.empty()) {\r
- return nullptr;\r
- }\r
- if (index < 0) {\r
- return nullptr;\r
- }\r
- size_t uindex = index;\r
- if (uindex >= listData.size()) {\r
- return nullptr;\r
- }\r
-\r
- std::list<WeatherItem>::iterator it = listData.begin();\r
- for (int i = 0; i < index; i++) {\r
- it++;\r
- }\r
- WeatherItem itemData = *it;\r
- WeatherItemView *item = nullptr;\r
- if (inView == nullptr) {\r
- item = new WeatherItemView();\r
- } else {\r
- item = static_cast<WeatherItemView *>(inView);\r
- }\r
-\r
- item->SetItemInfo(itemData);\r
- item->SetOnClickListener(itemClickListener);\r
- return item;\r
-}\r
-\r
-void WeatherAdapter::AddListItem(const WeatherItem &item)\r
-{\r
- listData.push_back(item);\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: WeatherPageSecond\r
- * Create: 2025-03-15\r
- */\r
-\r
-#include "weather/WeatherPageSecond.h"\r
-#include "components/ui_list_nested.h"\r
-#include "components/ui_scroll_view_nested.h"\r
-#include "NativeAbility.h"\r
-#include "SlicePageFactory.h"\r
-#include "weather/WeatherPresenter.h"\r
-#include "weather/WeatherView.h"\r
-#include "weather/WeatherModel.h"\r
-#include "ui_resource_weather.h"\r
-#include "common/image_cache_manager.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint16_t WEATHER_TITLE_WIDTH = 51;\r
-static constexpr uint16_t WEATHER_TITLE_HEIGHT = 26;\r
-static constexpr uint16_t WEATHER_TOPLABEL_X = 156;\r
-static constexpr uint16_t WEATHER_TOPLABEL_Y = 22;\r
-static constexpr uint16_t WEATHER_TOPLABEL_WIDTH = 150;\r
-static constexpr uint16_t WEATHER_TOPLABEL_HEIGHT = 60;\r
-static constexpr uint16_t WEATHER_TOPLABEL_FRONT = 26;\r
-static constexpr uint16_t WEATHER_LABELTIME_FRONT = 20;\r
-static constexpr uint16_t WEATHER_LABELTIME_FRONT_TWO = 24;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_X = 199;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_Y = 429;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_WIDTH = 56;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_HEIGHT = 10;\r
-static constexpr uint16_t ANIMATOR_TIME = 50;\r
-\r
-REGIST_SLICE_PAGE(VIEW_WEATHER, WEATHER_PAGES::WEATHER_SECOND_PAGE, WeatherPageSecond, false);\r
-\r
-WeatherPageSecond::WeatherPageSecond()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageSecond::WeatherPageSecond");\r
- weatherModel = &WeatherModel::GetInstance();\r
-}\r
-\r
-WeatherPageSecond::~WeatherPageSecond()\r
-{\r
- if (weatherSwipeGroup != nullptr) {\r
- weatherSwipeGroup->RemoveAll();\r
- delete weatherSwipeGroup;\r
- weatherSwipeGroup = nullptr;\r
- }\r
-\r
- for (int i = 0; i < SET_THREE; ++i) {\r
- if (swipeGroup[i] != nullptr) {\r
- swipeGroup[i]->RemoveAll();\r
- delete swipeGroup[i];\r
- swipeGroup[i] = nullptr;\r
- }\r
- }\r
-\r
- for (int i = 0; i < SET_EIGHT; ++i) {\r
- if (imgBack[i] != nullptr) {\r
- delete imgBack[i];\r
- imgBack[i] = nullptr;\r
- }\r
- }\r
-\r
- for (int i = 0; i < SET_EIGHT; ++i) {\r
- if (labelTime[i] != nullptr) {\r
- delete labelTime[i];\r
- labelTime[i] = nullptr;\r
- }\r
- }\r
-\r
- for (int i = 0; i < SET_EIGHT; ++i) {\r
- if (labelTemp[i] != nullptr) {\r
- delete labelTemp[i];\r
- labelTemp[i] = nullptr;\r
- }\r
- }\r
-\r
- for (int i = 0; i < SET_EIGHT; ++i) {\r
- if (imgWeather[i] != nullptr) {\r
- delete imgWeather[i];\r
- imgWeather[i] = nullptr;\r
- }\r
- }\r
- if (mainImg != nullptr) {\r
- delete mainImg;\r
- mainImg = nullptr;\r
- }\r
- if (ImagePageKey != nullptr) {\r
- delete ImagePageKey;\r
- ImagePageKey = nullptr;\r
- }\r
- ImageCacheManager::GetInstance().UnloadAllInMultiRes(WEATHER_IMAGE);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageSecond::~WeatherPageSecond");\r
-}\r
-\r
-void WeatherPageSecond::OnStart(void *data)\r
-{\r
- weatherSwipeGroup = new UISwipeView(UISwipeView::VERTICAL);\r
- if (weatherSwipeGroup == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "weatherSwipeGroup new fail");\r
- return;\r
- }\r
- weatherSwipeGroup->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- weatherSwipeGroup->SetViewId("weatherSwipeGroup");\r
- weatherSwipeGroup->SetOnDragListener(this);\r
- weatherSwipeGroup->SetOnSwipeListener(this);\r
- weatherSwipeGroup->SetDraggable(true);\r
- weatherSwipeGroup->SetTouchable(true);\r
- weatherSwipeGroup->SetAnimatorTime(ANIMATOR_TIME);\r
- for (int i = 0; i < SET_THREE; i++) {\r
- swipeGroup[i] = new UIViewGroup();\r
- if (swipeGroup[i] == nullptr) {\r
- return;\r
- }\r
- WeatherInit(swipeGroup[i]);\r
- weatherSwipeGroup->Add(swipeGroup[i]);\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageFirst::InitPageFirst successful");\r
- AddViewToPageContainer(weatherSwipeGroup);\r
-}\r
-\r
-void WeatherPageSecond::WeatherInit(UIViewGroup *group)\r
-{\r
- group->SetPosition(0, 0);\r
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- group->SetOnDragListener(this);\r
- group->SetViewId("weather");\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- mainImg = new UIImageView();\r
- mainImg->SetPosition(0, 0);\r
- mainImg->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- ImageInfo *imgSrc =\r
- ImageCacheManager::GetInstance().LoadOneInMultiRes(IMAGE_CONVERTER_TOOL_WEATHER65, WEATHER_IMAGE);\r
- if (imgSrc == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherMainPage::LoadOneInMultiRes fail");\r
- }\r
- if (weatherModel->GetDayStatus()) {\r
- LOADIMG::LoadImageViewImg(mainImg, WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER64);\r
- } else {\r
- LOADIMG::LoadImageViewImg(mainImg, WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER65);\r
- }\r
- group->Add(mainImg);\r
- houWeather = weatherModel->GetHourWeather();\r
- ImagePageKey = new UIImageView();\r
- if (ImagePageKey == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageFirst::ImagePageKey new image fail");\r
- return;\r
- }\r
- ImagePageKey->SetPosition(WEATHER_IMAGEPAGEKEY_X, WEATHER_IMAGEPAGEKEY_Y, WEATHER_IMAGEPAGEKEY_WIDTH,\r
- WEATHER_IMAGEPAGEKEY_HEIGHT);\r
- ImagePageKey->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- LOADIMG::LoadImageViewImg(ImagePageKey, WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER67);\r
- group->Add(ImagePageKey);\r
- int count = index * SET_EIGHT;\r
- index++;\r
- InitImage(group, count);\r
- InitLabel(group, count);\r
- return;\r
-}\r
-\r
-void WeatherPageSecond::InitImage(UIViewGroup *group, int count)\r
-{\r
- int weatherPosX[SET_EIGHT] = {67, 161, 257, 351, 67, 161, 257, 351};\r
- int weatherPosY[SET_EIGHT] = {125, 125, 125, 125, 289, 289, 289, 289};\r
- int backPosX[SET_EIGHT] = {47, 141, 235, 329, 47, 141, 235, 329};\r
- int backPosY[SET_EIGHT] = {71, 71, 71, 71, 235, 235, 235, 235};\r
- for (int i = 0; i < SET_EIGHT; i++) {\r
- imgBack[i] = new UIImageView();\r
- if (imgBack[i] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageSecond::InitPageSecond new UIImageView fail");\r
- return;\r
- }\r
- imgBack[i]->SetPosition(backPosX[i], backPosY[i]);\r
- if (weatherModel->GetDayStatus()) {\r
- LOADIMG::LoadImageViewImg(imgBack[i], WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER73);\r
- } else {\r
- LOADIMG::LoadImageViewImg(imgBack[i], WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER74);\r
- }\r
-\r
- imgWeather[i] = new UIImageView();\r
- if (imgWeather[i] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageSecond::InitPageSecond new labelTime fail");\r
- return;\r
- }\r
- imgWeather[i]->SetPosition(weatherPosX[i], weatherPosY[i]);\r
- int curWeather_code = std::atoi(houWeather[count + i].weather);\r
- LOADIMG::LoadImageViewImg(imgWeather[i], WEATHER_IMAGE, smallWeatherImage[curWeather_code]);\r
- group->Add(imgBack[i]);\r
- group->Add(imgWeather[i]);\r
- }\r
-}\r
-\r
-void WeatherPageSecond::InitLabel(UIViewGroup *group, int count)\r
-{\r
- int timePosX[SET_EIGHT] = {67, 161, 255, 349, 67, 161, 255, 349};\r
- int timePosY[SET_EIGHT] = {91, 91, 91, 91, 255, 255, 255, 255};\r
- int tempPosX[SET_EIGHT] = {75, 169, 263, 356, 75, 169, 263, 356};\r
- int tempPosY[SET_EIGHT] = {175, 175, 175, 175, 339, 339, 339, 339};\r
- UILabel *topLabel = new UILabel();\r
- if (topLabel == nullptr) {\r
- return;\r
- }\r
- topLabel->SetText("24小时预报");\r
- topLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WEATHER_TOPLABEL_FRONT);\r
- topLabel->SetPosition(WEATHER_TOPLABEL_X, WEATHER_TOPLABEL_Y, WEATHER_TOPLABEL_WIDTH, WEATHER_TOPLABEL_HEIGHT);\r
- group->Add(topLabel);\r
- for (int i = 0; i < SET_EIGHT; i++) {\r
- labelTemp[i] = new UILabel();\r
- if (labelTemp[i] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageSecond::InitPageSecond new labelTemp fail");\r
- return;\r
- }\r
- std::ostringstream oss;\r
- oss << houWeather[count + i].degree << "°";\r
- std::string temp = oss.str();\r
- labelTemp[i]->SetText(temp.c_str());\r
- labelTemp[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WEATHER_LABELTIME_FRONT_TWO);\r
- labelTemp[i]->SetPosition(tempPosX[i], tempPosY[i], WEATHER_TITLE_WIDTH, WEATHER_TITLE_HEIGHT);\r
-\r
- labelTime[i] = new UILabel();\r
- if (labelTime[i] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageSecond::InitPageSecond new labelTime fail");\r
- return;\r
- }\r
- std::string strHour = houWeather[count + i].hour;\r
- labelTime[i]->SetText(strHour.c_str());\r
- labelTime[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WEATHER_LABELTIME_FRONT);\r
- labelTime[i]->SetPosition(timePosX[i], timePosY[i], WEATHER_TITLE_WIDTH, WEATHER_TITLE_HEIGHT);\r
- group->Add(labelTemp[i]);\r
- group->Add(labelTime[i]);\r
- }\r
-}\r
-\r
-bool WeatherPageSecond::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- NativeAbility::GetInstance().SwitchPageInSlice(WEATHER_PAGES::WEATHER_MAIN_PAGE, nullptr,\r
- TransitionType::TRANSITION_INVALID, true);\r
- } else if (event.GetDragDirection() == DragEvent::DIRECTION_RIGHT_TO_LEFT) {\r
- NativeAbility::GetInstance().SwitchPageInSlice(WEATHER_PAGES::WEATHER_THIRD_PAGE, nullptr,\r
- TransitionType::TRANSITION_INVALID, true);\r
- }\r
- return false;\r
-}\r
-\r
-void WeatherPageSecond::OnSwipe(UISwipeView &view)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnSwipe ");\r
- UNUSED(view);\r
- return;\r
-}\r
-\r
-bool WeatherPageSecond::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- UNUSED(event);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- * Description: WeatherPageThird\r
- * Create: 2025-03-23\r
- */\r
-\r
-#include "weather/WeatherPageThird.h"\r
-#include "components/ui_list_nested.h"\r
-#include "components/ui_scroll_view_nested.h"\r
-#include "NativeAbility.h"\r
-#include "SlicePageFactory.h"\r
-#include "weather/WeatherPresenter.h"\r
-#include "weather/WeatherView.h"\r
-#include "weather/WeatherModel.h"\r
-#include "ui_resource_weather.h"\r
-#include "common/image_cache_manager.h"\r
-#include "wearable_log.h"\r
-\r
-namespace OHOS {\r
-static constexpr uint8_t WEATHER_ITEM_FONT_SIZE = 25;\r
-static constexpr int16_t WEATHER_RESIZE_SIZE_WIDTH = 200;\r
-static constexpr int16_t WEATHER_RESIZE_SIZE_HEIGHT = 50;\r
-static constexpr int16_t WEATHER_TITLE_POSITION_X = 130;\r
-static constexpr int16_t WEATHER_LIST_POSITION_X = 32;\r
-static constexpr int16_t WEATHER_LIST_POSITION_Y = 70;\r
-static constexpr int16_t WEATHER_LIST_WIDTH = 390;\r
-static constexpr int16_t WEATHER_LIST_HEIGHT = 318;\r
-static constexpr int16_t WEATHER_LIST_SELECT_POSITION = 80;\r
-static constexpr int16_t LIST_POS = 20;\r
-static constexpr int16_t WEATHER_LABEL_FRONT_ONE = 20;\r
-static constexpr int16_t WEATHER_LABEL_FRONT = 40;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_X = 199;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_Y = 429;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_WIDTH = 56;\r
-static constexpr int16_t WEATHER_IMAGEPAGEKEY_HEIGHT = 10;\r
-\r
-REGIST_SLICE_PAGE(VIEW_WEATHER, WEATHER_PAGES::WEATHER_THIRD_PAGE, WeatherPageThird, false);\r
-\r
-WeatherPageThird::WeatherPageThird()\r
-{\r
- weatherModel = &WeatherModel::GetInstance();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageThird::WeatherPageThird");\r
-}\r
-\r
-WeatherPageThird::~WeatherPageThird()\r
-{\r
- if (group != nullptr) {\r
- group->RemoveAll();\r
- delete group;\r
- group = nullptr;\r
- }\r
-\r
- if (contentList != nullptr) {\r
- delete contentList;\r
- contentList = nullptr;\r
- }\r
-\r
- if (title != nullptr) {\r
- delete title;\r
- title = nullptr;\r
- }\r
-\r
- if (listAdapter != nullptr) {\r
- delete listAdapter;\r
- listAdapter = nullptr;\r
- }\r
-\r
- if (mainImg != nullptr) {\r
- delete mainImg;\r
- mainImg = nullptr;\r
- }\r
-\r
- if (ImagePageKey != nullptr) {\r
- delete ImagePageKey;\r
- ImagePageKey = nullptr;\r
- }\r
- ImageCacheManager::GetInstance().UnloadAllInMultiRes(WEATHER_IMAGE);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageThird::~WeatherPageThird");\r
-}\r
-\r
-void WeatherPageThird::OnStart(void *data)\r
-{\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::OnStart::group is nullptr");\r
- return;\r
- }\r
- group->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- group->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- group->SetOnDragListener(this);\r
-\r
- title = new UILabel();\r
- if (title == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::OnStart::title is nullptr");\r
- return;\r
- }\r
- title->SetPosition(WEATHER_TITLE_POSITION_X, WEATHER_LABEL_FRONT_ONE);\r
- title->SetText("7日天气预报");\r
- title->Resize(WEATHER_RESIZE_SIZE_WIDTH, WEATHER_RESIZE_SIZE_HEIGHT);\r
- title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, WEATHER_ITEM_FONT_SIZE);\r
- title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- title->SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
- title->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
- title->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
-\r
- mainImg = new UIImageView();\r
- mainImg->SetPosition(0, 0);\r
- mainImg->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- if (weatherModel->GetDayStatus()) {\r
- LOADIMG::LoadImageViewImg(mainImg, WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER64);\r
- } else {\r
- LOADIMG::LoadImageViewImg(mainImg, WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER65);\r
- }\r
- InitScrollView();\r
- InitScrollData();\r
- AddViewToPageContainer(group);\r
-}\r
-\r
-void WeatherPageThird::InitScrollView()\r
-{\r
- contentList = new UIList();\r
- if (contentList == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::OnStart::contentList is nullptr");\r
- return;\r
- }\r
-\r
- contentList->SetPosition(WEATHER_LIST_POSITION_X, WEATHER_LIST_POSITION_Y);\r
- contentList->Resize(WEATHER_LIST_WIDTH, WEATHER_LIST_HEIGHT);\r
- contentList->SetSelectPosition(WEATHER_LIST_SELECT_POSITION);\r
- contentList->SetDraggable(true);\r
- contentList->SetThrowDrag(true);\r
- contentList->EnableAutoAlign(true);\r
- contentList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- contentList->SetElastic(true);\r
- ImagePageKey = new UIImageView();\r
- if (ImagePageKey == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherPageFirst::ImagePageKey new image fail");\r
- return;\r
- }\r
- ImagePageKey->SetPosition(WEATHER_IMAGEPAGEKEY_X, WEATHER_IMAGEPAGEKEY_Y, WEATHER_IMAGEPAGEKEY_WIDTH,\r
- WEATHER_IMAGEPAGEKEY_HEIGHT);\r
- ImagePageKey->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- LOADIMG::LoadImageViewImg(ImagePageKey, WEATHER_IMAGE, IMAGE_CONVERTER_TOOL_WEATHER68);\r
- group->Add(mainImg);\r
- group->Add(title);\r
- group->Add(contentList);\r
- group->Add(ImagePageKey);\r
-}\r
-\r
-bool WeatherPageThird::InitScrollData()\r
-{\r
- const WeatherItem *itemInfo = weatherModel->GetWeatherlistItems();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::InitWeatherItem %s", itemInfo);\r
- RefreshWeathersList(itemInfo, weatherModel->GetWeatherListNum());\r
- return true;\r
-}\r
-\r
-void WeatherPageThird::RefreshWeathersList(const WeatherItem *item, uint8_t count)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::OnStart::listAdapter");\r
- listAdapter = new WeatherAdapter();\r
- if (listAdapter == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::OnStart::listAdapter is nullptr");\r
- return;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::RefreshWeathersList");\r
- if (item == nullptr) {\r
- return;\r
- } else {\r
- for (int i = 0; i < count; i++) {\r
- listAdapter->AddListItem(item[i]);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::RefreshWeathersList %d", i);\r
- }\r
- }\r
- if (contentList == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::contentList fail");\r
- return;\r
- }\r
- contentList->ScrollTo(0);\r
- contentList->SetAdapter(listAdapter);\r
-}\r
-\r
-bool WeatherPageThird::OnDrag(UIView &view, const DragEvent &event)\r
-{\r
- UNUSED(view);\r
- if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
- (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
- NativeAbility::GetInstance().SwitchPageInSlice(WEATHER_PAGES::WEATHER_SECOND_PAGE, nullptr,\r
- TransitionType::TRANSITION_INVALID, true);\r
- }\r
- return false;\r
-}\r
-\r
-void WeatherPageThird::OnSwipe(UISwipeView &view)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnSwipe ");\r
- UNUSED(view);\r
- return;\r
-}\r
-\r
-bool WeatherPageThird::OnClick(UIView &view, const ClickEvent &event)\r
-{\r
- UNUSED(event);\r
- return true;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- */\r
-#include "device_location.h"\r
-#include "wearable_log.h"\r
-#include "locator.h"\r
-\r
-using namespace OHOS::Location;\r
-\r
-LocationInfo_t g_locationInfo = {0};\r
-\r
-class GnssStatusCallback : public IGnssStatusCallback {\r
-public:\r
- GnssStatusCallback() {}\r
- ~GnssStatusCallback() {}\r
-\r
- void OnStatusChange(const std::shared_ptr<SatelliteStatus> &statusInfo) override\r
- {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OnStatusChange, num:%d\n", statusInfo->GetSatellitesNumber());\r
- for (int32_t satIdx = 0; satIdx < statusInfo->GetSatellitesNumber(); satIdx++) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "sat index:%d svid:%d ele:%.3f az:%.3f cnr:%.3f \n", satIdx,\r
- statusInfo->GetSatelliteIds()[satIdx], statusInfo->GetAltitudes()[satIdx],\r
- statusInfo->GetAzimuths()[satIdx], statusInfo->GetCarrierToNoiseDensitys()[satIdx]);\r
- }\r
- }\r
-\r
-private:\r
-};\r
-\r
-class NmeaMessageCallback : public INmeaMessageCallback {\r
-public:\r
- NmeaMessageCallback() {}\r
- ~NmeaMessageCallback() {}\r
-\r
- void OnMessageChange(int64_t timestamp, const std::string msg) override\r
- {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OnMessageChange timestamp :%lld msg:%s\n", timestamp, msg.c_str());\r
- }\r
-\r
-private:\r
-};\r
-\r
-class LocatorCallback : public ILocatorCallback {\r
-public:\r
- LocatorCallback() {}\r
-\r
- ~LocatorCallback() {}\r
-\r
- void OnLocationReport(const std::shared_ptr<Location> &location) override\r
- {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OnLocationReport Lat:%.3f Long:%.3f Alt:%.3f Speed:%.3f dir:%.3f\n",\r
- location->GetLatitude(), location->GetLongitude(), location->GetAltitude(), location->GetSpeed(),\r
- location->GetDirection());\r
- }\r
-\r
- void OnErrorReport(const int errorCode) override\r
- {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "error code:%d\n", errorCode);\r
- }\r
-\r
- void OnLocatingStatusChange(const int status) override\r
- {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OnLocatingStatusChange status:%d\n", status);\r
- }\r
-\r
-private:\r
-};\r
-\r
-typedef struct {\r
- Locator *locator;\r
- bool isStarted;\r
- LocatorCallback locatorCallback;\r
- GnssStatusCallback gnssStatusCallback;\r
- NmeaMessageCallback nmeaMessageCallback;\r
-} LocationSampleContext;\r
-\r
-static LocationSampleContext g_locationContext = {\r
- .locator = nullptr,\r
- .isStarted = false,\r
-};\r
-\r
-int32_t deviceLocationStartLocating()\r
-{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "LocationStartLocating\n");\r
- if (g_locationContext.locator == nullptr) {\r
- g_locationContext.locator = &Locator::GetInstance();\r
- }\r
- if (g_locationContext.locator == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator is nullptr\n");\r
- return ERRCODE_FAILURE;\r
- }\r
-\r
- bool isEnabled = false;\r
- LocationErrCode errCode = g_locationContext.locator->IsLocationEnabled(isEnabled);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator IsLocationEnabled failed:%d\n", errCode);\r
- return errCode;\r
- }\r
-\r
- if (!isEnabled) {\r
- errCode = g_locationContext.locator->EnableAbility(true);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator EnableAbility failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- }\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "RegisterGnssStatusCallback\n");\r
- errCode = g_locationContext.locator->RegisterGnssStatusCallback(&g_locationContext.gnssStatusCallback);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator RegisterGnssStatusCallback failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "RegisterNmeaMessageCallback\n");\r
- errCode = g_locationContext.locator->RegisterNmeaMessageCallback(&g_locationContext.nmeaMessageCallback);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator RegisterNmeaMessageCallback failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "StartLocating\n");\r
- RequestConfig requestConfig;\r
- requestConfig.SetPriority(PRIORITY_ACCURACY);\r
- errCode = g_locationContext.locator->StartLocating(&requestConfig, &g_locationContext.locatorCallback);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator StartLocating failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- g_locationContext.isStarted = true;\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "StartLocating end\n");\r
- return ERRCODE_SUCCESS;\r
-}\r
-\r
-int32_t deviceLocationStopLocating()\r
-{\r
- if (!g_locationContext.isStarted) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator is not started\n");\r
- return ERRCODE_FAILURE;\r
- }\r
- LocationErrCode errCode =\r
- g_locationContext.locator->UnregisterNmeaMessageCallback(&g_locationContext.nmeaMessageCallback);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator UnregisterNmeaMessageCallback failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- errCode = g_locationContext.locator->UnregisterGnssStatusCallback(&g_locationContext.gnssStatusCallback);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator RegisterGnssStatusCallback failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- errCode = g_locationContext.locator->StopLocating(&g_locationContext.locatorCallback);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator StopLocating failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- g_locationContext.isStarted = false;\r
-\r
- bool isEnabled = false;\r
- errCode = g_locationContext.locator->IsLocationEnabled(isEnabled);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator IsLocationEnabled failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- if (!isEnabled) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator Is not Enabled\n");\r
- return ERRCODE_FAILURE;\r
- }\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "EnableAbility false\n");\r
- errCode = g_locationContext.locator->EnableAbility(false);\r
- if (errCode != ERRCODE_SUCCESS) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "locator EnableAbility failed:%d\n", errCode);\r
- return errCode;\r
- }\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Disable end\n");\r
- return ERRCODE_SUCCESS;\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.\r
- */\r
-#ifndef DEVICE_LOCATION_H\r
-#define DEVICE_LOCATION_H\r
-#include <cinttypes>\r
-\r
-typedef struct LocationInfo {\r
- int32_t latitude_;\r
- int32_t longitude_;\r
- uint16_t altitude_;\r
- uint16_t accuracy_;\r
- uint16_t speed_;\r
- uint16_t direction_;\r
- int64_t timeStamp_;\r
-} LocationInfo_t;\r
-\r
-int32_t deviceLocationStartLocating();\r
-int32_t deviceLocationStopLocating();\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description: makephone notification api\r
- * Author: CompanyName\r
- * Create: 2023-08-11\r
- */\r
-\r
-#ifndef MAKEPHONE_NOTIFICATION_H\r
-#define MAKEPHONE_NOTIFICATION_H\r
-\r
-enum class CallTimerType {\r
- NOTIFY_PHONE_CALLING_DISPLAY = 0,\r
- NOTIFY_PHONE_CURTIME_DISPLAY = 1,\r
- NOTIFY_PHONE_UNKNOWN = 10,\r
-};\r
-\r
-namespace OHOS {\r
-class VolumeSettingView;\r
-UIViewGroup* CreatePhoneCallView(void);\r
-UIViewGroup* CreateCallingView(void);\r
-UIViewGroup* CreateMultiplePhoneView(void);\r
-UIViewGroup* CreateWaitingHintsView(void);\r
-void HonrsViewChange(void);\r
-VolumeSettingView *GetvolumeSetting(void);\r
-void FreeCallingView(void);\r
-void FreePhoneCallView(void);\r
-void FreeMultiplePhoneCallView(void);\r
-void FreeWaitingHintsView(void);\r
-void RefreshMicrophoneImageSrc(const char* src);\r
-void CallTimerCallBackProc(int data);\r
-void CallCurTimerCallBack(int data);\r
-void StartCallTimer(CallTimerType type, int32_t interval);\r
-void DisableCallTimer(CallTimerType type);\r
-void EnableWaitingView(void);\r
-void DisableWatingView(void);\r
-\r
-class CallViewEventListener : public OHOS::UIView::OnClickListener,\r
- public OHOS::UIView::OnLongPressListener,\r
- public OHOS::UIView::OnTouchListener,\r
- public OHOS::UIView::OnDragListener {\r
-public:\r
- CallViewEventListener();\r
- ~CallViewEventListener() override;\r
- static CallViewEventListener *GetInstance(void);\r
- bool OnClick(OHOS::UIView& view, const OHOS::ClickEvent& event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override\r
- {\r
- return true;\r
- }\r
- bool OnDragEnd(OHOS::UIView& view, const OHOS::DragEvent& event) override\r
- {\r
- return true;\r
- }\r
- bool OnPress(OHOS::UIView& view, const OHOS::PressEvent& event) override\r
- {\r
- return true;\r
- }\r
- bool OnLongPress(OHOS::UIView& view, const OHOS::LongPressEvent& event) override\r
- {\r
- return true;\r
- }\r
- bool OnRelease(OHOS::UIView& view, const OHOS::ReleaseEvent& event) override\r
- {\r
- return true;\r
- }\r
-\r
- bool OnDragStart(OHOS::UIView& view, const OHOS::DragEvent& event) override\r
- {\r
- return true;\r
- }\r
-};\r
-}; // namespace OHOS\r
-\r
-#endif /* MAKEPHONE_NOTIFICATION_H */\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description: makephone notification implement\r
- * Author: CompanyName\r
- * Create: 2023-08-11\r
- */\r
-\r
-#include "notification_manager.h"\r
-#include "wearable_log.h"\r
-#include "callerlog/CallerLogModel.h"\r
-#include "phoneservice/PhoneService.h"\r
-#include "cmsis_os.h"\r
-#include "UiConfig.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-#include "common/image_cache_manager.h"\r
-#include "main/VolumeSettingView.h"\r
-#include "main/VolumeSettingPresenter.h"\r
-#include "ui_resource_image.h"\r
-\r
-namespace OHOS {\r
-constexpr int32_t NOTIFY_THREE_SECONDS = 3000;\r
-constexpr int32_t NOTIFY_ONE_SECOND = 1000;\r
-constexpr int32_t NOTIFY_THIRTY_SECONDS = 30000;\r
-constexpr int32_t NOTIFY_ONE_MINUTE = 60000;\r
-constexpr int32_t NOTOFY_NO_OPERATE_TIME = 35000;\r
-int g_changeImage = 0;\r
-osTimerId_t g_callDurationTimer = nullptr; // timer of call duration\r
-osTimerId_t g_callCurrentTime = nullptr; // timer of current time\r
-\r
-static constexpr uint16 MATH_ZERO = 0;\r
-\r
-// 来电显示\r
-static constexpr uint16 LABEL_PERCENT_POSITION_X = 0;\r
-static constexpr uint16 LABEL_PERCENT_POSITION_Y = 100;\r
-static constexpr uint16 LABEL_COMINGVIEW_POSITION_X = 0;\r
-static constexpr uint16 LABEL_COMINGVIEW_POSITION_Y = 80;\r
-static constexpr uint16 TITLE_LABEL_DEFAULT_HEIGHT = 80;\r
-\r
-// 当前时间\r
-static constexpr uint16 LABEL_CURREMTTIME_POSITION_X = 0;\r
-static constexpr uint16 LABEL_CURREMTTIME_POSITION_Y = 360;\r
-static constexpr uint16 LABEL_COMINGTIME_POSITION_X = 0;\r
-static constexpr uint16 LABEL_COMINGTIME_POSITION_Y = 340;\r
-\r
-// 图片坐标\r
-static constexpr uint16 LABEL_CALLERD_POSITION_X = 0;\r
-static constexpr uint16 LABEL_CALLERD_POSITION_Y = 160;\r
-static constexpr uint16 LABEL_NEWCALLERD_POSITION_X = 0;\r
-static constexpr uint16 LABEL_NEWCALLERD_POSITION_Y = 160;\r
-static constexpr uint16 IMAGE_HONRS_POSITION_X = 185;\r
-static constexpr uint16 IMAGE_HONRS_POSITION_Y = 10;\r
-static constexpr uint16 IMAGE_HANDUP_POSITION_X = 70;\r
-static constexpr uint16 IMAGE_MIC_POSITION_X = 280;\r
-static constexpr uint16 IMAGE_DISSGREE_POSITION_X = 80;\r
-static constexpr uint16 IMAGE_AGREEING_POSITION_X = 270;\r
-static constexpr uint16 IMAGE_ALL_POSITION_Y = 240;\r
-static constexpr uint16 IMAGE_HANDUP2_POSITION_X = 177;\r
-static constexpr uint16 IMAGE_HANDUP2_POSITION_Y = 270;\r
-\r
-// 字体大小\r
-static constexpr uint16 FONT_CURRENT_SIZE = 25;\r
-static constexpr uint16 FONT_CALLER_SIZE = 40;\r
-UIViewGroup* g_phoneView = nullptr;\r
-UIViewGroup* g_multiPhoneView = nullptr;\r
-UIViewGroup* g_callingView = nullptr;\r
-UIViewGroup* g_waitingHintsView = nullptr;\r
-VolumeSettingView *g_volumeSetting = nullptr;\r
-UIImageView* g_imageAgree = nullptr;\r
-UIImageView* g_imageDissgree = nullptr;\r
-UIImageView* g_imageMicrophone = nullptr;\r
-UIImageView* g_imageHandUp = nullptr;\r
-UIImageView* g_imageHorns = nullptr;\r
-UIImageView* g_imageDissgreeNew = nullptr;\r
-UILabel* g_callerNum = nullptr;\r
-UILabel* g_callerDisplay = nullptr;\r
-UILabel* g_callDuration = nullptr;\r
-UILabel* g_currentTimes = nullptr;\r
-UILabel* g_comingTimes = nullptr;\r
-UILabel* g_newCallHints = nullptr;\r
-UILabel* g_newCallNum = nullptr;\r
-\r
-void CallTimerCallBack(int data)\r
-{\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(CallTimerCallBackProc, data));\r
-}\r
-\r
-void CallTimerCallBackProc(int data)\r
-{\r
- if (g_callDuration != nullptr) {\r
- g_callDuration->SetText(CallerLogModel::GetInstance()->DisplayCallDuration().c_str());\r
- }\r
-}\r
-\r
-void CallCurTimerCallBack(int data)\r
-{\r
- if (g_currentTimes != nullptr) {\r
- g_currentTimes->SetText(CallerLogModel::GetInstance()->InitDateHourTime().c_str());\r
- }\r
-}\r
-\r
-void StartCallTimer(CallTimerType type, int32_t interval)\r
-{\r
- uint32_t tick;\r
- osStatus_t retTimer;\r
- if (type >= CallTimerType::NOTIFY_PHONE_UNKNOWN) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartCallTimer type:%d invalid!!", type);\r
- return;\r
- }\r
- switch (type) {\r
- case CallTimerType::NOTIFY_PHONE_CALLING_DISPLAY:\r
- g_callDurationTimer = osTimerNew((osTimerFunc_t)CallTimerCallBack, osTimerPeriodic, nullptr, nullptr);\r
- tick = osMs2Tick(interval);\r
- retTimer = osTimerStart(g_callDurationTimer, tick);\r
- if (retTimer != osOK && g_callDurationTimer != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "StartCallTimer osTimerStart failed, type = %d ret = %lx!!", type, retTimer);\r
- osTimerDelete(g_callDurationTimer);\r
- g_callDurationTimer = nullptr;\r
- return;\r
- }\r
- break;\r
- case CallTimerType::NOTIFY_PHONE_CURTIME_DISPLAY:\r
- g_callCurrentTime = osTimerNew((osTimerFunc_t)CallCurTimerCallBack, osTimerPeriodic, nullptr, nullptr);\r
- tick = osMs2Tick(interval);\r
- retTimer = osTimerStart(g_callCurrentTime, tick);\r
- if (retTimer != osOK && g_callCurrentTime != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "StartCallTimer osTimerStart failed, type = %d ret = %lx!!", type, retTimer);\r
- osTimerDelete(g_callCurrentTime);\r
- g_callCurrentTime = nullptr;\r
- return;\r
- }\r
- break;\r
- default:\r
- break;\r
- }\r
-}\r
-\r
-void DisableCallTimer(CallTimerType type)\r
-{\r
- if (type >= CallTimerType::NOTIFY_PHONE_UNKNOWN) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableCallTimer type:%d invalid!!", type);\r
- return;\r
- }\r
- osStatus_t ret;\r
- switch (type) {\r
- case CallTimerType::NOTIFY_PHONE_CALLING_DISPLAY:\r
- if (g_callDurationTimer != nullptr) {\r
- ret = osTimerDelete(g_callDurationTimer);\r
- if (ret != osOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableCallTimer failed, type= %d ret = %lx!", type, ret);\r
- return;\r
- }\r
- g_callDurationTimer = nullptr;\r
- }\r
- break;\r
- case CallTimerType::NOTIFY_PHONE_CURTIME_DISPLAY:\r
- if (g_callCurrentTime != nullptr) {\r
- ret = osTimerDelete(g_callCurrentTime);\r
- if (ret != osOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableCallTimer failed, type= %d ret = %lx!", type, ret);\r
- return;\r
- }\r
- g_callCurrentTime = nullptr;\r
- }\r
- break;\r
- default:\r
- break;\r
- }\r
-}\r
-\r
-void HonrsViewChange(void)\r
-{\r
- if (g_volumeSetting == nullptr) {\r
- g_volumeSetting = new VolumeSettingView();\r
- if (g_volumeSetting == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "makephone_notification::g_volumeSetting nullptr err");\r
- return;\r
- }\r
- if (!g_volumeSetting->SetUpVolume()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "makephone_notification::g_volumeSetting SetUpVolume fail");\r
- return;\r
- }\r
- g_volumeSetting->GetProgress()->SetValue(\r
- AudioManager::GetInstance().GetVolume(AUDIO_STREAM_VOICE_CALL_BT_SCO));\r
- if (AudioManager::GetInstance().GetVolume(AUDIO_STREAM_VOICE_CALL_BT_SCO) == 0) {\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);\r
- g_volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);\r
- }\r
- NotificationManager::GetInstance()->screenContainer_->Add(g_volumeSetting);\r
- }\r
- VolumeSliderEventListener *volumeSliderEventListener = g_volumeSetting->GetVolumeEventListener();\r
- if (volumeSliderEventListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "makephone_notification::volumeSliderEventListener nullptr err");\r
- return;\r
- }\r
-\r
- volumeSliderEventListener->SetPlayerCoefficients(VOLUMEPHONENOTIFY); // 进度条系数\r
- g_volumeSetting->SetVisible(true);\r
- // 刷新UI\r
- RootView::GetInstance()->Invalidate();\r
-}\r
-VolumeSettingView *GetvolumeSetting(void)\r
-{\r
- return g_volumeSetting;\r
-}\r
-\r
-static void FreeCallingViewImage(void)\r
-{\r
- if (g_imageMicrophone != nullptr) {\r
- delete g_imageMicrophone;\r
- g_imageMicrophone = nullptr;\r
- }\r
- if (g_imageHandUp != nullptr) {\r
- delete g_imageHandUp;\r
- g_imageHandUp = nullptr;\r
- }\r
- if (g_imageHorns != nullptr) {\r
- delete g_imageHorns;\r
- g_imageHorns = nullptr;\r
- }\r
-}\r
-\r
-static bool DrawCallingViewImage(void)\r
-{\r
- g_imageMicrophone = new UIImageView();\r
- if (g_imageMicrophone == nullptr) {\r
- return false;\r
- }\r
- g_imageMicrophone->SetPosition(IMAGE_MIC_POSITION_X, IMAGE_ALL_POSITION_Y);\r
- g_imageMicrophone->SetSrc(PNG_MICROPHONE_OPEN_IMAGE_PATH);\r
- g_imageMicrophone->SetTouchable(true);\r
- g_imageMicrophone->SetViewId("microphoneChange");\r
-\r
- g_imageHandUp = new UIImageView();\r
- if (g_imageHandUp == nullptr) {\r
- FreeCallingViewImage();\r
- return false;\r
- }\r
- g_imageHandUp->SetPosition(IMAGE_HANDUP_POSITION_X, IMAGE_ALL_POSITION_Y);\r
- g_imageHandUp->SetSrc(PNG_DISSGREE_IMAGE_PATH);\r
- g_imageHandUp->SetTouchable(true);\r
- g_imageHandUp->SetViewId("callingHandUp");\r
-\r
- g_imageHorns = new UIImageView();\r
- if (g_imageHorns == nullptr) {\r
- FreeCallingViewImage();\r
- return false;\r
- }\r
- g_imageHorns->SetPosition(IMAGE_HONRS_POSITION_X, IMAGE_HONRS_POSITION_Y);\r
- g_imageHorns->SetSrc(PNG_SOUNDBUTTON2);\r
- g_imageHorns->SetTouchable(true);\r
- g_imageHorns->SetViewId("volumeSwitch");\r
-\r
- return true;\r
-}\r
-\r
-static void FreeCallingViewUILabel(void)\r
-{\r
- if (g_callerDisplay != nullptr) {\r
- delete g_callerDisplay;\r
- g_callerDisplay = nullptr;\r
- }\r
- if (g_callDuration != nullptr) {\r
- delete g_callDuration;\r
- g_callDuration = nullptr;\r
- }\r
- if (g_currentTimes != nullptr) {\r
- delete g_currentTimes;\r
- g_currentTimes = nullptr;\r
- }\r
-}\r
-\r
-static bool DrawCallingViewUILabel(void)\r
-{\r
- g_callerDisplay = new UILabel();\r
- if (g_callerDisplay == nullptr) {\r
- return false;\r
- }\r
- g_callerDisplay->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,\r
- Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);\r
- g_callerDisplay->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- g_callerDisplay->SetText(CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- g_callerDisplay->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- g_callerDisplay->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CALLER_SIZE);\r
- g_callerDisplay->SetTextColor(Color::White());\r
-\r
- g_callDuration = new UILabel();\r
- if (g_callDuration == nullptr) {\r
- FreeCallingViewUILabel();\r
- return false;\r
- }\r
- g_callDuration->SetPosition(LABEL_CALLERD_POSITION_X, LABEL_CALLERD_POSITION_Y,\r
- Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);\r
- g_callDuration->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- g_callDuration->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- g_callDuration->SetText(CallerLogModel::GetInstance()->DisplayCallDuration().c_str());\r
- g_callDuration->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CURRENT_SIZE);\r
- g_callDuration->SetTextColor(Color::White());\r
-\r
- g_currentTimes = new UILabel();\r
- if (g_currentTimes == nullptr) {\r
- FreeCallingViewUILabel();\r
- return false;\r
- }\r
- g_currentTimes->SetPosition(LABEL_CURREMTTIME_POSITION_X, LABEL_CURREMTTIME_POSITION_Y,\r
- Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);\r
- g_currentTimes->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- g_currentTimes->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- g_currentTimes->SetText(CallerLogModel::GetInstance()->InitDateHourTime().c_str());\r
- g_currentTimes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CURRENT_SIZE);\r
- g_currentTimes->SetTextColor(Color::White());\r
-\r
- return true;\r
-}\r
-\r
-static bool DrawWaitingHintsViewImage(void)\r
-{\r
- g_imageDissgreeNew = new UIImageView();\r
- if (g_imageDissgreeNew == nullptr) {\r
- FreeCallingViewImage();\r
- return false;\r
- }\r
- g_imageDissgreeNew->SetPosition(IMAGE_HANDUP2_POSITION_X, IMAGE_HANDUP2_POSITION_Y);\r
- g_imageDissgreeNew->SetSrc(PNG_DISSGREE_IMAGE_PATH);\r
- g_imageDissgreeNew->SetTouchable(true);\r
- g_imageDissgreeNew->SetViewId("newCallHandUp");\r
- return true;\r
-}\r
-\r
-static void FreeWaitingHintsViewImage(void)\r
-{\r
- if (g_imageDissgreeNew != nullptr) {\r
- delete g_imageDissgreeNew;\r
- g_imageDissgreeNew = nullptr;\r
- }\r
-}\r
-\r
-static void FreeWaitingHintsViewLabel(void)\r
-{\r
- if (g_newCallNum != nullptr) {\r
- delete g_newCallNum;\r
- g_newCallNum = nullptr;\r
- }\r
- if (g_newCallHints != nullptr) {\r
- delete g_newCallHints;\r
- g_newCallHints = nullptr;\r
- }\r
-}\r
-\r
-static bool DrawWaitingHintsViewLabel(void)\r
-{\r
- g_newCallNum = new UILabel();\r
- if (g_newCallNum == nullptr) {\r
- return false;\r
- }\r
- g_newCallNum->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,\r
- Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);\r
- g_newCallNum->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- g_newCallNum->SetText(CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- g_newCallNum->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- g_newCallNum->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CALLER_SIZE);\r
- g_newCallNum->SetTextColor(Color::White());\r
-\r
- g_newCallHints = new UILabel();\r
- if (g_newCallHints == nullptr) {\r
- FreeWaitingHintsViewLabel();\r
- return false;\r
- }\r
- g_newCallHints->SetPosition(LABEL_NEWCALLERD_POSITION_X, LABEL_NEWCALLERD_POSITION_Y,\r
- Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);\r
- g_newCallHints->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- g_newCallHints->SetText("新来电");\r
- g_newCallHints->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- g_newCallHints->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CALLER_SIZE);\r
- g_newCallHints->SetTextColor(Color::White());\r
- return true;\r
-}\r
-\r
-static void FreePhoneCallViewImage(void)\r
-{\r
- if (g_imageAgree != nullptr) {\r
- delete g_imageAgree;\r
- g_imageAgree = nullptr;\r
- }\r
- if (g_imageDissgree != nullptr) {\r
- delete g_imageDissgree;\r
- g_imageDissgree = nullptr;\r
- }\r
-}\r
-\r
-static bool DrawPhoneCallViewImage(void)\r
-{\r
- g_imageAgree = new UIImageView();\r
- if (g_imageAgree == nullptr) {\r
- return false;\r
- }\r
- g_imageAgree->SetPosition(IMAGE_AGREEING_POSITION_X, IMAGE_ALL_POSITION_Y);\r
- g_imageAgree->SetSrc(PNG_AGREEING_IMAGE_PATH);\r
- g_imageAgree->SetTouchable(true);\r
- g_imageAgree->SetViewId("answer");\r
- UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>\\r
- (OHOS::CallViewEventListener::GetInstance());\r
- g_imageAgree->SetOnClickListener(clickListener);\r
- g_imageDissgree = new UIImageView();\r
- if (g_imageDissgree == nullptr) {\r
- FreePhoneCallViewImage();\r
- return false;\r
- }\r
- g_imageDissgree->SetPosition(IMAGE_DISSGREE_POSITION_X, IMAGE_ALL_POSITION_Y);\r
- g_imageDissgree->SetSrc(PNG_DISSGREE_IMAGE_PATH);\r
- g_imageDissgree->SetTouchable(true);\r
- g_imageDissgree->SetViewId("displayHandUp");\r
- g_imageDissgree->SetOnClickListener(clickListener);\r
- return true;\r
-}\r
-\r
-static void FreePhoneCallViewLabel(void)\r
-{\r
- if (g_callerNum != nullptr) {\r
- delete g_callerNum;\r
- g_callerNum = nullptr;\r
- }\r
- if (g_comingTimes != nullptr) {\r
- delete g_comingTimes;\r
- g_comingTimes = nullptr;\r
- }\r
-}\r
-\r
-static bool DrawPhoneCallViewLabel(void)\r
-{\r
- g_callerNum = new UILabel();\r
- if (g_callerNum == nullptr) {\r
- return false;\r
- }\r
- g_callerNum->SetPosition(LABEL_COMINGVIEW_POSITION_X, LABEL_COMINGVIEW_POSITION_Y,\r
- Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);\r
- g_callerNum->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "CreatePhoneCallView phonenum:%s!",\r
- CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- g_callerNum->SetText(CallerLogModel::GetInstance()->GetPhoneNumber().c_str());\r
- g_callerNum->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- g_callerNum->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CALLER_SIZE);\r
- g_callerNum->SetTextColor(Color::White());\r
-\r
- g_comingTimes = new UILabel();\r
- if (g_comingTimes == nullptr) {\r
- FreePhoneCallViewLabel();\r
- return false;\r
- }\r
- g_comingTimes->SetPosition(LABEL_COMINGTIME_POSITION_X, LABEL_COMINGTIME_POSITION_Y,\r
- Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);\r
- g_comingTimes->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
- g_comingTimes->SetAlign(TEXT_ALIGNMENT_CENTER);\r
- g_comingTimes->SetText(CallerLogModel::GetInstance()->InitDateHourTime().c_str());\r
- g_comingTimes->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_CURRENT_SIZE);\r
- g_comingTimes->SetTextColor(Color::White());\r
- return true;\r
-}\r
-\r
-UIViewGroup* CreatePhoneCallView(void)\r
-{\r
- g_phoneView = new UIViewGroup();\r
- if (g_phoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreatePhoneCallView g_phoneView null!");\r
- return nullptr;\r
- }\r
- g_phoneView->SetPosition(MATH_ZERO, MATH_ZERO);\r
- g_phoneView->SetWidth(Screen::GetInstance().GetWidth());\r
- g_phoneView->SetHeight(Screen::GetInstance().GetHeight());\r
- if (!DrawPhoneCallViewImage()) {\r
- delete g_phoneView;\r
- g_phoneView = nullptr;\r
- return nullptr;\r
- }\r
- if (!DrawPhoneCallViewLabel()) {\r
- FreePhoneCallViewImage();\r
- delete g_phoneView;\r
- g_phoneView = nullptr;\r
- return nullptr;\r
- }\r
- g_phoneView->Add(g_imageAgree);\r
- g_phoneView->Add(g_imageDissgree);\r
- g_phoneView->Add(g_callerNum);\r
- g_phoneView->Add(g_comingTimes);\r
- g_phoneView->SetDraggable(true);\r
- g_phoneView->SetTouchable(true);\r
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreePhoneCallView);\r
- return g_phoneView;\r
-}\r
-\r
-void FreePhoneCallView(void)\r
-{\r
- if (g_phoneView != nullptr) {\r
- g_phoneView->RemoveAll();\r
- FreePhoneCallViewImage();\r
- FreePhoneCallViewLabel();\r
- RootView::GetInstance()->Remove(g_phoneView);\r
- delete g_phoneView;\r
- g_phoneView = nullptr;\r
- }\r
-}\r
-\r
-UIViewGroup* CreateMultiplePhoneView(void)\r
-{\r
- g_multiPhoneView = new UIViewGroup();\r
- if (g_multiPhoneView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateMultiplePhoneView g_multiPhoneView null!");\r
- return nullptr;\r
- }\r
- g_multiPhoneView->SetPosition(MATH_ZERO, MATH_ZERO);\r
- g_multiPhoneView->SetWidth(Screen::GetInstance().GetWidth());\r
- g_multiPhoneView->SetHeight(Screen::GetInstance().GetHeight());\r
- if (!DrawCallingViewImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateMultiplePhoneView create image error!");\r
- delete g_multiPhoneView;\r
- g_multiPhoneView = nullptr;\r
- return nullptr;\r
- }\r
- if (!DrawCallingViewUILabel()) {\r
- FreeCallingViewImage();\r
- delete g_multiPhoneView;\r
- g_multiPhoneView = nullptr;\r
- return nullptr;\r
- }\r
- g_callerDisplay->SetText("正在通话");\r
- g_callDuration->SetText("");\r
- g_multiPhoneView->Add(g_imageMicrophone);\r
- g_multiPhoneView->Add(g_imageHandUp);\r
- g_multiPhoneView->Add(g_imageHorns);\r
- g_multiPhoneView->Add(g_callerDisplay);\r
- g_multiPhoneView->Add(g_callDuration);\r
- g_multiPhoneView->Add(g_currentTimes);\r
- g_multiPhoneView->SetDraggable(true);\r
- g_multiPhoneView->SetTouchable(true);\r
- UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>\\r
- (OHOS::CallViewEventListener::GetInstance());\r
- g_imageMicrophone->SetOnClickListener(clickListener);\r
- g_imageHandUp->SetOnClickListener(clickListener);\r
- g_imageHorns->SetOnClickListener(clickListener);\r
- StartCallTimer(CallTimerType::NOTIFY_PHONE_CURTIME_DISPLAY, NOTIFY_THIRTY_SECONDS);\r
- NotificationManager::GetInstance()->SetVolumeScreenStatus(false);\r
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeMultiplePhoneCallView);\r
- return g_multiPhoneView;\r
-}\r
-\r
-void FreeMultiplePhoneCallView(void)\r
-{\r
- if (g_multiPhoneView != nullptr) {\r
- DisableCallTimer(CallTimerType::NOTIFY_PHONE_CURTIME_DISPLAY);\r
- g_multiPhoneView->RemoveAll();\r
- FreeCallingViewImage();\r
- FreeCallingViewUILabel();\r
- RootView::GetInstance()->Remove(g_multiPhoneView);\r
- delete g_multiPhoneView;\r
- g_multiPhoneView = nullptr;\r
- }\r
- if (g_volumeSetting != nullptr) {\r
- delete g_volumeSetting;\r
- g_volumeSetting = nullptr;\r
- }\r
-}\r
-\r
-UIViewGroup* CreateCallingView(void)\r
-{\r
- g_callingView = new UIViewGroup();\r
- if (g_callingView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateCallingView g_callingView null!");\r
- return nullptr;\r
- }\r
- g_callingView->SetPosition(MATH_ZERO, MATH_ZERO);\r
- g_callingView->SetWidth(Screen::GetInstance().GetWidth());\r
- g_callingView->SetHeight(Screen::GetInstance().GetHeight());\r
- if (!DrawCallingViewImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateCallingView create image error!");\r
- delete g_callingView;\r
- g_callingView = nullptr;\r
- return nullptr;\r
- }\r
- if (!DrawCallingViewUILabel()) {\r
- FreeCallingViewImage();\r
- delete g_callingView;\r
- g_callingView = nullptr;\r
- return nullptr;\r
- }\r
- g_callingView->Add(g_imageMicrophone);\r
- g_callingView->Add(g_imageHandUp);\r
- g_callingView->Add(g_imageHorns);\r
- g_callingView->Add(g_callerDisplay);\r
- g_callingView->Add(g_callDuration);\r
- g_callingView->Add(g_currentTimes);\r
- g_callingView->SetDraggable(true);\r
- g_callingView->SetTouchable(true);\r
- UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>\\r
- (OHOS::CallViewEventListener::GetInstance());\r
- g_imageMicrophone->SetOnClickListener(clickListener);\r
- g_imageHandUp->SetOnClickListener(clickListener);\r
- g_imageHorns->SetOnClickListener(clickListener);\r
- StartCallTimer(CallTimerType::NOTIFY_PHONE_CALLING_DISPLAY, NOTIFY_ONE_SECOND);\r
- StartCallTimer(CallTimerType::NOTIFY_PHONE_CURTIME_DISPLAY, NOTIFY_THIRTY_SECONDS);\r
- NotificationManager::GetInstance()->SetVolumeScreenStatus(false);\r
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeCallingView);\r
- return g_callingView;\r
-}\r
-\r
-void FreeCallingView(void)\r
-{\r
- if (g_callingView != nullptr) {\r
- DisableCallTimer(CallTimerType::NOTIFY_PHONE_CALLING_DISPLAY);\r
- DisableCallTimer(CallTimerType::NOTIFY_PHONE_CURTIME_DISPLAY);\r
- g_callingView->RemoveAll();\r
- FreeCallingViewImage();\r
- FreeCallingViewUILabel();\r
- RootView::GetInstance()->Remove(g_callingView);\r
- delete g_callingView;\r
- g_callingView = nullptr;\r
- }\r
- if (g_volumeSetting != nullptr) {\r
- delete g_volumeSetting;\r
- g_volumeSetting = nullptr;\r
- }\r
-}\r
-\r
-UIViewGroup* CreateWaitingHintsView(void)\r
-{\r
- g_waitingHintsView = new UIViewGroup();\r
- if (g_waitingHintsView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWaitingHintsView g_waitingHintsView null!");\r
- return nullptr;\r
- }\r
- g_waitingHintsView->SetPosition(MATH_ZERO, MATH_ZERO);\r
- g_waitingHintsView->SetWidth(Screen::GetInstance().GetWidth());\r
- g_waitingHintsView->SetHeight(Screen::GetInstance().GetHeight());\r
- if (!DrawWaitingHintsViewImage()) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWaitingHintsView create image error!");\r
- delete g_waitingHintsView;\r
- g_waitingHintsView = nullptr;\r
- return nullptr;\r
- }\r
- if (!DrawWaitingHintsViewLabel()) {\r
- FreeWaitingHintsViewImage();\r
- delete g_waitingHintsView;\r
- g_waitingHintsView = nullptr;\r
- return nullptr;\r
- }\r
- g_waitingHintsView->Add(g_imageDissgreeNew);\r
- g_waitingHintsView->Add(g_newCallNum);\r
- g_waitingHintsView->Add(g_newCallHints);\r
- g_waitingHintsView->SetDraggable(true);\r
- g_waitingHintsView->SetTouchable(true);\r
- UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>\\r
- (OHOS::CallViewEventListener::GetInstance());\r
- g_imageDissgreeNew->SetOnClickListener(clickListener);\r
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeWaitingHintsView);\r
- return g_waitingHintsView;\r
-}\r
-\r
-void FreeWaitingHintsView(void)\r
-{\r
- if (g_waitingHintsView != nullptr) {\r
- g_waitingHintsView->RemoveAll();\r
- FreeWaitingHintsViewImage();\r
- FreeWaitingHintsViewLabel();\r
- RootView::GetInstance()->Remove(g_waitingHintsView);\r
- delete g_waitingHintsView;\r
- g_waitingHintsView = nullptr;\r
- }\r
-}\r
-\r
-void RefreshMicrophoneImageSrc(const char* src)\r
-{\r
- g_imageMicrophone->SetSrc(src);\r
-}\r
-\r
-void EnableWaitingView(void)\r
-{\r
- if (g_waitingHintsView == nullptr) {\r
- CreateWaitingHintsView();\r
- }\r
- if (NotificationManager::GetInstance()->screenContainer_ != nullptr) {\r
- NotificationManager::GetInstance()->screenContainer_->SetVisible(false);\r
- }\r
- RootView::GetInstance()->Add(g_waitingHintsView);\r
- g_waitingHintsView->SetVisible(true);\r
- RootView::GetInstance()->Invalidate();\r
-}\r
-\r
-void DisableWatingView(void)\r
-{\r
- if (g_waitingHintsView != nullptr) {\r
- g_waitingHintsView->SetVisible(false);\r
- FreeWaitingHintsView();\r
- if (NotificationManager::GetInstance()->screenContainer_ != nullptr) {\r
- NotificationManager::GetInstance()->screenContainer_->SetVisible(true);\r
- }\r
- RootView::GetInstance()->Invalidate();\r
- }\r
-}\r
-\r
-bool HintsHandupClick(void)\r
-{\r
- if (RejectIncomingCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[HintsHandupClick] RejectIncomingCall error");\r
- return false;\r
- }\r
- CallerLogModel::GetInstance()->SetWaitingStatus(false);\r
- CallerLogModel::GetInstance()->SetCallStatus(true);\r
-\r
- return true;\r
-}\r
-\r
-CallViewEventListener::CallViewEventListener()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallViewEventListener :%p", this);\r
-}\r
-\r
-CallViewEventListener::~CallViewEventListener()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~CallViewEventListener");\r
-}\r
-\r
-CallViewEventListener *CallViewEventListener::GetInstance(void)\r
-{\r
- static CallViewEventListener callViewEventListener;\r
- return &callViewEventListener;\r
-}\r
-\r
-bool CallViewEventListener::OnClick(UIView& view, const ClickEvent& event)\r
-{\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MakephoneNotify ClickListener %s", view.GetViewId());\r
- if (strcmp(view.GetViewId(), "answer") == 0) {\r
- // watch answer the call\r
- if (AcceptIncomingCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AcceptIncomingCall() fail");\r
- return false;\r
- }\r
- return true;\r
- } else if (strcmp(view.GetViewId(), "displayHandUp") == 0 ||\r
- strcmp(view.GetViewId(), "callingHandUp") == 0) {\r
- if (strcmp(view.GetViewId(), "displayHandUp") == 0) {\r
- // The watch rejects the call\r
- if (RejectIncomingCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RejectIncomingCall() fail");\r
- return false;\r
- }\r
- }\r
- if (FinishCall() != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FinishCall() fail");\r
- return false;\r
- }\r
- return true;\r
- } else if (strcmp(view.GetViewId(), "microphoneChange") == 0) {\r
- if (g_changeImage == 0) {\r
- g_changeImage = 1;\r
- RefreshMicrophoneImageSrc(PNG_MICROPHONE_CLOSE_IMAGE_PATH);\r
- SetMicMute(true);\r
- } else {\r
- g_changeImage = 0;\r
- RefreshMicrophoneImageSrc(PNG_MICROPHONE_OPEN_IMAGE_PATH);\r
- SetMicMute(false);\r
- }\r
- return true;\r
- } else if (strcmp(view.GetViewId(), "volumeSwitch") == 0) {\r
- HonrsViewChange();\r
- } else if (strcmp(view.GetViewId(), "newCallHandUp") == 0) {\r
- if (!HintsHandupClick()) {\r
- return false;\r
- }\r
- }\r
- if (strcmp(view.GetViewId(), "SOS_FAIL") == 0) {\r
- NotificationManager::GetInstance()->StopNotify();\r
- }\r
-\r
- return true;\r
-}\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectOpen View\r
- * Create: 2022-03-22\r
- */\r
-#ifndef CONNECT_OPEN_VIEW_H\r
-#define CONNECT_OPEN_VIEW_H\r
-\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_button.h"\r
-#include "components/ui_image_view.h"\r
-\r
-namespace OHOS {\r
-class ConnectOpenView {\r
-public:\r
- ConnectOpenView();\r
- ~ConnectOpenView();\r
- static ConnectOpenView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void ShowUpBackView(void);\r
- UILabel *titleLabel{nullptr};\r
- UILabel *watchNameLabel{nullptr};\r
- UILabelButton *backButton{nullptr};\r
- UIImageView *tipImg{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // CONNECT_OPEN_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone Presenter\r
- * Create: 2022-01-19\r
- */\r
-\r
-#ifndef CONNECT_PHONE_PRESENTER_H\r
-#define CONNECT_PHONE_PRESENTER_H\r
-\r
-#include "key/include/KeyInputListener.h"\r
-#include "Presenter.h"\r
-#include "connectnewphone/include/ConnectOpenView.h"\r
-#include "NativeLauncher.h"\r
-#include "NativeAbility.h"\r
-\r
-namespace OHOS {\r
-enum ConnectPhonePresenterNum : uint8_t {\r
- CONNECTSELECTVIEW = 0,\r
- CONNECTOPENVIEW,\r
- CONNECTPHONE_MAX,\r
-};\r
-\r
-#define CANCEL_BUTTON "cancelButton"\r
-#define CONFIRM_BUTTON "confirmButton"\r
-#define CONNECT_OPEN_BACK_BUTTON "backButton"\r
-\r
-#define CONNECT_SELECT_VIEW "connectSelectView"\r
-#define CONNECT_OPEN_VIEW "connectOpenView"\r
-\r
-class ConnectPhoneView;\r
-class ConnectPhonePresenter : public Presenter<ConnectPhoneView>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener {\r
-public:\r
- ConnectPhonePresenter();\r
- ~ConnectPhonePresenter();\r
- static ConnectPhonePresenter *GetInstance();\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
- bool OnDrag(UIView& view, const DragEvent& event) override;\r
- void ConfirmOnClick();\r
-private:\r
-};\r
-} // namespace OHOS\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone View\r
- * Create: 2022-01-19\r
- */\r
-\r
-#ifndef CONNECT_PHONE_VIEW_H\r
-#define CONNECT_PHONE_VIEW_H\r
-\r
-#include "View.h"\r
-#include "connectnewphone/include/ConnectPhonePresenter.h"\r
-#include "ConnectSelectView.h"\r
-#include "AppGroupView.h"\r
-\r
-namespace OHOS {\r
-constexpr int16_t NUM_CONNECT_PHONE_CONTAINER = 2;\r
-\r
-class ConnectPhonePresenter;\r
-class ConnectPhoneView : public View<ConnectPhonePresenter> {\r
-public:\r
- ConnectPhoneView();\r
- ~ConnectPhoneView() override;\r
- static ConnectPhoneView *GetInstance();\r
- void OnStart() override;\r
- void ChangeView(int16_t hideView, int16_t showView);\r
-\r
-private:\r
- bool ChangeConnectSelectView(int16_t hideView, int16_t thisView);\r
- bool ChangeConnectOpenView(int16_t hideView, int16_t thisView);\r
- bool CheckViewParam(int16_t hideView, int16_t showView);\r
- ConnectSelectView *connectSelectView{nullptr};\r
- ConnectOpenView *connectOpenView{nullptr};\r
- UIViewGroup *container[NUM_CONNECT_PHONE_CONTAINER]{nullptr};\r
- typedef bool (ConnectPhoneView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
- PreprosssChangeView preProcessView[NUM_CONNECT_PHONE_CONTAINER];\r
-};\r
-} // namespace OHOS\r
-#endif // DISCONNECT_PHONE_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectSelect View\r
- * Create: 2022-03-22\r
- */\r
-\r
-#ifndef CONNECT_SELECT_VIEW_H\r
-#define CONNECT_SELECT_VIEW_H\r
-\r
-#include "View.h"\r
-#include "connectnewphone/include/ConnectPhonePresenter.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_view_group.h"\r
-\r
-namespace OHOS {\r
-class ConnectSelectView {\r
-public:\r
- ConnectSelectView();\r
- ~ConnectSelectView();\r
- static ConnectSelectView *GetInstance();\r
- UIViewGroup *InitShowUpView(void);\r
-\r
-private:\r
- void ShowUpTitleLabel(void);\r
- void CreateUIButton(void);\r
- UILabel *titleLabel{nullptr};\r
- UIButton *cancelButton{nullptr};\r
- UIButton *confirmButton{nullptr};\r
- UIViewGroup *group{nullptr};\r
-};\r
-} // namespace OHOS\r
-#endif // CONNECT_SELECT_VIEW_H
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectOpen View\r
- * Create: 2022-03-22\r
- */\r
-#include "connectnewphone/include/ConnectOpenView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "connectnewphone/include/ConnectPhonePresenter.h"\r
-#include "bluetooth/include/BluetoothModel.h"\r
-#include "PageTransitionMgr.h"\r
-\r
-namespace OHOS {\r
-static ConnectOpenView *g_pConnectOpenView{nullptr};\r
-ConnectOpenView::ConnectOpenView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ConnectOpenView");\r
- g_pConnectOpenView = this;\r
-}\r
-\r
-ConnectOpenView::~ConnectOpenView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::~ConnectOpenView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete backButton;\r
- backButton = nullptr;\r
- delete group;\r
- group = nullptr;\r
- delete tipImg;\r
- tipImg = nullptr;\r
- g_pConnectOpenView = nullptr;\r
-}\r
-\r
-ConnectOpenView *ConnectOpenView::GetInstance()\r
-{\r
- return g_pConnectOpenView;\r
-}\r
-\r
-void ConnectOpenView::ShowUpBackView()\r
-{\r
- if (watchNameLabel == nullptr) {\r
- watchNameLabel = new UILabel();\r
- if (watchNameLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView watchNameLabel new fail");\r
- return;\r
- }\r
- watchNameLabel->SetPosition(0, 165, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
- watchNameLabel->SetText(BluetoothModel::GetInstance()->getWatchName());\r
- watchNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- watchNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- watchNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(watchNameLabel);\r
- }\r
-\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView titleLabel new fail");\r
- return;\r
- }\r
- titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
- titleLabel->SetText("连接已打开");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- group->Add(titleLabel);\r
- }\r
- if (backButton == nullptr) {\r
- backButton = new UILabelButton();\r
- if (backButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView backButton new fail");\r
- return;\r
- }\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
- return;\r
- }\r
- backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
- backButton->SetText("确定");\r
- backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
- backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
- backButton->SetViewId(CONNECT_OPEN_BACK_BUTTON);\r
- backButton->SetTextColor(Color::Blue());\r
- backButton->SetOnClickListener(clickListener);\r
- group->Add(backButton);\r
- }\r
- if (tipImg == nullptr) {\r
- tipImg = new UIImageView();\r
- if (tipImg == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView tipImg new fail");\r
- return;\r
- }\r
- tipImg->SetPosition(181, 58, 90, 90); // 181:x 58:y 90:width 90:height\r
- tipImg->SetSrc(PNG_RIGHT);\r
- group->Add(tipImg);\r
- }\r
- return;\r
-}\r
-\r
-UIViewGroup *ConnectOpenView::InitShowUpView(void)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ShowUpViewInit");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- ShowUpBackView();\r
- UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (tipsDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (PageTransitionMgr::GetInstance().GetTopSlideBackImage() == nullptr) { // support default slide back firstly\r
- group->SetOnDragListener(tipsDragListener);\r
- }\r
- group->SetViewId(CONNECT_OPEN_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone Presenter\r
- * Create: 2022-01-19\r
- */\r
-\r
-#include "connectnewphone/include/ConnectPhonePresenter.h"\r
-#include "connectnewphone/include/ConnectPhoneView.h"\r
-#include "drag_event.h"\r
-#include "cmsis_os.h"\r
-#include "UiConfig.h"\r
-#include "wearable_log.h"\r
-#include "uiservice/include/ui_service.h"\r
-#include "NativeRegisterManager.h"\r
-\r
-namespace OHOS {\r
-\r
-REGIST_SLICE(VIEW_CONNECT_PHONE, ConnectPhoneView, ConnectPhonePresenter);\r
-\r
-static ConnectPhonePresenter *g_pConnectPhonePresenter = nullptr;\r
-\r
-ConnectPhonePresenter::ConnectPhonePresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::ConnectPhonePresenter");\r
- g_pConnectPhonePresenter = this;\r
-}\r
-\r
-ConnectPhonePresenter::~ConnectPhonePresenter()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::~ConnectPhonePresenter");\r
- g_pConnectPhonePresenter = nullptr;\r
-}\r
-\r
-ConnectPhonePresenter *ConnectPhonePresenter::GetInstance()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter GetInstance");\r
- return g_pConnectPhonePresenter;\r
-}\r
-\r
-bool ConnectPhonePresenter::OnClick(UIView& view, const ClickEvent& event)\r
-{\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");\r
- if (strcmp(view.GetViewId(), CANCEL_BUTTON) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CANCEL_BUTTON OnClick");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- } else if (strcmp(view.GetViewId(), CONFIRM_BUTTON) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONFIRM_BUTTON OnClick");\r
- ConfirmOnClick();\r
- if (ConnectPhoneView::GetInstance() == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::GetInstance() nullptr");\r
- return false;\r
- }\r
- ConnectPhoneView::GetInstance()->ChangeView(CONNECTSELECTVIEW, CONNECTOPENVIEW);\r
- } else if (strcmp(view.GetViewId(), CONNECT_OPEN_BACK_BUTTON) == 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONNECT_OPEN_BACK_BUTTON OnClick");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- }\r
- return true;\r
-}\r
-\r
-void ConnectPhonePresenter::ConfirmOnClick()\r
-{\r
- // SendMsgToUIService(CONNECT_NEW_PHONE, 0, nullptr, 0);\r
-}\r
-\r
-bool ConnectPhonePresenter::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- std::string viewId = view.GetViewId();\r
- if ((viewId == CONNECT_SELECT_VIEW) || (viewId == CONNECT_OPEN_VIEW)) {\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::OnDrag");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Connect Phone View\r
- * Create: 2022-01-19\r
- */\r
-\r
-#include "connectnewphone/include/ConnectPhoneView.h"\r
-#include "components/ui_label.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-\r
-namespace OHOS {\r
-static ConnectPhoneView *g_pConnectPhoneView{nullptr};\r
-\r
-ConnectPhoneView::ConnectPhoneView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ConnectPhoneView");\r
- preProcessView[CONNECTSELECTVIEW] = &ConnectPhoneView::ChangeConnectSelectView;\r
- preProcessView[CONNECTOPENVIEW] = &ConnectPhoneView::ChangeConnectOpenView;\r
- g_pConnectPhoneView = this;\r
-}\r
-\r
-ConnectPhoneView::~ConnectPhoneView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~ConnectPhoneView");\r
- g_pConnectPhoneView = nullptr;\r
-}\r
-\r
-ConnectPhoneView *ConnectPhoneView::GetInstance()\r
-{\r
- return g_pConnectPhoneView;\r
-}\r
-\r
-void ConnectPhoneView::OnStart()\r
-{\r
- ChangeView(CONNECTPHONE_MAX, CONNECTSELECTVIEW);\r
- return;\r
-}\r
-\r
-\r
-bool ConnectPhoneView::ChangeConnectSelectView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectSelectView");\r
- connectSelectView = new ConnectSelectView();\r
- if (connectSelectView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectSelectView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = connectSelectView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool ConnectPhoneView::ChangeConnectOpenView(int16_t hideView, int16_t thisView)\r
-{\r
- UNUSED(hideView);\r
- if (container[thisView] == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectOpenView");\r
- connectOpenView = new ConnectOpenView();\r
- if (connectOpenView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectOpenView new fail");\r
- return false;\r
- }\r
- // init view\r
- UIViewGroup *group = connectOpenView->InitShowUpView();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
- return false;\r
- }\r
- container[thisView] = group;\r
- AddViewToRootContainer(container[thisView]);\r
- }\r
- return true;\r
-}\r
-\r
-bool ConnectPhoneView::CheckViewParam(int16_t hideView, int16_t showView)\r
-{\r
- if (showView < 0 || showView >= CONNECTPHONE_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam showView err.");\r
- return false;\r
- }\r
-\r
- if (hideView < 0 || hideView > CONNECTPHONE_MAX) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam hideView err.");\r
- return false;\r
- }\r
-\r
- return true;\r
-}\r
-\r
-void ConnectPhoneView::ChangeView(int16_t hideView, int16_t showView)\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d, %d", hideView, showView);\r
-\r
- if (!CheckViewParam(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam failed.");\r
- return;\r
- }\r
-\r
- PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
-\r
- if (!(this->*tmpPreProcessView)(hideView, showView)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d %dfailed", showView, hideView);\r
- return;\r
- }\r
- if (hideView != CONNECTPHONE_MAX) {\r
- if (container[hideView] == nullptr) {\r
- return;\r
- }\r
- container[hideView]->SetVisible(false);\r
- }\r
- container[showView]->SetVisible(true);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView:: ChangeView end!!!%d", showView);\r
- Draw();\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: ConnectSelect View\r
- * Create: 2022-03-22\r
- */\r
-#include "connectnewphone/include/ConnectSelectView.h"\r
-#include "wearable_log.h"\r
-#include "UiConfig.h"\r
-#include "connectnewphone/include/ConnectPhonePresenter.h"\r
-#include "PageTransitionMgr.h"\r
-\r
-namespace OHOS {\r
-static ConnectSelectView *g_pConnectSelectView{nullptr};\r
-\r
-ConnectSelectView::ConnectSelectView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ConnectSelectView");\r
- g_pConnectSelectView = this;\r
-}\r
-\r
-ConnectSelectView::~ConnectSelectView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::~ConnectSelectView");\r
- group->RemoveAll();\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
- delete cancelButton;\r
- cancelButton = nullptr;\r
- delete confirmButton;\r
- confirmButton = nullptr;\r
- g_pConnectSelectView = nullptr;\r
-}\r
-\r
-ConnectSelectView *ConnectSelectView::GetInstance()\r
-{\r
- return g_pConnectSelectView;\r
-}\r
-\r
-void ConnectSelectView::ShowUpTitleLabel()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ShowUpTitleLabel");\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView titleLabel new fail");\r
- return;\r
- }\r
- titleLabel->SetPosition(65, 100, 324, 160); // 65:x, 100:y, 324:width, 160:height\r
- titleLabel->SetText(" 将断开已连接的手 机,同一账号的新手机配对会保留个人数 据。是否继续?");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data\r
- titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
- group->Add(titleLabel);\r
- }\r
-}\r
-\r
-void ConnectSelectView::CreateUIButton()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::CreateUIButton");\r
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (clickListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
- return;\r
- }\r
- if (cancelButton == nullptr) {\r
- cancelButton = new UIButton();\r
- if (cancelButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView cancelButton new fail");\r
- return;\r
- }\r
- cancelButton->SetPosition(85, 320, 90, 90); // 85:x, 320:y, 90:width, 90:height\r
- cancelButton->SetViewId(CANCEL_BUTTON);\r
- cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);\r
- cancelButton->SetOnClickListener(clickListener);\r
- group->Add(cancelButton);\r
- }\r
- if (confirmButton == nullptr) {\r
- confirmButton = new UIButton();\r
- if (confirmButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView confirmButton new fail");\r
- return;\r
- }\r
- confirmButton->SetPosition(279, 320, 90, 90); // 279:x, 320:y, 90:width, 90:height\r
- confirmButton->SetViewId(CONFIRM_BUTTON);\r
- confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);\r
- confirmButton->SetOnClickListener(clickListener);\r
- group->Add(confirmButton);\r
- }\r
-}\r
-\r
-UIViewGroup *ConnectSelectView::InitShowUpView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView init");\r
- if (group == nullptr) {\r
- group = new UIViewGroup();\r
- if (group == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
- return nullptr;\r
- }\r
- group->SetPosition(0, 0);\r
- group->SetWidth(HORIZONTAL_RESOLUTION);\r
- group->SetHeight(VERTICAL_RESOLUTION);\r
- }\r
- ShowUpTitleLabel();\r
- CreateUIButton();\r
- UIView::OnDragListener *connectDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
- if (connectDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectDragListener GetInstance fail");\r
- return nullptr;\r
- }\r
- if (PageTransitionMgr::GetInstance().GetTopSlideBackImage() == nullptr) { // support default slide back firstly\r
- group->SetOnDragListener(connectDragListener);\r
- }\r
- group->SetViewId(CONNECT_SELECT_VIEW);\r
- group->SetDraggable(true);\r
- group->SetTouchable(true);\r
- return group;\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-#include "heartrate/include/HeartModel.h"\r
-#include "indoorwalk/include/IndoorWalkPreparedView.h"\r
-#include "indoorwalk/include/IndoorWalkPresenter.h"\r
-#include "main/include/MainViewSample.h"\r
-#include "graphic_service.h"\r
-#include "wearable_log.h"\r
-\r
-#include "main/include/dial/DialModelHeartRate.h"\r
-#include "heartrate/include/HeartChartView.h"\r
-#include "heartrate/include/HeartDetectionPresenter.h"\r
-#include "heartrate/include/HeartRateView.h"\r
-#include "heartrate/include/HeartResultPresenter.h"\r
-\r
-#include "ConfigModel.h"\r
-#include "main/include/dial/DialModelHeartRate.h"\r
-#include "custom_runtime.h"\r
-#include "custom_utils.h"\r
-\r
-#include "health/health_service/health_service.h"\r
-#include <cstdint>\r
-\r
-#ifdef SUPPORT_PPG_SERVICE\r
-#include "ppg_hal.h"\r
-#include "ppg_service.h"\r
-#endif\r
-\r
-#include "settings/include/SettingModel.h"\r
-#include "uiservice/include/ui_service.h"\r
-#include "wearable_log.h"\r
-#include <algorithm>\r
-\r
-#include "clock/include/MainClockView.h"\r
-\r
-#ifdef SUPPORT_BLE_SERVICE\r
-#include "bleEvent.h"\r
-#include "bleInstruct.h"\r
-#include "bleService.h"\r
-#endif\r
-\r
-#include <cmsis_os.h>\r
-#include <cmsis_os2.h>\r
-#include <custom_utils.h>\r
-#include <iostream>\r
-#include <memory>\r
-#include <ohos_types.h>\r
-#include <random>\r
-#include <service/graphic_service.h>\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <sys/stat.h>\r
-#include <unistd.h>\r
-\r
-#ifdef SUPPORT_BATTERY_SERVICE\r
-#include "battery_hal.h"\r
-#endif\r
-\r
-#include "languagecode/LanguageInit.h"\r
-#include "uiservice/include/ui_service.h"\r
-\r
-#include <custom_save_runtime.h>\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#define MAX_UNWEAR_COUNT 2\r
-#define MAX_VALID_HRS_COUNT 10 //最大有效数\r
-#define MAX_DISVALID_HRS_COUNT 15 //最大无效数\r
-#define MIN_DISPLAY_HEART 50 //最新心率\r
-#define DISPLAY_COUNT 0\r
-#define HEARTTEST 1 //[0 开启测试 1 关闭]\r
-#define KEEP_SCREEN_ON_HEART 1\r
-#define HEART_TIMER_DATA 1\r
-\r
-/*佩戴检测结果*/\r
-enum {\r
- SENSOR_WEAR_ON = 0,\r
- SENSOR_WEAR_OFF,\r
- SENSOR_WEAR_UNKNOW,\r
- SENSOR_WEAR_MAX\r
-};\r
-\r
-using namespace OHOS;\r
-#define LEN 32\r
-\r
-static void Notify(void *args, const Topic topic, Request *request);\r
-\r
-Subscriber heartSubscirber = {\r
- .identity = nullptr,\r
- .args = nullptr,\r
- .Notify = Notify,\r
-};\r
-static void ProcessHeartRateUpdate(Request *request);\r
-static void RefreshHeartData();\r
-void save_heart_maxmin();\r
-void HeartDataSubscribeTopic(Topic topic) {\r
- BroadcastApi *broadcastApi = nullptr;\r
- IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME,\r
- BROADCAST_FEATURE_NAME);\r
- if (api == nullptr) {\r
- return;\r
- }\r
- int result =\r
- api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
- if (result != 0 || broadcastApi == nullptr) {\r
- return;\r
- }\r
- int ret = broadcastApi->SubscribeTopic((IUnknown *)broadcastApi, topic,\r
- &heartSubscirber);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartSubscribeTopic ret=%d,topic=%u",\r
- ret, topic);\r
- broadcastApi->Release((IUnknown *)broadcastApi);\r
-}\r
-\r
-void HearDatatUnsubscribeTopic(Topic topic) {\r
- BroadcastApi *broadcastApi = nullptr;\r
- IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME,\r
- BROADCAST_FEATURE_NAME);\r
- if (api == nullptr) {\r
- return;\r
- }\r
- int result =\r
- api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
- if (result != 0 || broadcastApi == nullptr) {\r
- return;\r
- }\r
- broadcastApi->UnsubscribeTopic((IUnknown *)broadcastApi, topic,\r
- &heartSubscirber);\r
- broadcastApi->Release((IUnknown *)broadcastApi);\r
-}\r
-\r
-static void Notify(void *args, const Topic topic, Request *request) {\r
- UNUSED(args);\r
- UNUSED(topic);\r
-\r
- // 训练过程中不需要判断数据准确性,不需要存储心率数据\r
- if (uapi_dev_runtime_get_train_status() == 1 ||\r
- uapi_dev_runtime_get_respiratory_training_status() || request == NULL) {\r
- return;\r
- }\r
- if (request->msgId == TOPIC_EVENT_HEARTRATE_UPDATA) {\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(\r
- &HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance()));\r
- }\r
-}\r
-\r
-static void ProcessHeartRateUpdate(Request *request) {\r
- uint16_t preheart = *reinterpret_cast<uint16_t *>(request->data);\r
-\r
- // 直接处理心率数据,不进行筛选\r
- uint16_t index_ = HeartModel::GetInstance()->GetIndex();\r
- HeartDatas *heartInfo = (HeartDatas *)malloc(sizeof(HeartDatas));\r
- if (heartInfo == NULL) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[Notify] malloc fail");\r
- return;\r
- }\r
-\r
- heartInfo->index = index_;\r
- heartInfo->maxX = index_;\r
- heartInfo->minX = index_;\r
- heartInfo->perSec = preheart;\r
- heartInfo->rest = preheart;\r
- /*最大最小值不为0*/\r
- heartInfo->maxValue = preheart;\r
- heartInfo->minValue = preheart;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "heartRateData=%d%d", heartInfo->index,\r
- preheart);\r
- OHOS::HeartModel::GetInstance()->HeartRatePros(heartInfo);\r
-\r
- free(heartInfo); // 释放内存\r
- heartInfo = nullptr;\r
-}\r
-\r
-static void RefreshHeartData() {\r
- OHOS::HeartModel::GetInstance()->ClearHeartData();\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(\r
- &OHOS::HeartModel::Heart_Update_View, OHOS::HeartModel::GetInstance()));\r
-}\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-namespace OHOS {\r
-void HeartModel::ClearHeartData(void) {\r
- pretime = 0;\r
- entryTimes = 0;\r
- aveCount = 0;\r
- preMaxValue = 0;\r
- preMaxX = NUM_1;\r
- preMinValue = HEART_RATE_LIMIT_UPPER;\r
- preMinX = NUM_1;\r
- countMax = 0;\r
- countMin = 0;\r
- healthDatas.heartRateMax.x = (uint16_t)0XFFFF;\r
- healthDatas.heartRateMax.y = 0;\r
- healthDatas.heartRateMin.x = (uint16_t)0XFFFF;\r
- healthDatas.heartRateMin.y = (uint16_t)0XFFFF;\r
- for (int i = 0; i < HEART_AVE_NUM; i++) {\r
- healthDatas.heartRateAvg[i].x = (uint16_t)0XFFFF;\r
- healthDatas.heartRateAvg[i].y = (uint16_t)0XFFFF;\r
- }\r
- if (HeartRateView::GetInstance() != nullptr) {\r
- HeartRateView::GetInstance()->ClearElectrocardiogram();\r
- }\r
- SetAveHeartRateCount(0);\r
- // GraphicService::GetInstance()->PostGraphicEvent(\r
- // std::bind(&HeartModel::RefreshHeartRateScreen,\r
- // HeartModel::GetInstance(),\r
- // healthDatas.heartRatePerSec, healthDatas.heartRateRest,\r
- // healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));\r
-}\r
-\r
-HeartModel::HeartModel() {\r
- /*初始化读取文件*/\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartModel::HeartModel()");\r
- /*初始化历史文件*/\r
- HealthService::GetInstance()->LoadDailyHeartRate();\r
- /*读取上一次心率数据*/\r
- HeartRateData data;\r
- HealthService::GetInstance()->ReadHeartRateData(data);\r
- currentheart = data.Heart;\r
- timestamp_ms = data.timestamp;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentheart %d timestamp_ms %d",\r
- currentheart, timestamp_ms);\r
- // 更新表盘心率数据\r
- DialModelHeartRate::GetInstance()->UpdateHeartRate(currentheart);\r
-\r
- //读取最大最小值\r
- HealthService::GetInstance()->LoadHeartMaxMin(displayheart_max,\r
- displayheart_min);\r
- // 配置动态数组\r
- SetArrayData();\r
-}\r
-\r
-HeartModel::~HeartModel() {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartModel::~HeartModel()");\r
- HearDatatUnsubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);\r
- HearDatatUnsubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE);\r
- HearDatatUnsubscribeTopic(TOPIC_EVENT_UTCTIME_UPDATE);\r
- HearDatatUnsubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);\r
-}\r
-\r
-HeartModel *HeartModel::GetInstance(void) {\r
- static HeartModel heartModel;\r
- return &heartModel;\r
-}\r
-uint16_t HeartModel::GetIndex() { return index_; }\r
-void HeartModel::SetIndex(uint16_t index) { index_ = index; }\r
-\r
-void HeartModel::Init(void) {\r
- HeartDataSubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);\r
- HeartDataSubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE);\r
- HeartDataSubscribeTopic(TOPIC_EVENT_UTCTIME_UPDATE);\r
- HeartDataSubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);\r
-}\r
-\r
-Point *HeartModel::GetAveHeartRate(void) { return healthDatas.heartRateAvg; }\r
-\r
-void HeartModel::HandleMaxHeart(uint16 coord, uint16 value) {\r
- healthDatas.heartRateMax.x = coord;\r
- healthDatas.heartRateMax.y = value;\r
- // 插入最大心率 countMax 数据个数\r
- if (preMaxValue != healthDatas.heartRateMax.y && aveCount < HEART_AVE_NUM) {\r
- if (preMaxX == healthDatas.heartRateMax.x && countMax < HEART_AVE_NUM) {\r
- healthDatas.heartRateAvg[countMax].y = healthDatas.heartRateMax.y;\r
- } else if (aveCount > NUM_2 && (healthDatas.heartRateMax.x ==\r
- healthDatas.heartRateAvg[aveCount - 1].x)) {\r
- healthDatas.heartRateAvg[aveCount - 1].y = healthDatas.heartRateMax.y;\r
- } else {\r
- healthDatas.heartRateAvg[aveCount] = healthDatas.heartRateMax;\r
- countMax = aveCount;\r
- aveCount++;\r
- }\r
- if (healthDatas.heartRateMax.x != 0) {\r
- if (healthDatas.heartRateAvg[0].x == 0 &&\r
- healthDatas.heartRateAvg[1].x == 0) {\r
- for (int i = 1; i < (aveCount - 1); i++) {\r
- healthDatas.heartRateAvg[i] = healthDatas.heartRateAvg[i + 1];\r
- }\r
- aveCount--;\r
- countMax--;\r
- }\r
- }\r
- }\r
- preMaxValue = healthDatas.heartRateMax.y;\r
- preMaxX = healthDatas.heartRateMax.x;\r
-}\r
-\r
-void HeartModel::HandleMinHeart(uint16 coord, uint16 value) {\r
- // 最小心率\r
- healthDatas.heartRateMin.x = coord;\r
- healthDatas.heartRateMin.y = value;\r
- // 插入最小心率\r
- // avecount 当下有效数据个数,在MaxHeart中也用到,看起来似乎有问题???\r
- // preMinValue 上一个心率最小值\r
- // preMinX 上一个最小值对应的坐标\r
- // 当上一个值与当前值不等,且没有超过总数限制,则进行数据处理\r
- if (preMinValue != healthDatas.heartRateMin.y && aveCount < HEART_AVE_NUM) {\r
-\r
- if (preMinX == healthDatas.heartRateMin.x && countMin < HEART_AVE_NUM) {\r
- // 上一个最小坐标和当前值一致,且数据没超过限制,则直接赋值给有效数据\r
- // countMin 即可\r
- healthDatas.heartRateAvg[countMin].y = healthDatas.heartRateMin.y;\r
- } else if (aveCount > NUM_2 && (healthDatas.heartRateMin.x ==\r
- healthDatas.heartRateAvg[aveCount - 1].x)) {\r
- // 有效数据大于2,且当前x值与原始数据最后一个x一致,最后一个数据赋值\r
- healthDatas.heartRateAvg[aveCount - 1].y = healthDatas.heartRateMin.y;\r
- } else {\r
- healthDatas.heartRateAvg[aveCount] = healthDatas.heartRateMin;\r
- countMin = aveCount;\r
- aveCount++;\r
- }\r
-\r
- // 最初的值一直是0 ,则只显示1个 ,不会在后面增加数据。\r
- if (healthDatas.heartRateMin.x != 0) {\r
- if (healthDatas.heartRateAvg[0].x == 0 &&\r
- healthDatas.heartRateAvg[1].x == 0) {\r
- for (int i = 0; i < (aveCount - 1); i++) {\r
- healthDatas.heartRateAvg[i] = healthDatas.heartRateAvg[i + 1];\r
- }\r
- aveCount--;\r
- countMin--;\r
- }\r
- }\r
- }\r
- preMinValue = healthDatas.heartRateMin.y;\r
- preMinX = healthDatas.heartRateMin.x;\r
-}\r
-\r
-void HeartModel::HeartRatePros(HeartDatas *heartInfo) {\r
- uint16_t perSecHeartRate = 0;\r
- uint16_t restHeartRate = 0;\r
-\r
- // 每秒心率\r
- perSecHeartRate = heartInfo->perSec;\r
- if (perSecHeartRate >= HEART_RATE_LIMIT_LOWER &&\r
- perSecHeartRate <= HEART_RATE_LIMIT_UPPER) {\r
- healthDatas.heartRatePerSec = perSecHeartRate;\r
- }\r
-\r
- // GraphicService::GetInstance()->PostGraphicEvent(\r
- // std::bind(&HeartModel::RefreshHeartRateScreen,\r
- // HeartModel::GetInstance(),\r
- // healthDatas.heartRatePerSec, healthDatas.heartRateRest,\r
- // healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));\r
-}\r
-\r
-uint16_t HeartModel::GetAveHeartRateCount(void) { return aveCount; }\r
-\r
-uint16_t HeartModel::GetHeartRateMax(void) {\r
- return healthDatas.heartRateMax.y;\r
-}\r
-\r
-uint16_t HeartModel::GetHeartRateMin(void) {\r
- return healthDatas.heartRateMin.y;\r
-}\r
-\r
-void HeartModel::SetHeartRatePerSec(uint32 sec) {\r
- healthDatas.heartRatePerSec = sec;\r
- if (HeartRateView::GetInstance() == nullptr) {\r
- return;\r
- }\r
- HeartRateView::GetInstance()->RefreshHeartRatePerSec(\r
- healthDatas.heartRatePerSec);\r
-}\r
-\r
-void HeartModel::SetAveHeartRateCount(uint16_t value) { aveCount = value; }\r
-\r
-void HeartModel::RefreshHeartRateScreen() {\r
- if (MainViewSample::GetInstance() != nullptr &&\r
- HeartChartView::GetInstance() != nullptr) {\r
- if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "HeartChartView::GetInstance() start");\r
- HeartChartView::GetInstance()->UpdateShowHeart();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "HeartChartView::GetInstance() end");\r
- }\r
- }\r
-}\r
-/*----------------------------------状态检测\r
- *----------------------------------*/\r
-\r
-// 重新初始化\r
-void HeartModel::ClearDisplayData() {\r
- /*显示的心率数据清空*/\r
- // currentheart = 0;\r
- // timestamp_ms = 0;\r
- displayheart = 0;\r
- displayheart_max = 0; // 显示最大心率\r
- displayheart_min = 0; // 显示最小心率\r
-}\r
-// 获取心率数据\r
-uint16_t HeartModel::GetHeartdata() { return currentheart; }\r
-\r
-uint16_t HeartModel::GetShowHeartdata() { return displayheart; }\r
-uint16_t HeartModel::GetShowMaxHeartdata() { return displayheart_max; }\r
-uint16_t HeartModel::GetShowMinHeartdata() { return displayheart_min; }\r
-uint32_t HeartModel::GetCheckTime() { return timestamp_ms; }\r
-\r
-void HeartModel::SetCheckTime(uint32_t time) { timestamp_ms = time; }\r
-void HeartModel::SetResult(HeartResult result) { heartresult_ = result; }\r
-HeartResult HeartModel::GetResult() { return heartresult_; }\r
-// 控制心率检测\r
-void HeartModel::Heart_Control(HeartState state, HeartCheck check) {\r
-\r
- //优先级低不对高优先级处理\r
- if (check < checkstate) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "Higher execution instruction exists");\r
- return;\r
- }\r
-\r
- //被动\r
- if (check == HeartCheck::PASSIVITY) {\r
- uapi_dev_runtime_set_hrs_passivity(1);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "uapi_dev_runtime_set_hrs_passivity(1)");\r
- } else {\r
- uapi_dev_runtime_set_hrs_passivity(0);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "uapi_dev_runtime_set_hrs_passivity(0)");\r
- }\r
-\r
- if (state == HeartState::End && heartstate == true) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState End");\r
- //状态数全部清空\r
- valid_counter_ = 0;\r
- disvalid_counter_ = 0;\r
- unwear_counter_ = 0;\r
- display_counter_ = 0;\r
- displayheart = 0;\r
-#ifdef SUPPORT_PPG_SERVICE\r
- ppg_hr_stop();\r
-#endif\r
- heartstate = false;\r
- if (checkstate == HeartCheck::CARDCHECK) {\r
- //重置传感器状态\r
- sensorstate = false;\r
- uapi_dev_runtime_set_heartrate_detect_status(0);\r
- }\r
-#ifdef SYSTEM_LOG_SERVICE\r
- //记录日志\r
- if (checkstate == HeartCheck::PASSIVITY) {\r
- uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_PASSIVE_MEASURE_END);\r
- } else {\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_MEASURE_END);\r
- }\r
-#endif\r
-\r
- // 复原检测状态\r
- checkstate = HeartCheck::RESTSTSTE;\r
- heart_stop_data_timer(); //关闭数据获取\r
- } else if (state == HeartState::Start && heartstate == false) {\r
- /*充电状态下不进行检测*/\r
- bool isCharging = false;\r
- #ifdef SUPPORT_BATTERY_SERVICE\r
- isCharging = get_charge_stat(); // 获取充电状态\r
- #endif\r
- if (isCharging) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "充电不能检测");\r
- return;\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState Start");\r
-#ifdef SUPPORT_PPG_SERVICE\r
- ppg_hr_start();\r
-#endif\r
- heartstate = true;\r
- checkstate = check;\r
-#ifdef SYSTEM_LOG_SERVICE\r
- //记录日志\r
- if (checkstate == HeartCheck::PASSIVITY) {\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_PASSIVE_MEASURE);\r
- } else {\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_MEASURE);\r
- }\r
-#endif\r
- heart_data_timer(); // 开始检测\r
- }\r
-}\r
-// 开始检测\r
-void HeartModel::Heart_Start(HeartCheck check) {\r
- if (!sensorstate) {\r
- displayheart = 0;\r
- SetResult(HeartResult::NOT_TESTED); // 重置检测\r
- Heart_Control(HeartState::Start, check);\r
- // ScreenTurnOn(60 * 1000); // 亮屏操作 600000ms 60秒关闭\r
- sensorstate = true;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始心率检测");\r
- // 设置runtime\r
- if (uapi_dev_runtime_get_heartrate_detect_status() == 0) {\r
- uapi_dev_runtime_set_heartrate_detect_status(1);\r
- ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);\r
- // 主动检测的亮屏60s\r
- heart_start_screen60s_timer();\r
- }\r
- }\r
-}\r
-\r
-// 结束检测\r
-void HeartModel::Heart_Stop() {\r
- valid_counter_ = 0;\r
- disvalid_counter_ = 0;\r
- unwear_counter_ = 0;\r
-\r
- /*主界面卡片检测 或者 被动检测*/\r
- if (checkstate == HeartCheck::PASSIVITY) {\r
- if (heartresult_ == HeartResult::SUCCESS) {\r
- Heart_Save();\r
- /*更新曲线*/\r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(&HeartModel::Heart_Update_View, HeartModel::GetInstance()));\r
- }\r
- /*关闭被动检测*/\r
- Heart_Control(HeartState::End, HeartCheck::PASSIVITY);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "结束周期心率检测");\r
- return;\r
- }\r
- //呼吸训练模式下不进行息屏与保存\r
- if (sensorstate && uapi_dev_runtime_get_respiratory_training_status() != 1) {\r
- // 恢复正常亮屏\r
- HeartModel::GetInstance()->heart_stop_screen60s_timer();\r
- // 取消常亮屏\r
- ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);\r
- //设置runtime\r
-\r
- Heart_Result(); // 处理结果\r
-\r
- //为了防止主界面卡片一直重复开传感器\r
- if (checkstate != HeartCheck::CARDCHECK) {\r
- //重置传感器状态\r
- sensorstate = false;\r
- uapi_dev_runtime_set_heartrate_detect_status(0);\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "本次心率检测结束");\r
- }\r
-}\r
-// 保存检测数据\r
-void HeartModel::Heart_Save() {\r
-\r
- uint32_t timestamp = HeartResultPresenter::GetInstance()->GetCurrentTime();\r
- SetCheckTime(timestamp);\r
-\r
- HealthService::GetInstance()->send_heart_save();\r
-\r
- // 更新最大和最小心率\r
- displayheart_max =\r
- (displayheart_max < currentheart ? currentheart : displayheart_max);\r
-\r
- // 确保最小心率的第一次赋值大于50\r
- if (displayheart_min == 0 && currentheart > MIN_DISPLAY_HEART) {\r
- displayheart_min = currentheart; // 初始化最小心率\r
- } else {\r
- displayheart_min =\r
- (displayheart_min > currentheart && currentheart > MIN_DISPLAY_HEART)\r
- ? currentheart\r
- : displayheart_min;\r
- }\r
-\r
- // 将更新曲线写到这里提前更新\r
- HealthService::GetInstance()->UpdateHourlyHeartRate(timestamp_ms,\r
- currentheart);\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "保存的心率数据:%d%ld",\r
- // currentheart,data.timestamp);\r
-}\r
-\r
-void HeartModel::Heart_Result() {\r
-\r
- if (heartresult_ == HeartResult::SUCCESS) {\r
- // 获取心率提醒状态和阈值\r
- heartRemindState = ConfigModel::GetInstance()->get_configData_int(\r
- ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND);\r
- thresholdValue = ConfigModel::GetInstance()->get_configData_int(\r
- ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE);\r
-\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "心率提醒状态:%d,阈值:%d,當前值:%d",\r
- heartRemindState, thresholdValue, currentheart);\r
-\r
- if (heartRemindState) {\r
- // 获取当前心率状态\r
- thresholdState = ConfigModel::GetInstance()->get_configData_int(\r
- ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN);\r
-\r
- if (currentheart != 0) {\r
- if (thresholdState == 0 && currentheart < thresholdValue) {\r
- // 当前心率低于阈值\r
- heartresult_ = HeartResult::LOW_RESULT;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "检测结果:低结果情况,currentheart=%d,ThresholdValue=%d",\r
- currentheart, thresholdValue);\r
- } else if (thresholdState == 1 && currentheart > thresholdValue) {\r
- // 当前心率高于阈值\r
- heartresult_ = HeartResult::HIGH_RESULT;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "检测结果:高结果情况,currentheart=%d,ThresholdValue=%d",\r
- currentheart, thresholdValue);\r
- }\r
- }\r
- }\r
- }\r
- // 根据结果进行处理\r
- handleHeartResult();\r
-}\r
-// 处理检测结果\r
-void HeartModel::handleHeartResult() {\r
- switch (heartresult_) {\r
- case HeartResult::SUCCESS:\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:成功");\r
- Heart_Save();\r
- // 更新曲线\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "准备更新UI");\r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(&HeartModel::Heart_Update_View, HeartModel::GetInstance()));\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "更新UI完成");\r
- break;\r
-\r
- case HeartResult::NOT_WORN:\r
- case HeartResult::TIMEOUT:\r
- case HeartResult::INVALID_DATA:\r
- logAndChangeSlice(heartresult_);\r
- break;\r
-\r
- case HeartResult::LOW_RESULT:\r
- Heart_Save();\r
- handleLowHeartRate();\r
- break;\r
-\r
- case HeartResult::HIGH_RESULT:\r
- Heart_Save();\r
- handleHighHeartRate();\r
- break;\r
-\r
- default:\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:未知状态");\r
- break;\r
- }\r
-}\r
-//进行日志打印与界面切换\r
-void HeartModel::logAndChangeSlice(HeartResult result) {\r
- const char *resultMsg = (result == HeartResult::NOT_WORN) ? "未佩戴状态"\r
- : (result == HeartResult::TIMEOUT) ? "超时"\r
- : "无效数据";\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:%s情况", resultMsg);\r
- uapi_set_screen_on_api(); // 亮屏\r
- //需要先判断界面 心率卡片界面\r
- if (MainViewSample::GetInstance()) {\r
- if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE)\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_ABNORMAL);\r
- } else\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_ABNORMAL);\r
-}\r
-// 处理低心率情况\r
-void HeartModel::handleLowHeartRate() {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:低结果情况");\r
- HealthState lowHealthState = {HEART_CHECK, LOW, thresholdValue};\r
- HealthService::GetInstance()->SetHealthCurrent(lowHealthState);\r
- uapi_set_screen_on_api(); // 亮屏\r
- if (MainViewSample::GetInstance()) {\r
- if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE)\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_INVALID);\r
- } else\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_INVALID);\r
-}\r
-// 处理高心率情况\r
-void HeartModel::handleHighHeartRate() {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:高结果情况");\r
- HealthState highHealthState = {HEART_CHECK, HIGH, thresholdValue};\r
- HealthService::GetInstance()->SetHealthCurrent(highHealthState);\r
- uapi_set_screen_on_api(); // 亮屏\r
- if (MainViewSample::GetInstance()) {\r
- if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE)\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_INVALID);\r
- } else\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_INVALID);\r
-}\r
-// 设置佩戴状态\r
-void HeartModel::SetWearStatus() {\r
-\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "佩戴状态 %d %d",\r
- uapi_dev_runtime_get_heartrate_detect_status(),\r
- unwear_counter_);\r
-\r
- // 如果处于训练模式,提前返回\r
- if (uapi_dev_runtime_get_train_status() == 1 ||\r
- // uapi_dev_runtime_get_heartrate_detect_status() == 0 ||\r
- uapi_dev_runtime_get_respiratory_training_status())\r
- return;\r
-\r
- unwear_counter_++;\r
-#ifdef SYSTEM_LOG_SERVICE\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_NOT_WEAR);\r
-#endif\r
- // 设置佩戴状态\r
- if (checkstate == HeartCheck::CARDCHECK) {\r
- if (unwear_counter_ > MAX_UNWEAR_COUNT) {\r
- if (MainViewSample::GetInstance()) {\r
- //只有在心率卡片界面才触发\r
- if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE) {\r
- SetResult(HeartResult::NOT_WORN);\r
-#ifdef SYSTEM_LOG_SERVICE\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_ERROR_NOT_WEAR);\r
-#endif\r
- Heart_Stop();\r
- }\r
- }\r
- }\r
- } else {\r
- SetResult(HeartResult::NOT_WORN);\r
-#ifdef SYSTEM_LOG_SERVICE\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_ERROR_NOT_WEAR);\r
-#endif\r
- Heart_Stop();\r
- }\r
-}\r
-\r
-void HeartModel::UpHeartdata(uint16_t heart) {\r
- // 如果处于训练模式,提前返回\r
- if (uapi_dev_runtime_get_train_status() == 1)\r
- return;\r
-\r
- int max_valid_count = 0;\r
-\r
- // if (heart != 0) {\r
- // if (display_counter_ >= DISPLAY_COUNT) {\r
- // displayheart = heart;\r
- // } else {\r
- // displayheart = 0;\r
- // }\r
- // display_counter_++;\r
- // } else {\r
- // displayheart = 0;\r
- // }\r
-\r
- displayheart = heart;\r
-\r
- // 更新心率和计数器\r
- if (displayheart != 0) {\r
- currentheart = displayheart; // 更新当前心率\r
- valid_counter_++; // 增加有效计数器\r
- disvalid_counter_ = 0; // 清空无效计数器\r
-#ifdef SYSTEM_LOG_SERVICE\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_VALID_VALUE);\r
-#endif\r
- } else {\r
- disvalid_counter_++; // 增加无效计数器\r
- valid_counter_ = 0; // 清零有效计数器\r
-#ifdef SYSTEM_LOG_SERVICE\r
- uapi_save_runtime_log(RUNTIME_LOG_HEART_INVALID_VALUE);\r
-#endif\r
- }\r
-\r
- // 检查无效计数器是否达标\r
- if (uapi_dev_runtime_get_sleep_monitoring_status()) //睡眠监测模式下,增加未佩戴个数最大值,避免误判\r
- max_valid_count = MAX_DISVALID_HRS_COUNT * 2;\r
- else\r
- max_valid_count = MAX_DISVALID_HRS_COUNT;\r
-\r
- if (disvalid_counter_ >= max_valid_count) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "检测结果:无效数达标 disvalid_counter:%d", disvalid_counter_);\r
- SetResult(HeartResult::INVALID_DATA); // 标记为无效数据\r
-#ifdef SYSTEM_LOG_SERVICE\r
- uapi_save_runtime_log(RUNTIME_LOG_HEAR_ERROR_INVALID_VALUE);\r
-#endif\r
- Heart_Stop();\r
- return;\r
- }\r
-\r
- // 检查有效计数器是否达标\r
- if (valid_counter_ >= MAX_VALID_HRS_COUNT) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "检测结果:成功 valid_counter:%d currentheart:%d",\r
- valid_counter_, currentheart);\r
-#ifdef SYSTEM_LOG_SERVICE\r
- uapi_save_runtime_log(RUNTIME_LOG_HEAR_SUCCESS);\r
-#endif\r
- SetResult(HeartResult::SUCCESS); // 标记为成功检测\r
- Heart_Stop();\r
- return;\r
- }\r
-\r
- // 刷新心率显示\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "[heart data update displayheart%d displayheart_max%d "\r
- "displayheart_min%d]",\r
- displayheart, displayheart_max, displayheart_min);\r
-\r
- // GraphicService::GetInstance()->PostGraphicEvent(\r
- // std::bind(&HeartModel::RefreshHeartRateScreen,\r
- // HeartModel::GetInstance(),\r
- // displayheart));\r
-}\r
-\r
-void HeartModel::Heart_Update_View(void) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "更新心率界面");\r
- int hour = HealthService::GetInstance()->GetCurrentHour();\r
- if (HeartRateView::GetInstance() != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "更新主界面卡片");\r
- HeartRateView::GetInstance()->Update_data_Chart(hour);\r
- }\r
- if (HeartChartView::GetInstance() != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "更新测量心率卡片");\r
- HeartChartView::GetInstance()->Update_data_Chart(hour);\r
- }\r
-}\r
-\r
-void HeartModel::CleanAllData(void) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Nextday!");\r
- if (MainViewSample::GetInstance() != nullptr &&\r
- HeartRateView::GetInstance() != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "更新主界面心率卡片");\r
- HeartRateView::GetInstance()->CleanAllDataView();\r
- }\r
- if (HeartChartView::GetInstance() != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "更新测量心率卡片");\r
- HeartChartView::GetInstance()->CleanAllDataView();\r
- }\r
-}\r
-\r
-// 配置5个动态心率数据\r
-// 最大 最小\r
-void HeartModel::SetArrayData() {\r
- // 如果没有进行心率检测,则默认为0-220\r
- if (displayheart_max == 0 || displayheart_min == 0) {\r
- dynamic_heartrate[0] = 0;\r
- dynamic_heartrate[1] = 40;\r
- dynamic_heartrate[2] = 100;\r
- dynamic_heartrate[3] = 160;\r
- dynamic_heartrate[4] = 220;\r
- return; // 直接返回\r
- }\r
-\r
- // 计算心率范围并添加缓冲\r
- uint16_t adjusted_min =\r
- (displayheart_min > 10) ? (displayheart_min / 2) : displayheart_min;\r
- uint16_t adjusted_max =\r
- (displayheart_max < 210) ? (displayheart_max + 10) : displayheart_max;\r
-\r
- uint16_t range = adjusted_max - adjusted_min;\r
- uint16_t interval = range / 4; // 每个部分的宽度\r
-\r
- // 设置动态心率数据\r
- dynamic_heartrate[0] = adjusted_min;\r
- dynamic_heartrate[1] = adjusted_min + interval;\r
- dynamic_heartrate[2] = adjusted_min + 2 * interval;\r
- dynamic_heartrate[3] = adjusted_min + 3 * interval;\r
- dynamic_heartrate[4] = adjusted_max;\r
-\r
- // 确保所有值为整数\r
- for (int i = 0; i < 5; i++) {\r
- dynamic_heartrate[i] = static_cast<uint16_t>(round(dynamic_heartrate[i]));\r
- }\r
-\r
- // 打印动态心率数据\r
- for (int i = 0; i < 5; i++) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "dynamic_heartrate[%d]=%d", i,\r
- dynamic_heartrate[i]);\r
- }\r
-}\r
-// 获取动态心率配置数组\r
-uint16_t *HeartModel::GetArrayData() { return dynamic_heartrate; }\r
-\r
-// 获取检测字符串\r
-// 获取检测字符串\r
-// TODO: 适配多国语言\r
-std::string HeartModel::GetCheckString() {\r
- std::string check_string = "检测结果未知";\r
-\r
- // 获取检测数据\r
- if (currentheart == 0) {\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = "暂无检测数据";\r
- } else {\r
- check_string = "No detection data is available";\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测数据:%s", check_string.c_str());\r
- return check_string;\r
- }\r
-\r
- // 获取目前的时间戳\r
- uint32_t currentTime;\r
- if (uapi_get_timestampe_ss(¤tTime) != ERRCODE_SUCC) {\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = "获取当前时间失败";\r
- } else {\r
- check_string = "Get time failed";\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "获取当前时间失败");\r
- return check_string;\r
- }\r
-\r
- // 检查时间戳是否有效\r
- if (timestamp_ms == 0) {\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = std::to_string(currentheart) + " " + "时间无效,无法检测";\r
- } else {\r
- check_string =\r
- std::to_string(currentheart) + " " + "Invalid time, cannot detect";\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "时间戳无效,无法检测:%s",\r
- check_string.c_str());\r
- return check_string;\r
- }\r
-\r
- // 进行时间戳相减计算\r
- uint32_t diff = currentTime - timestamp_ms;\r
- uint32_t diff_min = diff / 60;\r
- uint32_t diff_hour = diff_min / 60;\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前时间:%d, 上次检测时间:%d",\r
- currentTime, timestamp_ms);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "时间差(秒):%d, 时间差(分钟):%d, 时间差(小时):%d", diff,\r
- diff_min, diff_hour);\r
-\r
- // 根据时间差生成检测字符串\r
- if (diff_min < 1) {\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = std::to_string(currentheart) + "次/分 " + "刚刚检测"; //\r
- } else {\r
- check_string = std::to_string(currentheart) + " bpm " + "Just detected";\r
- }\r
- } else if (diff_hour < 1) { // Within one hour\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = std::to_string(currentheart) + "次/分 " +\r
- std::to_string(diff_min) + "分钟前";\r
- } else {\r
- check_string = std::to_string(currentheart) + " bpm " +\r
- std::to_string(diff_min) + " minutes ago";\r
- }\r
- } else {\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = std::to_string(currentheart) + "次/分 " + "超过一个小时前";\r
- } else {\r
- check_string =\r
- std::to_string(currentheart) + " bpm " + "More than an hour ago";\r
- }\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测结果:%s", check_string.c_str());\r
- return check_string; // Return the final string\r
-}\r
-\r
-#if KEEP_SCREEN_ON_HEART\r
-/////////////////////////////////////////亮屏定时器////////////////////////////////////////////\r
-// 声明定时器变量\r
-static osTimerId_t g_screen60s_timer = nullptr;\r
-static uint16_t SCREEN_60S_TIME = 60;\r
-static void heart_start_screen60s_timer_callbackProc(int data) {\r
- WEARABLE_LOGD(\r
- WEARABLE_LOG_MODULE_APP,\r
- "HeartModel::heart_start_screen60s_timer_callbackProc,time = %d",\r
- SCREEN_60S_TIME);\r
- SCREEN_60S_TIME -= 30;\r
- WEARABLE_LOGD(\r
- WEARABLE_LOG_MODULE_APP,\r
- "HeartModel::heart_start_screen60s_timer_callbackProc,time = %d",\r
- SCREEN_60S_TIME);\r
- if (SCREEN_60S_TIME <= 0) {\r
- // 60s后息屏停止定时\r
- HeartModel::GetInstance()->heart_stop_screen60s_timer();\r
- // 取消常亮屏\r
- ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "heart_stop_screen60s_timer");\r
- }\r
-}\r
-static void heart_start_screen60s_timer_callback(int data) {\r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(heart_start_screen60s_timer_callbackProc, data));\r
-}\r
-void HeartModel::heart_start_screen60s_timer(uint32_t interval) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "HeartModel::heart_start_screen60s_timer");\r
- /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回\r
- * ------------------------- */\r
- if (g_screen60s_timer != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Timer already exists!!");\r
- return;\r
- }\r
- /* --------------------------------- 2.创建定时器\r
- * -------------------------------- */\r
- g_screen60s_timer =\r
- osTimerNew((osTimerFunc_t)heart_start_screen60s_timer_callback,\r
- osTimerPeriodic, nullptr, nullptr);\r
- // 检查定时器创建是否成功\r
- if (g_screen60s_timer == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!");\r
- return;\r
- }\r
- /* ----------------------------- 3.将毫秒转换为系统时钟节拍数\r
- * ---------------------------- */\r
- int tick = osMs2Tick(interval);\r
- /* --------------------------------- 4.启动定时器\r
- * -------------------------------- */\r
- osStatus_t ret = osTimerStart(g_screen60s_timer, tick);\r
- /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为\r
- * nullptr -------------------- */\r
- if (ret != osOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!",\r
- ret);\r
- if (g_screen60s_timer != nullptr) {\r
- ret = osTimerDelete(g_screen60s_timer);\r
- }\r
- g_screen60s_timer = nullptr;\r
- return;\r
- }\r
-}\r
-void HeartModel::heart_stop_screen60s_timer(void) {\r
- // 检查定时器是否存在\r
- if (g_screen60s_timer != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "HeartModel::heart_stop_screen60s_timer");\r
- osTimerStop(g_screen60s_timer);\r
- // 删除定时器并置为 nullptr\r
- osStatus_t ret = osTimerDelete(g_screen60s_timer);\r
- if (ret != osOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "osTimerDelete failed, ret = %lx!!", ret);\r
- }\r
- g_screen60s_timer = nullptr;\r
- SCREEN_60S_TIME = 60;\r
- }\r
-}\r
-void HeartModel::reset_heart_screen60s_timer_time() {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reset_heart_screen60s_timer_time");\r
- SCREEN_60S_TIME = 60;\r
- if (nullptr == g_screen60s_timer) {\r
- ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 重新常亮屏\r
- heart_start_screen60s_timer(); // 开启定时器\r
- }\r
-}\r
-#endif\r
-//////////////////////////////////////////////////////////////////////////////////\r
-#if HEART_TIMER_DATA\r
-// 声明定时器变量\r
-static osTimerId_t g_data_timer = nullptr;\r
-\r
-static void heart_data_callbackProc(int data) {\r
- //更新佩戴\r
- uint8_t wear = 1;\r
-#ifdef SUPPORT_PPG_SERVICE\r
- wear = ppg_get_wear_status();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"heart_data_callbackProc::hrs = %d\n", hrs);\r
-#endif\r
- if (wear == 0) {\r
- OHOS::HeartModel::GetInstance()->SetWearStatus();\r
- }\r
- //更新心率\r
- uint8_t hrs = 0;\r
-#ifdef SUPPORT_PPG_SERVICE\r
- hrs = ppg_get_hrs();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"heart_data_callbackProc::hrs = %d\n", hrs);\r
-#endif\r
- OHOS::HeartModel::GetInstance()->UpHeartdata(hrs);\r
- //打印佩戴与心率\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "wear = %d, hrs = %d\n", wear, hrs);\r
-}\r
-static void heart_data_timer_callback(int data) {\r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(heart_data_callbackProc, data));\r
-}\r
-void HeartModel::heart_data_timer(uint32_t interval) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "HeartModel::heart_data_timer");\r
- if (g_data_timer != nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Timer already exists!!");\r
- return;\r
- }\r
- g_data_timer = osTimerNew((osTimerFunc_t)heart_data_timer_callback,\r
- osTimerPeriodic, nullptr, nullptr);\r
- if (g_data_timer == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!");\r
- return;\r
- }\r
- int tick = osMs2Tick(interval);\r
- osStatus_t ret = osTimerStart(g_data_timer, tick);\r
- if (ret != osOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!",\r
- ret);\r
- if (g_data_timer != nullptr) {\r
- ret = osTimerDelete(g_data_timer);\r
- }\r
- g_data_timer = nullptr;\r
- return;\r
- }\r
-}\r
-void HeartModel::heart_stop_data_timer(void) {\r
- // 检查定时器是否存在\r
- if (g_data_timer != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "HeartModel::heart_stop_data_timer");\r
- osTimerStop(g_data_timer);\r
- // 删除定时器并置为 nullptr\r
- osStatus_t ret = osTimerDelete(g_data_timer);\r
- if (ret != osOK) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "osTimerDelete failed, ret = %lx!!", ret);\r
- }\r
- g_data_timer = nullptr;\r
- }\r
-}\r
-#endif\r
-} // namespace OHOS\r
+++ /dev/null
-/*\r
- * Copyright (c) 2024 CompanyNameMagicTag.\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#include "scale_item_adapter.h"\r
-#include "common/image_cache_manager.h"\r
-#include "components/ui_transform_group.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_label_ext.h"\r
-#include "graphic_config.h"\r
-#include "ui_test_list_fps/ui_list_fps_res.h"\r
-#include "securec.h"\r
-\r
-namespace OHOS {\r
-class ItemContainer : public UITransformGroup {\r
-public:\r
- ItemContainer() : leftImg_(nullptr), label_(nullptr), rightImg_(nullptr)\r
- {\r
- SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- }\r
-\r
- ~ItemContainer() override\r
- {\r
- ClearRes();\r
- }\r
-\r
- void ClearRes()\r
- {\r
- RemoveAll();\r
- if (leftImg_ != nullptr) {\r
- delete leftImg_;\r
- leftImg_ = nullptr;\r
- }\r
- if (label_ != nullptr) {\r
- delete label_;\r
- label_ = nullptr;\r
- }\r
- if (rightImg_ != nullptr) {\r
- delete rightImg_;\r
- rightImg_ = nullptr;\r
- }\r
- }\r
-\r
- bool InitContainer()\r
- {\r
- if (leftImg_ == nullptr) {\r
- leftImg_ = new UIImageView();\r
- if (leftImg_ == nullptr) {\r
- return false;\r
- }\r
- }\r
- leftImg_->SetResizeMode(UIImageView::ImageResizeMode::CENTER);\r
-\r
- if (label_ == nullptr) {\r
- label_ = new UILabelExt();\r
- if (label_ == nullptr) {\r
- ClearRes();\r
- return false;\r
- }\r
- }\r
- label_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- label_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40: item font size\r
-\r
- if (rightImg_ == nullptr) {\r
- rightImg_ = new UIImageView();\r
- if (rightImg_ == nullptr) {\r
- ClearRes();\r
- return false;\r
- }\r
- }\r
- rightImg_->SetResizeMode(UIImageView::ImageResizeMode::CENTER);\r
-\r
- Add(label_);\r
- Add(leftImg_);\r
- Add(rightImg_);\r
- return true;\r
- }\r
-\r
- UIImageView* GetLeftImageView()\r
- {\r
- return leftImg_;\r
- }\r
-\r
- UILabelExt* GetLabelView()\r
- {\r
- return label_;\r
- }\r
-\r
- UIImageView* GetRightImgView()\r
- {\r
- return rightImg_;\r
- }\r
-\r
- ItemContainer(const ItemContainer &) = delete;\r
- ItemContainer &operator=(const ItemContainer &) = delete;\r
-\r
-private:\r
- UIImageView* leftImg_;\r
- UILabelExt* label_;\r
- UIImageView* rightImg_;\r
-};\r
-\r
-ScaleItemAdapter::~ScaleItemAdapter()\r
-{\r
- ClearData();\r
-}\r
-\r
-uint16_t ScaleItemAdapter::GetCount()\r
-{\r
- return nodeList_.Size();\r
-}\r
-\r
-void ScaleItemAdapter::ClearData()\r
-{\r
- ListNode<ItemDataNode*>* node = nodeList_.Begin();\r
- while (node != nodeList_.End()) {\r
- if (node->data_ != nullptr) {\r
- if (node->data_->txt != nullptr) {\r
- UIFree(node->data_->txt);\r
- node->data_->txt = nullptr;\r
- }\r
- UIFree(node->data_);\r
- node->data_ = nullptr;\r
- }\r
- node = node->next_;\r
- }\r
- ImageCacheManager::GetInstance().UnloadAllInMultiRes(LIST_FPS);\r
-}\r
-\r
-void ScaleItemAdapter::FreeNode(ItemDataNode* node)\r
-{\r
- if (node != nullptr) {\r
- if (node->txt != nullptr) {\r
- UIFree(node->txt);\r
- node->txt = nullptr;\r
- }\r
- UIFree(node);\r
- node = nullptr;\r
- }\r
-}\r
-\r
-void ScaleItemAdapter::SetData(const List<ItemDataNode*>* data)\r
-{\r
- if (data == nullptr) {\r
- return;\r
- }\r
- if (!nodeList_.IsEmpty()) {\r
- ClearData();\r
- }\r
- ListNode<ItemDataNode*>* node = data->Begin();\r
- while (node != data->End()) {\r
- ItemDataNode* tmpNode = static_cast<ItemDataNode *>(UIMalloc(sizeof(ItemDataNode)));\r
- if (tmpNode == nullptr) {\r
- return;\r
- }\r
-\r
- tmpNode->resId = node->data_->resId;\r
- uint32_t len = strlen(node->data_->txt);\r
- tmpNode->txt = static_cast<char*>(UIMalloc(len + 1));\r
- if (tmpNode->txt == nullptr) {\r
- FreeNode(tmpNode);\r
- return;\r
- }\r
- if (memcpy_s(tmpNode->txt, len + 1, node->data_->txt, len) != EOK) {\r
- FreeNode(tmpNode);\r
- return;\r
- }\r
- tmpNode->txt[len] = '\0';\r
- tmpNode->lineBreakMode = node->data_->lineBreakMode;\r
- tmpNode->imgInfo = nullptr;\r
-\r
- nodeList_.PushBack(tmpNode);\r
- node = node->next_;\r
- }\r
-}\r
-\r
-UIView* ScaleItemAdapter::GetView(UIView* inView, int16_t index)\r
-{\r
- if (nodeList_.IsEmpty() || index > nodeList_.Size() - 1 || index < 0) {\r
- return nullptr;\r
- }\r
-\r
- ListNode<ItemDataNode*>* node = nodeList_.Begin();\r
- for (uint16_t i = 0; i < index; i++) {\r
- node = node->next_;\r
- }\r
- ItemContainer* item = nullptr;\r
- if (inView == nullptr) {\r
- item = new ItemContainer();\r
- if (item == nullptr) {\r
- return nullptr;\r
- }\r
- if (!item->InitContainer()) {\r
- delete item;\r
- return nullptr;\r
- }\r
- item->Resize(width_, height_);\r
-\r
- UIImageView* leftImg = item->GetLeftImageView();\r
- leftImg->SetPosition(imageRect_.GetX(), imageRect_.GetY(), imageRect_.GetWidth(), imageRect_.GetHeight());\r
-\r
- UILabelExt* label = item->GetLabelView();\r
- label->SetPosition(labelRect_.GetX(), labelRect_.GetY(), labelRect_.GetWidth(), labelRect_.GetHeight());\r
-\r
- UIImageView* rightImg = item->GetRightImgView();\r
- rightImg->SetPosition(labelRect_.GetX() + labelRect_.GetWidth(),\r
- imageRect_.GetY(), imageRect_.GetWidth(), imageRect_.GetHeight());\r
- } else {\r
- item = static_cast<ItemContainer*>(inView);\r
- }\r
-\r
- if (item != nullptr) {\r
- UIImageView* leftImg = item->GetLeftImageView();\r
- if (leftImg != nullptr) {\r
- if (node->data_->imgInfo == nullptr) {\r
- node->data_->imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(node->data_->resId, LIST_FPS);\r
- }\r
- leftImg->SetSrc(node->data_->imgInfo);\r
- }\r
-\r
- UILabelExt* label = item->GetLabelView();\r
- if (label != nullptr) {\r
- label->SetText(node->data_->txt);\r
- label->SetLineBreakMode(node->data_->lineBreakMode);\r
- label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- }\r
-\r
- UIImageView* rightImg = item->GetRightImgView();\r
- if (rightImg != nullptr) {\r
- if (arrowImg_ == nullptr) {\r
- arrowImg_ = ImageCacheManager::GetInstance().LoadSingleRes(RES_PATH"left_arrow.bin");\r
- }\r
- rightImg->SetSrc(arrowImg_);\r
- }\r
-\r
- item->SetViewIndex(index);\r
- }\r
- return item;\r
-}\r
-\r
-void ScaleItemAdapter::ItemResize(uint16_t w, uint16_t h)\r
-{\r
- width_ = w;\r
- height_ = h;\r
-}\r
-\r
-void ScaleItemAdapter::SetLabelPosition(int16_t x, int16_t y, uint16_t w, uint16_t h)\r
-{\r
- labelRect_.SetPosition(x, y);\r
- labelRect_.SetWidth(w);\r
- labelRect_.SetHeight(h);\r
-}\r
-\r
-void ScaleItemAdapter::SetImagePosition(int16_t x, int16_t y, uint16_t w, uint16_t h)\r
-{\r
- imageRect_.SetPosition(x, y);\r
- imageRect_.SetWidth(w);\r
- imageRect_.SetHeight(h);\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2024 CompanyNameMagicTag.\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-#ifndef SCALE_ITEM_ADAPTER_H\r
-#define SCALE_ITEM_ADAPTER_H\r
-#include "components/abstract_adapter.h"\r
-#include "gfx_utils/list.h"\r
-#include "gfx_utils/vector.h"\r
-\r
-namespace OHOS {\r
-struct ItemDataNode {\r
- int resId;\r
- char* txt;\r
- uint8_t lineBreakMode;\r
- ImageInfo* imgInfo;\r
-};\r
-\r
-class ScaleItemAdapter : public AbstractAdapter {\r
-public:\r
- ScaleItemAdapter() : width_(0), height_(0), arrowImg_(nullptr) {}\r
- ~ScaleItemAdapter() override;\r
-\r
- UIView* GetView(UIView* inView, int16_t index) override;\r
- uint16_t GetCount() override;\r
- void SetData(const List<ItemDataNode*>* data);\r
-\r
- void ItemResize(uint16_t w, uint16_t h);\r
- void SetLabelPosition(int16_t x, int16_t y, uint16_t w, uint16_t h);\r
- void SetImagePosition(int16_t x, int16_t y, uint16_t w, uint16_t h);\r
-private:\r
- void ClearData(void);\r
- void FreeNode(ItemDataNode* node);\r
- List<ItemDataNode*> nodeList_;\r
- uint16_t width_;\r
- uint16_t height_;\r
- Rect imageRect_;\r
- Rect labelRect_;\r
- ImageInfo* arrowImg_;\r
-};\r
-} // namespace OHOS\r
-#endif // SCALE_ITEM_ADAPTER_H\r
+++ /dev/null
-/*\r
- * Copyright (c) 2024 CompanyNameMagicTag.\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#include "ui_test_scale_list.h"\r
-#include "ui_test_list_fps/ui_list_fps_res.h"\r
-#include "graphic_config.h"\r
-#include "securec.h"\r
-\r
-namespace OHOS {\r
-static const int16_t LIST_WIDTH = 454;\r
-static const int16_t LIST_HEIGHT = 454;\r
-static const uint16_t ITEM_WIDTH = 400;\r
-static const uint16_t ITEM_HEIGHT = 100;\r
-static const uint16_t IMAGE_WIDTH = 50;\r
-static const uint16_t IMAGE_HEIGHT = 50;\r
-static const uint16_t LABEL_WIDTH = 300;\r
-static const uint16_t LABEL_HEIGHT = 100;\r
-static const uint16_t SCALE_FACTOR = 400;\r
-static ItemDataNode g_itemNode[] = {\r
- {APPLIST_ALARM, "闹钟", UILabel::LINE_BREAK_ELLIPSIS},\r
- {BLUETOOTH_TITLE, "蓝牙", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_CALLER_IMAGE, "通话记录", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_COMPASS_IMAGE, "指南针", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_SETTING, "设置", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_SPO2, "血氧饱和度", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_VOCASSIST_IMAGE, "语音助手", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_ALARM, "长文本滚动测试ABCD", UILabel::LINE_BREAK_MARQUEE},\r
- {APPLIST_ALARM, "闹钟", UILabel::LINE_BREAK_ELLIPSIS},\r
- {BLUETOOTH_TITLE, "蓝牙", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_CALLER_IMAGE, "通话记录", UILabel::LINE_BREAK_ELLIPSIS},\r
- {APPLIST_COMPASS_IMAGE, "指南针", UILabel::LINE_BREAK_ELLIPSIS}\r
-};\r
-\r
-static bool TransformItemBaseOnPosition(UITransformList* list, UIView* item)\r
-{\r
- if (list == nullptr || item == nullptr) {\r
- return false;\r
- }\r
- if (item->GetViewType() != UI_TRANSFORM_GROUP) {\r
- return false;\r
- }\r
- UITransformGroup* group = dynamic_cast<UITransformGroup*>(item);\r
- if (group == nullptr) {\r
- return false;\r
- }\r
- int16_t w = group->GetWidth();\r
- int16_t h = group->GetHeight();\r
- if (list->GetDirection() == UIList::VERTICAL) {\r
- int16_t midY = list->GetY() + (list->GetHeight() >> 1);\r
- int16_t y = group->GetY();\r
- int offset = (y + (h >> 1) - midY);\r
- int temp = EasingEquation::SineEaseIn(0, SCALE_FACTOR, abs(offset), SCALE_FACTOR);\r
- float scale = 1.0 - (static_cast<float>(temp) / SCALE_FACTOR);\r
- group->Scale(Vector2<float>(scale, scale), Vector2<float>(w >> 1, h >> 1));\r
- if ((y <= midY) && (y + group->GetHeight() >= midY)) {\r
- return true;\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-void UITestScaleList::SetUp()\r
-{\r
- if (data_ == nullptr) {\r
- data_ = new List<ItemDataNode*>();\r
- if (data_ == nullptr) {\r
- return;\r
- }\r
- for (uint8_t i = 0; i < (sizeof(g_itemNode) / sizeof(ItemDataNode)); ++i) {\r
- data_->PushBack(&g_itemNode[i]);\r
- }\r
- }\r
-}\r
-\r
-void UITestScaleList::TearDown()\r
-{\r
- if (data_ != nullptr) {\r
- data_->Clear();\r
- delete data_;\r
- data_ = nullptr;\r
- }\r
- if (adapter_ != nullptr) {\r
- delete adapter_;\r
- adapter_ = nullptr;\r
- }\r
- if (list_ != nullptr) {\r
- delete list_;\r
- list_ = nullptr;\r
- }\r
-}\r
-\r
-UIView* UITestScaleList::GetTestView()\r
-{\r
- UIScaleListTest();\r
- return list_;\r
-}\r
-\r
-void UITestScaleList::UIScaleListTest()\r
-{\r
- adapter_ = new ScaleItemAdapter();\r
- if (adapter_ == nullptr) {\r
- TearDown();\r
- return;\r
- }\r
- adapter_->ItemResize(ITEM_WIDTH, ITEM_HEIGHT);\r
- adapter_->SetLabelPosition(IMAGE_WIDTH, 0, LABEL_WIDTH, LABEL_HEIGHT);\r
- adapter_->SetImagePosition(0, 25, IMAGE_WIDTH, IMAGE_HEIGHT); // 25:image start pos y\r
- adapter_->SetData(data_);\r
-\r
- if (list_ == nullptr) {\r
- list_ = new UITransformList();\r
- }\r
- list_->SetPosition(0, 0, LIST_WIDTH, LIST_HEIGHT);\r
- list_->SetItemTransformFunc(&TransformItemBaseOnPosition);\r
- list_->SetAdapter(adapter_);\r
- list_->SetThrowDrag(true);\r
- list_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
- list_->SetMaxScrollDistance(1000); // 1000: max scroll distance\r
- list_->SetSwipeACCLevel(200); // 200: compensation distance\r
- list_->SetDragACCLevel(5); // 5: drag acceleration\r
- list_->SetYScrollBarVisible(true);\r
-\r
- list_->EnableAutoAlign(false);\r
- list_->SetSelectPosition(LIST_HEIGHT / 2); // 2: divisor\r
- list_->EnableCrossDragBack(false);\r
- list_->SetElastic(true);\r
- list_->SetReboundSize(LIST_HEIGHT / 2); // 2: divisor\r
- list_->SetItemSpace(30); // 30: item space\r
- list_->SetAutoAlignTime(300); // 300: align time\r
- list_->SetScrollBlankSize(LIST_HEIGHT / 2); // 2: divisor\r
- list_->SetScrollBlankSize(LIST_HEIGHT / 2 - ITEM_HEIGHT / 2, UIAbstractScroll::Direction::BOTTOM);\r
- list_->SetReboundSize(0, UIAbstractScroll::Direction::BOTTOM);\r
- list_->SetDragFunc(EasingEquation::QuadEaseOut);\r
-}\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2024 CompanyNameMagicTag.\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-#ifndef UI_TEST_SCALEABEL_LIST_H\r
-#define UI_TEST_SCALEABEL_LIST_H\r
-\r
-#include "graphic_config.h"\r
-#include "components/ui_transform_list.h"\r
-#include "ui_test.h"\r
-#include "ui_test_transform_list/scale_item_adapter.h"\r
-\r
-namespace OHOS {\r
-class UITestScaleList : public UITest {\r
-public:\r
- UITestScaleList() : list_(nullptr), data_(nullptr), adapter_(nullptr) {}\r
- ~UITestScaleList() override {}\r
- void SetUp() override;\r
- void TearDown() override;\r
- UIView* GetTestView() override;\r
- void UIScaleListTest();\r
-\r
-private:\r
- UITransformList* list_;\r
- List<ItemDataNode*>* data_;\r
- ScaleItemAdapter* adapter_;\r
-};\r
-} // namespace OHOS\r
-#endif // UI_TEST_SCALEABEL_LIST_H
\ No newline at end of file
+++ /dev/null
-文件夹1201patch合并提交
\ No newline at end of file
+++ /dev/null
-set(COMPONENT_NAME "sensor_hdi")
-set(MODULE_NAME "ohos")
-set(AUTO_DEF_FILE_ID TRUE)
-
-set(PUBLIC_HEADER
-)
-
-set(PRIVATE_HEADER
- ${ROOT_DIR}/application/wearable/ohos_deps
- ${CMAKE_CURRENT_SOURCE_DIR}/../interfaces/include
- ${CMAKE_CURRENT_SOURCE_DIR}/include
-)
-
-set(SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/src/sensor_log.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/sensor_manager.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/sensor_controller.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/sensor_thread.c
-)
-
-set(COMPONENT_PUBLIC_CCFLAGS
-)
-
-set(COMPONENT_CCFLAGS
- -Wno-error
- -Wno-unused-parameter
- -fno-exceptions
- -fno-unwind-tables
- -fno-asynchronous-unwind-tables
- -Wno-undef
- -Wno-bitwise-op-parentheses
- -Wno-shift-op-parentheses
- -nostdlibinc
- -nostdinc
- -nostdlib
- -Wno-error=unused-function
-)
-
-
-set(WHOLE_LINK
- true
-)
-
-set(MAIN_COMPONENT
- false
-)
-
-set(AUTO_ADD_PATH
- false
-)
-
-set(PUBLIC_DEFINES
-)
-
-set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT")
-set(PRIVATE_DEFINES
- ${CDEFINES}
-)
-
-build_component()
+++ /dev/null
-/*
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef HDI_SENSOR_COMMON_H
-#define HDI_SENSOR_COMMON_H
-
-#include <stdio.h>
-#include "sensor_log.h"
-
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
-#endif
-
-#define CHECK_NULL_PTR_RETURN_VALUE(ptr, ret) do { \
- if ((ptr) == NULL) { \
- HILOG_ERROR(HILOG_MODULE_SEN, "pointer is null and return ret:%d", ret); \
- return (ret); \
- } \
-} while (0)
-
-#define CHECK_NULL_PTR_RETURN(ptr) do { \
- if ((ptr) == NULL) { \
- HILOG_ERROR(HILOG_MODULE_SEN, "pointer is null and return"); \
- return; \
- } \
-} while (0)
-
-#endif /* HDI_SENSOR_COMMON_H */
+++ /dev/null
-/*
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef HDI_SENSOR_CONTROLLER_H
-#define HDI_SENSOR_CONTROLLER_H
-
-#include <stdint.h>
-#include <sys/ioctl.h>
-#include "sensor_if.h"
-#include "sensor_type.h"
-
-void GetSensorDeviceMethods(struct SensorInterface *device);
-void ReleaseAllSensorInfo(void);
-
-#endif /* HDI_SENSOR_CONTROLLER_H */
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef HDI_SENSOR_MANAGER_H
-#define HDI_SENSOR_MANAGER_H
-
-#include <stdbool.h>
-#include "sensor_type.h"
-#include "sensor_thread.h"
-
-#define THREAD_NAME_MAX_LEN 128
-
-struct SensorDev {
- enum SensorTypeTag sensorType; /* scb sensor type */
- bool sensorEnabled;
- RecordDataCallback recordDataCb;
- ThreadId listenDataThreadId;
- ThreadFunc threadFunc;
- char threadName[THREAD_NAME_MAX_LEN];
- MutexId mutex;
- struct SensorInformation *sensorInfo;
-};
-
-struct SensorDevManager {
- bool initState;
- bool hasSensorListener;
-};
-
-struct SensorDevManager *GetSensorDevManager(void);
-
-#endif /* HDI_SENSOR_MANAGER_H */
+++ /dev/null
-/*
- * Copyright (C) 2022 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef SENSOR_THREAD_H
-#define SENSOR_THREAD_H
-
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <cmsis_os.h>
-#ifdef __cplusplus
-#if __cplusplus
-extern "C" {
-#endif
-#endif
-
-typedef struct {
- bool isRecursive;
-} MutexAttr;
-
-typedef void *MutexId;
-
-MutexId SensorMutexCreate(MutexAttr *attr);
-
-void SensorMutexDestroy(MutexId *mutex);
-
-void SensorMutexLock(MutexId mutex);
-
-void SensorMutexUnLock(MutexId mutex);
-
-void SensorMutexGlobalLock(void);
-
-void SensorMutexGlobalUnLock(void);
-
-void SensorInitStaticMutexLock(MutexId *mutex);
-
-typedef void *ThreadId;
-typedef void (*ThreadFunc)(void *argv);
-
-typedef struct {
- const char *name; // name of the thread
- uint32_t stackSize; // size of stack
- uint8_t priority; // initial thread priority
- uint8_t reserved1; // reserved1 (must be 0)
- uint16_t reserved2; // reserved2 (must be 0)
-} ThreadAttr;
-
-ThreadId SensorThreadCreate(ThreadFunc func, void *argv, const ThreadAttr *attr);
-
-#ifdef __cplusplus
-#if __cplusplus
-}
-#endif
-#endif
-#endif // SENSOR_THREAD_H
+++ /dev/null
-/*
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "sensor_controller.h"
-#include <fcntl.h>
-#include <sys/time.h>
-#include "securec.h"
-#include "sensor_common.h"
-#include "sensor_if.h"
-#include "sensor_manager.h"
-
-#define LISTEN_TIME_THR 1000
-
-const static int16_t DEFAULT_AXIS_X = 80;
-const static int16_t DEFAULT_AXIS_Y = 90;
-const static int16_t DEFAULT_AXIS_Z = 100;
-
-static void ListenAccelDataProc(void *argv);
-static void ListenBarDataProc(void *argv);
-static void ListenCyroDataProc(void *argv);
-static void ListenHrDataProc(void *argv);
-static void ListenObsDataProc(void *argv);
-static void ListenScDataProc(void *argv);
-
-struct SensorInformation g_sensorInfo[] = {
- {"accel_mock", "vendor_mock", "fmw_1.00", "hw_1.00", SENSOR_TYPE_ACCELEROMETER, 0, 0.0, 0.0, 0.0},
- {"bar_mock", "vendor_mock", "fmw_1.00", "hw_1.00", SENSOR_TYPE_BAROMETER, 1, 0.0, 0.0, 0.0},
- {"cyro_mock", "vendor_mock", "fmw_1.00", "hw_1.00", SENSOR_TYPE_GYROSCOPE, 2, 0.0, 0.0, 0.0},
- {"hr_mock", "vendor_mock", "fmw_1.00", "hw_1.00", SENSOR_TYPE_HEART_RATE, 3, 0.0, 0.0, 0.0},
- {"obs_mock", "vendor_mock", "fmw_1.00", "hw_1.00", SENSOR_TYPE_WEAR_DETECTION, 4, 0.0, 0.0, 0.0},
- {"sc_mock", "vendor_mock", "fmw_1.00", "hw_1.00", SENSOR_TYPE_PEDOMETER, 5, 0.0, 0.0, 0.0},
-};
-
-struct SensorDev g_sensorDev[] = {
- {SENSOR_TYPE_ACCELEROMETER, false, NULL, NULL, ListenAccelDataProc, "ListenAccelDataTask", NULL, &g_sensorInfo[0]},
- {SENSOR_TYPE_BAROMETER, false, NULL, NULL, ListenBarDataProc, "ListenBarDataTask", NULL, &g_sensorInfo[0]},
- {SENSOR_TYPE_GYROSCOPE, false, NULL, NULL, ListenCyroDataProc, "ListenCyroDataTask", NULL, &g_sensorInfo[0]},
- {SENSOR_TYPE_HEART_RATE, false, NULL, NULL, ListenHrDataProc, "ListenHrDataTask", NULL, &g_sensorInfo[0]},
- {SENSOR_TYPE_WEAR_DETECTION, false, NULL, NULL, ListenObsDataProc, "ListenObsDataTask", NULL, &g_sensorInfo[0]},
- {SENSOR_TYPE_PEDOMETER, false, NULL, NULL, ListenScDataProc, "ListenScDataTask", NULL, &g_sensorInfo[0]},
-};
-
-static int64_t GetTimestampMS(void)
-{
- static int64_t US_PER_MS = 1000;
- static int64_t MS_PER_S = 1000;
- struct timeval tv;
- gettimeofday(&tv, NULL);
- int64_t ms = tv.tv_usec / US_PER_MS;
- return tv.tv_sec * MS_PER_S + ms;
-}
-
-static void ListenAccelDataProc(void *argv)
-{
- HILOG_INFO(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sensorDev = (struct SensorDev *)argv;
- if (sensorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "argv invalid");
- return;
- }
- struct AccelData accelData = {
- .axisX = DEFAULT_AXIS_X,
- .axisY = DEFAULT_AXIS_Y,
- .axisZ = DEFAULT_AXIS_Z,
- };
- while (sensorDev->sensorEnabled) {
- struct SensorEvents sensorEvents = {
- .sensorId = sensorDev->sensorType,
- .version = 0,
- .timestamp = GetTimestampMS(),
- .option = 0,
- .mode = SENSOR_MODE_DEFAULT,
- .data = (uint8_t *)&accelData,
- .dataLen = sizeof(struct AccelData),
- };
- SensorMutexLock(sensorDev->mutex);
- if (sensorDev->recordDataCb) {
- sensorDev->recordDataCb(&sensorEvents);
- }
- SensorMutexUnLock(sensorDev->mutex);
- osDelay(LISTEN_TIME_THR);
- }
- HILOG_INFO(HILOG_MODULE_SEN, "exit");
-}
-
-static void ListenBarDataProc(void *argv)
-{
- HILOG_INFO(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sensorDev = (struct SensorDev *)argv;
- if (sensorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "argv invalid");
- return;
- }
- const uint32_t DEFAULT_PRESSURE = 101300;
- struct PressureData pressureData = {
- .pressure = DEFAULT_PRESSURE,
- .temperature = 0,
- .dataValid = true,
- };
- while (sensorDev->sensorEnabled) {
- struct SensorEvents sensorEvents = {
- .sensorId = sensorDev->sensorType,
- .version = 0,
- .timestamp = GetTimestampMS(),
- .option = 0,
- .mode = SENSOR_MODE_DEFAULT,
- .data = (uint8_t *)&pressureData,
- .dataLen = sizeof(struct PressureData),
- };
- SensorMutexLock(sensorDev->mutex);
- if (sensorDev->recordDataCb) {
- sensorDev->recordDataCb(&sensorEvents);
- }
- SensorMutexUnLock(sensorDev->mutex);
- osDelay(LISTEN_TIME_THR);
- }
- HILOG_INFO(HILOG_MODULE_SEN, "exit");
-}
-
-static void ListenCyroDataProc(void *argv)
-{
- HILOG_INFO(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sensorDev = (struct SensorDev *)argv;
- if (sensorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "argv invalid");
- return;
- }
-
- while (sensorDev->sensorEnabled) {
- struct GyroData gyroData = {
- .axisX = DEFAULT_AXIS_X,
- .axisY = DEFAULT_AXIS_Y,
- .axisZ = DEFAULT_AXIS_Z,
- };
- struct SensorEvents sensorEvents = {
- .sensorId = sensorDev->sensorType,
- .version = 0,
- .timestamp = GetTimestampMS(),
- .option = 0,
- .mode = SENSOR_MODE_DEFAULT,
- .data = (uint8_t *)&gyroData,
- .dataLen = sizeof(struct GyroData),
- };
- SensorMutexLock(sensorDev->mutex);
- if (sensorDev->recordDataCb) {
- sensorDev->recordDataCb(&sensorEvents);
- }
- SensorMutexUnLock(sensorDev->mutex);
- osDelay(LISTEN_TIME_THR);
- }
- HILOG_INFO(HILOG_MODULE_SEN, "exit");
-}
-
-static void ListenHrDataProc(void *argv)
-{
- HILOG_INFO(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sensorDev = (struct SensorDev *)argv;
- if (sensorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "argv invalid");
- return;
- }
- const uint32_t DEFAULT_HEARTRATE = 80;
- while (sensorDev->sensorEnabled) {
- uint32_t heartRate = DEFAULT_HEARTRATE;
- struct SensorEvents sensorEvents = {
- .sensorId = sensorDev->sensorType,
- .version = 0,
- .timestamp = GetTimestampMS(),
- .option = 0,
- .mode = SENSOR_MODE_DEFAULT,
- .data = (uint8_t *)&heartRate,
- .dataLen = sizeof(uint32_t),
- };
- SensorMutexLock(sensorDev->mutex);
- if (sensorDev->recordDataCb) {
- sensorDev->recordDataCb(&sensorEvents);
- }
- SensorMutexUnLock(sensorDev->mutex);
- osDelay(LISTEN_TIME_THR);
- }
- HILOG_INFO(HILOG_MODULE_SEN, "exit");
-}
-
-static void ListenObsDataProc(void *argv)
-{
- HILOG_INFO(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sensorDev = (struct SensorDev *)argv;
- if (sensorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "argv invalid");
- return;
- }
- while (sensorDev->sensorEnabled) {
- const uint8_t defaultIsonbody = 1;
- struct SensorEvents sensorEvents = {
- .sensorId = sensorDev->sensorType,
- .version = 0,
- .timestamp = GetTimestampMS(),
- .option = 0,
- .mode = SENSOR_MODE_DEFAULT,
- .data = (uint8_t *)&defaultIsonbody,
- .dataLen = sizeof(uint8_t),
- };
- SensorMutexLock(sensorDev->mutex);
- if (sensorDev->recordDataCb) {
- sensorDev->recordDataCb(&sensorEvents);
- }
- SensorMutexUnLock(sensorDev->mutex);
- osDelay(LISTEN_TIME_THR);
- }
- HILOG_INFO(HILOG_MODULE_SEN, "exit");
-}
-
-static void ListenScDataProc(void *argv)
-{
- HILOG_INFO(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sensorDev = (struct SensorDev *)argv;
- if (sensorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "argv invalid");
- return;
- }
- const uint32_t DEFAULT_STEPS = 2000;
- while (sensorDev->sensorEnabled) {
- uint32_t steps = DEFAULT_STEPS;
- struct SensorEvents sensorEvents = {
- .sensorId = sensorDev->sensorType,
- .version = 0,
- .timestamp = GetTimestampMS(),
- .option = 0,
- .mode = SENSOR_MODE_DEFAULT,
- .data = (uint8_t *)&steps,
- .dataLen = sizeof(uint32_t),
- };
- SensorMutexLock(sensorDev->mutex);
- if (sensorDev->recordDataCb) {
- sensorDev->recordDataCb(&sensorEvents);
- }
- SensorMutexUnLock(sensorDev->mutex);
- osDelay(LISTEN_TIME_THR);
- }
- HILOG_INFO(HILOG_MODULE_SEN, "exit");
-}
-
-static int32_t InitAllSensorInfo(void)
-{
- for (int32_t i = 0; i < (int32_t)ARRAY_SIZE(g_sensorDev); i++) {
- g_sensorDev[i].mutex = SensorMutexCreate(NULL);
- if (!g_sensorDev[i].mutex) {
- HILOG_ERROR(HILOG_MODULE_SEN, "SensorMutexCreate failed");
- return SENSOR_FAILURE;
- }
- }
- return SENSOR_SUCCESS;
-}
-
-static void DeInitAllSensorInfo(void)
-{
- for (int32_t i = 0; i < (int32_t)ARRAY_SIZE(g_sensorDev); i++) {
- SensorMutexDestroy(&g_sensorDev[i].mutex);
- g_sensorDev[i].mutex = NULL;
- }
-}
-
-void ReleaseAllSensorInfo(void)
-{
- struct SensorDevManager *manager = GetSensorDevManager();
- manager->hasSensorListener = false;
- DeInitAllSensorInfo();
-}
-
-static struct SensorDev *GetSensorBySensorTypeId(int32_t sensorTypeId)
-{
- if ((sensorTypeId >= SENSOR_TYPE_MAX) || (sensorTypeId < SENSOR_TYPE_NONE)) {
- HILOG_ERROR(HILOG_MODULE_SEN, "invalid sensorTypeId:%d", sensorTypeId);
- return NULL;
- }
- for (int32_t i = 0; i < (int32_t)ARRAY_SIZE(g_sensorDev); i++) {
- if (g_sensorDev[i].sensorType == sensorTypeId) {
- return &g_sensorDev[i];
- }
- }
- return NULL;
-}
-
-static int32_t GetSensorInfo(struct SensorInformation **sensor, int32_t *count)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter");
- struct SensorDevManager *manager = GetSensorDevManager();
- CHECK_NULL_PTR_RETURN_VALUE(sensor, SENSOR_NULL_PTR);
- CHECK_NULL_PTR_RETURN_VALUE(count, SENSOR_NULL_PTR);
-
- int32_t snsCnt = ARRAY_SIZE(g_sensorInfo);
-
- if (snsCnt <= 0) {
- HILOG_ERROR(HILOG_MODULE_SEN, "sensor snsCnt invalid");
- return SENSOR_FAILURE;
- }
- int32_t ret = InitAllSensorInfo();
- if (ret != SENSOR_SUCCESS) {
- return SENSOR_FAILURE;
- }
- *count = snsCnt;
- *sensor = g_sensorInfo;
- HILOG_INFO(HILOG_MODULE_SEN, "sensor count:%d", *count);
- return SENSOR_SUCCESS;
-}
-
-static int32_t EnableSensor(int32_t sensorTypeId)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sendorDev = GetSensorBySensorTypeId(sensorTypeId);
- if (sendorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "Failed to obtain sensorId");
- return SENSOR_INVALID_PARAM;
- }
- if (sendorDev->sensorEnabled) {
- HILOG_INFO(HILOG_MODULE_SEN, "sensor has enabled");
- return SENSOR_SUCCESS;
- }
- sendorDev->sensorEnabled = true;
- ThreadAttr attr = {sendorDev->threadName, 0x2000, (uint8_t)osPriorityNormal, 0, 0};
- ThreadId threadId = (ThreadId)SensorThreadCreate(sendorDev->threadFunc, sendorDev, &attr);
- if (threadId == NULL) {
- return SENSOR_FAILURE;
- }
- sendorDev->listenDataThreadId = threadId;
- return SENSOR_SUCCESS;
-}
-
-static int32_t DisableSensor(int32_t sensorTypeId)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sendorDev = GetSensorBySensorTypeId(sensorTypeId);
- if (sendorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "Failed to obtain sensorId");
- return SENSOR_INVALID_PARAM;
- }
- if (!sendorDev->sensorEnabled) {
- HILOG_INFO(HILOG_MODULE_SEN, "sensor has not enabled");
- return SENSOR_INVALID_SERVICE;
- }
- sendorDev->sensorEnabled = false;
- sendorDev->listenDataThreadId = NULL;
- return SENSOR_SUCCESS;
-}
-
-static int32_t RegisterSensorDataCb(int32_t sensorTypeId, RecordDataCallback cb)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter sensorId:%d", sensorTypeId);
- struct SensorDev *sendorDev = GetSensorBySensorTypeId(sensorTypeId);
- if (sendorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "Failed to obtain sensorId");
- return SENSOR_INVALID_PARAM;
- }
- SensorMutexLock(sendorDev->mutex);
- sendorDev->recordDataCb = cb;
- SensorMutexUnLock(sendorDev->mutex);
- return SENSOR_SUCCESS;
-}
-
-static int32_t UnregisterSensorDataCb(int32_t sensorTypeId, RecordDataCallback cb)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter sensorId:%d", sensorTypeId);
- struct SensorDev *sendorDev = GetSensorBySensorTypeId(sensorTypeId);
- if (sendorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "Failed to obtain sensorId");
- return SENSOR_INVALID_PARAM;
- }
- if (!sendorDev->recordDataCb) {
- HILOG_ERROR(HILOG_MODULE_SEN, "recordDataCb NOT register");
- return SENSOR_INVALID_SERVICE;
- }
- SensorMutexLock(sendorDev->mutex);
- sendorDev->recordDataCb = NULL;
- SensorMutexUnLock(sendorDev->mutex);
- return SENSOR_SUCCESS;
-}
-
-static int32_t SetSensorBatch(int32_t sensorTypeId, int64_t samplingInterval, int64_t interval)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sendorDev = GetSensorBySensorTypeId(sensorTypeId);
- if (sendorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "Failed to obtain sensorId");
- return SENSOR_INVALID_PARAM;
- }
- if (sendorDev->sensorEnabled) {
- HILOG_INFO(HILOG_MODULE_SEN, "sensor has enabled");
- return SENSOR_NOT_SUPPORT;
- }
- return SENSOR_NOT_SUPPORT;
-}
-
-static int32_t SetSensorMode(int32_t sensorTypeId, int32_t mode)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sendorDev = GetSensorBySensorTypeId(sensorTypeId);
- if (sendorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "Failed to obtain sensorId");
- return SENSOR_INVALID_PARAM;
- }
- if (sendorDev->sensorEnabled) {
- HILOG_INFO(HILOG_MODULE_SEN, "sensor has enabled");
- return SENSOR_NOT_SUPPORT;
- }
- return SENSOR_NOT_SUPPORT;
-}
-
-static int32_t SetSensorOption(int32_t sensorTypeId, uint32_t option)
-{
- HILOG_DEBUG(HILOG_MODULE_SEN, "enter");
- struct SensorDev *sendorDev = GetSensorBySensorTypeId(sensorTypeId);
- if (sendorDev == NULL) {
- HILOG_ERROR(HILOG_MODULE_SEN, "Failed to obtain sensorId");
- return SENSOR_INVALID_PARAM;
- }
- if (sendorDev->sensorEnabled) {
- HILOG_INFO(HILOG_MODULE_SEN, "sensor has enabled");
- return SENSOR_NOT_SUPPORT;
- }
- return SENSOR_NOT_SUPPORT;
-}
-
-void GetSensorDeviceMethods(struct SensorInterface *device)
-{
- CHECK_NULL_PTR_RETURN(device);
- device->GetAllSensors = GetSensorInfo;
- device->Enable = EnableSensor;
- device->Disable = DisableSensor;
- device->SetBatch = SetSensorBatch;
- device->SetMode = SetSensorMode;
- device->SetOption = SetSensorOption;
- device->Register = RegisterSensorDataCb;
- device->Unregister = UnregisterSensorDataCb;
-}
+++ /dev/null
-/*
- * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "sensor_log.h"
-#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include "sensor_type.h"
-
-#ifdef ENABLE_INFO_LEVEL_LOG
-static SENSOR_LOG_LEVEL g_enabledLevel = SENSOR_LOG_INFO;
-#else
-static SENSOR_LOG_LEVEL g_enabledLevel = SENSOR_LOG_DEBUG;
-#endif
-
-static const uint32_t MAX_BUFFER_SZ = 256;
-
-static void LogTime()
-{
- struct timeval tv = {};
- gettimeofday(&tv, NULL);
- struct tm tm = {};
- localtime_r(&tv.tv_sec, &tm);
- const int64_t usecToMsec = 1000;
- printf("[%02d:%02d:%02d:%03lld]", tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec / usecToMsec);
-}
-
-int32_t SensorLogPrintf(SENSOR_LOG_LEVEL level, const char *fmt, ...)
-{
- if (level < g_enabledLevel) {
- return SENSOR_SUCCESS;
- }
- if (fmt == NULL) {
- return SENSOR_INVALID_PARAM;
- }
- const char *levelStr = NULL;
- char out[MAX_BUFFER_SZ] = {0};
- switch (level) {
- case SENSOR_LOG_DEBUG:
- levelStr = "D";
- break;
- case SENSOR_LOG_INFO:
- levelStr = "I";
- break;
- case SENSOR_LOG_WARN:
- levelStr = "W";
- break;
- case SENSOR_LOG_ERR:
- levelStr = "E";
- break;
- case SENSOR_LOG_FATAL:
- levelStr = "F";
- break;
- default:
- levelStr = "E";
- break;
- }
- LogTime();
- va_list args;
- printf("[%s]", levelStr);
- va_start(args, fmt);
- int result = vsnprintf_s(out, MAX_BUFFER_SZ, MAX_BUFFER_SZ - 1, fmt, args);
- if (result == -1) {
- printf("vsnprintf_s failed!\n");
- va_end(args);
- return SENSOR_INVALID_PARAM;
- }
- va_end(args);
- printf("%s \n", out);
- return SENSOR_SUCCESS;
-}
-
-int32_t SetSensorLogEnabledLevel(SENSOR_LOG_LEVEL level)
-{
- if (level < SENSOR_LOG_DEBUG ||
- level > SENSOR_LOG_FATAL) {
- return SENSOR_INVALID_PARAM;
- }
- g_enabledLevel = level;
- return SENSOR_SUCCESS;
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "sensor_manager.h"
-#include <fcntl.h>
-#include "sensor_common.h"
-#include "sensor_controller.h"
-#include "sensor_if.h"
-
-#define HDF_LOG_TAG sensor_manager_c
-
-struct SensorDevManager *GetSensorDevManager(void)
-{
- static struct SensorDevManager devManager = {
- .initState = false,
- .hasSensorListener = false,
- };
-
- return &devManager;
-}
-
-const struct SensorInterface *NewSensorInterfaceInstance(void)
-{
- static struct SensorInterface sensorDevInstance;
- struct SensorDevManager *manager = GetSensorDevManager();
-
- if (manager->initState) {
- return &sensorDevInstance;
- }
-
- // Construct device interface instance
- GetSensorDeviceMethods(&sensorDevInstance);
-
- manager->initState = true;
- HILOG_DEBUG(HILOG_MODULE_APP, "Get sensor device instance success");
- return &sensorDevInstance;
-}
-
-int32_t FreeSensorInterfaceInstance(void)
-{
- struct SensorDevManager *manager = GetSensorDevManager();
-
- if (!manager->initState) {
- return SENSOR_SUCCESS;
- }
-
- ReleaseAllSensorInfo();
-
- manager->initState = false;
-
- return SENSOR_SUCCESS;
-}
+++ /dev/null
-/*
- * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "sensor_thread.h"
-#include <unistd.h>
-#include <sys/time.h>
-#include "securec.h"
-
-#ifndef CMSIS_SUPPORT
-pthread_mutex_t g_globalMutexLock = PTHREAD_MUTEX_INITIALIZER;
-static void *ThreadMallocZ(uint32_t len)
-{
- if (len == 0) {
- return NULL;
- }
-
- void *value = malloc(len);
- if (value == NULL) {
- return NULL;
- }
-
- if (memset_s(value, len, 0, len) != EOK) {
- free(value);
- value = NULL;
- }
-
- return value;
-}
-#endif
-
-MutexId SensorMutexCreate(MutexAttr *attr)
-{
-#ifdef CMSIS_SUPPORT
- osMutexAttr_t mutexAttr = { NULL, 0, NULL, 0 };
- osMutexAttr_t *pAttr = NULL;
- if (attr != NULL && attr->isRecursive) {
- mutexAttr.attr_bits |= osMutexRecursive;
- pAttr = &mutexAttr;
- }
- osMutexId_t mutex = osMutexNew(pAttr);
- return mutex;
-#else
- pthread_mutex_t *mutexId = (pthread_mutex_t *)ThreadMallocZ(sizeof(pthread_mutex_t));
- if (mutexId == NULL) {
- return NULL;
- }
- pthread_mutexattr_t mutexAttr = {0};
- pthread_mutexattr_t *pAttr = NULL;
- bool needSetAttr = (attr != NULL && attr->isRecursive && pthread_mutexattr_init(&mutexAttr) == 0);
- if (needSetAttr) {
- if (pthread_mutexattr_settype(&mutexAttr, PTHREAD_MUTEX_RECURSIVE) == 0) {
- pAttr = &mutexAttr;
- }
- }
- (void)pthread_mutex_init(mutexId, pAttr);
- if (needSetAttr) {
- pthread_mutexattr_destroy(&mutexAttr);
- }
- return mutexId;
-#endif
-}
-
-void SensorMutexDestroy(MutexId *mutex)
-{
- if (mutex == NULL || *mutex == NULL) {
- return;
- }
-#ifdef CMSIS_SUPPORT
- (void)osMutexDelete(*mutex);
-#else
- if (*mutex == NULL) {
- return;
- }
-
- (void)pthread_mutex_destroy((pthread_mutex_t *)*mutex);
- free(*mutex);
-#endif
- *mutex = NULL;
-}
-
-void SensorMutexLock(MutexId mutex)
-{
- if (mutex == NULL) {
- return;
- }
-
-#ifdef CMSIS_SUPPORT
- (void)osMutexAcquire(mutex, osWaitForever);
-#else
- (void)pthread_mutex_lock((pthread_mutex_t *)mutex);
-#endif
-}
-
-void SensorMutexUnLock(MutexId mutex)
-{
- if (mutex == NULL) {
- return;
- }
-
-#ifdef CMSIS_SUPPORT
- (void)osMutexRelease(mutex);
-#else
- (void)pthread_mutex_unlock((pthread_mutex_t *)mutex);
-#endif
-}
-
-void SensorMutexGlobalLock(void)
-{
-#ifdef CMSIS_SUPPORT
- osKernelLock();
-#else
- pthread_mutex_lock(&g_globalMutexLock);
-#endif
-}
-
-void SensorMutexGlobalUnLock(void)
-{
-#ifdef CMSIS_SUPPORT
- osKernelUnlock();
-#else
- pthread_mutex_unlock(&g_globalMutexLock);
-#endif
-}
-
-void SensorInitStaticMutexLock(MutexId *mutex)
-{
- if (mutex == NULL || *mutex != NULL) {
- return;
- }
-
- SensorMutexGlobalLock();
- if (*mutex == NULL) {
- MutexAttr attr = { false };
- *mutex = SensorMutexCreate(&attr);
- }
- SensorMutexGlobalUnLock();
-}
-
-ThreadId SensorThreadCreate(ThreadFunc func, void *argv, const ThreadAttr *attr)
-{
- osThreadAttr_t taskAttr = {attr->name, 0, NULL, 0, NULL, attr->stackSize, (osPriority_t)(attr->priority), 0, 0};
- const int MEM_ALIGN = 16;
- taskAttr.stack_mem = memalign(MEM_ALIGN, attr->stackSize);
- return (ThreadId)osThreadNew((osThreadFunc_t)func, argv, &taskAttr);
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag. 2024-2025. All rights reserved.\r
- * Description: http control interfaces\r
- * Author: Software Group\r
- * Create: 2025-03-28\r
- */\r
-\r
-#ifndef HTTP_CLIENT_MODULE_H\r
-#define HTTP_CLIENT_MODULE_H\r
-\r
-#include <stdint.h>\r
-#include "jsi.h"\r
-#include <map>\r
-#include <cstring>\r
-#include "httpclient.h"\r
-\r
-namespace OHOS {\r
-namespace ACELite {\r
-\r
-struct EventCallback {\r
- JSIValue callback;\r
- JSIValue context;\r
- bool isOnce;\r
-};\r
-\r
-struct ThreadNewObj {\r
- JSIValue thisVal;\r
- HttpClient *newHttpClient;\r
- HttpClientData *newHttpClientData;\r
- char *method;\r
- char *url;\r
- JSIValue header;\r
- JSIValue callback;\r
-};\r
-\r
-// httpClient\r
-constexpr char METHOD[] = "method";\r
-constexpr char HTTP_CLIENT[] = "httpClient";\r
-constexpr char URL[] = "url";\r
-constexpr char HEADER[] = "header";\r
-constexpr char CLIENT_CERT[] = "clientCert";\r
-\r
-// httpClientData\r
-constexpr char HTTP_CLIENT_DATA[] = "httpClientData";\r
-constexpr char POST_BUF[] = "postBuf";\r
-constexpr char EXTRA_DATA[] = "extraData";\r
-\r
-// subscriptions\r
-char* DATA_RECEIVE = "dataReceive";\r
-char* DATA_END = "dataEnd";\r
-char* DATA_RECEIVE_PROGRESS = "dataReceiveProgress";\r
-char* DATA_SEND_PROGRESS = "dataSendProgress";\r
-\r
-class HttpModule final : public MemoryHeap {\r
-public:\r
- HttpModule() = default;\r
- ~HttpModule() = default;\r
- static HttpClient *CreateHttpClient(const JSIValue *args);\r
- static HttpClientData *CreateHttpClientData(const JSIValue *args);\r
- static char *HeaderJsonToString(char* headerJson);\r
- static JSIValue Request(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
- static JSIValue RequestInStream(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
- static JSIValue CreateHttp(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
- static JSIValue On(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
- static JSIValue Once(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
- static JSIValue Off(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
- static JSIValue Destroy(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
- static std::map<std::string, EventCallback *> eventCallbacks;\r
- static std::map<JSIValue, HttpClient *> httpClientInstances;\r
- static std::map<JSIValue, HttpClientData *> httpClientDataInstances;\r
- static void OnTerminate();\r
- static void CheckSubscription(char *type, JSIValue value);\r
- static int GetErrorCode(int8_t errorCode);\r
-};\r
-void InitHttpModule(JSIValue exports);\r
-\r
-} // namespace ACELite\r
-} // namespace OHOS\r
-\r
-#endif // HTTP_CLIENT_MODULE_H
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
- */
-
-#ifndef __NET_WEBSOCKET_DEBUG_H__
-#define __NET_WEBSOCKET_DEBUG_H__
-
-#include <stdio.h>
-
-#define WS_DBG_LEVEL WEBSOCKET_DBG_ON
-
-#define WS_INFO_LEVEL WEBSOCKET_DBG_ON
-
-#define WS_ERR_LEVEL WEBSOCKET_DBG_ON
-
-/** flag for WEBSOCKET_DEBUGF to enable that debug message */
-#define WEBSOCKET_DBG_ON 0x80U
-/** flag for WEBSOCKET_DEBUGF to disable that debug message */
-#define WEBSOCKET_DBG_OFF 0x00U
-
-#define WEBSOCKET_DEBUG
-
-#ifdef WEBSOCKET_DEBUG
-#define WS_PLATFORM_DIAG(x) \
- do { \
- printf x; \
- } while (0)
-#define WEBSOCKET_DEBUGF(debug, message) \
- do { \
- if (((debug)&WEBSOCKET_DBG_ON)) { \
- WS_PLATFORM_DIAG(message); \
- } \
- } while (0)
-
-#else /* WEBSOCKET_DEBUG */
-#define WEBSOCKET_DEBUGF(debug, message)
-#endif /* WEBSOCKET_DEBUG */
-
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
- */
-
-#ifndef _WS_FRAME_H__
-#define _WS_FRAME_H__
-
-#include "net_websocket.h"
-#include <stdint.h>
-
-typedef enum _rws_opcode {
- WS_OPCODE_CONTINUATION = 0x0, // %x0 denotes a continuation frame
- WS_OPCODE_TEXT_FRAME = 0x1, // %x1 denotes a text frame
- WS_OPCODE_BINARY_FRAME = 0x2, // %x2 denotes a binary frame
- WS_OPCODE_CONNECTION_CLOSE = 0x8, // %x8 denotes a connection close
- WS_OPCODE_PING = 0x9, // %x9 denotes a ping
- WS_OPCODE_PONG = 0xA // %xA denotes a pong
-} WsOpcode;
-
-typedef enum WsBinaryCode { WS_BINARY_START, WS_BINARY_CONTINUE, WS_BINARY_END } WsBinary;
-
-typedef struct WsFrameStruct {
- void *data;
- size_t length;
- WsOpcode opcode;
- uint8_t mask[4]; /* 4: mask length */
- bool isMasked;
- bool isFinished;
- uint8_t headerSize;
-} WsFrame;
-
-size_t WsCheckRecvFrameSize(const void *data, const size_t data_size);
-
-WsFrame *WsFrameCreateWithRecvData(const void *data, const size_t data_size);
-
-void WsFrameFillWithSendBinData(WsFrame *f, const void *data, const size_t length, WsBinary binType);
-
-// data - should be null, and setted by newly created. 'data' & 'data_size' can be null
-void WsFrameFillWithSendData(WsFrame *f, const void *data, const size_t data_size, bool is_finish);
-
-// combine datas of 2 frames. combined is 'to'
-void WsFrameCombineDatas(WsFrame *to, WsFrame *from);
-
-WsFrame *WsFrameCreate(void);
-
-void WsDeleteFrame(WsFrame *f);
-
-#endif
+++ /dev/null
-/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
- */
-
-#ifndef __WS_LIST_H__
-#define __WS_LIST_H__
-
-#include <stdio.h>
-
-typedef union WsNodeValueUnion {
- void *object;
- char *string;
-} WsNodeValue;
-
-typedef struct WsNodeStruct {
- WsNodeValue value;
- struct WsNodeStruct *next;
-} WsNode, WsList;
-
-WsList *WsListCreate(void);
-
-void WsListDelete(WsList *list);
-
-void WsListDeleteClean(WsList **list);
-
-int WsListAppend(WsList *list, WsNodeValue value);
-
-#endif
+++ /dev/null
-/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
- */
-
-#ifndef NET_WEBSOCKET_OPTS_H
-#define NET_WEBSOCKET_OPTS_H
-
-#define WEBSOCKET_RECV_BUFF_SIZE (20 * 1024)
-
-#define WS_MAX_THRESH_VAL (20 * 1024) /* common TTS play size */
-
-#define WS_MAX_CLIENT_NUM 4
-
-#define WS_MAX_URI_LENGTH 512
-
-#define WS_MAX_DATA_LENGTH (20 * 1024)
-
-#define WS_HANDSHAKE_BUF_LEN 1024
-
-#define WSS_READ_TIMEOUT_MS 100
-
-
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
- */
-
-#ifndef __NET_WEBSOCKET_PRIV_H__
-#define __NET_WEBSOCKET_PRIV_H__
-
-#include "lwip/sockets.h"
-#include <lwip/netdb.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include "net_websocket.h"
-#include "net_websocket_type.h"
-#include "net_websocket_opts.h"
-#include "net_websocket_thread.h"
-#include "net_websocket_frame.h"
-#include "net_websocket_list.h"
-
-#ifdef WEBSOCKET_SSL_ENABLE
-#include "mbedtls/net_sockets.h"
-#include "mbedtls/ssl.h"
-#include "mbedtls/entropy.h"
-#include "mbedtls/ctr_drbg.h"
-#endif
-
-typedef int WsSocket;
-#define WS_INVALID_SOCKET -1
-#define WS_SOCK_CLOSE(sock) closesocket(sock)
-
-#define O_NONBLOCK 04000
-
-#ifdef WEBSOCKET_SSL_ENABLE
-typedef struct WsSslStruct {
- mbedtls_ssl_context sslCtx; /* mbedtls ssl context */
- mbedtls_net_context netCtx; /* Fill in socket id */
- mbedtls_ssl_config sslConf; /* SSL configuration */
- mbedtls_entropy_context entropy;
- mbedtls_ctr_drbg_context ctrDrbg;
- mbedtls_x509_crt_profile profile;
- mbedtls_x509_crt cacert;
- mbedtls_x509_crt clicert;
- mbedtls_pk_context pkey;
-} WsSsl;
-#endif
-
-struct WebSocketClient {
- int clientfd;
- int port;
- WsSocket socket;
- char scheme[WS_MAX_URI_LENGTH];
- char host[WS_MAX_URI_LENGTH];
- char path[WS_MAX_URI_LENGTH];
-
- char *secWsProtocol; // "Sec-WebSocket-Protocol" field
- char *secWsAccept; // "Sec-WebSocket-Accept" field from handshake
-
- WsThread workThread;
-
- int command;
-
- bool isConnected; // sock connected + handshake done
-
- void *userObject;
- /** Pointer to the callback invoked when a connection message is received */
- WebSocketOnOpenCallback onOpen;
- /** Pointer to the callback invoked when a message is received */
- WebSocketOnMessageCallback onMessage;
- /** Pointer to the callback invoked when an error message is received */
- WebSocketOnErrorCallback onError;
- /** Pointer to the callback invoked when a close message is received */
- WebSocketOnCloseCallback onClose;
-
- void *received;
- size_t receivedSize; // size of 'received' memory
- size_t receivedLen; // length of actualy readed message
-
- WsList *sendFrames;
- WsList *recvdFrames;
-
- WsMutex workMutex;
- WsMutex sendMutex;
- WsSem exitSem;
-
-#ifdef WEBSOCKET_SSL_ENABLE
- const char *serverCert; /**< Server certification. */
- const char *clientCert; /**< Client certification. */
- const char *clientPk; /**< Client private key. */
- int serverCertLen; /**< Server certification lenght, server_cert buffer size. */
- int clientCertLen; /**< Client certification lenght, client_cert buffer size. */
- int clientPkLen; /**< Client private key lenght, client_pk buffer size. */
- WsSsl *ssl; /**< Ssl content. */
-#endif
- char *recvBuffer;
- int recvBufferSize;
-};
-
-void WebSocketClientClosePriv(struct WebSocketClient *clientPtr);
-
-struct WebSocketClient *WsGetClient(int fd);
-
-int AllocWsClient(void);
-
-bool WsParseUrl(const char *url, char *prefix, char *address, char *path, int *port);
-
-int WsSocketSendTextPriv(struct WebSocketClient *clientPtr, const char *text);
-
-int WsClientSendBinStartPriv(struct WebSocketClient *clientPtr, const char *data, size_t length);
-
-int WsClientIdleDataSend(struct WebSocketClient *clientPtr);
-
-#define COMMAND_IDLE -1
-#define COMMAND_NONE 0
-#define COMMAND_CONNECT_TO_HOST 1
-#define COMMAND_SEND_HANDSHAKE 2
-#define COMMAND_WAIT_HANDSHAKE_RESPONCE 3
-#define COMMAND_INFORM_CONNECTED 4
-#define COMMAND_INFORM_DISCONNECTED 5
-
-#define COMMAND_END 9999
-
-#endif
+++ /dev/null
-/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
- */
-#ifndef __RWS_STRING_H__
-#define __RWS_STRING_H__
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-char *WsStringCopy(const char *str);
-
-char *WsStringCopyLen(const char *str, const size_t len);
-
-void WsStringDelete(char *str);
-
-void WsStringDeleteClean(char **str);
-
-#endif
+++ /dev/null
-/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
- */
-
-#ifndef __RWS_THREAD_H__
-#define __RWS_THREAD_H__
-
-#include <stdio.h>
-#include <pthread.h>
-
-#define RWS_WAIT_FOREVER 0xffffffffu
-
-/**
- @brief Callback type of thread function.
- @param userObject User object provided during thread creation.
- */
-typedef void (*WsThreadFunct)(void *userObject);
-
-struct WsThreadStruct {
- WsThreadFunct threadFunction;
- void *userObject;
- pthread_t thread;
-};
-
-/**
- @brief Type of all public objects.
- */
-typedef void *WsHandle;
-
-/**
- @brief Mutex object handle.
- */
-typedef WsHandle WsMutex;
-
-/**
- @brief Mutex object handle.
- */
-typedef WsHandle WsSem;
-
-/**
- @brief Thread object handle.
- */
-typedef struct WsThreadStruct *WsThread;
-
-WsThread WsThreadCreate(WsThreadFunct threadFunction, void *userObject);
-
-void WsThreadMsleep(const unsigned int millisec);
-
-WsMutex WsMutexCreateRecursive(void);
-
-void WsMutexLock(WsMutex mutex);
-
-void WsMutexUnLock(WsMutex mutex);
-
-void WsMutexDelete(WsMutex mutex);
-
-WsSem WsSemCreate(void);
-
-void WsSemDelete(WsSem sem);
-
-void WsSemSignal(WsSem sem);
-
-
-#endif
+++ /dev/null
-/*\r
- * Copyright (c) 2020 Huawei Device Co., Ltd.\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#include "ace_log.h"\r
-#include "js_app_context.h"\r
-#include "js_async_work.h"\r
-#include "product_adapter.h"\r
-#include <securec.h>\r
-#include <unistd.h>\r
-#include "media_log.h"\r
-#include "network_module.h"\r
-\r
-namespace OHOS {\r
-namespace ACELite {\r
-NetCallBack NetWorkModule::callback_;\r
-\r
-void NetWorkModule::TriggerCallbackListener(uint8_t netConnectStatus, uint8_t type)\r
-{\r
- callback_.netParam.status = netConnectStatus;\r
- callback_.netParam.net_type = type;\r
- if (!JsAsyncWork::DispatchAsyncWork(AsyncExecuteCallback, const_cast<NetParam *>(&callback_.netParam))) {\r
- MEDIA_ERR_LOG("dispatch async work failed.");\r
- }\r
-}\r
-\r
-static bool ValidJsValue(JSIValue value)\r
-{\r
- return (value != nullptr) && (!JSI::ValueIsUndefined(value));\r
-}\r
-\r
-const char* GetNetworkStatusString(uint8_t type, uint8_t status) {\r
- // 网络类型\r
- const char *networkType;\r
- switch (type) {\r
- case NETWORK_TYPE_WIFI:\r
- networkType = "WIFI";\r
- break;\r
- case NETWORK_TYPE_BLUETOOTH:\r
- networkType = "Bluetooth";\r
- break;\r
- default:\r
- networkType = "Unknown Network Type";\r
- break;\r
- }\r
-\r
- // 连接状态\r
- const char *connectionStatus;\r
- switch (status) {\r
- case CONNECTION_STATUS_CONNECTING:\r
- connectionStatus = "Connecting";\r
- break;\r
- case CONNECTION_STATUS_CONNECTED:\r
- connectionStatus = "Connected";\r
- break;\r
- case CONNECTION_STATUS_DISCONNECTED:\r
- connectionStatus = "Disconnected";\r
- break;\r
- default:\r
- connectionStatus = "Unknown Status";\r
- break;\r
- }\r
-\r
- // 静态字符串缓冲区,用于返回结果\r
- static char result[MAX_STATUS_LENGTH];\r
- snprintf(result, sizeof(result), "%s: %s", networkType, connectionStatus);\r
-\r
- return result;\r
-}\r
-\r
-void NetWorkModule::AsyncExecuteCallback(void *arg)\r
-{\r
- NetParam *netParam = static_cast<NetParam *>(arg);\r
- if (ValidJsValue(callback_.net_connect_callback) && netParam != nullptr) {\r
- JSIValue result = JSI::CreateString(const_cast<char *>(GetNetworkStatusString(netParam->net_type, netParam->status)));\r
- JSIValue argv[ARGC_ONE] = {result};\r
- JSI::CallFunction(callback_.net_connect_callback, callback_.net_connect_thisVal, argv, ARGC_ONE);\r
- JSI::ReleaseValue(result);\r
- }\r
-}\r
-\r
-JSIValue NetWorkModule::RegisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)\r
-{\r
- if ((args == nullptr) || (argsNum == 0) || JSI::ValueIsUndefined(args[0])) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for registering net connection callback");\r
- return JSI::CreateUndefined();\r
- }\r
-\r
- JSI::ReleaseValue(callback_.net_connect_thisVal);\r
- JSI::ReleaseValue(callback_.net_connect_callback);\r
- callback_.net_connect_thisVal = JSI::AcquireValue(thisVal);\r
- callback_.net_connect_callback = JSI::AcquireValue(args[0]);\r
- if (callback_.net_connect_callback == nullptr) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Failed to register net connection callback");\r
- return JSI::CreateUndefined();\r
- }\r
-\r
- // 可以在注册回调后执行其他必要的操作\r
- net_connect_status_change(CONNECTION_STATUS_DISCONNECTED, NETWORK_TYPE_BLUETOOTH);\r
-\r
- return JSI::CreateUndefined();\r
-}\r
-\r
-JSIValue NetWorkModule::UnregisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)\r
-{\r
- if (callback_.net_connect_callback == nullptr) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "No net connection callback registered to unregister");\r
- return JSI::CreateUndefined();\r
- }\r
- JSI::ReleaseValue(callback_.net_connect_thisVal);\r
- JSI::ReleaseValue(callback_.net_connect_callback);\r
- callback_.net_connect_thisVal = nullptr;\r
- callback_.net_connect_callback = nullptr;\r
-\r
- return JSI::CreateUndefined();\r
-}\r
-\r
-JSIValue NetWorkModule::GetConnectState(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)\r
-{\r
-\r
- return JSI::CreateString(const_cast<char *>(GetNetworkStatusString(callback_.netParam.net_type, callback_.netParam.status)));\r
-}\r
-\r
-}\r
-}\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-void net_connect_status_change(uint8_t netConnectStatus,uint8_t type)\r
-{\r
- OHOS::ACELite::NetWorkModule::TriggerCallbackListener(netConnectStatus, type);\r
-}\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag. 2024-2025. All rights reserved.\r
- * Description: network wrapper\r
- * Author: SoftwarePlatform Group\r
- * Create: 2024-08-10\r
- */\r
-\r
-#ifndef NET_CONNECT_MODULE_H\r
-#define NET_CONNECT_MODULE_H\r
-\r
-#include <cJSON.h>\r
-#include "acelite_config.h"\r
-#include "jsi.h"\r
-#include "js_async_work.h"\r
-#include "non_copyable.h"\r
-#include "product_adapter.h"\r
-#include "abilityms_slite_client.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-void net_connect_status_change(uint8_t netConnectStatus, uint8_t type);\r
-#ifdef __cplusplus\r
-};\r
-#endif\r
-\r
-namespace OHOS {\r
-namespace ACELite {\r
-#define MAX_STATUS_LENGTH 128\r
-// 网络类型枚举\r
-typedef enum { \r
- NETWORK_TYPE_WIFI = 0,\r
- NETWORK_TYPE_BLUETOOTH,\r
- NETWORK_TYPE_UNKNOWN\r
-} NetworkType;\r
-\r
-// 连接状态枚举\r
-typedef enum {\r
- CONNECTION_STATUS_CONNECTING = 0,\r
- CONNECTION_STATUS_CONNECTED,\r
- CONNECTION_STATUS_DISCONNECTED,\r
- CONNECTION_STATUS_UNKNOWN\r
-} ConnectionStatus;\r
-\r
-struct NetParam {\r
- uint8_t status;\r
- uint8_t net_type = -1;\r
-};\r
-\r
-struct NetCallBack {\r
- JSIValue net_connect_callback = nullptr;\r
- JSIValue net_connect_thisVal = nullptr;\r
- NetParam netParam;\r
-};\r
-\r
-class NetWorkModule final : public MemoryHeap {\r
-public:\r
- ACE_DISALLOW_COPY_AND_MOVE(NetWorkModule);\r
- NetWorkModule() = default;\r
- ~NetWorkModule() = default;\r
- static NetCallBack callback_;\r
- static JSIValue RegisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum);\r
- static JSIValue UnregisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum);\r
- static JSIValue GetConnectState(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum);\r
- static void AsyncExecuteCallback(void *arg);\r
- static void TriggerCallbackListener(uint8_t netConnectStatus, uint8_t type);\r
-};\r
-\r
-void InitNetWorkModule(JSIValue exports)\r
-{\r
- JSI::SetModuleAPI(exports, "registerConnectListener", NetWorkModule::RegisterConnectListener);\r
- JSI::SetModuleAPI(exports, "unregisterConnectListener", NetWorkModule::UnregisterConnectListener);\r
- JSI::SetModuleAPI(exports, "getConnectState", NetWorkModule::GetConnectState);\r
-}\r
-\r
-} // namespace ACELite\r
-} // namespace OHOS\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- * Copyright (c) 2025 Huawei Device Co., Ltd.\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#include <string>\r
-#include "websocket_module.h"\r
-#include "net_websocket.h"\r
-#include <string.h>\r
-#include "ace_log.h"\r
-#include "errcode.h"\r
-#include "cmsis_os2.h"\r
-\r
-namespace OHOS {\r
-namespace ACELite {\r
-\r
-JSIValue ws;\r
-JSIValue close;\r
-JSIValue on;\r
-JSIValue off;\r
-JSIValue send;\r
-JSIValue connect;\r
-\r
-std::map<std::string, EventCallback *> WebsocketModule::eventCallbacks;\r
-\r
-JSIValue WebsocketModule::CreateWebsocket(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
-{\r
- ws = JSI::CreateObject();\r
- connect = JSI::CreateFunction(WebsocketModule::Connect);\r
- send = JSI::CreateFunction(WebsocketModule::Send);\r
- on = JSI::CreateFunction(WebsocketModule::On);\r
- off = JSI::CreateFunction(WebsocketModule::Off);\r
- close = JSI::CreateFunction(WebsocketModule::Close);\r
- JSI::SetNamedProperty(ws, "send", send);\r
- JSI::SetNamedProperty(ws, "connect", connect);\r
- JSI::SetNamedProperty(ws, "on", on);\r
- JSI::SetNamedProperty(ws, "off", off);\r
- JSI::SetNamedProperty(ws, "close", close);\r
- return ws;\r
-}\r
-\r
-static void OnOpen(int client)\r
-{\r
- auto it = WebsocketModule::eventCallbacks.find(std::string("open"));\r
- if (it == WebsocketModule::eventCallbacks.end()) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Can not find OnOpen Callback!");\r
- }\r
- JSIValue value = JSI::CreateObject();\r
- if (value != nullptr) {\r
- JSI::SetNumberProperty(value, "client", client);\r
- }\r
- JSIValue err = JSI::CreateBoolean(false);\r
- JSIValue argv[2] = {err, value};\r
- if (it != WebsocketModule::eventCallbacks.end()) {\r
- JSI::CallFunction(it->second->callback, it->second->context, argv, 2);\r
- }\r
- JSI::ReleaseValueList(value, err);\r
-}\r
-\r
-static void OnMessage(int client, const char *data, size_t length, bool isFinished,bool isBinary)\r
-{\r
- auto it = WebsocketModule::eventCallbacks.find(std::string("message"));\r
- if (it == WebsocketModule::eventCallbacks.end()) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Can not find OnMessage Callback!");\r
- }\r
- JSIValue value = JSI::CreateObject();\r
- if (value != nullptr) {\r
- JSI::SetNumberProperty(value, "length", length);\r
- JSI::SetStringProperty(value, "data", data);\r
- JSI::SetNumberProperty(value, "client", client);\r
- }\r
- JSIValue err = JSI::CreateBoolean(false);\r
- JSIValue argv[2] = {err, value};\r
- if (it != WebsocketModule::eventCallbacks.end()) {\r
- JSI::CallFunction(it->second->callback, it->second->context, argv, 2);\r
- }\r
- JSI::ReleaseValueList(value, err);\r
-}\r
-\r
-static void OnError(int client, struct WebSocketErrorResult errorResult)\r
-{\r
- auto it = WebsocketModule::eventCallbacks.find(std::string("error"));\r
- if (it == WebsocketModule::eventCallbacks.end()) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Can not find OnError Callback!");\r
- }\r
- JSIValue value = JSI::CreateObject();\r
- if (value != nullptr) {\r
- JSI::SetNumberProperty(value, "client", client);\r
- }\r
- JSIValue err = JSI::CreateBoolean(false);\r
- JSIValue argv[2] = {err, value};\r
- if (it != WebsocketModule::eventCallbacks.end()) {\r
- JSI::CallFunction(it->second->callback, it->second->context, argv, 2);\r
- }\r
- JSI::ReleaseValueList(value, err);\r
-}\r
-\r
-static void OnClose(int client)\r
-{\r
- auto it = WebsocketModule::eventCallbacks.find(std::string("open"));\r
- if (it == WebsocketModule::eventCallbacks.end()) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Can not find OnError Callback!");\r
- }\r
- JSIValue value = JSI::CreateObject();\r
- if (value != nullptr) {\r
- JSI::SetNumberProperty(value, "client", client);\r
- }\r
- JSIValue err = JSI::CreateBoolean(false);\r
- JSIValue argv[2] = {err, value};\r
- if (it != WebsocketModule::eventCallbacks.end()) {\r
- JSI::CallFunction(it->second->callback, it->second->context, argv, 2);\r
- }\r
- JSI::ReleaseValueList(value, err);\r
-}\r
-\r
-JSIValue WebsocketModule::Send(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
-{\r
- int client = JSI::ValueToNumber(JSI::AcquireValue(args[1]));\r
- char *message = JSI::ValueToString(JSI::AcquireValue(args[0]));\r
-\r
- size_t length = strlen(message);\r
- int ret = WebSocketClientSendText(client, message, length);\r
-\r
- JSIValue isError;\r
- isError = JSI::CreateBoolean(ret == 0 ? false : true);\r
- JSIValue value = JSI::CreateObject();\r
- if (value != nullptr) {\r
- JSI::SetNumberProperty(value, "client", client);\r
- }\r
-\r
- JSIValue callback = JSI::AcquireValue(args[2]);\r
- JSIValue argv[ARGC_TWO] = {isError, value};\r
- JSI::CallFunction(callback, thisVal, argv, ARGC_TWO);\r
- JSI::ReleaseValueList(value, callback);\r
- JSI::ReleaseString(message);\r
- return JSI::CreateUndefined();\r
-}\r
-\r
-JSIValue WebsocketModule::Connect(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
-{\r
- char *url = JSI::ValueToString(JSI::AcquireValue(args[0]));\r
- int client = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
- if (client < 0) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "WebSocketClientConstructor fail!");\r
- return JSI::CreateUndefined();\r
- }\r
-\r
- int ret = WebSocketClientConnect(client, url,NULL);\r
- if (ret != 0) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "WebSocketClientConnect fail!");\r
- return JSI::CreateUndefined();\r
- }\r
-\r
- JSIValue isError;\r
- isError = JSI::CreateBoolean(ret == 0 ? false : true);\r
-\r
- JSIValue value = JSI::CreateObject();\r
- if (value != nullptr) {\r
- JSI::SetNumberProperty(value, "client", client);\r
- }\r
-\r
- JSIValue callback = JSI::AcquireValue(args[1]);\r
- JSIValue argv[ARGC_TWO] = {isError, value};\r
- JSI::CallFunction(callback, thisVal, argv, ARGC_TWO);\r
- JSI::ReleaseValueList(value, callback, isError);\r
- JSI::ReleaseString(url);\r
- return JSI::CreateUndefined();\r
-}\r
-\r
-JSIValue WebsocketModule::Close(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
-{\r
- int client = JSI::ValueToNumber(JSI::AcquireValue(args[0]));\r
- int ret = WebSocketClientClose(client);\r
- if (ret != 0) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "WebSocketClientConnect fail!");\r
- }\r
- JSIValue isError;\r
- isError = JSI::CreateBoolean(ret == 0 ? false : true);\r
- JSIValue value = JSI::CreateObject();\r
- if (value != nullptr) {\r
- JSI::SetNumberProperty(value, "client", client);\r
- }\r
-\r
- JSIValue callback = JSI::AcquireValue(args[1]);\r
- JSIValue argv[ARGC_TWO] = {isError, value};\r
- JSI::CallFunction(callback, thisVal, argv, ARGC_TWO);\r
- JSI::ReleaseValueList(isError, value, callback);\r
- return JSI::CreateUndefined();\r
-}\r
-\r
-void WebsocketModule::Destroy()\r
-{\r
- for (auto it = eventCallbacks.begin(); it != eventCallbacks.end();) {\r
- auto currentIt = it;\r
- ++it;\r
- EventCallback *ec = currentIt->second;\r
- JSI::ReleaseValue(ec->context);\r
- JSI::ReleaseValue(ec->callback);\r
- delete ec;\r
- eventCallbacks.erase(currentIt);\r
- }\r
- eventCallbacks.clear();\r
-\r
- JSI::ReleaseValue(on);\r
- JSI::ReleaseValue(off);\r
- JSI::ReleaseValue(connect);\r
- JSI::ReleaseValue(close);\r
- JSI::ReleaseValue(send);\r
- JSI::ReleaseValue(ws);\r
-}\r
-\r
-JSIValue WebsocketModule::On(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
-{\r
- if (argsSize < 2) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Function parameters are not enough!");\r
- return JSI::CreateBoolean(false);\r
- }\r
-\r
- char *eventName = JSI::ValueToString(JSI::AcquireValue(args[0]));\r
-\r
- auto it = eventCallbacks.find(eventName);\r
- if (it != eventCallbacks.end()) {\r
- EventCallback *oldEc = it->second;\r
- JSI::ReleaseValue(oldEc->callback);\r
- JSI::ReleaseValue(oldEc->context);\r
- delete oldEc;\r
- eventCallbacks.erase(it);\r
- }\r
-\r
- JSIValue callback = JSI::AcquireValue(args[1]);\r
-\r
- EventCallback *ec = new EventCallback;\r
- if (ec != nullptr) {\r
- ec->callback = JSI::AcquireValue(callback);\r
- ec->context = JSI::AcquireValue(thisVal);\r
- eventCallbacks[eventName] = ec;\r
- JSI::ReleaseString(eventName);\r
- JSI::ReleaseValue(callback);\r
- return JSI::CreateBoolean(true);\r
- } else {\r
- JSI::ReleaseString(eventName);\r
- JSI::ReleaseValue(callback);\r
- }\r
-\r
- return JSI::CreateBoolean(false);\r
-}\r
-\r
-JSIValue WebsocketModule::Off(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
-{\r
- if (argsSize < 1) {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Function parameters are not enough!");\r
- return JSI::CreateBoolean(false);\r
- }\r
-\r
- char *eventName = JSI::ValueToString(JSI::AcquireValue(args[0]));\r
-\r
- auto it = eventCallbacks.find(eventName);\r
- if (it != eventCallbacks.end()) {\r
- JSI::ReleaseValue(it->second->callback);\r
- JSI::ReleaseValue(it->second->context);\r
- delete it->second;\r
- eventCallbacks.erase(it);\r
- JSI::ReleaseString(eventName);\r
- return JSI::CreateBoolean(true);\r
- }else {\r
- HILOG_ERROR(HILOG_MODULE_ACE, "Off failed, target not found!");\r
- JSI::ReleaseString(eventName);\r
- }\r
- return JSI::CreateBoolean(false);\r
-}\r
-\r
-void InitWebsocketClientModule(JSIValue exports)\r
-{\r
- JSI::SetModuleAPI(exports, "createWebsocket", WebsocketModule::CreateWebsocket);\r
- JSI::SetOnTerminate(exports, WebsocketModule::OnTerminate);\r
-}\r
-\r
-void WebsocketModule::OnTerminate()\r
-{\r
- WebsocketModule::Destroy();\r
-}\r
-} // namespace ACELite\r
-} // namespace OHOS
\ No newline at end of file
+++ /dev/null
-#include "lwip_test.h"
-#include "lwip/netif.h"
-#include "lwip/netifapi.h"
-#include "lwip/ethernetif.h"
-#define IP_ADDR0 192
-#define IP_ADDR1 168
-#define IP_ADDR2 1
-#define IP_ADDR3 122
-
-#define NETMASK_ADDR0 255
-#define NETMASK_ADDR1 255
-#define NETMASK_ADDR2 255
-#define NETMASK_ADDR3 0
-
-#define GW_ADDR0 192
-#define GW_ADDR1 168
-#define GW_ADDR2 1
-#define GW_ADDR3 1
-
-#define WIFI_DRIVER_IF 801
-#define HWADDR_LEN 6
-
-struct netif g_netif;
-
-err_t my_hw_input(struct pbuf *p, struct netif *netif);
-
-err_t my_hw_input(struct pbuf *p, struct netif *netif)
-{
- (void)p;
- (void)netif;
- printf("enter my_hw_input\n");
- return 0;
-}
-
-void lwip_test_init(void)
-{
- int ret = 0;
- ip4_addr_t ip, gw, netmask;
-
- IP4_ADDR(&ip, IP_ADDR0, IP_ADDR1, IP_ADDR2, IP_ADDR3);
- IP4_ADDR(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- IP4_ADDR(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
-
- g_netif.hwaddr_len = HWADDR_LEN;
- g_netif.hwaddr[0] = 0x00;
- g_netif.hwaddr[1] = 0x11;
- g_netif.hwaddr[2] = 0x22;
- g_netif.hwaddr[3] = 0x33;
- g_netif.hwaddr[4] = 0x44;
- g_netif.hwaddr[5] = 0x55;
-
- g_netif.flags = 4;
- g_netif.input = my_hw_input;
- /* Initilialize the LwIP stack */
- /* add the network interface */
- netif_add(&g_netif, &ip, &netmask, &gw, NULL, ðernetif_init, tcpip_input);
- /* Registers the default network interface */
- netif_set_default(&g_netif);
-
- netif_is_link_up(&g_netif);
- /* When the netif is fully configured this function must be called */
- netif_set_up(&g_netif);
-}
+++ /dev/null
-#include "socket_test.h"
-#include "lwip/opt.h"
-#include "lwip/sys.h"
-#include "lwip/api.h"
-#include <lwip/sockets.h>
-#include <errno.h>
-
-#define SERVER_IP "192.168.1.121"
-#define SEND_PORT 5002
-#define BUFFER_SIZE 1024
-
-void udp_client(void) {
- int sockfd;
- struct sockaddr_in server_addr;
- char buffer[BUFFER_SIZE];
-
- // 创建 UDP 套接字
- sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sockfd == -1) {
- perror("Error creating socket");
- exit(EXIT_FAILURE);
- }
-
- // 设置服务器地址信息
- memset(&server_addr, 0, sizeof(server_addr));
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = lwip_htons(SEND_PORT);
- if (inet_aton(SERVER_IP, &server_addr.sin_addr) == 0) {
- perror("Invalid server IP address");
- close(sockfd);
- exit(EXIT_FAILURE);
- }
-
- while (1) {
- // 发送数据
- const char *message = "Hello, UDP Server!";
- int len = strlen(message);
- printf("send message: \n");
- for (int i = 0; i < len; i++) {
- printf(" %x ", message[i]);
- }
- printf("\n");
- if (sendto(sockfd, message, strlen(message), 0, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
- perror("Error sending data");
- close(sockfd);
- exit(EXIT_FAILURE);
- }
- sleep(1);
- }
-}
-
-#define REV_PORT 5001
-#define BUFFER_SIZE 1024
-
-void udp_server(void)
-{
- int sockfd;
- struct sockaddr_in server_addr;
- char buffer[BUFFER_SIZE];
-
- // 创建 UDP 套接字
- sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sockfd == -1) {
- perror("Error creating socket");
- exit(EXIT_FAILURE);
- }
-
- // 设置服务器地址信息
- memset(&server_addr, 0, sizeof(server_addr));
- server_addr.sin_family = AF_INET;
- server_addr.sin_addr.s_addr = INADDR_ANY;
- server_addr.sin_port = lwip_htons(REV_PORT);
-
- // 绑定套接字
- if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
- perror("Error binding socket");
- close(sockfd);
- exit(EXIT_FAILURE);
- }
-
- while (1) {
- socklen_t client_len = sizeof(struct sockaddr_in);
- struct sockaddr_in client_addr;
-
- // 接收数据
- ssize_t bytes_received = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client_addr, &client_len);
- if (bytes_received == -1) {
- perror("Error receiving data");
- continue;
- }
-
- // 打印接收到的数据
- printf("Received message from %s:%d\n", inet_ntoa(client_addr.sin_addr), lwip_ntohs(client_addr.sin_port));
- printf("Received message: %d %s\n", (int)bytes_received, buffer);
- printf("message: ");
- for (int i = 0; i < bytes_received; i++) {
- printf(" %02x ", buffer[i]);
- }
- printf("\n");
-
- // 清空缓冲区
- memset(buffer, 0, BUFFER_SIZE);
- // break;
- }
-
- close(sockfd);
-}
-
-void client_init(void) {
- printf("___enter client_init function___\n");
- sys_thread_new("server", udp_server, NULL, 4096, 4);
- sys_thread_new("client", udp_client, NULL, 4096, 4);
-}
\ No newline at end of file
+++ /dev/null
-#include "lwip_test.h"
-#include "lwip/netif.h"
-#include "lwip/netifapi.h"
-#include "lwip/ethernetif.h"
-#define IP_ADDR0 192
-#define IP_ADDR1 168
-#define IP_ADDR2 1
-#define IP_ADDR3 122
-
-#define NETMASK_ADDR0 255
-#define NETMASK_ADDR1 255
-#define NETMASK_ADDR2 255
-#define NETMASK_ADDR3 0
-
-#define GW_ADDR0 192
-#define GW_ADDR1 168
-#define GW_ADDR2 1
-#define GW_ADDR3 1
-
-#define WIFI_DRIVER_IF 801
-#define HWADDR_LEN 6
-
-struct netif g_netif;
-
-err_t my_hw_input(struct pbuf *p, struct netif *netif);
-
-err_t my_hw_input(struct pbuf *p, struct netif *netif)
-{
- (void)p;
- (void)netif;
- printf("enter my_hw_input\n");
- return 0;
-}
-
-void lwip_test_init(void)
-{
- int ret = 0;
- ip4_addr_t ip, gw, netmask;
-
- IP4_ADDR(&ip, IP_ADDR0, IP_ADDR1, IP_ADDR2, IP_ADDR3);
- IP4_ADDR(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- IP4_ADDR(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
-
- g_netif.hwaddr_len = HWADDR_LEN;
- g_netif.hwaddr[0] = 0x00;
- g_netif.hwaddr[1] = 0x11;
- g_netif.hwaddr[2] = 0x22;
- g_netif.hwaddr[3] = 0x33;
- g_netif.hwaddr[4] = 0x44;
- g_netif.hwaddr[5] = 0x55;
-
- g_netif.flags = 4;
- g_netif.input = my_hw_input;
- /* Initilialize the LwIP stack */
- /* add the network interface */
- netif_add(&g_netif, &ip, &netmask, &gw, NULL, ðernetif_init, tcpip_input);
- /* Registers the default network interface */
- netif_set_default(&g_netif);
-
- netif_is_link_up(&g_netif);
- /* When the netif is fully configured this function must be called */
- netif_set_up(&g_netif);
-}
+++ /dev/null
-#include "socket_test.h"
-#include "lwip/opt.h"
-#include "lwip/sys.h"
-#include "lwip/api.h"
-#include <lwip/sockets.h>
-#include <errno.h>
-
-#define SERVER_IP "192.168.1.121"
-#define SEND_PORT 5002
-#define BUFFER_SIZE 1024
-
-void udp_client(void) {
- int sockfd;
- struct sockaddr_in server_addr;
- char buffer[BUFFER_SIZE];
-
- // 创建 UDP 套接字
- sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sockfd == -1) {
- perror("Error creating socket");
- exit(EXIT_FAILURE);
- }
-
- // 设置服务器地址信息
- memset(&server_addr, 0, sizeof(server_addr));
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = lwip_htons(SEND_PORT);
- if (inet_aton(SERVER_IP, &server_addr.sin_addr) == 0) {
- perror("Invalid server IP address");
- close(sockfd);
- exit(EXIT_FAILURE);
- }
-
- while (1) {
- // 发送数据
- const char *message = "Hello, UDP Server!";
- int len = strlen(message);
- printf("send message: \n");
- for (int i = 0; i < len; i++) {
- printf(" %x ", message[i]);
- }
- printf("\n");
- if (sendto(sockfd, message, strlen(message), 0, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
- perror("Error sending data");
- close(sockfd);
- exit(EXIT_FAILURE);
- }
- sleep(1);
- }
-}
-
-#define REV_PORT 5001
-#define BUFFER_SIZE 1024
-
-void udp_server(void)
-{
- int sockfd;
- struct sockaddr_in server_addr;
- char buffer[BUFFER_SIZE];
-
- // 创建 UDP 套接字
- sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sockfd == -1) {
- perror("Error creating socket");
- exit(EXIT_FAILURE);
- }
-
- // 设置服务器地址信息
- memset(&server_addr, 0, sizeof(server_addr));
- server_addr.sin_family = AF_INET;
- server_addr.sin_addr.s_addr = INADDR_ANY;
- server_addr.sin_port = lwip_htons(REV_PORT);
-
- // 绑定套接字
- if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
- perror("Error binding socket");
- close(sockfd);
- exit(EXIT_FAILURE);
- }
-
- while (1) {
- socklen_t client_len = sizeof(struct sockaddr_in);
- struct sockaddr_in client_addr;
-
- // 接收数据
- ssize_t bytes_received = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client_addr, &client_len);
- if (bytes_received == -1) {
- perror("Error receiving data");
- continue;
- }
-
- // 打印接收到的数据
- printf("Received message from %s:%d\n", inet_ntoa(client_addr.sin_addr), lwip_ntohs(client_addr.sin_port));
- printf("Received message: %d %s\n", (int)bytes_received, buffer);
- printf("message: ");
- for (int i = 0; i < bytes_received; i++) {
- printf(" %02x ", buffer[i]);
- }
- printf("\n");
-
- // 清空缓冲区
- memset(buffer, 0, BUFFER_SIZE);
- // break;
- }
-
- close(sockfd);
-}
-
-void client_init(void) {
- printf("___enter client_init function___\n");
- sys_thread_new("server", udp_server, NULL, 512, 4);
- sys_thread_new("client", udp_client, NULL, 512, 4);
-}
\ No newline at end of file