GComboBox.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include <LibGUI/GListView.h>
  3. #include <LibGUI/GWidget.h>
  4. class GButton;
  5. class GTextEditor;
  6. class GComboBox : public GWidget {
  7. C_OBJECT(GComboBox)
  8. public:
  9. explicit GComboBox(GWidget* parent = nullptr);
  10. virtual ~GComboBox() override;
  11. String text() const;
  12. void set_text(const String&);
  13. void open();
  14. void close();
  15. void select_all();
  16. GModel* model() { return m_list_view->model(); }
  17. const GModel* model() const { return m_list_view->model(); }
  18. void set_model(NonnullRefPtr<GModel>);
  19. bool only_allow_values_from_model() const { return m_only_allow_values_from_model; }
  20. void set_only_allow_values_from_model(bool);
  21. int model_column() const { return m_list_view->model_column(); }
  22. void set_model_column(int column) { m_list_view->set_model_column(column); }
  23. Function<void(const String&, const GModelIndex&)> on_change;
  24. Function<void()> on_return_pressed;
  25. protected:
  26. virtual void resize_event(GResizeEvent&) override;
  27. private:
  28. ObjectPtr<GTextEditor> m_editor;
  29. GButton* m_open_button { nullptr };
  30. GWindow* m_list_window { nullptr };
  31. ObjectPtr<GListView> m_list_view;
  32. bool m_only_allow_values_from_model { false };
  33. };