2
0

UICheckBox.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #pragma once
  4. #include <UI/UIStaticText.h>
  5. #include <UI/UITexturedQuad.h>
  6. /// Check box control that allows the user to select between true or false
  7. class UICheckBox : public UIStaticText
  8. {
  9. public:
  10. JPH_DECLARE_RTTI_VIRTUAL(UICheckBox)
  11. enum EState
  12. {
  13. STATE_UNCHECKED,
  14. STATE_CHECKED
  15. };
  16. using ClickAction = function<void(EState)>;
  17. /// Properties
  18. void SetState(EState inState) { mState = inState; }
  19. EState GetState() const { return mState; }
  20. void SetClickAction(ClickAction inAction) { mClickAction = inAction; }
  21. void SetUncheckedStateQuad(const UITexturedQuad &inQuad) { mUncheckedState = inQuad; }
  22. void SetCheckedStateQuad(const UITexturedQuad &inQuad) { mCheckedState = inQuad; }
  23. /// When added to a parent
  24. virtual void OnAdded() override;
  25. /// Cloning / copying
  26. virtual void CopyTo(UIElement *ioElement) const override;
  27. /// Actions
  28. virtual bool MouseDown(int inX, int inY) override;
  29. virtual bool MouseUp(int inX, int inY) override;
  30. virtual bool MouseMove(int inX, int inY) override;
  31. virtual void MouseCancel() override;
  32. /// Draw element
  33. virtual void Draw() const override;
  34. protected:
  35. /// Properties
  36. Color mDownTextColor { Color::sGrey };
  37. Color mHighlightTextColor { Color::sWhite };
  38. int mPaddingBetweenCheckboxAndText = 8;
  39. ClickAction mClickAction;
  40. UITexturedQuad mUncheckedState;
  41. UITexturedQuad mCheckedState;
  42. /// State
  43. EState mState = STATE_UNCHECKED;
  44. bool mPressed = false;
  45. };