TDME2 1.9.121
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GUIMenuItemController.cpp
Go to the documentation of this file.
2
3#include <string>
4
5#include <tdme/tdme.h>
17#include <tdme/gui/GUI.h>
20
21using std::string;
22
34using tdme::gui::GUI;
37
38string GUIMenuItemController::CONDITION_SELECTED = "selected";
39string GUIMenuItemController::CONDITION_UNSELECTED = "unselected";
40
41GUIMenuItemController::GUIMenuItemController(GUINode* 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 &&
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:66
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
void setDisabled(bool disabled) override
Set disabled.
GUI element node conditions.
GUI node base class.
Definition: GUINode.h:63
GUIParentNode * getParentControllerNode()
Definition: GUINode.cpp:1053
bool isEventBelongingToNode(GUIMouseEvent *event, Vector2 &position)
Is event belonging to node.
Definition: GUINode.cpp:973
GUINodeController * getController()
Definition: GUINode.h:586
GUI parent node base class thats supporting child nodes.
Definition: GUIParentNode.h:43
GUI screen node that represents a screen that can be rendered via GUI system.
Definition: GUIScreenNode.h:57
Mutable string class.
Definition: MutableString.h:16
String tools class.
Definition: StringTools.h:20