// Copyright 2016 Citra Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include #include #include "yuzu/configuration/configure_input_advanced.h" #include "yuzu/configuration/configure_input_player.h" #include "ui_configure_input.h" class QCheckBox; class QString; class QTimer; class InputProfiles; namespace InputCommon { class InputSubsystem; } namespace Ui { class ConfigureInput; } void OnDockedModeChanged(bool last_state, bool new_state); class ConfigureInput : public QWidget { Q_OBJECT public: explicit ConfigureInput(QWidget* parent = nullptr); ~ConfigureInput() override; /// Initializes the input dialog with the given input subsystem. void Initialize(InputCommon::InputSubsystem* input_subsystem_, std::size_t max_players = 8); /// Save all button configurations to settings file. void ApplyConfiguration(); QList GetSubTabs() const; private: void changeEvent(QEvent* event) override; void RetranslateUI(); void ClearAll(); void UpdateDockedState(bool is_handheld); void UpdateAllInputDevices(); /// Load configuration settings. void LoadConfiguration(); void LoadPlayerControllerIndices(); /// Restore all buttons to their default values. void RestoreDefaults(); std::unique_ptr ui; std::unique_ptr profiles; std::array player_controllers; std::array player_tabs; std::array player_connected; ConfigureInputAdvanced* advanced; };