configure_tas.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
  18. connect(ui->tas_path_button, &QToolButton::pressed, this,
  19. [this] { SetDirectory(DirectoryTarget::TAS, ui->tas_path_edit); });
  20. LoadConfiguration();
  21. }
  22. ConfigureTasDialog::~ConfigureTasDialog() = default;
  23. void ConfigureTasDialog::LoadConfiguration() {
  24. ui->tas_path_edit->setText(
  25. QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::TASDir)));
  26. ui->tas_enable->setChecked(Settings::values.tas_enable.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_loop.SetValue(ui->tas_loop_script->isChecked());
  34. Settings::values.pause_tas_on_load.SetValue(ui->tas_pause_on_load->isChecked());
  35. }
  36. void ConfigureTasDialog::SetDirectory(DirectoryTarget target, QLineEdit* edit) {
  37. QString caption;
  38. switch (target) {
  39. case DirectoryTarget::TAS:
  40. caption = tr("Select TAS Load Directory...");
  41. break;
  42. }
  43. QString str = QFileDialog::getExistingDirectory(this, caption, edit->text());
  44. if (str.isEmpty()) {
  45. return;
  46. }
  47. if (str.back() != QChar::fromLatin1('/')) {
  48. str.append(QChar::fromLatin1('/'));
  49. }
  50. edit->setText(str);
  51. }
  52. void ConfigureTasDialog::changeEvent(QEvent* event) {
  53. if (event->type() == QEvent::LanguageChange) {
  54. RetranslateUI();
  55. }
  56. QDialog::changeEvent(event);
  57. }
  58. void ConfigureTasDialog::RetranslateUI() {
  59. ui->retranslateUi(this);
  60. }
  61. void ConfigureTasDialog::HandleApplyButtonClicked() {
  62. UISettings::values.configuration_applied = true;
  63. ApplyConfiguration();
  64. }