TDME2  1.9.200
GUIMenuItemController.cpp
Go to the documentation of this file.
2 
3 #include <string>
4 
5 #include <tdme/tdme.h>
12 #include <tdme/gui/nodes/GUINode.h>
17 #include <tdme/gui/GUI.h>
20 
21 using std::string;
22 
34 using tdme::gui::GUI;
37 
38 string GUIMenuItemController::CONDITION_SELECTED = "selected";
39 string GUIMenuItemController::CONDITION_UNSELECTED = "unselected";
40 
41 GUIMenuItemController::GUIMenuItemController(GUINode* node)
42  : GUIElementController(node)
43 {
44  this->selected = required_dynamic_cast<GUIElementNode*>(node)->isSelected();
45 }
46 
48 {
49  return selected;
50 }
51 
53 {
54  auto& nodeConditions = required_dynamic_cast<GUIElementNode*>(node)->getActiveConditions();
55  nodeConditions.remove(this->selected == true?CONDITION_SELECTED:CONDITION_UNSELECTED);
56  this->selected = true;
57  nodeConditions.add(this->selected == true?CONDITION_SELECTED:CONDITION_UNSELECTED);
58 }
59 
61 {
62  auto& nodeConditions = required_dynamic_cast<GUIElementNode*>(node)->getActiveConditions();
63  nodeConditions.remove(this->selected == true?CONDITION_SELECTED:CONDITION_UNSELECTED);
64  this->selected = false;
65  nodeConditions.add(this->selected == true?CONDITION_SELECTED:CONDITION_UNSELECTED);
66 }
67 
69 {
70  //
72  while (true == true) {
73  if (dynamic_cast<GUIMenuHeaderItemController*>(menuHeaderItemNode->getController()) != nullptr) {
74  break;
75  }
77  }
78  if (selected == true) {
79  select();
80  } else {
81  unselect();
82  }
84 
85  //
86  GUIElementController::initialize();
87 }
88 
90 {
91 }
92 
94 {
95  GUIElementController::dispose();
96 }
97 
99 {
100  GUIElementController::handleMouseEvent(node, event);
101  if (node == this->node &&
102  node->isEventBelongingToNode(event) &&
103  event->getType() == GUIMouseEvent::MOUSEEVENT_RELEASED &&
104  event->getButton() == MOUSE_BUTTON_LEFT) {
105  auto menuHeaderItemController = required_dynamic_cast<GUIMenuHeaderItemController*>(menuHeaderItemNode->getController());
106  menuHeaderItemController->toggleOpenState();
107  menuHeaderItemController->unselect();
108  menuHeaderItemController->unselectSelection();
109  event->setProcessed(true);
110  }
111 }
112 
114 {
115  GUIElementController::handleKeyboardEvent(event);
116  if (isDisabled() == false && event->getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
117  switch (event->getKeyCode()) {
118  case GUIKeyboardEvent::KEYCODE_SPACE: {
119  auto menuHeaderItemController = required_dynamic_cast<GUIMenuHeaderItemController*>(menuHeaderItemNode->getController());
120  menuHeaderItemController->toggleOpenState();
121  menuHeaderItemController->unselect();
122  menuHeaderItemController->unselectSelection();
123  event->setProcessed(true);
124  }
125  }
126  }
127 }
128 
130 {
131  GUIElementController::tick();
132 }
133 
135 {
136 }
137 
139 {
140 }
141 
143 {
144  return false;
145 }
146 
148 {
149  return value;
150 }
151 
153 {
154 }
#define MOUSE_BUTTON_LEFT
GUI module class.
Definition: GUI.h:64
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_UNSELECTED
static STATIC_DLL_IMPEXT string CONDITION_SELECTED
GUIKeyboardEventType getType() const
GUIMouseEventType getType() const
Definition: GUIMouseEvent.h:78
void setDisabled(bool disabled) override
Set disabled.
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
GUINodeController * getController()
Definition: GUINode.h:661
GUIParentNode * getParentControllerNode()
Definition: GUINode.cpp:1011
GUI parent node base class thats supporting child nodes.
Definition: GUIParentNode.h:42
GUI screen node that represents a screen that can be rendered via GUI system.
Definition: GUIScreenNode.h:72
Mutable utf8 aware string class.
Definition: MutableString.h:23
String tools class.
Definition: StringTools.h:22