2 * @Author: luozheng 1732036298@qq.com
3 * @Date: 2024-05-07 11:26:06
4 * @LastEditors: luozheng 1732036298@qq.com
5 * @LastEditTime: 2024-11-05 14:52:23
6 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/RespiratoryTraining/src/RespiratoryTrainingPresenter.cpp
9 #include "AppViewIDs.h"
10 #include "NativeAbility.h"
11 #include "respiratorytraining/include/RespiratoryTrainingPresenter.h"
12 #include "respiratorytraining/include/RespiratoryTrainingView.h"
13 #include "common/key_code.h"
14 #include <custom_utils.h>
18 #include "respiratorytraining/include/RespiratoryTrainingModel.h"
19 #include "gfx_utils/mem_check.h"
21 #include "ui_resource_string.h"
22 #include "NativeRegisterManager.h"
25 REGIST_MENU_PRO(VIEW_RESPIRATORY_TRAINING, RespiratoryTrainingView, RespiratoryTrainingPresenter,
26 PNG_APPLIST_BREATHE_IMAGE_BIG, PNG_APPLIST_BREATHE_IMAGE, PNG_APPLIST_BREATHE_IMAGE, "呼吸训练", STR_BREATH_TRAINING);
28 // 当前Presenter属性实例化的内存指针
29 static RespiratoryTrainingPresenter *g_pRespiratoryTrainingPresenter = nullptr;
31 RespiratoryTrainingPresenter::RespiratoryTrainingPresenter()
33 g_pRespiratoryTrainingPresenter = this;
35 MemCheck::GetInstance()->EnableLeakCheck(true);
39 RespiratoryTrainingPresenter::~RespiratoryTrainingPresenter()
41 g_pRespiratoryTrainingPresenter = nullptr;
43 MemCheck::GetInstance()->EnableLeakCheck(false);
47 RespiratoryTrainingPresenter *RespiratoryTrainingPresenter::GetInstance()
49 return g_pRespiratoryTrainingPresenter;
52 void RespiratoryTrainingPresenter::OnStart()
54 // ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
57 void RespiratoryTrainingPresenter::OnPause(void)
59 Presenter<RespiratoryTrainingView>::OnPause();
62 void RespiratoryTrainingPresenter::OnResume(void)
64 Presenter<RespiratoryTrainingView>::OnResume();
67 void RespiratoryTrainingPresenter::OnStop(void)
69 ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
70 RespiratoryTrainingModel::GetInstance().RT_StopTimer();
71 RespiratoryTrainingModel::GetInstance().ResumeStatus();
74 bool RespiratoryTrainingPresenter::OnClick(UIView &view, const ClickEvent &event)
76 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnClick");
77 std::string viewId = view.GetViewId();
78 if (viewId == RTCLABELBUTTON)
80 NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
83 std::map<std::string, int> viewMap = {
84 {TRAINING_DURATION_ONE_MIN, 1},
85 {TRAINING_DURATION_TWO_MIN, 2},
86 {TRAINING_DURATION_THREE_MIN, 3},
87 {TRAINING_DURATION_FOUR_MIN, 4},
88 {TRAINING_DURATION_FIVE_MIN, 5},
90 auto it = viewMap.find(viewId);
91 if (it != viewMap.end())
93 if (viewId == it->first)
95 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "select time = %d", it->second);
96 RespiratoryTrainingModel::GetInstance().SetRespiratoryTrainingSelectTime(it->second);
97 if (RespiratoryTrainingDurationSelectionView::GetInstance())
99 RespiratoryTrainingDurationSelectionView::GetInstance()->UpdateRespiratoryTrainingDurationSelectionView();
106 bool RespiratoryTrainingPresenter::OnDrag(UIView &view, const DragEvent &event)
109 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnDrag");
110 if ((event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) // 拖动过程中判断是否是水平滑动
112 RespiratoryTrainingPresenter::X_DRAG_FLAG = true;
117 bool RespiratoryTrainingPresenter::OnDragEnd(UIView &view, const DragEvent &event)
119 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnDragEnd");
120 if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && RespiratoryTrainingPresenter::X_DRAG_FLAG)
122 std::string viewId = view.GetViewId();
123 if (viewId == RESPIRATORYTRAINING_DURATIONSELECTION_VIEW)
125 view_->ChangeView(RESPIRATORY_TRAINING_DURATION_SELECTION, RESPIRATORYTRAINING);
129 NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
131 RespiratoryTrainingPresenter::X_DRAG_FLAG = false;
136 bool RespiratoryTrainingPresenter::OnKeyAct(UIView &view, const KeyEvent &event) // 增加按键事件
139 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnKeyAct");
140 uint16_t keyID = event.GetKeyId();
141 uint16_t keyState = event.GetState();
142 // 如果是power键,且是亮屏状态,按键释放就返回上一级
143 if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
145 NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
150 int RespiratoryTrainingPresenter::GetRespiratoryTrainingSelectTime()
152 int time = RespiratoryTrainingModel::GetInstance().GetRespiratoryTrainingSelectTime();
157 textId = STR_ONE_MIN;
160 textId = STR_TWO_MIN;
163 textId = STR_THREE_MIN;
166 textId = STR_FOUR_MIN;
169 textId = STR_FIVE_MIN;
172 textId = STR_TWO_MIN;
178 std::string RespiratoryTrainingPresenter::GetRespiratoryTrainingSelectTime1()
180 int time = RespiratoryTrainingModel::GetInstance().GetRespiratoryTrainingSelectTime();