mcu_hi3321_watch/tjd/ui/app/alarm/TjdUiAppAlarmModel.cpp
2025-05-26 20:15:20 +08:00

138 lines
4.6 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.

#include "TjdUiAppAlarmModel.h"
#include "TjdUiAppAlarmPresenter.h"
#include "debug_print.h"
#include "sql_alarm.h"
#include "sql_setting.h"
#include "sys_config.h"
#include <stdio.h>
using namespace OHOS;
#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
namespace TJD {
TjdUiAppAlarmModel &TjdUiAppAlarmModel::GetInstance(void)
{
static TjdUiAppAlarmModel instance;
return instance;
}
uint8_t TjdUiAppAlarmModel::LoadAlarmData(std::list<AlarmItem> &list)
{
printf("TjdUiAppAlarmModel::LoadAlarmData\n");
uint8_t size = sql_alarm_get_alarm_number(&(TjdUiAppAlarmPresenter::GetInstance()->isAlarmFull));
uint8_t alarm_num[size];
uint8_t *array_ptr = alarm_num;
sql_alarm_get_alarm_index_list(&array_ptr);
for (int i = 0; i < size; i++) {
AlarmItem item(0, false, 0, 0, 0);
item.index = alarm_num[i];
item.enable = sql_alarm_get_switch(alarm_num[i]) > 0 ? true : false;
item.cycle_mode = sql_alarm_get_cycle(alarm_num[i]);
sql_alarm_get_time(alarm_num[i], &(item.hour), &(item.minute));
static_print_debug("index:%d enable:%d cycle_mode:%x hour:%d minute:%d", item.index, item.enable,
item.cycle_mode, item.hour, item.minute);
list.push_back(item);
}
return size;
}
bool TjdUiAppAlarmModel::GetWhetherAlarmIsSetToRepeat(uint8_t cycle, uint8_t hour, uint8_t min)//true:repeat false:not repeat
{
uint8_t size = sql_alarm_get_alarm_number(&(TjdUiAppAlarmPresenter::GetInstance()->isAlarmFull));
printf("size:%d cycle:%d hour:%d min:%d\n", size, cycle, hour, min);
uint8_t alarm_num[size];
uint8_t *array_ptr = alarm_num;
uint8_t hour_tmp, min_tmp;
uint8_t count = 0;
sql_alarm_get_alarm_index_list(&array_ptr);
for (int i = 0; i < size; i++) {
if (sql_alarm_get_cycle(alarm_num[i]) == cycle ) {
sql_alarm_get_time(alarm_num[i], &hour_tmp, &min_tmp);
if(hour_tmp == hour && min_tmp == min)
return true;
}
}
return false;
}
// 返回创建的闹钟index
int8_t TjdUiAppAlarmModel::AddAlarmToSQL(uint8_t cycle, uint8_t hour, uint8_t min)
{
printf("TjdUiAppAlarmModel::AddAlarmToSQL cycle:%d hour:%d min:%d\n", cycle, hour, min);
uint8_t index;
if ((index = sql_alarm_create()) >= 0) {
sql_alarm_set_switch(index, 1);
sql_alarm_set_cycle(index, cycle);
sql_alarm_set_time(index, hour, min);
}
// 创建闹钟数量已达到最大值
return -1;
}
int8_t TjdUiAppAlarmModel::EditAlarmCycleToSQL(uint8_t index, uint8_t cycle)
{
int8_t valid = sql_alarm_get_valid(index);
if (valid == -1 || valid == 0) { // -1:没有该index0:该index的无效
return -1;
}
sql_alarm_set_cycle(index, cycle);
return 0;
}
int8_t TjdUiAppAlarmModel::EditAlarmTimeToSQL(uint8_t index, uint8_t hour, uint8_t min)
{
printf("CXIN TjdUiAppAlarmModel::EditAlarmTimeToSQL index:%d hour:%d min:%d\n", index, hour, min);
int8_t valid = sql_alarm_get_valid(index);
if (valid == -1 || valid == 0) { // -1:没有该index0:该index的无效
return -1;
}
sql_alarm_set_time(index, hour, min);
return 0;
}
int8_t TjdUiAppAlarmModel::AlarmEnableToSQL(uint8_t index, bool status)
{
int8_t valid = sql_alarm_get_valid(index);
if (valid == -1 || valid == 0) { // -1:没有该index0:该index的无效
return -1;
}
sql_alarm_set_switch(index, status);
return 0;
}
void TjdUiAppAlarmModel::DeleteAlarmFromSQL(uint8_t index) { sql_alarm_delete(index); }
void TjdUiAppAlarmModel::SetTimeFormat(TjdUITimePicker::TimePickerType &type)
{
uint8_t format = sql_setting_get_time_format();
printf("TjdUiAppAlarmModel::SetTimeFormat format:%d\n", format);
if (format == 0) {
type = TjdUITimePicker::TimePickerType::TIME_PICKER_24_HOUR;
} else if (format == 1) {
type = TjdUITimePicker::TimePickerType::TIME_PICKER_12_HOUR;
}
}
uint8_t TjdUiAppAlarmModel::GetAlarmMaxNumber(void) {return sql_alarm_get_max_number();}
} // namespace TJD