+/***
+ * @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
void OnPause() override;
void OnResume() override;
void OnStop() override;
+ void NavigateBack(); // 返回函数
static TraingEnddataPresenter *GetInstance();
private:
VERY_HIGH_INTENSITY
};
+ enum ENTEYTYPE
+ {
+ MAIN_ENTER = 0,
+ APPLIST_ENTER,
+ };
struct SportData
{
uint32 starttime; // 开始时间时间戳
int CalculateAverageHeartRate(int newHeartRate);
/*显示心率计算*/
int CalculateFilteredHeartRate(int newHeartRate);
-
+
int Averageheartrate(int newHeartRate);
/*保存训练记录到json文件*/
/*保存数据*/
void RecordSportData();
+ /*进入训练方式*/
+ void SetEntryType(ENTEYTYPE type);
+ ENTEYTYPE GetEntryType();
+
private:
TraingModel(const TraingModel &) = delete;
TraingModel &operator=(const TraingModel &) = delete;
ExerciseState sportState_ = ExerciseState::General; // 训练状态
ExerciseTag sportTagType_ = ExerciseTag::UNKNOW; // 训练目标类型
+ ENTEYTYPE entey_type = ENTEYTYPE::MAIN_ENTER; // 进入方式
+
int sportTag_ = 0; // 训练目标
int freq = 0; // 训练发送数据频率
-/***
- * @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
void OnPause() override;
void OnResume() override;
void OnStop() override;
+ void NavigateBack();
static TraingNomalPresenter *GetInstance();
/***
+ * @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
void InitList();
void PreLoad(void);
+ void UpdateTraingTag(); // 更新训练目标
private:
UIView::OnDragListener *draglistener{nullptr};
+/***
+ * @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
void OnPause() override;
void OnResume() override;
void OnStop() override;
+ void NavigateBack();
static TraingPresenter *GetInstance();
+/***
+ * @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
const char *GetButtonIdFromCard(int cardID);
int GetTagFromCard(int cardID);
ExerciseTag GetExerciseTagFromCard(int cardID);
+ void NavigateBack();
private:
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
bool ChangeSetDurationView(int16_t thisview);
bool ClickFunc(int16_t interface);
void ChangeView(int16_t hideView, int16_t showView);
+
void SetCurrentViewId(int viewId)
{
CurrentViewId = viewId;
-/***
- * @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"
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<TraingEnddataView>::OnStart();
}
- void TraingEnddataPresenter::OnPause(void)
+ void TraingEnddataPresenter::OnPause()
{
-
Presenter<TraingEnddataView>::OnPause();
}
- void TraingEnddataPresenter::OnResume(void)
+ void TraingEnddataPresenter::OnResume()
{
-
Presenter<TraingEnddataView>::OnResume();
}
- void TraingEnddataPresenter::OnStop(void)
+ void TraingEnddataPresenter::OnStop()
{
-
Presenter<TraingEnddataView>::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;
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<uint16_t>(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
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();
PreLoad();
InitData();
RootView::GetInstance()->Add(container_);
-
- // 增加按键监听
- RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+ SetKeyActListener();
}
void TraingEnddataView::OnSetUpView()
void TraingEnddataView::OnStop()
{
View<TraingEnddataPresenter>::OnStop();
+
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
return;
}
}
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); // 设置训练强度
}
// 达到最高心率进行心率提醒弹窗
totalHeartRate = newHeartRate;
}
totalHeartRate = (totalHeartRate + newHeartRate) / 2;
-
+
return totalHeartRate;
}
// 设置训练目标类型以及训练目标
// 将 heart 转换为 double 以避免整数除法
double heartRateAsDouble = static_cast<double>(heart);
double intensityPercentage = (heartRateAsDouble / (double)maxHeartRate) * 100;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "intensityPercentage is %d", intensityPercentage);
if (intensityPercentage < LOW_INTENSITY_THRESHOLD)
{
return true;
// delete data;
}
-
+ /*设置进入方式*/
+ void TraingModel::SetEntryType(ENTEYTYPE type)
+ {
+ entey_type = type;
+ }
+ /*获取进入方式*/
+ ENTEYTYPE TraingModel::GetEntryType()
+ {
+ return entey_type;
+ }
/*设置开启方式*/
void TraingModel::SetSportOpenWay(bool way)
{
#include "custom_utils.h"\r
#include "common/key_code.h"\r
\r
-\r
#include <iostream>\r
#include <chrono>\r
#include <thread>\r
#include "traing/include/TraingNomalPresenter.h"\r
#include "traing/training_card/include/TraingCardPresenter.h"\r
+#include "MainModel.h"\r
// #include "TraingNomalView.h"\r
\r
namespace OHOS\r
\r
Presenter<TraingNomalView>::OnStop();\r
}\r
+ // 回退逻辑\r
+ void TraingNomalPresenter::NavigateBack()\r
+ {\r
+ /*\r
+ 准备训练界面进入:\r
+ 1.[主界面] 进入\r
+ 2.[traing] 进入\r
+ 3.[更多]->[具体训练项]进入\r
+ 4.[设置训练目标]进入 {不返回}\r
+ */\r
+ NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM);\r
+ }\r
bool TraingNomalPresenter::OnDrag(UIView &view, const DragEvent &event)\r
{\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
+ UNUSED(view);\r
+ if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) && (event.GetDeltaX() > X_DRAG_OFFSET) &&\r
+ (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY()))))\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"TraingNomalPresenter OnDrag!\r\rn");\r
- NativeAbility::GetInstance().Back(); // 返回函数\r
+ NavigateBack();\r
}\r
- UNUSED(view);\r
return true;\r
}\r
\r
// 根据控件id查找是哪个控件触发了点击回调\r
if (strcmp(view.GetViewId(), BUTTONSET) == 0)\r
{\r
+ // 训练准备 -> 训练设置\r
NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGSET);\r
}\r
if (strcmp(view.GetViewId(), BUTTONGO) == 0)\r
{\r
+ // 开始训练 ->不返回\r
NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
+\r
// 获取运动项目\r
ExerciseClass type = TraingModel::GetInstance()->GetSportId();\r
// 开启对应的运动\r
// 如果是power键,且是亮屏状态,按键释放就返回上一级\r
if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
{\r
- // 回退\r
- NativeAbility::GetInstance().Back();\r
+ NavigateBack();\r
}\r
return true;\r
}\r
// 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);
delete buttonSet_;
buttonSet_ = nullptr;
}
- if (container_ != nullptr)
- {
- container_->RemoveAll();
- delete container_;
- container_ = nullptr;
- }
+
}
void TraingNomalView::PreLoad(void)
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();
PreLoad();
RootView::GetInstance()->Add(container_);
-
- // 增加按键监听
- RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingNomalPresenter::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+ SetKeyActListener();
}
+ // 更新训练目标 [考虑 通用目标 特殊目标]
+ void TraingNomalView::UpdateTraingTag() {}
+
void TraingNomalView::OnSetUpView()
{
{
View<TraingNomalPresenter>::OnStop();
RootView::GetInstance()->RemoveAll();
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
return;
}
}
{
Presenter<TraingView>::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;
{
UNUSED(view);
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
- {
- // NativeAbility::GetInstance().Back();
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
- }
+ NavigateBack();
return true;
}
unsigned short keyID = event.GetKeyId();
unsigned short keyState = event.GetState();
// 如果是power键,且是亮屏状态,按键释放就返回上一级
- if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
- {
- // 回退
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM);
- }
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) &&
+ keyState == 0 && uapi_get_screen_state() == 0)
+ NavigateBack();
+
return true;
}
}
\r
Presenter<TraingSetView>::OnStop();\r
}\r
-\r
- bool TraingSetPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ void TraingSetPresenter::NavigateBack()\r
{\r
- return true;\r
+ int CardID = TraingSetView::GetInstance()->GetCurrentViewId();\r
+ // 不在设置页面 返回设置列表\r
+ if (CardID != SET_VIEW)\r
+ {\r
+ TraingSetView::GetInstance()->ChangeView(CardID, SET_VIEW);\r
+ }\r
+ else\r
+ {\r
+ NativeAbility::GetInstance().Back();\r
+ }\r
}\r
// 增加按键事件\r
bool TraingSetPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
{\r
- int CardID = TraingSetView::GetInstance()->GetCurrentViewId();\r
unsigned short keyID = event.GetKeyId();\r
unsigned short keyState = event.GetState();\r
// 如果是power键,且是亮屏状态,按键释放就返回上一级\r
if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
{\r
- // 不在设置页面\r
- if (CardID != SET_VIEW)\r
- {\r
- TraingSetView::GetInstance()->ChangeView(CardID, SET_VIEW);\r
- }\r
- else\r
- {\r
- NativeAbility::GetInstance().Back();\r
- }\r
+ NavigateBack();\r
}\r
return true;\r
}\r
+ bool TraingSetPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+ return true;\r
+ }\r
bool TraingSetPresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
{\r
int CardID = TraingSetView::GetInstance()->GetCurrentViewId();\r
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
{\r
- // 不在设置页面\r
- if (CardID != SET_VIEW)\r
- {\r
- TraingSetView::GetInstance()->ChangeView(CardID, SET_VIEW);\r
- }\r
- else\r
- {\r
- NativeAbility::GetInstance().Back();\r
- }\r
+ NavigateBack();\r
}\r
UNUSED(view);\r
return true;\r
}\r
-\r
+ /* --------------------------------- 设置目标项处理 -------------------------------- */\r
bool TraingSetPresenter::OnClick(UIView &view, const ClickEvent &event)\r
{\r
int CardID = TraingSetView::GetInstance()->GetCurrentViewId();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CardID[%d]", CardID);\r
switch (CardID)\r
{\r
case SET_VIEW:\r
{\r
// 获取训练目标值\r
int tag = GetTagFromCard(CardID);\r
+ // 配置训练项\r
TraingModel::GetInstance()->SetSportTag(GetExerciseTagFromCard(CardID), tag);\r
#if TAGTEST\r
TraingModel::GetInstance()->SetSportTag(ExerciseTag::STEP, 10); // 测试\r
#endif\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"GetButtonIdFromCard:%d tag:%d \r\n", CardID, tag);\r
- // 切换到训练卡片\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetButtonIdFromCard:%d tag:%d \r\n", CardID, tag);\r
+\r
+ // 回退到训练准备\r
+ NativeAbility::GetInstance().Back();\r
+#if 0\r
// 获取训练项目\r
ExerciseClass type = TraingModel::GetInstance()->GetSportId();\r
// 开启cywee\r
TraingCardPresenter::GetInstance()->OpenSensor(type);\r
// 设置为手表开启运动\r
TraingModel::GetInstance()->SetSportOpenWay(false);\r
+#endif\r
}\r
break;\r
default:\r
viewiInitStatus = true;\r
}\r
}\r
+ // 设置按键监听\r
+ static void SetKeyActListener()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");\r
+ // 增加按键监听\r
+ RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingSetPresenter::GetInstance();\r
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+ }\r
void TraingSetView::OnStart()\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingSetView::OnStart");\r
group->SetDraggable(true);\r
\r
PreLoad();\r
+ SetKeyActListener();\r
// RootView::GetInstance()->Add(SetTagScrollView[SET_VIEW]);\r
// SetCurrentViewId(SET_VIEW); // 设置当前页面ID\r
}\r
{\r
View<TraingSetPresenter>::OnStop();\r
\r
- if (container_ != nullptr)\r
- {\r
- container_->RemoveAll();\r
- delete container_;\r
- container_ = nullptr;\r
- }\r
+\r
group->RemoveAll();\r
+ RootView::GetInstance()->ClearOnKeyActListener();\r
+ //FocusManager::GetInstance()->ClearFocus();\r
RootView::GetInstance()->RemoveAll();\r
return;\r
}\r
\r
#include "traing/include/TraingView.h"\r
+#include "traing/include/TraingModel.h"\r
#include <iostream>\r
#include <string>\r
namespace OHOS\r
TraingView::TraingView()\r
{\r
g_pTraingView = this;\r
+ TraingModel::GetInstance()->SetEntryType(APPLIST_ENTER);\r
}\r
\r
TraingView::~TraingView()\r
InitView();\r
return container_;\r
}\r
-\r
+ // 设置按键监听\r
+ static void SetKeyActListener()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");\r
+ // 增加按键监听\r
+ RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingPresenter::GetInstance();\r
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+ }\r
void TraingView::OnStart()\r
{\r
#if 0\r
RootView::GetInstance()->Add(container_);\r
SetContainerView(container_);\r
// 增加按键监听\r
- RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingPresenter::GetInstance();\r
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+ SetKeyActListener();\r
}\r
\r
void TraingView::OnSetUpView()\r
void TraingView::OnStop()\r
{\r
View<TraingPresenter>::OnStop();\r
+\r
+\r
+ RootView::GetInstance()->ClearOnKeyActListener();\r
+ //FocusManager::GetInstance()->ClearFocus();\r
RootView::GetInstance()->RemoveAll();\r
return;\r
}\r
#include "vibrator_service.h"\r
#include <iomanip>\r
#include <sstream>\r
+#include <unordered_map>\r
\r
extern "C" void do_cywee_service_check_msg(int cmd, int data[]);\r
extern "C" void custom_VibratorFunc(OHOS::VibratorType vibratorType);\r
{\r
distanceStr = DEFAULT_DASH;\r
}\r
- // std::string durationStr = std::to_string(sportdata->duration);\r
+\r
std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH;\r
std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
std::string calorieStr = (sportdata->calories != 0) ? std::to_string(sportdata->calories) : DEFAULT_DASH;\r
TrainingDetailView::GetInstance()->GetCalorieLabel()->SetText(calorieStr.c_str()); // 卡路里\r
TrainingDetailView::GetInstance()->GetMileLabel()->SetText(distanceStr.c_str()); // 距离\r
TrainingDetailView::GetInstance()->GetStepLabel()->SetText(stepsStr.c_str()); // 步数\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Calories: %s, Distance: %s, Steps: %s]", calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str());\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Calories: %s, Distance: %s, Steps: %s Intensityid: %d]", calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str(), intensityid);\r
// 释放sportdata内存\r
}\r
- /*刷新time和data*/\r
+ /*刷新 time 和 data */\r
void TraingCardPresenter::Notify(void)\r
{\r
+ // 未开启训练 直接退出\r
if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
return;\r
+ // 刷新训练数据界面 时间\r
TrainingDataView::GetInstance()->UpdataTime();\r
+ // 刷新训练数据界面 心率 卡路里 距离 步数 训练强度 目标完成度\r
RefreshData();\r
}\r
-\r
- /* -------------------------------------------------------------------------- */\r
+ /* --------------------------------- 点击事件处理 --------------------------------- */\r
bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event)\r
{\r
- // 点击暂停按键\r
- if (strcmp(view.GetViewId(), BUTTONSTOP) == 0)\r
+ const std::string viewId = view.GetViewId();\r
+\r
+ // 定义点击事件映射\r
+ static const std::unordered_map<std::string, std::function<void()>> actionMap = {\r
+ {BUTTONSTOP, [&]()\r
+ {\r
+ auto currentState = TraingModel::GetInstance()->GetSportState();\r
+ if (currentState == ExerciseState::Continue || currentState == ExerciseState::Start)\r
+ {\r
+ handlePauseState();\r
+ }\r
+ else if (currentState == ExerciseState::Pause)\r
+ {\r
+ handleContinueState();\r
+ }\r
+ }},\r
+ {BUTTONEND, [&]()\r
+ {\r
+ ControlSensor(ExerciseState::Pause);\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
+ TraingCardView::GetInstance()->RefreshEndView();\r
+ }},\r
+ {BUTTONEXIT, [&]()\r
+ {\r
+ handleEndState();\r
+ }},\r
+ {BUTTONBACK, [&]()\r
+ {\r
+ ControlSensor(ExerciseState::Continue);\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
+ }},\r
+ {BUTTONWINOK, [&]()\r
+ {\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false);\r
+ TraingCardView::GetInstance()->GetAnimator()->Stop();\r
+ }},\r
+ {BUTTONNOTE, [&]()\r
+ {\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false);\r
+ }},\r
+ };\r
+\r
+ // 查找并执行对应的操作\r
+ auto it = actionMap.find(viewId);\r
+ if (it != actionMap.end())\r
{\r
- // 进行状态\r
- if (TraingModel::GetInstance()->GetSportState() == ExerciseState::Continue || TraingModel::GetInstance()->GetSportState() == ExerciseState::Start)\r
- {\r
- handlePauseState();\r
- }\r
- // 暂停状态\r
- else if (TraingModel::GetInstance()->GetSportState() == ExerciseState::Pause)\r
- {\r
- handleContinueState();\r
- }\r
+ it->second(); // 执行操作\r
return true;\r
}\r
- // 点击结束按键,弹窗显示\r
- if (strcmp(view.GetViewId(), BUTTONEND) == 0)\r
- {\r
- ControlSensor(ExerciseState::Pause);\r
- // 弹窗显示是否结束\r
- TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
- TraingCardView::GetInstance()->RefreshEndView();\r
- }\r
- // 退出按键\r
- if (strcmp(view.GetViewId(), BUTTONEXIT) == 0)\r
- {\r
- handleEndState();\r
- }\r
- // 返回按键\r
- if (strcmp(view.GetViewId(), BUTTONBACK) == 0)\r
- {\r
- ControlSensor(ExerciseState::Continue);\r
- TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
- }\r
- // 达到目标退出按键\r
- if (strcmp(view.GetViewId(), BUTTONWINOK) == 0)\r
- {\r
- TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false);\r
- TraingCardView::GetInstance()->GetAnimator()->Stop();\r
- }\r
- // 心率警告退出按键\r
- if (strcmp(view.GetViewId(), BUTTONNOTE) == 0)\r
- {\r
- TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false);\r
- }\r
- return true;\r
- }\r
\r
+ return false; // 没有匹配的操作\r
+ }\r
+ /* -------------------------------- 协议发起运动处理 -------------------------------- */\r
bool TraingCardPresenter::send_sport_cmd(training_ble *cmd)\r
{\r
if (cmd == nullptr)\r
NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
return;\r
#endif\r
+ // 是否达到训练目标\r
if (TraingModel::GetInstance()->GetMomentum())\r
{\r
+ // 进入训练详情\r
NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
+ NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
}\r
else\r
{\r
+ // 进入训练记录\r
NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
+ NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
}\r
}\r
\r
// 将时间和日期转换为字符串
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");
}
}
+/***
+ * @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
#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"
#include "wearable_log.h"
#include "traing/include/TraingModel.h"
#include "uicomponents/UIComponents.h"
+#include "MainModel.h"
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
/***
+ * @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
class TraingAquaticView;
class TraingAquaticModel;
class TraingAquaticPresenter : public Presenter<TraingAquaticView>,
- public UIView::OnClickListener,
- public UIView::OnDragListener
+ public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
+ public UIView::OnDragListener
{
public:
TraingAquaticPresenter();
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};
};
-/***
- * @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"
-/***
- * @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 <iostream>
#include <chrono>
#include <thread>
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ NativeAbility::GetInstance().Back();
}
UNUSED(view);
return true;
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ NativeAbility::GetInstance().Back();
+ }
+ return true;
+ }
}
{
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)
{
TraingAquaticList->SetYScrollBarVisible(true); // 设置滑动滚动条
// 增加表冠控制
- //TraingAquaticList->SetRotateFactor(2);
- //TraingAquaticList->RequestFocus();
+ TraingAquaticList->SetRotateFactor(2);
+ TraingAquaticList->RequestFocus();
+
+ SetKeyActListener();
}
UIList *TraingAquaticView::GetList()
{
void TraingAquaticView::OnStop()
{
View<TraingAquaticPresenter>::OnStop();
+
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
- // RootView::GetInstance()->ClearFocus();
+ // RootView::GetInstance()->ClearFocus();
return;
}
}
\ No newline at end of file
/***
+ * @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
class TraingBallView;
class TraingBallModel;
class TraingBallPresenter : public Presenter<TraingBallView>,
- public UIView::OnClickListener,
- public UIView::OnDragListener
+ public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
+ public UIView::OnDragListener
{
public:
TraingBallPresenter();
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
#include "ui_resource_string.h"
#include "NativeAbility.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+#include "common/key_code.h"
+
#include <iostream>
#include <chrono>
#include <thread>
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ NativeAbility::GetInstance().Back();
}
UNUSED(view);
return true;
{
UNUSED(event);
TraingBallItemView *itemView = static_cast<TraingBallItemView *>(&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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ NativeAbility::GetInstance().Back();
+ }
+ return true;
+ }
}
{
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)
{
TraingBallList->SetYScrollBarVisible(true); // 设置滑动滚动条
// 增加表冠控制
- //TraingBallList->SetRotateFactor(2);
- //TraingBallList->RequestFocus();
+ TraingBallList->SetRotateFactor(2);
+ TraingBallList->RequestFocus();
+
+ SetKeyActListener();
}
UIList *TraingBallView::GetList()
{
void TraingBallView::OnStop()
{
View<TraingBallPresenter>::OnStop();
+
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
- // RootView::GetInstance()->ClearFocus();
+ // RootView::GetInstance()->ClearFocus();
return;
}
}
\ No newline at end of file
-/***
+/***
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-26 09:44:11
* @LastEditors: Caisking 3449750381@qq.com
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
-
#ifndef _TraingDance_PRESENTER_H
#define _TraingDance_PRESENTER_H
class TraingDanceModel;
class TraingDancePresenter : public Presenter<TraingDanceView>,
public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
public UIView::OnDragListener
{
public:
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};
};
#include "ui_resource_string.h"
#include "NativeAbility.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+#include "common/key_code.h"
+
#include <iostream>
#include <chrono>
#include <thread>
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ NativeAbility::GetInstance().Back();
}
UNUSED(view);
return true;
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ NativeAbility::GetInstance().Back();
+ }
+ return true;
+ }
}
{
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)
{
TraingDanceList->SetYScrollBarVisible(true); // 设置滑动滚动条
// 增加表冠控制
- //TraingDanceList->SetRotateFactor(2);
- //TraingDanceList->RequestFocus();
+ TraingDanceList->SetRotateFactor(2);
+ TraingDanceList->RequestFocus();
+
+ SetKeyActListener();
}
UIList *TraingDanceView::GetList()
{
void TraingDanceView::OnStop()
{
View<TraingDancePresenter>::OnStop();
+
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
- // RootView::GetInstance()->ClearFocus();
+ // RootView::GetInstance()->ClearFocus();
return;
}
}
\ No newline at end of file
+/***
+ * @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
class TraingFitnessPresenter : public Presenter<TraingFitnessView>,
public UIView::OnClickListener,
public UIView::OnDragListener,
- public UIView::OnTouchListener
+ public RootView::OnKeyActListener
+
{
public:
TraingFitnessPresenter();
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};
};
#include "AppViewIDs.h"
#include "NativeAbility.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+#include "common/key_code.h"
+
#include <iostream>
#include <chrono>
#include <thread>
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ NativeAbility::GetInstance().Back();
}
UNUSED(view);
return true;
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<uint16_t>(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())
}
return false;
}
+#endif
}
{
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)
{
TraingFitnessList->SetYScrollBarVisible(true); // 设置滑动滚动条
// 增加表冠控制
- //TraingFitnessList->SetRotateFactor(2);
- //TraingFitnessList->RequestFocus();
+ TraingFitnessList->SetRotateFactor(2);
+ TraingFitnessList->RequestFocus();
+
+ SetKeyActListener();
}
UIList *TraingFitnessView::GetList()
{
void TraingFitnessView::DeInitView()
{
// scrollView-> RemoveAll();
- RemoveAll();
+ scrollView->RemoveAll();
+
delete title;
title = nullptr;
void TraingFitnessView::OnStop()
{
View<TraingFitnessPresenter>::OnStop();
+
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
- // RootView::GetInstance()->ClearFocus();
+ // RootView::GetInstance()->ClearFocus();
return;
}
}
\ No newline at end of file
-/***
+/***
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-26 09:44:11
* @LastEditors: Caisking 3449750381@qq.com
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
-
#ifndef _TraingIce_PRESENTER_H
#define _TraingIce_PRESENTER_H
class TraingIceView;
class TraingIceModel;
class TraingIcePresenter : public Presenter<TraingIceView>,
- public UIView::OnClickListener,
- public UIView::OnDragListener
+ public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
+ public UIView::OnDragListener
{
public:
TraingIcePresenter();
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};
};
#include "ui_resource_string.h"
#include "NativeAbility.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+#include "common/key_code.h"
+
#include <iostream>
#include <chrono>
#include <thread>
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ NativeAbility::GetInstance().Back();
}
UNUSED(view);
return true;
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ NativeAbility::GetInstance().Back();
+ }
+ return true;
+ }
}
{
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)
TraingIceList->SetYScrollBarVisible(true); // 设置滑动滚动条
// 增加表冠控制
- //scrollView->SetRotateFactor(2);
- //scrollView->RequestFocus();
+ scrollView->SetRotateFactor(2);
+ scrollView->RequestFocus();
+
+ SetKeyActListener();
}
UIList *TraingIceView::GetList()
{
}
void TraingIceView::DeInitView()
{
- // scrollView-> RemoveAll();
- RemoveAll();
+ scrollView->RemoveAll();
+ // RemoveAll();
delete title;
title = nullptr;
void TraingIceView::OnStop()
{
View<TraingIcePresenter>::OnStop();
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
- // RootView::GetInstance()->ClearFocus();
+ // RootView::GetInstance()->ClearFocus();
return;
}
}
\ No newline at end of file
-/***
+/***
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-19 17:37:18
* @LastEditors: Caisking 3449750381@qq.com
class TraingLimitModel;
class TraingLimitPresenter : public Presenter<TraingLimitView>,
public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
public UIView::OnDragListener
{
public:
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};
};
#include "ui_resource_string.h"\r
#include "NativeAbility.h"\r
\r
+#include "KeyInputListener.h"\r
+#include "custom_utils.h"\r
+#include "common/key_code.h"\r
+\r
#include <iostream>\r
#include <chrono>\r
#include <thread>\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId);\r
if (viewId < VIEW_MAX_INTER_APP)\r
{\r
- NativeAbility::GetInstance().ChangeSlice(viewId);\r
+ NativeAbility::GetInstance().EnterSlice(viewId);\r
return true;\r
}\r
return false;\r
}\r
+ bool TraingLimitPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+ {\r
+ unsigned short keyID = event.GetKeyId();\r
+ unsigned short keyState = event.GetState();\r
\r
+ // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
+ {\r
+ NativeAbility::GetInstance().Back();\r
+ }\r
+ return true;\r
+ }\r
}\r
{\r
p_TraingLimitListAdapter->AddItem(item);\r
}\r
+\r
+ static void SetKeyActListener()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");\r
+ // 增加按键监听\r
+ RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingLimitPresenter::GetInstance();\r
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+ }\r
void TraingLimitView::InitView()\r
{\r
if (scrollView == nullptr)\r
TraingLimitList->SetYScrollBarVisible(true); // 设置滑动滚动条\r
\r
// 增加表冠控制\r
- //TraingLimitList->SetRotateFactor(2);\r
- //TraingLimitList->RequestFocus();\r
+ TraingLimitList->SetRotateFactor(2);\r
+ TraingLimitList->RequestFocus();\r
+\r
+ SetKeyActListener();\r
}\r
UIList *TraingLimitView::GetList()\r
{\r
}\r
void TraingLimitView::DeInitView()\r
{\r
- // scrollView-> RemoveAll();\r
- RemoveAll();\r
+ scrollView->RemoveAll();\r
+ // RemoveAll();\r
delete title;\r
title = nullptr;\r
\r
void TraingLimitView::OnStop()\r
{\r
View<TraingLimitPresenter>::OnStop();\r
+\r
+ RootView::GetInstance()->ClearOnKeyActListener();\r
+ //FocusManager::GetInstance()->ClearFocus();\r
RootView::GetInstance()->RemoveAll();\r
- // RootView::GetInstance()->ClearFocus();\r
+ // RootView::GetInstance()->ClearFocus();\r
return;\r
}\r
}
\ No newline at end of file
+/***
+ * @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
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<int, AppViewId> TraingMoreIdToViewId;
bool btConnectStatus{false};
/***
+ * @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
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
-
#ifndef _TraingMore_PRESENTER_H
#define _TraingMore_PRESENTER_H
class TraingMoreView;
class TraingMoreModel;
class TraingMorePresenter : public Presenter<TraingMoreView>,
- public UIView::OnClickListener,
- public UIView::OnDragListener
+ public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
+ public UIView::OnDragListener
{
public:
TraingMorePresenter();
void OnPause() override;
void OnResume() override;
void OnStop() override;
+ void NavigateBack();
static TraingMorePresenter *GetInstance();
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
+/***
+ * @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
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
#include "ui_resource_string.h"\r
#include "NativeAbility.h"\r
\r
+#include "KeyInputListener.h"\r
+#include "custom_utils.h"\r
+#include "common/key_code.h"\r
+\r
#include <iostream>\r
#include <chrono>\r
#include <thread>\r
#include "traing/training_list_more/include/TraingMoreView.h"\r
#include "traing/include/TraingModel.h"\r
#include "uicomponents/UIComponents.h"\r
+#include "traing/include/TraingModel.h"\r
// #include "TraingMoreView.h"\r
\r
namespace OHOS\r
\r
Presenter<TraingMoreView>::OnStop();\r
}\r
+ void TraingMorePresenter::NavigateBack()\r
+ {\r
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+\r
+ // 根据前一界面切换\r
+ if (preSlice == VIEW_TRAININGENDDATA)\r
+ {\r
+ if (TraingModel::GetInstance()->GetEntryType() == APPLIST_ENTER)\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING, TransitionType::TRANSITION_ZOOM);\r
+ else\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN, TransitionType::TRANSITION_ZOOM);\r
+ NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
+ }\r
+ }\r
+ else\r
+ {\r
+ NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM);\r
+ }\r
+ }\r
bool TraingMorePresenter::OnDrag(UIView &view, const DragEvent &event)\r
{\r
return true;\r
{\r
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
{\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING);\r
+ NavigateBack();\r
}\r
UNUSED(view);\r
return true;\r
case VIEW_TRAININGBALL:\r
TraingModel::GetInstance()->SetSportType(Exercisetype::BALL);\r
break;\r
- case VIEW_TRAININGAQUATIC:\r
- TraingModel::GetInstance()->SetSportType(Exercisetype::WATER);\r
- break;\r
case VIEW_TRAININGOTHER:\r
TraingModel::GetInstance()->SetSportType(Exercisetype::OTHER);\r
break;\r
+#if 0\r
+ case VIEW_TRAININGAQUATIC:\r
+ TraingModel::GetInstance()->SetSportType(Exercisetype::WATER);\r
+ break;\r
+#endif\r
default:\r
break;\r
}\r
if (viewId < VIEW_MAX_INTER_APP)\r
{\r
- NativeAbility::GetInstance().ChangeSlice(viewId);\r
+ NativeAbility::GetInstance().EnterSlice(viewId);\r
return true;\r
}\r
return false;\r
}\r
+ bool TraingMorePresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+ {\r
+ unsigned short keyID = event.GetKeyId();\r
+ unsigned short keyState = event.GetState();\r
\r
+ // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
+ {\r
+ NavigateBack();\r
+ }\r
+ return true;\r
+ }\r
}\r
{\r
p_TraingMoreListAdapter->AddItem(item);\r
}\r
+ static void SetKeyActListener()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");\r
+ // 增加按键监听\r
+ RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingMorePresenter::GetInstance();\r
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+ }\r
void TraingMoreView::InitView()\r
{\r
if (scrollView == nullptr)\r
scrollView->SetYScrollBarVisible(true); // 设置滑动滚动条\r
\r
// 增加表冠控制\r
- //TraingMoreList->SetRotateFactor(2);\r
- //TraingMoreList->RequestFocus();\r
+ TraingMoreList->SetRotateFactor(2);\r
+ TraingMoreList->RequestFocus();\r
+\r
+ SetKeyActListener();\r
}\r
UIList *TraingMoreView::GetList()\r
{\r
void TraingMoreView::OnStop()\r
{\r
View<TraingMorePresenter>::OnStop();\r
+\r
+\r
+ RootView::GetInstance()->ClearOnKeyActListener();\r
+ //FocusManager::GetInstance()->ClearFocus();\r
RootView::GetInstance()->RemoveAll();\r
- //RootView::GetInstance()->ClearFocus();\r
+ // RootView::GetInstance()->ClearFocus();\r
return;\r
}\r
}
\ No newline at end of file
-/***
+/***
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-19 17:37:18
* @LastEditors: Caisking 3449750381@qq.com
class TraingOtherModel;
class TraingOtherPresenter : public Presenter<TraingOtherView>,
public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
public UIView::OnDragListener
{
public:
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};
};
#include "ui_resource_string.h"
#include "NativeAbility.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+#include "common/key_code.h"
+
#include <iostream>
#include <chrono>
#include <thread>
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ NativeAbility::GetInstance().Back();
}
UNUSED(view);
return true;
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ NativeAbility::GetInstance().Back();
+ }
+ return true;
+ }
}
{
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)
{
TraingOtherList->SetYScrollBarVisible(true); // 设置滑动滚动条
// 增加表冠控制
- //TraingOtherList->SetRotateFactor(2);
- //TraingOtherList->RequestFocus();
+ TraingOtherList->SetRotateFactor(2);
+ TraingOtherList->RequestFocus();
+
+ SetKeyActListener();
}
UIList *TraingOtherView::GetList()
{
}
void TraingOtherView::DeInitView()
{
- // scrollView-> RemoveAll();
- RemoveAll();
+ scrollView->RemoveAll();
+ // RemoveAll();
delete title;
title = nullptr;
void TraingOtherView::OnStop()
{
View<TraingOtherPresenter>::OnStop();
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
- //RootView::GetInstance()->ClearFocus();
+ // RootView::GetInstance()->ClearFocus();
return;
}
}
\ No newline at end of file
-/***
+/***
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-19 17:37:18
* @LastEditors: Caisking 3449750381@qq.com
class TraingRestView;
class TraingRestModel;
class TraingRestPresenter : public Presenter<TraingRestView>,
- public UIView::OnClickListener,
- public UIView::OnDragListener
+ public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
+ public UIView::OnDragListener
{
public:
TraingRestPresenter();
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};
};
#include "ui_resource_string.h"
#include "NativeAbility.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+#include "common/key_code.h"
+
#include <iostream>
#include <chrono>
#include <thread>
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ NativeAbility::GetInstance().Back();
}
UNUSED(view);
return true;
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ NativeAbility::GetInstance().Back();
+ }
+ return true;
+ }
}
{
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)
TraingRestList->SetYScrollBarVisible(true); // 设置滑动滚动条
// 增加表冠控制
- //TraingRestList->SetRotateFactor(2);
- //TraingRestList->RequestFocus();
+ TraingRestList->SetRotateFactor(2);
+ TraingRestList->RequestFocus();
+
+ SetKeyActListener();
}
UIList *TraingRestView::GetList()
{
}
void TraingRestView::DeInitView()
{
- // scrollView-> RemoveAll();
- RemoveAll();
+ scrollView->RemoveAll();
+ // RemoveAll();
delete title;
title = nullptr;
void TraingRestView::OnStop()
{
View<TraingRestPresenter>::OnStop();
+
+ RootView::GetInstance()->ClearOnKeyActListener();
+ //FocusManager::GetInstance()->ClearFocus();
RootView::GetInstance()->RemoveAll();
- //RootView::GetInstance()->ClearFocus();
+ // RootView::GetInstance()->ClearFocus();
return;
}
}
\ No newline at end of file
-/***
- * @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
void OnResume() override;
void OnStop() override;
static TraingRecordPresenter *GetInstance();
+ void NavigateBack();
private:
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
#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"
{
Presenter<TraingRecordView>::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;
{
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
{
- NativeAbility::GetInstance().Back();
+ NavigateBack();
}
return true;
}
// 选择点击按键的历史数据
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;
}
// 如果是power键,且是亮屏状态,按键释放就返回上一级
if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
{
- // 回退
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM);
+ NavigateBack();
}
return true;
}