Serenity Operating System
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};