#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 #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::OnPause(); if (view_->GetSwipeView()) { view_->GetSwipeView()->ClearFocus(); } } void TjdUiAppDailyDataPresenter::OnResume() { static_print_info("[TjdUiAppDailyDataPresenter]::%s", __func__); view_->UpdateFirstPage(); Presenter::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