GButton.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include <LibGUI/GWidget.h>
  3. #include <LibGUI/GStyle.h>
  4. #include <AK/AKString.h>
  5. #include <AK/Function.h>
  6. #include <SharedGraphics/GraphicsBitmap.h>
  7. class GButton : public GWidget {
  8. public:
  9. explicit GButton(GWidget* parent);
  10. virtual ~GButton() override;
  11. String caption() const { return m_caption; }
  12. void set_caption(String&&);
  13. void set_icon(RetainPtr<GraphicsBitmap>&& icon) { m_icon = move(icon); }
  14. const GraphicsBitmap* icon() const { return m_icon.ptr(); }
  15. GraphicsBitmap* icon() { return m_icon.ptr(); }
  16. Function<void(GButton&)> on_click;
  17. void set_button_style(GButtonStyle style) { m_button_style = style; }
  18. GButtonStyle button_style() const { return m_button_style; }
  19. private:
  20. virtual void paint_event(GPaintEvent&) override;
  21. virtual void mousedown_event(GMouseEvent&) override;
  22. virtual void mouseup_event(GMouseEvent&) override;
  23. virtual void mousemove_event(GMouseEvent&) override;
  24. virtual void enter_event(GEvent&) override;
  25. virtual void leave_event(GEvent&) override;
  26. virtual const char* class_name() const override { return "GButton"; }
  27. String m_caption;
  28. RetainPtr<GraphicsBitmap> m_icon;
  29. GButtonStyle m_button_style { GButtonStyle::Normal };
  30. bool m_being_pressed { false };
  31. bool m_tracking_cursor { false };
  32. bool m_hovered { false };
  33. };