mcu_hi3321_watch/tjd/ui/app/production/TjdUiAppProductPresenter.h
2025-05-26 20:15:20 +08:00

136 lines
5.0 KiB
C++

#ifndef TJD_UI_APP_PRODUCT_PRESENTER_H
#define TJD_UI_APP_PRODUCT_PRESENTER_H
#include "Presenter.h"
#include "TjdUiTaskListener.h"
#include "TjdUiScreenDrag.h"
#include "cmsis_os2.h"
#include "components/root_view.h"
#include "components/ui_view.h"
#include "service_pgnss.h"
#include <list>
#include <string>
#include <unordered_map>
#define PRODUCT_NORMAL_BTN_VIEW_ID "normalBtn"
#define PRODUCT_AGING_BTN_VIEW_ID "agingBtn"
#define PRODUCT_TOUCH_BTN_VIEW_ID "touchBtn"
#define PRODUCT_GPS_BTN_VIEW_ID "gpsBtn"
#define PRODUCT_ONCE_BTN_VIEW_ID "onceBtn"
#define PRODUCT_REPEAT_BTN_VIEW_ID "repeatBtn"
#define PRODUCT_NEXT_BTN_VIEW_ID "nextBtn"
#define PRODUCT_BACK_BTN_VIEW_ID "backBtn"
namespace TJD {
enum ProductViewIndex
{
PRODUCT_SELECT_LIST = 0, // 测试选择列表
PRODUCT_LCD_TEST, // LCD测试页面
PRODUCT_TP_CLICK_TEST, // TP点击测试页面
PRODUCT_TP_SLIDE_TEST, // TP滑动测试页面
PRODUCT_HEART_RATE_TEST, // 心率测试页面
PRODUCT_GSENSOR_TEST, // 重力传感器测试页面
PRODUCT_SPEAKER_TEST, // 扬声器测试页面
PRODUCT_MOTOR_TEST, // 马达测试页面
PRODUCT_MICROPHONE_TEST, // 麦克风测试页面
PRODUCT_BUTTON_TEST, // 按键测试页面
PRODUCT_AGING_CHOOSE_TEST, // 老化测试选择页面
PRODUCT_AGING_TEST, // 老化测试页面
PRODUCT_TP_REPORT_TEST, // TP报告测试页面
PRODUCT_GPS_REPORT_TEST, // GPS测试页面
PRODUCT_UNKNOWN
};
struct AngingTestItem
{
bool lcdTest;
bool heartRate;
bool motor;
bool speaker;
};
struct AngingTestResult
{
uint32_t startTime_{0};
uint32_t endTime_{0};
uint8_t startPower_{0};
uint8_t endPower_{0};
AngingTestItem testItem_;
};
class TjdUiAppProductView;
class TjdUiAppProductPresenter : public OHOS::Presenter<TjdUiAppProductView>,
public OHOS::UIView::OnClickListener,
public TjdUiScreenDragListener,
public OHOS::UIView::OnTouchListener,
public OHOS::RootView::OnKeyActListener,
public TjdUiTaskListener
{
public:
TjdUiAppProductPresenter();
virtual ~TjdUiAppProductPresenter();
static TjdUiAppProductPresenter *GetInstance(void);
void OnStart() override;
void OnStop() override;
void Notify(void) override;
bool OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event) override;
bool OnDrag(OHOS::UIView &view, const OHOS::DragEvent &event) override;
bool OnDragEnd(OHOS::UIView &view, const OHOS::DragEvent &event) override;
void ScreenDragEventCallback(OHOS::UIView &view, const OHOS::DragEvent &event) override { ViewExitEvent(true); }
bool OnKeyAct(OHOS::UIView &view, const OHOS::KeyEvent &event) override;
bool OnPress(OHOS::UIView &view, const OHOS::PressEvent &event) override;
void StartJumpTimer(ProductViewIndex jumpView);
void DeleteJumpTimer(void);
void ShowViewEvent(ProductViewIndex showIndex);
void PushGsvToMap(std::string starNum, int snr);
void UpdataGsvData(void);
std::unordered_map<std::string, int> &GetGsvData(void) { return gsvData; }
void GnssChangedEvent(bool open);
void GnssSignalProcess(GnssQualityLevel &signal);
private:
bool ClickSelectList(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickAgingChooseTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickLcdTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickTpTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool SlideTpTest(void);
bool ClickHeartRateTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickGsensorTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickSpeakerTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickMotorTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickMicrophoneTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickButtonTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
bool ClickGPSTest(OHOS::UIView &view, const OHOS::ClickEvent &event);
void ShowLcdTestEvent(void);
void ShowHeartRateEvent(void);
void ShowSpeakerEvent(void);
void ShowMotorEvent(void);
void ShowMicrophoneEvent(void);
void ShowAgintChooseTestEvent(void);
void ShowAgintTestEvent(void);
void ShowGpsEvent(void);
void SetNotifyEnable(uint16_t timeMs, bool enable);
void ResetTestView(void);
void ViewExitEvent(bool isSwipe);
void NormalTestEndEvent(void);
void GPSEndEvent(void);
void AgingEndEvent(void);
void SaveAgingResultToFile(AngingTestResult &result);
bool GetAgingResultToFile(AngingTestResult *result);
osTimerId_t jumpTimerId_{nullptr};
uint8_t lcdColorIndex_{0};
uint8_t agingTestCount_{0};
AngingTestResult agingTestResult_;
std::unordered_map<std::string, int> gsvData;
bool gpsNormal_{true};
bool notifyEnable_{false};
};
} // namespace TJD
#endif