TDME2  1.9.200
GUICheckboxController.cpp
Go to the documentation of this file.
2 
3 #include <tdme/tdme.h>
11 #include <tdme/gui/GUI.h>
12 #include <tdme/utilities/Console.h>
14 
23 using tdme::gui::GUI;
26 
27 string GUICheckboxController::CONDITION_CHECKED = "checked";
28 string GUICheckboxController::CONDITION_UNCHECKED = "unchecked";
29 string GUICheckboxController::CONDITION_DISABLED = "disabled";
30 string GUICheckboxController::CONDITION_ENABLED = "enabled";
31 
32 GUICheckboxController::GUICheckboxController(GUINode* node)
33  : GUIElementController(node)
34 {
35  this->checked = required_dynamic_cast<GUIElementNode*>(node)->isSelected();
36  this->disabled = required_dynamic_cast<GUIElementNode*>(node)->isDisabled();
37 }
38 
40 {
41  return checked;
42 }
43 
45 {
46  auto& nodeConditions = required_dynamic_cast<GUIElementNode*>(node)->getActiveConditions();
47  nodeConditions.remove(this->checked == true?CONDITION_CHECKED:CONDITION_UNCHECKED);
48  this->checked = checked;
49  nodeConditions.add(this->checked == true?CONDITION_CHECKED:CONDITION_UNCHECKED);
50 }
51 
53 {
54  return disabled;
55 }
56 
58 {
59  auto& nodeConditions = required_dynamic_cast<GUIElementNode*>(node)->getActiveConditions();
60  nodeConditions.remove(this->disabled == true?CONDITION_DISABLED:CONDITION_ENABLED);
61  this->disabled = disabled;
62  nodeConditions.add(this->disabled == true?CONDITION_DISABLED:CONDITION_ENABLED);
63 }
64 
66 {
67  //
69 
70  //
71  GUIElementController::initialize();
72 }
73 
75 {
76  GUIElementController::dispose();
77 }
78 
80 {
81 }
82 
84 {
85  GUIElementController::handleMouseEvent(node, event);
86  if (disabled == false && node == this->node && node->isEventBelongingToNode(event) && event->getButton() == MOUSE_BUTTON_LEFT) {
87  event->setProcessed(true);
88  if (event->getType() == GUIMouseEvent::MOUSEEVENT_RELEASED) {
89  setChecked(checked == true ? false : true);
90  node->getScreenNode()->getGUI()->setFoccussedNode(required_dynamic_cast<GUIElementNode*>(node));
91  node->getScreenNode()->forwardChange(required_dynamic_cast<GUIElementNode*>(node));
92  }
93  }
94 }
95 
97 {
98  GUIElementController::handleKeyboardEvent(event);
99  if (disabled == false) {
100  switch (event->getKeyCode()) {
101  case GUIKeyboardEvent::KEYCODE_SPACE: {
102  event->setProcessed(true);
103  if (event->getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
104  setChecked(checked == true ? false : true);
105  node->getScreenNode()->forwardChange(required_dynamic_cast<GUIElementNode*>(node));
106  }
107  }
108  break;
109  default: {
110  break;
111  }
112  }
113 
114  }
115 }
116 
118 {
119  GUIElementController::tick();
120 }
121 
123 {
124 }
125 
127 {
128 }
129 
131 {
132  return true;
133 }
134 
136 {
137  value.reset();
138  if (checked == true) {
139  value.append(required_dynamic_cast<GUIElementNode*>(node)->getValue());
140  }
141  return value;
142 }
143 
145 {
146  setChecked(value.equals(required_dynamic_cast<GUIElementNode*>(node)->getValue()));
147 }
#define MOUSE_BUTTON_LEFT
GUI module class.
Definition: GUI.h:64
void setFoccussedNode(GUIElementNode *newFoccussedNode)
Set focussed node.
Definition: GUI.cpp:267
void dispose() override
Dispose controller.
void postLayout() override
Post layout event.
void initialize() override
Initialize controller after element has been created.
void handleKeyboardEvent(GUIKeyboardEvent *event) override
Handle keyboard event.
void setValue(const MutableString &value) override
Set value.
void handleMouseEvent(GUINode *node, GUIMouseEvent *event) override
Handle mouse event.
void tick() override
Tick method will be executed once per frame.
static STATIC_DLL_IMPEXT string CONDITION_UNCHECKED
static STATIC_DLL_IMPEXT string CONDITION_DISABLED
static STATIC_DLL_IMPEXT string CONDITION_ENABLED
void setDisabled(bool disabled) override
Set disabled.
static STATIC_DLL_IMPEXT string CONDITION_CHECKED
GUIKeyboardEventType getType() const
GUIMouseEventType getType() const
Definition: GUIMouseEvent.h:78
GUI element node conditions.
GUI node base class.
Definition: GUINode.h:64
bool isEventBelongingToNode(GUIMouseEvent *event, Vector2 &nodeCoordinate)
Is event belonging to node.
Definition: GUINode.h:604
GUIScreenNode * getScreenNode()
Definition: GUINode.h:325
GUI screen node that represents a screen that can be rendered via GUI system.
Definition: GUIScreenNode.h:72
void forwardChange(GUIElementNode *node)
Forward change event.
Console class.
Definition: Console.h:29
Mutable utf8 aware string class.
Definition: MutableString.h:23
MutableString & append(char c)
Append character.
bool equals(const string &s2) const
Equals.
MutableString & reset()
Reset.
Definition: MutableString.h:95