diff --git a/radio/src/gui/colorlcd/model_logical_switches.cpp b/radio/src/gui/colorlcd/model_logical_switches.cpp index 2e74253c9..d5787fe8e 100644 --- a/radio/src/gui/colorlcd/model_logical_switches.cpp +++ b/radio/src/gui/colorlcd/model_logical_switches.cpp @@ -122,24 +122,16 @@ class LogicalSwitchEditPage: public Page edit2->invalidate(); }); 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); + return formatNumberAsString(lswTimerValue(value), PREC1); }); edit2->setDisplayHandler([cs](int32_t value) { if (value < 0) return std::string("<<"); - //dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, "<<", flags); else if (value == 0) 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); + return formatNumberAsString(lswTimerValue(cs->v2 + value), PREC1); } - // dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, lswTimerValue(cs->v2 + value), flags | PREC1); }); grid.nextLine(); } @@ -167,7 +159,6 @@ class LogicalSwitchEditPage: public Page timer = new NumberEdit(logicalSwitchOneWindow, grid.getFieldSlot(), -128, 122, GET_SET_DEFAULT(cs->v2)); 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(); } diff --git a/radio/src/gui/colorlcd/model_outputs.cpp b/radio/src/gui/colorlcd/model_outputs.cpp index e38495bc0..20e9a3eff 100644 --- a/radio/src/gui/colorlcd/model_outputs.cpp +++ b/radio/src/gui/colorlcd/model_outputs.cpp @@ -171,7 +171,7 @@ class OutputEditWindow : public Page +MAX_CURVES, GET_SET_DEFAULT(output->curve)); edit->setDisplayHandler( [](int32_t value) { - return getCurveString(value); + return std::string(getCurveString(value)); }); grid.nextLine(); diff --git a/radio/src/gui/colorlcd/model_telemetry.cpp b/radio/src/gui/colorlcd/model_telemetry.cpp index e772125d3..f7cfb0a7f 100644 --- a/radio/src/gui/colorlcd/model_telemetry.cpp +++ b/radio/src/gui/colorlcd/model_telemetry.cpp @@ -231,7 +231,6 @@ class SensorEditWindow : public Page { 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(); @@ -469,7 +468,6 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex) auto edit = new NumberEdit(window, grid.getFieldSlot(), -30, 30, GET_SET_DEFAULT(g_model.rssiAlarms.warning)); 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(); @@ -478,7 +476,6 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex) edit = new NumberEdit(window, grid.getFieldSlot(), -30, 30, GET_SET_DEFAULT(g_model.rssiAlarms.critical)); 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(); diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 83c4d04bd..275ae40eb 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -449,10 +449,7 @@ void RadioHardwarePage::build(FormWindow * window) 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([](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"); + return formatNumberAsString(getBatteryVoltage(), PREC2, 0, nullptr, "V"); }); batCal->setWindowFlags(REFRESH_ALWAYS); grid.nextLine(); diff --git a/radio/src/gui/colorlcd/radio_setup.cpp b/radio/src/gui/colorlcd/radio_setup.cpp index a0afe2e2b..732f02441 100644 --- a/radio/src/gui/colorlcd/radio_setup.cpp +++ b/radio/src/gui/colorlcd/radio_setup.cpp @@ -79,10 +79,7 @@ class DateTimeWindow : public FormGroup { SET_LOAD_DATETIME(&t); }); 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); + return formatNumberAsString(value, LEADING0); }); /* TODO dynamic max instead of 31 ... @@ -104,10 +101,7 @@ class DateTimeWindow : public FormGroup { SET_LOAD_DATETIME(&t); }); 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); + return formatNumberAsString(value, LEADING0, 2); }); grid.nextLine(); @@ -145,10 +139,7 @@ class DateTimeWindow : public FormGroup { SET_LOAD_DATETIME(&t); }); 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); + return formatNumberAsString(value, LEADING0, 2); }); auto seconds = new NumberEdit(this, grid.getFieldSlot(3, 2), 0, 59, diff --git a/radio/src/gui/colorlcd/radio_trainer.cpp b/radio/src/gui/colorlcd/radio_trainer.cpp index 465f734bf..a8a459b93 100644 --- a/radio/src/gui/colorlcd/radio_trainer.cpp +++ b/radio/src/gui/colorlcd/radio_trainer.cpp @@ -83,10 +83,7 @@ void RadioTrainerPage::build(FormWindow * window) 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([](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); + return formatNumberAsString(value+10, PREC1); }); grid.nextLine(); grid.nextLine(); diff --git a/radio/src/gui/colorlcd/special_functions.cpp b/radio/src/gui/colorlcd/special_functions.cpp index ee303f135..5cafb4196 100644 --- a/radio/src/gui/colorlcd/special_functions.cpp +++ b/radio/src/gui/colorlcd/special_functions.cpp @@ -236,11 +236,7 @@ class SpecialFunctionEditPage : public Page 255, GET_SET_DEFAULT(CFN_PARAM(cfn))); edit->setDisplayHandler( [=](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"); + return formatNumberAsString(CFN_PARAM(cfn), PREC1, sizeof(CFN_PARAM(cfn)), nullptr, "s"); }); break; } @@ -322,11 +318,7 @@ class SpecialFunctionEditPage : public Page GET_SET_DEFAULT(CFN_PARAM(cfn))); numedit->setDisplayHandler( [](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); + return formatNumberAsString(abs(value), 0, 0, value >= 0 ? "+=" : "--", nullptr); }); break; } @@ -350,13 +342,11 @@ class SpecialFunctionEditPage : public Page repeat->setDisplayHandler( [](int32_t value) { if (value == 0) - return "1x"; + return std::string("1x"); else if (value == (int8_t)CFN_PLAY_REPEAT_NOSTART) - return "!1x"; + return std::string("!1x"); else { - char s[50]; - BitmapBuffer::formatNumberAsString(s, 49, value * CFN_PLAY_REPEAT_MUL, 0, 0, nullptr, "s"); - return (const char *)s; + return formatNumberAsString(value * CFN_PLAY_REPEAT_MUL, 0, 0, nullptr, "s"); } }); grid.nextLine(); diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index 8bd9db07a..9d7e3df03 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -755,6 +755,15 @@ char *strAppendFilename(char *dest, const char *filename, const int size) return dest; } +std::string formatNumberAsString(int32_t val, LcdFlags flags, uint8_t len, const char * prefix, const char * suffix) +{ + char s[100]; + BitmapBuffer::formatNumberAsString(s, 99, val, flags, len, prefix, suffix); + return std::string(s); +} + + + #if defined(RTCLOCK) #include "rtc.h" diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h index 04fcf58f5..4dfd472c2 100644 --- a/radio/src/strhelpers.h +++ b/radio/src/strhelpers.h @@ -24,6 +24,7 @@ #include "definitions.h" #include "opentx_types.h" +#include #include #include @@ -64,6 +65,7 @@ char *strAppendSigned(char *dest, int32_t value, uint8_t digits = 0, char *strSetCursor(char *dest, int position); char *strAppendDate(char *str, bool time = false); char *strAppendFilename(char *dest, const char *filename, const int size); +std::string formatNumberAsString(int32_t val, LcdFlags flags = 0, uint8_t len = 0, const char * prefix = nullptr, const char * suffix = nullptr); #if !defined(BOOT) char *getStringAtIndex(char *dest, const char *s, int idx); diff --git a/radio/src/thirdparty/libopenui b/radio/src/thirdparty/libopenui index e6dc11ee0..c70784cbd 160000 --- a/radio/src/thirdparty/libopenui +++ b/radio/src/thirdparty/libopenui @@ -1 +1 @@ -Subproject commit e6dc11ee06256add3d719dac3899104629693c97 +Subproject commit c70784cbd054cd03c8feed4349fdd32e048bea06