Skip to content

Commit

Permalink
Add scroll bar to radio settings/config pages.
Browse files Browse the repository at this point in the history
  • Loading branch information
Phil Mitchell committed Mar 1, 2023
1 parent 4547f08 commit 7d98adf
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 41 deletions.
40 changes: 22 additions & 18 deletions radio/src/gui/colorlcd/radio_hardware.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,18 @@ RadioHardwarePage::RadioHardwarePage():

void RadioHardwarePage::build(FormWindow * window)
{
window->setFlexLayout();
window->padAll(0);
lv_obj_set_scrollbar_mode(window->getLvObj(), LV_SCROLLBAR_MODE_AUTO);

auto form = new FormWindow(window, rect_t{});
form->setFlexLayout();
FlexGridLayout grid(col_dsc, row_dsc, 2);
lv_obj_set_style_pad_all(window->getLvObj(), lv_dpx(8), 0);
form->padAll(8);

// TODO: sub-title?

// Batt meter range - Range 3.0v to 16v
auto line = window->newLine(&grid);
auto line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_BATTERY_RANGE, 0, COLOR_THEME_PRIMARY1);

auto box = new FormGroup(line, rect_t{});
Expand Down Expand Up @@ -89,7 +93,7 @@ void RadioHardwarePage::build(FormWindow * window)
});

// Bat calibration
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_BATT_CALIB, 0, COLOR_THEME_PRIMARY1);
auto batCal =
new NumberEdit(line, rect_t{}, -127, 127,
Expand All @@ -100,7 +104,7 @@ void RadioHardwarePage::build(FormWindow * window)
batCal->setWindowFlags(REFRESH_ALWAYS);

// RTC Batt check enable
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_RTC_CHECK, 0, COLOR_THEME_PRIMARY1);

box = new FormGroup(line, rect_t{});
Expand All @@ -116,36 +120,36 @@ void RadioHardwarePage::build(FormWindow * window)
}, COLOR_THEME_PRIMARY1 | PREC2, nullptr, "V");

// ADC filter
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_JITTER_FILTER, 0, COLOR_THEME_PRIMARY1);
new CheckBox(line, rect_t{}, GET_SET_INVERTED(g_eeGeneral.noJitterFilter));

#if defined(HARDWARE_INTERNAL_MODULE)
new Subtitle(window, rect_t{}, STR_INTERNALRF, 0, COLOR_THEME_PRIMARY1);
auto intMod = new InternalModuleWindow(window);
new Subtitle(form, rect_t{}, STR_INTERNALRF, 0, COLOR_THEME_PRIMARY1);
auto intMod = new InternalModuleWindow(form);
intMod->padLeft(lv_dpx(8));
#endif

#if defined(HARDWARE_EXTERNAL_MODULE)
new Subtitle(window, rect_t{}, STR_EXTERNALRF, 0, COLOR_THEME_PRIMARY1);
auto extMod = new ExternalModuleWindow(window);
new Subtitle(form, rect_t{}, STR_EXTERNALRF, 0, COLOR_THEME_PRIMARY1);
auto extMod = new ExternalModuleWindow(form);
extMod->padLeft(lv_dpx(8));
#endif

#if defined(BLUETOOTH)
new Subtitle(window, rect_t{}, STR_BLUETOOTH, 0, COLOR_THEME_PRIMARY1);
auto bt = new BluetoothConfigWindow(window);
new Subtitle(form, rect_t{}, STR_BLUETOOTH, 0, COLOR_THEME_PRIMARY1);
auto bt = new BluetoothConfigWindow(form);
bt->padLeft(lv_dpx(8));
#endif

new Subtitle(window, rect_t{}, STR_AUX_SERIAL_MODE, 0, COLOR_THEME_PRIMARY1);
auto serial = new SerialConfigWindow(window, rect_t{});
new Subtitle(form, rect_t{}, STR_AUX_SERIAL_MODE, 0, COLOR_THEME_PRIMARY1);
auto serial = new SerialConfigWindow(form, rect_t{});
serial->padLeft(lv_dpx(8));

// Calibration
new Subtitle(window, rect_t{}, STR_INPUTS, 0, COLOR_THEME_PRIMARY1);
new Subtitle(form, rect_t{}, STR_INPUTS, 0, COLOR_THEME_PRIMARY1);

box = new FormGroup(window, rect_t{});
box = new FormGroup(form, rect_t{});
box->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
lv_obj_set_style_flex_main_place(box->getLvObj(), LV_FLEX_ALIGN_SPACE_EVENLY, 0);
box->padRow(lv_dpx(8));
Expand Down Expand Up @@ -177,9 +181,9 @@ void RadioHardwarePage::build(FormWindow * window)
lv_obj_set_style_min_width(btn->getLvObj(), LV_DPI_DEF, 0);

// Debugs
new Subtitle(window, rect_t{}, STR_DEBUG, 0, COLOR_THEME_PRIMARY1);
new Subtitle(form, rect_t{}, STR_DEBUG, 0, COLOR_THEME_PRIMARY1);

box = new FormGroup(window, rect_t{});
box = new FormGroup(form, rect_t{});
box->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
lv_obj_set_style_flex_main_place(box->getLvObj(), LV_FLEX_ALIGN_SPACE_EVENLY, 0);
box->padRow(lv_dpx(8));
Expand Down
1 change: 1 addition & 0 deletions radio/src/gui/colorlcd/radio_sdmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ void RadioSdManagerPage::build(FormWindow * window)
browser = new FileBrowser(form, rect_t{}, ROOT_PATH);
grid.add(browser);
grid.nextCell();
lv_obj_set_scrollbar_mode(browser->getLvObj(), LV_SCROLLBAR_MODE_AUTO);

auto obj = browser->getLvObj();
lv_obj_set_style_grid_cell_x_align(obj, LV_GRID_ALIGN_STRETCH, 0);
Expand Down
33 changes: 19 additions & 14 deletions radio/src/gui/colorlcd/radio_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -647,14 +647,19 @@ RadioSetupPage::RadioSetupPage():

void RadioSetupPage::build(FormWindow * window)
{
window->padAll(0);
window->padBottom(8);
lv_obj_set_scrollbar_mode(window->getLvObj(), LV_SCROLLBAR_MODE_AUTO);

auto form = new FormWindow(window, rect_t{});
form->setFlexLayout();
FlexGridLayout grid(col_three_dsc, row_dsc, 2);
window->setFlexLayout();

// Date & time picker including labels
new DateTimeWindow(window, rect_t{});
new DateTimeWindow(form, rect_t{});

// Sub-pages
new WindowButtonGroup(window, rect_t{}, {
new WindowButtonGroup(form, rect_t{}, {
{STR_SOUND_LABEL, []() { new SoundPage(); }},
#if defined(VARIO)
{STR_VARIO, []() { new VarioPage(); }},
Expand All @@ -671,7 +676,7 @@ void RadioSetupPage::build(FormWindow * window)
#if defined(PWR_BUTTON_PRESS)
// Pwr Off Delay
{
auto line = window->newLine(&grid);
auto line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_PWR_OFF_DELAY, 0, COLOR_THEME_PRIMARY1);
new Choice(line, rect_t{}, STR_PWR_OFF_DELAYS, 0, 3,
[=]() -> int32_t {
Expand All @@ -687,20 +692,20 @@ void RadioSetupPage::build(FormWindow * window)
#if defined(PXX2)
// Owner ID
{
auto line = window->newLine(&grid);
auto line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_OWNER_ID, 0, COLOR_THEME_PRIMARY1);
new RadioTextEdit(line, rect_t{}, g_eeGeneral.ownerRegistrationID,
PXX2_LEN_REGISTRATION_ID);
}
#endif

// Country code
auto line = window->newLine(&grid);
auto line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_COUNTRY_CODE, 0, COLOR_THEME_PRIMARY1);
new Choice(line, rect_t{}, STR_COUNTRY_CODES, 0, 2, GET_SET_DEFAULT(g_eeGeneral.countryCode));

// Audio language
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_VOICE_LANGUAGE, 0, COLOR_THEME_PRIMARY1);
auto choice =
new Choice(line, rect_t{}, 0, DIM(languagePacks) - 2,
Expand All @@ -713,7 +718,7 @@ void RadioSetupPage::build(FormWindow * window)
[](uint8_t value) { return languagePacks[value]->name; });

// Imperial units
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_UNITS_SYSTEM, 0, COLOR_THEME_PRIMARY1);
new Choice(line, rect_t{}, STR_VUNITSSYSTEM, 0, 1, GET_SET_DEFAULT(g_eeGeneral.imperial));

Expand All @@ -734,7 +739,7 @@ void RadioSetupPage::build(FormWindow * window)
#endif

// Switches delay
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_SWITCHES_DELAY, 0, COLOR_THEME_PRIMARY1);
grid.setColSpan(2);
auto edit =
Expand All @@ -744,21 +749,21 @@ void RadioSetupPage::build(FormWindow * window)
grid.setColSpan(1);

// USB mode
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_USBMODE, 0, COLOR_THEME_PRIMARY1);
new Choice(line, rect_t{}, STR_USBMODES, USB_UNSELECTED_MODE, USB_MAX_MODE,
GET_SET_DEFAULT(g_eeGeneral.USBMode));

#if defined(ROTARY_ENCODER_NAVIGATION)
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_ROTARY_ENC_MODE, 0, COLOR_THEME_PRIMARY1);
new Choice(line, rect_t{}, STR_ROTARY_ENC_OPT, ROTARY_ENCODER_MODE_NORMAL,
ROTARY_ENCODER_MODE_INVERT_BOTH,
GET_SET_DEFAULT(g_eeGeneral.rotEncMode));
#endif

// RX channel order
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_RXCHANNELORD, 0,
COLOR_THEME_PRIMARY1); // RAET->AETR
grid.setColSpan(2);
Expand All @@ -774,7 +779,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.setColSpan(1);

// Stick mode
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_MODE, 0, COLOR_THEME_PRIMARY1);
grid.setColSpan(2);
choice = new Choice(line, rect_t{}, 0, 3, GET_DEFAULT(g_eeGeneral.stickMode),
Expand All @@ -795,7 +800,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.setColSpan(1);

// Model quick select
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_MODEL_QUICK_SELECT, 0, COLOR_THEME_PRIMARY1);
new CheckBox(line, rect_t{}, GET_SET_DEFAULT(g_eeGeneral.modelQuickSelect));
}
1 change: 1 addition & 0 deletions radio/src/gui/colorlcd/radio_theme.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,7 @@ void ThemeSetupPage::setSelected(ThemePersistance *tp)
void ThemeSetupPage::setupListbox(Window *window, rect_t r, ThemePersistance *tp)
{
listBox = new ListBox(window, r, tp->getNames());
lv_obj_set_scrollbar_mode(listBox->getLvObj(), LV_SCROLLBAR_MODE_AUTO);
listBox->setAutoEdit(true);
listBox->setSelected(currentTheme);
listBox->setActiveItem(tp->getThemeIndex());
Expand Down
14 changes: 10 additions & 4 deletions radio/src/gui/colorlcd/radio_tools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ RadioToolsPage::RadioToolsPage():
void RadioToolsPage::build(FormWindow * window)
{
this->window = window;
lv_obj_set_scrollbar_mode(window->getLvObj(), LV_SCROLLBAR_MODE_AUTO);

memclear(&reusableBuffer.radioTools, sizeof(reusableBuffer.radioTools));
waiting = 0;
Expand Down Expand Up @@ -243,10 +244,15 @@ void RadioToolsPage::rebuild(FormWindow * window)

tools.sort(tool_compare_nocase);

window->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
window->padRow(lv_dpx(8));

window->padAll(0);
lv_obj_set_scrollbar_mode(window->getLvObj(), LV_SCROLLBAR_MODE_AUTO);

auto form = new FormWindow(window, rect_t{});
form->setFlexLayout(LV_FLEX_FLOW_ROW_WRAP, lv_dpx(8));
form->padAll(lv_dpx(8));
form->padRow(lv_dpx(8));

for (const auto& tool : tools) {
new ToolButton(window, tool);
new ToolButton(form, tool);
}
}
16 changes: 11 additions & 5 deletions radio/src/gui/colorlcd/special_functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -355,14 +355,19 @@ class SpecialFunctionEditPage : public Page

void buildBody(FormWindow *window)
{
window->setFlexLayout();
window->padAll(0);
lv_obj_set_scrollbar_mode(window->getLvObj(), LV_SCROLLBAR_MODE_AUTO);

auto form = new FormWindow(window, rect_t{});
form->setFlexLayout();
form->padAll(8);

FlexGridLayout grid(col_dsc, row_dsc, 2);
lv_obj_set_style_pad_all(window->getLvObj(), lv_dpx(8), 0);

CustomFunctionData *cfn = &functions[index];

// Switch
auto line = window->newLine(&grid);
auto line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_SF_SWITCH, 0, COLOR_THEME_PRIMARY1);
auto switchChoice =
new SwitchChoice(line, rect_t{}, SWSRC_FIRST, SWSRC_LAST,
Expand All @@ -386,7 +391,7 @@ class SpecialFunctionEditPage : public Page
}

// Function
line = window->newLine(&grid);
line = form->newLine(&grid);
new StaticText(line, rect_t{}, STR_FUNC, 0, COLOR_THEME_PRIMARY1);
auto functionChoice =
new Choice(line, rect_t{}, STR_VFSWFUNC,
Expand All @@ -402,7 +407,7 @@ class SpecialFunctionEditPage : public Page
return isAssignableFunctionAvailable(value, functions);
});

specialFunctionOneWindow = new FormWindow(window, rect_t{});
specialFunctionOneWindow = new FormWindow(form, rect_t{});
updateSpecialFunctionOneWindow();
}
};
Expand Down Expand Up @@ -784,6 +789,7 @@ void SpecialFunctionsPage::build(FormWindow *window)
#endif

window->padAll(4);
lv_obj_set_scrollbar_mode(window->getLvObj(), LV_SCROLLBAR_MODE_AUTO);

auto form = new FormWindow(window, rect_t{});
form->setFlexLayout();
Expand Down

0 comments on commit 7d98adf

Please sign in to comment.