mcu_hi3321_watch/tjd/ui/app/activity_recognition/TjdUiAppActivityRecognitionPresenter.cpp
2025-05-26 20:15:20 +08:00

168 lines
7.2 KiB
C++

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved.
*
* Description: TjdUiAppActivityRecognitionPresenter.cpp
*
* Author: wuchangxin@ss-tjd.com
*
* Create: 2025-03-25
*--------------------------------------------------------------------------*/
#include "TjdUiAppActivityRecognitionPresenter.h"
#include "TjdUiAppActivityRecognitionView.h"
#include "TjdUiAppSportView.h"
#include "TjdUiMsgCenter.h"
#include "TjdUiOnKeyListener.h"
#include "broadcast_feature.h"
#include "cwm_data_deal.h"
#include "notification_manager.h"
#include "service_sport.h"
#include <stdio.h>
namespace TJD {
static TjdUiAppActivityRecognitionPresenter *g_appActivityRecognitionPresenter = nullptr;
static TjdUiAppActivityRecognitionPresenter *g_pv_ActivityRecognitionPresenter = nullptr;
static OHOS::UIScrollView *g_pv_ActivityRecognitionView = nullptr;
TjdUiAppActivityRecognitionPresenter::TjdUiAppActivityRecognitionPresenter()
{
g_appActivityRecognitionPresenter = this;
}
TjdUiAppActivityRecognitionPresenter::~TjdUiAppActivityRecognitionPresenter()
{
g_appActivityRecognitionPresenter = nullptr;
}
TjdUiAppActivityRecognitionPresenter *TjdUiAppActivityRecognitionPresenter::GetInstance()
{
return g_appActivityRecognitionPresenter;
}
bool TjdUiAppActivityRecognitionPresenter::OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event)
{
std::string viewId = view.GetViewId();
if (viewId.empty()) {
return false;
}
if (viewId == "Click_Cancel_") {
set_is_motion_start_cancel(true);
OHOS::NotificationManager::GetInstance()->StopNotify();
} else if (viewId == "imgCancel_") {
OHOS::NotificationManager::GetInstance()->StopNotify();
} else if (viewId == "Start_Sport") {
if (OHOS::NativeAbility::GetInstance().GetCurSliceId() != TJD_APP_VIEW_SPORT) {
auto parent = view.GetParent();
uint8_t sportType = static_cast<ActivityRecognitionView *>(parent)->GetSportType();
sportType = 0x10 | sportType;
setmotion_recognition_entry(sportType);
OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_SPORT,
OHOS::TransitionType::TRANSITION_HEXAGONS);
OHOS::NotificationManager::GetInstance()->StopNotify();
}
} else if (viewId == "MovementEndReminderConfirm_" || viewId == "MovementForcedEndReminderConfirm_" ||
viewId == "MovementAutoEndViewConfirm_" || viewId == "MovementTimeoutReminderConfirm_" ||
viewId == "MovementTimeoutForcedEndReminderConfirm_") {
if (OHOS::NativeAbility::GetInstance().GetCurSliceId() == TJD_APP_VIEW_SPORT) {
auto sportView = TjdUiAppSportView::GetInstance();
sportView->ShowTargetView(SPORT_END_DATA_VIEW);
OHOS::NotificationManager::GetInstance()->StopNotify();
if (viewId == "MovementTimeoutReminderConfirm_") {
set_movement_force_remind_need_trigger(false);
set_movement_auto_end_need_trigger(false);
} else if (viewId == "MovementAutoEndViewConfirm_") {
set_movement_force_remind_need_trigger(false);
} else if (viewId == "MovementForcedEndReminderConfirm_") {
set_movement_auto_end_need_trigger(false);
}
}
}
return true;
}
bool TjdUiAppActivityRecognitionPresenter::OnKeyAct(OHOS::UIView &view, const OHOS::KeyEvent &event)
{
if (!TjdUiCommonOnKeyListener::CheckIsExitEvent(event)) {
return true;
}
OHOS::NotificationManager::GetInstance()->StopNotify();
return true;
}
void TjdUiAppActivityRecognitionPresenter::ScreenDragEventCallback(OHOS::UIView &view, const OHOS::DragEvent &event)
{
OHOS::NotificationManager::GetInstance()->StopNotify();
}
void TjdUiActivityRecognitionMessageProc(const Topic topic, Request *req)
{
printf("TjdUiActivityRecognitionMessageProc topic = %d, req->data = %d\n", topic, *((uint8_t *)req->data));
uint8_t msgType = *((uint8_t *)req->data);
uint8_t sportData = msgType & 0x0F;
OHOS::NotificationManager::GetInstance()->SetNotifyPriority(TjdUiMsgCenterGetPriority(topic));
OHOS::NotificationManager::GetInstance()->ShowNotify(
[msgType,sportData]() -> OHOS::UIViewGroup * {
g_pv_ActivityRecognitionPresenter = new TjdUiAppActivityRecognitionPresenter();
printf("line = %d, TjdUiActivityRecognitionMessageProc msgType = %d, sportData = %d\n",
__LINE__, msgType, sportData);
switch (msgType & 0xF0) {
case MOVEMENT_START_SPORT:
if (g_pv_ActivityRecognitionView == nullptr) {
g_pv_ActivityRecognitionView = new ActivityRecognitionView(sportData);
}
break;
case MOVEMENT_END_REMINDER:
if (g_pv_ActivityRecognitionView == nullptr) {
g_pv_ActivityRecognitionView = new MovementEndReminder();
}
break;
case MOVEMENT_FORCED_END_REMINDER:
if (g_pv_ActivityRecognitionView == nullptr) {
g_pv_ActivityRecognitionView = new MovementForcedEndReminder();
}
break;
case MOVEMENT_TIMEOUT_REMINDER:
if (g_pv_ActivityRecognitionView == nullptr) {
g_pv_ActivityRecognitionView = new MovementTimeoutReminder(sportData);
}
break;
case MOVEMENT_TIMEOUT_FORCED_END_REMINDER:
if (g_pv_ActivityRecognitionView == nullptr) {
g_pv_ActivityRecognitionView = new MovementTimeoutForcedEndReminder(sportData);
}
break;
case MOVEMENT_AUTO_END_REMINDER:
printf("TjdUiActivityRecognitionMessageProc MOVEMENT_AUTO_END_REMINDER\n");
if (g_pv_ActivityRecognitionView == nullptr) {
g_pv_ActivityRecognitionView = new MovementAutoEndView();
}
break;
default:
break;
}
TjdUiCommonOnKeyListener::GetInstance()->SetOnKeyActListener(g_pv_ActivityRecognitionPresenter,
KeyModelType::SYS_KEY_TYPE);
OHOS::NotificationManager::GetInstance()->RegisterNotifyCleanupFunction([]() {
OHOS::NotificationManager::GetInstance()->SetNotifyPriority(TJD_UI_PRIO_LOWEST);
static_print_info("TjdUiShutdownMsgCenterMessageProc RegisterNotifyCleanupFunction");
TjdUiCommonOnKeyListener::GetInstance()->ClearOnKeyActListener(KeyModelType::SYS_KEY_TYPE);
OHOS::RootView::GetInstance()->Remove(g_pv_ActivityRecognitionView);
delete g_pv_ActivityRecognitionView;
delete g_pv_ActivityRecognitionPresenter;
g_pv_ActivityRecognitionView = nullptr;
g_pv_ActivityRecognitionPresenter = nullptr;
RunPopOutPageCallback();
});
return g_pv_ActivityRecognitionView;
},
static_cast<uint16_t>(topic), true
);
}
} // namespace TJD