22 using std::make_unique;
25 using std::unique_ptr;
44 string GUISelectorHController::CONDITION_DISABLED =
"disabled";
45 string GUISelectorHController::CONDITION_ENABLED =
"enabled";
47 GUISelectorHController::GUISelectorHController(
GUINode* node)
50 this->
disabled = required_dynamic_cast<GUIElementNode*>(
node)->isDisabled();
60 auto& nodeConditions = required_dynamic_cast<GUIElementNode*>(
node)->getActiveConditions();
69 GUIElementController::initialize();
83 if (
node == leftArrowNode) {
84 selectorHController->selectPrevious();
86 if (
node == rightArrowNode) {
87 selectorHController->selectNext();
98 : selectorHController(selectorHController)
99 , leftArrowNode(leftArrowNode)
100 , rightArrowNode(rightArrowNode) {
118 GUIElementController::dispose();
146 auto selectedSelectorHOptionElementController = selectedSelectorHOptionElementNode->
getController();
149 if (selectorHOptionController == selectedSelectorHOptionElementController) {
159 vector<GUINode*> childControllerNodes;
161 required_dynamic_cast<GUIParentNode*>(
node)->getChildControllerNodes(childControllerNodes);
162 for (
auto i = 0; i < childControllerNodes.size(); i++) {
163 auto childControllerNode = childControllerNodes[i];
175 auto disabledCount = 0;
198 auto disabledCount = 0;
217 GUIElementController::handleMouseEvent(
node, event);
221 if (event->
getType() == GUIMouseEvent::MOUSEEVENT_RELEASED) {
222 auto elementNode = required_dynamic_cast<GUIElementNode*>(this->node);
232 GUIElementController::handleKeyboardEvent(event);
235 case GUIKeyboardEvent::KEYCODE_LEFT: {
236 event->setProcessed(
true);
237 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
242 case GUIKeyboardEvent::KEYCODE_RIGHT: {
243 event->setProcessed(
true);
244 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
254 GUIElementController::tick();
282 auto selectorHOptionNode = required_dynamic_cast<GUIElementNode*>(selectorHOptionController->getNode());
283 if (
value.
equals(selectorHOptionNode->getValue())) {
296 auto selectorHOptionNode = required_dynamic_cast<GUIElementNode*>(selectorHOptionController->getNode());
297 selectorHOptionController->unselect();
298 if (selectorHOptionNode->isSelected() ==
true) {
void setFoccussedNode(GUIElementNode *newFoccussedNode)
Set focussed node.
GUI selector horizontal controller.
void onFocusGained() override
On focus gained.
void dispose() override
Dispose controller.
void postLayout() override
Post layout event.
GUIParentNode * innerNode
vector< GUISelectorHOptionController * > selectorHOptionControllers
void initialize() override
Initialize controller after element has been created.
unique_ptr< GUIActionListener > actionListener
void handleKeyboardEvent(GUIKeyboardEvent *event) override
Handle keyboard event.
void selectNext()
Select next node.
void onFocusLost() override
On focus lost.
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_DISABLED
static STATIC_DLL_IMPEXT string CONDITION_ENABLED
void setDisabled(bool disabled) override
Set disabled.
const MutableString & getValue() override
bool isDisabled() override
void onSubTreeChange() override
On sub tree change.
void select(int idx)
Select by index.
int selectedHOptionControllerIdx
void determineSelectorHOptionControllers()
Determine drop down option controllers.
void selectPrevious()
Select previous.
GUI selector horizontal option controller.
int32_t getKeyCode() const
GUIKeyboardEventType getType() const
GUIMouseEventType getType() const
GUI element node conditions.
bool isEventBelongingToNode(GUIMouseEvent *event, Vector2 &nodeCoordinate)
Is event belonging to node.
GUINodeController * getController()
GUIScreenNode * getScreenNode()
GUI parent node base class thats supporting child nodes.
GUI screen node that represents a screen that can be rendered via GUI system.
void removeActionListener(GUIActionListener *listener)
Remove action listener.
void addActionListener(GUIActionListener *listener)
Add action listener.
GUINode * getInnerNodeById(const string &nodeId)
Get inner GUI node by id.
GUINode * getNodeById(const string &nodeId)
Get GUI node by id.
Mutable utf8 aware string class.
MutableString & append(char c)
Append character.
bool equals(const string &s2) const
Equals.
MutableString & reset()
Reset.
GUI action listener interface.