// SPDX-License-Identifier: MIT // // EmulationStation Desktop Edition // GuiInputConfig.h // // Input device configuration GUI (for keyboards, joysticks and gamepads). // #ifndef ES_CORE_GUIS_GUI_INPUT_CONFIG_H #define ES_CORE_GUIS_GUI_INPUT_CONFIG_H #include "components/BusyComponent.h" #include "components/ComponentGrid.h" #include "components/NinePatchComponent.h" #include "GuiComponent.h" class ComponentList; class TextComponent; class GuiInputConfig : public GuiComponent { public: GuiInputConfig(Window* window, InputConfig* target, bool reconfigureAll, const std::function& okCallback); void update(int deltaTime) override; void onSizeChanged() override; private: // Set text to "msg" + not greyed out. void error(const std::shared_ptr& text, const std::string& msg); // Set text to "PRESS ANYTHING" + not greyed out. void setPress(const std::shared_ptr& text); // Set text to -NOT DEFINED- + greyed out. void setNotDefined(const std::shared_ptr& text); // Set text to "BUTTON 2"/"AXIS 2+", etc. void setAssignedTo(const std::shared_ptr& text, Input input); bool assign(Input input, int inputId); void clearAssignment(int inputId); bool filterTrigger(Input input, InputConfig* config, int inputId); void rowDone(); NinePatchComponent mBackground; ComponentGrid mGrid; std::shared_ptr mTitle; std::shared_ptr mSubtitle1; std::shared_ptr mSubtitle2; std::shared_ptr mList; std::vector> mMappings; std::shared_ptr mButtonGrid; InputConfig* mTargetConfig; // Next input captured by mList will be interpretted as a remap. bool mConfiguringRow; // Move the cursor down after configuring a row and start configuring // the next row until we reach the bottom. bool mConfiguringAll; bool mHoldingInput; Input mHeldInput; int mHeldTime; int mHeldInputId; bool mSkipAxis; BusyComponent mBusyAnim; }; #endif // ES_CORE_GUIS_GUI_INPUT_CONFIG_H