mcu_hi3321_watch/application/wearable/nativeapp/nativeui/alarm/include/AlarmPresenter.h
2025-05-26 20:15:20 +08:00

154 lines
5.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
* Description: Alarm
* Author:
* Create: 2021-09-11
*/
#ifndef ALARM_PRESENTER_H
#define ALARM_PRESENTER_H
#include "Presenter.h"
#include "ChangeSliceListener.h"
#include "UiConfig.h"
#include "components/ui_label.h"
#include "common/screen.h"
#include "components/ui_label.h"
#include "components/root_view.h"
#include "components/ui_view_group.h"
#include "components/ui_checkbox.h"
#include "components/ui_image_view.h"
#include "gfx_utils/graphic_types.h"
#include "components/ui_button.h"
#include "components/ui_label_button.h"
#include "components/ui_time_picker.h"
#include "components/ui_digital_clock.h"
#include "gfx_utils/graphic_log.h"
#include "AlarmClockModel.h"
#include "wearable_log.h"
#include "color.h"
namespace OHOS {
constexpr char* EVERY_DAY = (char *)"每天";
constexpr char* DO_NOT_REPEAT = (char *)"不重复";
constexpr char* MON_DAY = (char *)"";
constexpr char* TUE_DAY = (char *)"";
constexpr char* WED_DAY = (char *)"";
constexpr char* THUR_DAY = (char *)"";
constexpr char* FRI_DAY = (char *)"";
constexpr char* SAT_DAY = (char *)"";
constexpr char* SUN_DAY = (char *)"";
constexpr char* SET_TIME = (char *)"settime";
constexpr char* SET_WEEK = (char *)"setweek";
constexpr char* ALARM_CLOCK_DELETE = (char *)"alarmclockdelete";
constexpr char* ALARM_NEXT = (char *)"alarmnext";
constexpr char* ALARM_OK = (char *)"alarmok";
constexpr char* JUDGE_DELETE = (char *)"judgedelete";
constexpr char* JUDGE_TRUE = (char *)"judgetrue";
constexpr char* ADD_BUTTON = (char *)"addbutton";
constexpr char* MONDAY = (char *)"monday";
constexpr char* TUESDAY = (char *)"tuesday";
constexpr char* WEDNESDAY = (char *)"wednesday";
constexpr char* THURSDAY = (char *)"thursday";
constexpr char* FRIDAY = (char *)"friday";
constexpr char* SATURDAY = (char *)"saturday";
constexpr char* SUNDAY = (char *)"sunday";
constexpr char* ALARM_WEEK_OK = (char *)"alarmweekok";
constexpr char* ALARM_STATUS_ONE = (char *)"alarmstatus0";
constexpr char* ALARM_STATUS_TWO = (char *)"alarmstatus1";
constexpr char* ALARM_STATUS_THREE = (char *)"alarmstatus2";
constexpr char* ALARM_STATUS_FOUR = (char *)"alarmstatus3";
constexpr char* ALARM_STATUS_FIVE = (char *)"alarmstatus4";
constexpr char* ALARM_STATUS_SIX = (char *)"alarmstatus5";
constexpr char* ALARM_CLOCK_ONE = (char *)"alarmclock0";
constexpr char* ALARM_CLOCK_TWO = (char *)"alarmclock1";
constexpr char* ALARM_CLOCK_THREE = (char *)"alarmclock2";
constexpr char* ALARM_CLOCK_FOUR = (char *)"alarmclock3";
constexpr char* ALARM_CLOCK_FIVE = (char *)"alarmclock4";
constexpr char* ALARM_CLOCK_SIX = (char *)"alarmclock5";
constexpr int16_t SET_SIX = 6;
constexpr char* ALARM_STATUS[6] = {ALARM_STATUS_ONE, ALARM_STATUS_TWO, ALARM_STATUS_THREE, // 闹钟按钮最大个数为6个
ALARM_STATUS_FOUR, ALARM_STATUS_FIVE, ALARM_STATUS_SIX};
constexpr char* ALARM_CLOCK[6] = {ALARM_CLOCK_ONE, ALARM_CLOCK_TWO, ALARM_CLOCK_THREE, // 闹钟个数最大个数为6个
ALARM_CLOCK_FOUR, ALARM_CLOCK_FIVE, ALARM_CLOCK_SIX};
constexpr char* WEEK_CONTAINER[7] = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 日期按钮最大个数为7个
typedef enum {
MAIN_INTERFACE = 0,
CHANGE_INTERFACE_CONFIG,
CHANGE_INTERFACE_SET_TIME,
CHANGE_INTERFACE_SET_WEEK,
CHANGE_INTERFACE_JUDGE,
CHANGE_INTERFACE_NEW_TIME,
CHANGE_INTERFACE_MAXCLOCK,
} InterfacesId;
class AlarmStatusBtnChangeListener : public OHOS::UICheckBox::OnChangeListener
{
public:
explicit AlarmStatusBtnChangeListener(UIView *uiView)
{
std::string alarmStatusId = uiView->GetViewId();
std::string alarmCmpId;
for (int16_t num = 0; num < SET_SIX; num++) { // 闹钟按钮的最大个数为6个
alarmCmpId = ALARM_STATUS[num];
if (alarmStatusId == alarmCmpId) {
alarmStatusNum = num;
}
}
}
~AlarmStatusBtnChangeListener() {}
bool OnChange(UICheckBox::UICheckBoxState state) override;
private:
int16_t alarmStatusNum;
};
class MainAlarmView;
class AlarmPresenter : public Presenter<MainAlarmView>, public UIView::OnClickListener,
public UITimePicker::SelectedListener, public UIView::OnDragListener {
public:
AlarmPresenter();
~AlarmPresenter() override;
static AlarmPresenter *GetInstance();
static void PlayRing(void *arg);
int16_t GetInterStatus(void);
ColorType ShadowBlue(void);
bool OnClick(UIView &view, const ClickEvent &event) override;
bool OnDrag(UIView& view, const DragEvent& event) override;
bool ClickFuncId(const char *buttonName);
bool ClickFuncView(UIView &view);
void OnTimePickerStoped(UITimePicker &picker) override;
void ClickBlue(UIView &view);
void ClickBlack(UIView &view);
void GetAlarmNum(uint16_t alarmNum);
void ClickSetTime(uint16_t alarmNum);
void ClickSetWeek(uint16_t alarmNum);
void ClickAlarmClockDelete(uint16_t alarmNum);
void ClickJudgeDelete(uint16_t alarmNum);
void ClickJudgeTrue(uint16_t alarmNum);
void ClickAlarmTimeOk(uint16_t alarmNum);
void ClickAlarmClock(uint16_t alarmNum);
void ClickAlarmWeekOk(uint16_t alarmNum);
void ClickAlarmNewTime(uint16_t alarmNum);
void ClickAlarmNext(uint16_t alarmNum);
void OnTimePickerInaction(uint32_t hour, uint32_t min);
uint8_t alarmWeek[7] = {1, 1, 1, 1, 1, 1, 1}; // 闹钟默认所有的日期都选中因此初始值为17是指一个星期中七天
private:
uint32_t timeHour{0};
uint32_t timeMin{0};
uint16_t setListener;
uint16_t alarmListener{0};
uint16_t clockQty{0};
int16_t interListener;
bool buttonStratus = true;
};
}
#endif