/*---------------------------------------------------------------------------- * 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 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(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(topic), true ); } } // namespace TJD