168 lines
7.2 KiB
C++
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
|