diff options
author | Tom <tomut@yahoo.com> | 2021-07-24 22:59:39 -0600 |
---|---|---|
committer | Ali Mohammad Pur <Ali.mpfard@gmail.com> | 2021-07-26 21:55:18 +0430 |
commit | 81c183e06a2ac3d14f5fda79e2187275521af6f5 (patch) | |
tree | c6372c236d09a2e75719959fd0d12fd4e6a25b72 /Userland/Libraries/LibGUI | |
parent | 5745e8e18cd7966c66e1b16b1100cf1f43e1af77 (diff) | |
download | serenity-81c183e06a2ac3d14f5fda79e2187275521af6f5.zip |
LibGUI: Add InputType enum to allow creating a password InputBox dialog
Diffstat (limited to 'Userland/Libraries/LibGUI')
-rw-r--r-- | Userland/Libraries/LibGUI/InputBox.cpp | 20 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/InputBox.h | 11 |
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; |