Skip to content

Commit 8f436e1

Browse files
committed
Timer App : add background label to ensure that the app will be displayed correctly after a full refresh (HW scrolling transition).
Code cleaning and rename methods.
1 parent 4761fcb commit 8f436e1

3 files changed

Lines changed: 28 additions & 20 deletions

File tree

src/displayapp/DisplayApp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ void DisplayApp::Refresh() {
207207
case Messages::TimerDone:
208208
if (currentApp == Apps::Timer) {
209209
auto* timer = static_cast<Screens::Timer*>(currentScreen.get());
210-
timer->setDone();
210+
timer->SetDone();
211211
} else {
212212
LoadApp(Apps::Timer, DisplayApp::FullRefreshDirections::Down);
213213
}

src/displayapp/screens/Timer.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
#include "displayapp/screens/Timer.h"
2-
32
#include "displayapp/screens/Screen.h"
43
#include "displayapp/screens/Symbols.h"
54
#include <lvgl/lvgl.h>
65

76
using namespace Pinetime::Applications::Screens;
87

98
static void btnEventHandler(lv_obj_t* obj, lv_event_t event) {
10-
Timer* screen = static_cast<Timer*>(obj->user_data);
9+
auto* screen = static_cast<Timer*>(obj->user_data);
1110
screen->OnButtonEvent(obj, event);
1211
}
1312

14-
void Timer::createButtons() {
13+
void Timer::CreateButtons() {
1514
btnMinutesUp = lv_btn_create(lv_scr_act(), nullptr);
1615
btnMinutesUp->user_data = this;
1716
lv_obj_set_event_cb(btnMinutesUp, btnEventHandler);
@@ -51,6 +50,12 @@ void Timer::createButtons() {
5150

5251
Timer::Timer(DisplayApp* app, Controllers::TimerController& timerController)
5352
: Screen(app), running {true}, timerController {timerController} {
53+
backgroundLabel = lv_label_create(lv_scr_act(), nullptr);
54+
lv_obj_set_click(backgroundLabel, true);
55+
lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP);
56+
lv_obj_set_size(backgroundLabel, 240, 240);
57+
lv_obj_set_pos(backgroundLabel, 0, 0);
58+
lv_label_set_text(backgroundLabel, "");
5459

5560
time = lv_label_create(lv_scr_act(), nullptr);
5661
lv_obj_set_style_local_text_font(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_76);
@@ -71,7 +76,7 @@ Timer::Timer(DisplayApp* app, Controllers::TimerController& timerController)
7176
lv_label_set_text(txtPlayPause, Symbols::pause);
7277
} else {
7378
lv_label_set_text(txtPlayPause, Symbols::play);
74-
createButtons();
79+
CreateButtons();
7580
}
7681

7782
taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this);
@@ -98,7 +103,7 @@ void Timer::OnButtonEvent(lv_obj_t* obj, lv_event_t event) {
98103
minutesToSet = seconds / 60;
99104
secondsToSet = seconds % 60;
100105
timerController.StopTimer();
101-
createButtons();
106+
CreateButtons();
102107

103108
} else if (secondsToSet + minutesToSet > 0) {
104109
lv_label_set_text(txtPlayPause, Symbols::pause);
@@ -152,10 +157,10 @@ void Timer::OnButtonEvent(lv_obj_t* obj, lv_event_t event) {
152157
}
153158
}
154159

155-
void Timer::setDone() {
160+
void Timer::SetDone() {
156161
lv_label_set_text(time, "00:00");
157162
lv_label_set_text(txtPlayPause, Symbols::play);
158163
secondsToSet = 0;
159164
minutesToSet = 0;
160-
createButtons();
165+
CreateButtons();
161166
}

src/displayapp/screens/Timer.h

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,35 @@
88
#include "components/timer/TimerController.h"
99

1010
namespace Pinetime::Applications::Screens {
11-
1211
class Timer : public Screen {
1312
public:
1413
enum class Modes { Normal, Done };
1514

1615
Timer(DisplayApp* app, Controllers::TimerController& timerController);
17-
1816
~Timer() override;
19-
2017
void Refresh() override;
21-
22-
void setDone();
23-
18+
void SetDone();
2419
void OnButtonEvent(lv_obj_t* obj, lv_event_t event);
2520

2621
private:
22+
void CreateButtons();
2723
bool running;
2824
uint8_t secondsToSet = 0;
2925
uint8_t minutesToSet = 0;
3026
Controllers::TimerController& timerController;
31-
32-
void createButtons();
33-
34-
lv_obj_t *time, *msecTime, *btnPlayPause, *txtPlayPause, *btnMinutesUp, *btnMinutesDown, *btnSecondsUp, *btnSecondsDown, *txtMUp,
35-
*txtMDown, *txtSUp, *txtSDown;
36-
27+
lv_obj_t* backgroundLabel;
28+
lv_obj_t* time;
29+
lv_obj_t* msecTime;
30+
lv_obj_t* btnPlayPause;
31+
lv_obj_t* txtPlayPause;
32+
lv_obj_t* btnMinutesUp;
33+
lv_obj_t* btnMinutesDown;
34+
lv_obj_t* btnSecondsUp;
35+
lv_obj_t* btnSecondsDown;
36+
lv_obj_t* txtMUp;
37+
lv_obj_t* txtMDown;
38+
lv_obj_t* txtSUp;
39+
lv_obj_t* txtSDown;
3740
lv_task_t* taskRefresh;
3841
};
3942
}

0 commit comments

Comments
 (0)