Skip to content

Commit 95b48a2

Browse files
committed
Implement DirtyValues for Quick Settings screen
1 parent 71d1f5b commit 95b48a2

2 files changed

Lines changed: 14 additions & 13 deletions

File tree

src/displayapp/screens/settings/QuickSettings.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ namespace {
1515
}
1616
}
1717

18-
void lv_update_task(struct _lv_task_t* task) {
19-
auto* user_data = static_cast<QuickSettings*>(task->user_data);
20-
user_data->UpdateScreen();
21-
}
22-
2318
enum class ButtonState : lv_state_t {
2419
NotificationsOn = LV_STATE_CHECKED,
2520
NotificationsOff = LV_STATE_DEFAULT,
@@ -119,21 +114,23 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app,
119114
lv_obj_set_style_local_text_font(lbl_btn, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &lv_font_sys_48);
120115
lv_label_set_text_static(lbl_btn, Symbols::settings);
121116

122-
taskUpdate = lv_task_create(lv_update_task, 5000, LV_TASK_PRIO_MID, this);
123-
124-
UpdateScreen();
117+
Refresh();
118+
taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this);
125119
}
126120

127121
QuickSettings::~QuickSettings() {
128122
lv_style_reset(&btn_style);
129-
lv_task_del(taskUpdate);
123+
lv_task_del(taskRefresh);
130124
lv_obj_clean(lv_scr_act());
131125
settingsController.SaveSettings();
132126
}
133127

134-
void QuickSettings::UpdateScreen() {
135-
lv_label_set_text(label_time, dateTimeController.FormattedTime().c_str());
128+
void QuickSettings::Refresh() {
136129
statusIcons.Update();
130+
currentDateTime = std::chrono::time_point_cast<std::chrono::minutes>(dateTimeController.CurrentDateTime());
131+
if (currentDateTime.IsUpdated()) {
132+
lv_label_set_text(label_time, dateTimeController.FormattedTime().c_str());
133+
}
137134
}
138135

139136
void QuickSettings::OnButtonEvent(lv_obj_t* object) {

src/displayapp/screens/settings/QuickSettings.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "components/settings/Settings.h"
1010
#include "components/battery/BatteryController.h"
1111
#include "displayapp/widgets/StatusIcons.h"
12+
#include "utility/DirtyValue.h"
1213

1314
namespace Pinetime {
1415

@@ -30,16 +31,19 @@ namespace Pinetime {
3031

3132
void OnButtonEvent(lv_obj_t* object);
3233

33-
void UpdateScreen();
34+
void Refresh() override;
3435

3536
private:
3637
DisplayApp* app;
38+
39+
Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::minutes>> currentDateTime {};
40+
3741
Controllers::DateTime& dateTimeController;
3842
Controllers::BrightnessController& brightness;
3943
Controllers::MotorController& motorController;
4044
Controllers::Settings& settingsController;
4145

42-
lv_task_t* taskUpdate;
46+
lv_task_t* taskRefresh;
4347
lv_obj_t* label_time;
4448

4549
lv_style_t btn_style;

0 commit comments

Comments
 (0)