fix(ui): Adjust model setup button layout to better fit portrait screen (#2956)

* Adjust model setup layout to better fix on portrait LCD screen.

* Set buttons to fixed width and allow to grow vertically to fit text.

* Cleanup layout logic - buttons stretched horizontally, centered vertically.
This commit is contained in:
philmoz
2023-01-15 10:40:40 +10:00
committed by GitHub
parent ea9dfa0a36
commit dd8ab3037f
+31 -34
View File
@@ -282,56 +282,53 @@ void ModelSetupPage::build(FormWindow * window)
new Choice(line, rect_t{}, STR_ADCFILTERVALUES, 0, 2,
GET_SET_DEFAULT(g_model.jitterFilter));
static const lv_coord_t col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST};
static const lv_coord_t row_dsc[] = {LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST};
auto oform = new FormGroup(window, rect_t{});
oform->setFlexLayout(LV_FLEX_FLOW_COLUMN, lv_dpx(PAGE_PADDING));
oform->padAll(PAGE_PADDING);
// Modules
auto form = new FormGroup(window, rect_t{});
form->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
lv_obj_set_style_flex_main_place(form->getLvObj(), LV_FLEX_ALIGN_SPACE_EVENLY, 0);
form->padAll(lv_dpx(8));
auto form = new FormGroup(oform, rect_t{});
form->setFlexLayout(LV_FLEX_FLOW_ROW, lv_dpx(PAGE_PADDING));
lv_obj_set_grid_dsc_array(form->getLvObj(), col_dsc, row_dsc);
Window* btn = new IntmoduleButton(form);
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_CENTER, 0, 1);
btn = new ExtmoduleButton(form);
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 0, 1);
btn = new TrainerModuleButton(form);
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 2, 1, LV_GRID_ALIGN_CENTER, 0, 1);
// Timer buttons
form = new FormGroup(window, rect_t{});
form->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
lv_obj_set_style_flex_main_place(form->getLvObj(), LV_FLEX_ALIGN_SPACE_EVENLY, 0);
form->padAll(lv_dpx(8));
form = new FormGroup(oform, rect_t{});
form->setFlexLayout(LV_FLEX_FLOW_ROW, lv_dpx(PAGE_PADDING));
lv_obj_set_grid_dsc_array(form->getLvObj(), col_dsc, row_dsc);
btn = new SubScreenButton(form, TR_TIMER "1",
[]() { new TimerWindow(0); });
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
btn = new SubScreenButton(form, TR_TIMER "1", []() { new TimerWindow(0); });
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_CENTER, 0, 1);
btn = new SubScreenButton(form, TR_TIMER "2",
[]() { new TimerWindow(1); });
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
btn = new SubScreenButton(form, TR_TIMER "2", []() { new TimerWindow(1); });
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 0, 1);
btn = new SubScreenButton(form, TR_TIMER "3",
[]() { new TimerWindow(2); });
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
btn = new SubScreenButton(form, TR_TIMER "3", []() { new TimerWindow(2); });
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 2, 1, LV_GRID_ALIGN_CENTER, 0, 1);
form = new FormGroup(oform, rect_t{});
form->setFlexLayout(LV_FLEX_FLOW_ROW, lv_dpx(PAGE_PADDING));
lv_obj_set_grid_dsc_array(form->getLvObj(), col_dsc, row_dsc);
form = new FormGroup(window, rect_t{});
form->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
lv_obj_set_style_flex_main_place(form->getLvObj(), LV_FLEX_ALIGN_SPACE_EVENLY, 0);
form->padAll(lv_dpx(8));
btn = new SubScreenButton(form, STR_PREFLIGHT, []() { new PreflightChecks(); });
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_CENTER, 0, 1);
btn = new SubScreenButton(form, STR_PREFLIGHT,
[]() { new PreflightChecks(); });
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
btn = new SubScreenButton(form, STR_TRIMS, []() { new TrimsSetup(); });
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 0, 1);
btn = new SubScreenButton(form, STR_TRIMS,
[]() { new TrimsSetup(); });
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
btn = new SubScreenButton(form, STR_THROTTLE_LABEL,
[]() { new ThrottleParams(); });
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);
btn = new SubScreenButton(form, STR_THROTTLE_LABEL, []() { new ThrottleParams(); });
lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, 2, 1, LV_GRID_ALIGN_CENTER, 0, 1);
}
#define MAX_SUBSCREEN_BTNS 9