configure_vibration.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2020 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "core/settings.h"
  5. #include "ui_configure_vibration.h"
  6. #include "yuzu/configuration/configure_vibration.h"
  7. ConfigureVibration::ConfigureVibration(QWidget* parent)
  8. : QDialog(parent), ui(std::make_unique<Ui::ConfigureVibration>()) {
  9. ui->setupUi(this);
  10. vibration_groupboxes = {
  11. ui->vibrationGroupPlayer1, ui->vibrationGroupPlayer2, ui->vibrationGroupPlayer3,
  12. ui->vibrationGroupPlayer4, ui->vibrationGroupPlayer5, ui->vibrationGroupPlayer6,
  13. ui->vibrationGroupPlayer7, ui->vibrationGroupPlayer8,
  14. };
  15. vibration_spinboxes = {
  16. ui->vibrationSpinPlayer1, ui->vibrationSpinPlayer2, ui->vibrationSpinPlayer3,
  17. ui->vibrationSpinPlayer4, ui->vibrationSpinPlayer5, ui->vibrationSpinPlayer6,
  18. ui->vibrationSpinPlayer7, ui->vibrationSpinPlayer8,
  19. };
  20. const auto& players = Settings::values.players.GetValue();
  21. for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
  22. vibration_groupboxes[i]->setChecked(players[i].vibration_enabled);
  23. vibration_spinboxes[i]->setValue(players[i].vibration_strength);
  24. }
  25. ui->checkBoxAccurateVibration->setChecked(
  26. Settings::values.enable_accurate_vibrations.GetValue());
  27. if (!Settings::IsConfiguringGlobal()) {
  28. ui->checkBoxAccurateVibration->setDisabled(true);
  29. }
  30. RetranslateUI();
  31. }
  32. ConfigureVibration::~ConfigureVibration() = default;
  33. void ConfigureVibration::ApplyConfiguration() {
  34. auto& players = Settings::values.players.GetValue();
  35. for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
  36. players[i].vibration_enabled = vibration_groupboxes[i]->isChecked();
  37. players[i].vibration_strength = vibration_spinboxes[i]->value();
  38. }
  39. Settings::values.enable_accurate_vibrations.SetValue(
  40. ui->checkBoxAccurateVibration->isChecked());
  41. }
  42. void ConfigureVibration::changeEvent(QEvent* event) {
  43. if (event->type() == QEvent::LanguageChange) {
  44. RetranslateUI();
  45. }
  46. QDialog::changeEvent(event);
  47. }
  48. void ConfigureVibration::RetranslateUI() {
  49. ui->retranslateUi(this);
  50. }