BsGUIToggleField.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "BsGUIToggleField.h"
  2. #include "BsGUILayout.h"
  3. #include "BsGUIToggle.h"
  4. #include "BsGUILabel.h"
  5. #include "BsCmdInputFieldValueChange.h"
  6. using namespace std::placeholders;
  7. namespace BansheeEngine
  8. {
  9. GUIToggleField::GUIToggleField(const PrivatelyConstruct& dummy, const GUIContent& labelContent,
  10. UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel)
  11. :TGUIField(dummy, labelContent, labelWidth, style, dimensions, withLabel), mToggle(nullptr), mValue(false)
  12. {
  13. mToggle = GUIToggle::create(HString(L""), getSubStyleName(getToggleStyleType()));
  14. mToggle->onToggled.connect(std::bind(&GUIToggleField::valueChanged, this, _1));
  15. mLayout->addElement(mToggle);
  16. }
  17. void GUIToggleField::setValue(bool value)
  18. {
  19. if (mValue == value)
  20. return;
  21. mValue = value;
  22. if(value)
  23. mToggle->toggleOn();
  24. else
  25. mToggle->toggleOff();
  26. }
  27. void GUIToggleField::setTint(const Color& color)
  28. {
  29. if (mLabel != nullptr)
  30. mLabel->setTint(color);
  31. mToggle->setTint(color);
  32. }
  33. void GUIToggleField::_setValue(bool value, bool triggerEvent)
  34. {
  35. setValue(value);
  36. if (triggerEvent)
  37. onValueChanged(value);
  38. }
  39. void GUIToggleField::styleUpdated()
  40. {
  41. if (mLabel != nullptr)
  42. mLabel->setStyle(getSubStyleName(getLabelStyleType()));
  43. mToggle->setStyle(getSubStyleName(getToggleStyleType()));
  44. }
  45. void GUIToggleField::valueChanged(bool newValue)
  46. {
  47. CmdInputFieldValueChange<GUIToggleField, bool>::execute(this, newValue);
  48. }
  49. const String& GUIToggleField::getGUITypeName()
  50. {
  51. static String typeName = "GUIToggleField";
  52. return typeName;
  53. }
  54. const String& GUIToggleField::getToggleStyleType()
  55. {
  56. static String STYLE_TYPE = "EditorFieldToggleInput";
  57. return STYLE_TYPE;
  58. }
  59. }