#ifndef TJDUIAPP_ALARM_PRESENTER #define TJDUIAPP_ALARM_PRESENTER #include "Presenter.h" #include "components/tjd_ui_time_picker.h" #include "TjdUiScreenDrag.h" #include "root_view.h" #include "ui_list.h" #include "ui_view.h" namespace TJD { #define ALARM_BIN_PATH TJD_IMAGE_PATH "img_alarm.bin" #define ALARM_ITEM_W 450 #define ALARM_ITEM_H 120 enum AlarmView { ALARM_HOME_VIEW, ALARM_EDIT_VIEW, ALARM_TIME_SET_VIEW, ALARM_CYCLE_SET_VIEW, ALARM_SET_FAIL_VIEW, ALARM_DEL_REMIND_VIEW, ALARM_VIEW_MAX }; struct AlarmItem { uint8_t index; bool enable; uint8_t cycle_mode; uint8_t hour; uint8_t minute; AlarmItem(uint8_t idx, bool en, uint8_t cm, uint8_t hr, uint8_t mn) : index(idx), enable(en), cycle_mode(cm), hour(hr), minute(mn) { } }; class TjdUiAppAlarmView; class TjdUiAppAlarmModel; class TjdUiAppAlarmPresenter : public OHOS::Presenter, public OHOS::UIView::OnClickListener, public TjdUiScreenDragListener, public OHOS::RootView::OnKeyActListener, public TjdUITimePicker::ItemSelectdEnterListener { public: TjdUiAppAlarmPresenter(); ~TjdUiAppAlarmPresenter(); static TjdUiAppAlarmPresenter *GetInstance(void); void OnStart() override; void OnResume() override; void OnPause() override; void OnStop() override; bool OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event) override; bool OnKeyAct(OHOS::UIView &view, const OHOS::KeyEvent &event) override; void ScreenDragEventCallback(OHOS::UIView &view, const OHOS::DragEvent &event) override { ExitCurrentView(); } void OnSelectTimePicker(OHOS::UIPicker &picker) override; void OnEnter(int32_t hour, int32_t minute) override; void ExitAlarmSlice(void); void ExitCurrentView(void); uint8_t GetSelectedListId(void) { return selectedListId; } void SetSelectedListId(uint8_t id) { selectedListId = id; } void SetTimeType(TjdUITimePicker::TimePickerType type) { timeType_ = type; } AlarmView GetCurrentView(void) { return currentView_; } TjdUITimePicker::TimePickerType &GetTimeType() { return timeType_; } AlarmView currentView_{ALARM_HOME_VIEW}; bool isAlarmFull{false}; private: TjdUiAppAlarmModel *model{nullptr}; uint8_t selectedListId = 0; TjdUITimePicker::TimePickerType timeType_; bool isExit_{false}; int16_t dragStartX_{0}; int16_t dragCurrentX_{0}; int32_t dragDistance_{0}; }; std::string buildCycleString(uint8_t cycle_mode); std::string CheckTimeIsNeedFillZero(uint8_t value); uint16_t convertDay(uint8_t dayNum); } // namespace TJD #endif