1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 10:45:08 +00:00
serenity/Userland/Libraries/LibGUI/InputBox.h
Timothy Flynn 5b31a3dbc7 LibGUI: Allow more programmatic control over GUI::InputBox
This will be needed for WebDriver, which will require constructing and
controlling dialogs manually. Currently, InputBox will only set its text
value when the OK button is pressed. This changes InputBox to update its
text when done(ExecResult::OK) is invoked in any way.

This also makes the text_value() method public, allows for setting the
text value, and allows for moving-in the initial text value.
2022-11-16 17:23:56 +00:00

45 lines
1.1 KiB
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, networkException <networkexception@serenityos.org>
* Copyright (c) 2022, the SerenityOS developers.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibGUI/Dialog.h>
namespace GUI {
enum class InputType {
Text,
Password
};
class InputBox : public Dialog {
C_OBJECT(InputBox)
public:
virtual ~InputBox() override = default;
static ExecResult show(Window* parent_window, String& text_value, StringView prompt, StringView title, StringView placeholder = {}, InputType input_type = InputType::Text);
String const& text_value() const { return m_text_value; }
void set_text_value(String text_value);
private:
explicit InputBox(Window* parent_window, String text_value, StringView prompt, StringView title, StringView placeholder, InputType input_type);
virtual void on_done(ExecResult) override;
void build(InputType input_type);
String m_text_value;
String m_prompt;
String m_placeholder;
RefPtr<Button> m_ok_button;
RefPtr<Button> m_cancel_button;
RefPtr<TextEditor> m_text_editor;
};
}