modifications to make no numberEdit() do their own painting. They all return strings to the numberEdit().
This commit is contained in:
committed by
Raphael Coeffic
parent
d6d7713000
commit
702a89d952
@@ -225,6 +225,9 @@ void GVarEditWindow::setProperties(int onlyForFlightMode)
|
||||
}
|
||||
FlightModeData * fmData;
|
||||
for (int fm = 0; fm < MAX_FLIGHT_MODES; fm++) {
|
||||
if (values[fm] == nullptr) // KLK: the order of calls has changed and this might not be initialized yet.
|
||||
continue;
|
||||
|
||||
if (onlyForFlightMode >= 0 && fm != onlyForFlightMode)
|
||||
continue;
|
||||
fmData = &g_model.flightModeData[fm];
|
||||
@@ -238,13 +241,13 @@ void GVarEditWindow::setProperties(int onlyForFlightMode)
|
||||
else {
|
||||
values[fm]->setMin(GVAR_MAX + 1);
|
||||
values[fm]->setMax(GVAR_MAX + MAX_FLIGHT_MODES - 1);
|
||||
values[fm]->setDisplayHandler([=](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
values[fm]->setDisplayHandler([=](int32_t value) {
|
||||
uint8_t targetFlightMode = value - GVAR_MAX - 1;
|
||||
if (targetFlightMode >= fm)
|
||||
targetFlightMode++;
|
||||
char label[16];
|
||||
getFlightModeString(label, targetFlightMode + 1);
|
||||
dc->drawSizedText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, label, strlen(label), flags);
|
||||
return std::string(label);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -121,16 +121,25 @@ class LogicalSwitchEditPage: public Page
|
||||
edit2->setMax(222 - cs->v2);
|
||||
edit2->invalidate();
|
||||
});
|
||||
edit1->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(value), flags | PREC1);
|
||||
edit1->setDisplayHandler([](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, lswTimerValue(value), PREC1);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(value), flags | PREC1);
|
||||
});
|
||||
edit2->setDisplayHandler([cs](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
edit2->setDisplayHandler([cs](int32_t value) {
|
||||
if (value < 0)
|
||||
dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, "<<", flags);
|
||||
return std::string("<<");
|
||||
//dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, "<<", flags);
|
||||
else if (value == 0)
|
||||
dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, "--", flags);
|
||||
else
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(cs->v2 + value), flags | PREC1);
|
||||
return std::string("--");
|
||||
// dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, "--", flags);
|
||||
else {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, lswTimerValue(value), PREC1);
|
||||
return std::string(s);
|
||||
}
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(cs->v2 + value), flags | PREC1);
|
||||
});
|
||||
grid.nextLine();
|
||||
}
|
||||
@@ -146,15 +155,19 @@ class LogicalSwitchEditPage: public Page
|
||||
else if (cstate == LS_FAMILY_TIMER) {
|
||||
new StaticText(logicalSwitchOneWindow, grid.getLabelSlot(), STR_V1, 0, COLOR_THEME_PRIMARY1);
|
||||
auto timer = new NumberEdit(logicalSwitchOneWindow, grid.getFieldSlot(), -128, 122, GET_SET_DEFAULT(cs->v1));
|
||||
timer->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(value), flags | PREC1);
|
||||
timer->setDisplayHandler([](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, lswTimerValue(value), PREC1);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(value), flags | PREC1);
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
new StaticText(logicalSwitchOneWindow, grid.getLabelSlot(), STR_V2, 0, COLOR_THEME_PRIMARY1);
|
||||
timer = new NumberEdit(logicalSwitchOneWindow, grid.getFieldSlot(), -128, 122, GET_SET_DEFAULT(cs->v2));
|
||||
timer->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(value), flags | PREC1);
|
||||
timer->setDisplayHandler([](int32_t value) {
|
||||
return std::to_string(lswTimerValue(value));
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(value), flags | PREC1);
|
||||
});
|
||||
grid.nextLine();
|
||||
}
|
||||
@@ -179,8 +192,10 @@ class LogicalSwitchEditPage: public Page
|
||||
int16_t v2_min = 0, v2_max = 0;
|
||||
getMixSrcRange(cs->v1, v2_min, v2_max);
|
||||
v2Edit = new NumberEdit(logicalSwitchOneWindow, grid.getFieldSlot(), v2_min, v2_max, GET_SET_DEFAULT(cs->v2));
|
||||
v2Edit->setDisplayHandler([=](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
drawSourceCustomValue(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, cs->v1, (cs->v1 <= MIXSRC_LAST_CH ? calc100toRESX(value) : value), flags);
|
||||
v2Edit->setDisplayHandler(
|
||||
[=](int value) {
|
||||
// drawSourceCustomValue(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, cs->v1, (cs->v1 <= MIXSRC_LAST_CH ? calc100toRESX(value) : value), flags);
|
||||
return "ddd"; // ToDo This is not good
|
||||
});
|
||||
grid.nextLine();
|
||||
}
|
||||
|
||||
@@ -170,8 +170,8 @@ class OutputEditWindow : public Page
|
||||
auto edit = new NumberEdit(window, grid.getFieldSlot(), -MAX_CURVES,
|
||||
+MAX_CURVES, GET_SET_DEFAULT(output->curve));
|
||||
edit->setDisplayHandler(
|
||||
[](BitmapBuffer *dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawText(2, 2, getCurveString(value));
|
||||
[](int32_t value) {
|
||||
return getCurveString(value);
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include "model_telemetry.h"
|
||||
#include "opentx.h"
|
||||
#include "libopenui.h"
|
||||
@@ -225,8 +227,11 @@ class SensorEditWindow : public Page {
|
||||
else {
|
||||
new StaticText(sensorParametersWindow, grid.getLabelSlot(), STR_ID, 0, COLOR_THEME_PRIMARY1);
|
||||
auto hex = new NumberEdit(sensorParametersWindow, grid.getFieldSlot(2, 0), 0, 0xFFFF, GET_SET_DEFAULT(sensor->id));
|
||||
hex->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
drawHexNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags);
|
||||
hex->setDisplayHandler([](int32_t value) {
|
||||
std::stringstream stream;
|
||||
stream << std::hex << value;
|
||||
return stream.str();
|
||||
// drawHexNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags);
|
||||
});
|
||||
new NumberEdit(sensorParametersWindow, grid.getFieldSlot(2, 1), 0, 0xff, GET_SET_DEFAULT(sensor->instance));
|
||||
grid.nextLine();
|
||||
@@ -462,16 +467,18 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex)
|
||||
|
||||
new StaticText(window, grid.getLabelSlot(true), STR_LOWALARM, 0, COLOR_THEME_PRIMARY1);
|
||||
auto edit = new NumberEdit(window, grid.getFieldSlot(), -30, 30, GET_SET_DEFAULT(g_model.rssiAlarms.warning));
|
||||
edit->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getWarningRssi(), flags);
|
||||
edit->setDisplayHandler([](int32_t value) {
|
||||
return std::to_string(g_model.rssiAlarms.getWarningRssi());
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getWarningRssi(), flags);
|
||||
});
|
||||
// window->setFirstField(edit);
|
||||
grid.nextLine();
|
||||
|
||||
new StaticText(window, grid.getLabelSlot(true), STR_CRITICALALARM, 0, COLOR_THEME_PRIMARY1);
|
||||
edit = new NumberEdit(window, grid.getFieldSlot(), -30, 30, GET_SET_DEFAULT(g_model.rssiAlarms.critical));
|
||||
edit->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getCriticalRssi(), flags);
|
||||
edit->setDisplayHandler([](int32_t value) {
|
||||
return std::to_string(g_model.rssiAlarms.getCriticalRssi());
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getCriticalRssi(), flags);
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
|
||||
@@ -448,8 +448,11 @@ void RadioHardwarePage::build(FormWindow * window)
|
||||
// Bat calibration
|
||||
new StaticText(window, grid.getLabelSlot(), STR_BATT_CALIB, 0, COLOR_THEME_PRIMARY1);
|
||||
auto batCal = new NumberEdit(window, grid.getFieldSlot(1,0), -127, 127, GET_SET_DEFAULT(g_eeGeneral.txVoltageCalibration));
|
||||
batCal->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, getBatteryVoltage(), flags | PREC2, 0, nullptr, "V");
|
||||
batCal->setDisplayHandler([](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, getBatteryVoltage(), PREC2, 0, nullptr, "V");
|
||||
return std::string(s);
|
||||
//dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, getBatteryVoltage(), flags | PREC2, 0, nullptr, "V");
|
||||
});
|
||||
batCal->setWindowFlags(REFRESH_ALWAYS);
|
||||
grid.nextLine();
|
||||
|
||||
@@ -78,8 +78,11 @@ class DateTimeWindow : public FormGroup {
|
||||
t.tm_mon = newValue - 1;
|
||||
SET_LOAD_DATETIME(&t);
|
||||
});
|
||||
month->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
month->setDisplayHandler([](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, value, LEADING0);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
});
|
||||
|
||||
/* TODO dynamic max instead of 31 ...
|
||||
@@ -100,8 +103,11 @@ class DateTimeWindow : public FormGroup {
|
||||
t.tm_mday = newValue;
|
||||
SET_LOAD_DATETIME(&t);
|
||||
});
|
||||
day->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
day->setDisplayHandler([](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, value, LEADING0, 2);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
@@ -119,8 +125,11 @@ class DateTimeWindow : public FormGroup {
|
||||
t.tm_hour = newValue;
|
||||
SET_LOAD_DATETIME(&t);
|
||||
});
|
||||
hour->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
hour->setDisplayHandler([](int32_t value) {
|
||||
static char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, value, LEADING0, 2);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
});
|
||||
|
||||
auto minutes = new NumberEdit(this, grid.getFieldSlot(3, 1), 0, 59,
|
||||
@@ -135,8 +144,11 @@ class DateTimeWindow : public FormGroup {
|
||||
t.tm_min = newValue;
|
||||
SET_LOAD_DATETIME(&t);
|
||||
});
|
||||
minutes->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
minutes->setDisplayHandler([](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, value, LEADING0, 2);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
});
|
||||
|
||||
auto seconds = new NumberEdit(this, grid.getFieldSlot(3, 2), 0, 59,
|
||||
@@ -151,8 +163,8 @@ class DateTimeWindow : public FormGroup {
|
||||
t.tm_sec = newValue;
|
||||
SET_LOAD_DATETIME(&t);
|
||||
});
|
||||
seconds->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
|
||||
seconds->setDisplayHandler([](int value) {
|
||||
return std::to_string(value);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -82,8 +82,11 @@ void RadioTrainerPage::build(FormWindow * window)
|
||||
// Trainer multiplier
|
||||
new StaticText(window, grid.getLabelSlot(), STR_MULTIPLIER, 0, COLOR_THEME_PRIMARY1);
|
||||
auto multiplier = new NumberEdit(window, grid.getFieldSlot(3, 0), -10, 40, GET_SET_DEFAULT(g_eeGeneral.PPM_Multiplier));
|
||||
multiplier->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value+10, flags | PREC1, 0);
|
||||
multiplier->setDisplayHandler([](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, value+10, PREC1);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value+10, flags | PREC1, 0);
|
||||
});
|
||||
grid.nextLine();
|
||||
grid.nextLine();
|
||||
|
||||
@@ -235,9 +235,12 @@ class SpecialFunctionEditPage : public Page
|
||||
new NumberEdit(specialFunctionOneWindow, grid.getFieldSlot(), 0,
|
||||
255, GET_SET_DEFAULT(CFN_PARAM(cfn)));
|
||||
edit->setDisplayHandler(
|
||||
[=](BitmapBuffer *dc, LcdFlags flags, int32_t value) {
|
||||
dc->drawNumber(2, 2, CFN_PARAM(cfn), PREC1,
|
||||
sizeof(CFN_PARAM(cfn)), nullptr, "s");
|
||||
[=](int32_t value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, CFN_PARAM(cfn), PREC1, sizeof(CFN_PARAM(cfn)), nullptr, "s");
|
||||
return (std::string(s));
|
||||
// dc->drawNumber(2, 2, CFN_PARAM(cfn), PREC1,
|
||||
// sizeof(CFN_PARAM(cfn)), nullptr, "s");
|
||||
});
|
||||
break;
|
||||
}
|
||||
@@ -318,9 +321,12 @@ class SpecialFunctionEditPage : public Page
|
||||
grid.getFieldSlot(), val_min, val_max,
|
||||
GET_SET_DEFAULT(CFN_PARAM(cfn)));
|
||||
numedit->setDisplayHandler(
|
||||
[](BitmapBuffer *dc, LcdFlags flags, int value) {
|
||||
dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, abs(value),
|
||||
flags, 0, value >= 0 ? "+= " : "-= ", nullptr);
|
||||
[](int value) {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, abs(value), 0, 0, value >= 0 ? "+=" : "--", nullptr);
|
||||
return std::string(s);
|
||||
// dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, abs(value),
|
||||
// flags, 0, value >= 0 ? "+= " : "-= ", nullptr);
|
||||
});
|
||||
break;
|
||||
}
|
||||
@@ -342,14 +348,16 @@ class SpecialFunctionEditPage : public Page
|
||||
60 / CFN_PLAY_REPEAT_MUL, GET_DEFAULT((int8_t)CFN_PLAY_REPEAT(cfn)),
|
||||
SET_DEFAULT(CFN_PLAY_REPEAT(cfn)));
|
||||
repeat->setDisplayHandler(
|
||||
[](BitmapBuffer *dc, LcdFlags flags, int32_t value) {
|
||||
[](int32_t value) {
|
||||
if (value == 0)
|
||||
dc->drawText(3, 0, "1x", flags);
|
||||
return "1x";
|
||||
else if (value == (int8_t)CFN_PLAY_REPEAT_NOSTART)
|
||||
dc->drawText(3, 0, "!1x", flags);
|
||||
else
|
||||
dc->drawNumber(3, 0, value * CFN_PLAY_REPEAT_MUL, flags, 0,
|
||||
nullptr, "s");
|
||||
return "!1x";
|
||||
else {
|
||||
char s[50];
|
||||
BitmapBuffer::formatNumberAsString(s, 49, value * CFN_PLAY_REPEAT_MUL, 0, 0, nullptr, "s");
|
||||
return (const char *)s;
|
||||
}
|
||||
});
|
||||
grid.nextLine();
|
||||
}
|
||||
|
||||
@@ -27,22 +27,27 @@
|
||||
TimeEdit::TimeEdit(Window * parent, const rect_t & rect, int32_t vmin, int32_t vmax, std::function<int32_t()> getValue, std::function<void(int32_t)> setValue):
|
||||
NumberEdit(parent, rect, vmin, vmax, std::move(getValue), std::move(setValue))
|
||||
{
|
||||
setDisplayHandler([=] (int value) {
|
||||
TimerOptions timerOptions;
|
||||
timerOptions.options = (textFlags & TIMEHOUR) != 0 ? SHOW_TIME : SHOW_TIMER;
|
||||
return std::string(getTimerString(this->getValue(), timerOptions));
|
||||
});
|
||||
}
|
||||
|
||||
void TimeEdit::paint(BitmapBuffer * dc)
|
||||
{
|
||||
FormField::paint(dc);
|
||||
// void TimeEdit::paint(BitmapBuffer * dc)
|
||||
// {
|
||||
// FormField::paint(dc);
|
||||
|
||||
LcdFlags textColor;
|
||||
if (editMode)
|
||||
textColor = COLOR_THEME_PRIMARY2;
|
||||
else if (hasFocus())
|
||||
textColor = COLOR_THEME_PRIMARY2;
|
||||
else
|
||||
textColor = COLOR_THEME_SECONDARY1;
|
||||
// LcdFlags textColor;
|
||||
// if (editMode)
|
||||
// textColor = COLOR_THEME_PRIMARY2;
|
||||
// else if (hasFocus())
|
||||
// textColor = COLOR_THEME_PRIMARY2;
|
||||
// else
|
||||
// textColor = COLOR_THEME_SECONDARY1;
|
||||
|
||||
TimerOptions timerOptions;
|
||||
timerOptions.options = (textFlags & TIMEHOUR) != 0 ? SHOW_TIME : SHOW_TIMER;
|
||||
dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP,
|
||||
getTimerString(getValue(), timerOptions), textColor);
|
||||
}
|
||||
// TimerOptions timerOptions;
|
||||
// timerOptions.options = (textFlags & TIMEHOUR) != 0 ? SHOW_TIME : SHOW_TIMER;
|
||||
// dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP,
|
||||
// getTimerString(getValue(), timerOptions), textColor);
|
||||
// }
|
||||
|
||||
@@ -34,9 +34,6 @@ class TimeEdit : public NumberEdit {
|
||||
return "TimeEdit";
|
||||
}
|
||||
#endif
|
||||
|
||||
void paint(BitmapBuffer * dc) override;
|
||||
|
||||
};
|
||||
|
||||
#endif // _TIMEEDIT_H_
|
||||
|
||||
Vendored
+1
-1
Submodule radio/src/thirdparty/libopenui updated: 2fb7c8f342...e6dc11ee06
Reference in New Issue
Block a user