Serenity Operating System
at master 31 lines 775 B view raw
1/* 2 * Copyright (c) 2021, Matthew Olsson <mattco@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/NumericLimits.h> 10#include <LibGUI/TextBox.h> 11 12class NumericInput final : public GUI::TextBox { 13 C_OBJECT(NumericInput) 14public: 15 virtual ~NumericInput() override = default; 16 17 Function<void(i32)> on_number_changed; 18 19 void set_min_number(i32 number); 20 void set_max_number(i32 number); 21 void set_current_number(i32 number, GUI::AllowCallback allow_callback = GUI::AllowCallback::Yes); 22 23private: 24 NumericInput(); 25 void on_focus_lost(); 26 27 bool m_needs_text_reset { false }; 28 i32 m_current_number { 0 }; 29 i32 m_min_number { NumericLimits<i32>::min() }; 30 i32 m_max_number { NumericLimits<i32>::max() }; 31};