range mode RSSI (fix for #356) (#377)

* Range mode RSSI (Fix for #356 )

* Formatting
This commit is contained in:
eshifri
2021-07-01 15:22:54 +02:00
committed by GitHub
parent 2aa52965a9
commit d878efb376
3 changed files with 53 additions and 21 deletions
+10 -5
View File
@@ -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();
}
+15 -16
View File
@@ -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
};
+28
View File
@@ -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;
}
});