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. /// Load configuration settings.
  23. void loadConfiguration();
  24. /// Restore all buttons to their default values.
  25. void restoreDefaults();
  26. /// Clear all input configuration
  27. void ClearAll();
  28. /// Update UI to reflect current configuration.
  29. void updateButtonLabels();
  30. /// Called when the button was pressed.
  31. void handleClick(QPushButton* button,
  32. std::function<void(const Common::ParamPackage&)> new_input_setter,
  33. InputCommon::Polling::DeviceType type);
  34. /// Finish polling and configure input using the input_setter
  35. void setPollingResult(const Common::ParamPackage& params, bool abort);
  36. /// Handle key press events.
  37. void keyPressEvent(QKeyEvent* event) override;
  38. std::unique_ptr<Ui::ConfigureMouseAdvanced> ui;
  39. /// This will be the the setting function when an input is awaiting configuration.
  40. std::optional<std::function<void(const Common::ParamPackage&)>> input_setter;
  41. std::array<QPushButton*, Settings::NativeMouseButton::NumMouseButtons> button_map;
  42. std::array<Common::ParamPackage, Settings::NativeMouseButton::NumMouseButtons> buttons_param;
  43. std::vector<std::unique_ptr<InputCommon::Polling::DevicePoller>> device_pollers;
  44. std::unique_ptr<QTimer> timeout_timer;
  45. std::unique_ptr<QTimer> poll_timer;
  46. /// A flag to indicate if keyboard keys are okay when configuring an input. If this is false,
  47. /// keyboard events are ignored.
  48. bool want_keyboard_keys = false;
  49. };