94 lines
2.8 KiB
C++
94 lines
2.8 KiB
C++
#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<TjdUiAppAlarmView>,
|
|
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 |