summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
authorTom <tomut@yahoo.com>2021-07-24 22:59:39 -0600
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2021-07-26 21:55:18 +0430
commit81c183e06a2ac3d14f5fda79e2187275521af6f5 (patch)
treec6372c236d09a2e75719959fd0d12fd4e6a25b72 /Userland
parent5745e8e18cd7966c66e1b16b1100cf1f43e1af77 (diff)
downloadserenity-81c183e06a2ac3d14f5fda79e2187275521af6f5.zip
LibGUI: Add InputType enum to allow creating a password InputBox dialog
Diffstat (limited to 'Userland')
-rw-r--r--Userland/Libraries/LibGUI/InputBox.cpp20
-rw-r--r--Userland/Libraries/LibGUI/InputBox.h11
2 files changed, 22 insertions, 9 deletions
diff --git a/Userland/Libraries/LibGUI/InputBox.cpp b/Userland/Libraries/LibGUI/InputBox.cpp
index 513c2199ac..c17e7b3485 100644
--- a/Userland/Libraries/LibGUI/InputBox.cpp
+++ b/Userland/Libraries/LibGUI/InputBox.cpp
@@ -15,23 +15,23 @@
namespace GUI {
-InputBox::InputBox(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder)
+InputBox::InputBox(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder, InputType input_type)
: Dialog(parent_window)
, m_text_value(text_value)
, m_prompt(prompt)
, m_placeholder(placeholder)
{
set_title(title);
- build();
+ build(input_type);
}
InputBox::~InputBox()
{
}
-int InputBox::show(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder)
+int InputBox::show(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder, InputType input_type)
{
- auto box = InputBox::construct(parent_window, text_value, prompt, title, placeholder);
+ auto box = InputBox::construct(parent_window, text_value, prompt, title, placeholder, input_type);
box->set_resizable(false);
if (parent_window)
box->set_icon(parent_window->icon());
@@ -40,7 +40,7 @@ int InputBox::show(Window* parent_window, String& text_value, StringView const&
return result;
}
-void InputBox::build()
+void InputBox::build(InputType input_type)
{
auto& widget = set_main_widget<Widget>();
@@ -62,7 +62,15 @@ void InputBox::build()
auto& label = label_editor_container.add<Label>(m_prompt);
label.set_fixed_size(text_width, 16);
- m_text_editor = label_editor_container.add<TextBox>();
+ switch (input_type) {
+ case InputType::Text:
+ m_text_editor = label_editor_container.add<TextBox>();
+ break;
+ case InputType::Password:
+ m_text_editor = label_editor_container.add<PasswordBox>();
+ break;
+ }
+
m_text_editor->set_fixed_height(19);
m_text_editor->set_text(m_text_value);
diff --git a/Userland/Libraries/LibGUI/InputBox.h b/Userland/Libraries/LibGUI/InputBox.h
index 5fce685df7..dbf6e9d778 100644
--- a/Userland/Libraries/LibGUI/InputBox.h
+++ b/Userland/Libraries/LibGUI/InputBox.h
@@ -11,19 +11,24 @@
namespace GUI {
+enum class InputType {
+ Text,
+ Password
+};
+
class InputBox : public Dialog {
C_OBJECT(InputBox)
public:
virtual ~InputBox() override;
- static int show(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder = {});
+ static int show(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder = {}, InputType input_type = InputType::Text);
private:
- explicit InputBox(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder);
+ explicit InputBox(Window* parent_window, String& text_value, StringView const& prompt, StringView const& title, StringView const& placeholder, InputType input_type);
String text_value() const { return m_text_value; }
- void build();
+ void build(InputType input_type);
String m_text_value;
String m_prompt;
String m_placeholder;