mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 13:52:43 +00:00 
			
		
		
		
	 ca8918f310
			
		
	
	
		ca8918f310
		
	
	
	
	
		
			
			This should be a more convenient API and a better UX for apps that want simple integer input from the user.
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			2.4 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,
 | |
|     NonemptyText,
 | |
|     Password,
 | |
|     Numeric
 | |
| };
 | |
| 
 | |
| class InputBox : public Dialog {
 | |
|     C_OBJECT_ABSTRACT(InputBox)
 | |
| public:
 | |
|     virtual ~InputBox() override = default;
 | |
| 
 | |
|     static ExecResult show(Window* parent_window, String& text_value, StringView prompt, StringView title, InputType input_type = InputType::Text, StringView placeholder = {}, RefPtr<Gfx::Bitmap const> icon = nullptr);
 | |
|     static ErrorOr<ExecResult> try_show(Window* parent_window, String& text_value, StringView prompt, StringView title, InputType input_type = InputType::Text, StringView placeholder = {}, RefPtr<Gfx::Bitmap const> icon = nullptr);
 | |
|     static ErrorOr<NonnullRefPtr<InputBox>> create(Window* parent_window, String text_value, StringView prompt, StringView title, InputType input_type, RefPtr<Gfx::Bitmap const> icon = nullptr);
 | |
| 
 | |
|     static ErrorOr<ExecResult> show_numeric(Window* parent_window, int& value, int min, int max, StringView title, StringView prompt = {}, RefPtr<Gfx::Bitmap const> icon = nullptr);
 | |
|     static ErrorOr<NonnullRefPtr<InputBox>> create_numeric(Window* parent_window, int value, StringView title, StringView prompt = {}, RefPtr<Gfx::Bitmap const> icon = nullptr);
 | |
| 
 | |
|     String const& text_value() const { return m_text_value; }
 | |
|     void set_text_value(String);
 | |
| 
 | |
|     int numeric_value() const { return m_numeric_value; }
 | |
|     void set_numeric_value(int);
 | |
| 
 | |
|     void set_placeholder(StringView);
 | |
|     void set_range(int min, int max);
 | |
| 
 | |
| private:
 | |
|     InputBox(Window* parent_window, String text_value, String title, String prompt, InputType input_type, RefPtr<Gfx::Bitmap const> icon);
 | |
|     InputBox(Window* parent_window, int value, String title, String prompt, RefPtr<Gfx::Bitmap const> icon);
 | |
| 
 | |
|     virtual void on_done(ExecResult) override;
 | |
|     ErrorOr<void> build();
 | |
| 
 | |
|     int m_numeric_value { 0 };
 | |
|     String m_text_value;
 | |
|     String m_prompt;
 | |
|     InputType m_input_type;
 | |
| 
 | |
|     RefPtr<Button> m_ok_button;
 | |
|     RefPtr<Button> m_cancel_button;
 | |
|     RefPtr<TextEditor> m_text_editor;
 | |
|     RefPtr<SpinBox> m_spinbox;
 | |
|     RefPtr<Label> m_prompt_label;
 | |
|     RefPtr<Widget> m_label_container;
 | |
|     RefPtr<Gfx::Bitmap const> m_icon;
 | |
| };
 | |
| 
 | |
| }
 |