This commit is contained in:
liamcharger 2024-10-09 23:48:52 +01:00 committed by GitHub
commit 1ea5f851a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 38 additions and 22 deletions

View file

@ -149,7 +149,7 @@ void Alarm::OnButtonEvent(lv_obj_t* obj, lv_event_t event) {
ShowInfo(); ShowInfo();
return; return;
} }
if (obj == btnMessage) { if (obj == btnEsc) {
HideInfo(); HideInfo();
return; return;
} }
@ -169,7 +169,7 @@ void Alarm::OnButtonEvent(lv_obj_t* obj, lv_event_t event) {
} }
bool Alarm::OnButtonPushed() { bool Alarm::OnButtonPushed() {
if (txtMessage != nullptr && btnMessage != nullptr) { if (exitMessage != nullptr && btnEsc != nullptr) {
HideInfo(); HideInfo();
return true; return true;
} }
@ -231,17 +231,27 @@ void Alarm::SetSwitchState(lv_anim_enable_t anim) {
} }
void Alarm::ShowInfo() { void Alarm::ShowInfo() {
if (btnMessage != nullptr) { messageContainer = lv_obj_create(lv_scr_act(), nullptr);
return; lv_obj_set_event_cb(messageContainer, btnEventHandler);
} lv_obj_set_size(messageContainer, LV_HOR_RES, LV_VER_RES);
btnMessage = lv_btn_create(lv_scr_act(), nullptr); lv_obj_align(messageContainer, lv_scr_act(), LV_ALIGN_CENTER, 0, 0);
btnMessage->user_data = this; exitMessage = lv_label_create(messageContainer, nullptr);
lv_obj_set_event_cb(btnMessage, btnEventHandler); lv_obj_set_style_local_bg_color(messageContainer, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
lv_obj_set_height(btnMessage, 200);
lv_obj_set_width(btnMessage, 150); exitMessageHeader = lv_label_create(messageContainer, nullptr);
lv_obj_align(btnMessage, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); lv_obj_align(exitMessageHeader, messageContainer, LV_ALIGN_IN_TOP_LEFT, 0, -2);
txtMessage = lv_label_create(btnMessage, nullptr); lv_label_set_text_static(exitMessageHeader, "Time until\nalarm:");
lv_obj_set_style_local_bg_color(btnMessage, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_NAVY); lv_obj_set_hidden(exitMessageHeader, true);
btnEsc = lv_btn_create(lv_scr_act(), nullptr);
btnEsc->user_data = this;
lv_obj_set_event_cb(btnEsc, btnEventHandler);
lv_obj_set_size(btnEsc, 50, 50);
lv_obj_align(btnEsc, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, 0, 0);
lv_obj_set_style_local_bg_color(btnEsc, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, Colors::bgAlt);
lv_obj_t* txtClose = lv_label_create(btnEsc, nullptr);
lv_label_set_text_static(txtClose, "X");
if (alarmController.IsEnabled()) { if (alarmController.IsEnabled()) {
auto timeToAlarm = alarmController.SecondsToAlarm(); auto timeToAlarm = alarmController.SecondsToAlarm();
@ -251,21 +261,26 @@ void Alarm::ShowInfo() {
auto minToAlarm = (timeToAlarm % 3600) / 60; auto minToAlarm = (timeToAlarm % 3600) / 60;
auto secToAlarm = timeToAlarm % 60; auto secToAlarm = timeToAlarm % 60;
lv_label_set_text_fmt(txtMessage, lv_obj_align(exitMessage, messageContainer, LV_ALIGN_IN_LEFT_MID, 60, -15);
"Time to\nalarm:\n%2lu Days\n%2lu Hours\n%2lu Minutes\n%2lu Seconds", lv_label_set_text_fmt(exitMessage,
"%2lu Days\n%2lu Hours\n%2lu Minutes\n%2lu Seconds",
daysToAlarm, daysToAlarm,
hrsToAlarm, hrsToAlarm,
minToAlarm, minToAlarm,
secToAlarm); secToAlarm);
lv_label_set_align(exitMessage, LV_LABEL_ALIGN_CENTER);
lv_obj_set_hidden(exitMessageHeader, false);
} else { } else {
lv_label_set_text_static(txtMessage, "Alarm\nis not\nset."); lv_obj_align(exitMessage, messageContainer, LV_ALIGN_IN_LEFT_MID, 20, 0);
lv_label_set_text_static(exitMessage, "Alarm is not set.");
} }
} }
void Alarm::HideInfo() { void Alarm::HideInfo() {
lv_obj_del(btnMessage); lv_obj_del(messageContainer);
txtMessage = nullptr; lv_obj_del(btnEsc);
btnMessage = nullptr; exitMessage = nullptr;
exitMessageHeader = nullptr;
} }
void Alarm::SetRecurButtonState() { void Alarm::SetRecurButtonState() {

View file

@ -47,10 +47,11 @@ namespace Pinetime {
System::WakeLock wakeLock; System::WakeLock wakeLock;
Controllers::MotorController& motorController; Controllers::MotorController& motorController;
lv_obj_t *btnStop, *txtStop, *btnRecur, *txtRecur, *btnInfo, *enableSwitch; lv_obj_t *btnStop, *txtStop, *btnRecur, *txtRecur, *btnInfo, *enableSwitch, *messageContainer;
lv_obj_t* lblampm = nullptr; lv_obj_t* lblampm = nullptr;
lv_obj_t* txtMessage = nullptr; lv_obj_t* exitMessage = nullptr;
lv_obj_t* btnMessage = nullptr; lv_obj_t* exitMessageHeader = nullptr;
lv_obj_t* btnEsc = nullptr;
lv_task_t* taskStopAlarm = nullptr; lv_task_t* taskStopAlarm = nullptr;
enum class EnableButtonState { On, Off, Alerting }; enum class EnableButtonState { On, Off, Alerting };