179 lines
6.4 KiB
C++
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
|