From 101f9626e3e42c8edc180eccda2549b6fbba491f Mon Sep 17 00:00:00 2001 From: Steve Amor Date: Fri, 18 Jul 2025 18:45:56 +0100 Subject: Refactor pageindicator --- src/displayapp/widgets/PageIndicator.cpp | 15 ++++++--------- src/displayapp/widgets/PageIndicator.h | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) (limited to 'src/displayapp/widgets') diff --git a/src/displayapp/widgets/PageIndicator.cpp b/src/displayapp/widgets/PageIndicator.cpp index d8558678..5d9815da 100644 --- a/src/displayapp/widgets/PageIndicator.cpp +++ b/src/displayapp/widgets/PageIndicator.cpp @@ -16,9 +16,12 @@ void PageIndicator::Create() { lv_obj_set_style_local_line_width(pageIndicatorBase, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, 3); lv_obj_set_style_local_line_color(pageIndicatorBase, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, Colors::bgDark); lv_line_set_points(pageIndicatorBase, pageIndicatorBasePoints, 2); + SetPageIndicatorPosition(nCurrentScreen); +} +void PageIndicator::SetPageIndicatorPosition(uint8_t position) { const int16_t indicatorSize = LV_VER_RES / nScreens; - const int16_t indicatorPos = indicatorSize * nCurrentScreen; + const int16_t indicatorPos = indicatorSize * position; pageIndicatorPoints[0].x = LV_HOR_RES - 1; pageIndicatorPoints[0].y = indicatorPos; @@ -31,13 +34,7 @@ void PageIndicator::Create() { lv_line_set_points(pageIndicator, pageIndicatorPoints, 2); } -void PageIndicator::Delete() { - lv_obj_del(pageIndicatorBase); - lv_obj_del(pageIndicator); -} - void PageIndicator::SetCurrentScreen(uint8_t nScreen) { - Delete(); - nCurrentScreen = nScreen; - Create(); + lv_obj_del(pageIndicator); + SetPageIndicatorPosition(nScreen); } diff --git a/src/displayapp/widgets/PageIndicator.h b/src/displayapp/widgets/PageIndicator.h index 1829bb37..b9d3117b 100644 --- a/src/displayapp/widgets/PageIndicator.h +++ b/src/displayapp/widgets/PageIndicator.h @@ -8,10 +8,10 @@ namespace Pinetime { public: PageIndicator(uint8_t nCurrentScreen, uint8_t nScreens); void Create(); - void Delete(); void SetCurrentScreen(uint8_t nScreen); private: + void SetPageIndicatorPosition(uint8_t position); uint8_t nCurrentScreen; uint8_t nScreens; -- cgit v1.2.3-70-g09d2