GColumnsView.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <AK/Vector.h>
  3. #include <LibGUI/GAbstractView.h>
  4. class GColumnsView : public GAbstractView {
  5. C_OBJECT(GColumnsView)
  6. public:
  7. int model_column() const { return m_model_column; }
  8. void set_model_column(int column) { m_model_column = column; }
  9. private:
  10. GColumnsView(GWidget* parent = nullptr);
  11. virtual ~GColumnsView();
  12. GModelIndex index_at_event_position(const Point&) const;
  13. void push_column(GModelIndex& parent_index);
  14. void update_column_sizes();
  15. int item_height() const { return 16; }
  16. int icon_size() const { return 16; }
  17. int icon_spacing() const { return 2; }
  18. int text_padding() const { return 2; }
  19. virtual void did_update_model() override;
  20. virtual void paint_event(GPaintEvent&) override;
  21. virtual void mousedown_event(GMouseEvent& event) override;
  22. virtual void doubleclick_event(GMouseEvent& event) override;
  23. virtual void context_menu_event(GContextMenuEvent& event) override;
  24. virtual void keydown_event(GKeyEvent& event) override;
  25. struct Column {
  26. GModelIndex parent_index;
  27. int width;
  28. // TODO: per-column vertical scroll?
  29. };
  30. Vector<Column> m_columns;
  31. int m_model_column;
  32. };