diff --git a/radio/src/gui/colorlcd/message_dialog.cpp b/radio/src/gui/colorlcd/message_dialog.cpp index 8d5c4571f..067d69500 100644 --- a/radio/src/gui/colorlcd/message_dialog.cpp +++ b/radio/src/gui/colorlcd/message_dialog.cpp @@ -21,18 +21,23 @@ #include "static.h" MessageDialog::MessageDialog(Window* parent, const char* title, - const char* message, const char* info) : + const char* message, const char* info, + const int lineHeight, + const WindowFlags windowFlags, + const LcdFlags textFlags) : Dialog(parent, title, {50, 73, LCD_W - 100, LCD_H - 146}) { + setWindowFlags(windowFlags); + messageWidget = new StaticText( this, {0, coord_t(height() - PAGE_LINE_HEIGHT) / 2, width(), PAGE_LINE_HEIGHT}, message, 0, CENTERED); - infoWidget = new StaticText(this, - {0, 30 + coord_t(height() - PAGE_LINE_HEIGHT) / 2, - width(), PAGE_LINE_HEIGHT}, - info, 0, CENTERED); + infoWidget = new StaticText( + this, + {0, 30 + coord_t(height() - PAGE_LINE_HEIGHT) / 2, width(), lineHeight}, + info, 0, textFlags); setCloseWhenClickOutside(true); setFocus(); } diff --git a/radio/src/gui/colorlcd/message_dialog.h b/radio/src/gui/colorlcd/message_dialog.h index ed2fcf1d2..bf0d570ba 100644 --- a/radio/src/gui/colorlcd/message_dialog.h +++ b/radio/src/gui/colorlcd/message_dialog.h @@ -23,28 +23,27 @@ #include "dialog.h" #include "static.h" -class MessageDialog: public Dialog { - public: - MessageDialog(Window * parent, const char * title, const char * message, const char * info = ""); +class MessageDialog : public Dialog +{ + public: + MessageDialog(Window* parent, const char* title, const char* message, + const char* info = "", const int lineHeight = PAGE_LINE_HEIGHT, + const WindowFlags windowFlags = 0, + const LcdFlags textFlags = CENTERED); + // Attn.: FONT(XXL) is not supported by MessageDialog - void setInfoText(std::string text) - { - infoWidget->setText(std::move(text)); - } - - protected: - StaticText * messageWidget; - StaticText * infoWidget; + void setInfoText(std::string text) { infoWidget->setText(std::move(text)); } + protected: + StaticText* messageWidget; + StaticText* infoWidget; + LcdFlags textFlags; #if defined(DEBUG_WINDOWS) - std::string getName() const override - { - return "MessageDialog"; - } + std::string getName() const override { return "MessageDialog"; } #endif #if defined(HARDWARE_KEYS) - void onEvent(event_t event) override; + void onEvent(event_t event) override; #endif }; diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index b7817d2c7..1d21d125f 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -41,6 +41,27 @@ std::string switchWarninglabel(swsrc_t index) 1); } +class RssiDialog : public MessageDialog +{ + public: + RssiDialog(Window* parent, const char* title, const char* message, + const char* info = "", const int lineHeight = PAGE_LINE_HEIGHT, + const WindowFlags windowFlags = 0, + const LcdFlags textFlags = CENTERED) : + MessageDialog(parent, title, message, info, lineHeight, windowFlags, + textFlags) + { + } + + virtual void checkEvents() + { + char buf[10]; + sprintf(buf, "%d", (int)TELEMETRY_RSSI()); + setInfoText(buf); + MessageDialog::checkEvents(); + } +}; + class ChannelFailsafeBargraph: public Window { public: ChannelFailsafeBargraph(Window * parent, const rect_t & rect, uint8_t moduleIdx, uint8_t channel): @@ -840,6 +861,13 @@ class ModuleWindow : public FormGroup { } else { moduleState[moduleIdx].mode = MODULE_MODE_RANGECHECK; + auto rssiDialog = new RssiDialog( + this, "Range Test", "RSSI:", "", 50, REFRESH_ALWAYS, + DEFAULT_COLOR | CENTERED | FONT(BOLD) | FONT(XL)); + rssiDialog->setCloseHandler([this]() { + rangeButton->check(false); + moduleState[moduleIdx].mode = MODULE_MODE_NORMAL; + }); return 1; } });