From 4e6092f3267d8763f2547edb98204216c04e92ae Mon Sep 17 00:00:00 2001 From: Titus Kendzorra Date: Mon, 30 Jun 2025 16:17:48 +0200 Subject: [PATCH 1/4] Add button to set the time of the alarm to the current time 1/2 --- src/displayapp/screens/Alarm.cpp | 41 ++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/displayapp/screens/Alarm.cpp b/src/displayapp/screens/Alarm.cpp index 4cf4392157..7bd17049e7 100644 --- a/src/displayapp/screens/Alarm.cpp +++ b/src/displayapp/screens/Alarm.cpp @@ -47,8 +47,12 @@ static void StopAlarmTaskCallback(lv_task_t* task) { Alarm::Alarm(Controllers::AlarmController& alarmController, Controllers::Settings::ClockType clockType, System::SystemTask& systemTask, - Controllers::MotorController& motorController) - : alarmController {alarmController}, wakeLock(systemTask), motorController {motorController} { + Controllers::MotorController& motorController, + Controllers::DateTime& dateTimeController) + : dateTimeController {dateTimeController}, + alarmController {alarmController}, + wakeLock(systemTask), + motorController {motorController} { hourCounter.Create(); lv_obj_align(hourCounter.GetObject(), nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0); @@ -82,6 +86,7 @@ Alarm::Alarm(Controllers::AlarmController& alarmController, lv_obj_set_style_local_bg_color(btnStop, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED); txtStop = lv_label_create(btnStop, nullptr); lv_label_set_text_static(txtStop, Symbols::stop); + lv_obj_set_style_local_text_font(txtStop, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &icons); lv_obj_set_hidden(btnStop, true); static constexpr lv_color_t bgColor = Colors::bgAlt; @@ -107,6 +112,19 @@ Alarm::Alarm(Controllers::AlarmController& alarmController, lv_obj_t* txtInfo = lv_label_create(btnInfo, nullptr); lv_label_set_text_static(txtInfo, "i"); + btnCurrentTime = lv_btn_create(lv_scr_act(), nullptr); + btnCurrentTime->user_data = this; + lv_obj_set_event_cb(btnCurrentTime, btnEventHandler); + lv_obj_set_size(btnCurrentTime, 50, 50); + lv_obj_align(btnCurrentTime, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 0, 135); + lv_obj_set_style_local_bg_color(btnCurrentTime, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, bgColor); + lv_obj_set_style_local_border_width(btnCurrentTime, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 4); + lv_obj_set_style_local_border_color(btnCurrentTime, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + + lv_obj_t* btnClock = lv_label_create(btnCurrentTime, nullptr); + lv_label_set_text_static(btnClock, Symbols::clock); + lv_obj_set_style_local_text_font(btnClock, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &icons); + enableSwitch = lv_switch_create(lv_scr_act(), nullptr); enableSwitch->user_data = this; lv_obj_set_event_cb(enableSwitch, btnEventHandler); @@ -149,6 +167,10 @@ void Alarm::OnButtonEvent(lv_obj_t* obj, lv_event_t event) { ShowInfo(); return; } + if (obj == btnCurrentTime) { + SetCurrentTime(); + return; + } if (obj == btnMessage) { HideInfo(); return; @@ -205,6 +227,7 @@ void Alarm::SetAlerting() { lv_obj_set_hidden(enableSwitch, true); lv_obj_set_hidden(btnRecur, true); lv_obj_set_hidden(btnInfo, true); + lv_obj_set_hidden(btnCurrentTime, true); hourCounter.HideControls(); minuteCounter.HideControls(); lv_obj_set_hidden(btnStop, false); @@ -226,6 +249,7 @@ void Alarm::StopAlerting() { hourCounter.ShowControls(); minuteCounter.ShowControls(); lv_obj_set_hidden(btnInfo, false); + lv_obj_set_hidden(btnCurrentTime, false); lv_obj_set_hidden(btnRecur, false); lv_obj_set_hidden(enableSwitch, false); } @@ -304,3 +328,16 @@ void Alarm::ToggleRecurrence() { } SetRecurButtonState(); } + +void Alarm::SetCurrentTime() { + uint8_t hour = dateTimeController.Hours(); + uint8_t minute = dateTimeController.Minutes(); + + hourCounter.SetValue(hour); + minuteCounter.SetValue(minute); + alarmController.SetAlarmTime(hour, minute); + + if (lblampm != nullptr) { + lv_label_set_text_static(lblampm, hour >= 12 ? "PM" : "AM"); + } +} From 1427bc244c6faa634051c0d790e0470ee816d4d8 Mon Sep 17 00:00:00 2001 From: Titus Kendzorra Date: Mon, 30 Jun 2025 16:18:20 +0200 Subject: [PATCH 2/4] Add button to set the time of the alarm to the current time 2/2 --- src/displayapp/screens/Alarm.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/displayapp/screens/Alarm.h b/src/displayapp/screens/Alarm.h index a875b2756e..1fff7b0ca2 100644 --- a/src/displayapp/screens/Alarm.h +++ b/src/displayapp/screens/Alarm.h @@ -31,9 +31,10 @@ namespace Pinetime { class Alarm : public Screen { public: explicit Alarm(Controllers::AlarmController& alarmController, - Controllers::Settings::ClockType clockType, - System::SystemTask& systemTask, - Controllers::MotorController& motorController); + Controllers::Settings::ClockType clockType, + System::SystemTask& systemTask, + Controllers::MotorController& motorController, + Controllers::DateTime& dateTimeController); ~Alarm() override; void SetAlerting(); void OnButtonEvent(lv_obj_t* obj, lv_event_t event); @@ -41,13 +42,15 @@ namespace Pinetime { bool OnTouchEvent(TouchEvents event) override; void OnValueChanged(); void StopAlerting(); + void SetCurrentTime(); private: + Controllers::DateTime& dateTimeController; Controllers::AlarmController& alarmController; System::WakeLock wakeLock; Controllers::MotorController& motorController; - lv_obj_t *btnStop, *txtStop, *btnRecur, *txtRecur, *btnInfo, *enableSwitch; + lv_obj_t *btnStop, *txtStop, *btnRecur, *txtRecur, *btnInfo, *enableSwitch, *btnCurrentTime; lv_obj_t* lblampm = nullptr; lv_obj_t* txtMessage = nullptr; lv_obj_t* btnMessage = nullptr; @@ -76,7 +79,8 @@ namespace Pinetime { return new Screens::Alarm(controllers.alarmController, controllers.settingsController.GetClockType(), *controllers.systemTask, - controllers.motorController); + controllers.motorController, + controllers.dateTimeController); }; }; } From 371ec4d3e0e4d633909de0a97c8f6190126687cc Mon Sep 17 00:00:00 2001 From: Titus Kendzorra Date: Mon, 30 Jun 2025 16:29:44 +0200 Subject: [PATCH 3/4] remove line to set label to a custom font that doesnt exist in this branch --- src/displayapp/screens/Alarm.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/displayapp/screens/Alarm.cpp b/src/displayapp/screens/Alarm.cpp index 7bd17049e7..5d86cbfdb8 100644 --- a/src/displayapp/screens/Alarm.cpp +++ b/src/displayapp/screens/Alarm.cpp @@ -86,7 +86,6 @@ Alarm::Alarm(Controllers::AlarmController& alarmController, lv_obj_set_style_local_bg_color(btnStop, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED); txtStop = lv_label_create(btnStop, nullptr); lv_label_set_text_static(txtStop, Symbols::stop); - lv_obj_set_style_local_text_font(txtStop, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &icons); lv_obj_set_hidden(btnStop, true); static constexpr lv_color_t bgColor = Colors::bgAlt; @@ -123,7 +122,6 @@ Alarm::Alarm(Controllers::AlarmController& alarmController, lv_obj_t* btnClock = lv_label_create(btnCurrentTime, nullptr); lv_label_set_text_static(btnClock, Symbols::clock); - lv_obj_set_style_local_text_font(btnClock, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &icons); enableSwitch = lv_switch_create(lv_scr_act(), nullptr); enableSwitch->user_data = this; From 56a65ac5474498d27bbfbaaa64786ebfce1b8bc7 Mon Sep 17 00:00:00 2001 From: Titus Kendzorra Date: Mon, 30 Jun 2025 16:34:39 +0200 Subject: [PATCH 4/4] formatting --- src/displayapp/screens/Alarm.cpp | 5 +---- src/displayapp/screens/Alarm.h | 8 ++++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/displayapp/screens/Alarm.cpp b/src/displayapp/screens/Alarm.cpp index 5d86cbfdb8..7a6c1b57bd 100644 --- a/src/displayapp/screens/Alarm.cpp +++ b/src/displayapp/screens/Alarm.cpp @@ -49,10 +49,7 @@ Alarm::Alarm(Controllers::AlarmController& alarmController, System::SystemTask& systemTask, Controllers::MotorController& motorController, Controllers::DateTime& dateTimeController) - : dateTimeController {dateTimeController}, - alarmController {alarmController}, - wakeLock(systemTask), - motorController {motorController} { + : dateTimeController {dateTimeController}, alarmController {alarmController}, wakeLock(systemTask), motorController {motorController} { hourCounter.Create(); lv_obj_align(hourCounter.GetObject(), nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0); diff --git a/src/displayapp/screens/Alarm.h b/src/displayapp/screens/Alarm.h index 1fff7b0ca2..1ad1507046 100644 --- a/src/displayapp/screens/Alarm.h +++ b/src/displayapp/screens/Alarm.h @@ -31,10 +31,10 @@ namespace Pinetime { class Alarm : public Screen { public: explicit Alarm(Controllers::AlarmController& alarmController, - Controllers::Settings::ClockType clockType, - System::SystemTask& systemTask, - Controllers::MotorController& motorController, - Controllers::DateTime& dateTimeController); + Controllers::Settings::ClockType clockType, + System::SystemTask& systemTask, + Controllers::MotorController& motorController, + Controllers::DateTime& dateTimeController); ~Alarm() override; void SetAlerting(); void OnButtonEvent(lv_obj_t* obj, lv_event_t event);