// Copyright 2017 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. #pragma once #include <memory> #include <vector> #include <QString> #include <QWidget> class ControlGroupBox; class InputConfig; class IOWindow; class MappingBool; class MappingButton; class MappingNumeric; class MappingWindow; class MappingRadio; class QGroupBox; namespace ControllerEmu { class Control; class ControlGroup; class EmulatedController; } // namespace ControllerEmu namespace ciface { namespace Core { class Device; } } // namespace ciface class MappingWidget : public QWidget { Q_OBJECT public: explicit MappingWidget(MappingWindow* window); ControllerEmu::EmulatedController* GetController() const; std::shared_ptr<ciface::Core::Device> GetDevice() const; MappingWindow* GetParent() const; bool IsIterativeInput() const; void NextButton(MappingButton* button); virtual void LoadSettings() = 0; virtual void SaveSettings() = 0; virtual InputConfig* GetConfig() = 0; void Update(); protected: int GetPort() const; QGroupBox* CreateGroupBox(const QString& name, ControllerEmu::ControlGroup* group); private: MappingWindow* m_parent; bool m_first = true; std::vector<MappingBool*> m_bools; std::vector<MappingRadio*> m_radio; std::vector<MappingButton*> m_buttons; std::vector<MappingNumeric*> m_numerics; };