GButton.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include <LibGUI/GWidget.h>
  3. #include <SharedGraphics/StylePainter.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(const 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(ButtonStyle style) { m_button_style = style; }
  18. ButtonStyle button_style() const { return m_button_style; }
  19. void click();
  20. virtual const char* class_name() const override { return "GButton"; }
  21. private:
  22. virtual void paint_event(GPaintEvent&) override;
  23. virtual void mousedown_event(GMouseEvent&) override;
  24. virtual void mouseup_event(GMouseEvent&) override;
  25. virtual void mousemove_event(GMouseEvent&) override;
  26. virtual void enter_event(GEvent&) override;
  27. virtual void leave_event(GEvent&) override;
  28. String m_caption;
  29. RetainPtr<GraphicsBitmap> m_icon;
  30. ButtonStyle m_button_style { ButtonStyle::Normal };
  31. bool m_being_pressed { false };
  32. bool m_hovered { false };
  33. };