configure_mouse_advanced.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright 2016 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include <optional>
  7. #include <QDialog>
  8. #include "core/settings.h"
  9. class QCheckBox;
  10. class QPushButton;
  11. class QTimer;
  12. namespace Ui {
  13. class ConfigureMouseAdvanced;
  14. }
  15. class ConfigureMouseAdvanced : public QDialog {
  16. Q_OBJECT
  17. public:
  18. explicit ConfigureMouseAdvanced(QWidget* parent);
  19. ~ConfigureMouseAdvanced() override;
  20. void applyConfiguration();
  21. private:
  22. std::unique_ptr<Ui::ConfigureMouseAdvanced> ui;
  23. /// This will be the the setting function when an input is awaiting configuration.
  24. std::optional<std::function<void(const Common::ParamPackage&)>> input_setter;
  25. std::array<QPushButton*, Settings::NativeMouseButton::NumMouseButtons> button_map;
  26. std::array<Common::ParamPackage, Settings::NativeMouseButton::NumMouseButtons> buttons_param;
  27. std::vector<std::unique_ptr<InputCommon::Polling::DevicePoller>> device_pollers;
  28. std::unique_ptr<QTimer> timeout_timer;
  29. std::unique_ptr<QTimer> poll_timer;
  30. /// A flag to indicate if keyboard keys are okay when configuring an input. If this is false,
  31. /// keyboard events are ignored.
  32. bool want_keyboard_keys = false;
  33. /// Load configuration settings.
  34. void loadConfiguration();
  35. /// Restore all buttons to their default values.
  36. void restoreDefaults();
  37. /// Clear all input configuration
  38. void ClearAll();
  39. /// Update UI to reflect current configuration.
  40. void updateButtonLabels();
  41. /// Called when the button was pressed.
  42. void handleClick(QPushButton* button,
  43. std::function<void(const Common::ParamPackage&)> new_input_setter,
  44. InputCommon::Polling::DeviceType type);
  45. /// Finish polling and configure input using the input_setter
  46. void setPollingResult(const Common::ParamPackage& params, bool abort);
  47. /// Handle key press events.
  48. void keyPressEvent(QKeyEvent* event) override;
  49. };