configure_tas.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright 2021 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include <QFileDialog>
  5. #include <QMessageBox>
  6. #include "common/fs/fs.h"
  7. #include "common/fs/path_util.h"
  8. #include "common/settings.h"
  9. #include "ui_configure_tas.h"
  10. #include "yuzu/configuration/configure_tas.h"
  11. #include "yuzu/uisettings.h"
  12. ConfigureTasDialog::ConfigureTasDialog(QWidget* parent)
  13. : QDialog(parent), ui(std::make_unique<Ui::ConfigureTas>()) {
  14. ui->setupUi(this);
  15. setFocusPolicy(Qt::ClickFocus);
  16. setWindowTitle(tr("TAS Configuration"));
  17. connect(ui->tas_path_button, &QToolButton::pressed, this,
  18. [this] { SetDirectory(DirectoryTarget::TAS, ui->tas_path_edit); });
  19. LoadConfiguration();
  20. }
  21. ConfigureTasDialog::~ConfigureTasDialog() = default;
  22. void ConfigureTasDialog::LoadConfiguration() {
  23. ui->tas_path_edit->setText(
  24. QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::TASDir)));
  25. ui->tas_enable->setChecked(Settings::values.tas_enable.GetValue());
  26. ui->tas_control_swap->setChecked(Settings::values.tas_swap_controllers.GetValue());
  27. ui->tas_loop_script->setChecked(Settings::values.tas_loop.GetValue());
  28. ui->tas_pause_on_load->setChecked(Settings::values.pause_tas_on_load.GetValue());
  29. }
  30. void ConfigureTasDialog::ApplyConfiguration() {
  31. Common::FS::SetYuzuPath(Common::FS::YuzuPath::TASDir, ui->tas_path_edit->text().toStdString());
  32. Settings::values.tas_enable.SetValue(ui->tas_enable->isChecked());
  33. Settings::values.tas_swap_controllers.SetValue(ui->tas_control_swap->isChecked());
  34. Settings::values.tas_loop.SetValue(ui->tas_loop_script->isChecked());
  35. Settings::values.pause_tas_on_load.SetValue(ui->tas_pause_on_load->isChecked());
  36. }
  37. void ConfigureTasDialog::SetDirectory(DirectoryTarget target, QLineEdit* edit) {
  38. QString caption;
  39. switch (target) {
  40. case DirectoryTarget::TAS:
  41. caption = tr("Select TAS Load Directory...");
  42. break;
  43. }
  44. QString str = QFileDialog::getExistingDirectory(this, caption, edit->text());
  45. if (str.isEmpty()) {
  46. return;
  47. }
  48. if (str.back() != QChar::fromLatin1('/')) {
  49. str.append(QChar::fromLatin1('/'));
  50. }
  51. edit->setText(str);
  52. }
  53. void ConfigureTasDialog::changeEvent(QEvent* event) {
  54. if (event->type() == QEvent::LanguageChange) {
  55. RetranslateUI();
  56. }
  57. QDialog::changeEvent(event);
  58. }
  59. void ConfigureTasDialog::RetranslateUI() {
  60. ui->retranslateUi(this);
  61. }
  62. void ConfigureTasDialog::HandleApplyButtonClicked() {
  63. UISettings::values.configuration_applied = true;
  64. ApplyConfiguration();
  65. }