Support for hiding text box input, hide server connection password box by default

This commit is contained in:
Kae 2023-06-28 01:40:55 +10:00
parent 4c006afc94
commit cd497bbcf3
4 changed files with 28 additions and 3 deletions

View File

@ -0,0 +1,5 @@
{
"password" : {
"hidden" : true
}
}

View File

@ -8,6 +8,7 @@ namespace Star {
TextBoxWidget::TextBoxWidget(String const& startingText, String const& hint, WidgetCallbackFunc callback)
: m_text(startingText), m_hint(hint), m_callback(callback) {
auto assets = Root::singleton().assets();
m_textHidden = false;
m_regex = ".*";
m_repeatKeyThreshold = 0;
m_repeatCode = SpecialRepeatKeyCodes::None;
@ -61,7 +62,12 @@ void TextBoxWidget::renderImpl() {
context()->renderInterfaceText(m_hint, {pos, m_hAnchor, m_vAnchor});
} else {
context()->setFontColor(m_color.mix(Color::rgbf(0, 0, 1), blueRate).toRgba());
context()->renderInterfaceText(m_text, {pos, m_hAnchor, m_vAnchor});
if (m_textHidden) {
String hiddenText('*', m_text.length());
context()->renderInterfaceText(hiddenText, { pos, m_hAnchor, m_vAnchor });
}
else
context()->renderInterfaceText(m_text, { pos, m_hAnchor, m_vAnchor });
}
context()->setDefaultFont();
context()->setFontProcessingDirectives("");
@ -136,7 +142,7 @@ void TextBoxWidget::update() {
}
}
String TextBoxWidget::getText() {
String TextBoxWidget::getText() const {
return m_text;
}
@ -155,6 +161,14 @@ bool TextBoxWidget::setText(String const& text, bool callback) {
return true;
}
bool TextBoxWidget::getHidden() const {
return m_textHidden;
}
void TextBoxWidget::setHidden(bool hidden) {
m_textHidden = hidden;
}
String TextBoxWidget::getRegex() {
return m_regex;
}

View File

@ -14,9 +14,12 @@ public:
virtual void update() override;
String getText();
String getText() const;
bool setText(String const& text, bool callback = true);
bool getHidden() const;
void setHidden(bool hidden);
// Set the regex that the text-box must match. Defaults to .*
String getRegex();
void setRegex(String const& regex);
@ -56,6 +59,7 @@ private:
bool modText(String const& text);
bool newTextValid(String const& text) const;
bool m_textHidden;
String m_text;
String m_hint;
String m_regex;

View File

@ -432,6 +432,8 @@ WidgetConstructResult WidgetParser::textboxHandler(String const& name, Json cons
textbox->setMaxWidth(config.getInt("maxWidth"));
if (config.contains("regex"))
textbox->setRegex(config.getString("regex"));
if (config.contains("hidden"))
textbox->setHidden(config.getBool("hidden"));
common(textbox, config);