configure_tas.cpp 2.4 KB

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