BsGUIToggleField.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "GUI/BsGUIToggleField.h"
  4. #include "GUI/BsGUILayout.h"
  5. #include "GUI/BsGUIToggle.h"
  6. #include "GUI/BsGUILabel.h"
  7. using namespace std::placeholders;
  8. namespace bs
  9. {
  10. GUIToggleField::GUIToggleField(const PrivatelyConstruct& dummy, const GUIContent& labelContent,
  11. UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel)
  12. :TGUIField(dummy, labelContent, labelWidth, style, dimensions, withLabel), mToggle(nullptr), mValue(false)
  13. {
  14. mToggle = GUIToggle::create(HString(""), getSubStyleName(getToggleStyleType()));
  15. mToggle->onToggled.connect(std::bind(&GUIToggleField::valueChanged, this, _1));
  16. mLayout->addElement(mToggle);
  17. }
  18. void GUIToggleField::setValue(bool value)
  19. {
  20. if (mValue == value)
  21. return;
  22. mValue = value;
  23. if(value)
  24. mToggle->_toggleOn(false);
  25. else
  26. mToggle->_toggleOff(false);
  27. }
  28. void GUIToggleField::setTint(const Color& color)
  29. {
  30. if (mLabel != nullptr)
  31. mLabel->setTint(color);
  32. mToggle->setTint(color);
  33. }
  34. void GUIToggleField::styleUpdated()
  35. {
  36. if (mLabel != nullptr)
  37. mLabel->setStyle(getSubStyleName(getLabelStyleType()));
  38. mToggle->setStyle(getSubStyleName(getToggleStyleType()));
  39. }
  40. void GUIToggleField::valueChanged(bool newValue)
  41. {
  42. setValue(newValue);
  43. onValueChanged(newValue);
  44. }
  45. const String& GUIToggleField::getGUITypeName()
  46. {
  47. static String typeName = "GUIToggleField";
  48. return typeName;
  49. }
  50. const String& GUIToggleField::getToggleStyleType()
  51. {
  52. static String STYLE_TYPE = "EditorFieldToggleInput";
  53. return STYLE_TYPE;
  54. }
  55. }