DataControllerDefault.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include "../../Include/RmlUi/Core/DataVariable.h"
  3. #include "../../Include/RmlUi/Core/EventListener.h"
  4. #include "../../Include/RmlUi/Core/Header.h"
  5. #include "../../Include/RmlUi/Core/Types.h"
  6. #include "DataController.h"
  7. namespace Rml {
  8. class Element;
  9. class DataModel;
  10. class DataExpression;
  11. using DataExpressionPtr = UniquePtr<DataExpression>;
  12. class DataControllerValue : public DataController, private EventListener {
  13. public:
  14. DataControllerValue(Element* element);
  15. ~DataControllerValue();
  16. bool Initialize(DataModel& model, Element* element, const String& expression, const String& modifier) override;
  17. private:
  18. // Responds to 'Change' events.
  19. void ProcessEvent(Event& event) override;
  20. // Delete this.
  21. void Release() override;
  22. DataAddress address;
  23. };
  24. class DataControllerEvent final : public DataController, private EventListener {
  25. public:
  26. DataControllerEvent(Element* element);
  27. ~DataControllerEvent();
  28. bool Initialize(DataModel& model, Element* element, const String& expression, const String& modifier) override;
  29. protected:
  30. // Responds to the event type specified in the attribute modifier.
  31. void ProcessEvent(Event& event) override;
  32. // Delete this.
  33. void Release() override;
  34. private:
  35. EventId id = EventId::Invalid;
  36. DataExpressionPtr expression;
  37. };
  38. } // namespace Rml