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

179 lines
6.4 KiB
C++

#include "TjdUiAppDailyDataPresenter.h"
#include "NativeAbility.h"
#include "TjdUiAppDailyDataView.h"
#include "TjdUiAppIds.h"
#include "TjdUiAppMainView.h"
#include "TjdUiRegisterManager.h"
#include "dock/input_device.h"
#include "sys_config.h"
#include <stdio.h>
#define ENABLE_PRINT_INFO 1
#if ENABLE_PRINT_INFO
#define static_print_info(...) sys_ui_log_i(__VA_ARGS__) // 一般信息打印宏控制
#define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) // 警告信息打印一般常开
#define static_print_error(...) sys_ui_log_e(__VA_ARGS__) // 错误信息打印一般常开
#define static_print_debug(...) sys_ui_log_d(__VA_ARGS__) // 调试信息打印
#else
#define static_print_info(...)
#define static_print_warn(...)
#define static_print_error(...)
#define static_print_debug(...)
#endif
using namespace OHOS;
namespace TJD {
TJD_REGIST_NATIVE_MENU(TJD_APP_VIEW_DAILYDATA, TjdUiAppDailyDataView, TjdUiAppDailyDataPresenter,
IMG_MENU_LIST_MENU_DATA, STR_ID_07);
// clang-format off
#define DRAG_EXIT_DISTANCE 170
// clang-format on
static TjdUiAppDailyDataPresenter *g_pv_AppDailyDataPresenter = nullptr;
static DailyDataView g_CurrentPage = DAILYDATA_SWIPE_VIEW;
TjdUiAppDailyDataPresenter::TjdUiAppDailyDataPresenter()
{
g_pv_AppDailyDataPresenter = this;
model = &TjdUiAppDailyDataModel::GetInstance();
}
TjdUiAppDailyDataPresenter::~TjdUiAppDailyDataPresenter() { g_pv_AppDailyDataPresenter = nullptr; }
TjdUiAppDailyDataPresenter *TjdUiAppDailyDataPresenter::GetInstance(void) { return g_pv_AppDailyDataPresenter; }
void TjdUiAppDailyDataPresenter::OnStart()
{
static_print_info("[TjdUiAppDailyDataPresenter]::%s", __func__);
TjdUiCommonOnKeyListener::GetInstance()->SetOnKeyActListener(this, KeyModelType::APP_KEY_TYPE);
}
void TjdUiAppDailyDataPresenter::OnPause()
{
static_print_info("[TjdUiAppDailyDataPresenter]::%s", __func__);
Presenter<TjdUiAppDailyDataView>::OnPause();
if (view_->GetSwipeView()) {
view_->GetSwipeView()->ClearFocus();
}
}
void TjdUiAppDailyDataPresenter::OnResume()
{
static_print_info("[TjdUiAppDailyDataPresenter]::%s", __func__);
view_->UpdateFirstPage();
Presenter<TjdUiAppDailyDataView>::OnResume();
if (view_->GetSwipeView()) {
view_->GetSwipeView()->RequestFocus();
view_->GetSwipeView()->SetRotateFactor(1.0);
}
}
void TjdUiAppDailyDataPresenter::OnStop()
{
static_print_info("[TjdUiAppDailyDataPresenter]::%s", __func__);
TjdUiCommonOnKeyListener::GetInstance()->ClearOnKeyActListener(KeyModelType::APP_KEY_TYPE);
}
bool TjdUiAppDailyDataPresenter::OnKeyAct(OHOS::UIView &view, const OHOS::KeyEvent &event)
{
if (!TjdUiCommonOnKeyListener::CheckIsExitEvent(event)) {
return true;
}
if (g_CurrentPage != DAILYDATA_ABOUT_VIEW) {
ExitDailyDataView();
} else {
g_CurrentPage = DAILYDATA_SWIPE_VIEW;
TjdUiAppDailyDataView::GetInstance()->ChangedView(DAILYDATA_SWIPE_VIEW, DAILYDATA_ABOUT_VIEW);
}
return true;
return false;
}
bool TjdUiAppDailyDataPresenter::OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event)
{
if (view.GetViewId() == ABOUT_ID) {
g_CurrentPage = DAILYDATA_ABOUT_VIEW;
view_->ChangedView(DailyDataView::DAILYDATA_ABOUT_VIEW, DailyDataView::DAILYDATA_SWIPE_VIEW);
return true;
}
return false;
}
void TjdUiAppDailyDataPresenter::ViewExitEvent(OHOS::UIView &view, const OHOS::DragEvent &event)
{
if (g_CurrentPage != DAILYDATA_ABOUT_VIEW) {
ExitDailyDataView();
} else {
g_CurrentPage = DAILYDATA_SWIPE_VIEW;
TjdUiAppDailyDataView::GetInstance()->ChangedView(DAILYDATA_SWIPE_VIEW, DAILYDATA_ABOUT_VIEW);
}
return;
}
void TjdUiAppDailyDataPresenter::ExitDailyDataView() { OHOS::NativeAbility::GetInstance().ChangePreSlice(); }
void TjdUiAppDailyDataPresenter::UpdatePointArray(void)
{
DDPointArray *stepPointArray = view_->GetPointArray(STEP_ID);
DDPointArray *KCALPointArray = view_->GetPointArray(CALORIE_ID);
DDPointArray *exertimePointArray = view_->GetPointArray(SPORTTIME_ID);
DDPointArray *distancePointArray = view_->GetPointArray(DISTANCE_ID);
uint32_t *modelStepArray = model->GetStepDayArray();
uint16_t *modelKCALArray = model->GetKCALDayArray();
uint16_t *modelTimeArray = model->GetTimeDayArray();
uint16_t *modelDistanceArray = model->GetDistanceDayArray();
uint32_t stepMax = 0;
uint32_t KCALMax = 0;
uint32_t timeMax = 0;
uint32_t distanceMax = 0;
for (int i = 0; i < DAILYDATA_DAY_MAX_NUM; i++) {
stepPointArray->PointArray[i].x = i;
KCALPointArray->PointArray[i].x = i;
exertimePointArray->PointArray[i].x = i;
distancePointArray->PointArray[i].x = i;
stepPointArray->PointArray[i].y = modelStepArray[i];
KCALPointArray->PointArray[i].y = modelKCALArray[i];
exertimePointArray->PointArray[i].y = modelTimeArray[i];
distancePointArray->PointArray[i].y = modelDistanceArray[i];
stepMax = stepMax > modelStepArray[i] ? stepMax : modelStepArray[i];
KCALMax = KCALMax > modelKCALArray[i] ? KCALMax : modelKCALArray[i];
timeMax = timeMax > modelTimeArray[i] ? timeMax : modelTimeArray[i];
distanceMax = distanceMax > modelDistanceArray[i] ? distanceMax : modelDistanceArray[i];
// printf("stepMax = %d\n", stepMax);
// printf("KCALMax = %d\n", KCALMax);
// printf("timeMax = %d\n", timeMax);
// printf("distanceMax = %d\n", distanceMax);
}
stepPointArray->arrayMax = stepMax;
KCALPointArray->arrayMax = KCALMax;
exertimePointArray->arrayMax = timeMax;
distancePointArray->arrayMax = distanceMax;
stepPointArray->arrayStep = GetDataStep(stepPointArray->arrayMax);
KCALPointArray->arrayStep = GetDataStep(KCALPointArray->arrayMax);
exertimePointArray->arrayStep = GetDataStep(exertimePointArray->arrayMax);
distancePointArray->arrayStep = GetDataStep(distancePointArray->arrayMax);
}
uint32_t TjdUiAppDailyDataPresenter::GetDataStep(uint32_t highValue)
{
uint32_t remainder, MaxValue;
remainder = highValue % 4;
MaxValue = highValue + (remainder == 0 ? 0 : (4 - remainder));
return MaxValue / 4;
}
} // namespace TJD