@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
@@ -161,7 +161,14 @@ class LogicalSwitchEditPage: public Page
|
||||
[=](int32_t newValue) {
|
||||
cs->v1 = newValue;
|
||||
SET_DIRTY();
|
||||
v2Edit->invalidate();
|
||||
if (v2Edit != nullptr)
|
||||
{
|
||||
int16_t v2_min = 0, v2_max = 0;
|
||||
getMixSrcRange(cs->v1, v2_min, v2_max);
|
||||
v2Edit->setMin(v2_min);
|
||||
v2Edit->setMax(v2_max);
|
||||
v2Edit->invalidate();
|
||||
}
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
|
||||
@@ -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):
|
||||
@@ -676,6 +697,13 @@ class ModuleWindow : public FormGroup {
|
||||
}
|
||||
else {
|
||||
new NumberEdit(this, grid.getFieldSlot(2,0), -128, 127, GET_SET_DEFAULT(g_model.moduleData[moduleIdx].multi.optionValue));
|
||||
|
||||
//Show RSSI next to RF Freq Fine Tune
|
||||
if (getMultiOptionTitle(moduleIdx) == STR_MULTI_RFTUNE)
|
||||
{
|
||||
new DynamicNumber<int>(this, grid.getFieldSlot(2, 1), [] {
|
||||
return (int)TELEMETRY_RSSI();}, 0, "RSSI: ", " db");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -840,6 +868,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;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user