chore(color): support alternative LCD sizes (320x240, 800x480) (#6012)
This commit is contained in:
@@ -42,7 +42,7 @@ ChannelBar::ChannelBar(Window* parent, const rect_t& rect, uint8_t channel,
|
||||
lv_obj_set_pos(bar, width() / 2, 0);
|
||||
lv_obj_set_size(bar, 0, height());
|
||||
|
||||
coord_t yo = (height() < 10) ? -1 : VAL_YO;
|
||||
coord_t yo = (height() < 10) ? -1 : -PAD_TINY;
|
||||
|
||||
valText = lv_label_create(lvobj);
|
||||
lv_obj_set_pos(valText, width() / 2 + VAL_XO, yo);
|
||||
|
||||
@@ -30,13 +30,12 @@ class ChannelBar : public Window
|
||||
std::function<int16_t()> getValue, LcdColorIndex barColorIndex,
|
||||
LcdColorIndex textColorIndex = COLOR_THEME_SECONDARY1_INDEX);
|
||||
|
||||
static LAYOUT_VAL(BAR_HEIGHT, 13, 13)
|
||||
static LAYOUT_VAL(BAR_HEIGHT, 13, 13, 9)
|
||||
|
||||
static LAYOUT_VAL(VAL_W, 45, 45)
|
||||
static LAYOUT_VAL(VAL_H, 14, 14)
|
||||
static LAYOUT_VAL(VAL_XO, 5, 5)
|
||||
static LAYOUT_VAL(VAL_YO, -2, -2)
|
||||
static LAYOUT_VAL(VAL_XT, -54, -54)
|
||||
static LAYOUT_VAL(VAL_W, 45, 45, LS(45))
|
||||
static LAYOUT_VAL(VAL_H, 14, 14, LS(14))
|
||||
static LAYOUT_VAL(VAL_XO, 5, 5, LS(5))
|
||||
static LAYOUT_VAL(VAL_XT, -54, -54, LS(-54))
|
||||
|
||||
protected:
|
||||
uint8_t channel = 0;
|
||||
@@ -82,7 +81,7 @@ class ComboChannelBar : public Window
|
||||
ComboChannelBar(Window* parent, const rect_t& rect, uint8_t channel,
|
||||
bool isInHeader = false);
|
||||
|
||||
static LAYOUT_VAL(ICON_SZ, 25, 25)
|
||||
static LAYOUT_VAL(ICON_SZ, 25, 25, 16)
|
||||
|
||||
protected:
|
||||
uint8_t channel;
|
||||
|
||||
@@ -173,7 +173,7 @@ class ColorBar : public FormField
|
||||
cursor_area.x2 = cursor_area.x1 + ColorEditor::CRSR_SZ - 1;
|
||||
|
||||
auto pos = bar->valueToScreen(bar->value);
|
||||
cursor_area.y1 = area->y1 + pos - ColorEditor::CRSR_YO;
|
||||
cursor_area.y1 = area->y1 + pos - PAD_THREE;
|
||||
cursor_area.y2 = cursor_area.y1 + ColorEditor::CRSR_SZ - 1;
|
||||
|
||||
lv_draw_rect_dsc_t cursor_dsc;
|
||||
@@ -221,9 +221,9 @@ class BarColorType : public ColorType
|
||||
|
||||
int leftPos = 0;
|
||||
rect_t r;
|
||||
r.y = ColorEditor::BAR_TOP_MARGIN;
|
||||
r.w = spacePerBar - ColorEditor::BAR_MARGIN - 5;
|
||||
r.h = parent->height() - (ColorEditor::BAR_TOP_MARGIN + ColorEditor::BAR_HEIGHT_OFFSET);
|
||||
r.y = ColorEditor::BAR_MARGIN;
|
||||
r.w = spacePerBar - ColorEditor::BAR_MARGIN;
|
||||
r.h = parent->height() - (ColorEditor::BAR_MARGIN + ColorEditor::BAR_HEIGHT_OFFSET);
|
||||
|
||||
for (int i = 0; i < MAX_BARS; i++) {
|
||||
r.x = leftPos + ColorEditor::BAR_MARGIN;
|
||||
@@ -237,7 +237,7 @@ class BarColorType : public ColorType
|
||||
auto y = bar->bottom();
|
||||
|
||||
barLabels[i] = create_bar_label(parent->getLvObj(), x, y + ColorEditor::LBL_YO);
|
||||
barValLabels[i] = create_bar_value_label(parent->getLvObj(), x + ColorEditor::VAL_XO, y + ColorEditor::VAL_YO);
|
||||
barValLabels[i] = create_bar_value_label(parent->getLvObj(), x + ColorEditor::VAL_XO, y + PAD_THREE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,14 +47,11 @@ class ColorEditor : public Window
|
||||
|
||||
void setColorEditorType(COLOR_EDITOR_TYPE colorType);
|
||||
|
||||
static LAYOUT_VAL(BAR_MARGIN, 5, 5)
|
||||
static LAYOUT_VAL(BAR_TOP_MARGIN, 5, 5)
|
||||
static LAYOUT_VAL(BAR_HEIGHT_OFFSET, 25, 25)
|
||||
static LAYOUT_VAL(LBL_YO, 9, 9)
|
||||
static LAYOUT_VAL(VAL_XO, 10, 10)
|
||||
static LAYOUT_VAL(VAL_YO, 3, 3)
|
||||
static LAYOUT_VAL(CRSR_SZ, 10, 10)
|
||||
static LAYOUT_VAL(CRSR_YO, 3, 3)
|
||||
static LAYOUT_VAL(BAR_MARGIN, 5, 5, 4)
|
||||
static LAYOUT_VAL(BAR_HEIGHT_OFFSET, 25, 25, 16)
|
||||
static LAYOUT_VAL(LBL_YO, 9, 9, 5)
|
||||
static LAYOUT_VAL(VAL_XO, 10, 10, 6)
|
||||
static LAYOUT_VAL(CRSR_SZ, 10, 10, 8)
|
||||
|
||||
protected:
|
||||
ColorType* _colorType = nullptr;
|
||||
|
||||
@@ -166,14 +166,14 @@ class ColorEditorPopup : public BaseDialog
|
||||
});
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(CE_SZ, 182, 182)
|
||||
static LAYOUT_VAL(COLOR_EDIT_WIDTH, LCD_W * 0.8, LCD_W * 0.7)
|
||||
static LAYOUT_VAL(COLOR_PAD_WIDTH, 52, 52)
|
||||
static LAYOUT_VAL(COLOR_PAD_HEIGHT, 32, 32)
|
||||
static LAYOUT_VAL(CVAL_W, 100, 100)
|
||||
static LAYOUT_VAL(BTN_W, 80, 80)
|
||||
static LAYOUT_VAL(BTN_PAD_TOP, 60, 60)
|
||||
static LAYOUT_VAL(BTN_PAD_ROW, 20, 20)
|
||||
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,
|
||||
|
||||
@@ -124,8 +124,8 @@ Curve::Curve(Window* parent, const rect_t& rect,
|
||||
std::function<int(int)> function, std::function<int()> position) :
|
||||
Window(parent, rect),
|
||||
base(this,
|
||||
rect_t{(position ? 4 : 2), (position ? 4 : 2),
|
||||
rect.w - (position ? 8 : 4), rect.h - (position ? 8 : 4)},
|
||||
rect_t{(position ? POS_PT_SZ / 2 : PAD_BORDER), (position ? POS_PT_SZ / 2 : PAD_BORDER),
|
||||
rect.w - (position ? POS_PT_SZ & 0xFE : PAD_BORDER * 2), rect.h - (position ? POS_PT_SZ & 0xFE : PAD_BORDER * 2)},
|
||||
function),
|
||||
valueFunc(std::move(function)),
|
||||
positionFunc(std::move(position))
|
||||
@@ -139,11 +139,11 @@ Curve::Curve(Window* parent, const rect_t& rect,
|
||||
// Adjust border - if drawing points leave more space to prevent clipping of
|
||||
// end points.
|
||||
if (positionFunc) {
|
||||
dx = 4;
|
||||
dy = 4;
|
||||
dx = POS_PT_SZ / 2;
|
||||
dy = POS_PT_SZ / 2;
|
||||
} else {
|
||||
dx = 2;
|
||||
dy = 2;
|
||||
dx = PAD_BORDER;
|
||||
dy = PAD_BORDER;
|
||||
}
|
||||
dw = rect.w - dx * 2;
|
||||
dh = rect.h - dy * 2;
|
||||
@@ -154,7 +154,7 @@ Curve::Curve(Window* parent, const rect_t& rect,
|
||||
etx_obj_add_style(p, styles->circle, LV_PART_MAIN);
|
||||
etx_obj_add_style(p, styles->border, LV_PART_MAIN);
|
||||
etx_obj_add_style(p, styles->border_color[COLOR_THEME_SECONDARY1_INDEX], LV_PART_MAIN);
|
||||
lv_obj_set_size(p, 9, 9);
|
||||
lv_obj_set_size(p, POS_PT_SZ, POS_PT_SZ);
|
||||
lv_obj_add_flag(p, LV_OBJ_FLAG_HIDDEN);
|
||||
pointDots[i] = p;
|
||||
}
|
||||
@@ -165,7 +165,7 @@ Curve::Curve(Window* parent, const rect_t& rect,
|
||||
posHLine = lv_line_create(lvobj);
|
||||
etx_obj_add_style(posHLine, styles->graph_position_line, LV_PART_MAIN);
|
||||
|
||||
positionValue = new StaticText(this, {10, 10, LV_SIZE_CONTENT, 17}, "", COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
|
||||
positionValue = new StaticText(this, {POS_LBL_X, POS_LBL_Y, LV_SIZE_CONTENT, POS_LBL_H}, "", COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
|
||||
positionValue->padLeft(PAD_TINY);
|
||||
positionValue->padRight(PAD_TINY);
|
||||
etx_solid_bg(positionValue->getLvObj(), COLOR_THEME_ACTIVE_INDEX);
|
||||
@@ -175,7 +175,7 @@ Curve::Curve(Window* parent, const rect_t& rect,
|
||||
etx_obj_add_style(posPoint, styles->circle, LV_PART_MAIN);
|
||||
etx_obj_add_style(posPoint, styles->border, LV_PART_MAIN);
|
||||
etx_obj_add_style(posPoint, styles->border_color[COLOR_THEME_ACTIVE_INDEX], LV_PART_MAIN);
|
||||
lv_obj_set_size(posPoint, 9, 9);
|
||||
lv_obj_set_size(posPoint, POS_PT_SZ, POS_PT_SZ);
|
||||
|
||||
updatePosition();
|
||||
}
|
||||
@@ -209,7 +209,7 @@ void Curve::updatePosition()
|
||||
lv_coord_t x = getPointX(valueX);
|
||||
lv_coord_t y = getPointY(valueY);
|
||||
|
||||
lv_obj_set_pos(posPoint, x - 4, y - 4);
|
||||
lv_obj_set_pos(posPoint, x - POS_PT_SZ / 2, y - POS_PT_SZ / 2);
|
||||
|
||||
posLinePoints[0] = {x, dy};
|
||||
posLinePoints[1] = {x, (lv_coord_t)(dy + dh - 1)};
|
||||
@@ -226,7 +226,7 @@ void Curve::addPoint(const point_t& point)
|
||||
int i = points.size();
|
||||
coord_t x = getPointX(point.x);
|
||||
coord_t y = getPointY(point.y);
|
||||
lv_obj_set_pos(pointDots[i], x - 4, y - 4);
|
||||
lv_obj_set_pos(pointDots[i], x - POS_PT_SZ / 2, y - POS_PT_SZ / 2);
|
||||
lv_obj_clear_flag(pointDots[i], LV_OBJ_FLAG_HIDDEN);
|
||||
|
||||
points.push_back(point);
|
||||
|
||||
@@ -67,7 +67,7 @@ class Curve : public Window
|
||||
protected:
|
||||
CurveRenderer base;
|
||||
// Drawing rectangle position & size
|
||||
uint8_t dx, dy, dw, dh;
|
||||
int16_t dx, dy, dw, dh;
|
||||
int lastPos = 0;
|
||||
std::function<int(int)> valueFunc;
|
||||
std::function<int()> positionFunc;
|
||||
@@ -85,4 +85,9 @@ class Curve : public Window
|
||||
coord_t getPointY(int y) const;
|
||||
|
||||
void checkEvents() override;
|
||||
|
||||
static LAYOUT_VAL(POS_LBL_X, 10, 10, LS(10))
|
||||
static LAYOUT_VAL(POS_LBL_Y, 10, 10, LS(10))
|
||||
static LAYOUT_VAL(POS_LBL_H, 17, 17, LS(17))
|
||||
static LAYOUT_VAL3(POS_PT_SZ, 9, 9, 7, 13)
|
||||
};
|
||||
|
||||
@@ -34,9 +34,9 @@ struct FMMatrix : public ButtonMatrix {
|
||||
bool isActive(uint8_t btn_id);
|
||||
void setTextAndState(uint8_t btn_id);
|
||||
|
||||
static LAYOUT_VAL(FM_BTN_W, 48, 48)
|
||||
static LAYOUT_VAL(FM_COLS, 5, 3)
|
||||
static LAYOUT_VAL(FM_ROWS, 2, 3)
|
||||
static LAYOUT_VAL(FM_BTN_W, 48, 48, LS(48))
|
||||
static LAYOUT_VAL2(FM_COLS, 5, 3)
|
||||
static LAYOUT_VAL2(FM_ROWS, 2, 3)
|
||||
};
|
||||
|
||||
extern template struct FMMatrix<ExpoData>;
|
||||
|
||||
@@ -43,8 +43,8 @@ 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)
|
||||
static LAYOUT_VAL(GV_BTN_W, 40, 40)
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 70, 70, LS(70))
|
||||
static LAYOUT_VAL(GV_BTN_W, 40, 40, LS(40))
|
||||
|
||||
protected:
|
||||
Choice* gvar_field = nullptr;
|
||||
|
||||
@@ -45,8 +45,8 @@ class SourceNumberEdit : public Window
|
||||
|
||||
void update();
|
||||
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 84, 84)
|
||||
static LAYOUT_VAL(SRC_BTN_W, 38, 38)
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 84, 84, LS(84))
|
||||
static LAYOUT_VAL(SRC_BTN_W, 38, 38, LS(38))
|
||||
|
||||
protected:
|
||||
Choice* source_field = nullptr;
|
||||
|
||||
@@ -134,7 +134,7 @@ class SourceChoiceMenuToolbar : public MenuToolbar
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(FILTER_COLUMNS, 3, 2)
|
||||
static LAYOUT_VAL2(FILTER_COLUMNS, 3, 2)
|
||||
|
||||
protected:
|
||||
MenuToolbarButton* invertBtn = nullptr;
|
||||
|
||||
@@ -30,20 +30,20 @@
|
||||
#if !defined(BOOT)
|
||||
|
||||
#define FONT_TABLE(name) \
|
||||
extern const etxLz4Font lv_font_##name##_bold_16; \
|
||||
extern const etxLz4Font lv_font_##name##_9; \
|
||||
extern const etxLz4Font lv_font_##name##_13; \
|
||||
extern const etxLz4Font lv_font_##name##_24; \
|
||||
extern const etxLz4Font lv_font_##name##_bold_32; \
|
||||
extern const etxLz4Font lv_font_##name##_bold_64; \
|
||||
extern const etxLz4Font lv_font_##name##_bold_STD; \
|
||||
extern const etxLz4Font lv_font_##name##_XXS; \
|
||||
extern const etxLz4Font lv_font_##name##_XS; \
|
||||
extern const etxLz4Font lv_font_##name##_L; \
|
||||
extern const etxLz4Font lv_font_##name##_bold_XL; \
|
||||
extern const etxLz4Font lv_font_##name##_bold_XXL; \
|
||||
static const etxLz4Font* lz4FontTable[FONTS_COUNT] = { \
|
||||
nullptr, /* FONT_STD_INDEX */ \
|
||||
&lv_font_##name##_bold_16, /* FONT_BOLD_INDEX */ \
|
||||
&lv_font_##name##_9, /* FONT_XXS_INDEX */ \
|
||||
&lv_font_##name##_13, /* FONT_XS_INDEX */ \
|
||||
&lv_font_##name##_24, /* FONT_L_INDEX */ \
|
||||
&lv_font_##name##_bold_32, /* FONT_XL_INDEX */ \
|
||||
&lv_font_##name##_bold_64, /* FONT_XXL_INDEX */ \
|
||||
nullptr, /* FONT_STD_INDEX */ \
|
||||
&lv_font_##name##_bold_STD, /* FONT_BOLD_INDEX */ \
|
||||
&lv_font_##name##_XXS, /* FONT_XXS_INDEX */ \
|
||||
&lv_font_##name##_XS, /* FONT_XS_INDEX */ \
|
||||
&lv_font_##name##_L, /* FONT_L_INDEX */ \
|
||||
&lv_font_##name##_bold_XL, /* FONT_XL_INDEX */ \
|
||||
&lv_font_##name##_bold_XXL, /* FONT_XXL_INDEX */ \
|
||||
}; \
|
||||
static const lv_font_t* lvglFontTable[FONTS_COUNT] = { \
|
||||
LV_FONT_DEFAULT, /* FONT_STD_INDEX */ \
|
||||
@@ -56,19 +56,19 @@
|
||||
}
|
||||
|
||||
#if defined(TRANSLATIONS_CN)
|
||||
FONT_TABLE(noto_cn);
|
||||
FONT_TABLE(cn);
|
||||
#elif defined(TRANSLATIONS_TW)
|
||||
FONT_TABLE(noto_tw);
|
||||
FONT_TABLE(tw);
|
||||
#elif defined(TRANSLATIONS_JP)
|
||||
FONT_TABLE(noto_jp);
|
||||
FONT_TABLE(jp);
|
||||
#elif defined(TRANSLATIONS_HE)
|
||||
FONT_TABLE(arimo_he);
|
||||
FONT_TABLE(he);
|
||||
#elif defined(TRANSLATIONS_RU)
|
||||
FONT_TABLE(arimo_ru);
|
||||
FONT_TABLE(ru);
|
||||
#elif defined(TRANSLATIONS_UA)
|
||||
FONT_TABLE(arimo_ua);
|
||||
FONT_TABLE(ua);
|
||||
#else
|
||||
FONT_TABLE(roboto);
|
||||
FONT_TABLE(en);
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -52,7 +52,7 @@ class ChoiceBase : public FormField
|
||||
|
||||
const char* getTitle() const { return menuTitle; }
|
||||
|
||||
static LAYOUT_VAL(ICON_W, 18, 18)
|
||||
static LAYOUT_VAL(ICON_W, 18, 18, LS(18))
|
||||
|
||||
protected:
|
||||
lv_obj_t *label;
|
||||
|
||||
@@ -69,10 +69,10 @@ LV_STYLE_CONST_SINGLE_INIT(EdgeTxStyles::pad_left_2, LV_STYLE_PAD_LEFT, 2);
|
||||
// Scrollbar
|
||||
const lv_style_const_prop_t scrollbar_props[] = {
|
||||
LV_STYLE_CONST_BG_OPA(LV_OPA_50),
|
||||
LV_STYLE_CONST_PAD_TOP(3),
|
||||
LV_STYLE_CONST_PAD_BOTTOM(3),
|
||||
LV_STYLE_CONST_PAD_LEFT(3),
|
||||
LV_STYLE_CONST_PAD_RIGHT(3),
|
||||
LV_STYLE_CONST_PAD_TOP(PAD_SCROLL),
|
||||
LV_STYLE_CONST_PAD_BOTTOM(PAD_SCROLL),
|
||||
LV_STYLE_CONST_PAD_LEFT(PAD_SCROLL),
|
||||
LV_STYLE_CONST_PAD_RIGHT(PAD_SCROLL),
|
||||
LV_STYLE_CONST_WIDTH(PAD_SMALL),
|
||||
LV_STYLE_PROP_INV,
|
||||
};
|
||||
@@ -88,9 +88,9 @@ const lv_style_const_prop_t pad_zero_props[] = {
|
||||
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::pad_zero, pad_zero_props);
|
||||
|
||||
const lv_style_const_prop_t pad_tiny_props[] = {
|
||||
LV_STYLE_CONST_PAD_TOP(2), LV_STYLE_CONST_PAD_BOTTOM(2),
|
||||
LV_STYLE_CONST_PAD_LEFT(2), LV_STYLE_CONST_PAD_RIGHT(2),
|
||||
LV_STYLE_CONST_PAD_ROW(2), LV_STYLE_CONST_PAD_COLUMN(2),
|
||||
LV_STYLE_CONST_PAD_TOP(PAD_TINY), LV_STYLE_CONST_PAD_BOTTOM(PAD_TINY),
|
||||
LV_STYLE_CONST_PAD_LEFT(PAD_TINY), LV_STYLE_CONST_PAD_RIGHT(PAD_TINY),
|
||||
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_tiny, pad_tiny_props);
|
||||
@@ -151,7 +151,7 @@ LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::pad_textarea, pad_textarea_props);
|
||||
// Border
|
||||
const lv_style_const_prop_t border_props[] = {
|
||||
LV_STYLE_CONST_BORDER_OPA(LV_OPA_COVER),
|
||||
LV_STYLE_CONST_BORDER_WIDTH(2),
|
||||
LV_STYLE_CONST_BORDER_WIDTH(PAD_BORDER),
|
||||
LV_STYLE_PROP_INV,
|
||||
};
|
||||
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::border, border_props);
|
||||
@@ -159,7 +159,7 @@ LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::border, border_props);
|
||||
// Border
|
||||
const lv_style_const_prop_t border_transparent_props[] = {
|
||||
LV_STYLE_CONST_BORDER_OPA(LV_OPA_TRANSP),
|
||||
LV_STYLE_CONST_BORDER_WIDTH(2),
|
||||
LV_STYLE_CONST_BORDER_WIDTH(PAD_BORDER),
|
||||
LV_STYLE_PROP_INV,
|
||||
};
|
||||
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::border_transparent,
|
||||
@@ -173,21 +173,13 @@ const lv_style_const_prop_t border_thin_props[] = {
|
||||
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::border_thin, border_thin_props);
|
||||
|
||||
static const lv_style_const_prop_t outline_props[] = {
|
||||
LV_STYLE_CONST_OUTLINE_WIDTH(2),
|
||||
LV_STYLE_CONST_OUTLINE_WIDTH(PAD_OUTLINE),
|
||||
LV_STYLE_CONST_OUTLINE_OPA(LV_OPA_COVER),
|
||||
LV_STYLE_CONST_OUTLINE_PAD(1),
|
||||
LV_STYLE_PROP_INV,
|
||||
};
|
||||
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::outline, outline_props);
|
||||
|
||||
static const lv_style_const_prop_t outline_thick_props[] = {
|
||||
LV_STYLE_CONST_OUTLINE_WIDTH(3),
|
||||
LV_STYLE_CONST_OUTLINE_OPA(LV_OPA_COVER),
|
||||
LV_STYLE_CONST_OUTLINE_PAD(1),
|
||||
LV_STYLE_PROP_INV,
|
||||
};
|
||||
LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::outline_thick, outline_thick_props);
|
||||
|
||||
// States (pressed, disabled, etc)
|
||||
static lv_color_t dark_color_filter_cb(const lv_color_filter_dsc_t* f,
|
||||
lv_color_t c, lv_opa_t opa)
|
||||
@@ -606,7 +598,7 @@ static void textarea_constructor(const lv_obj_class_t* class_p, lv_obj_t* obj)
|
||||
lv_textarea_set_one_line(obj, true);
|
||||
|
||||
lv_textarea_t* ta = (lv_textarea_t*)obj;
|
||||
lv_obj_set_height(ta->label, 21);
|
||||
lv_obj_set_height(ta->label, EdgeTxStyles::UI_ELEMENT_HEIGHT * 21 / 32);
|
||||
}
|
||||
|
||||
static const lv_obj_class_t textarea_class = {
|
||||
|
||||
@@ -33,30 +33,106 @@
|
||||
* Layout
|
||||
*********************/
|
||||
|
||||
#if LANDSCAPE_LCD_SML
|
||||
enum PaddingSize {
|
||||
PAD_ZERO = 0,
|
||||
PAD_TINY = 1,
|
||||
PAD_SMALL = 3,
|
||||
PAD_MEDIUM = 4,
|
||||
PAD_LARGE = 6,
|
||||
PAD_SCROLL = 2,
|
||||
PAD_THREE = PAD_SCROLL,
|
||||
PAD_TABLE_V = 3,
|
||||
PAD_TABLE_H = 2,
|
||||
PAD_OUTLINE = 1,
|
||||
PAD_BORDER = 2,
|
||||
};
|
||||
#elif LANDSCAPE_LCD_LRG
|
||||
enum PaddingSize {
|
||||
PAD_ZERO = 0,
|
||||
PAD_TINY = 3,
|
||||
PAD_SMALL = 6,
|
||||
PAD_MEDIUM = 9,
|
||||
PAD_LARGE = 12,
|
||||
PAD_SCROLL = 4,
|
||||
PAD_THREE = PAD_SCROLL,
|
||||
PAD_TABLE_V = 10,
|
||||
PAD_TABLE_H = 6,
|
||||
PAD_OUTLINE = 2,
|
||||
PAD_BORDER = 2,
|
||||
};
|
||||
#else
|
||||
enum PaddingSize {
|
||||
PAD_ZERO = 0,
|
||||
PAD_TINY = 2,
|
||||
PAD_TINY_GAP = 2,
|
||||
PAD_SMALL = 4,
|
||||
PAD_MEDIUM = 6,
|
||||
PAD_LARGE = 8
|
||||
PAD_LARGE = 8,
|
||||
PAD_SCROLL = 3,
|
||||
PAD_THREE = PAD_SCROLL,
|
||||
PAD_TABLE_V = 7,
|
||||
PAD_TABLE_H = 4,
|
||||
PAD_OUTLINE = 2,
|
||||
PAD_BORDER = 2,
|
||||
};
|
||||
#endif
|
||||
|
||||
// Macros for setting up layout values
|
||||
// LAYOUT_VAL - 2 values - landscape, portrait
|
||||
#if !defined(LANDSCAPE_LCD)
|
||||
# error "LANDSCAPE_LCD must be defined"
|
||||
#if !defined(LANDSCAPE_LCD_STD)
|
||||
# error "LANDSCAPE_LCD_STD must be defined"
|
||||
#endif
|
||||
|
||||
#if !defined(LANDSCAPE_LCD_SML)
|
||||
# error "LANDSCAPE_LCD_SML must be defined"
|
||||
#endif
|
||||
|
||||
#if !defined(LANDSCAPE_LCD_LRG)
|
||||
# error "LANDSCAPE_LCD_LRG must be defined"
|
||||
#endif
|
||||
|
||||
#if !defined(PORTRAIT_LCD)
|
||||
# error "PORTRAIT_LCD must be defined"
|
||||
#endif
|
||||
|
||||
#if LANDSCAPE_LCD
|
||||
#define LAYOUT_VAL(name, landscape, portrait) \
|
||||
// Macros for setting up layout values
|
||||
// LS - scaling factor to convert 480 wide landscape to 320 wide landscape
|
||||
// LAYOUT_VAL - 3 values - landscape, portrait, landscape small
|
||||
// - 800x480 size is calculated
|
||||
#define LS(val) ((val * 4 + 3) / 6)
|
||||
#if LANDSCAPE_LCD_STD
|
||||
#define LAYOUT_VAL(name, landscape, portrait, landscape_small) \
|
||||
constexpr coord_t name = landscape;
|
||||
#elif LANDSCAPE_LCD_SML
|
||||
#define LAYOUT_VAL(name, landscape, portrait, landscape_small) \
|
||||
constexpr coord_t name = landscape_small;
|
||||
#elif LANDSCAPE_LCD_LRG
|
||||
#define LAYOUT_VAL(name, landscape, portrait, landscape_small) \
|
||||
constexpr coord_t name = (((landscape) * 3 + 1) / 2);
|
||||
#else
|
||||
#define LAYOUT_VAL(name, landscape, portrait) \
|
||||
#define LAYOUT_VAL(name, landscape, portrait, landscape_small) \
|
||||
constexpr coord_t name = portrait;
|
||||
#endif
|
||||
|
||||
// Macro for value which only differ by orientation
|
||||
#if PORTRAIT_LCD
|
||||
#define LAYOUT_VAL2(name, landscape, portrait) \
|
||||
constexpr int name = portrait;
|
||||
#else
|
||||
#define LAYOUT_VAL2(name, landscape, portrait) \
|
||||
constexpr int name = landscape;
|
||||
#endif
|
||||
|
||||
// Macro for all values specified directly
|
||||
#if LANDSCAPE_LCD_STD
|
||||
#define LAYOUT_VAL3(name, landscape, portrait, landscape_small, landscape_big) \
|
||||
constexpr coord_t name = landscape;
|
||||
#elif LANDSCAPE_LCD_SML
|
||||
#define LAYOUT_VAL3(name, landscape, portrait, landscape_small, landscape_big) \
|
||||
constexpr coord_t name = landscape_small;
|
||||
#elif LANDSCAPE_LCD_LRG
|
||||
#define LAYOUT_VAL3(name, landscape, portrait, landscape_small, landscape_big) \
|
||||
constexpr coord_t name = landscape_big;
|
||||
#else
|
||||
#define LAYOUT_VAL3(name, landscape, portrait, landscape_small, landscape_big) \
|
||||
constexpr coord_t name = portrait;
|
||||
#endif
|
||||
|
||||
@@ -195,16 +271,15 @@ class EdgeTxStyles
|
||||
static const lv_style_t border_transparent;
|
||||
static const lv_style_t border_thin;
|
||||
static const lv_style_t outline;
|
||||
static const lv_style_t outline_thick;
|
||||
|
||||
|
||||
EdgeTxStyles();
|
||||
|
||||
void init();
|
||||
void applyColors();
|
||||
|
||||
static LAYOUT_VAL(PAGE_LINE_HEIGHT, 20, 20)
|
||||
static LAYOUT_VAL(UI_ELEMENT_HEIGHT, 32, 32)
|
||||
static LAYOUT_VAL(MENU_HEADER_HEIGHT, 45, 45)
|
||||
static LAYOUT_VAL(PAGE_LINE_HEIGHT, 20, 20, LS(20))
|
||||
static LAYOUT_VAL(UI_ELEMENT_HEIGHT, 32, 32, 24)
|
||||
static LAYOUT_VAL(MENU_HEADER_HEIGHT, 45, 45, LS(45))
|
||||
|
||||
protected:
|
||||
bool initDone = false;
|
||||
|
||||
@@ -87,7 +87,7 @@ class FileChoiceMenuToolbar : public MenuToolbar
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(FC_COLS, 3, 2)
|
||||
static LAYOUT_VAL2(FC_COLS, 3, 2)
|
||||
|
||||
protected:
|
||||
};
|
||||
|
||||
@@ -103,7 +103,7 @@ void FullScreenDialog::build()
|
||||
|
||||
if (!action.empty()) {
|
||||
auto btn = new TextButton(
|
||||
this, {(LCD_W - 280) / 2, LCD_H - 48, 280, 40}, action.c_str(),
|
||||
this, {(LCD_W - ONEBTN_W) / 2, LCD_H - ONEBTN_H - PAD_LARGE, ONEBTN_W, ONEBTN_H}, action.c_str(),
|
||||
[=]() {
|
||||
closeDialog();
|
||||
return 0;
|
||||
@@ -113,7 +113,7 @@ void FullScreenDialog::build()
|
||||
} else {
|
||||
if (type == WARNING_TYPE_CONFIRM) {
|
||||
auto btn = new TextButton(
|
||||
this, {LCD_W / 3 - 50, LCD_H - 48, 100, 40}, STR_EXIT,
|
||||
this, {LCD_W / 3 - TWOBTN_W / 2, LCD_H - TWOBTN_H - PAD_LARGE, TWOBTN_W, TWOBTN_H}, STR_EXIT,
|
||||
[=]() {
|
||||
deleteLater();
|
||||
return 0;
|
||||
@@ -121,7 +121,7 @@ void FullScreenDialog::build()
|
||||
etx_bg_color(btn->getLvObj(), COLOR_THEME_SECONDARY3_INDEX);
|
||||
etx_txt_color(btn->getLvObj(), COLOR_THEME_PRIMARY1_INDEX);
|
||||
btn = new TextButton(
|
||||
this, {LCD_W * 2 / 3 - 50, LCD_H - 48, 100, 40}, STR_OK,
|
||||
this, {LCD_W * 2 / 3 - TWOBTN_W / 2, LCD_H - TWOBTN_H - PAD_LARGE, TWOBTN_W, TWOBTN_H}, STR_OK,
|
||||
[=]() {
|
||||
closeDialog();
|
||||
return 0;
|
||||
|
||||
@@ -58,14 +58,22 @@ class FullScreenDialog : public Window
|
||||
|
||||
void closeDialog();
|
||||
|
||||
static LAYOUT_VAL(ALERT_FRAME_TOP, 50, 70)
|
||||
static LAYOUT_VAL(ALERT_FRAME_HEIGHT, LCD_H - 120, LCD_H - 2 * ALERT_FRAME_TOP)
|
||||
static LAYOUT_VAL(ALERT_BITMAP_TOP, ALERT_FRAME_TOP + 25, ALERT_FRAME_TOP + 15)
|
||||
static LAYOUT_VAL(ALERT_BITMAP_LEFT, 20, 15)
|
||||
static LAYOUT_VAL(ALERT_TITLE_TOP, ALERT_FRAME_TOP + 5, ALERT_FRAME_TOP + 10)
|
||||
static LAYOUT_VAL(ALERT_TITLE_LEFT, 146, 140)
|
||||
static LAYOUT_VAL(ALERT_MESSAGE_TOP, ALERT_TITLE_TOP + 85, ALERT_TITLE_TOP + 130)
|
||||
static LAYOUT_VAL(ALERT_MESSAGE_LEFT, ALERT_TITLE_LEFT, 15)
|
||||
static LAYOUT_VAL(ALERT_FRAME_TOP, 50, 70, LS(50))
|
||||
static LAYOUT_VAL(ALERT_FRAME_HO, 120, 2 * ALERT_FRAME_TOP, LS(120))
|
||||
static constexpr coord_t ALERT_FRAME_HEIGHT = LCD_H - ALERT_FRAME_HO;
|
||||
static LAYOUT_VAL(ALERT_BMO, 25, 15, LS(25))
|
||||
static constexpr coord_t ALERT_BITMAP_TOP = ALERT_FRAME_TOP + ALERT_BMO;
|
||||
static LAYOUT_VAL(ALERT_BITMAP_LEFT, 20, 15, LS(20))
|
||||
static LAYOUT_VAL(ALERT_TO, 5, 10, LS(5))
|
||||
static constexpr coord_t ALERT_TITLE_TOP = ALERT_FRAME_TOP + ALERT_TO;
|
||||
static LAYOUT_VAL(ALERT_TITLE_LEFT, 146, 140, LS(146))
|
||||
static LAYOUT_VAL(ALERT_MO, 85, 130, LS(85))
|
||||
static constexpr coord_t ALERT_MESSAGE_TOP = ALERT_TITLE_TOP + ALERT_MO;
|
||||
static LAYOUT_VAL2(ALERT_MESSAGE_LEFT, ALERT_TITLE_LEFT, 15)
|
||||
static LAYOUT_VAL(ONEBTN_W, 280, 280, LS(280))
|
||||
static LAYOUT_VAL(ONEBTN_H, 40, 40, LS(40))
|
||||
static LAYOUT_VAL(TWOBTN_W, 100, 100, LS(100))
|
||||
static LAYOUT_VAL(TWOBTN_H, 40, 40, LS(40))
|
||||
|
||||
protected:
|
||||
uint8_t type;
|
||||
|
||||
@@ -38,7 +38,7 @@ static const lv_obj_class_t input_mix_line_class = {
|
||||
.destructor_cb = nullptr,
|
||||
.user_data = nullptr,
|
||||
.event_cb = nullptr,
|
||||
.width_def = LV_PCT(100),
|
||||
.width_def = ListLineButton::GRP_W,
|
||||
.height_def = ListLineButton::BTN_H,
|
||||
.editable = LV_OBJ_CLASS_EDITABLE_INHERIT,
|
||||
.group_def = LV_OBJ_CLASS_GROUP_DEF_TRUE,
|
||||
@@ -181,7 +181,7 @@ void InputMixButtonBase::setFlightModes(uint16_t modes)
|
||||
if (fm_modes & (1 << i)) {
|
||||
label_dsc.color = lv_color_make(0x7f, 0x7f, 0x7f);
|
||||
} else {
|
||||
lv_canvas_draw_rect(fm_canvas, x, 0, FM_W, 3, &rect_dsc);
|
||||
lv_canvas_draw_rect(fm_canvas, x, 0, FM_W, PAD_THREE, &rect_dsc);
|
||||
label_dsc.color = lv_color_white();
|
||||
}
|
||||
lv_canvas_draw_text(fm_canvas, x, 0, FM_W, &label_dsc, s);
|
||||
@@ -226,15 +226,15 @@ InputMixGroupBase::InputMixGroupBase(Window* parent, mixsrc_t idx) :
|
||||
|
||||
void InputMixGroupBase::adjustHeight()
|
||||
{
|
||||
if (getLineCount() == 0) setHeight(ListLineButton::BTN_H + 8);
|
||||
if (getLineCount() == 0) setHeight(ListLineButton::BTN_H + PAD_SMALL * 2);
|
||||
|
||||
coord_t y = 2;
|
||||
coord_t y = PAD_OUTLINE;
|
||||
for (auto it = lines.cbegin(); it != lines.cend(); ++it) {
|
||||
auto line = *it;
|
||||
line->updatePos(InputMixButtonBase::LN_X, y);
|
||||
y += line->height() + 2;
|
||||
y += line->height() + PAD_OUTLINE;
|
||||
}
|
||||
setHeight(y + 4);
|
||||
setHeight(y + PAD_BORDER * 2);
|
||||
}
|
||||
|
||||
void InputMixGroupBase::addLine(InputMixButtonBase* line)
|
||||
|
||||
@@ -37,7 +37,7 @@ class ListLineButton : public ButtonBase
|
||||
|
||||
virtual void refresh() = 0;
|
||||
|
||||
static LAYOUT_VAL(BTN_H, 29, 29)
|
||||
static LAYOUT_VAL(BTN_H, 29, 29, LS(29))
|
||||
static constexpr coord_t GRP_W = LCD_W - PAD_SMALL * 2;
|
||||
|
||||
protected:
|
||||
@@ -61,26 +61,26 @@ class InputMixButtonBase : public ListLineButton
|
||||
virtual void swapLvglGroup(InputMixButtonBase* line2) = 0;
|
||||
|
||||
// total: 90 x 17
|
||||
static LAYOUT_VAL(FM_CANVAS_HEIGHT, 17, 17)
|
||||
static LAYOUT_VAL(FM_CANVAS_WIDTH, 90, 90)
|
||||
static LAYOUT_VAL(FM_CANVAS_HEIGHT, 17, 17, LS(17))
|
||||
static LAYOUT_VAL(FM_CANVAS_WIDTH, 90, 90, 57)
|
||||
|
||||
static LAYOUT_VAL(BTN_W, 395, 235)
|
||||
static LAYOUT_VAL(LN_X, 73, 73, LS(73))
|
||||
static constexpr coord_t BTN_W = ListLineButton::GRP_W - LN_X - PAD_BORDER * 2 - PAD_OUTLINE;
|
||||
static constexpr coord_t WGT_X = PAD_TINY;
|
||||
static constexpr coord_t WGT_Y = PAD_TINY;
|
||||
static LAYOUT_VAL(WGT_W, 50, 50)
|
||||
static LAYOUT_VAL(WGT_H, 21, 21)
|
||||
static LAYOUT_VAL(WGT_W, 50, 50, LS(50))
|
||||
static LAYOUT_VAL(WGT_H, 21, 21, LS(21))
|
||||
static constexpr coord_t SRC_X = WGT_X + WGT_W + PAD_TINY;
|
||||
static constexpr coord_t SRC_Y = WGT_Y;
|
||||
static LAYOUT_VAL(SRC_W, 70, 69)
|
||||
static LAYOUT_VAL(SRC_W, 70, 69, LS(70))
|
||||
static constexpr coord_t SRC_H = WGT_H;
|
||||
static constexpr coord_t OPT_X = SRC_X + SRC_W + PAD_TINY;
|
||||
static constexpr coord_t OPT_Y = WGT_Y;
|
||||
static LAYOUT_VAL(OPT_W, 164, 99)
|
||||
static LAYOUT_VAL2(OPT_W, BTN_W - PAD_BORDER * 2 - WGT_W - SRC_W - FM_CANVAS_WIDTH - PAD_TINY * 5, 99)
|
||||
static constexpr coord_t OPT_H = WGT_H;
|
||||
static LAYOUT_VAL(LN_X, 73, 73)
|
||||
static LAYOUT_VAL(FM_X, (OPT_X + OPT_W + PAD_TINY), 12)
|
||||
static LAYOUT_VAL(FM_Y, (WGT_Y + PAD_TINY), (WGT_Y + WGT_H + PAD_TINY))
|
||||
static LAYOUT_VAL(FM_W, 8, 8)
|
||||
static LAYOUT_VAL2(FM_X, BTN_W - PAD_BORDER * 2 - PAD_TINY - FM_CANVAS_WIDTH, 12)
|
||||
static LAYOUT_VAL2(FM_Y, (WGT_Y + PAD_TINY), (WGT_Y + WGT_H + PAD_TINY))
|
||||
static LAYOUT_VAL(FM_W, 8, 8, 5)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@ void ListBox::onDrawEnd(uint16_t row, uint16_t col, lv_obj_draw_part_dsc_t* dsc)
|
||||
yo = (lv_area_get_height(dsc->draw_area) - h) / 2;
|
||||
}
|
||||
|
||||
coords.x2 = dsc->draw_area->x2 - xo;
|
||||
coords.x2 = dsc->draw_area->x2 - xo - PAD_MEDIUM;
|
||||
coords.x1 = coords.x2 - w + 1;
|
||||
coords.y1 = dsc->draw_area->y1 + yo;
|
||||
coords.y2 = coords.y1 + h - 1;
|
||||
|
||||
@@ -76,7 +76,7 @@ class ListBox : public TableField
|
||||
std::string getName() const override { return "ListBox"; }
|
||||
#endif
|
||||
|
||||
static LAYOUT_VAL(MENUS_LINE_HEIGHT, 35, 35)
|
||||
static LAYOUT_VAL(MENUS_LINE_HEIGHT, 35, 35, LS(35))
|
||||
|
||||
protected:
|
||||
static void event_cb(lv_event_t* e);
|
||||
|
||||
@@ -45,8 +45,8 @@ class MenuToolbar : public Window
|
||||
|
||||
virtual void longPress() {}
|
||||
|
||||
static LAYOUT_VAL(MENUS_TOOLBAR_BUTTON_WIDTH, 36, 36)
|
||||
static LAYOUT_VAL(MENUS_MAX_HEIGHT, ListBox::MENUS_LINE_HEIGHT * 7 + 8, ListBox::MENUS_LINE_HEIGHT * 10)
|
||||
static LAYOUT_VAL(MENUS_TOOLBAR_BUTTON_WIDTH, 36, 36, LS(36))
|
||||
static LAYOUT_VAL3(MENUS_MAX_HEIGHT, ListBox::MENUS_LINE_HEIGHT * 7 + PAD_LARGE, ListBox::MENUS_LINE_HEIGHT * 10, ListBox::MENUS_LINE_HEIGHT * 8 + PAD_LARGE, ListBox::MENUS_LINE_HEIGHT * 8 + PAD_LARGE)
|
||||
|
||||
protected:
|
||||
Choice* choice;
|
||||
|
||||
@@ -232,7 +232,7 @@ void NumberEdit::openEdit()
|
||||
if (edit == nullptr) {
|
||||
edit = new NumberArea(
|
||||
this,
|
||||
{-(PAD_MEDIUM + 2), -(PAD_TINY + 2),
|
||||
{-(PAD_MEDIUM + 2), -(PAD_BORDER * 2),
|
||||
lv_obj_get_width(lvobj), lv_obj_get_height(lvobj)});
|
||||
edit->setChangeHandler([=]() {
|
||||
update();
|
||||
|
||||
@@ -91,7 +91,7 @@ class NumberEdit : public TextButton
|
||||
|
||||
int32_t getValue() const { return _getValue != nullptr ? _getValue() : 0; }
|
||||
|
||||
static LAYOUT_VAL(DEF_W, 100, 100)
|
||||
static LAYOUT_VAL(DEF_W, 100, 100, LS(100))
|
||||
|
||||
protected:
|
||||
friend class NumberArea;
|
||||
|
||||
@@ -36,7 +36,7 @@ class PageHeader : public Window
|
||||
void setTitle(std::string txt) { title->setText(std::move(txt)); }
|
||||
StaticText* setTitle2(std::string txt);
|
||||
|
||||
static LAYOUT_VAL(PAGE_TITLE_LEFT, 50, 50)
|
||||
static LAYOUT_VAL(PAGE_TITLE_LEFT, 50, 50, LS(50))
|
||||
static constexpr coord_t PAGE_TITLE_TOP = 2;
|
||||
|
||||
protected:
|
||||
@@ -76,7 +76,7 @@ class SubPage : public Page
|
||||
|
||||
Window* setupLine(const char* title, std::function<void(Window*, coord_t, coord_t)> createEdit, coord_t lblYOffset = 0);
|
||||
|
||||
static LAYOUT_VAL(EDT_X, 220, 144)
|
||||
static LAYOUT_VAL(EDT_X, 220, 144, LS(220))
|
||||
|
||||
protected:
|
||||
coord_t y = 0;
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
const lv_style_const_prop_t table_cell_props[] = {
|
||||
LV_STYLE_CONST_BORDER_WIDTH(1),
|
||||
LV_STYLE_CONST_BORDER_SIDE(LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM),
|
||||
LV_STYLE_CONST_PAD_TOP(7), LV_STYLE_CONST_PAD_BOTTOM(7),
|
||||
LV_STYLE_CONST_PAD_LEFT(4), LV_STYLE_CONST_PAD_RIGHT(4),
|
||||
LV_STYLE_CONST_PAD_TOP(PAD_TABLE_V), LV_STYLE_CONST_PAD_BOTTOM(PAD_TABLE_V),
|
||||
LV_STYLE_CONST_PAD_LEFT(PAD_TABLE_H), LV_STYLE_CONST_PAD_RIGHT(PAD_TABLE_H),
|
||||
LV_STYLE_PROP_INV,
|
||||
};
|
||||
LV_STYLE_CONST_MULTI_INIT(table_cell, table_cell_props);
|
||||
|
||||
@@ -63,8 +63,8 @@ class SelectedTabIcon : public StaticIcon
|
||||
std::string getName() const override { return "SelectedTabIcon"; }
|
||||
#endif
|
||||
|
||||
static LAYOUT_VAL(SEL_DOT_X, 10, 10)
|
||||
static LAYOUT_VAL(SEL_DOT_Y, 39, 39)
|
||||
static LAYOUT_VAL(SEL_DOT_X, 10, 10, 6)
|
||||
static LAYOUT_VAL(SEL_DOT_Y, 39, 39, LS(39))
|
||||
};
|
||||
|
||||
class TabsGroupButton : public ButtonBase
|
||||
@@ -101,7 +101,7 @@ class TabsGroupButton : public ButtonBase
|
||||
pageTab->update(index);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(ICON_Y, 7, 7)
|
||||
static LAYOUT_VAL(ICON_Y, 7, 7, LS(7))
|
||||
|
||||
protected:
|
||||
PageTab* pageTab;
|
||||
@@ -227,9 +227,9 @@ class TabsGroupHeader : public Window
|
||||
bool isCurrent(uint8_t idx) const { return currentIndex == idx; }
|
||||
uint8_t tabCount() const { return buttons.size(); }
|
||||
|
||||
static LAYOUT_VAL(DATE_XO, 48, 48)
|
||||
static LAYOUT_VAL(MENU_HEADER_BUTTON_WIDTH, 33, 33)
|
||||
static LAYOUT_VAL(HDR_DATE_FULL_WIDTH, 51, 51)
|
||||
static LAYOUT_VAL(DATE_XO, 48, 48, LS(48))
|
||||
static LAYOUT_VAL(MENU_HEADER_BUTTON_WIDTH, 33, 33, LS(33))
|
||||
static LAYOUT_VAL(HDR_DATE_FULL_WIDTH, 51, 51, LS(51))
|
||||
|
||||
protected:
|
||||
uint8_t currentIndex = 0;
|
||||
|
||||
@@ -87,8 +87,8 @@ class TabsGroup : public NavWindow
|
||||
void onClicked() override;
|
||||
void onCancel() override;
|
||||
|
||||
static LAYOUT_VAL(MENU_TITLE_TOP, 48, 48)
|
||||
static LAYOUT_VAL(MENU_TITLE_HEIGHT, 21, 21)
|
||||
static LAYOUT_VAL(MENU_TITLE_TOP, 48, 48, LS(48))
|
||||
static LAYOUT_VAL(MENU_TITLE_HEIGHT, 21, 21, LS(21))
|
||||
static constexpr coord_t MENU_BODY_TOP = MENU_TITLE_TOP + MENU_TITLE_HEIGHT;
|
||||
static constexpr coord_t MENU_BODY_HEIGHT = LCD_H - MENU_BODY_TOP;
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ void TextEdit::openEdit()
|
||||
{
|
||||
if (edit == nullptr) {
|
||||
edit = new TextArea(this,
|
||||
{-(PAD_MEDIUM + 2), -(PAD_TINY + 2),
|
||||
{-(PAD_MEDIUM + 2), -(PAD_BORDER * 2),
|
||||
lv_obj_get_width(lvobj), lv_obj_get_height(lvobj)},
|
||||
text, length);
|
||||
edit->setChangeHandler([=]() {
|
||||
@@ -167,7 +167,7 @@ void TextEdit::openEdit()
|
||||
void TextEdit::preview(bool edited, char* text, uint8_t length)
|
||||
{
|
||||
edit = new TextArea(this,
|
||||
{-(PAD_MEDIUM + 2), -(PAD_TINY + 2), width(), height()},
|
||||
{-(PAD_MEDIUM + 2), -(PAD_BORDER * 2), width(), height()},
|
||||
text, length);
|
||||
lv_group_focus_obj(edit->getLvObj());
|
||||
lv_obj_clear_flag(lvobj, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
@@ -36,7 +36,7 @@ class TextEdit : public TextButton
|
||||
void preview(bool edited, char* text, uint8_t length);
|
||||
void update();
|
||||
|
||||
static LAYOUT_VAL(DEF_W, 100, 100)
|
||||
static LAYOUT_VAL(DEF_W, 100, 100, 70)
|
||||
|
||||
protected:
|
||||
std::function<void(void)> updateHandler = nullptr;
|
||||
|
||||
@@ -48,7 +48,7 @@ class ToggleSwitch : public FormField
|
||||
|
||||
void update() const;
|
||||
|
||||
static LAYOUT_VAL(TOGGLE_W, 52, 52)
|
||||
static LAYOUT_VAL(TOGGLE_W, 52, 52, 40)
|
||||
|
||||
protected:
|
||||
std::function<uint8_t()> _getValue;
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <stdint.h>
|
||||
#if !defined(LV_SKIP_DEFINES)
|
||||
#include "definitions.h"
|
||||
#include "hal.h"
|
||||
#endif
|
||||
|
||||
/*====================
|
||||
@@ -415,57 +416,29 @@
|
||||
#if !defined(BOOT)
|
||||
|
||||
#if defined(TRANSLATIONS_CN)
|
||||
#define LV_FONT_CUSTOM_DECLARE \
|
||||
LV_FONT_DECLARE(lv_font_noto_cn_16)
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_noto_cn_16
|
||||
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_cn_STD)
|
||||
#define LV_FONT_DEFAULT &lv_font_cn_STD
|
||||
#elif defined(TRANSLATIONS_TW)
|
||||
#define LV_FONT_CUSTOM_DECLARE \
|
||||
LV_FONT_DECLARE(lv_font_noto_tw_16)
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_noto_tw_16
|
||||
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_tw_STD)
|
||||
#define LV_FONT_DEFAULT &lv_font_tw_STD
|
||||
#elif defined(TRANSLATIONS_RU)
|
||||
#define LV_FONT_CUSTOM_DECLARE \
|
||||
LV_FONT_DECLARE(lv_font_arimo_ru_16)
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_arimo_ru_16
|
||||
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_ru_STD)
|
||||
#define LV_FONT_DEFAULT &lv_font_ru_STD
|
||||
#elif defined(TRANSLATIONS_JP)
|
||||
#define LV_FONT_CUSTOM_DECLARE \
|
||||
LV_FONT_DECLARE(lv_font_noto_jp_16)
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_noto_jp_16
|
||||
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_jp_STD)
|
||||
#define LV_FONT_DEFAULT &lv_font_jp_STD
|
||||
#elif defined(TRANSLATIONS_HE)
|
||||
#define LV_FONT_CUSTOM_DECLARE \
|
||||
LV_FONT_DECLARE(lv_font_arimo_he_16)
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_arimo_he_16
|
||||
|
||||
#elif defined(TRANSLATIONS_UA)
|
||||
#define LV_FONT_CUSTOM_DECLARE \
|
||||
LV_FONT_DECLARE(lv_font_arimo_ua_16)
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_arimo_ua_16
|
||||
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_he_STD)
|
||||
#define LV_FONT_DEFAULT &lv_font_he_STD
|
||||
#else
|
||||
#define LV_FONT_CUSTOM_DECLARE \
|
||||
LV_FONT_DECLARE(lv_font_roboto_16)
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_roboto_16
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_en_STD)
|
||||
#define LV_FONT_DEFAULT &lv_font_en_STD
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* Bootloader font */
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_roboto_bl_16)
|
||||
#define LV_FONT_DEFAULT &lv_font_roboto_bl_16
|
||||
/* Bootloader font */
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_bl)
|
||||
#define LV_FONT_DEFAULT &lv_font_bl
|
||||
#endif
|
||||
|
||||
/*Enable handling large font and/or fonts with a lot of characters.
|
||||
|
||||
@@ -77,11 +77,11 @@ class LayoutFactory
|
||||
|
||||
WidgetsContainer* createCustomScreen(unsigned customScreenIndex) const;
|
||||
|
||||
static LAYOUT_VAL(TRIM_LINE_WIDTH, 8, 8)
|
||||
static LAYOUT_VAL(TRIM_SQUARE_SIZE, 17, 17)
|
||||
static LAYOUT_VAL(TRIM_LINE_WIDTH, 8, 8, LS(8))
|
||||
static LAYOUT_VAL(TRIM_SQUARE_SIZE, 17, 17, 13)
|
||||
|
||||
static LAYOUT_VAL(BM_W, 51, 22)
|
||||
static LAYOUT_VAL(BM_H, 25, 34)
|
||||
static LAYOUT_VAL(BM_W, 51, 22, LS(51))
|
||||
static LAYOUT_VAL(BM_H, 25, 34, LS(25))
|
||||
|
||||
protected:
|
||||
const char* id;
|
||||
|
||||
@@ -108,7 +108,7 @@ class Layout: public LayoutBase
|
||||
|
||||
bool isLayout() override { return true; }
|
||||
|
||||
static LAYOUT_VAL(MAIN_ZONE_BORDER, 10, 10)
|
||||
static LAYOUT_VAL(MAIN_ZONE_BORDER, 10, 10, 6)
|
||||
|
||||
protected:
|
||||
const LayoutFactory * factory = nullptr;
|
||||
|
||||
@@ -123,7 +123,7 @@ class ThemeView : public Window
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(PREVIEW_W, (LCD_W - PAD_MEDIUM * 3) / 2, LCD_W - 12)
|
||||
static LAYOUT_VAL2(PREVIEW_W, (LCD_W - PAD_MEDIUM * 3) / 2, LCD_W - 12)
|
||||
|
||||
protected:
|
||||
Window* details = nullptr;
|
||||
|
||||
@@ -35,7 +35,7 @@ class ScreenUserInterfacePage : public PageTab
|
||||
|
||||
void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(WWBTN_W, 60, 60)
|
||||
static LAYOUT_VAL(WWBTN_W, 60, 60, LS(60))
|
||||
|
||||
protected:
|
||||
ScreenMenu* menu;
|
||||
|
||||
@@ -37,10 +37,10 @@ class SelectFabCarousel : public Window
|
||||
void addButton(EdgeTxIcon icon, const char* title,
|
||||
std::function<uint8_t(void)> pressHandler);
|
||||
|
||||
static LAYOUT_VAL(FAB_BUTTON_WIDTH, 80, 80)
|
||||
static LAYOUT_VAL(FAB_BUTTON_HEIGHT, 114, 114)
|
||||
static LAYOUT_VAL(FAB_BUTTON_WIDTH, 80, 80, 54)
|
||||
static LAYOUT_VAL(FAB_BUTTON_HEIGHT, 114, 114, 78)
|
||||
|
||||
static LAYOUT_VAL(FAB_ICON_SIZE, 52, 52)
|
||||
static LAYOUT_VAL(FAB_TXT_YO, 48, 48)
|
||||
static LAYOUT_VAL(FAB_ICON_SIZE, 52, 52, 36)
|
||||
static LAYOUT_VAL(FAB_TXT_YO, 48, 48, LS(48))
|
||||
static constexpr coord_t FAB_BUTTON_INNER_WIDTH = FAB_BUTTON_WIDTH - PAD_MEDIUM;
|
||||
};
|
||||
|
||||
@@ -179,7 +179,7 @@ MainView6POS::MainView6POS(Window* parent, uint8_t idx) :
|
||||
|
||||
posIcon = new SliderIcon(this);
|
||||
posVal = lv_label_create(posIcon->getLvObj());
|
||||
lv_obj_set_pos(posVal, MULTIPOS_XO, -2);
|
||||
lv_obj_set_pos(posVal, PAD_THREE, -PAD_TINY);
|
||||
lv_obj_set_size(posVal, MULTIPOS_SZ, MULTIPOS_SZ);
|
||||
etx_txt_color(posVal, COLOR_THEME_PRIMARY2_INDEX, LV_PART_MAIN);
|
||||
etx_font(posVal, FONT_BOLD_INDEX, LV_PART_MAIN);
|
||||
|
||||
@@ -38,19 +38,16 @@ class MainViewSlider : public Window
|
||||
MainViewSlider(Window* parent, const rect_t& rect, uint8_t idx,
|
||||
bool isVertical);
|
||||
|
||||
static LAYOUT_VAL(SLIDER_TICK_SPACING, 4, 4)
|
||||
static LAYOUT_VAL(SLIDER_VTICKS_COUNT, 40, 30)
|
||||
#if defined(RADIO_PL18) || defined(RADIO_PL18EV)
|
||||
static constexpr coord_t SLIDER_HTICKS_COUNT = 34;
|
||||
static constexpr coord_t SLIDER_SIZE = 136; // to fit 3 across bottom row
|
||||
#else
|
||||
static LAYOUT_VAL(SLIDER_HTICKS_COUNT, 40, 30)
|
||||
static LAYOUT_VAL(SLIDER_SIZE, 160, 120, 108)
|
||||
#endif
|
||||
static constexpr coord_t HORIZONTAL_SLIDERS_WIDTH =
|
||||
SLIDER_HTICKS_COUNT * SLIDER_TICK_SPACING + LayoutFactory::TRIM_SQUARE_SIZE;
|
||||
static constexpr coord_t VERTICAL_SLIDERS_HEIGHT =
|
||||
SLIDER_VTICKS_COUNT * SLIDER_TICK_SPACING + LayoutFactory::TRIM_SQUARE_SIZE;
|
||||
static LAYOUT_VAL(SLIDER_TICK_SPACING, 4, 4, LS(4))
|
||||
static constexpr coord_t HORIZONTAL_SLIDERS_WIDTH = SLIDER_SIZE + LayoutFactory::TRIM_SQUARE_SIZE;
|
||||
static constexpr coord_t VERTICAL_SLIDERS_HEIGHT = SLIDER_SIZE + LayoutFactory::TRIM_SQUARE_SIZE;
|
||||
|
||||
static LAYOUT_VAL(SL_SZ, 15, 15)
|
||||
static LAYOUT_VAL(SL_SZ, 15, 15, 11)
|
||||
|
||||
protected:
|
||||
uint8_t potIdx;
|
||||
@@ -85,9 +82,8 @@ class MainView6POS : public Window
|
||||
|
||||
void checkEvents() override;
|
||||
|
||||
static LAYOUT_VAL(MULTIPOS_W_SPACING, 12, 12)
|
||||
static LAYOUT_VAL(MULTIPOS_SZ, 12, 12)
|
||||
static LAYOUT_VAL(MULTIPOS_XO, 3, 3)
|
||||
static LAYOUT_VAL(MULTIPOS_W_SPACING, 12, 12, LS(12))
|
||||
static LAYOUT_VAL(MULTIPOS_SZ, 12, 12, LS(12))
|
||||
static constexpr coord_t MULTIPOS_W = (XPOTS_MULTIPOS_COUNT + 1) * MULTIPOS_W_SPACING;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -68,7 +68,7 @@ rect_t TopBar::getZone(unsigned int index) const
|
||||
|
||||
if ((x + size) > LCD_W) size = LCD_W - x;
|
||||
|
||||
return {x, TOPBAR_ZONE_VMARGIN, size, TOPBAR_ZONE_HEIGHT};
|
||||
return {x, PAD_THREE, size, TOPBAR_ZONE_HEIGHT};
|
||||
}
|
||||
|
||||
void TopBar::setVisible(float visible) // 0.0 -> 1.0
|
||||
|
||||
@@ -59,12 +59,11 @@ class TopBar: public TopBarBase
|
||||
|
||||
void removeWidget(unsigned int index) override;
|
||||
|
||||
static LAYOUT_VAL(TOPBAR_ZONE_WIDTH, 70, 70)
|
||||
static LAYOUT_VAL(TOPBAR_ZONE_VMARGIN, 3, 3)
|
||||
static constexpr coord_t TOPBAR_ZONE_HEIGHT = EdgeTxStyles::MENU_HEADER_HEIGHT - 2 * TOPBAR_ZONE_VMARGIN;
|
||||
static LAYOUT_VAL3(TOPBAR_ZONE_WIDTH, 70, 70, 47, 118)
|
||||
static constexpr coord_t TOPBAR_ZONE_HEIGHT = EdgeTxStyles::MENU_HEADER_HEIGHT - 2 * PAD_THREE;
|
||||
|
||||
static LAYOUT_VAL(HDR_DATE_XO, 48, 48)
|
||||
static LAYOUT_VAL(MENU_HEADER_BUTTONS_LEFT, 47, 47)
|
||||
static LAYOUT_VAL(HDR_DATE_XO, 48, 48, LS(48))
|
||||
static LAYOUT_VAL(MENU_HEADER_BUTTONS_LEFT, 47, 47, LS(47))
|
||||
|
||||
protected:
|
||||
uint32_t lastRefresh = 0;
|
||||
|
||||
@@ -31,25 +31,35 @@ class TrimIcon : public SliderIcon
|
||||
public:
|
||||
TrimIcon(Window* parent, bool isVertical) : SliderIcon(parent)
|
||||
{
|
||||
LAYOUT_VAL(BP_V1, 3, 3, 2)
|
||||
LAYOUT_VAL3(BP_V2, 4, 4, 2, 7)
|
||||
LAYOUT_VAL3(BP_V3, 10, 10, 8, 16)
|
||||
LAYOUT_VAL(BP_V4, 12, 12, 9)
|
||||
if (isVertical) {
|
||||
barPoints[0] = {3, 4};
|
||||
barPoints[1] = {12, 4};
|
||||
barPoints[2] = {3, 10};
|
||||
barPoints[3] = {12, 10};
|
||||
barPoints[0] = {BP_V1, BP_V2};
|
||||
barPoints[1] = {BP_V4, BP_V2};
|
||||
barPoints[2] = {BP_V1, BP_V3};
|
||||
barPoints[3] = {BP_V4, BP_V3};
|
||||
} else {
|
||||
barPoints[0] = {10, 3};
|
||||
barPoints[1] = {10, 12};
|
||||
barPoints[2] = {4, 3};
|
||||
barPoints[3] = {4, 12};
|
||||
barPoints[0] = {BP_V3, BP_V1};
|
||||
barPoints[1] = {BP_V3, BP_V4};
|
||||
barPoints[2] = {BP_V2, BP_V1};
|
||||
barPoints[3] = {BP_V2, BP_V4};
|
||||
}
|
||||
|
||||
bar1 = lv_line_create(lvobj);
|
||||
etx_obj_add_style(bar1, styles->div_line_white, LV_PART_MAIN);
|
||||
etx_obj_add_style(bar1, styles->div_line_black, LV_STATE_USER_1);
|
||||
#if LANDSCAPE_LCD_LRG
|
||||
lv_obj_set_style_line_width(bar1, 2, LV_PART_MAIN);
|
||||
#endif
|
||||
lv_line_set_points(bar1, &barPoints[0], 2);
|
||||
bar2 = lv_line_create(lvobj);
|
||||
etx_obj_add_style(bar2, styles->div_line_white, LV_PART_MAIN);
|
||||
etx_obj_add_style(bar2, styles->div_line_black, LV_STATE_USER_1);
|
||||
#if LANDSCAPE_LCD_LRG
|
||||
lv_obj_set_style_line_width(bar2, 2, LV_PART_MAIN);
|
||||
#endif
|
||||
lv_line_set_points(bar2, &barPoints[2], 2);
|
||||
|
||||
etx_bg_color(fill, COLOR_THEME_ACTIVE_INDEX, LV_STATE_USER_1);
|
||||
|
||||
@@ -26,5 +26,5 @@ class AboutUs : public BaseDialog
|
||||
public:
|
||||
AboutUs();
|
||||
|
||||
static LAYOUT_VAL(QR_SZ, 150, 150)
|
||||
static LAYOUT_VAL(QR_SZ, 150, 150, LS(150))
|
||||
};
|
||||
|
||||
@@ -64,8 +64,8 @@ class ChannelsViewFooter : public Window
|
||||
STR_MONITOR_MIXER_DESC, COLOR_THEME_PRIMARY2_INDEX);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(LEG_COLORBOX, 14, 14)
|
||||
static LAYOUT_VAL(TXT_H, 18, 18)
|
||||
static LAYOUT_VAL(LEG_COLORBOX, 14, 14, LS(14))
|
||||
static LAYOUT_VAL(TXT_H, 18, 18, LS(18))
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -35,8 +35,11 @@ static const lv_coord_t f_col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(1),
|
||||
#else // Landscape
|
||||
|
||||
// Footer grid
|
||||
LAYOUT_VAL(LS_C1, 60, 60, LS(60))
|
||||
LAYOUT_VAL(LS_C3, 112, 112, LS(112))
|
||||
LAYOUT_VAL(LS_C5, 50, 50, LS(50))
|
||||
static const lv_coord_t f_col_dsc[] = {
|
||||
60, LV_GRID_FR(1), 112, LV_GRID_FR(1), 50, 50, LV_GRID_TEMPLATE_LAST};
|
||||
LS_C1, LV_GRID_FR(1), LS_C3, LV_GRID_FR(1), LS_C5, LS_C5, LV_GRID_TEMPLATE_LAST};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -61,7 +64,7 @@ class LogicalSwitchDisplayFooter : public Window
|
||||
lv_obj_set_layout(lvobj, LV_LAYOUT_GRID);
|
||||
lv_obj_set_grid_dsc_array(lvobj, f_col_dsc, row_dsc);
|
||||
lv_obj_set_style_pad_row(lvobj, 0, 0);
|
||||
lv_obj_set_style_pad_column(lvobj, 2, 0);
|
||||
lv_obj_set_style_pad_column(lvobj, PAD_TINY, 0);
|
||||
|
||||
lsFunc = lv_label_create(lvobj);
|
||||
etx_obj_add_style(lsFunc, styles->text_align_left, LV_PART_MAIN);
|
||||
@@ -189,9 +192,9 @@ class LogicalSwitchDisplayFooter : public Window
|
||||
refresh();
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(V2_COL_CNT, 1, 2)
|
||||
static LAYOUT_VAL(ANDSW_ROW, 0, 1)
|
||||
static LAYOUT_VAL(ANDSW_COL, 3, 1)
|
||||
static LAYOUT_VAL2(V2_COL_CNT, 1, 2)
|
||||
static LAYOUT_VAL2(ANDSW_ROW, 0, 1)
|
||||
static LAYOUT_VAL2(ANDSW_COL, 3, 1)
|
||||
|
||||
protected:
|
||||
unsigned lsIndex = 0;
|
||||
|
||||
@@ -30,10 +30,10 @@ class LogicalSwitchesViewPage : public PageTab
|
||||
public:
|
||||
LogicalSwitchesViewPage();
|
||||
|
||||
static LAYOUT_VAL(FOOTER_HEIGHT, 20, 40)
|
||||
static LAYOUT_VAL(BTN_WIDTH, 57, 76)
|
||||
static LAYOUT_VAL(BTN_HEIGHT, 20, 21)
|
||||
static LAYOUT_VAL(BTN_MATRIX_COL, 8, 4)
|
||||
static LAYOUT_VAL(FOOTER_HEIGHT, 20, 40, LS(20))
|
||||
static LAYOUT_VAL(BTN_WIDTH, 57, 76, LS(57))
|
||||
static LAYOUT_VAL(BTN_HEIGHT, 20, 21, 18)
|
||||
static LAYOUT_VAL2(BTN_MATRIX_COL, 8, 4)
|
||||
|
||||
protected:
|
||||
void build(Window* window) override;
|
||||
|
||||
@@ -32,8 +32,8 @@ class ViewMainMenu : public Window
|
||||
void onClicked() override;
|
||||
void deleteLater(bool detach = true, bool trash = true) override;
|
||||
|
||||
static LAYOUT_VAL(QM_COLS, 4, 3)
|
||||
static LAYOUT_VAL(QM_ROWS, 2, 3)
|
||||
static LAYOUT_VAL2(QM_COLS, 4, 3)
|
||||
static LAYOUT_VAL2(QM_ROWS, 2, 3)
|
||||
|
||||
protected:
|
||||
std::function<void()> closeHandler = nullptr;
|
||||
|
||||
@@ -29,7 +29,7 @@ class WidgetSettings : public BaseDialog
|
||||
public:
|
||||
WidgetSettings(Widget* widget);
|
||||
|
||||
static LAYOUT_VAL(SLIDER_W, 150, 120)
|
||||
static LAYOUT_VAL(SLIDER_W, 150, 120, LS(150))
|
||||
|
||||
protected:
|
||||
Widget* widget;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define WIDGET_NAME_LEN 12
|
||||
#define MAX_WIDGET_OPTIONS 10
|
||||
|
||||
static LAYOUT_VAL(MAX_TOPBAR_ZONES, 6, 4)
|
||||
static LAYOUT_VAL2(MAX_TOPBAR_ZONES, 6, 4)
|
||||
|
||||
#define MAX_TOPBAR_OPTIONS 1 // just because of VC++ which doesn't like 0-size arrays :(
|
||||
|
||||
|
||||
@@ -130,11 +130,11 @@ class CurveDataEdit : public Window
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(ROW_HEIGHT, 82, 82)
|
||||
static LAYOUT_VAL(NUM_BTN_WIDTH, 48, 48)
|
||||
static LAYOUT_VAL(NUM_HDR_HEIGHT, 15, 15)
|
||||
static LAYOUT_VAL(PTNUM_X, 15, 15)
|
||||
static LAYOUT_VAL(PTNUM_H, 13, 13)
|
||||
static LAYOUT_VAL(ROW_HEIGHT, 82, 82, LS(82))
|
||||
static LAYOUT_VAL(NUM_BTN_WIDTH, 48, 48, LS(48))
|
||||
static LAYOUT_VAL(NUM_HDR_HEIGHT, 15, 15, LS(15))
|
||||
static LAYOUT_VAL(PTNUM_X, 15, 15, LS(15))
|
||||
static LAYOUT_VAL(PTNUM_H, 13, 13, LS(13))
|
||||
|
||||
protected:
|
||||
uint8_t index;
|
||||
|
||||
@@ -37,8 +37,8 @@ class CurveEditWindow : public Page
|
||||
|
||||
void setCurrentSource(mixsrc_t source);
|
||||
|
||||
static LAYOUT_VAL(NUMEDT_W, 70, 70)
|
||||
static LAYOUT_VAL(CURVE_WIDTH, 215, 232)
|
||||
static LAYOUT_VAL(NUMEDT_W, 70, 70, LS(70))
|
||||
static LAYOUT_VAL(CURVE_WIDTH, 215, 232, LS(215))
|
||||
|
||||
protected:
|
||||
uint8_t index;
|
||||
|
||||
@@ -57,9 +57,9 @@ class FunctionSwitch : public Window
|
||||
{
|
||||
public:
|
||||
FunctionSwitch(Window* parent, uint8_t sw) :
|
||||
Window(parent, {0, 0, LCD_W - PAD_SMALL * 2, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY_GAP * 2}), switchIndex(sw)
|
||||
Window(parent, {0, 0, LCD_W - PAD_SMALL * 2, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY * 2}), switchIndex(sw)
|
||||
{
|
||||
padAll(PAD_TINY_GAP);
|
||||
padAll(PAD_TINY);
|
||||
|
||||
std::string s(STR_CHAR_SWITCH);
|
||||
s += switchGetName(switchIndex + switchGetMaxSwitches());
|
||||
@@ -184,12 +184,12 @@ class FunctionSwitch : public Window
|
||||
static constexpr coord_t C2_X = C1_X + C1_W + PAD_SMALL;
|
||||
static constexpr coord_t C2_W = 40;
|
||||
#else
|
||||
static constexpr coord_t SW_W = (LCD_W - PAD_SMALL * 2 - PAD_TINY_GAP * 4) / 5;
|
||||
static constexpr coord_t NM_X = SW_W + PAD_TINY_GAP;
|
||||
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 constexpr coord_t TP_X = NM_X + SW_W + PAD_TINY_GAP;
|
||||
static constexpr coord_t TP_X = NM_X + SW_W + PAD_TINY;
|
||||
static constexpr coord_t TP_W = 86;
|
||||
static constexpr coord_t GR_X = TP_X + SW_W + PAD_TINY_GAP;
|
||||
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;
|
||||
@@ -246,9 +246,9 @@ class SwitchGroup : public Window
|
||||
{
|
||||
public:
|
||||
SwitchGroup(Window* parent, uint8_t group) :
|
||||
Window(parent, {0, 0, LCD_W - PAD_SMALL * 2, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY_GAP * 2}), groupIndex(group)
|
||||
Window(parent, {0, 0, LCD_W - PAD_SMALL * 2, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY * 2}), groupIndex(group)
|
||||
{
|
||||
padAll(PAD_TINY_GAP);
|
||||
padAll(PAD_TINY);
|
||||
|
||||
new StaticText(this, {0, PAD_MEDIUM, NM_W, EdgeTxStyles::PAGE_LINE_HEIGHT},
|
||||
STR_FUNCTION_SWITCH_GROUPS[groupIndex]);
|
||||
|
||||
@@ -32,8 +32,8 @@ class InputEditWindow : public Page
|
||||
public:
|
||||
InputEditWindow(int8_t input, uint8_t index);
|
||||
|
||||
static LAYOUT_VAL(INPUT_EDIT_CURVE_WIDTH, 140, 176)
|
||||
static LAYOUT_VAL(INPUT_EDIT_CURVE_HEIGHT, INPUT_EDIT_CURVE_WIDTH, 132)
|
||||
static LAYOUT_VAL(INPUT_EDIT_CURVE_WIDTH, 140, 176, 110)
|
||||
static LAYOUT_VAL2(INPUT_EDIT_CURVE_HEIGHT, INPUT_EDIT_CURVE_WIDTH, 132)
|
||||
|
||||
protected:
|
||||
uint8_t input;
|
||||
|
||||
@@ -48,7 +48,7 @@ class MixerEditStatusBar : public Window
|
||||
channel, true);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(MIX_STATUS_BAR_MARGIN, 3, 0)
|
||||
static LAYOUT_VAL(MIX_STATUS_BAR_MARGIN, 3, 0, LS(3))
|
||||
|
||||
protected:
|
||||
ComboChannelBar *channelBar;
|
||||
|
||||
@@ -30,8 +30,8 @@ class MixEditWindow : public Page
|
||||
public:
|
||||
MixEditWindow(int8_t channel, uint8_t index);
|
||||
|
||||
static LAYOUT_VAL(MIX_STATUS_BAR_WIDTH, 250, 180)
|
||||
static LAYOUT_VAL(MIX_RIGHT_MARGIN, 0, 3)
|
||||
static LAYOUT_VAL(MIX_STATUS_BAR_WIDTH, 250, 180, LS(250))
|
||||
static LAYOUT_VAL2(MIX_RIGHT_MARGIN, 0, 3)
|
||||
|
||||
protected:
|
||||
uint8_t channel;
|
||||
|
||||
@@ -33,7 +33,7 @@ class MixEditAdvanced : public Page
|
||||
public:
|
||||
MixEditAdvanced(int8_t channel, uint8_t index);
|
||||
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 100, 100)
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 100, 100, LS(100))
|
||||
|
||||
protected:
|
||||
uint8_t channel;
|
||||
|
||||
@@ -73,9 +73,9 @@ class CurveButton : public Button
|
||||
|
||||
void update() { preview->update(); }
|
||||
|
||||
static LAYOUT_VAL(TITLE_H, 20, 20)
|
||||
static LAYOUT_VAL(INFO_H, 27, 27)
|
||||
static LAYOUT_VAL(CURVE_BTN_W, 142, 142)
|
||||
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;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -34,7 +34,7 @@ class ModelCurvesPage : public PageTab
|
||||
|
||||
virtual void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(PER_ROW, 3, 2)
|
||||
static LAYOUT_VAL2(PER_ROW, 3, 2)
|
||||
|
||||
protected:
|
||||
uint8_t focusIndex = -1;
|
||||
|
||||
@@ -106,8 +106,8 @@ class TrimEdit : public Window
|
||||
showControls();
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(TR_BTN_W, 65, 65)
|
||||
static LAYOUT_VAL(TR_MODE_W, 70, 70)
|
||||
static LAYOUT_VAL(TR_BTN_W, 65, 65, 44)
|
||||
static LAYOUT_VAL(TR_MODE_W, 70, 70, LS(70))
|
||||
|
||||
protected:
|
||||
int trimId;
|
||||
@@ -194,7 +194,7 @@ class FlightModeEdit : public Page
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(TRIMS_PER_LINE, 2, 1)
|
||||
static LAYOUT_VAL2(TRIMS_PER_LINE, 2, 1)
|
||||
|
||||
protected:
|
||||
uint8_t index;
|
||||
@@ -253,7 +253,7 @@ class FlightModeBtn : public ListLineButton
|
||||
fmFadeIn = etx_create(&fm_fade_class, lvobj);
|
||||
lv_obj_set_pos(fmFadeIn, FADE_X, FADE_Y);
|
||||
fmFadeOut = etx_create(&fm_fade_class, lvobj);
|
||||
lv_obj_set_pos(fmFadeOut, FADE_X + FADE_W + 1, FADE_Y);
|
||||
lv_obj_set_pos(fmFadeOut, FADE_X + FADE_W + PAD_TINY, FADE_Y);
|
||||
lv_obj_update_layout(lvobj);
|
||||
|
||||
lv_obj_enable_style_refresh(true);
|
||||
@@ -324,25 +324,25 @@ class FlightModeBtn : public ListLineButton
|
||||
formatNumberAsString(fm.fadeOut, PREC1, 0, nullptr, "s").c_str());
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(BTN_H, 36, 56)
|
||||
static LAYOUT_VAL(MAX_FMTRIMS, 6, 4)
|
||||
static LAYOUT_VAL(BTN_H, 36, 56, LS(36))
|
||||
static LAYOUT_VAL2(MAX_FMTRIMS, 6, 4)
|
||||
static constexpr coord_t FMID_X = PAD_TINY;
|
||||
static LAYOUT_VAL(FMID_Y, 6, 16)
|
||||
static LAYOUT_VAL(FMID_W, 36, 46)
|
||||
static LAYOUT_VAL(FMID_Y, 6, 16, 3)
|
||||
static LAYOUT_VAL(FMID_W, 36, 46, LS(36))
|
||||
static constexpr coord_t NAME_X = FMID_X + FMID_W + PAD_TINY;
|
||||
static LAYOUT_VAL(NAME_Y, 8, 0)
|
||||
static LAYOUT_VAL(NAME_W, 95, 160)
|
||||
static LAYOUT_VAL(NAME_Y, 6, 0, 3)
|
||||
static LAYOUT_VAL(NAME_W, 95, 160, LS(95))
|
||||
static constexpr coord_t SWTCH_X = NAME_X + NAME_W + PAD_TINY;
|
||||
static LAYOUT_VAL(SWTCH_Y, 6, 0)
|
||||
static LAYOUT_VAL(SWTCH_W, 50, 50)
|
||||
static LAYOUT_VAL(TRIM_X, SWTCH_X + SWTCH_W + PAD_TINY, FMID_X + FMID_W + PAD_TINY)
|
||||
static LAYOUT_VAL(TRIM_Y, 0, 20)
|
||||
static LAYOUT_VAL(TRIM_W, 30, 40)
|
||||
static LAYOUT_VAL(TRIM_H, 16, 16)
|
||||
static LAYOUT_VAL(SWTCH_Y, 6, 0, 3)
|
||||
static LAYOUT_VAL(SWTCH_W, 50, 50, LS(50))
|
||||
static LAYOUT_VAL2(TRIM_X, SWTCH_X + SWTCH_W + PAD_TINY, FMID_X + FMID_W + PAD_TINY)
|
||||
static LAYOUT_VAL(TRIM_Y, 0, 20, -1)
|
||||
static LAYOUT_VAL(TRIM_W, 30, 40, LS(30))
|
||||
static LAYOUT_VAL(TRIM_H, 16, 16, 11)
|
||||
static constexpr coord_t TRIMC_W = MAX_FMTRIMS * TRIM_W;
|
||||
static constexpr coord_t FADE_X = TRIM_X + TRIMC_W + PAD_TINY;
|
||||
static LAYOUT_VAL(FADE_Y, 6, 24)
|
||||
static LAYOUT_VAL(FADE_W, 45, 45)
|
||||
static LAYOUT_VAL(FADE_W, 45, 45, LS(45))
|
||||
static LAYOUT_VAL(FADE_Y, 6, 24, 3)
|
||||
static constexpr coord_t FADE_X = ListLineButton::GRP_W - PAD_BORDER * 2 - FADE_W * 2 - PAD_TINY * 2;
|
||||
|
||||
protected:
|
||||
bool init = false;
|
||||
|
||||
@@ -33,7 +33,7 @@ class ModelFlightModesPage : public PageTab
|
||||
|
||||
void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(TRIM_CHK_H, 40, 40)
|
||||
static LAYOUT_VAL(TRIM_CHK_H, 40, 40, LS(40))
|
||||
|
||||
protected:
|
||||
TextButton* trimCheck = nullptr;
|
||||
|
||||
@@ -66,14 +66,14 @@ class GVarButton : public ListLineButton
|
||||
if (line) line->build();
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(GVAR_NAME_SIZE, 44, 44)
|
||||
static LAYOUT_VAL3(GVAR_NAME_SIZE, 44, 44, LS(44), 74)
|
||||
static constexpr coord_t GVAR_VAL_H = EdgeTxStyles::PAGE_LINE_HEIGHT + 2;
|
||||
static LAYOUT_VAL(GVAR_VAL_W, 45, 50)
|
||||
static LAYOUT_VAL(GVAR_COLS, MAX_FLIGHT_MODES, 5)
|
||||
static LAYOUT_VAL(BTN_H, EdgeTxStyles::UI_ELEMENT_HEIGHT, 50)
|
||||
static LAYOUT_VAL(GVAR_NM_Y, 4, 13)
|
||||
static LAYOUT_VAL(GVAR_YO, 4, 2)
|
||||
static LAYOUT_VAL(HDR_H, EdgeTxStyles::PAGE_LINE_HEIGHT + 2, EdgeTxStyles::PAGE_LINE_HEIGHT * 2 + 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 const lv_obj_class_t gv_label_class;
|
||||
static const lv_obj_class_t gv_value_class;
|
||||
@@ -127,7 +127,7 @@ class GVarButton : public ListLineButton
|
||||
if (modelFMEnabled()) {
|
||||
for (int flightMode = 0; flightMode < MAX_FLIGHT_MODES; flightMode++) {
|
||||
valueTexts[flightMode] = etx_create(&gv_value_class, lvobj);
|
||||
lv_obj_set_pos(valueTexts[flightMode], (flightMode % GVAR_COLS) * GVAR_VAL_W + GVAR_NAME_SIZE + 4,
|
||||
lv_obj_set_pos(valueTexts[flightMode], (flightMode % GVAR_COLS) * GVAR_VAL_W + GVAR_NAME_SIZE + PAD_BORDER * 2,
|
||||
(flightMode / GVAR_COLS) * GVAR_VAL_H + GVAR_YO);
|
||||
|
||||
if (flightMode == currentFlightMode) {
|
||||
@@ -281,7 +281,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 + 12,
|
||||
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);
|
||||
|
||||
if (flightMode == currentFlightMode) {
|
||||
@@ -291,6 +291,8 @@ class GVarHeader : public Window
|
||||
|
||||
lv_obj_update_layout(lvobj);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL3(HDR_XO, 10, 10, 9, 12)
|
||||
};
|
||||
|
||||
class GVarEditWindow : public Page
|
||||
@@ -554,7 +556,7 @@ void ModelGVarsPage::build(Window* window)
|
||||
if (modelFMEnabled()) {
|
||||
hdr = new GVarHeader(window->getParent());
|
||||
lv_obj_set_pos(hdr->getLvObj(), 0, TabsGroup::MENU_TITLE_TOP + TabsGroup::MENU_TITLE_HEIGHT);
|
||||
yo = GVarButton::HDR_H - 2;
|
||||
yo = GVarButton::HDR_H - PAD_TINY;
|
||||
}
|
||||
|
||||
for (uint8_t index = 0; index < MAX_GVARS; index++) {
|
||||
|
||||
@@ -501,36 +501,36 @@ class LogicalSwitchButton : public ListLineButton
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(LS_BUTTON_H, 32, 44)
|
||||
static LAYOUT_VAL(LS_BUTTON_H, 32, 44, LS(32))
|
||||
|
||||
static constexpr coord_t NM_X = PAD_TINY;
|
||||
static LAYOUT_VAL(NM_Y, 4, 10)
|
||||
static LAYOUT_VAL(NM_W, 30, 36)
|
||||
static LAYOUT_VAL(NM_H, 20, 20)
|
||||
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)
|
||||
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_VAL(V1_Y, NM_Y, 0)
|
||||
static LAYOUT_VAL(V1_W, 88, 88)
|
||||
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 LAYOUT_VAL(V2_W, 110, 110)
|
||||
static constexpr coord_t V2_H = NM_H;
|
||||
static LAYOUT_VAL(AND_X, V2_X + V2_W + PAD_TINY, FN_X + FN_W + PAD_TINY)
|
||||
static LAYOUT_VAL(AND_Y, NM_Y, 20)
|
||||
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 = AND_X + AND_W + PAD_TINY;
|
||||
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 LAYOUT_VAL(DUR_W, 40, 54)
|
||||
static constexpr coord_t DUR_H = NM_H;
|
||||
static constexpr coord_t DEL_X = DUR_X + DUR_W + PAD_TINY;
|
||||
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;
|
||||
static constexpr coord_t DEL_W = DUR_W;
|
||||
|
||||
protected:
|
||||
bool init = false;
|
||||
@@ -677,7 +677,7 @@ void ModelLogicalSwitchesPage::build(Window* window)
|
||||
|
||||
if (hasEmptySwitch) {
|
||||
addButton =
|
||||
new TextButton(window, rect_t{0, 0, window->width() - 12, LogicalSwitchButton::LS_BUTTON_H},
|
||||
new TextButton(window, rect_t{0, 0, window->width() - PAD_SMALL * 2, LogicalSwitchButton::LS_BUTTON_H},
|
||||
LV_SYMBOL_PLUS, [=]() {
|
||||
plusPopup(window);
|
||||
return 0;
|
||||
|
||||
@@ -67,8 +67,8 @@ class MPlexIcon : public Window
|
||||
index = i;
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(MPLEX_ICON_W, 25, 25)
|
||||
static LAYOUT_VAL(MPLEX_ICON_H, 29, 29)
|
||||
static LAYOUT_VAL(MPLEX_ICON_W, 25, 25, LS(25))
|
||||
static LAYOUT_VAL(MPLEX_ICON_H, 29, 29, 22)
|
||||
|
||||
protected:
|
||||
uint8_t index;
|
||||
@@ -156,7 +156,7 @@ class MixLineButton : public InputMixButtonBase
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(MPLEX_XO, 28, 28)
|
||||
static LAYOUT_VAL(MPLEX_XO, 28, 28, LS(28))
|
||||
|
||||
protected:
|
||||
MPlexIcon* mplex = nullptr;
|
||||
@@ -205,19 +205,19 @@ class MixGroup : public InputMixGroupBase
|
||||
|
||||
void adjustHeight() override
|
||||
{
|
||||
coord_t y = monitorVisible ? CHNUM_Y : PAD_TINY;
|
||||
coord_t y = monitorVisible ? CHNUM_Y : PAD_OUTLINE;
|
||||
for (auto it = lines.cbegin(); it != lines.cend(); ++it) {
|
||||
auto line = *it;
|
||||
line->updatePos(InputMixButtonBase::LN_X, y);
|
||||
y += line->height() + 2;
|
||||
y += line->height() + PAD_OUTLINE;
|
||||
}
|
||||
setHeight(y + 4);
|
||||
setHeight(y + PAD_BORDER * 2);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(CHNUM_Y, 17, 17)
|
||||
static LAYOUT_VAL(CHBAR_XO, 118, 118)
|
||||
static LAYOUT_VAL(CHBAR_W, 100, 100)
|
||||
static LAYOUT_VAL(CHBAR_H, 14, 14)
|
||||
static LAYOUT_VAL(CHNUM_Y, 17, 17, LS(17))
|
||||
static LAYOUT_VAL(CHBAR_XO, 118, 118, 81)
|
||||
static LAYOUT_VAL(CHBAR_W, 100, 100, LS(100))
|
||||
static LAYOUT_VAL(CHBAR_H, 14, 14, LS(14))
|
||||
|
||||
protected:
|
||||
MixerChannelBar* monitor = nullptr;
|
||||
|
||||
@@ -165,35 +165,35 @@ class OutputLineButton : public ListLineButton
|
||||
curve->show(output->curve);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(CH_LINE_H, 32, 50)
|
||||
static LAYOUT_VAL(CH_BAR_WIDTH, 100, 100)
|
||||
static LAYOUT_VAL(CH_BAR_HEIGHT, 16, 16)
|
||||
static LAYOUT_VAL(BAR_XO, 17, 17)
|
||||
static LAYOUT_VAL(CH_LINE_H, 32, 50, LS(32))
|
||||
static LAYOUT_VAL(CH_BAR_WIDTH, 100, 100, LS(100))
|
||||
static LAYOUT_VAL(CH_BAR_HEIGHT, 16, 16, LS(16))
|
||||
static LAYOUT_VAL(BAR_XO, 17, 17, LS(17))
|
||||
static constexpr coord_t BAR_X = LCD_W - CH_BAR_WIDTH - BAR_XO;
|
||||
|
||||
static constexpr coord_t SRC_X = PAD_TINY;
|
||||
static constexpr coord_t SRC_Y = 1;
|
||||
static LAYOUT_VAL(SRC_W, 80, 80)
|
||||
static LAYOUT_VAL(SRC_W, 80, 80, LS(80))
|
||||
static constexpr coord_t SRC_H = CH_LINE_H - PAD_MEDIUM;
|
||||
static constexpr coord_t MIN_X = SRC_X + SRC_W + PAD_TINY;
|
||||
static LAYOUT_VAL(MIN_Y, 4, 2)
|
||||
static LAYOUT_VAL(MIN_W, 52, 52)
|
||||
static LAYOUT_VAL(MIN_H, 20, 20)
|
||||
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)
|
||||
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)
|
||||
static LAYOUT_VAL(OFF_Y, MIN_Y, 24)
|
||||
static LAYOUT_VAL(OFF_W, 44, 52)
|
||||
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)
|
||||
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)
|
||||
static LAYOUT_VAL(REV_W, 16, 16, LS(16))
|
||||
static constexpr coord_t CRV_X = REV_X + REV_W + PAD_TINY;
|
||||
static constexpr coord_t CRV_Y = REV_Y + 1;
|
||||
|
||||
|
||||
@@ -33,17 +33,17 @@ class ModelOutputsPage : public PageTab
|
||||
|
||||
static constexpr coord_t ADD_TRIMS_X = PAD_SMALL;
|
||||
static constexpr coord_t ADD_TRIMS_Y = PAD_SMALL;
|
||||
static LAYOUT_VAL(ADD_TRIMS_W, (LCD_W / 2) - 10, LCD_W - 12)
|
||||
static LAYOUT_VAL2(ADD_TRIMS_W, (LCD_W / 2) - PAD_LARGE, LCD_W - 12)
|
||||
static constexpr coord_t ADD_TRIMS_H = EdgeTxStyles::UI_ELEMENT_HEIGHT;
|
||||
static LAYOUT_VAL(EXLIM_XO, 58, 58)
|
||||
static LAYOUT_VAL(EXLIM_XO, 58, 58, LS(58))
|
||||
static constexpr coord_t EXLIMCB_X = LCD_W - EXLIM_XO;
|
||||
static LAYOUT_VAL(EXLIMCB_Y, 4, ADD_TRIMS_X + ADD_TRIMS_H + 2)
|
||||
static LAYOUT_VAL(EXLIMCB_W, 52, 52)
|
||||
static LAYOUT_VAL(EXLIMCB_Y, 4, ADD_TRIMS_X + ADD_TRIMS_H + 2, LS(4))
|
||||
static LAYOUT_VAL(EXLIMCB_W, 52, 52, LS(52))
|
||||
static constexpr coord_t EXLIMCB_H = EdgeTxStyles::UI_ELEMENT_HEIGHT;
|
||||
static LAYOUT_VAL(EXLIM_X, ADD_TRIMS_X + ADD_TRIMS_W + PAD_SMALL, 6)
|
||||
static LAYOUT_VAL(EXLIM_Y, 10, ADD_TRIMS_X + ADD_TRIMS_H + 8)
|
||||
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)
|
||||
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;
|
||||
|
||||
@@ -41,11 +41,11 @@ struct ModelButtonLayout {
|
||||
uint16_t columns;
|
||||
};
|
||||
|
||||
static LAYOUT_VAL(L0_W, 165, 147)
|
||||
static LAYOUT_VAL(L0_H, 92, 92)
|
||||
static LAYOUT_VAL(L1_W, 108, 96)
|
||||
static LAYOUT_VAL(L1_H, 61, 61)
|
||||
static LAYOUT_VAL(L3_W, 336, 300)
|
||||
static LAYOUT_VAL(L0_W, 165, 147, LS(165))
|
||||
static LAYOUT_VAL(L0_H, 92, 92, LS(92))
|
||||
static LAYOUT_VAL(L1_W, 108, 96, LS(108))
|
||||
static LAYOUT_VAL(L1_H, 61, 61, LS(61))
|
||||
static LAYOUT_VAL(L3_W, 336, 300, LS(336))
|
||||
|
||||
ModelButtonLayout modelLayouts[] = {
|
||||
{L0_W, L0_H, true, FONT(STD), 2},
|
||||
|
||||
@@ -34,17 +34,17 @@ class ModelLabelsWindow : public Page
|
||||
public:
|
||||
ModelLabelsWindow();
|
||||
|
||||
static LAYOUT_VAL(NEW_BTN_W, 60, 60)
|
||||
static LAYOUT_VAL(NEW_BTN_W, 60, 60, LS(60))
|
||||
static constexpr coord_t LAYOUT_BTN_XO = NEW_BTN_W + PAD_LARGE * 2 + EdgeTxStyles::UI_ELEMENT_HEIGHT;
|
||||
static LAYOUT_VAL(LAYOUT_BTN_YO, 6, 6)
|
||||
static LAYOUT_VAL(MDLS_X, 137, 4)
|
||||
static LAYOUT_VAL(MDLS_Y, 4, 4)
|
||||
static LAYOUT_VAL(MDLS_W, 343, LCD_W - PAD_MEDIUM)
|
||||
static LAYOUT_VAL(MDLS_H, LCD_H - EdgeTxStyles::MENU_HEADER_HEIGHT - PAD_SMALL * 2, 219)
|
||||
static LAYOUT_VAL(LABELS_Y, PAD_SMALL, MDLS_Y + MDLS_H + PAD_SMALL)
|
||||
static LAYOUT_VAL(LABELS_WIDTH, 131, LCD_W - PAD_SMALL * 2)
|
||||
static LAYOUT_VAL(LABELS_HEIGHT, LCD_H - EdgeTxStyles::MENU_HEADER_HEIGHT - EdgeTxStyles::UI_ELEMENT_HEIGHT - PAD_SMALL * 2 - PAD_MEDIUM, 166)
|
||||
static LAYOUT_VAL(SORT_BUTTON_W, LABELS_WIDTH, 120)
|
||||
static LAYOUT_VAL(LAYOUT_BTN_YO, 6, 6, LS(6))
|
||||
static LAYOUT_VAL(MDLS_X, 137, 4, LS(137))
|
||||
static LAYOUT_VAL(MDLS_Y, 4, 4, LS(4))
|
||||
static LAYOUT_VAL(MDLS_W, 343, LCD_W - PAD_MEDIUM, LS(343))
|
||||
static LAYOUT_VAL2(MDLS_H, LCD_H - EdgeTxStyles::MENU_HEADER_HEIGHT - PAD_SMALL * 2, 219)
|
||||
static LAYOUT_VAL2(LABELS_Y, PAD_SMALL, MDLS_Y + MDLS_H + PAD_SMALL)
|
||||
static LAYOUT_VAL(LABELS_WIDTH, 131, LCD_W - PAD_SMALL * 2, LS(131))
|
||||
static LAYOUT_VAL2(LABELS_HEIGHT, LCD_H - EdgeTxStyles::MENU_HEADER_HEIGHT - EdgeTxStyles::UI_ELEMENT_HEIGHT - PAD_SMALL * 2 - PAD_MEDIUM, 166)
|
||||
static LAYOUT_VAL2(SORT_BUTTON_W, LABELS_WIDTH, 120)
|
||||
|
||||
protected:
|
||||
ModelsSortBy sort = DEFAULT_MODEL_SORT;
|
||||
|
||||
@@ -248,9 +248,9 @@ struct CenterBeepsMatrix : public ButtonMatrix {
|
||||
setChecked(btn_id);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(SW_BTNS, 8, 4)
|
||||
static LAYOUT_VAL(SW_BTN_W, 56, 72)
|
||||
static LAYOUT_VAL(SW_BTN_H, 36, 36)
|
||||
static LAYOUT_VAL(SW_BTNS, 8, 4, 8)
|
||||
static LAYOUT_VAL(SW_BTN_W, 56, 72, 38)
|
||||
static LAYOUT_VAL(SW_BTN_H, 36, 36, LS(36))
|
||||
|
||||
private:
|
||||
uint8_t max_analogs;
|
||||
|
||||
@@ -29,10 +29,10 @@ class ModelSetupPage: public PageTab {
|
||||
|
||||
void build(Window * window) override;
|
||||
|
||||
static LAYOUT_VAL(BTN_COLS, 3, 3)
|
||||
static LAYOUT_VAL(BTN_H, 62, 62)
|
||||
static LAYOUT_VAL(OPTS_W, 100, 100)
|
||||
static LAYOUT_VAL(NAM_W, 200, 140)
|
||||
static LAYOUT_VAL2(BTN_COLS, 3, 3)
|
||||
static LAYOUT_VAL(BTN_H, 62, 62, LS(62))
|
||||
static LAYOUT_VAL(OPTS_W, 100, 100, LS(100))
|
||||
static LAYOUT_VAL(NAM_W, 200, 140, LS(200))
|
||||
|
||||
private:
|
||||
TextButton *labelTextButton = nullptr;
|
||||
|
||||
@@ -84,12 +84,12 @@ class TSStyle
|
||||
|
||||
lv_style_t tsFreshStyle;
|
||||
|
||||
static LAYOUT_VAL(NUM_W, 36, 36)
|
||||
static LAYOUT_VAL(NUM_H, 20, 20)
|
||||
static LAYOUT_VAL(NAME_W, 56, 56)
|
||||
static LAYOUT_VAL(ID_Y, 17, 17)
|
||||
static LAYOUT_VAL(ID_H, 11, 11)
|
||||
static LAYOUT_VAL(FRSH_Y, 10, 10)
|
||||
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))
|
||||
static LAYOUT_VAL(FRSH_Y, 10, 10, LS(10))
|
||||
|
||||
private:
|
||||
bool styleInitDone;
|
||||
@@ -207,14 +207,42 @@ lv_obj_t* TSStyle::newValue(lv_obj_t* parent)
|
||||
static void ts_fresh_icon_constructor(const lv_obj_class_t* class_p,
|
||||
lv_obj_t* obj)
|
||||
{
|
||||
#if LANDSCAPE_LCD_SML
|
||||
static uint8_t const freshBitmap[] = {
|
||||
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
};
|
||||
#elif LANDSCAPE_LCD_LRG
|
||||
static uint8_t const freshBitmap[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
#else
|
||||
static uint8_t const freshBitmap[] = {
|
||||
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
};
|
||||
#endif
|
||||
|
||||
etx_obj_add_style(obj, tsStyle.tsFreshStyle, LV_PART_MAIN);
|
||||
lv_canvas_set_buffer(obj, (void*)freshBitmap, PAD_LARGE, PAD_LARGE, LV_IMG_CF_ALPHA_8BIT);
|
||||
@@ -788,7 +816,7 @@ class SensorEditWindow : public SubPage
|
||||
updateSensorParameters();
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 100, 80)
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 100, 80, LS(100))
|
||||
};
|
||||
|
||||
ModelTelemetryPage::ModelTelemetryPage() :
|
||||
|
||||
@@ -33,7 +33,7 @@ class ModelTelemetryPage : public PageTab
|
||||
|
||||
void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 100, 65)
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 100, 65, LS(100))
|
||||
|
||||
protected:
|
||||
int lastKnownIndex = 0;
|
||||
|
||||
@@ -82,7 +82,7 @@ class USBChannelEditStatusBar : public Window
|
||||
channel, true);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(USBCH_EDIT_STATUS_BAR_MARGIN, 3, 0)
|
||||
static LAYOUT_VAL(USBCH_EDIT_STATUS_BAR_MARGIN, 3, 0, LS(3))
|
||||
|
||||
protected:
|
||||
ComboChannelBar* channelBar;
|
||||
@@ -215,9 +215,9 @@ class USBChannelEditWindow : public Page
|
||||
buildBody(body);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(USBCH_EDIT_STATUS_BAR_WIDTH, 250, 160)
|
||||
static LAYOUT_VAL(USBCH_EDIT_RIGHT_MARGIN, 0, 3)
|
||||
static LAYOUT_VAL(USBCH_COLS, 4, 2)
|
||||
static LAYOUT_VAL(USBCH_EDIT_STATUS_BAR_WIDTH, 250, 160, LS(250))
|
||||
static LAYOUT_VAL(USBCH_EDIT_RIGHT_MARGIN, 0, 3, 0)
|
||||
static LAYOUT_VAL2(USBCH_COLS, 4, 2)
|
||||
|
||||
protected:
|
||||
uint8_t channel;
|
||||
@@ -427,8 +427,6 @@ class USBChannelLineButton : public ListLineButton
|
||||
lv_label_set_text(m_param, "");
|
||||
lv_label_set_text(m_btn_mode, "");
|
||||
lv_label_set_text(m_btns, "");
|
||||
|
||||
lv_obj_update_layout(lvobj);
|
||||
}
|
||||
|
||||
void refresh() override
|
||||
@@ -488,10 +486,10 @@ class USBChannelLineButton : public ListLineButton
|
||||
|
||||
bool isActive() const override { return false; }
|
||||
|
||||
static LAYOUT_VAL(USBCH_LINE_HEIGHT, 32, 48)
|
||||
static LAYOUT_VAL(USBCH_CHN_ROWS, 1, 2)
|
||||
static LAYOUT_VAL(USBCH_BTN_MODE_COL, 4, 2)
|
||||
static LAYOUT_VAL(USBCH_BTN_MODE_ROW, 0, 1)
|
||||
static LAYOUT_VAL(USBCH_LINE_HEIGHT, 32, 48, LS(32))
|
||||
static LAYOUT_VAL2(USBCH_CHN_ROWS, 1, 2)
|
||||
static LAYOUT_VAL2(USBCH_BTN_MODE_COL, 4, 2)
|
||||
static LAYOUT_VAL2(USBCH_BTN_MODE_ROW, 0, 1)
|
||||
|
||||
protected:
|
||||
bool init = false;
|
||||
@@ -504,7 +502,7 @@ class USBChannelLineButton : public ListLineButton
|
||||
StaticIcon* m_inverse;
|
||||
};
|
||||
|
||||
ModelUSBJoystickPage::ModelUSBJoystickPage() : Page(ICON_MODEL_USB)
|
||||
ModelUSBJoystickPage::ModelUSBJoystickPage() : Page(ICON_MODEL_USB, PAD_BORDER)
|
||||
{
|
||||
header->setTitle(STR_MENU_MODEL_SETUP);
|
||||
header->setTitle2(STR_USBJOYSTICK_LABEL);
|
||||
|
||||
@@ -45,7 +45,7 @@ class OutputEditStatusBar : public Window
|
||||
channel, true);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(OUTPUT_EDIT_STATUS_BAR_MARGIN, 3, 0)
|
||||
static LAYOUT_VAL(OUTPUT_EDIT_STATUS_BAR_MARGIN, 3, 0, LS(3))
|
||||
|
||||
protected:
|
||||
ComboChannelBar *channelBar;
|
||||
|
||||
@@ -36,8 +36,8 @@ class OutputEditWindow : public Page
|
||||
public:
|
||||
explicit OutputEditWindow(uint8_t channel);
|
||||
|
||||
static LAYOUT_VAL(OUTPUT_EDIT_STATUS_BAR_WIDTH, 250, 180)
|
||||
static LAYOUT_VAL(OUTPUT_EDIT_RIGHT_MARGIN, 0, 3)
|
||||
static LAYOUT_VAL(OUTPUT_EDIT_STATUS_BAR_WIDTH, 250, 180, LS(250))
|
||||
static LAYOUT_VAL(OUTPUT_EDIT_RIGHT_MARGIN, 0, 3, 0)
|
||||
|
||||
protected:
|
||||
uint8_t channel;
|
||||
|
||||
@@ -99,9 +99,9 @@ class SwitchWarnMatrix : public ButtonMatrix
|
||||
setChecked(btn_id);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(SW_BTNS, 8, 4)
|
||||
static LAYOUT_VAL(SW_BTN_W, 56, 72)
|
||||
static LAYOUT_VAL(SW_BTN_H, 36, 36)
|
||||
static LAYOUT_VAL2(SW_BTNS, 8, 4)
|
||||
static LAYOUT_VAL(SW_BTN_W, 56, 72, 38)
|
||||
static LAYOUT_VAL(SW_BTN_H, 36, 36, LS(36))
|
||||
|
||||
private:
|
||||
uint8_t sw_idx[MAX_SWITCHES];
|
||||
|
||||
@@ -894,7 +894,7 @@ void FunctionsPage::build(Window *window)
|
||||
|
||||
if (hasEmptyFunction) {
|
||||
addButton =
|
||||
new TextButton(window, rect_t{0, 0, window->width() - 12, SF_BUTTON_H},
|
||||
new TextButton(window, rect_t{0, 0, window->width() - PAD_SMALL * 2, SF_BUTTON_H},
|
||||
LV_SYMBOL_PLUS, [=]() {
|
||||
plusPopup(window);
|
||||
return 0;
|
||||
|
||||
@@ -51,24 +51,24 @@ class FunctionLineButton : public ListLineButton
|
||||
void refresh() override;
|
||||
|
||||
static constexpr coord_t NM_X = PAD_TINY;
|
||||
static LAYOUT_VAL(NM_Y, 4, 10)
|
||||
static LAYOUT_VAL(NM_W, 43, 40)
|
||||
static LAYOUT_VAL(NM_H, 20, 20)
|
||||
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_VAL(SW_Y, NM_Y, 0)
|
||||
static LAYOUT_VAL(SW_W, 70, 198)
|
||||
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_VAL(FN_X, SW_X + SW_W + PAD_TINY, NM_X + NM_W + PAD_TINY)
|
||||
static LAYOUT_VAL(FN_Y, NM_Y, 20)
|
||||
static LAYOUT_VAL(FN_W, 278, SW_W)
|
||||
static LAYOUT_VAL(RP_W, 40, 34)
|
||||
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 = FN_X + FN_W + PAD_TINY;
|
||||
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 EN_X = RP_X + RP_W + PAD_TINY;
|
||||
static constexpr coord_t EN_Y = NM_Y + PAD_TINY_GAP;
|
||||
static LAYOUT_VAL(EN_SZ, 16, 16)
|
||||
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;
|
||||
|
||||
protected:
|
||||
bool init = false;
|
||||
@@ -134,7 +134,7 @@ class FunctionsPage : public PageTab
|
||||
|
||||
void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(SF_BUTTON_H, 32, 44)
|
||||
static LAYOUT_VAL(SF_BUTTON_H, 32, 44, LS(32))
|
||||
|
||||
protected:
|
||||
int8_t focusIndex = -1;
|
||||
|
||||
@@ -28,10 +28,10 @@ class TimerWindow : public SubPage
|
||||
public:
|
||||
TimerWindow(uint8_t timer);
|
||||
|
||||
static LAYOUT_VAL(COUNTDOWN_W, 144, 144)
|
||||
static LAYOUT_VAL(COUNTDOWN_LBL_YO, 0, (EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY) / 2)
|
||||
static LAYOUT_VAL(COUNTDOWN_VAL_XO, COUNTDOWN_W + PAD_SMALL, 0)
|
||||
static LAYOUT_VAL(COUNTDOWN_VAL_YO, 0, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY)
|
||||
static LAYOUT_VAL(COUNTDOWN_W, 144, 144, LS(144))
|
||||
static LAYOUT_VAL2(COUNTDOWN_LBL_YO, 0, (EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY) / 2)
|
||||
static LAYOUT_VAL2(COUNTDOWN_VAL_XO, COUNTDOWN_W + PAD_SMALL, 0)
|
||||
static LAYOUT_VAL2(COUNTDOWN_VAL_YO, 0, EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_TINY)
|
||||
|
||||
protected:
|
||||
Window* timerDirLine = nullptr;
|
||||
|
||||
@@ -28,5 +28,5 @@ class TrimsSetup : public SubPage
|
||||
public:
|
||||
TrimsSetup();
|
||||
|
||||
static LAYOUT_VAL(HATSMODE_W, 120, 120)
|
||||
static LAYOUT_VAL(HATSMODE_W, 120, 120, LS(120))
|
||||
};
|
||||
|
||||
@@ -44,7 +44,7 @@ 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)
|
||||
static LAYOUT_VAL(NUM_W, 60, 60, LS(60))
|
||||
|
||||
private:
|
||||
NumberEdit* num_edit = nullptr;
|
||||
|
||||
@@ -151,7 +151,7 @@ class ChannelFailsafeEdit : public NumberEdit
|
||||
update();
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(NUM_W, 70, 70)
|
||||
static LAYOUT_VAL(NUM_W, 70, 70, LS(70))
|
||||
};
|
||||
|
||||
class ChannelFSCombo : public Window
|
||||
|
||||
@@ -28,5 +28,5 @@ class FailSafePage : public Page
|
||||
public:
|
||||
explicit FailSafePage(uint8_t moduleIdx);
|
||||
|
||||
static LAYOUT_VAL(FS_BARGRAPH_WIDTH, 130, 90)
|
||||
static LAYOUT_VAL(FS_BARGRAPH_WIDTH, 130, 90, LS(130))
|
||||
};
|
||||
|
||||
@@ -487,7 +487,7 @@ class ModuleWindow : public Window
|
||||
|
||||
uint8_t getModuleIdx() const { return moduleIdx; }
|
||||
|
||||
static LAYOUT_VAL(NUM_W, 60, 60)
|
||||
static LAYOUT_VAL(NUM_W, 60, 60, LS(60))
|
||||
|
||||
protected:
|
||||
uint8_t moduleIdx;
|
||||
|
||||
@@ -37,7 +37,7 @@ struct HWInputEdit : public RadioTextEdit {
|
||||
{
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(HW_INP_W, 64, 64)
|
||||
static LAYOUT_VAL(HW_INP_W, 64, 64, LS(64))
|
||||
};
|
||||
|
||||
static const lv_coord_t col_two_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(2),
|
||||
@@ -96,9 +96,9 @@ HWPots::HWPots(Window* parent) :
|
||||
}
|
||||
});
|
||||
|
||||
new StaticText(this, {P_NM_X, -2, 0, 0}, STR_NAME, COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
|
||||
new StaticText(this, {P_TYP_X, -2, 0, 0}, STR_TYPE, COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
|
||||
new StaticText(this, {P_INV_X, -2, 0, 0}, STR_MENU_INVERT, COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
|
||||
new StaticText(this, {P_NM_X, -PAD_TINY, 0, 0}, STR_NAME, COLOR_THEME_PRIMARY1_INDEX, FONT(XS));
|
||||
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;
|
||||
|
||||
@@ -201,7 +201,7 @@ class HWSwitch
|
||||
new HWInputEdit(parent, (char*)switchGetCustomName(swnum), LEN_SWITCH_NAME,
|
||||
SW_CTRL_W + 8, y);
|
||||
|
||||
coord_t x = SW_CTRL_W * PAD_TINY + 14;
|
||||
coord_t x = SW_CTRL_W * 2 + PAD_LARGE + PAD_MEDIUM;
|
||||
|
||||
if (switchIsFlex(swnum)) {
|
||||
channel = new Choice(
|
||||
@@ -219,7 +219,7 @@ class HWSwitch
|
||||
if (val < 0) return STR_NONE;
|
||||
return adcGetInputLabel(ADC_INPUT_FLEX, val);
|
||||
});
|
||||
x += SW_CTRL_W + 6;
|
||||
x += SW_CTRL_W + PAD_MEDIUM;
|
||||
}
|
||||
|
||||
sw_cfg = new Choice(
|
||||
@@ -246,8 +246,8 @@ class HWSwitch
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(SW_CTRL_W, 86, 75)
|
||||
static LAYOUT_VAL(SW_CTRL_H, 36, 36)
|
||||
static LAYOUT_VAL(SW_CTRL_W, 86, 75, LS(86))
|
||||
static LAYOUT_VAL(SW_CTRL_H, 36, 36, 26)
|
||||
|
||||
protected:
|
||||
Choice* channel = nullptr;
|
||||
|
||||
@@ -41,16 +41,16 @@ struct HWPots : public Window
|
||||
|
||||
// Absolute layout for Pots popup - due to performance issues with lv_textarea
|
||||
// in a flex layout
|
||||
static LAYOUT_VAL(P_LBL_X, 0, 0)
|
||||
static LAYOUT_VAL(P_LBL_W, (DIALOG_DEFAULT_WIDTH - 45) * 2 / 11, (DIALOG_DEFAULT_WIDTH - 18) * 13 / 21)
|
||||
static LAYOUT_VAL(P_NM_X, P_LBL_X + P_LBL_W + PAD_MEDIUM, 100);
|
||||
static LAYOUT_VAL(P_NM_W, 70, 70)
|
||||
static LAYOUT_VAL(P_TYP_X, P_NM_X + P_NM_W, 32)
|
||||
static LAYOUT_VAL(P_TYP_W, 160, P_LBL_W)
|
||||
static LAYOUT_VAL(P_INV_X, P_TYP_X + P_TYP_W + PAD_MEDIUM, P_NM_X + P_NM_W + PAD_MEDIUM)
|
||||
static LAYOUT_VAL(P_INV_W, 52, 52)
|
||||
static LAYOUT_VAL(P_ROW_H, 36, 72)
|
||||
static LAYOUT_VAL(P_OFST_Y, 0, 36)
|
||||
static LAYOUT_VAL(P_LBL_X, 0, 0, 0)
|
||||
static LAYOUT_VAL3(P_LBL_W, (DIALOG_DEFAULT_WIDTH - 45) * 2 / 11, (DIALOG_DEFAULT_WIDTH - 18) * 13 / 21, (DIALOG_DEFAULT_WIDTH - 30) * 2 / 11, (DIALOG_DEFAULT_WIDTH - 67) * 2 / 11)
|
||||
static LAYOUT_VAL2(P_NM_X, P_LBL_X + P_LBL_W + PAD_MEDIUM, 100);
|
||||
static LAYOUT_VAL(P_NM_W, 70, 70, LS(70))
|
||||
static LAYOUT_VAL2(P_TYP_X, P_NM_X + P_NM_W, 32)
|
||||
static LAYOUT_VAL(P_TYP_W, 160, P_LBL_W, LS(160))
|
||||
static LAYOUT_VAL2(P_INV_X, P_TYP_X + P_TYP_W + PAD_MEDIUM, P_NM_X + P_NM_W + PAD_MEDIUM)
|
||||
static LAYOUT_VAL(P_INV_W, 52, 52, LS(52))
|
||||
static LAYOUT_VAL(P_ROW_H, 36, 72, 26)
|
||||
static LAYOUT_VAL(P_OFST_Y, 0, 36, 0)
|
||||
#define P_Y(i) (i * P_ROW_H + 2)
|
||||
|
||||
protected:
|
||||
|
||||
@@ -28,5 +28,5 @@ class SerialConfigWindow
|
||||
public:
|
||||
SerialConfigWindow(Window *parent, FlexGridLayout& grid);
|
||||
|
||||
static LAYOUT_VAL(WARN_PADL, 20, 20);
|
||||
static LAYOUT_VAL(WARN_PADL, 20, 20, LS(20));
|
||||
};
|
||||
|
||||
@@ -34,29 +34,29 @@ class PreviewWindow : public Window
|
||||
|
||||
void setColorList(std::vector<ColorEntry> colorList);
|
||||
|
||||
static LAYOUT_VAL(ICON_X1, 5, 5)
|
||||
static LAYOUT_VAL(ICON_X2, 38, 38)
|
||||
static LAYOUT_VAL(ICON_X3, 71, 71)
|
||||
static LAYOUT_VAL(ICON_Y, 5, 5)
|
||||
static LAYOUT_VAL(DATE_XO, 44, 44)
|
||||
static LAYOUT_VAL(CBT_Y, 44, 44)
|
||||
static LAYOUT_VAL(CBT_W, 100, 100)
|
||||
static LAYOUT_VAL(CB1_X, 100, 100)
|
||||
static LAYOUT_VAL(CB2_X, 154, 154)
|
||||
static LAYOUT_VAL(CB_Y, 40, 40)
|
||||
static LAYOUT_VAL(CB_W, 50, 50)
|
||||
static LAYOUT_VAL(BTN_X, 210, 210)
|
||||
static LAYOUT_VAL(BTN1_Y, 40, 40)
|
||||
static LAYOUT_VAL(BTN2_Y, 79, 79)
|
||||
static LAYOUT_VAL(BTN_W, 100, 100)
|
||||
static LAYOUT_VAL(TRIM_Y, 79, 79)
|
||||
static LAYOUT_VAL(TRIM_H, 20, 20)
|
||||
static LAYOUT_VAL(SLIDER_Y, 101, 101)
|
||||
static LAYOUT_VAL(TXT1_Y, 122, 122)
|
||||
static LAYOUT_VAL(TXT2_Y, 144, 144)
|
||||
static LAYOUT_VAL(TXT_W, 100, 100)
|
||||
static LAYOUT_VAL(EDT2_X, 114, 114)
|
||||
static LAYOUT_VAL(EDT_Y, 170, 170)
|
||||
static LAYOUT_VAL(ICON_X1, 5, 5, LS(5))
|
||||
static LAYOUT_VAL(ICON_X2, 38, 38, LS(38))
|
||||
static LAYOUT_VAL(ICON_X3, 71, 71, LS(71))
|
||||
static LAYOUT_VAL(ICON_Y, 5, 5, LS(5))
|
||||
static LAYOUT_VAL(DATE_XO, 44, 44, LS(44))
|
||||
static LAYOUT_VAL(CBT_Y, 44, 44, LS(44))
|
||||
static LAYOUT_VAL(CBT_W, 100, 100, LS(100))
|
||||
static LAYOUT_VAL(CB1_X, 100, 100, LS(100))
|
||||
static LAYOUT_VAL(CB2_X, 154, 154, LS(154))
|
||||
static LAYOUT_VAL(CB_Y, 40, 40, LS(40))
|
||||
static LAYOUT_VAL(CB_W, 50, 50, LS(50))
|
||||
static LAYOUT_VAL(BTN_X, 210, 210, LS(210))
|
||||
static LAYOUT_VAL(BTN1_Y, 40, 40, LS(40))
|
||||
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))
|
||||
static LAYOUT_VAL(TXT_W, 100, 100, LS(100))
|
||||
static LAYOUT_VAL(EDT2_X, 114, 114, LS(114))
|
||||
static LAYOUT_VAL(EDT_Y, 170, 170, LS(170))
|
||||
|
||||
protected:
|
||||
tmr10ms_t ticks;
|
||||
|
||||
@@ -58,8 +58,8 @@ class StickCalibrationWindow : public Window
|
||||
lv_obj_set_pos(calibStick->getLvObj(), dx, dy);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(CAL_CTR, 9, 9)
|
||||
static LAYOUT_VAL(CAL_SIZ, 68, 68)
|
||||
static LAYOUT_VAL(CAL_CTR, 9, 9, LS(9))
|
||||
static LAYOUT_VAL(CAL_SIZ, 68, 68, LS(68))
|
||||
|
||||
protected:
|
||||
uint8_t stickX, stickY;
|
||||
|
||||
@@ -240,7 +240,7 @@ class AnaCalibratedViewWindow : public AnaViewWindow
|
||||
}
|
||||
#endif
|
||||
|
||||
static LAYOUT_VAL(TSI2CEventsCol, 5, 0)
|
||||
static LAYOUT_VAL2(TSI2CEventsCol, 5, 0)
|
||||
|
||||
protected:
|
||||
#if defined(HARDWARE_TOUCH)
|
||||
@@ -446,7 +446,7 @@ class AnaMinMaxViewWindow : public AnaViewWindow
|
||||
AnaViewWindow::checkEvents();
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(GRIDCOLS, 10, 5)
|
||||
static LAYOUT_VAL2(GRIDCOLS, 10, 5)
|
||||
};
|
||||
|
||||
class AnaCalibratedViewPage : public PageTab
|
||||
|
||||
@@ -59,8 +59,8 @@ class GhostModuleConfigWindow : public Window
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(xOffset, 140, 20)
|
||||
static LAYOUT_VAL(xOffset2, 260, 140)
|
||||
static LAYOUT_VAL(xOffset, 140, 20, LS(140))
|
||||
static LAYOUT_VAL(xOffset2, 260, 140, LS(260))
|
||||
|
||||
protected:
|
||||
StaticText* menuLines[GHST_MENU_LINES][2];
|
||||
|
||||
@@ -32,9 +32,9 @@ class RadioHardwarePage : public PageTab
|
||||
|
||||
void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 80, 80)
|
||||
static LAYOUT_VAL(BTN_COLS, 4, 3)
|
||||
static LAYOUT_VAL(FS_BTN_COLS, 2, 2)
|
||||
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)
|
||||
|
||||
protected:
|
||||
void cleanup() override;
|
||||
|
||||
@@ -38,8 +38,8 @@ class RadioSdManagerPage : public PageTab
|
||||
RadioSdManagerPage();
|
||||
void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(PREVIEW_W, LCD_W * 2 / 5 - PAD_SMALL * 2, LCD_W - PAD_MEDIUM * 2)
|
||||
static LAYOUT_VAL(PREVIEW_H, LCD_H - 68, (LCD_H - 68) / 3)
|
||||
static LAYOUT_VAL2(PREVIEW_W, LCD_W * 2 / 5 - PAD_SMALL * 2, LCD_W - PAD_MEDIUM * 2)
|
||||
static LAYOUT_VAL3(PREVIEW_H, LCD_H - 68, (LCD_H - 68) / 3, LCD_H - LS(68), LCD_H - 102)
|
||||
|
||||
protected:
|
||||
int loadPreview = 0;
|
||||
|
||||
@@ -76,9 +76,8 @@ 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)
|
||||
static LAYOUT_VAL(DT_Y1, PAD_TINY, PAD_TINY)
|
||||
static LAYOUT_VAL(DT_Y2, DT_Y1 + EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_MEDIUM, DT_Y1 + EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_MEDIUM)
|
||||
static LAYOUT_VAL(DT_EDT_W, 80, 52, LS(80))
|
||||
static LAYOUT_VAL2(DT_Y2, PAD_TINY + EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_MEDIUM, PAD_TINY + EdgeTxStyles::UI_ELEMENT_HEIGHT + PAD_MEDIUM)
|
||||
|
||||
protected:
|
||||
bool init = false;
|
||||
@@ -123,9 +122,9 @@ class DateTimeWindow : public Window
|
||||
m_last_tm = m_tm;
|
||||
|
||||
// Date
|
||||
new StaticText(this, rect_t{PAD_TINY, DT_Y1 + 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::PAGE_LINE_HEIGHT}, STR_DATE);
|
||||
year = new NumberEdit(
|
||||
this, rect_t{SubPage::EDT_X, DT_Y1, DT_EDT_W, 0}, 2023, 2037,
|
||||
this, rect_t{SubPage::EDT_X, PAD_TINY, DT_EDT_W, 0}, 2023, 2037,
|
||||
[=]() -> int32_t { return TM_YEAR_BASE + m_tm.tm_year; },
|
||||
[=](int32_t newValue) {
|
||||
m_last_tm.tm_year = m_tm.tm_year = newValue - TM_YEAR_BASE;
|
||||
@@ -134,7 +133,7 @@ class DateTimeWindow : public Window
|
||||
});
|
||||
|
||||
month = new NumberEdit(
|
||||
this, rect_t{SubPage::EDT_X + DT_EDT_W + PAD_TINY, DT_Y1, DT_EDT_W, 0}, 1, 12,
|
||||
this, rect_t{SubPage::EDT_X + DT_EDT_W + PAD_TINY, PAD_TINY, DT_EDT_W, 0}, 1, 12,
|
||||
[=]() -> int32_t { return 1 + m_tm.tm_mon; },
|
||||
[=](int32_t newValue) {
|
||||
m_last_tm.tm_mon = m_tm.tm_mon = newValue - 1;
|
||||
@@ -145,7 +144,7 @@ class DateTimeWindow : public Window
|
||||
[](int32_t value) { return formatNumberAsString(value, LEADING0); });
|
||||
|
||||
day = new NumberEdit(
|
||||
this, rect_t{SubPage::EDT_X + 2 * DT_EDT_W + PAD_SMALL, DT_Y1, DT_EDT_W, 0}, 1,
|
||||
this, rect_t{SubPage::EDT_X + 2 * DT_EDT_W + PAD_SMALL, PAD_TINY, DT_EDT_W, 0}, 1,
|
||||
daysInMonth(), [=]() -> int32_t { return m_tm.tm_mday; },
|
||||
[=](int32_t newValue) {
|
||||
m_last_tm.tm_mday = m_tm.tm_mday = newValue;
|
||||
|
||||
@@ -29,7 +29,7 @@ class RadioSetupPage: public PageTab {
|
||||
|
||||
void build(Window * window) override;
|
||||
|
||||
static LAYOUT_VAL(NUM_W, 80, 80)
|
||||
static LAYOUT_VAL(BTN_COLS, 3, 2)
|
||||
static LAYOUT_VAL(BTN_H, 62, 62)
|
||||
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))
|
||||
};
|
||||
|
||||
@@ -69,7 +69,7 @@ class ThemeColorPreview : public Window
|
||||
build();
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(MAX_BOX_WIDTH, 15, 15)
|
||||
static LAYOUT_VAL(MAX_BOX_WIDTH, 15, 15, LS(15))
|
||||
static constexpr int BOX_MARGIN = 2;
|
||||
|
||||
protected:
|
||||
@@ -201,10 +201,10 @@ class ColorEditPage : public Page
|
||||
}
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(COLOR_BOX_WIDTH, 45, 55)
|
||||
static LAYOUT_VAL(COLOR_BOX_HEIGHT, 30, 30)
|
||||
static LAYOUT_VAL(HEX_STR_W, 95, 95)
|
||||
static LAYOUT_VAL(BUTTON_WIDTH, 75, 65)
|
||||
static LAYOUT_VAL(COLOR_BOX_WIDTH, 45, 55, LS(45))
|
||||
static LAYOUT_VAL(COLOR_BOX_HEIGHT, 30, 30, LS(30))
|
||||
static LAYOUT_VAL(HEX_STR_W, 95, 95, LS(95))
|
||||
static LAYOUT_VAL(BUTTON_WIDTH, 75, 65, LS(75))
|
||||
|
||||
#if PORTRAIT_LCD
|
||||
static constexpr int COLOR_LIST_HEIGHT = (LCD_H / 2 - 24);
|
||||
|
||||
@@ -41,7 +41,7 @@ class ThemeSetupPage : public PageTab
|
||||
|
||||
bool isVisible() const override { return radioThemesEnabled(); }
|
||||
|
||||
static LAYOUT_VAL(COLOR_PREVIEW_SIZE, 18, 18)
|
||||
static LAYOUT_VAL(COLOR_PREVIEW_SIZE, 18, 18, LS(18))
|
||||
#if PORTRAIT_LCD
|
||||
static constexpr int LIST_HEIGHT = (LCD_H / 2 - 38);
|
||||
#else
|
||||
|
||||
@@ -188,8 +188,8 @@ struct ToolButton : public TextButton {
|
||||
lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
|
||||
}
|
||||
|
||||
static LAYOUT_VAL(TOOLS_BTN_W, (LCD_W - 24) / 3, (LCD_W - 18) / 2)
|
||||
static LAYOUT_VAL(TOOLS_BTN_H, 48, 48)
|
||||
static LAYOUT_VAL2(TOOLS_BTN_W, (LCD_W - PAD_LARGE * 3) / 3, (LCD_W - PAD_LARGE * 2) / 2)
|
||||
static LAYOUT_VAL(TOOLS_BTN_H, 48, 48, LS(48))
|
||||
};
|
||||
|
||||
void RadioToolsPage::rebuild(Window* window)
|
||||
|
||||
@@ -33,5 +33,5 @@ class RadioTrainerPage : public PageTab
|
||||
|
||||
void build(Window* window) override;
|
||||
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 80, 65)
|
||||
static LAYOUT_VAL(NUM_EDIT_W, 80, 65, LS(80))
|
||||
};
|
||||
|
||||
@@ -60,9 +60,9 @@ public:
|
||||
|
||||
void showError(bool firstCall, const char* title, const char* msg);
|
||||
|
||||
static LAYOUT_VAL(POPUP_HEADER_HEIGHT, 30, 30);
|
||||
static LAYOUT_VAL(POPUP_X, 50, 40);
|
||||
static LAYOUT_VAL(POPUP_Y, 70, 110);
|
||||
static LAYOUT_VAL(POPUP_HEADER_HEIGHT, 30, 30, LS(30));
|
||||
static LAYOUT_VAL(POPUP_X, 50, 40, LS(50));
|
||||
static LAYOUT_VAL(POPUP_Y, 70, 110, LS(70));
|
||||
|
||||
protected:
|
||||
lv_obj_t* prevScreen = nullptr;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user