From b06a79572a808e0d2f5772b72ae64fb55d7e7032 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Fri, 26 Jul 2024 12:04:48 +0800 Subject: [PATCH] =?utf8?q?TrainingSlice=E9=80=82=E9=85=8D=E6=8C=89?= =?utf8?q?=E9=94=AE=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../traing/include/TraingEnddataPresenter.h | 7 ++ .../nativeui/traing/include/TraingModel.h | 13 +- .../traing/include/TraingNomalPresenter.h | 7 +- .../nativeui/traing/include/TraingNomalView.h | 7 ++ .../nativeui/traing/include/TraingPresenter.h | 7 ++ .../traing/include/TraingSetPresenter.h | 7 ++ .../nativeui/traing/include/TraingSetView.h | 1 + .../traing/src/TraingEnddataPresenter.cpp | 65 +++++----- .../nativeui/traing/src/TraingEnddataView.cpp | 18 ++- .../nativeui/traing/src/TraingModel.cpp | 17 ++- .../traing/src/TraingNomalPresenter.cpp | 28 +++-- .../nativeui/traing/src/TraingNomalView.cpp | 27 +++-- .../nativeui/traing/src/TraingPresenter.cpp | 20 ++-- .../traing/src/TraingSetPresenter.cpp | 52 ++++---- .../nativeui/traing/src/TraingSetView.cpp | 18 ++- .../nativeui/traing/src/TraingView.cpp | 18 ++- .../training_card/src/TraingCardPresenter.cpp | 111 ++++++++++-------- .../training_card/src/TrainingDataView.cpp | 1 - .../src/Training_CardPresenter.cpp | 13 ++ .../include/TraingAquaticPresenter.h | 12 +- .../src/TraingAquaticModel.cpp | 8 -- .../src/TraingAquaticPresenter.cpp | 45 +++---- .../src/TraingAquaticView.cpp | 21 +++- .../include/TraingBallPresenter.h | 14 ++- .../src/TraingBallPresenter.cpp | 22 +++- .../training_list_ball/src/TraingBallView.cpp | 21 +++- .../include/TraingDancePresenter.h | 5 +- .../src/TraingDancePresenter.cpp | 20 +++- .../src/TraingDanceView.cpp | 21 +++- .../include/TraingFitnessPresenter.h | 11 +- .../src/TraingFitnessPresenter.cpp | 22 +++- .../src/TraingFitnessView.cpp | 25 +++- .../include/TraingIcePresenter.h | 9 +- .../src/TraingIcePresenter.cpp | 20 +++- .../training_list_ice/src/TraingIceView.cpp | 22 +++- .../include/TraingLimitPresenter.h | 4 +- .../src/TraingLimitPresenter.cpp | 17 ++- .../src/TraingLimitView.cpp | 23 +++- .../include/TraingMoreModel.h | 8 +- .../include/TraingMorePresenter.h | 15 ++- .../src/TraingMoreModel.cpp | 14 ++- .../src/TraingMorePresenter.cpp | 48 +++++++- .../training_list_more/src/TraingMoreView.cpp | 19 ++- .../include/TraingOtherPresenter.h | 4 +- .../src/TraingOtherPresenter.cpp | 20 +++- .../src/TraingOtherView.cpp | 25 +++- .../include/TraingRestPresenter.h | 8 +- .../src/TraingRestPresenter.cpp | 20 +++- .../training_list_rest/src/TraingRestView.cpp | 23 +++- .../include/TraingRecordPresenter.h | 20 +--- .../src/TraingRecordPresenter.cpp | 28 ++++- 51 files changed, 723 insertions(+), 308 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h index 197d95d94..9f2c02f55 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-07-05 18:15:38 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 18:17:08 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h + */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com @@ -28,6 +34,7 @@ namespace OHOS void OnPause() override; void OnResume() override; void OnStop() override; + void NavigateBack(); // 返回函数 static TraingEnddataPresenter *GetInstance(); private: diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h index 1599148cf..40b8501b6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h @@ -164,6 +164,11 @@ namespace OHOS VERY_HIGH_INTENSITY }; + enum ENTEYTYPE + { + MAIN_ENTER = 0, + APPLIST_ENTER, + }; struct SportData { uint32 starttime; // 开始时间时间戳 @@ -297,7 +302,7 @@ namespace OHOS int CalculateAverageHeartRate(int newHeartRate); /*显示心率计算*/ int CalculateFilteredHeartRate(int newHeartRate); - + int Averageheartrate(int newHeartRate); /*保存训练记录到json文件*/ @@ -327,6 +332,10 @@ namespace OHOS /*保存数据*/ void RecordSportData(); + /*进入训练方式*/ + void SetEntryType(ENTEYTYPE type); + ENTEYTYPE GetEntryType(); + private: TraingModel(const TraingModel &) = delete; TraingModel &operator=(const TraingModel &) = delete; @@ -337,6 +346,8 @@ namespace OHOS ExerciseState sportState_ = ExerciseState::General; // 训练状态 ExerciseTag sportTagType_ = ExerciseTag::UNKNOW; // 训练目标类型 + ENTEYTYPE entey_type = ENTEYTYPE::MAIN_ENTER; // 进入方式 + int sportTag_ = 0; // 训练目标 int freq = 0; // 训练发送数据频率 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h index cb7e898a1..cc6134cfe 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h @@ -1,9 +1,3 @@ -/*** - * @Date: 2024-04-15 10:55:58 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-04-17 14:18:05 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h - */ #ifndef _TraingNomal_PRESENTER_H #define _TraingNomal_PRESENTER_H @@ -28,6 +22,7 @@ namespace OHOS void OnPause() override; void OnResume() override; void OnStop() override; + void NavigateBack(); static TraingNomalPresenter *GetInstance(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h index 5c7c58c18..3930b10b3 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h @@ -1,4 +1,10 @@ /*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 17:40:40 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h + */ +/*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-04-23 20:29:54 @@ -51,6 +57,7 @@ namespace OHOS void InitList(); void PreLoad(void); + void UpdateTraingTag(); // 更新训练目标 private: UIView::OnDragListener *draglistener{nullptr}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h index 50dc63765..db1adc5d1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 18:44:38 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h + */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com @@ -28,6 +34,7 @@ namespace OHOS void OnPause() override; void OnResume() override; void OnStop() override; + void NavigateBack(); static TraingPresenter *GetInstance(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h index 9d43f684d..b9636780e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-07-24 09:45:49 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 17:28:43 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h + */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com @@ -42,6 +48,7 @@ namespace OHOS const char *GetButtonIdFromCard(int cardID); int GetTagFromCard(int cardID); ExerciseTag GetExerciseTagFromCard(int cardID); + void NavigateBack(); private: // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h index a508bd924..edbe7dc9a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h @@ -65,6 +65,7 @@ namespace OHOS bool ChangeSetDurationView(int16_t thisview); bool ClickFunc(int16_t interface); void ChangeView(int16_t hideView, int16_t showView); + void SetCurrentViewId(int viewId) { CurrentViewId = viewId; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp index e19a9221e..25464148c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp @@ -1,21 +1,3 @@ -/*** - * @Date: 2024-06-12 11:24:16 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-06-13 15:08:56 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp - */ -/*** - * @Date: 2024-04-15 14:19:47 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-06-11 15:34:57 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp - */ -/*** - * @Date: 2024-04-15 14:19:47 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-04-17 14:59:43 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp - */ #include "AppViewIDs.h" #include "components/ui_label_ext.h" #include "ui_resource_string.h" @@ -32,57 +14,66 @@ namespace OHOS { - // 当前Presenter属性实例化的内存指针 static TraingEnddataPresenter *g_pTraingEnddataPresenter = nullptr; TraingEnddataPresenter::TraingEnddataPresenter() { - g_pTraingEnddataPresenter = this; } TraingEnddataPresenter::~TraingEnddataPresenter() { - g_pTraingEnddataPresenter = nullptr; } TraingEnddataPresenter *TraingEnddataPresenter::GetInstance() { - return g_pTraingEnddataPresenter; } void TraingEnddataPresenter::OnStart() { - Presenter::OnStart(); } - void TraingEnddataPresenter::OnPause(void) + void TraingEnddataPresenter::OnPause() { - Presenter::OnPause(); } - void TraingEnddataPresenter::OnResume(void) + void TraingEnddataPresenter::OnResume() { - Presenter::OnResume(); } - void TraingEnddataPresenter::OnStop(void) + void TraingEnddataPresenter::OnStop() { - Presenter::OnStop(); } + void TraingEnddataPresenter::NavigateBack() + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + + // 根据前一界面切换 + if (preSlice == VIEW_TRAINING_RECORD) + { + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM); + } + else if (preSlice == VIEW_TRAININGCRAD) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE, TransitionType::TRANSITION_ZOOM); + } + } + bool TraingEnddataPresenter::OnDrag(UIView &view, const DragEvent &event) { - if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + event.GetDeltaX() > X_DRAG_OFFSET && + event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY()))) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD); + NavigateBack(); } UNUSED(view); return true; @@ -90,23 +81,23 @@ namespace OHOS bool TraingEnddataPresenter::OnClick(UIView &view, const ClickEvent &event) { - // 根据控件id查找是哪个控件触发了点击回调 - if (strcmp(view.GetViewId(), BUTTONBACK) == 0) + if (view.GetViewId() == BUTTONBACK) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NavigateBack(); } return true; } + bool TraingEnddataPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { unsigned short keyID = event.GetKeyId(); unsigned short keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) { - // 回退 - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM); + NavigateBack(); } return true; } -} +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp index 4e4efdd16..184885ea0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp @@ -360,7 +360,14 @@ namespace OHOS printf("TraingEnddataView data initialization complete.\r\n"); } - + // 设置按键监听 + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingEnddataView::OnStart() { container_ = new UIViewGroup(); @@ -386,10 +393,7 @@ namespace OHOS PreLoad(); InitData(); RootView::GetInstance()->Add(container_); - - // 增加按键监听 - RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance(); - RootView::GetInstance()->SetOnKeyActListener(keyactListener); + SetKeyActListener(); } void TraingEnddataView::OnSetUpView() @@ -409,6 +413,10 @@ namespace OHOS void TraingEnddataView::OnStop() { View::OnStop(); + + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); return; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp index 06f15764a..d93cb4b1a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -419,13 +419,12 @@ namespace OHOS } sportdata->heart = cyweeInfo->hrs; - + SetIntensity(sportdata->heart); // 设置训练强度 if (cyweeInfo->hrs > 50) { // sportdata->heart = CalculateFilteredHeartRate(cyweeInfo->hrs); // 处理显示心率 // sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理正常的平均心率 sportdata->avgheart = Averageheartrate(sportdata->heart); - SetIntensity(sportdata->heart); // 设置训练强度 } // 达到最高心率进行心率提醒弹窗 @@ -836,7 +835,7 @@ namespace OHOS totalHeartRate = newHeartRate; } totalHeartRate = (totalHeartRate + newHeartRate) / 2; - + return totalHeartRate; } // 设置训练目标类型以及训练目标 @@ -873,6 +872,7 @@ namespace OHOS // 将 heart 转换为 double 以避免整数除法 double heartRateAsDouble = static_cast(heart); double intensityPercentage = (heartRateAsDouble / (double)maxHeartRate) * 100; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "intensityPercentage is %d", intensityPercentage); if (intensityPercentage < LOW_INTENSITY_THRESHOLD) { @@ -1116,7 +1116,16 @@ namespace OHOS return true; // delete data; } - + /*设置进入方式*/ + void TraingModel::SetEntryType(ENTEYTYPE type) + { + entey_type = type; + } + /*获取进入方式*/ + ENTEYTYPE TraingModel::GetEntryType() + { + return entey_type; + } /*设置开启方式*/ void TraingModel::SetSportOpenWay(bool way) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp index 628e33ee2..140290df7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp @@ -8,12 +8,12 @@ #include "custom_utils.h" #include "common/key_code.h" - #include #include #include #include "traing/include/TraingNomalPresenter.h" #include "traing/training_card/include/TraingCardPresenter.h" +#include "MainModel.h" // #include "TraingNomalView.h" namespace OHOS @@ -63,14 +63,26 @@ namespace OHOS Presenter::OnStop(); } + // 回退逻辑 + void TraingNomalPresenter::NavigateBack() + { + /* + 准备训练界面进入: + 1.[主界面] 进入 + 2.[traing] 进入 + 3.[更多]->[具体训练项]进入 + 4.[设置训练目标]进入 {不返回} + */ + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM); + } bool TraingNomalPresenter::OnDrag(UIView &view, const DragEvent &event) { - if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) + UNUSED(view); + if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) && + (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"TraingNomalPresenter OnDrag!\r\rn"); - NativeAbility::GetInstance().Back(); // 返回函数 + NavigateBack(); } - UNUSED(view); return true; } @@ -79,11 +91,14 @@ namespace OHOS // 根据控件id查找是哪个控件触发了点击回调 if (strcmp(view.GetViewId(), BUTTONSET) == 0) { + // 训练准备 -> 训练设置 NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGSET); } if (strcmp(view.GetViewId(), BUTTONGO) == 0) { + // 开始训练 ->不返回 NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD); + // 获取运动项目 ExerciseClass type = TraingModel::GetInstance()->GetSportId(); // 开启对应的运动 @@ -100,8 +115,7 @@ namespace OHOS // 如果是power键,且是亮屏状态,按键释放就返回上一级 if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) { - // 回退 - NativeAbility::GetInstance().Back(); + NavigateBack(); } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp index fd263b448..aba06113a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp @@ -53,6 +53,7 @@ namespace OHOS // Set additional property buttonGo_->SetImageSrc(GO_1_IMAGE, GO_1_IMAGE); + // 显示设置目标 InitButtonExt(buttonSet_, 160, 370, 150, 50, BUTTONSET, STR_SET_GOALS, 30); buttonSet_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); // 设置为透明按键 buttonSet_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); @@ -82,12 +83,7 @@ namespace OHOS delete buttonSet_; buttonSet_ = nullptr; } - if (container_ != nullptr) - { - container_->RemoveAll(); - delete container_; - container_ = nullptr; - } + } void TraingNomalView::PreLoad(void) @@ -98,6 +94,14 @@ namespace OHOS viewiInitStatus = true; } } + // 设置按键监听 + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingNomalPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingNomalView::OnStart() { container_ = new UIViewGroup(); @@ -122,12 +126,12 @@ namespace OHOS PreLoad(); RootView::GetInstance()->Add(container_); - - // 增加按键监听 - RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingNomalPresenter::GetInstance(); - RootView::GetInstance()->SetOnKeyActListener(keyactListener); + SetKeyActListener(); } + // 更新训练目标 [考虑 通用目标 特殊目标] + void TraingNomalView::UpdateTraingTag() {} + void TraingNomalView::OnSetUpView() { @@ -146,6 +150,9 @@ namespace OHOS { View::OnStop(); RootView::GetInstance()->RemoveAll(); + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); return; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp index 4bc39d0c8..8ee55650b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp @@ -61,6 +61,12 @@ namespace OHOS { Presenter::OnStop(); } + // 回退函数 [ Slice 的 traingview {右滑只能回到applist}] + void TraingPresenter::NavigateBack() + { + NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM); + NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素 + } bool TraingPresenter::OnDrag(UIView &view, const DragEvent &event) { return true; @@ -69,10 +75,7 @@ namespace OHOS { UNUSED(view); if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) - { - // NativeAbility::GetInstance().Back(); - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); - } + NavigateBack(); return true; } @@ -108,11 +111,10 @@ namespace OHOS unsigned short keyID = event.GetKeyId(); unsigned short keyState = event.GetState(); // 如果是power键,且是亮屏状态,按键释放就返回上一级 - if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) - { - // 回退 - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM); - } + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && + keyState == 0 && uapi_get_screen_state() == 0) + NavigateBack(); + return true; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp index 91af3e3ce..676be20fa 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp @@ -69,54 +69,50 @@ namespace OHOS Presenter::OnStop(); } - - bool TraingSetPresenter::OnDrag(UIView &view, const DragEvent &event) + void TraingSetPresenter::NavigateBack() { - return true; + int CardID = TraingSetView::GetInstance()->GetCurrentViewId(); + // 不在设置页面 返回设置列表 + if (CardID != SET_VIEW) + { + TraingSetView::GetInstance()->ChangeView(CardID, SET_VIEW); + } + else + { + NativeAbility::GetInstance().Back(); + } } // 增加按键事件 bool TraingSetPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { - int CardID = TraingSetView::GetInstance()->GetCurrentViewId(); unsigned short keyID = event.GetKeyId(); unsigned short keyState = event.GetState(); // 如果是power键,且是亮屏状态,按键释放就返回上一级 if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) { - // 不在设置页面 - if (CardID != SET_VIEW) - { - TraingSetView::GetInstance()->ChangeView(CardID, SET_VIEW); - } - else - { - NativeAbility::GetInstance().Back(); - } + NavigateBack(); } return true; } + bool TraingSetPresenter::OnDrag(UIView &view, const DragEvent &event) + { + return true; + } bool TraingSetPresenter::OnDragEnd(UIView &view, const DragEvent &event) { int CardID = TraingSetView::GetInstance()->GetCurrentViewId(); if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - // 不在设置页面 - if (CardID != SET_VIEW) - { - TraingSetView::GetInstance()->ChangeView(CardID, SET_VIEW); - } - else - { - NativeAbility::GetInstance().Back(); - } + NavigateBack(); } UNUSED(view); return true; } - + /* --------------------------------- 设置目标项处理 -------------------------------- */ bool TraingSetPresenter::OnClick(UIView &view, const ClickEvent &event) { int CardID = TraingSetView::GetInstance()->GetCurrentViewId(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CardID[%d]", CardID); switch (CardID) { case SET_VIEW: @@ -145,19 +141,23 @@ namespace OHOS { // 获取训练目标值 int tag = GetTagFromCard(CardID); + // 配置训练项 TraingModel::GetInstance()->SetSportTag(GetExerciseTagFromCard(CardID), tag); #if TAGTEST TraingModel::GetInstance()->SetSportTag(ExerciseTag::STEP, 10); // 测试 #endif - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"GetButtonIdFromCard:%d tag:%d \r\n", CardID, tag); - // 切换到训练卡片 - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetButtonIdFromCard:%d tag:%d \r\n", CardID, tag); + + // 回退到训练准备 + NativeAbility::GetInstance().Back(); +#if 0 // 获取训练项目 ExerciseClass type = TraingModel::GetInstance()->GetSportId(); // 开启cywee TraingCardPresenter::GetInstance()->OpenSensor(type); // 设置为手表开启运动 TraingModel::GetInstance()->SetSportOpenWay(false); +#endif } break; default: diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp index 7aae6a107..58abcb75d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp @@ -374,6 +374,14 @@ namespace OHOS viewiInitStatus = true; } } + // 设置按键监听 + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingSetPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingSetView::OnStart() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingSetView::OnStart"); @@ -402,6 +410,7 @@ namespace OHOS group->SetDraggable(true); PreLoad(); + SetKeyActListener(); // RootView::GetInstance()->Add(SetTagScrollView[SET_VIEW]); // SetCurrentViewId(SET_VIEW); // 设置当前页面ID } @@ -429,13 +438,10 @@ namespace OHOS { View::OnStop(); - if (container_ != nullptr) - { - container_->RemoveAll(); - delete container_; - container_ = nullptr; - } + group->RemoveAll(); + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); return; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp index 9f6440d2c..8d8f94199 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp @@ -1,5 +1,6 @@ #include "traing/include/TraingView.h" +#include "traing/include/TraingModel.h" #include #include namespace OHOS @@ -50,6 +51,7 @@ namespace OHOS TraingView::TraingView() { g_pTraingView = this; + TraingModel::GetInstance()->SetEntryType(APPLIST_ENTER); } TraingView::~TraingView() @@ -234,7 +236,14 @@ namespace OHOS InitView(); return container_; } - + // 设置按键监听 + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingView::OnStart() { #if 0 @@ -269,8 +278,7 @@ namespace OHOS RootView::GetInstance()->Add(container_); SetContainerView(container_); // 增加按键监听 - RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingPresenter::GetInstance(); - RootView::GetInstance()->SetOnKeyActListener(keyactListener); + SetKeyActListener(); } void TraingView::OnSetUpView() @@ -288,6 +296,10 @@ namespace OHOS void TraingView::OnStop() { View::OnStop(); + + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); return; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp index e6110447c..e4085cde7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp @@ -22,6 +22,7 @@ #include "vibrator_service.h" #include #include +#include extern "C" void do_cywee_service_check_msg(int cmd, int data[]); extern "C" void custom_VibratorFunc(OHOS::VibratorType vibratorType); @@ -203,7 +204,7 @@ namespace OHOS { distanceStr = DEFAULT_DASH; } - // std::string durationStr = std::to_string(sportdata->duration); + std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH; std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH; std::string calorieStr = (sportdata->calories != 0) ? std::to_string(sportdata->calories) : DEFAULT_DASH; @@ -215,69 +216,76 @@ namespace OHOS TrainingDetailView::GetInstance()->GetCalorieLabel()->SetText(calorieStr.c_str()); // 卡路里 TrainingDetailView::GetInstance()->GetMileLabel()->SetText(distanceStr.c_str()); // 距离 TrainingDetailView::GetInstance()->GetStepLabel()->SetText(stepsStr.c_str()); // 步数 - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Calories: %s, Distance: %s, Steps: %s]", calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str()); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Calories: %s, Distance: %s, Steps: %s Intensityid: %d]", calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str(), intensityid); // 释放sportdata内存 } - /*刷新time和data*/ + /*刷新 time 和 data */ void TraingCardPresenter::Notify(void) { + // 未开启训练 直接退出 if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General) return; + // 刷新训练数据界面 时间 TrainingDataView::GetInstance()->UpdataTime(); + // 刷新训练数据界面 心率 卡路里 距离 步数 训练强度 目标完成度 RefreshData(); } - - /* -------------------------------------------------------------------------- */ + /* --------------------------------- 点击事件处理 --------------------------------- */ bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) { - // 点击暂停按键 - if (strcmp(view.GetViewId(), BUTTONSTOP) == 0) + const std::string viewId = view.GetViewId(); + + // 定义点击事件映射 + static const std::unordered_map> actionMap = { + {BUTTONSTOP, [&]() + { + auto currentState = TraingModel::GetInstance()->GetSportState(); + if (currentState == ExerciseState::Continue || currentState == ExerciseState::Start) + { + handlePauseState(); + } + else if (currentState == ExerciseState::Pause) + { + handleContinueState(); + } + }}, + {BUTTONEND, [&]() + { + ControlSensor(ExerciseState::Pause); + TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true); + TraingCardView::GetInstance()->RefreshEndView(); + }}, + {BUTTONEXIT, [&]() + { + handleEndState(); + }}, + {BUTTONBACK, [&]() + { + ControlSensor(ExerciseState::Continue); + TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false); + }}, + {BUTTONWINOK, [&]() + { + TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false); + TraingCardView::GetInstance()->GetAnimator()->Stop(); + }}, + {BUTTONNOTE, [&]() + { + TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false); + }}, + }; + + // 查找并执行对应的操作 + auto it = actionMap.find(viewId); + if (it != actionMap.end()) { - // 进行状态 - if (TraingModel::GetInstance()->GetSportState() == ExerciseState::Continue || TraingModel::GetInstance()->GetSportState() == ExerciseState::Start) - { - handlePauseState(); - } - // 暂停状态 - else if (TraingModel::GetInstance()->GetSportState() == ExerciseState::Pause) - { - handleContinueState(); - } + it->second(); // 执行操作 return true; } - // 点击结束按键,弹窗显示 - if (strcmp(view.GetViewId(), BUTTONEND) == 0) - { - ControlSensor(ExerciseState::Pause); - // 弹窗显示是否结束 - TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true); - TraingCardView::GetInstance()->RefreshEndView(); - } - // 退出按键 - if (strcmp(view.GetViewId(), BUTTONEXIT) == 0) - { - handleEndState(); - } - // 返回按键 - if (strcmp(view.GetViewId(), BUTTONBACK) == 0) - { - ControlSensor(ExerciseState::Continue); - TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false); - } - // 达到目标退出按键 - if (strcmp(view.GetViewId(), BUTTONWINOK) == 0) - { - TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false); - TraingCardView::GetInstance()->GetAnimator()->Stop(); - } - // 心率警告退出按键 - if (strcmp(view.GetViewId(), BUTTONNOTE) == 0) - { - TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false); - } - return true; - } + return false; // 没有匹配的操作 + } + /* -------------------------------- 协议发起运动处理 -------------------------------- */ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) { if (cmd == nullptr) @@ -365,13 +373,18 @@ namespace OHOS NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA); return; #endif + // 是否达到训练目标 if (TraingModel::GetInstance()->GetMomentum()) { + // 进入训练详情 NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA); + NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素 } else { + // 进入训练记录 NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD); + NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素 } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDataView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDataView.cpp index 0a6c7920e..77987e073 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDataView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDataView.cpp @@ -167,6 +167,5 @@ namespace OHOS // 将时间和日期转换为字符串 std::string stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" + (minute < 10 ? "0" : "") + std::to_string(minute); curtimelabel->SetText(stringtime.c_str()); - // PRINT("curtimelabel!\r\n"); } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardPresenter.cpp index 90e24bce9..d1b958df1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardPresenter.cpp @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-07-19 15:43:37 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-26 09:29:24 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/Training_CardPresenter.cpp + */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com @@ -7,6 +13,7 @@ #include "traing/training_card/include/Training_CardPresenter.h" #include "traing/training_card/include/Training_CardView.h" +#include "traing/include/TraingModel.h" #include "AppViewIDs.h" #include "components/ui_label_ext.h" @@ -18,6 +25,7 @@ #include "wearable_log.h" #include "traing/include/TraingModel.h" #include "uicomponents/UIComponents.h" +#include "MainModel.h" namespace OHOS { @@ -57,6 +65,11 @@ namespace OHOS } // 快捷训练都属于健身类 TraingModel::GetInstance()->SetSportType(Exercisetype::FITNESS); + + // 配置主界面回退界面 + MainModel::GetInstance().SetFromSetCardView(true); + MainModel::GetInstance().SetFromCardId(TRAINING); + TraingModel::GetInstance()->SetEntryType(MAIN_ENTER); return true; } } // namespace OHOS \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/include/TraingAquaticPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/include/TraingAquaticPresenter.h index 94927066e..ce02a9b20 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/include/TraingAquaticPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/include/TraingAquaticPresenter.h @@ -1,4 +1,10 @@ /*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-26 09:57:18 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/include/TraingAquaticPresenter.h + */ +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-19 17:37:18 * @LastEditors: Caisking 3449750381@qq.com @@ -18,8 +24,9 @@ namespace OHOS class TraingAquaticView; class TraingAquaticModel; class TraingAquaticPresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener { public: TraingAquaticPresenter(); @@ -37,6 +44,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingAquaticModel *p_TraingAquaticModel{nullptr}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticModel.cpp index b63f709b0..48f915a3b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticModel.cpp @@ -1,12 +1,4 @@ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-29 15:51:45 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-29 17:56:44 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticModel.cpp - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ #include "traing/training_list_aquatic/include/TraingAquaticModel.h" #include "common/image_cache_manager.h" diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticPresenter.cpp index 3a180ea23..0486265e8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticPresenter.cpp @@ -1,33 +1,14 @@ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-26 09:46:17 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-29 19:24:43 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticPresenter.cpp - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-19 17:37:19 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-26 19:51:06 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticPresenter.cpp - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-19 17:37:19 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-26 14:23:32 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/src/TraingAquaticPresenter.cpp - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ + #include "AppViewIDs.h" #include "components/ui_label_ext.h" #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -102,7 +83,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NativeAbility::GetInstance().Back(); } UNUSED(view); return true; @@ -119,10 +100,22 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingAquaticPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticView.cpp index dcdd3ffb7..db9f09055 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_aquatic/src/TraingAquaticView.cpp @@ -44,7 +44,14 @@ namespace OHOS { p_TraingAquaticListAdapter->AddItem(item); } - void TraingAquaticView::InitView() + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingAquaticPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } + void TraingAquaticView::InitView() { if (scrollView == nullptr) { @@ -85,8 +92,10 @@ namespace OHOS TraingAquaticList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingAquaticList->SetRotateFactor(2); - //TraingAquaticList->RequestFocus(); + TraingAquaticList->SetRotateFactor(2); + TraingAquaticList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingAquaticView::GetList() { @@ -150,8 +159,12 @@ namespace OHOS void TraingAquaticView::OnStop() { View::OnStop(); + + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - // RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/include/TraingBallPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/include/TraingBallPresenter.h index c9716be45..236e251c2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/include/TraingBallPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/include/TraingBallPresenter.h @@ -1,4 +1,10 @@ /*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-26 09:49:56 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/include/TraingBallPresenter.h + */ +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-19 17:37:18 * @LastEditors: Caisking 3449750381@qq.com @@ -18,8 +24,9 @@ namespace OHOS class TraingBallView; class TraingBallModel; class TraingBallPresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener { public: TraingBallPresenter(); @@ -37,7 +44,8 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; - + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 + TraingBallModel *p_TraingBallModel{nullptr}; }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallPresenter.cpp index 08e659b19..6ef37b495 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallPresenter.cpp @@ -5,6 +5,10 @@ #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -79,7 +83,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NativeAbility::GetInstance().Back(); } UNUSED(view); return true; @@ -89,17 +93,29 @@ namespace OHOS { UNUSED(event); TraingBallItemView *itemView = static_cast(&view); - //传递训练项目 + // 传递训练项目 AppViewId viewId = itemView->GetTraingBallIndex(); UIResourceTextId sportid = itemView->GetTraingBallId(); TraingModel::GetInstance()->SetSportEvent(sportid); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingBallPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallView.cpp index 738dcd3a8..3d2b07a80 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallView.cpp @@ -44,7 +44,14 @@ namespace OHOS { p_TraingBallListAdapter->AddItem(item); } - void TraingBallView::InitView() + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingBallPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } + void TraingBallView::InitView() { if (scrollView == nullptr) { @@ -85,8 +92,10 @@ namespace OHOS TraingBallList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingBallList->SetRotateFactor(2); - //TraingBallList->RequestFocus(); + TraingBallList->SetRotateFactor(2); + TraingBallList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingBallView::GetList() { @@ -150,8 +159,12 @@ namespace OHOS void TraingBallView::OnStop() { View::OnStop(); + + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - // RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.h index 5549caaf8..9994802c4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.h @@ -1,4 +1,4 @@ -/*** +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-26 09:44:11 * @LastEditors: Caisking 3449750381@qq.com @@ -7,7 +7,6 @@ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ - #ifndef _TraingDance_PRESENTER_H #define _TraingDance_PRESENTER_H @@ -20,6 +19,7 @@ namespace OHOS class TraingDanceModel; class TraingDancePresenter : public Presenter, public UIView::OnClickListener, + public RootView::OnKeyActListener, public UIView::OnDragListener { public: @@ -38,6 +38,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingDanceModel *p_TraingDanceModel{nullptr}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp index 5884373d3..9972a62d6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp @@ -5,6 +5,10 @@ #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -78,7 +82,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NativeAbility::GetInstance().Back(); } UNUSED(view); return true; @@ -95,10 +99,22 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingDancePresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceView.cpp index 2611e9b06..25eec3a76 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceView.cpp @@ -44,7 +44,14 @@ namespace OHOS { p_TraingDanceListAdapter->AddItem(item); } - void TraingDanceView::InitView() + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingDancePresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } + void TraingDanceView::InitView() { if (scrollView == nullptr) { @@ -85,8 +92,10 @@ namespace OHOS TraingDanceList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingDanceList->SetRotateFactor(2); - //TraingDanceList->RequestFocus(); + TraingDanceList->SetRotateFactor(2); + TraingDanceList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingDanceView::GetList() { @@ -150,8 +159,12 @@ namespace OHOS void TraingDanceView::OnStop() { View::OnStop(); + + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - // RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h index 63bed0129..709a44360 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-26 10:00:13 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h + */ /*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-26 09:40:03 @@ -28,7 +34,8 @@ namespace OHOS class TraingFitnessPresenter : public Presenter, public UIView::OnClickListener, public UIView::OnDragListener, - public UIView::OnTouchListener + public RootView::OnKeyActListener + { public: TraingFitnessPresenter(); @@ -46,7 +53,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; - bool OnPress(UIView &view, const PressEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingFitnessModel *p_TraingFitnessModel{nullptr}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp index a68645fd7..f4119500b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp @@ -18,6 +18,10 @@ #include "AppViewIDs.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -91,7 +95,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NativeAbility::GetInstance().Back(); } UNUSED(view); return true; @@ -107,12 +111,25 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingFitnessPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } +#if 0 bool TraingFitnessPresenter::OnPress(UIView &view, const PressEvent &event) { if (&view == TraingFitnessView::GetInstance()->GetScrollView()) @@ -127,4 +144,5 @@ namespace OHOS } return false; } +#endif } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp index 169713bec..e7daa0445 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp @@ -42,7 +42,15 @@ namespace OHOS { p_TraingFitnessListAdapter->AddItem(item); } - void TraingFitnessView::InitView() + + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingFitnessPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } + void TraingFitnessView::InitView() { if (scrollView == nullptr) { @@ -83,8 +91,10 @@ namespace OHOS TraingFitnessList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingFitnessList->SetRotateFactor(2); - //TraingFitnessList->RequestFocus(); + TraingFitnessList->SetRotateFactor(2); + TraingFitnessList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingFitnessView::GetList() { @@ -97,7 +107,8 @@ namespace OHOS void TraingFitnessView::DeInitView() { // scrollView-> RemoveAll(); - RemoveAll(); + scrollView->RemoveAll(); + delete title; title = nullptr; @@ -152,8 +163,12 @@ namespace OHOS void TraingFitnessView::OnStop() { View::OnStop(); + + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - // RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h index 58935d6bb..51d7f659e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h @@ -1,4 +1,4 @@ -/*** +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-26 09:44:11 * @LastEditors: Caisking 3449750381@qq.com @@ -7,7 +7,6 @@ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ - #ifndef _TraingIce_PRESENTER_H #define _TraingIce_PRESENTER_H @@ -19,8 +18,9 @@ namespace OHOS class TraingIceView; class TraingIceModel; class TraingIcePresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener { public: TraingIcePresenter(); @@ -38,6 +38,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingIceModel *p_TraingIceModel{nullptr}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIcePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIcePresenter.cpp index e018d4a02..455947bb6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIcePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIcePresenter.cpp @@ -5,6 +5,10 @@ #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -78,7 +82,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NativeAbility::GetInstance().Back(); } UNUSED(view); return true; @@ -94,10 +98,22 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingIcePresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceView.cpp index 450535eef..295fa7a6e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceView.cpp @@ -52,6 +52,13 @@ namespace OHOS { p_TraingIceListAdapter->AddItem(item); } + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingIcePresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingIceView::InitView() { if (scrollView == nullptr) @@ -93,8 +100,10 @@ namespace OHOS TraingIceList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //scrollView->SetRotateFactor(2); - //scrollView->RequestFocus(); + scrollView->SetRotateFactor(2); + scrollView->RequestFocus(); + + SetKeyActListener(); } UIList *TraingIceView::GetList() { @@ -102,8 +111,8 @@ namespace OHOS } void TraingIceView::DeInitView() { - // scrollView-> RemoveAll(); - RemoveAll(); + scrollView->RemoveAll(); + // RemoveAll(); delete title; title = nullptr; @@ -158,8 +167,11 @@ namespace OHOS void TraingIceView::OnStop() { View::OnStop(); + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - // RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h index 06c2e84d5..4ab2cd3c5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h @@ -1,4 +1,4 @@ -/*** +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-19 17:37:18 * @LastEditors: Caisking 3449750381@qq.com @@ -19,6 +19,7 @@ namespace OHOS class TraingLimitModel; class TraingLimitPresenter : public Presenter, public UIView::OnClickListener, + public RootView::OnKeyActListener, public UIView::OnDragListener { public: @@ -37,6 +38,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingLimitModel *p_TraingLimitModel{nullptr}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitPresenter.cpp index 7da6d4d45..6e43f475c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitPresenter.cpp @@ -4,6 +4,10 @@ #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -94,10 +98,21 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingLimitPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitView.cpp index bebe036cf..4ff500372 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitView.cpp @@ -44,6 +44,14 @@ namespace OHOS { p_TraingLimitListAdapter->AddItem(item); } + + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingLimitPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingLimitView::InitView() { if (scrollView == nullptr) @@ -85,8 +93,10 @@ namespace OHOS TraingLimitList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingLimitList->SetRotateFactor(2); - //TraingLimitList->RequestFocus(); + TraingLimitList->SetRotateFactor(2); + TraingLimitList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingLimitView::GetList() { @@ -94,8 +104,8 @@ namespace OHOS } void TraingLimitView::DeInitView() { - // scrollView-> RemoveAll(); - RemoveAll(); + scrollView->RemoveAll(); + // RemoveAll(); delete title; title = nullptr; @@ -150,8 +160,11 @@ namespace OHOS void TraingLimitView::OnStop() { View::OnStop(); + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - // RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMoreModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMoreModel.h index fc9a3c159..ef1f6c63c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMoreModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMoreModel.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 16:01:16 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMoreModel.h + */ #ifndef TraingMore_MODEL_H #define TraingMore_MODEL_H @@ -29,7 +35,7 @@ namespace OHOS TraingMoreModel(const TraingMoreModel &); TraingMoreModel &operator=(const TraingMoreModel &); virtual ~TraingMoreModel(); - static const uint16_t TraingMoreListMaxNum = 8; + static const uint16_t TraingMoreListMaxNum = 7; TraingMoreItem TraingMores[TraingMoreListMaxNum] = {VIEW_INVALID, STR_ICE_SPORTS, nullptr}; // std::map TraingMoreIdToViewId; bool btConnectStatus{false}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMorePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMorePresenter.h index 161b92238..20f11232a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMorePresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMorePresenter.h @@ -1,4 +1,10 @@ /*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-26 09:44:33 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/include/TraingMorePresenter.h + */ +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-26 09:44:11 * @LastEditors: Caisking 3449750381@qq.com @@ -7,7 +13,6 @@ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ - #ifndef _TraingMore_PRESENTER_H #define _TraingMore_PRESENTER_H @@ -19,8 +24,9 @@ namespace OHOS class TraingMoreView; class TraingMoreModel; class TraingMorePresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener { public: TraingMorePresenter(); @@ -30,6 +36,7 @@ namespace OHOS void OnPause() override; void OnResume() override; void OnStop() override; + void NavigateBack(); static TraingMorePresenter *GetInstance(); @@ -38,7 +45,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; - + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingMoreModel *p_TraingMoreModel{nullptr}; }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreModel.cpp index fe4664ffe..4caa87e7e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreModel.cpp @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 16:00:57 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreModel.cpp + */ /*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-26 18:34:15 @@ -36,10 +42,10 @@ namespace OHOS TraingMores[1] = {VIEW_TRAININGDANCE, STR_DANCING_LIST, DANCE_IMAGE}; TraingMores[2] = {VIEW_TRAININGREST, STR_RECREATIONAL_LIST, REST_IMAGE}; TraingMores[3] = {VIEW_TRAININGBALL, STR_BALL_LIST, BALL_IMAGE}; - TraingMores[4] = {VIEW_TRAININGAQUATIC, STR_WATER_LIST, SWIMMING_IMAGE}; - TraingMores[5] = {VIEW_TRAININGICE, STR_ICE_LIST, ICE_IMAGE}; - TraingMores[6] = {VIEW_TRAININGLIMIT, STR_EXTREME_LIST, LIMIT_IMAGE}; - TraingMores[7] = {VIEW_TRAININGOTHER, STR_OTHER_LIST, OTHER_IMAGE}; + // TraingMores[4] = {VIEW_TRAININGAQUATIC, STR_WATER_LIST, SWIMMING_IMAGE};水上运动 + TraingMores[4] = {VIEW_TRAININGICE, STR_ICE_LIST, ICE_IMAGE}; + TraingMores[5] = {VIEW_TRAININGLIMIT, STR_EXTREME_LIST, LIMIT_IMAGE}; + TraingMores[6] = {VIEW_TRAININGOTHER, STR_OTHER_LIST, OTHER_IMAGE}; } const TraingMoreItem *TraingMoreModel::GetTraingMorelistItems() const diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp index b45cbb6d9..5e9a99b53 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp @@ -5,6 +5,10 @@ #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -13,6 +17,7 @@ #include "traing/training_list_more/include/TraingMoreView.h" #include "traing/include/TraingModel.h" #include "uicomponents/UIComponents.h" +#include "traing/include/TraingModel.h" // #include "TraingMoreView.h" namespace OHOS @@ -71,6 +76,26 @@ namespace OHOS Presenter::OnStop(); } + void TraingMorePresenter::NavigateBack() + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + + // 根据前一界面切换 + if (preSlice == VIEW_TRAININGENDDATA) + { + if (TraingModel::GetInstance()->GetEntryType() == APPLIST_ENTER) + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING, TransitionType::TRANSITION_ZOOM); + else + { + NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN, TransitionType::TRANSITION_ZOOM); + NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素 + } + } + else + { + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM); + } + } bool TraingMorePresenter::OnDrag(UIView &view, const DragEvent &event) { return true; @@ -79,7 +104,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING); + NavigateBack(); } UNUSED(view); return true; @@ -122,21 +147,34 @@ namespace OHOS case VIEW_TRAININGBALL: TraingModel::GetInstance()->SetSportType(Exercisetype::BALL); break; - case VIEW_TRAININGAQUATIC: - TraingModel::GetInstance()->SetSportType(Exercisetype::WATER); - break; case VIEW_TRAININGOTHER: TraingModel::GetInstance()->SetSportType(Exercisetype::OTHER); break; +#if 0 + case VIEW_TRAININGAQUATIC: + TraingModel::GetInstance()->SetSportType(Exercisetype::WATER); + break; +#endif default: break; } if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingMorePresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NavigateBack(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreView.cpp index 3c9a6a383..e6d283b65 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMoreView.cpp @@ -49,6 +49,13 @@ namespace OHOS { p_TraingMoreListAdapter->AddItem(item); } + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingMorePresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingMoreView::InitView() { if (scrollView == nullptr) @@ -90,8 +97,10 @@ namespace OHOS scrollView->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingMoreList->SetRotateFactor(2); - //TraingMoreList->RequestFocus(); + TraingMoreList->SetRotateFactor(2); + TraingMoreList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingMoreView::GetList() { @@ -155,8 +164,12 @@ namespace OHOS void TraingMoreView::OnStop() { View::OnStop(); + + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - //RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/include/TraingOtherPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/include/TraingOtherPresenter.h index 257a8c18c..5e301bdc2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/include/TraingOtherPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/include/TraingOtherPresenter.h @@ -1,4 +1,4 @@ -/*** +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-19 17:37:18 * @LastEditors: Caisking 3449750381@qq.com @@ -19,6 +19,7 @@ namespace OHOS class TraingOtherModel; class TraingOtherPresenter : public Presenter, public UIView::OnClickListener, + public RootView::OnKeyActListener, public UIView::OnDragListener { public: @@ -37,6 +38,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingOtherModel *p_TraingOtherModel{nullptr}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherPresenter.cpp index 6be7b6460..4ad1fd782 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherPresenter.cpp @@ -20,6 +20,10 @@ #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -94,7 +98,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NativeAbility::GetInstance().Back(); } UNUSED(view); return true; @@ -110,10 +114,22 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingOtherPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherView.cpp index 00e8722e6..5d02e5f3b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_other/src/TraingOtherView.cpp @@ -44,7 +44,15 @@ namespace OHOS { p_TraingOtherListAdapter->AddItem(item); } - void TraingOtherView::InitView() + + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingOtherPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } + void TraingOtherView::InitView() { if (scrollView == nullptr) { @@ -85,8 +93,10 @@ namespace OHOS TraingOtherList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingOtherList->SetRotateFactor(2); - //TraingOtherList->RequestFocus(); + TraingOtherList->SetRotateFactor(2); + TraingOtherList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingOtherView::GetList() { @@ -94,8 +104,8 @@ namespace OHOS } void TraingOtherView::DeInitView() { - // scrollView-> RemoveAll(); - RemoveAll(); + scrollView->RemoveAll(); + // RemoveAll(); delete title; title = nullptr; @@ -150,8 +160,11 @@ namespace OHOS void TraingOtherView::OnStop() { View::OnStop(); + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - //RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h index 6cb26a70a..3821dea5d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h @@ -1,4 +1,4 @@ -/*** +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-19 17:37:18 * @LastEditors: Caisking 3449750381@qq.com @@ -18,8 +18,9 @@ namespace OHOS class TraingRestView; class TraingRestModel; class TraingRestPresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener { public: TraingRestPresenter(); @@ -37,6 +38,7 @@ namespace OHOS bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 TraingRestModel *p_TraingRestModel{nullptr}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp index 2cee3405b..3a560e5cb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp @@ -4,6 +4,10 @@ #include "ui_resource_string.h" #include "NativeAbility.h" +#include "KeyInputListener.h" +#include "custom_utils.h" +#include "common/key_code.h" + #include #include #include @@ -78,7 +82,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + NativeAbility::GetInstance().Back(); } UNUSED(view); return true; @@ -94,10 +98,22 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); if (viewId < VIEW_MAX_INTER_APP) { - NativeAbility::GetInstance().ChangeSlice(viewId); + NativeAbility::GetInstance().EnterSlice(viewId); return true; } return false; } + bool TraingRestPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(); + } + return true; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp index 61da697f5..349a0ed38 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp @@ -44,6 +44,14 @@ namespace OHOS { p_TraingRestListAdapter->AddItem(item); } + + static void SetKeyActListener() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingRestPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } void TraingRestView::InitView() { if (scrollView == nullptr) @@ -85,8 +93,10 @@ namespace OHOS TraingRestList->SetYScrollBarVisible(true); // 设置滑动滚动条 // 增加表冠控制 - //TraingRestList->SetRotateFactor(2); - //TraingRestList->RequestFocus(); + TraingRestList->SetRotateFactor(2); + TraingRestList->RequestFocus(); + + SetKeyActListener(); } UIList *TraingRestView::GetList() { @@ -94,8 +104,8 @@ namespace OHOS } void TraingRestView::DeInitView() { - // scrollView-> RemoveAll(); - RemoveAll(); + scrollView->RemoveAll(); + // RemoveAll(); delete title; title = nullptr; @@ -150,8 +160,11 @@ namespace OHOS void TraingRestView::OnStop() { View::OnStop(); + + RootView::GetInstance()->ClearOnKeyActListener(); + //FocusManager::GetInstance()->ClearFocus(); RootView::GetInstance()->RemoveAll(); - //RootView::GetInstance()->ClearFocus(); + // RootView::GetInstance()->ClearFocus(); return; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h index 6fbed41e8..f084c089b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h @@ -1,21 +1,4 @@ -/*** - * @Date: 2024-05-20 19:40:41 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-07-15 11:08:58 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h - */ -/*** - * @Date: 2024-05-20 19:40:41 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-07-06 16:36:57 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h - */ -/*** - * @Date: 2024-05-20 19:40:41 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-06-08 10:11:44 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h - */ + #ifndef _TraingRecord_PRESENTER_H #define _TraingRecord_PRESENTER_H @@ -41,6 +24,7 @@ namespace OHOS void OnResume() override; void OnStop() override; static TraingRecordPresenter *GetInstance(); + void NavigateBack(); private: // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp index 65ff88b2e..3e714fc2f 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp @@ -15,6 +15,7 @@ #include "traingrecord/include/TraingRecordPresenter.h" #include "traingrecord/include/TraingRecordModel.h" #include "traing/include/TraingEnddataView.h" +#include "traing/include/TraingModel.h" #include "KeyInputListener.h" #include "custom_utils.h" @@ -74,7 +75,25 @@ namespace OHOS { Presenter::OnStop(); } - + void TraingRecordPresenter::NavigateBack() + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + // 根据前一界面切换 {训练结束失败} + if (preSlice == VIEW_TRAININGCRAD) + { + if (TraingModel::GetInstance()->GetEntryType() == APPLIST_ENTER) + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING, TransitionType::TRANSITION_ZOOM); + else + { + NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN, TransitionType::TRANSITION_ZOOM); + NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素 + } + } + else + { + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM); + } + } bool TraingRecordPresenter::OnDrag(UIView &view, const DragEvent &event) { return true; @@ -83,7 +102,7 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().Back(); + NavigateBack(); } return true; } @@ -113,7 +132,7 @@ namespace OHOS // 选择点击按键的历史数据 int arraynum = sportDataVector.size() - 1; SportData sportData = sportDataVector[arraynum - index]; // 显示是倒序 id同理 - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA); + NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGENDDATA); TraingModel::GetInstance()->SetSportdata(&sportData); return true; } @@ -129,8 +148,7 @@ namespace OHOS // 如果是power键,且是亮屏状态,按键释放就返回上一级 if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) { - // 回退 - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM); + NavigateBack(); } return true; } -- 2.17.1