TDME2  1.9.200
GUIContextMenuController.cpp
Go to the documentation of this file.
2 
3 #include <string>
4 
5 #include <tdme/tdme.h>
11 #include <tdme/gui/nodes/GUINode.h>
13 #include <tdme/gui/GUI.h>
14 #include <tdme/utilities/Console.h>
17 
18 using std::to_string;
19 
27 using tdme::gui::GUI;
31 
32 GUIContextMenuController::GUIContextMenuController(GUINode* node)
33  : GUIElementController(node)
34 {
35 }
36 
38 {
39  //
40  GUIElementController::initialize();
41 }
42 
44 {
45  GUIElementController::dispose();
46 }
47 
49 {
50 }
51 
53 {
54  vector<GUINode*> childControllerNodes;
55  menuItemControllers.clear();
56  required_dynamic_cast<GUIParentNode*>(node)->getChildControllerNodes(childControllerNodes);
57  for (auto i = 0; i < childControllerNodes.size(); i++) {
58  auto childControllerNode = childControllerNodes[i];
59  auto childController = childControllerNode->getController();
60  auto menuItemController = dynamic_cast<GUIContextMenuItemController*>(childController);
61  if (menuItemController != nullptr) {
62  menuItemControllers.push_back(menuItemController);
63  }
64  }
65 }
66 
68 {
69  if (selectedMenuItemControllerIdx == -1) return;
70  if (menuItemControllers.empty() == true) return;
72 }
73 
75 {
77  if (menuItemControllers.empty() == true) return;
79  selectNext();
80 }
81 
83 {
85  if (menuItemControllers.empty() == true) return;
86 
87  auto disabledItems = 0;
88  while (disabledItems < menuItemControllers.size()) {
93  disabledItems++;
94  }
95 
96  if (disabledItems == menuItemControllers.size()) {
98  return;
99  }
100 
102 }
103 
105 {
107  if (menuItemControllers.empty() == true) return;
109 
110  auto disabledItems = 0;
111  while (disabledItems < menuItemControllers.size()) {
116  disabledItems++;
117  }
118 
119  if (disabledItems == menuItemControllers.size()) {
121  return;
122  }
123 
125 }
126 
128 {
130  if (selectedMenuItemControllerIdx == -1) return;
131  menuItemControllers[selectedMenuItemControllerIdx]->handleKeyboardEvent(event);
132 }
133 
135 {
136  GUIElementController::handleMouseEvent(node, event);
137 }
138 
140 {
141  GUIElementController::handleKeyboardEvent(event);
142  if (event->isProcessed() == true) return;
143  switch (event->getKeyCode()) {
144  case GUIKeyboardEvent::KEYCODE_UP: {
145  event->setProcessed(true);
146  if (event->getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
147  selectPrevious();
148  }
149  }
150  break;
151  case GUIKeyboardEvent::KEYCODE_DOWN: {
152  event->setProcessed(true);
153  if (event->getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
154  selectNext();
155  }
156  }
157  break;
158  }
159 }
160 
162 {
163  GUIElementController::tick();
164 }
165 
167 {
168 }
169 
171 {
172 }
173 
175 {
176  return true;
177 }
178 
180 {
181  value.reset();
182  return value;
183 }
184 
186 {
188 }
189 
193 }
GUI module class.
Definition: GUI.h:64
void initialize() override
Initialize controller after element has been created.
void handleKeyboardEvent(GUIKeyboardEvent *event) override
Handle keyboard event.
void handleCurrentMenuItemKeyboardEvent(GUIKeyboardEvent *event)
Handle current menu item keyboard event.
void determineMenuItemControllers()
Determine menu item controllers.
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.
vector< GUIContextMenuItemController * > menuItemControllers
GUIKeyboardEventType getType() const
GUI node base class.
Definition: GUINode.h:64
GUI parent node base class thats supporting child nodes.
Definition: GUIParentNode.h:42
Console class.
Definition: Console.h:29
Mutable utf8 aware string class.
Definition: MutableString.h:23
MutableString & reset()
Reset.
Definition: MutableString.h:95
String tools class.
Definition: StringTools.h:22