// 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 "core/settings.h" class QCheckBox; class QPushButton; class QTimer; namespace Ui { class ConfigureMouseAdvanced; } class ConfigureMouseAdvanced : public QDialog { Q_OBJECT public: explicit ConfigureMouseAdvanced(QWidget* parent); ~ConfigureMouseAdvanced() override; void ApplyConfiguration(); private: void changeEvent(QEvent* event) override; void RetranslateUI(); /// Load configuration settings. void LoadConfiguration(); /// Restore all buttons to their default values. void RestoreDefaults(); /// Clear all input configuration void ClearAll(); /// Update UI to reflect current configuration. void UpdateButtonLabels(); /// Called when the button was pressed. void HandleClick(QPushButton* button, std::function new_input_setter, InputCommon::Polling::DeviceType type); /// Finish polling and configure input using the input_setter void SetPollingResult(const Common::ParamPackage& params, bool abort); /// Handle key press events. void keyPressEvent(QKeyEvent* event) override; std::unique_ptr ui; /// This will be the the setting function when an input is awaiting configuration. std::optional> input_setter; std::array button_map; std::array buttons_param; std::vector> device_pollers; std::unique_ptr timeout_timer; std::unique_ptr poll_timer; /// A flag to indicate if keyboard keys are okay when configuring an input. If this is false, /// keyboard events are ignored. bool want_keyboard_keys = false; };