Use PageIndicator in CheckboxList

This commit is contained in:
Riku Isokoski 2022-10-13 21:36:11 +03:00 committed by JF
parent d3ba184f30
commit 9b2221173c
2 changed files with 10 additions and 29 deletions

View file

@ -19,34 +19,16 @@ CheckboxList::CheckboxList(const uint8_t screenID,
uint32_t originalValue, uint32_t originalValue,
std::function<void(uint32_t)> OnValueChanged, std::function<void(uint32_t)> OnValueChanged,
std::array<Item, MaxItems> options) std::array<Item, MaxItems> options)
: Screen(app), screenID {screenID}, OnValueChanged {std::move(OnValueChanged)}, options {options}, value {originalValue} { : Screen(app),
screenID {screenID},
OnValueChanged {std::move(OnValueChanged)},
options {options},
value {originalValue},
pageIndicator(screenID, numScreens) {
// Set the background to Black // Set the background to Black
lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
if (numScreens > 1) { pageIndicator.Create();
pageIndicatorBasePoints[0].x = LV_HOR_RES - 1;
pageIndicatorBasePoints[0].y = 0;
pageIndicatorBasePoints[1].x = LV_HOR_RES - 1;
pageIndicatorBasePoints[1].y = LV_VER_RES;
pageIndicatorBase = lv_line_create(lv_scr_act(), nullptr);
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, lv_color_hex(0x111111));
lv_line_set_points(pageIndicatorBase, pageIndicatorBasePoints.data(), 2);
const uint16_t indicatorSize = LV_VER_RES / numScreens;
const uint16_t indicatorPos = indicatorSize * screenID;
pageIndicatorPoints[0].x = LV_HOR_RES - 1;
pageIndicatorPoints[0].y = indicatorPos;
pageIndicatorPoints[1].x = LV_HOR_RES - 1;
pageIndicatorPoints[1].y = indicatorPos + indicatorSize;
pageIndicator = lv_line_create(lv_scr_act(), nullptr);
lv_obj_set_style_local_line_width(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, 3);
lv_obj_set_style_local_line_color(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY);
lv_line_set_points(pageIndicator, pageIndicatorPoints.data(), 2);
}
lv_obj_t* container1 = lv_cont_create(lv_scr_act(), nullptr); lv_obj_t* container1 = lv_cont_create(lv_scr_act(), nullptr);

View file

@ -7,6 +7,7 @@
#include <functional> #include <functional>
#include <lvgl/lvgl.h> #include <lvgl/lvgl.h>
#include <memory> #include <memory>
#include "displayapp/widgets/PageIndicator.h"
namespace Pinetime { namespace Pinetime {
namespace Applications { namespace Applications {
@ -35,11 +36,9 @@ namespace Pinetime {
std::function<void(uint32_t)> OnValueChanged; std::function<void(uint32_t)> OnValueChanged;
std::array<Item, MaxItems> options; std::array<Item, MaxItems> options;
std::array<lv_obj_t*, MaxItems> cbOption; std::array<lv_obj_t*, MaxItems> cbOption;
std::array<lv_point_t, 2> pageIndicatorBasePoints;
std::array<lv_point_t, 2> pageIndicatorPoints;
lv_obj_t* pageIndicatorBase;
lv_obj_t* pageIndicator;
uint32_t value; uint32_t value;
Widgets::PageIndicator pageIndicator;
}; };
} }
} }