fix(color): page layout issues on 320x240 screen size (#6050)

This commit is contained in:
philmoz
2025-04-04 12:08:57 +10:00
committed by GitHub
parent 062d516f65
commit 51b38dd4c6
58 changed files with 174 additions and 217 deletions
@@ -45,13 +45,13 @@ ChannelRange::ChannelRange(Window* parent) : Window(parent, rect_t{})
void ChannelRange::build()
{
chStart = new NumberEdit(this, rect_t{0, 0, 80, 0}, 1, 1,
chStart = new NumberEdit(this, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 1, 1,
GET_DEFAULT(1 + getChannelsStart()));
chStart->setSetValueHandler([=](int newValue) { setStart(newValue); });
chStart->setPrefix(STR_CH);
chEnd =
new NumberEdit(this, rect_t{0, 0, 80, 0}, 8, 8,
new NumberEdit(this, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 8, 8,
GET_DEFAULT(getChannelsStart() + 8 + getChannelsCount()));
chEnd->setPrefix(STR_CH);
@@ -103,10 +103,10 @@ class ColorEditorPopup : public BaseDialog
lv_obj_set_flex_align(hbox_obj, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START,
LV_FLEX_ALIGN_SPACE_AROUND);
colorPad = new ColorSwatch(hbox, {0, 0, COLOR_PAD_WIDTH, COLOR_PAD_HEIGHT},
colorPad = new ColorSwatch(hbox, {0, 0, COLOR_PAD_WIDTH, EdgeTxStyles::STD_FONT_HEIGHT},
COLOR_THEME_PRIMARY1);
hexStr = new StaticText(hbox, {0, 0, CVAL_W, 0}, "", COLOR_THEME_PRIMARY1_INDEX, FONT(L));
hexStr = new StaticText(hbox, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH, 0}, "", COLOR_THEME_PRIMARY1_INDEX, FONT(L));
updateColor(color);
@@ -149,7 +149,7 @@ class ColorEditorPopup : public BaseDialog
hbox = new Window(vbox, rect_t{});
hbox->padTop(BTN_PAD_TOP);
hbox->setFlexLayout(LV_FLEX_FLOW_ROW, BTN_PAD_ROW);
hbox->setFlexLayout(LV_FLEX_FLOW_ROW, EdgeTxStyles::STD_FONT_HEIGHT);
lv_obj_set_flex_align(hbox->getLvObj(), LV_FLEX_ALIGN_CENTER,
LV_FLEX_ALIGN_END, LV_FLEX_ALIGN_SPACE_BETWEEN);
lv_obj_set_flex_grow(hbox->getLvObj(), 1);
@@ -169,11 +169,8 @@ class ColorEditorPopup : public BaseDialog
static LAYOUT_VAL(CE_SZ, 182, 182, LS(182))
static LAYOUT_VAL2(COLOR_EDIT_WIDTH, LCD_W * 0.8, LCD_W * 0.7)
static LAYOUT_VAL(COLOR_PAD_WIDTH, 52, 52, LS(52))
static LAYOUT_VAL(COLOR_PAD_HEIGHT, 32, 32, LS(32))
static LAYOUT_VAL(CVAL_W, 100, 100, LS(100))
static LAYOUT_VAL(BTN_W, 80, 80, LS(80))
static LAYOUT_VAL(BTN_PAD_TOP, 60, 60, LS(60))
static LAYOUT_VAL(BTN_PAD_ROW, 20, 20, LS(20))
};
ColorPicker::ColorPicker(Window* parent, const rect_t& rect,
@@ -181,7 +178,7 @@ ColorPicker::ColorPicker(Window* parent, const rect_t& rect,
std::function<void(uint32_t)> setValue,
std::function<void(uint32_t)> preview,
COLOR_EDITOR_FMT fmt) :
Button(parent, {rect.x, rect.y, rect.w == 0 ? ColorEditorPopup::COLOR_PAD_WIDTH : rect.w, ColorEditorPopup::COLOR_PAD_HEIGHT}),
Button(parent, {rect.x, rect.y, rect.w == 0 ? ColorEditorPopup::COLOR_PAD_WIDTH : rect.w, EdgeTxStyles::UI_ELEMENT_HEIGHT}),
setValue(std::move(setValue)), preview(std::move(preview)), format(fmt)
{
updateColor(getValue());
@@ -26,7 +26,7 @@ GVarNumberEdit::GVarNumberEdit(Window* parent, int32_t vmin,
int32_t vmax, std::function<int32_t()> getValue,
std::function<void(int32_t)> setValue,
LcdFlags textFlags, int32_t voffset, int32_t vdefault) :
Window(parent, {0, 0, NUM_EDIT_W + GV_BTN_W + PAD_TINY * 3, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY * 2}),
Window(parent, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW + GV_BTN_W + PAD_TINY * 3, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY * 2}),
vmin(vmin),
vmax(vmax),
getValue(getValue),
@@ -38,7 +38,7 @@ GVarNumberEdit::GVarNumberEdit(Window* parent, int32_t vmin,
// GVAR field
gvar_field = new Choice(
this, {0, 0, NUM_EDIT_W, 0}, -MAX_GVARS, MAX_GVARS - 1,
this, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, -MAX_GVARS, MAX_GVARS - 1,
[=]() {
uint16_t gvar1 = GV_GET_GV1_VALUE(vmin, vmax);
return GV_INDEX_CALC_DELTA(getValue(), gvar1);
@@ -54,14 +54,14 @@ GVarNumberEdit::GVarNumberEdit(Window* parent, int32_t vmin,
[=](int32_t value) { return getGVarString(value); });
num_field = new NumberEdit(
this, {0, 0, NUM_EDIT_W, 0}, vmin, vmax, [=]() { return getValue() + voffset; },
this, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, vmin, vmax, [=]() { return getValue() + voffset; },
nullptr, textFlags);
num_field->setDefault(vdefault);
#if defined(GVARS)
// The GVAR button
if (modelGVEnabled()) {
m_gvBtn = new TextButton(this, {NUM_EDIT_W + PAD_TINY, 0, GV_BTN_W, 0}, STR_GV, [=]() {
m_gvBtn = new TextButton(this, {EdgeTxStyles::EDIT_FLD_WIDTH_NARROW + PAD_TINY, 0, GV_BTN_W, 0}, STR_GV, [=]() {
switchGVarMode();
return GV_IS_GV_VALUE(getValue(), vmin, vmax);
});
@@ -43,7 +43,6 @@ class GVarNumberEdit : public Window
void setAccelFactor(int value) { num_field->setAccelFactor(value); }
void setDisplayHandler(std::function<std::string(int value)> function);
static LAYOUT_VAL(NUM_EDIT_W, 70, 70, LS(70))
static LAYOUT_VAL(GV_BTN_W, 40, 40, LS(40))
protected:
@@ -110,7 +110,7 @@ InputSource::InputSource(Window *parent, ExpoData *input) :
line = sensor_form->newLine(grid);
line->padAll(PAD_TINY);
new StaticText(line, rect_t{}, STR_SCALE);
new NumberEdit(line, rect_t{0, 0, 60, 0}, 0,
new NumberEdit(line, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 0,
maxTelemValue(input->srcRaw - MIXSRC_FIRST_TELEM + 1),
GET_SET_DEFAULT(input->scale), sensor->getSensorPrec());
@@ -31,7 +31,7 @@ SourceNumberEdit::SourceNumberEdit(Window* parent,
int16_t sourceMin,
LcdFlags textFlags, int32_t voffset,
int32_t vdefault) :
Window(parent, {0, 0, NUM_EDIT_W + SRC_BTN_W + PAD_TINY * 3, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY * 2}),
Window(parent, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW + SRC_BTN_W + PAD_TINY * 3, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY * 2}),
vmin(vmin),
vmax(vmax),
sourceMin(sourceMin),
@@ -47,7 +47,7 @@ SourceNumberEdit::SourceNumberEdit(Window* parent,
// Source field
source_field = new SourceChoice(
this, {0, 0, NUM_EDIT_W, 0}, sourceMin, INPUTSRC_LAST,
this, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, sourceMin, INPUTSRC_LAST,
[=]() {
SourceNumVal v;
v.rawValue = getValue();
@@ -59,7 +59,7 @@ SourceNumberEdit::SourceNumberEdit(Window* parent,
}, true);
num_field = new NumberEdit(
this, {0, 0, NUM_EDIT_W, 0}, vmin, vmax,
this, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, vmin, vmax,
[=]() {
SourceNumVal v;
v.rawValue = getValue();
@@ -73,7 +73,7 @@ SourceNumberEdit::SourceNumberEdit(Window* parent,
num_field->setDefault(vdefault);
// The Source button
m_srcBtn = new TextButton(this, {NUM_EDIT_W + PAD_TINY, 0, SRC_BTN_W, 0}, "SRC", [=]() {
m_srcBtn = new TextButton(this, {EdgeTxStyles::EDIT_FLD_WIDTH_NARROW + PAD_TINY, 0, SRC_BTN_W, 0}, "SRC", [=]() {
switchSourceMode();
return isSource();
});
@@ -45,7 +45,6 @@ class SourceNumberEdit : public Window
void update();
static LAYOUT_VAL(NUM_EDIT_W, 84, 84, LS(84))
static LAYOUT_VAL(SRC_BTN_W, 38, 38, LS(38))
protected:
@@ -167,7 +167,7 @@ void BitmapBuffer::drawGPSPosition(coord_t x, coord_t y, int32_t longitude,
{
if (flags & PREC1) {
drawGPSCoord(x, y, latitude, "NS", flags, true);
drawGPSCoord(x, y + EdgeTxStyles::PAGE_LINE_HEIGHT, longitude, "EW", flags, true);
drawGPSCoord(x, y + EdgeTxStyles::STD_FONT_HEIGHT, longitude, "EW", flags, true);
} else {
if (flags & RIGHT) {
x = drawGPSCoord(x, y, longitude, "EW", flags, true);
@@ -194,7 +194,7 @@ void BitmapBuffer::drawDate(coord_t x, coord_t y, TelemetryItem &telemetryItem,
x = drawText(x, y, s.c_str(), att);
if (doTwoLines) {
y += EdgeTxStyles::PAGE_LINE_HEIGHT;
y += EdgeTxStyles::STD_FONT_HEIGHT;
x = ox;
} else {
x += 11;
+1 -1
View File
@@ -97,7 +97,7 @@ class DynamicMessageDialog : public BaseDialog
DynamicMessageDialog(const char* title,
std::function<std::string()> textHandler,
const char* message = "",
const int lineHeight = EdgeTxStyles::PAGE_LINE_HEIGHT,
const int lineHeight = EdgeTxStyles::STD_FONT_HEIGHT,
LcdColorIndex color = COLOR_THEME_PRIMARY1_INDEX, LcdFlags textFlags = CENTERED);
// Attn.: FONT(XXL) is not supported by DynamicMessageDialog
@@ -129,12 +129,12 @@ const lv_style_const_prop_t pad_large_props[] = {
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::pad_large, pad_large_props);
const lv_style_const_prop_t pad_button_props[] = {
LV_STYLE_CONST_PAD_TOP(2),
LV_STYLE_CONST_PAD_BOTTOM(2),
LV_STYLE_CONST_PAD_TOP(PAD_TINY),
LV_STYLE_CONST_PAD_BOTTOM(PAD_TINY),
LV_STYLE_CONST_PAD_LEFT(PAD_MEDIUM),
LV_STYLE_CONST_PAD_RIGHT(PAD_MEDIUM),
LV_STYLE_CONST_PAD_ROW(2),
LV_STYLE_CONST_PAD_COLUMN(2),
LV_STYLE_CONST_PAD_ROW(PAD_TINY),
LV_STYLE_CONST_PAD_COLUMN(PAD_TINY),
LV_STYLE_PROP_INV,
};
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::pad_button, pad_button_props);
@@ -142,7 +142,7 @@ LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::pad_button, pad_button_props);
const lv_style_const_prop_t pad_textarea_props[] = {
LV_STYLE_CONST_PAD_TOP(PAD_SMALL),
LV_STYLE_CONST_PAD_BOTTOM(PAD_SMALL - 1),
LV_STYLE_CONST_PAD_LEFT(PAD_SMALL),
LV_STYLE_CONST_PAD_LEFT(PAD_MEDIUM),
LV_STYLE_CONST_PAD_RIGHT(PAD_SMALL),
LV_STYLE_PROP_INV,
};
+3 -1
View File
@@ -277,9 +277,11 @@ class EdgeTxStyles
void init();
void applyColors();
static LAYOUT_VAL(PAGE_LINE_HEIGHT, 20, 20, LS(20))
static LAYOUT_VAL(STD_FONT_HEIGHT, 21, 21, 14)
static LAYOUT_VAL(UI_ELEMENT_HEIGHT, 32, 32, 24)
static LAYOUT_VAL(MENU_HEADER_HEIGHT, 45, 45, LS(45))
static LAYOUT_VAL(EDIT_FLD_WIDTH_NARROW, 70, 70, LS(70))
static LAYOUT_VAL(EDIT_FLD_WIDTH, 100, 100, LS(100))
protected:
bool initDone = false;
@@ -35,7 +35,7 @@ FileCarosell::FileCarosell(Window *parent, const rect_t &rect,
{
setWindowFlag(NO_FOCUS);
message = new StaticText(this, {0, rect.h/2, rect.w, EdgeTxStyles::PAGE_LINE_HEIGHT * 2}, "", COLOR_THEME_PRIMARY1_INDEX, CENTERED | FONT(L));
message = new StaticText(this, {0, rect.h/2, rect.w, EdgeTxStyles::STD_FONT_HEIGHT * 2}, "", COLOR_THEME_PRIMARY1_INDEX, CENTERED | FONT(L));
setFileNames(fileNames);
}
@@ -37,7 +37,7 @@ class ListLineButton : public ButtonBase
virtual void refresh() = 0;
static LAYOUT_VAL(BTN_H, 29, 29, LS(29))
static constexpr coord_t BTN_H = EdgeTxStyles::STD_FONT_HEIGHT + PAD_BORDER * 2 + PAD_TINY * 2;
static constexpr coord_t GRP_W = LCD_W - PAD_SMALL * 2;
protected:
+1 -1
View File
@@ -214,7 +214,7 @@ NumberEdit::NumberEdit(Window* parent, const rect_t& rect, int vmin, int vmax,
vmin(vmin),
vmax(vmax)
{
if (rect.w == 0) setWidth(DEF_W);
if (rect.w == 0) setWidth(EdgeTxStyles::EDIT_FLD_WIDTH);
setTextFlag(textFlags);
@@ -91,8 +91,6 @@ class NumberEdit : public TextButton
int32_t getValue() const { return _getValue != nullptr ? _getValue() : 0; }
static LAYOUT_VAL(DEF_W, 100, 100, LS(100))
protected:
friend class NumberArea;
+4 -4
View File
@@ -36,7 +36,7 @@ PageHeader::PageHeader(Window* parent, EdgeTxIcon icon) :
title = new StaticText(this,
{PAGE_TITLE_LEFT, PAGE_TITLE_TOP,
LCD_W - PAGE_TITLE_LEFT, EdgeTxStyles::PAGE_LINE_HEIGHT},
LCD_W - PAGE_TITLE_LEFT, EdgeTxStyles::STD_FONT_HEIGHT},
"", COLOR_THEME_PRIMARY2_INDEX);
}
@@ -51,7 +51,7 @@ PageHeader::PageHeader(Window* parent, const char* iconFile) :
title = new StaticText(this,
{PAGE_TITLE_LEFT, PAGE_TITLE_TOP,
LCD_W - PAGE_TITLE_LEFT, EdgeTxStyles::PAGE_LINE_HEIGHT},
LCD_W - PAGE_TITLE_LEFT, EdgeTxStyles::STD_FONT_HEIGHT},
"", COLOR_THEME_PRIMARY2_INDEX);
}
@@ -59,8 +59,8 @@ StaticText* PageHeader::setTitle2(std::string txt)
{
if (title2 == nullptr) {
title2 = new StaticText(this,
{PAGE_TITLE_LEFT, PAGE_TITLE_TOP + EdgeTxStyles::PAGE_LINE_HEIGHT,
LCD_W - PAGE_TITLE_LEFT, EdgeTxStyles::PAGE_LINE_HEIGHT},
{PAGE_TITLE_LEFT, PAGE_TITLE_TOP + EdgeTxStyles::STD_FONT_HEIGHT,
LCD_W - PAGE_TITLE_LEFT, EdgeTxStyles::STD_FONT_HEIGHT},
"", COLOR_THEME_PRIMARY2_INDEX);
}
title2->setText(std::move(txt));
+1 -1
View File
@@ -123,7 +123,7 @@ TextEdit::TextEdit(Window* parent, const rect_t& rect, char* text,
}),
updateHandler(updateHandler), text(text), length(length)
{
if (rect.w == 0) setWidth(DEF_W);
if (rect.w == 0) setWidth(EdgeTxStyles::EDIT_FLD_WIDTH);
update();
lv_obj_align(label, LV_ALIGN_OUT_LEFT_MID, 0, PAD_TINY);
-2
View File
@@ -36,8 +36,6 @@ class TextEdit : public TextButton
void preview(bool edited, char* text, uint8_t length);
void update();
static LAYOUT_VAL(DEF_W, 100, 100, 70)
protected:
std::function<void(void)> updateHandler = nullptr;
TextArea* edit = nullptr;
+3 -3
View File
@@ -474,7 +474,7 @@ SetupButtonGroup::SetupButtonGroup(Window* parent, const rect_t& rect, const cha
int rows = (pages.size() + cols - 1) / cols;
int height = rows * btnHeight + (rows - 1) * PAD_MEDIUM + PAD_TINY * 2;
if (title) {
height += EdgeTxStyles::PAGE_LINE_HEIGHT + PAD_TINY;
height += EdgeTxStyles::STD_FONT_HEIGHT + PAD_TINY;
}
setHeight(height);
@@ -483,7 +483,7 @@ SetupButtonGroup::SetupButtonGroup(Window* parent, const rect_t& rect, const cha
int n = 0;
int remaining = pages.size();
coord_t yo = title ? EdgeTxStyles::PAGE_LINE_HEIGHT + PAD_TINY : 0;
coord_t yo = title ? EdgeTxStyles::STD_FONT_HEIGHT + PAD_TINY : 0;
coord_t xw = buttonWidth + PAD_SMALL;
coord_t xo = (width() - (cols * xw - PAD_SMALL)) / 2;
coord_t x, y;
@@ -520,7 +520,7 @@ SetupLine::SetupLine(Window* parent, coord_t y, coord_t col2, PaddingSize paddin
{
padAll(PAD_ZERO);
coord_t titleY = PAD_LARGE + lblYOffset;
coord_t titleH = EdgeTxStyles::PAGE_LINE_HEIGHT;
coord_t titleH = EdgeTxStyles::STD_FONT_HEIGHT;
coord_t h = EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY * 2 + lblYOffset * 2;
if (createEdit) {
coord_t editY = PAD_TINY;
@@ -64,7 +64,7 @@ WidgetSettings::WidgetSettings(Widget* w) :
switch (opt->type) {
case ZoneOption::Integer:
(new NumberEdit(
line, rect_t{0, 0, 96, 0}, opt->min.signedValue,
line, rect_t{}, opt->min.signedValue,
opt->max.signedValue,
[=]() -> int {
return optVal->signedValue;
@@ -102,7 +102,7 @@ WidgetSettings::WidgetSettings(Widget* w) :
break;
case ZoneOption::String:
new ModelTextEdit(line, rect_t{0, 0, 96, 0},
new ModelTextEdit(line, rect_t{},
optVal->stringValue,
sizeof(optVal->stringValue));
break;
+3 -3
View File
@@ -305,7 +305,7 @@ void CurveEditWindow::buildBody(Window* window)
// Smooth
auto smooth =
new TextButton(iLine, rect_t{0, 0, NUMEDT_W, 0}, STR_SMOOTH, [=]() {
new TextButton(iLine, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, STR_SMOOTH, [=]() {
g_model.curves[index].smooth = !g_model.curves[index].smooth;
curveEdit->updatePreview();
return g_model.curves[index].smooth;
@@ -320,7 +320,7 @@ void CurveEditWindow::buildBody(Window* window)
// Type
new StaticText(iLine, rect_t{}, STR_TYPE);
new Choice(
iLine, {0, 0, TextEdit::DEF_W, 0}, STR_CURVE_TYPES, 0, 1,
iLine, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH, 0}, STR_CURVE_TYPES, 0, 1,
GET_DEFAULT(g_model.curves[index].type), [=](int32_t newValue) {
CurveHeader& curve = g_model.curves[index];
if (newValue != curve.type) {
@@ -346,7 +346,7 @@ void CurveEditWindow::buildBody(Window* window)
// Points count
auto edit = new Choice(
iLine, {0, 0, NUMEDT_W, 0}, 2, 17,
iLine, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 2, 17,
GET_DEFAULT(g_model.curves[index].points + 5), [=](int32_t newValue) {
newValue -= 5;
CurveHeader& curve = g_model.curves[index];
-1
View File
@@ -37,7 +37,6 @@ class CurveEditWindow : public Page
void setCurrentSource(mixsrc_t source);
static LAYOUT_VAL(NUMEDT_W, 70, 70, LS(70))
static LAYOUT_VAL(CURVE_WIDTH, 215, 232, LS(215))
protected:
@@ -64,7 +64,7 @@ class FunctionSwitch : public Window
std::string s(STR_CHAR_SWITCH);
s += switchGetName(switchIndex + switchGetMaxSwitches());
new StaticText(this, {PAD_LARGE, PAD_MEDIUM, SW_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, s);
new StaticText(this, {PAD_LARGE, PAD_MEDIUM, SW_W, EdgeTxStyles::STD_FONT_HEIGHT}, s);
new ModelTextEdit(this, {NM_X, 0, NM_W, 0},
g_model.switchNames[switchIndex], LEN_SWITCH_NAME);
@@ -169,30 +169,29 @@ class FunctionSwitch : public Window
}
#if defined(FUNCTION_SWITCHES_RGB_LEDS)
static constexpr coord_t SW_X = PAD_SMALL;
static constexpr coord_t SW_W = 70;
static constexpr coord_t NM_X = SW_X + SW_W;
static constexpr coord_t NM_W = 60;
static LAYOUT_VAL(SW_W, 70, 70, LS(70))
static constexpr coord_t NM_X = SW_W + PAD_SMALL;
static LAYOUT_VAL(NM_W, 60, 60, LS(60))
static constexpr coord_t TP_X = NM_X + NM_W + PAD_SMALL;
static constexpr coord_t TP_W = 78;
static LAYOUT_VAL(TP_W, 78, 78, LS(78))
static constexpr coord_t GR_X = TP_X + TP_W + PAD_SMALL;
static constexpr coord_t GR_W = 84;
static LAYOUT_VAL(GR_W, 84, 84, LS(84))
static constexpr coord_t ST_X = GR_X + GR_W + PAD_SMALL;
static constexpr coord_t ST_W = 60;
static LAYOUT_VAL(ST_W, 60, 60, LS(60))
static constexpr coord_t C1_X = ST_X + ST_W + PAD_SMALL;
static constexpr coord_t C1_W = 40;
static LAYOUT_VAL(C1_W, 40, 40, LS(40))
static constexpr coord_t C2_X = C1_X + C1_W + PAD_SMALL;
static constexpr coord_t C2_W = 40;
static LAYOUT_VAL(C2_W, 40, 40, LS(40))
#else
static constexpr coord_t SW_W = (LCD_W - PAD_SMALL * 2 - PAD_TINY * 4) / 5;
static constexpr coord_t NM_X = SW_W + PAD_TINY;
static constexpr coord_t NM_W = 80;
static LAYOUT_VAL(NM_W, 80, 80, LS(80))
static constexpr coord_t TP_X = NM_X + SW_W + PAD_TINY;
static constexpr coord_t TP_W = 86;
static LAYOUT_VAL(TP_W, 86, 86, LS(86))
static constexpr coord_t GR_X = TP_X + SW_W + PAD_TINY;
static constexpr coord_t GR_W = 94;
static constexpr coord_t ST_X = GR_X + SW_W + 20;
static constexpr coord_t ST_W = 70;
static LAYOUT_VAL(GR_W, 94, 94, LS(94))
static constexpr coord_t ST_X = GR_X + SW_W + PAD_LARGE * 2 + PAD_SMALL;
static LAYOUT_VAL(ST_W, 70, 70, LS(70))
#endif
protected:
@@ -250,7 +249,7 @@ class SwitchGroup : public Window
{
padAll(PAD_TINY);
new StaticText(this, {0, PAD_MEDIUM, NM_W, EdgeTxStyles::PAGE_LINE_HEIGHT},
new StaticText(this, {0, PAD_MEDIUM, NM_W, EdgeTxStyles::STD_FONT_HEIGHT},
STR_FUNCTION_SWITCH_GROUPS[groupIndex]);
auto btn = new TextButton(
@@ -265,7 +264,7 @@ class SwitchGroup : public Window
});
btn->check(IS_FSWITCH_GROUP_ON(groupIndex));
new StaticText(this, {SL_X, PAD_MEDIUM, SL_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, STR_SWITCH_STARTUP);
new StaticText(this, {SL_X, PAD_MEDIUM, SL_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_SWITCH_STARTUP);
startChoice = new Choice(
this, {ST_X, 0, ST_W, 0}, STR_FSSWITCHES, 0,
@@ -295,13 +294,13 @@ class SwitchGroup : public Window
startChoice->setValue(groupDefaultSwitch(groupIndex) + 1);
}
static constexpr coord_t NM_W = 100;
static constexpr coord_t AO_X = NM_W + 2;
static constexpr coord_t AO_W = 100;
static constexpr coord_t SL_X = AO_X + AO_W + 30;
static constexpr coord_t SL_W = 100;
static constexpr coord_t ST_X = SL_X + SL_W + 2;
static constexpr coord_t ST_W = 80;
static LAYOUT_VAL(NM_W, 100, 100, LS(100))
static constexpr coord_t AO_X = NM_W + PAD_TINY;
static LAYOUT_VAL(AO_W, 100, 100, LS(100))
static constexpr coord_t SL_X = AO_X + AO_W + PAD_LARGE * 3 + PAD_MEDIUM;
static LAYOUT_VAL(SL_W, 100, 100, LS(100))
static constexpr coord_t ST_X = SL_X + SL_W + PAD_TINY;
static LAYOUT_VAL(ST_W, 80, 80, LS(80))
protected:
uint8_t groupIndex;
@@ -83,7 +83,7 @@ void MixEditAdvanced::buildBody(Window* form)
// Warning
new StaticText(line, rect_t{}, STR_MIXWARNING);
auto edit = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, 3,
auto edit = new NumberEdit(line, rect_t{}, 0, 3,
GET_SET_DEFAULT(mix->mixWarn));
edit->setZeroText(STR_OFF);
@@ -112,14 +112,14 @@ void MixEditAdvanced::buildBody(Window* form)
// Delay up
line = form->newLine(grid);
new StaticText(line, rect_t{}, STR_DELAYUP);
delayUp = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX,
delayUp = new NumberEdit(line, rect_t{}, 0, DELAY_MAX,
GET_DEFAULT(mix->delayUp),
SET_VALUE(mix->delayUp, newValue), mix->delayPrec ? PREC2 : PREC1);
delayUp->setSuffix("s");
// Delay down
new StaticText(line, rect_t{}, STR_DELAYDOWN);
delayDn = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX,
delayDn = new NumberEdit(line, rect_t{}, 0, DELAY_MAX,
GET_DEFAULT(mix->delayDown),
SET_VALUE(mix->delayDown, newValue), mix->delayPrec ? PREC2 : PREC1);
delayDn->setSuffix("s");
@@ -149,13 +149,13 @@ void MixEditAdvanced::buildBody(Window* form)
// Slow up
line = form->newLine(grid);
new StaticText(line, rect_t{}, STR_SLOWUP);
slowUp = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX, GET_DEFAULT(mix->speedUp),
slowUp = new NumberEdit(line, rect_t{}, 0, DELAY_MAX, GET_DEFAULT(mix->speedUp),
SET_VALUE(mix->speedUp, newValue), mix->speedPrec ? PREC2 : PREC1);
slowUp->setSuffix("s");
// Slow down
new StaticText(line, rect_t{}, STR_SLOWDOWN);
slowDn = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX, GET_DEFAULT(mix->speedDown),
slowDn = new NumberEdit(line, rect_t{}, 0, DELAY_MAX, GET_DEFAULT(mix->speedDown),
SET_VALUE(mix->speedDown, newValue), mix->speedPrec ? PREC2 : PREC1);
slowDn->setSuffix("s");
}
@@ -33,8 +33,6 @@ class MixEditAdvanced : public Page
public:
MixEditAdvanced(int8_t channel, uint8_t index);
static LAYOUT_VAL(NUM_EDIT_W, 100, 100, LS(100))
protected:
uint8_t channel;
uint8_t index;
@@ -42,7 +42,7 @@ class CurveButton : public Button
s = strAppend(s, ":");
strAppend(s, g_model.curves[index].name, LEN_CURVE_NAME);
}
title = new StaticText(this, {4, -1, width() - 12, TITLE_H + 1}, buf,
title = new StaticText(this, {4, -1, width() - PAD_MEDIUM * 2, EdgeTxStyles::STD_FONT_HEIGHT}, buf,
COLOR_THEME_SECONDARY1_INDEX, CENTERED | FONT(BOLD));
etx_txt_color(title->getLvObj(), COLOR_THEME_PRIMARY2_INDEX,
LV_PART_MAIN | LV_STATE_USER_1);
@@ -59,7 +59,7 @@ class CurveButton : public Button
// Preview
preview = new CurveRenderer(
this,
{PAD_MEDIUM, PAD_MEDIUM + TITLE_H, width() - PAD_MEDIUM * 2 - 4,
{PAD_MEDIUM, PAD_MEDIUM + EdgeTxStyles::STD_FONT_HEIGHT, width() - PAD_MEDIUM * 2 - 4,
width() - PAD_MEDIUM * 2 - 4},
[=](int x) -> int { return applyCustomCurve(x, index); });
@@ -67,16 +67,15 @@ class CurveButton : public Button
CurveHeader &curve = g_model.curves[index];
snprintf(buf, 32, "%s %d %s", STR_CURVE_TYPES[curve.type], 5 + curve.points,
STR_PTS);
new StaticText(this, {0, height() - INFO_H, LV_PCT(100), 0}, buf,
new StaticText(this, {0, height() - EdgeTxStyles::STD_FONT_HEIGHT - PAD_MEDIUM, LV_PCT(100), EdgeTxStyles::STD_FONT_HEIGHT}, buf,
COLOR_THEME_SECONDARY1_INDEX, CENTERED | FONT(BOLD));
}
void update() { preview->update(); }
static LAYOUT_VAL(TITLE_H, 20, 20, LS(20))
static LAYOUT_VAL(INFO_H, 27, 27, 19)
static LAYOUT_VAL(CURVE_BTN_W, 142, 142, LS(142))
static constexpr coord_t CURVE_BTH_H = CURVE_BTN_W + TITLE_H + INFO_H - PAD_MEDIUM;
static constexpr coord_t CURVE_BTH_H = CURVE_BTN_W + EdgeTxStyles::STD_FONT_HEIGHT * 2;
protected:
uint8_t index;
@@ -84,7 +84,7 @@ class TrimEdit : public Window
if (tr->mode != TRIM_MODE_NONE) tr_btn->check();
tr_mode = new Choice(this, rect_t{0, 0, TR_MODE_W, 0}, 0, 2 * MAX_FLIGHT_MODES,
tr_mode = new Choice(this, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 0, 2 * MAX_FLIGHT_MODES,
GET_DEFAULT(tr->mode), [=](int val) {
tr->mode = val;
showControls();
@@ -100,14 +100,13 @@ class TrimEdit : public Window
});
tr_value = new NumberEdit(
this, rect_t{0, 0, TR_MODE_W, 0}, g_model.extendedTrims ? -512 : -128,
this, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, g_model.extendedTrims ? -512 : -128,
g_model.extendedTrims ? 512 : 128, GET_SET_DEFAULT(tr->value));
showControls();
}
static LAYOUT_VAL(TR_BTN_W, 65, 65, 44)
static LAYOUT_VAL(TR_MODE_W, 70, 70, LS(70))
protected:
int trimId;
@@ -377,7 +376,7 @@ const lv_obj_class_t FlightModeBtn::fm_id_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = FlightModeBtn::FMID_W,
.height_def = EdgeTxStyles::PAGE_LINE_HEIGHT,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -396,7 +395,7 @@ const lv_obj_class_t FlightModeBtn::fm_name_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = FlightModeBtn::NAME_W,
.height_def = EdgeTxStyles::PAGE_LINE_HEIGHT,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -414,7 +413,7 @@ const lv_obj_class_t FlightModeBtn::fm_switch_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = FlightModeBtn::SWTCH_W,
.height_def = EdgeTxStyles::PAGE_LINE_HEIGHT,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -432,7 +431,7 @@ const lv_obj_class_t FlightModeBtn::fm_fade_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = FlightModeBtn::FADE_W,
.height_def = EdgeTxStyles::PAGE_LINE_HEIGHT,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
+7 -7
View File
@@ -67,13 +67,13 @@ class GVarButton : public ListLineButton
}
static LAYOUT_VAL3(GVAR_NAME_SIZE, 44, 44, LS(44), 74)
static constexpr coord_t GVAR_VAL_H = EdgeTxStyles::PAGE_LINE_HEIGHT + 2;
static constexpr coord_t GVAR_VAL_H = EdgeTxStyles::STD_FONT_HEIGHT + 2;
static LAYOUT_VAL3(GVAR_VAL_W, 45, 50, LS(45), 75)
static LAYOUT_VAL2(GVAR_COLS, MAX_FLIGHT_MODES, 5)
static LAYOUT_VAL2(BTN_H, EdgeTxStyles::UI_ELEMENT_HEIGHT, 50)
static LAYOUT_VAL(GVAR_NM_Y, 4, 13, LS(4))
static LAYOUT_VAL(GVAR_YO, 4, 2, LS(4))
static LAYOUT_VAL2(HDR_H, EdgeTxStyles::PAGE_LINE_HEIGHT + PAD_TINY, EdgeTxStyles::PAGE_LINE_HEIGHT * 2 + PAD_TINY)
static LAYOUT_VAL2(HDR_H, EdgeTxStyles::STD_FONT_HEIGHT + PAD_TINY, EdgeTxStyles::STD_FONT_HEIGHT * 2 + PAD_TINY)
static const lv_obj_class_t gv_label_class;
static const lv_obj_class_t gv_value_class;
@@ -122,7 +122,7 @@ class GVarButton : public ListLineButton
auto nm = lv_label_create(lvobj);
lv_label_set_text(nm, getGVarString(index));
lv_obj_set_pos(nm, PAD_TINY, GVAR_NM_Y);
lv_obj_set_size(nm, GVAR_NAME_SIZE, EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_size(nm, GVAR_NAME_SIZE, EdgeTxStyles::STD_FONT_HEIGHT);
if (modelFMEnabled()) {
for (int flightMode = 0; flightMode < MAX_FLIGHT_MODES; flightMode++) {
@@ -138,7 +138,7 @@ class GVarButton : public ListLineButton
}
} else {
valueTexts[0] = lv_label_create(lvobj);
lv_obj_set_pos(valueTexts[0], GVAR_NAME_SIZE + PAD_MEDIUM, (BTN_H - EdgeTxStyles::PAGE_LINE_HEIGHT - PAD_SMALL) / 2);
lv_obj_set_pos(valueTexts[0], GVAR_NAME_SIZE + PAD_MEDIUM, (BTN_H - EdgeTxStyles::STD_FONT_HEIGHT - PAD_SMALL) / 2);
updateValueText(0);
}
@@ -199,7 +199,7 @@ const lv_obj_class_t GVarButton::gv_label_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = GVarButton::GVAR_VAL_W,
.height_def = EdgeTxStyles::PAGE_LINE_HEIGHT - PAD_MEDIUM,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT - PAD_MEDIUM,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -219,7 +219,7 @@ const lv_obj_class_t GVarButton::gv_value_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = GVarButton::GVAR_VAL_W,
.height_def = EdgeTxStyles::PAGE_LINE_HEIGHT,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -282,7 +282,7 @@ class GVarHeader : public Window
labelTexts[flightMode] = etx_create(&GVarButton::gv_value_class, lvobj);
lv_label_set_text(labelTexts[flightMode], label);
lv_obj_set_pos(labelTexts[flightMode], (flightMode % GVarButton::GVAR_COLS) * GVarButton::GVAR_VAL_W + GVarButton::GVAR_NAME_SIZE + HDR_XO,
(flightMode / GVarButton::GVAR_COLS) * EdgeTxStyles::PAGE_LINE_HEIGHT + 1);
(flightMode / GVarButton::GVAR_COLS) * EdgeTxStyles::STD_FONT_HEIGHT + 1);
if (flightMode == currentFlightMode) {
lv_obj_add_state(labelTexts[flightMode], LV_STATE_CHECKED);
@@ -336,42 +336,42 @@ class LogicalSwitchButton : public ListLineButton
lsName = lv_label_create(lvobj);
etx_obj_add_style(lsName, styles->text_align_left, LV_PART_MAIN);
lv_obj_set_pos(lsName, NM_X, NM_Y);
lv_obj_set_size(lsName, NM_W, NM_H);
lv_obj_set_size(lsName, NM_W, EdgeTxStyles::STD_FONT_HEIGHT);
lsFunc = lv_label_create(lvobj);
etx_obj_add_style(lsFunc, styles->text_align_left, LV_PART_MAIN);
lv_obj_set_pos(lsFunc, FN_X, FN_Y);
lv_obj_set_size(lsFunc, FN_W, FN_H);
lv_obj_set_size(lsFunc, FN_W, EdgeTxStyles::STD_FONT_HEIGHT);
lv_obj_set_style_text_font(lsFunc, getFont(FONT(BOLD)), LV_STATE_USER_1);
lsV1 = lv_label_create(lvobj);
etx_obj_add_style(lsV1, styles->text_align_center, LV_PART_MAIN);
etx_font(lsV1, FONT_XS_INDEX, ETX_STATE_V1_SMALL_FONT);
lv_obj_set_pos(lsV1, V1_X, V1_Y);
lv_obj_set_size(lsV1, V1_W, V1_H);
lv_obj_set_size(lsV1, V1_W, EdgeTxStyles::STD_FONT_HEIGHT);
lv_obj_set_style_text_font(lsV1, getFont(FONT(BOLD)), LV_STATE_USER_1);
lsV2 = lv_label_create(lvobj);
etx_obj_add_style(lsV2, styles->text_align_center, LV_PART_MAIN);
lv_obj_set_pos(lsV2, V2_X, V2_Y);
lv_obj_set_size(lsV2, V2_W, V2_H);
lv_obj_set_size(lsV2, V2_W, EdgeTxStyles::STD_FONT_HEIGHT);
lv_obj_set_style_text_font(lsV2, getFont(FONT(BOLD)), LV_STATE_USER_1);
lsAnd = lv_label_create(lvobj);
etx_obj_add_style(lsAnd, styles->text_align_center, LV_PART_MAIN);
lv_obj_set_pos(lsAnd, AND_X, AND_Y);
lv_obj_set_size(lsAnd, AND_W, AND_H);
lv_obj_set_size(lsAnd, AND_W, EdgeTxStyles::STD_FONT_HEIGHT);
lv_obj_set_style_text_font(lsAnd, getFont(FONT(BOLD)), LV_STATE_USER_1);
lsDuration = lv_label_create(lvobj);
etx_obj_add_style(lsDuration, styles->text_align_center, LV_PART_MAIN);
lv_obj_set_pos(lsDuration, DUR_X, DUR_Y);
lv_obj_set_size(lsDuration, DUR_W, DUR_H);
lv_obj_set_size(lsDuration, DUR_W, EdgeTxStyles::STD_FONT_HEIGHT);
lsDelay = lv_label_create(lvobj);
etx_obj_add_style(lsDelay, styles->text_align_center, LV_PART_MAIN);
lv_obj_set_pos(lsDelay, DEL_X, DEL_Y);
lv_obj_set_size(lsDelay, DEL_W, DEL_H);
lv_obj_set_size(lsDelay, DEL_W, EdgeTxStyles::STD_FONT_HEIGHT);
lv_obj_update_layout(lvobj);
@@ -506,31 +506,24 @@ class LogicalSwitchButton : public ListLineButton
static constexpr coord_t NM_X = PAD_TINY;
static LAYOUT_VAL(NM_Y, 4, 10, 1)
static LAYOUT_VAL(NM_W, 30, 36, LS(30))
static LAYOUT_VAL(NM_H, 20, 20, 14)
static constexpr coord_t FN_X = NM_X + NM_W + PAD_TINY;
static constexpr coord_t FN_Y = NM_Y;
static LAYOUT_VAL(FN_W, 50, 58, LS(50))
static constexpr coord_t FN_H = NM_H;
static constexpr coord_t V1_X = FN_X + FN_W + PAD_TINY;
static LAYOUT_VAL2(V1_Y, NM_Y, 0)
static LAYOUT_VAL(V1_W, 88, 88, LS(88))
static constexpr coord_t V1_H = NM_H;
static constexpr coord_t V2_X = V1_X + V1_W + PAD_TINY;
static constexpr coord_t V2_Y = V1_Y;
static constexpr coord_t V2_H = NM_H;
static constexpr coord_t AND_W = V1_W;
static LAYOUT_VAL(DUR_W, 40, 54, LS(40))
static constexpr coord_t DEL_W = DUR_W;
static constexpr coord_t AND_X = ListLineButton::GRP_W - PAD_BORDER * 2 - AND_W - DUR_W - DEL_W - PAD_TINY * 3;
static LAYOUT_VAL2(AND_Y, NM_Y, 20)
static constexpr coord_t V2_W = AND_X - V2_X - PAD_TINY;
static constexpr coord_t AND_H = NM_H;
static constexpr coord_t DUR_X = ListLineButton::GRP_W - PAD_BORDER * 2 - DUR_W - DEL_W - PAD_TINY * 2;
static constexpr coord_t DUR_Y = AND_Y;
static constexpr coord_t DUR_H = NM_H;
static constexpr coord_t DEL_X = ListLineButton::GRP_W - PAD_BORDER * 2 - DEL_W - PAD_TINY;
static constexpr coord_t DEL_Y = AND_Y;
static constexpr coord_t DEL_H = NM_H;
protected:
bool init = false;
@@ -75,23 +75,23 @@ class OutputLineButton : public ListLineButton
etx_obj_add_style(min, styles->text_align_right, LV_PART_MAIN);
etx_font(min, FONT_BOLD_INDEX, ETX_STATE_MINMAX_BOLD);
lv_obj_set_pos(min, MIN_X, MIN_Y);
lv_obj_set_size(min, MIN_W, MIN_H);
lv_obj_set_size(min, MIN_W, EdgeTxStyles::STD_FONT_HEIGHT);
max = lv_label_create(lvobj);
etx_obj_add_style(max, styles->text_align_right, LV_PART_MAIN);
etx_font(max, FONT_BOLD_INDEX, ETX_STATE_MINMAX_BOLD);
lv_obj_set_pos(max, MAX_X, MAX_Y);
lv_obj_set_size(max, MAX_W, MAX_H);
lv_obj_set_size(max, MAX_W, EdgeTxStyles::STD_FONT_HEIGHT);
offset = lv_label_create(lvobj);
etx_obj_add_style(offset, styles->text_align_right, LV_PART_MAIN);
lv_obj_set_pos(offset, OFF_X, OFF_Y);
lv_obj_set_size(offset, OFF_W, OFF_H);
lv_obj_set_size(offset, OFF_W, EdgeTxStyles::STD_FONT_HEIGHT);
center = lv_label_create(lvobj);
etx_obj_add_style(center, styles->text_align_right, LV_PART_MAIN);
lv_obj_set_pos(center, CTR_X, CTR_Y);
lv_obj_set_size(center, CTR_W, CTR_H);
lv_obj_set_size(center, CTR_W, EdgeTxStyles::STD_FONT_HEIGHT);
revert = lv_img_create(lvobj);
lv_img_set_src(revert, LV_SYMBOL_SHUFFLE);
@@ -178,19 +178,15 @@ class OutputLineButton : public ListLineButton
static constexpr coord_t MIN_X = SRC_X + SRC_W + PAD_TINY;
static LAYOUT_VAL(MIN_Y, 4, 2, 2)
static LAYOUT_VAL(MIN_W, 52, 52, LS(52))
static LAYOUT_VAL(MIN_H, 20, 20, LS(20))
static constexpr coord_t MAX_X = MIN_X + MIN_W + PAD_TINY;
static constexpr coord_t MAX_Y = MIN_Y;
static LAYOUT_VAL(MAX_W, 52, 60, LS(52))
static constexpr coord_t MAX_H = MIN_H;
static LAYOUT_VAL(OFF_X, MAX_X + MAX_W + PAD_TINY, SRC_X + SRC_W + PAD_TINY, MAX_X + MAX_W + PAD_TINY)
static LAYOUT_VAL(OFF_Y, MIN_Y, 24, MIN_Y)
static LAYOUT_VAL(OFF_W, 44, 52, LS(44))
static constexpr coord_t OFF_H = MIN_H;
static constexpr coord_t CTR_X = OFF_X + OFF_W + PAD_TINY;
static constexpr coord_t CTR_Y = OFF_Y;
static LAYOUT_VAL(CTR_W, 60, 60, LS(60))
static constexpr coord_t CTR_H = MIN_H;
static constexpr coord_t REV_X = CTR_X + CTR_W + PAD_TINY;
static constexpr coord_t REV_Y = CTR_Y;
static LAYOUT_VAL(REV_W, 16, 16, LS(16))
@@ -247,7 +243,7 @@ void ModelOutputsPage::build(Window* window)
return 0;
});
new StaticText(window, {EXLIM_X, EXLIM_Y, EXLIM_W, EXLIM_H}, STR_ELIMITS, COLOR_THEME_PRIMARY1_INDEX, RIGHT);
new StaticText(window, {EXLIM_X, EXLIM_Y, EXLIM_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_ELIMITS, COLOR_THEME_PRIMARY1_INDEX, RIGHT);
new ToggleSwitch(window, {EXLIMCB_X, EXLIMCB_Y, EXLIMCB_W, EXLIMCB_H}, GET_SET_DEFAULT(g_model.extendedLimits));
for (uint8_t ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++) {
@@ -43,7 +43,6 @@ class ModelOutputsPage : public PageTab
static LAYOUT_VAL2(EXLIM_X, ADD_TRIMS_X + ADD_TRIMS_W + PAD_SMALL, 6)
static LAYOUT_VAL(EXLIM_Y, 10, ADD_TRIMS_X + ADD_TRIMS_H + 8, LS(10))
static constexpr coord_t EXLIM_W = EXLIMCB_X - EXLIM_X - PAD_SMALL;
static LAYOUT_VAL(EXLIM_H, 20, 20, LS(20))
static constexpr coord_t TRIMB_X = PAD_SMALL;
static constexpr coord_t TRIMB_Y = EXLIMCB_Y + EXLIMCB_H + PAD_MEDIUM / 2;
static constexpr coord_t TRIMB_W = LCD_W - PAD_SMALL * 2;
@@ -94,7 +94,7 @@ class ModelButton : public Button
etx_obj_add_style(modelName->getLvObj(), styles->bg_opacity_75, LV_PART_MAIN);
modelName->padTop(fo);
} else {
modelName = new StaticText(this, {PAD_TINY, PAD_SMALL, w, EdgeTxStyles::PAGE_LINE_HEIGHT}, modelCell->modelName,
modelName = new StaticText(this, {PAD_TINY, PAD_SMALL, w, EdgeTxStyles::STD_FONT_HEIGHT}, modelCell->modelName,
COLOR_THEME_SECONDARY1_INDEX, font);
}
lv_label_set_long_mode(modelName->getLvObj(), LV_LABEL_LONG_DOT);
@@ -85,7 +85,6 @@ class TSStyle
lv_style_t tsFreshStyle;
static LAYOUT_VAL(NUM_W, 36, 36, LS(36))
static LAYOUT_VAL(NUM_H, 20, 20, LS(20))
static LAYOUT_VAL(NAME_W, 56, 56, LS(56))
static LAYOUT_VAL(ID_Y, 17, 17, LS(17))
static LAYOUT_VAL(ID_H, 11, 11, LS(11))
@@ -110,7 +109,7 @@ static const lv_obj_class_t ts_num_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = TSStyle::NUM_W,
.height_def = TSStyle::NUM_H,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -163,7 +162,7 @@ static const lv_obj_class_t ts_name_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = TSStyle::NAME_W,
.height_def = TSStyle::NUM_H,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -190,7 +189,7 @@ static const lv_obj_class_t ts_value_class = {
.user_data = nullptr,
.event_cb = nullptr,
.width_def = LV_SIZE_CONTENT,
.height_def = TSStyle::NUM_H,
.height_def = EdgeTxStyles::STD_FONT_HEIGHT,
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
.group_def = LV_OBJ_CLASS_GROUP_DEF_INHERIT,
.instance_size = sizeof(lv_label_t),
@@ -816,7 +815,7 @@ class SensorEditWindow : public SubPage
updateSensorParameters();
}
static LAYOUT_VAL(NUM_EDIT_W, 100, 80, LS(100))
static LAYOUT_VAL2(NUM_EDIT_W, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 80)
};
ModelTelemetryPage::ModelTelemetryPage() :
@@ -125,7 +125,7 @@ class SelectTemplate : public TemplatePage
for (auto name : files) {
auto tb = new TextButton(
listWindow, rect_t{0, 0, lv_pct(100), EdgeTxStyles::PAGE_LINE_HEIGHT * 2}, name,
listWindow, rect_t{0, 0, lv_pct(100), EdgeTxStyles::STD_FONT_HEIGHT * 2}, name,
[=]() -> uint8_t {
deleteLater();
templateFolderPage->doUpdate(folder, name);
@@ -166,7 +166,7 @@ SelectTemplateFolder::SelectTemplateFolder(
header->setTitle2(STR_NEW_MODEL);
auto tfb = new TextButton(listWindow,
rect_t{0, 0, lv_pct(100), EdgeTxStyles::PAGE_LINE_HEIGHT * 2},
rect_t{0, 0, lv_pct(100), EdgeTxStyles::STD_FONT_HEIGHT * 2},
STR_BLANK_MODEL, [=]() -> uint8_t {
doUpdate("", "");
return 0;
@@ -205,7 +205,7 @@ SelectTemplateFolder::SelectTemplateFolder(
if (!strcasecmp(name.c_str(), "WIZARD") == 0) {
#endif
auto tfb = new TextButton(
listWindow, rect_t{0, 0, lv_pct(100), EdgeTxStyles::PAGE_LINE_HEIGHT * 2}, name,
listWindow, rect_t{0, 0, lv_pct(100), EdgeTxStyles::STD_FONT_HEIGHT * 2}, name,
[=]() -> uint8_t {
new SelectTemplate(this, name);
return 0;
@@ -107,19 +107,19 @@ void FunctionLineButton::delayed_init()
sfName = lv_label_create(lvobj);
lv_obj_set_pos(sfName, NM_X, NM_Y);
lv_obj_set_size(sfName, NM_W, NM_H);
lv_obj_set_size(sfName, NM_W, EdgeTxStyles::STD_FONT_HEIGHT);
sfSwitch = lv_label_create(lvobj);
lv_obj_set_pos(sfSwitch, SW_X, SW_Y);
lv_obj_set_size(sfSwitch, SW_W, SW_H);
lv_obj_set_size(sfSwitch, SW_W, EdgeTxStyles::STD_FONT_HEIGHT);
sfFunc = lv_label_create(lvobj);
lv_obj_set_pos(sfFunc, FN_X, FN_Y);
lv_obj_set_size(sfFunc, FN_W, FN_H);
lv_obj_set_size(sfFunc, FN_W, EdgeTxStyles::STD_FONT_HEIGHT);
sfRepeat = lv_label_create(lvobj);
lv_obj_set_pos(sfRepeat, RP_X, RP_Y);
lv_obj_set_size(sfRepeat, RP_W, RP_H);
lv_obj_set_size(sfRepeat, RP_W, EdgeTxStyles::STD_FONT_HEIGHT);
sfEnable = sf_enable_state_create(lvobj);
lv_obj_clear_flag(sfEnable, LV_OBJ_FLAG_CLICKABLE);
@@ -53,19 +53,15 @@ class FunctionLineButton : public ListLineButton
static constexpr coord_t NM_X = PAD_TINY;
static LAYOUT_VAL(NM_Y, 4, 10, 1)
static LAYOUT_VAL(NM_W, 43, 40, LS(43))
static LAYOUT_VAL(NM_H, 20, 20, 14)
static constexpr coord_t SW_X = NM_X + NM_W + PAD_TINY;
static LAYOUT_VAL2(SW_Y, NM_Y, 0)
static LAYOUT_VAL(SW_W, 70, 198, LS(70))
static constexpr coord_t SW_H = NM_H;
static LAYOUT_VAL2(FN_X, SW_X + SW_W + PAD_TINY, NM_X + NM_W + PAD_TINY)
static LAYOUT_VAL2(FN_Y, NM_Y, 20)
static LAYOUT_VAL(RP_W, 40, 34, LS(40))
static LAYOUT_VAL(EN_SZ, 16, 16, 12)
static constexpr coord_t FN_H = NM_H;
static constexpr coord_t RP_X = ListLineButton::GRP_W - PAD_BORDER * 2 - RP_W - EN_SZ - PAD_TINY * 2;
static constexpr coord_t RP_Y = NM_Y;
static constexpr coord_t RP_H = NM_H;
static constexpr coord_t FN_W = RP_X - FN_X - PAD_TINY;
static constexpr coord_t EN_X = ListLineButton::GRP_W - PAD_BORDER * 2 - EN_SZ - PAD_TINY;
static constexpr coord_t EN_Y = NM_Y + PAD_TINY;
@@ -44,8 +44,6 @@ struct PWMfrequencyChoice : public Window {
PWMfrequencyChoice(Window* parent, uint8_t moduleIdx, uint8_t channelIdx);
PWMfrequencyChoice(Window* parent, uint8_t moduleIdx);
static LAYOUT_VAL(NUM_W, 60, 60, LS(60))
private:
NumberEdit* num_edit = nullptr;
};
@@ -77,7 +75,7 @@ PWMfrequencyChoice::PWMfrequencyChoice(Window* parent, uint8_t moduleIdx, uint8_
if (num_edit)
num_edit->show(pwmvalue_type == 4);
});
num_edit = new NumberEdit(this, {0, 0, NUM_W, 0}, 50, 400,
num_edit = new NumberEdit(this, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 50, 400,
[=,&pwmvalue_type] { return (pwmvalue_type==4?vCfg->PWMFrequenciesV1.PWMFrequencies[channelIdx]:50); },
[=](int16_t newVal) {
vCfg->PWMFrequenciesV1.PWMFrequencies[channelIdx] = newVal;
@@ -111,7 +109,7 @@ PWMfrequencyChoice::PWMfrequencyChoice(Window* parent, uint8_t moduleIdx ) :
if (num_edit)
num_edit->show(pwmvalue_type == 2);
});
num_edit = new NumberEdit(this, {0, 0, NUM_W, 0}, 50, 400,
num_edit = new NumberEdit(this, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 50, 400,
[=,&pwmvalue_type] { return (pwmvalue_type==2?vCfg->PWMFrequency.Frequency&0x7fff:50); },
[=](int16_t newVal) {
vCfg->PWMFrequency.Frequency = newVal;
@@ -94,7 +94,7 @@ class ChannelFailsafeEdit : public NumberEdit
public:
ChannelFailsafeEdit(Window* parent, uint8_t ch, int vmin, int vmax) :
NumberEdit(parent, rect_t{0, 0, NUM_W, 0}, vmin, vmax, nullptr), channel(ch)
NumberEdit(parent, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, vmin, vmax, nullptr), channel(ch)
{
setGetValueHandler(
[=]() { return calcRESXto1000(g_model.failsafeChannels[ch]); });
@@ -150,8 +150,6 @@ class ChannelFailsafeEdit : public NumberEdit
g_model.failsafeChannels[channel] = channelOutputs[channel];
update();
}
static LAYOUT_VAL(NUM_W, 70, 70, LS(70))
};
class ChannelFSCombo : public Window
@@ -208,7 +208,7 @@ class ModuleWindow : public Window
// Model index
auto modelId = &g_model.header.modelId[moduleIdx];
rxID = new NumberEdit(box, {0, 0, NUM_W, 0}, 0, getMaxRxNum(moduleIdx),
rxID = new NumberEdit(box, {0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 0, getMaxRxNum(moduleIdx),
GET_DEFAULT(*modelId), [=](int32_t newValue) {
if (newValue != *modelId) {
*modelId = newValue;
@@ -487,8 +487,6 @@ class ModuleWindow : public Window
uint8_t getModuleIdx() const { return moduleIdx; }
static LAYOUT_VAL(NUM_W, 60, 60, LS(60))
protected:
uint8_t moduleIdx;
@@ -34,7 +34,7 @@ PpmFrameSettings<T>::PpmFrameSettings(Window* parent, T* ppm) :
// PPM frame length
auto edit = new NumberEdit(
this, rect_t{0, 0, 80, 0}, 125, 35 * PPM_STEP_SIZE + PPM_DEF_PERIOD,
this, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 125, 35 * PPM_STEP_SIZE + PPM_DEF_PERIOD,
GET_DEFAULT(ppm->frameLength * PPM_STEP_SIZE + PPM_DEF_PERIOD),
SET_VALUE(ppm->frameLength, (newValue - PPM_DEF_PERIOD) / PPM_STEP_SIZE),
PREC1);
@@ -45,7 +45,7 @@ PpmFrameSettings<T>::PpmFrameSettings(Window* parent, T* ppm) :
this->ppmFrameLenEditObject = edit;
// PPM frame delay
edit = new NumberEdit(this, rect_t{0, 0, 80, 0}, 100, 800,
edit = new NumberEdit(this, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 100, 800,
GET_DEFAULT(ppm->delay * 50 + 300),
SET_VALUE(ppm->delay, (newValue - 300) / 50));
edit->setStep(50);
+1 -1
View File
@@ -100,7 +100,7 @@ HWPots::HWPots(Window* parent) :
new StaticText(this, {P_TYP_X, -PAD_TINY, 0, 0}, STR_TYPE, COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
new StaticText(this, {P_INV_X, -PAD_TINY, 0, 0}, STR_MENU_INVERT, COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
coord_t yo = EdgeTxStyles::PAGE_LINE_HEIGHT - 2;
coord_t yo = EdgeTxStyles::STD_FONT_HEIGHT - 2;
auto max_pots = adcGetMaxInputs(ADC_INPUT_FLEX);
for (int i = 0; i < max_pots; i++) {
+1 -1
View File
@@ -63,7 +63,7 @@ SerialConfigWindow::SerialConfigWindow(Window *parent, FlexGridLayout& grid)
if (port_nr != SP_VCP) {
grid.setColSpan(2);
auto line = parent->newLine(grid);
line->padLeft(WARN_PADL);
line->padLeft(PAD_LARGE * 2);
line->padBottom(PAD_MEDIUM);
new StaticText(line, rect_t{}, STR_TTL_WARNING, COLOR_THEME_WARNING_INDEX);
grid.setColSpan(1);
-2
View File
@@ -27,6 +27,4 @@ class SerialConfigWindow
{
public:
SerialConfigWindow(Window *parent, FlexGridLayout& grid);
static LAYOUT_VAL(WARN_PADL, 20, 20, LS(20));
};
@@ -157,17 +157,17 @@ PreviewWindow::PreviewWindow(Window *window, rect_t rect,
new StaticIcon(topbar, ICON_X3, ICON_Y, ICON_RADIO_SETUP,
COLOR_THEME_PRIMARY2_INDEX);
new StaticText(this, {ICON_X1, CBT_Y, CBT_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, STR_THEME_CHECKBOX);
new StaticText(this, {ICON_X1, CBT_Y, CBT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_CHECKBOX);
new ThemedCheckBox(this, {CB1_X, CB_Y, CB_W, 0}, true);
new ThemedCheckBox(this, {CB2_X, CB_Y, CB_W, 0}, false);
(new ThemedButton(this, {BTN_X, BTN1_Y, BTN_W, 0}, STR_THEME_ACTIVE, true))
->check(true);
new ThemedButton(this, {BTN_X, BTN2_Y, BTN_W, 0}, STR_THEME_REGULAR, false);
new MainViewTrim(this, {ICON_X1, TRIM_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, TRIM_H}, 0, false);
new MainViewSlider(this, {ICON_X1, SLIDER_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, TRIM_H}, 0, false);
new StaticText(this, {ICON_X1, TXT1_Y, TXT_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, STR_THEME_WARNING,
new MainViewTrim(this, {ICON_X1, TRIM_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, EdgeTxStyles::STD_FONT_HEIGHT}, 0, false);
new MainViewSlider(this, {ICON_X1, SLIDER_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, EdgeTxStyles::STD_FONT_HEIGHT}, 0, false);
new StaticText(this, {ICON_X1, TXT1_Y, TXT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_WARNING,
COLOR_THEME_WARNING_INDEX);
new StaticText(this, {ICON_X1, TXT2_Y, TXT_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, STR_THEME_DISABLED,
new StaticText(this, {ICON_X1, TXT2_Y, TXT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_DISABLED,
COLOR_THEME_DISABLED_INDEX);
new ThemedTextEdit(this, {ICON_X1, EDT_Y, TXT_W, 0}, STR_THEME_EDIT, true);
@@ -50,7 +50,6 @@ class PreviewWindow : public Window
static LAYOUT_VAL(BTN2_Y, 79, 79, LS(79))
static LAYOUT_VAL(BTN_W, 100, 100, LS(100))
static LAYOUT_VAL(TRIM_Y, 79, 79, LS(79))
static LAYOUT_VAL(TRIM_H, 20, 20, LS(20))
static LAYOUT_VAL(SLIDER_Y, 101, 101, LS(101))
static LAYOUT_VAL(TXT1_Y, 122, 122, LS(122))
static LAYOUT_VAL(TXT2_Y, 144, 144, LS(144))
@@ -35,9 +35,10 @@
#if !PORTRAIT_LCD
static const lv_coord_t col_dsc[] = {
LV_GRID_FR(30), LV_GRID_FR(30), LV_GRID_FR(40), LV_GRID_FR(40),
LV_GRID_FR(40), LV_GRID_FR(30), LV_GRID_FR(30), LV_GRID_FR(40),
LV_GRID_FR(40), LV_GRID_FR(40), LV_GRID_TEMPLATE_LAST};
LV_GRID_FR(32), LV_GRID_FR(40), LV_GRID_FR(40), LV_GRID_FR(40), LV_GRID_FR(40),
LV_GRID_FR(32), LV_GRID_FR(40), LV_GRID_FR(40), LV_GRID_FR(40), LV_GRID_FR(40),
LV_GRID_TEMPLATE_LAST
};
#else
@@ -45,8 +45,8 @@ class RadioCustSwitchesDiagsWindow : public Window
new StaticText(this, {FS_3RD_COLUMN, PAD_SMALL, 60, LV_SIZE_CONTENT},
"Led");
for (uint8_t i = 0; i < NUM_FUNCTIONS_SWITCHES; i += 1) {
coord_t y = 2 * EdgeTxStyles::PAGE_LINE_HEIGHT +
i * EdgeTxStyles::PAGE_LINE_HEIGHT;
coord_t y = 2 * EdgeTxStyles::STD_FONT_HEIGHT +
i * EdgeTxStyles::STD_FONT_HEIGHT;
new StaticText(this, {10, y, LV_SIZE_CONTENT, LV_SIZE_CONTENT},
STR_CHAR_SWITCH);
new StaticText(this, {25, y, LV_SIZE_CONTENT, LV_SIZE_CONTENT},
@@ -101,22 +101,22 @@ class RadioKeyDiagsWindow : public Window
auto lbl = lv_label_create(obj);
lv_label_set_text(lbl, keysGetLabel(k));
lv_obj_set_pos(lbl, 0, i * EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(lbl, 0, i * EdgeTxStyles::STD_FONT_HEIGHT);
lbl = lv_label_create(obj);
lv_label_set_text(lbl, "");
lv_obj_set_pos(lbl, 70, i * EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(lbl, 70, i * EdgeTxStyles::STD_FONT_HEIGHT);
keyValues[i] = lbl;
}
#if defined(ROTARY_ENCODER_NAVIGATION) && !defined(USE_HATS_AS_KEYS)
auto lbl = lv_label_create(obj);
lv_label_set_text(lbl, STR_ROTARY_ENCODER);
lv_obj_set_pos(lbl, 0, (i + 1) * EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(lbl, 0, (i + 1) * EdgeTxStyles::STD_FONT_HEIGHT);
reValue = lv_label_create(obj);
lv_label_set_text(reValue, "");
lv_obj_set_pos(reValue, 70, (i + 1) * EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(reValue, 70, (i + 1) * EdgeTxStyles::STD_FONT_HEIGHT);
#endif
}
@@ -132,7 +132,7 @@ class RadioKeyDiagsWindow : public Window
if (SWITCH_EXISTS(i)) {
auto lbl = lv_label_create(obj);
lv_label_set_text(lbl, "");
lv_obj_set_pos(lbl, 0, row * EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(lbl, 0, row * EdgeTxStyles::STD_FONT_HEIGHT);
switchValues[i] = lbl;
row += 1;
}
@@ -160,16 +160,16 @@ class RadioKeyDiagsWindow : public Window
lbl = lv_label_create(obj);
formatNumberAsString(s, 10, i + 1, 0, 10, "T");
lv_label_set_text(lbl, s);
lv_obj_set_pos(lbl, 4, i * EdgeTxStyles::PAGE_LINE_HEIGHT + EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(lbl, 4, i * EdgeTxStyles::STD_FONT_HEIGHT + EdgeTxStyles::STD_FONT_HEIGHT);
lbl = lv_label_create(obj);
lv_label_set_text(lbl, "");
lv_obj_set_pos(lbl, 60, i * EdgeTxStyles::PAGE_LINE_HEIGHT + EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(lbl, 60, i * EdgeTxStyles::STD_FONT_HEIGHT + EdgeTxStyles::STD_FONT_HEIGHT);
trimValues[i * 2] = lbl;
lbl = lv_label_create(obj);
lv_label_set_text(lbl, "");
lv_obj_set_pos(lbl, 75, i * EdgeTxStyles::PAGE_LINE_HEIGHT + EdgeTxStyles::PAGE_LINE_HEIGHT);
lv_obj_set_pos(lbl, 75, i * EdgeTxStyles::STD_FONT_HEIGHT + EdgeTxStyles::STD_FONT_HEIGHT);
trimValues[i * 2 + 1] = lbl;
}
}
@@ -99,12 +99,12 @@ static SetupLineDef setupLines[] = {
STR_BATTERY_RANGE,
[](Window* parent, coord_t x, coord_t y) {
auto batMin = new NumberEdit(
parent, {x, y, RadioHardwarePage::NUM_EDIT_W, 0}, -60 + 90, g_eeGeneral.vBatMax + 29 + 90,
parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, -60 + 90, g_eeGeneral.vBatMax + 29 + 90,
GET_SET_WITH_OFFSET(g_eeGeneral.vBatMin, 90), PREC1);
batMin->setSuffix("V");
new StaticText(parent, {x + RadioHardwarePage::NUM_EDIT_W + PAD_SMALL, y + PAD_SMALL + 1, PAD_LARGE, EdgeTxStyles::PAGE_LINE_HEIGHT}, "-");
new StaticText(parent, {x + EdgeTxStyles::EDIT_FLD_WIDTH_NARROW + PAD_SMALL, y + PAD_SMALL + 1, PAD_LARGE, EdgeTxStyles::STD_FONT_HEIGHT}, "-");
auto batMax = new NumberEdit(
parent, {x + RadioHardwarePage::NUM_EDIT_W + PAD_LARGE + PAD_SMALL, y, RadioHardwarePage::NUM_EDIT_W, 0}, g_eeGeneral.vBatMin - 29 + 120, 40 + 120,
parent, {x + EdgeTxStyles::EDIT_FLD_WIDTH_NARROW + PAD_LARGE + PAD_SMALL, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, g_eeGeneral.vBatMin - 29 + 120, 40 + 120,
GET_SET_WITH_OFFSET(g_eeGeneral.vBatMax, 120), PREC1);
batMax->setSuffix("V");
@@ -125,7 +125,7 @@ static SetupLineDef setupLines[] = {
// Bat calibration
STR_BATT_CALIB,
[](Window* parent, coord_t x, coord_t y) {
new BatCalEdit(parent, {x, y, RadioHardwarePage::NUM_EDIT_W, 0});
new BatCalEdit(parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0});
}
},
{
@@ -32,7 +32,6 @@ class RadioHardwarePage : public PageTab
void build(Window* window) override;
static LAYOUT_VAL(NUM_EDIT_W, 80, 74, LS(80))
static LAYOUT_VAL2(BTN_COLS, 4, 3)
static LAYOUT_VAL2(FS_BTN_COLS, 2, 2)
+13 -13
View File
@@ -76,7 +76,7 @@ class DateTimeWindow : public Window
// Absolute layout for date/time setion due to slow performance
// of lv_textarea in a flex layout.
static LAYOUT_VAL(DT_EDT_W, 80, 52, LS(80))
static LAYOUT_VAL2(DT_EDT_W, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 52)
static LAYOUT_VAL2(DT_Y2, PAD_TINY + EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_MEDIUM, PAD_TINY + EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_MEDIUM)
protected:
@@ -122,7 +122,7 @@ class DateTimeWindow : public Window
m_last_tm = m_tm;
// Date
new StaticText(this, rect_t{PAD_TINY, PAD_TINY + PAD_MEDIUM, SubPage::EDT_X - PAD_TINY - PAD_SMALL, EdgeTxStyles::PAGE_LINE_HEIGHT}, STR_DATE);
new StaticText(this, rect_t{PAD_TINY, PAD_TINY + PAD_MEDIUM, SubPage::EDT_X - PAD_TINY - PAD_SMALL, EdgeTxStyles::STD_FONT_HEIGHT}, STR_DATE);
year = new NumberEdit(
this, rect_t{SubPage::EDT_X, PAD_TINY, DT_EDT_W, 0}, 2023, 2037,
[=]() -> int32_t { return TM_YEAR_BASE + m_tm.tm_year; },
@@ -154,7 +154,7 @@ class DateTimeWindow : public Window
[](int32_t value) { return formatNumberAsString(value, LEADING0, 2); });
// Time
new StaticText(this, rect_t{PAD_TINY, DT_Y2 + PAD_MEDIUM, SubPage::EDT_X - PAD_TINY - PAD_SMALL, EdgeTxStyles::PAGE_LINE_HEIGHT}, STR_TIME);
new StaticText(this, rect_t{PAD_TINY, DT_Y2 + PAD_MEDIUM, SubPage::EDT_X - PAD_TINY - PAD_SMALL, EdgeTxStyles::STD_FONT_HEIGHT}, STR_TIME);
hour = new NumberEdit(
this, rect_t{SubPage::EDT_X, DT_Y2, DT_EDT_W, 0}, 0, 23,
[=]() -> int32_t { return m_tm.tm_hour; },
@@ -226,7 +226,7 @@ static SetupLineDef soundPageSetupLines[] = {
// Beeps pitch
STR_BEEP_PITCH,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(parent, rect_t{x, y, RadioSetupPage::NUM_W, 0}, 0, 300,
auto edit = new NumberEdit(parent, rect_t{x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 0, 300,
GET_DEFAULT(15 * g_eeGeneral.speakerPitch),
[=](int32_t newValue) {
g_eeGeneral.speakerPitch = newValue / 15;
@@ -270,7 +270,7 @@ static SetupLineDef varioPageSetupLines[] = {
STR_PITCH_AT_ZERO,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(
parent, {x, y, RadioSetupPage::NUM_W, 0}, VARIO_FREQUENCY_ZERO - 400, VARIO_FREQUENCY_ZERO + 400,
parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, VARIO_FREQUENCY_ZERO - 400, VARIO_FREQUENCY_ZERO + 400,
GET_DEFAULT(VARIO_FREQUENCY_ZERO + (g_eeGeneral.varioPitch * 10)),
SET_VALUE(g_eeGeneral.varioPitch,
(newValue - VARIO_FREQUENCY_ZERO) / 10));
@@ -282,7 +282,7 @@ static SetupLineDef varioPageSetupLines[] = {
STR_PITCH_AT_MAX,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(
parent, {x, y, RadioSetupPage::NUM_W, 0}, 900, 2500,
parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 900, 2500,
GET_DEFAULT(VARIO_FREQUENCY_ZERO + (g_eeGeneral.varioPitch * 10) +
VARIO_FREQUENCY_RANGE + (g_eeGeneral.varioRange * 10)),
SET_VALUE(
@@ -297,7 +297,7 @@ static SetupLineDef varioPageSetupLines[] = {
STR_REPEAT_AT_ZERO,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(
parent, {x, y, RadioSetupPage::NUM_W, 0}, 200, 1000,
parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 200, 1000,
GET_DEFAULT(VARIO_REPEAT_ZERO + (g_eeGeneral.varioRepeat * 10)),
SET_VALUE(g_eeGeneral.varioRepeat,
(newValue - VARIO_REPEAT_ZERO) / 10));
@@ -342,7 +342,7 @@ static SetupLineDef alarmsPageSetupLines[] = {
// Battery warning
STR_BATTERYWARNING,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(parent, {x, y, RadioSetupPage::NUM_W, 0}, 30, 120,
auto edit = new NumberEdit(parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 30, 120,
GET_SET_DEFAULT(g_eeGeneral.vBatWarn), PREC1);
edit->setSuffix("V");
}
@@ -351,7 +351,7 @@ static SetupLineDef alarmsPageSetupLines[] = {
// Inactivity alarm
STR_INACTIVITYALARM,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(parent, {x, y, RadioSetupPage::NUM_W * 3 / 2, 0}, 0, 250,
auto edit = new NumberEdit(parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW * 3 / 2, 0}, 0, 250,
GET_SET_DEFAULT(g_eeGeneral.inactivityTimer));
edit->setDisplayHandler([=](int value) -> std::string {
@@ -428,7 +428,7 @@ class BacklightPage : public SubPage
// Delay
backlightTimeout = setupLine(STR_BACKLIGHT_TIMER, [=](Window* parent, coord_t x, coord_t y) {
auto edit =
new NumberEdit(parent, {x, y, RadioSetupPage::NUM_W, 0}, 5, 600,
new NumberEdit(parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 5, 600,
GET_DEFAULT(g_eeGeneral.lightAutoOff * 5),
SET_VALUE(g_eeGeneral.lightAutoOff, newValue / 5));
edit->setStep(5);
@@ -536,7 +536,7 @@ static SetupLineDef gpsPageSetupLines[] = {
// Timezone
STR_TIMEZONE,
[](Window* parent, coord_t x, coord_t y) {
auto tz = new NumberEdit(parent, {x, y, RadioSetupPage::NUM_W, 0}, minTimezone(), maxTimezone(),
auto tz = new NumberEdit(parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, minTimezone(), maxTimezone(),
[]() {
return timezoneIndex(g_eeGeneral.timezone, g_eeGeneral.timezoneMinutes);
},
@@ -776,7 +776,7 @@ static SetupLineDef setupLines[] = {
{
STR_PWR_AUTO_OFF,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(parent,{x, y, RadioSetupPage::NUM_W, EdgeTxStyles::UI_ELEMENT_HEIGHT}, 0,
auto edit = new NumberEdit(parent,{x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, EdgeTxStyles::UI_ELEMENT_HEIGHT}, 0,
255, GET_SET_DEFAULT(g_eeGeneral.pwrOffIfInactive));
edit->setSuffix(" min");
}
@@ -846,7 +846,7 @@ static SetupLineDef setupLines[] = {
STR_SWITCHES_DELAY,
[](Window* parent, coord_t x, coord_t y) {
auto edit =
new NumberEdit(parent, {x, y, RadioSetupPage::NUM_W, 0}, 0, 100,
new NumberEdit(parent, {x, y, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, 0, 100,
GET_SET_VALUE_WITH_OFFSET(g_eeGeneral.switchesDelay, 15));
edit->setDisplayHandler([](int32_t value) {
return formatNumberAsString(value * 10, 0, 0, nullptr, STR_MS);
@@ -29,7 +29,6 @@ class RadioSetupPage: public PageTab {
void build(Window * window) override;
static LAYOUT_VAL(NUM_W, 80, 80, LS(80))
static LAYOUT_VAL2(BTN_COLS, 3, 2)
static LAYOUT_VAL(BTN_H, 62, 62, LS(62))
};
@@ -26,9 +26,9 @@
#define SET_DIRTY() storageDirty(EE_GENERAL)
constexpr coord_t SCALE_HEIGHT = 15;
constexpr coord_t FOOTER_HEIGHT = 32;
constexpr coord_t SPECTRUM_HEIGHT = LCD_H - EdgeTxStyles::MENU_HEADER_HEIGHT - SCALE_HEIGHT - FOOTER_HEIGHT;
LAYOUT_VAL3(VERT_SCALE, 1, 1, 1, 2)
LAYOUT_VAL(SCALE_HEIGHT, 15, 15, LS(15))
constexpr coord_t SPECTRUM_HEIGHT = LCD_H - EdgeTxStyles::MENU_HEADER_HEIGHT - SCALE_HEIGHT - EdgeTxStyles::UI_ELEMENT_HEIGHT;
coord_t getAverage(uint8_t number, const uint8_t* value)
{
@@ -36,7 +36,7 @@ coord_t getAverage(uint8_t number, const uint8_t* value)
for (uint8_t i = 0; i < number; i++) {
sum += value[i];
}
return sum / number;
return sum * VERT_SCALE / number;
}
class SpectrumFooterWindow : public Window
@@ -53,13 +53,13 @@ class SpectrumFooterWindow : public Window
// Frequency
sprintf(label, "T: %dMHz",
int(reusableBuffer.spectrumAnalyser.freq / 1000000));
(new StaticText(this, rect_t{PAD_TINY, 0, FLD_W, FOOTER_HEIGHT}, label))
(new StaticText(this, rect_t{PAD_TINY, 0, FLD_W, EdgeTxStyles::UI_ELEMENT_HEIGHT}, label))
->padTop(PAD_MEDIUM);
// Span
sprintf(label, "S: %dMHz",
int(reusableBuffer.spectrumAnalyser.span / 1000000));
(new StaticText(this, rect_t{PAD_TINY + FLD_W, 0, FLD_W, FOOTER_HEIGHT}, label))
(new StaticText(this, rect_t{PAD_TINY + FLD_W, 0, FLD_W, EdgeTxStyles::UI_ELEMENT_HEIGHT}, label))
->padTop(PAD_MEDIUM);
} else {
// Frequency
@@ -84,7 +84,7 @@ class SpectrumFooterWindow : public Window
// Tracker
auto tracker = new NumberEdit(
this, rect_t{(PAD_TINY + FLD_W) * 2, 0, FLD_W, FOOTER_HEIGHT},
this, rect_t{(PAD_TINY + FLD_W) * 2, 0, FLD_W, EdgeTxStyles::UI_ELEMENT_HEIGHT},
(reusableBuffer.spectrumAnalyser.freq -
reusableBuffer.spectrumAnalyser.span / 2) /
1000000,
@@ -307,7 +307,7 @@ void RadioSpectrumAnalyser::buildBody(Window* window)
new SpectrumWindow(window, {0, 0, LCD_W, SPECTRUM_HEIGHT});
new SpectrumScaleWindow(window, {0, SPECTRUM_HEIGHT, LCD_W, SCALE_HEIGHT});
new SpectrumFooterWindow(
window, {0, SPECTRUM_HEIGHT + SCALE_HEIGHT, LCD_W, FOOTER_HEIGHT},
window, {0, SPECTRUM_HEIGHT + SCALE_HEIGHT, LCD_W, EdgeTxStyles::UI_ELEMENT_HEIGHT},
moduleIdx);
}
@@ -322,7 +322,7 @@ void RadioSpectrumAnalyser::checkEvents()
if (x != trackX) {
trackX = x;
trackPts[0] = {(lv_coord_t)x, EdgeTxStyles::MENU_HEADER_HEIGHT};
trackPts[1] = {(lv_coord_t)x, (lv_coord_t)(height() - FOOTER_HEIGHT)};
trackPts[1] = {(lv_coord_t)x, (lv_coord_t)(height() - EdgeTxStyles::UI_ELEMENT_HEIGHT)};
lv_line_set_points(trackLine, trackPts, 2);
}
Page::checkEvents();
@@ -68,7 +68,7 @@ void RadioTrainerPage::build(Window* form)
new Choice(line, rect_t{}, STR_TRNMODE, 0, 2, GET_SET_DEFAULT(td->mode));
new Choice(line, rect_t{}, STR_TRNCHN, 0, 3, GET_SET_DEFAULT(td->srcChn));
auto weight = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, -125, 125,
auto weight = new NumberEdit(line, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, -125, 125,
GET_SET_DEFAULT(td->studWeight));
weight->setSuffix("%");
@@ -104,7 +104,7 @@ void RadioTrainerPage::build(Window* form)
LV_GRID_ALIGN_CENTER, 0, 1);
auto multiplier =
new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, -10, 40,
new NumberEdit(line, rect_t{0, 0, EdgeTxStyles::EDIT_FLD_WIDTH_NARROW, 0}, -10, 40,
GET_SET_DEFAULT(g_eeGeneral.PPM_Multiplier));
multiplier->setDisplayHandler(
[](int32_t value) { return formatNumberAsString(value + 10, PREC1); });
@@ -32,6 +32,4 @@ class RadioTrainerPage : public PageTab
bool isVisible() const override { return radioTrainerEnabled(); }
void build(Window* window) override;
static LAYOUT_VAL(NUM_EDIT_W, 80, 65, LS(80))
};
+2 -2
View File
@@ -146,7 +146,7 @@ StandaloneLuaWindow::StandaloneLuaWindow(bool useLvgl, int initFn, int runFn) :
etx_txt_color(lbl, COLOR_THEME_PRIMARY2_INDEX);
etx_font(lbl, FONT_XL_INDEX);
lv_obj_set_style_text_align(lbl, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
lv_obj_set_style_pad_top(lbl, (LCD_H - EdgeTxStyles::PAGE_LINE_HEIGHT) / 2, LV_PART_MAIN);
lv_obj_set_style_pad_top(lbl, (LCD_H - EdgeTxStyles::STD_FONT_HEIGHT) / 2, LV_PART_MAIN);
lv_label_set_text(lbl, STR_LOADING);
} else {
lcdBuffer = new BitmapBuffer(BMP_RGB565, LCD_W, LCD_H);
@@ -343,7 +343,7 @@ void StandaloneLuaWindow::popupPaint(BitmapBuffer* dc, coord_t x, coord_t y, coo
dc->drawSolidFilledRect(x, y + POPUP_HEADER_HEIGHT, w,
h - POPUP_HEADER_HEIGHT, COLOR_THEME_SECONDARY3);
dc->drawText(x + PAD_SMALL, y + POPUP_HEADER_HEIGHT + EdgeTxStyles::PAGE_LINE_HEIGHT, info,
dc->drawText(x + PAD_SMALL, y + POPUP_HEADER_HEIGHT + EdgeTxStyles::STD_FONT_HEIGHT, info,
COLOR_THEME_SECONDARY1);
}
@@ -195,7 +195,7 @@ class RadioInfoWidget : public TopBarWidget
static LAYOUT_VAL(W_AUDIO_SCALE_X, 15, 15, LS(15))
static LAYOUT_VAL(W_USB_X, 32, 32, LS(32))
static LAYOUT_VAL(W_USB_Y, 5, 5, 4)
static LAYOUT_VAL(W_LOG_X, 32, 32, LS(32))
static constexpr coord_t W_LOG_X = W_USB_X;
static LAYOUT_VAL(W_RSSI_X, 40, 40, LS(40))
static LAYOUT_VAL(W_RSSI_BAR_W, 4, 4, LS(4))
static LAYOUT_VAL(W_RSSI_BAR_H, 35, 35, LS(35))
@@ -96,7 +96,6 @@ LAYOUT_VAL(PROGRESS_H, 31, 31, LS(31))
LAYOUT_VAL(VERCHK_X, 168, 168, LS(168))
LAYOUT_VAL(VERCHK_Y, 138, 138, LS(138))
LAYOUT_VAL(VERCHK_H, 20, 20, LS(20))
LAYOUT_VAL(VERCHK_ICN_X, 78, 78, LS(78))
extern BitmapBuffer * lcd;
@@ -237,13 +236,13 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
lcd->drawText(VERCHK_X, VERCHK_Y, TR_BL_FORK, RIGHT | BL_FOREGROUND);
lcd->drawSizedText(VERCHK_X + PAD_MEDIUM, VERCHK_Y, tag.fork, 6, BL_FOREGROUND);
lcd->drawText(VERCHK_X, VERCHK_Y + VERCHK_H, TR_BL_VERSION, RIGHT | BL_FOREGROUND);
lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + VERCHK_H, tag.version, BL_FOREGROUND);
lcd->drawText(VERCHK_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, TR_BL_VERSION, RIGHT | BL_FOREGROUND);
lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, tag.version, BL_FOREGROUND);
lcd->drawText(VERCHK_X, VERCHK_Y + VERCHK_H * 2, TR_BL_RADIO, RIGHT | BL_FOREGROUND);
lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + VERCHK_H * 2, tag.flavour, BL_FOREGROUND);
lcd->drawText(VERCHK_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT * 2, TR_BL_RADIO, RIGHT | BL_FOREGROUND);
lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT * 2, tag.flavour, BL_FOREGROUND);
lcd->drawText(VERCHK_ICN_X, VERCHK_Y + VERCHK_H, LV_SYMBOL_OK, BL_GREEN);
lcd->drawText(VERCHK_ICN_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, LV_SYMBOL_OK, BL_GREEN);
}
}
}