TextBox.h 1003 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibGUI/TextEditor.h>
  8. namespace GUI {
  9. class TextBox : public TextEditor {
  10. C_OBJECT(TextBox)
  11. public:
  12. TextBox();
  13. virtual ~TextBox() override;
  14. Function<void()> on_up_pressed;
  15. Function<void()> on_down_pressed;
  16. void set_history_enabled(bool enabled) { m_history_enabled = enabled; }
  17. void add_current_text_to_history();
  18. private:
  19. virtual void keydown_event(GUI::KeyEvent&) override;
  20. bool has_no_history() const { return !m_history_enabled || m_history.is_empty(); }
  21. bool can_go_backwards_in_history() const { return m_history_index > 0; }
  22. bool can_go_forwards_in_history() const { return m_history_index < static_cast<int>(m_history.size()) - 1; }
  23. void add_input_to_history(String);
  24. bool m_history_enabled { false };
  25. Vector<String> m_history;
  26. int m_history_index { -1 };
  27. String m_saved_input;
  28. };
  29. }