mirror of
https://github.com/InfiniTimeOrg/InfiniTime.git
synced 2024-10-26 06:18:23 +03:00
AlarmController: save on Alarm sceen closing when settingsChanged
Introduce `SaveAlarm()` member function which saves to file only if the alarm setting is changed. The `alarmChanged` boolean flag mimics the behavior of `settingsChanged` flag from `Settings.h` Also mark the `SaveAlarmToFile()` function const, as it doesn't change anything in the `AlarmController` object.
This commit is contained in:
parent
751f46f7de
commit
ad6e1b967c
@ -45,13 +45,22 @@ void AlarmController::Init(System::SystemTask* systemTask) {
|
||||
}
|
||||
}
|
||||
|
||||
void AlarmController::SaveAlarm() {
|
||||
|
||||
// verify if is necessary to save
|
||||
if (alarmChanged) {
|
||||
SaveAlarmToFile();
|
||||
}
|
||||
alarmChanged = false;
|
||||
}
|
||||
|
||||
void AlarmController::SetAlarmTime(uint8_t alarmHr, uint8_t alarmMin) {
|
||||
if (alarm.hours == alarmHr && alarm.minutes == alarmMin) {
|
||||
return;
|
||||
}
|
||||
alarm.hours = alarmHr;
|
||||
alarm.minutes = alarmMin;
|
||||
SaveAlarmToFile();
|
||||
alarmChanged = true;
|
||||
}
|
||||
|
||||
void AlarmController::ScheduleAlarm() {
|
||||
@ -93,7 +102,7 @@ void AlarmController::ScheduleAlarm() {
|
||||
|
||||
if (!alarm.isEnabled) {
|
||||
alarm.isEnabled = true;
|
||||
SaveAlarmToFile();
|
||||
alarmChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,7 +115,7 @@ void AlarmController::DisableAlarm() {
|
||||
isAlerting = false;
|
||||
if (alarm.isEnabled) {
|
||||
alarm.isEnabled = false;
|
||||
SaveAlarmToFile();
|
||||
alarmChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -120,7 +129,7 @@ void AlarmController::StopAlerting() {
|
||||
// Disable alarm unless it is recurring
|
||||
if (alarm.recurrence == RecurType::None) {
|
||||
alarm.isEnabled = false;
|
||||
SaveAlarmToFile();
|
||||
alarmChanged = true;
|
||||
} else {
|
||||
// set next instance
|
||||
ScheduleAlarm();
|
||||
@ -131,7 +140,7 @@ void AlarmController::StopAlerting() {
|
||||
void AlarmController::SetRecurrence(RecurType recurrence) {
|
||||
if (alarm.recurrence != recurrence) {
|
||||
alarm.recurrence = recurrence;
|
||||
SaveAlarmToFile();
|
||||
alarmChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,14 +166,14 @@ void AlarmController::LoadAlarmFromFile() {
|
||||
NRF_LOG_INFO("[AlarmController] Loaded alarm data from file");
|
||||
}
|
||||
|
||||
void AlarmController::SaveAlarmToFile() {
|
||||
void AlarmController::SaveAlarmToFile() const {
|
||||
lfs_file_t alarmFile;
|
||||
if (fs.FileOpen(&alarmFile, "/alarm.dat", LFS_O_WRONLY | LFS_O_CREAT) != LFS_ERR_OK) {
|
||||
NRF_LOG_WARNING("[AlarmController] Failed to open alarm data file for saving");
|
||||
return;
|
||||
}
|
||||
|
||||
fs.FileWrite(&alarmFile, reinterpret_cast<uint8_t*>(&alarm), sizeof(alarm));
|
||||
fs.FileWrite(&alarmFile, reinterpret_cast<const uint8_t*>(&alarm), sizeof(alarm));
|
||||
fs.FileClose(&alarmFile);
|
||||
NRF_LOG_INFO("[AlarmController] Saved alarm data with format version %u to file", alarm.version);
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ namespace Pinetime {
|
||||
AlarmController(Controllers::DateTime& dateTimeController, Controllers::FS& fs);
|
||||
|
||||
void Init(System::SystemTask* systemTask);
|
||||
void SaveAlarm();
|
||||
void SetAlarmTime(uint8_t alarmHr, uint8_t alarmMin);
|
||||
void ScheduleAlarm();
|
||||
void DisableAlarm();
|
||||
@ -68,6 +69,7 @@ namespace Pinetime {
|
||||
bool isEnabled = false;
|
||||
};
|
||||
bool isAlerting = false;
|
||||
bool alarmChanged = false;
|
||||
|
||||
Controllers::DateTime& dateTimeController;
|
||||
Controllers::FS& fs;
|
||||
@ -77,7 +79,7 @@ namespace Pinetime {
|
||||
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> alarmTime;
|
||||
|
||||
void LoadAlarmFromFile();
|
||||
void SaveAlarmToFile();
|
||||
void SaveAlarmToFile() const;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -125,6 +125,7 @@ Alarm::~Alarm() {
|
||||
StopAlerting();
|
||||
}
|
||||
lv_obj_clean(lv_scr_act());
|
||||
alarmController.SaveAlarm();
|
||||
}
|
||||
|
||||
void Alarm::DisableAlarm() {
|
||||
|
Loading…
Reference in New Issue
Block a user