Fixed various issues while running "teckel12/LuaTelemetry" widget

This commit is contained in:
Raphael Coeffic
2021-05-06 12:55:59 +02:00
committed by Raphael Coeffic
parent 9b648a14e4
commit f0f6a1e093
6 changed files with 70 additions and 7 deletions
@@ -101,7 +101,7 @@ class Layout: public LayoutBase
ViewMainDecoration* decoration = nullptr;
// Decoration settings bitmask to detect updates
uint8_t decorationSettings = 0;
uint8_t decorationSettings = 255;
// Last time we refreshed the window
uint32_t lastRefresh = 0;
@@ -66,6 +66,13 @@ void ViewMainDecoration::setSlidersVisible(bool visible)
sliders[SLIDERS_EXT2]->setWidth(visible ? TRIM_SQUARE_SIZE : 0);
}
#endif
if (visible) {
visibilityMask |= VM_SLIDERS;
}
else {
visibilityMask &= ~VM_SLIDERS;
}
}
void ViewMainDecoration::setTrimsVisible(bool visible)
@@ -75,11 +82,25 @@ void ViewMainDecoration::setTrimsVisible(bool visible)
trims[TRIMS_LV]->setWidth(visible ? TRIM_SQUARE_SIZE : 0);
trims[TRIMS_RV]->setWidth(visible ? TRIM_SQUARE_SIZE : 0);
if (visible) {
visibilityMask |= VM_TRIMS;
}
else {
visibilityMask &= ~VM_TRIMS;
}
}
void ViewMainDecoration::setFlightModeVisible(bool visible)
{
flightMode->setHeight(visible ? FM_LABEL_HEIGHT : 0);
if (visible) {
visibilityMask |= VM_FM;
}
else {
visibilityMask &= ~VM_FM;
}
}
void ViewMainDecoration::adjustDecoration()
@@ -191,13 +212,14 @@ void ViewMainDecoration::adjustDecoration()
rect_t ViewMainDecoration::getMainZone() const
{
coord_t border = (getVisibilityMask() == VM_NONE ?
0 : MAIN_ZONE_BORDER);
rect_t zone = {
trims[TRIMS_LV]->right() + MAIN_ZONE_BORDER,
/*topbar->bottom() +*/ MAIN_ZONE_BORDER,
trims[TRIMS_LV]->right() + border, border,
0, 0 // let's compute them!
};
zone.w = trims[TRIMS_RV]->left() - MAIN_ZONE_BORDER - zone.x;
zone.w = trims[TRIMS_RV]->left() - border - zone.x;
// min(trims[TRIMS_LH]->top(), flightMode->top())
if (trims[TRIMS_LH]->top() < flightMode->top())
@@ -205,7 +227,7 @@ rect_t ViewMainDecoration::getMainZone() const
else
zone.h = flightMode->top();
zone.h -= MAIN_ZONE_BORDER + zone.y;
zone.h -= border + zone.y;
return zone;
}
@@ -47,6 +47,19 @@ class ViewMainDecoration: public Window
// (without decoration)
rect_t getMainZone() const;
enum VisibilityMask {
VM_NONE = 0,
VM_TRIMS = 1 << 0,
VM_SLIDERS = 1 << 1,
VM_FM = 1 << 2,
VM_ALL = VM_TRIMS | VM_SLIDERS | VM_FM,
};
unsigned getVisibilityMask() const
{
return visibilityMask;
}
protected:
#if defined(DEBUG_WINDOWS)
@@ -78,6 +91,7 @@ class ViewMainDecoration: public Window
Window* sliders[SLIDERS_MAX];
Window* trims[TRIMS_MAX];
Window* flightMode;
unsigned visibilityMask = VM_NONE;
void createSliders();
void createTrims();
@@ -128,7 +128,6 @@ WidgetSettings::WidgetSettings(Window * parent, Widget * widget) :
break;
case ZoneOption::Color:
for (uint8_t part = 0; part < 3; part++)
new ColorEdit(form, grid.getFieldSlot(),
[=]() -> int { // getValue
return (int) widget->getOptionValue(optIdx)->unsignedValue;