fix(gui): stack vertical slider display instead of drawing them next to each other (#2623)
fixes #2600
This commit is contained in:
@@ -23,7 +23,6 @@
|
||||
#include "opentx.h"
|
||||
|
||||
enum slider_type {
|
||||
SLIDER_VERT,
|
||||
SLIDER_HORIZ,
|
||||
SLIDER_6POS,
|
||||
};
|
||||
@@ -33,10 +32,6 @@ static void slider_self_size(lv_event_t* e)
|
||||
lv_point_t* s = (lv_point_t*)lv_event_get_param(e);
|
||||
slider_type t = (slider_type)(intptr_t)lv_event_get_user_data(e);
|
||||
switch(t) {
|
||||
case SLIDER_VERT:
|
||||
s->y = VERTICAL_SLIDERS_HEIGHT;
|
||||
s->x = TRIM_SQUARE_SIZE;
|
||||
break;
|
||||
case SLIDER_HORIZ:
|
||||
s->x = HORIZONTAL_SLIDERS_WIDTH;
|
||||
s->y = TRIM_SQUARE_SIZE;
|
||||
@@ -111,11 +106,9 @@ void MainView6POS::paint(BitmapBuffer * dc)
|
||||
MainViewVerticalSlider::MainViewVerticalSlider(Window* parent, uint8_t idx) :
|
||||
MainViewSlider(parent, rect_t{}, idx)
|
||||
{
|
||||
void* user_data = (void*)SLIDER_VERT;
|
||||
lv_obj_add_event_cb(lvobj, slider_self_size, LV_EVENT_GET_SELF_SIZE,
|
||||
user_data);
|
||||
|
||||
setHeight(VERTICAL_SLIDERS_HEIGHT);
|
||||
lv_obj_set_style_max_height(lvobj, VERTICAL_SLIDERS_HEIGHT, 0);
|
||||
lv_obj_set_style_min_height(lvobj, VERTICAL_SLIDERS_HEIGHT/2, 0);
|
||||
lv_obj_set_style_flex_grow(lvobj, 1, 0);
|
||||
setWidth(TRIM_SQUARE_SIZE);
|
||||
}
|
||||
|
||||
|
||||
@@ -144,17 +144,23 @@ void ViewMainDecoration::createSliders(Window* ml, Window* mr, Window* bl, Windo
|
||||
#endif
|
||||
|
||||
#if NUM_SLIDERS > 0
|
||||
sl = new MainViewVerticalSlider(ml, CALIBRATED_SLIDER_REAR_LEFT);
|
||||
sl->updateSize(); // only pos...
|
||||
sliders[SLIDERS_REAR_LEFT] = sl;
|
||||
// create containers for the sliders, so that they are at the borders of the display
|
||||
// on top of each other, when there are two sliders to display per side
|
||||
auto leftPots = create_layout_box(ml, LV_ALIGN_LEFT_MID, LV_FLEX_FLOW_COLUMN);
|
||||
leftPots->setHeight(VERTICAL_SLIDERS_HEIGHT);
|
||||
|
||||
sl = new MainViewVerticalSlider(mr, CALIBRATED_SLIDER_REAR_RIGHT);
|
||||
sl->updateSize(); // only pos...
|
||||
sliders[SLIDERS_REAR_RIGHT] = sl;
|
||||
auto rightPots = create_layout_box(mr, LV_ALIGN_RIGHT_MID, LV_FLEX_FLOW_COLUMN);
|
||||
rightPots->setHeight(VERTICAL_SLIDERS_HEIGHT);
|
||||
|
||||
auto vertSlLeft1 = new MainViewVerticalSlider(leftPots, CALIBRATED_SLIDER_REAR_LEFT);
|
||||
sliders[SLIDERS_REAR_LEFT] = vertSlLeft1;
|
||||
|
||||
auto vertSlRight1 = new MainViewVerticalSlider(rightPots, CALIBRATED_SLIDER_REAR_RIGHT);
|
||||
sliders[SLIDERS_REAR_RIGHT] = vertSlRight1;
|
||||
|
||||
#if defined(HARDWARE_EXT1) || defined(PCBX12S)
|
||||
if (IS_POT_SLIDER_AVAILABLE(EXT1)) {
|
||||
sl = new MainViewVerticalSlider(ml, CALIBRATED_POT_EXT1);
|
||||
sl = new MainViewVerticalSlider(leftPots, CALIBRATED_POT_EXT1);
|
||||
sl->updateSize();
|
||||
sliders[SLIDERS_EXT1] = sl;
|
||||
}
|
||||
@@ -162,11 +168,13 @@ void ViewMainDecoration::createSliders(Window* ml, Window* mr, Window* bl, Windo
|
||||
|
||||
#if defined(HARDWARE_EXT2) || defined(PCBX12S)
|
||||
if (IS_POT_SLIDER_AVAILABLE(EXT2)) {
|
||||
sl = new MainViewVerticalSlider(mr, CALIBRATED_POT_EXT2);
|
||||
sl = new MainViewVerticalSlider(rightPots, CALIBRATED_POT_EXT2);
|
||||
sl->updateSize();
|
||||
sliders[SLIDERS_EXT2] = sl;
|
||||
}
|
||||
#endif
|
||||
vertSlLeft1->updateSize();
|
||||
vertSlRight1->updateSize();
|
||||
#endif // NUM_SLIDERS > 0
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user