configure_motion_touch.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // SPDX-FileCopyrightText: 2018 Citra Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <memory>
  5. #include <QDialog>
  6. class QLabel;
  7. class QPushButton;
  8. class QStringListModel;
  9. class QVBoxLayout;
  10. namespace InputCommon {
  11. class InputSubsystem;
  12. }
  13. namespace InputCommon::CemuhookUDP {
  14. class CalibrationConfigurationJob;
  15. }
  16. namespace Ui {
  17. class ConfigureMotionTouch;
  18. }
  19. /// A dialog for touchpad calibration configuration.
  20. class CalibrationConfigurationDialog : public QDialog {
  21. Q_OBJECT
  22. public:
  23. explicit CalibrationConfigurationDialog(QWidget* parent, const std::string& host, u16 port);
  24. ~CalibrationConfigurationDialog() override;
  25. private:
  26. Q_INVOKABLE void UpdateLabelText(const QString& text);
  27. Q_INVOKABLE void UpdateButtonText(const QString& text);
  28. QVBoxLayout* layout;
  29. QLabel* status_label;
  30. QPushButton* cancel_button;
  31. std::unique_ptr<InputCommon::CemuhookUDP::CalibrationConfigurationJob> job;
  32. // Configuration results
  33. bool completed{};
  34. u16 min_x{};
  35. u16 min_y{};
  36. u16 max_x{};
  37. u16 max_y{};
  38. friend class ConfigureMotionTouch;
  39. };
  40. class ConfigureMotionTouch : public QDialog {
  41. Q_OBJECT
  42. public:
  43. explicit ConfigureMotionTouch(QWidget* parent, InputCommon::InputSubsystem* input_subsystem_);
  44. ~ConfigureMotionTouch() override;
  45. public slots:
  46. void ApplyConfiguration();
  47. private slots:
  48. void OnUDPAddServer();
  49. void OnUDPDeleteServer();
  50. void OnCemuhookUDPTest();
  51. void OnConfigureTouchCalibration();
  52. void OnConfigureTouchFromButton();
  53. private:
  54. void closeEvent(QCloseEvent* event) override;
  55. Q_INVOKABLE void ShowUDPTestResult(bool result);
  56. void SetConfiguration();
  57. void UpdateUiDisplay();
  58. void ConnectEvents();
  59. bool CanCloseDialog();
  60. std::string GetUDPServerString() const;
  61. InputCommon::InputSubsystem* input_subsystem;
  62. std::unique_ptr<Ui::ConfigureMotionTouch> ui;
  63. QStringListModel* udp_server_list_model;
  64. // Coordinate system of the CemuhookUDP touch provider
  65. int min_x{};
  66. int min_y{};
  67. int max_x{};
  68. int max_y{};
  69. bool udp_test_in_progress{};
  70. std::vector<Settings::TouchFromButtonMap> touch_from_button_maps;
  71. };