summaryrefslogtreecommitdiff
path: root/src/yuzu/configuration
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/configuration')
-rw-r--r--src/yuzu/configuration/configure_filesystem.cpp9
-rw-r--r--src/yuzu/configuration/configure_filesystem.h1
-rw-r--r--src/yuzu/configuration/configure_filesystem.ui49
-rw-r--r--src/yuzu/configuration/configure_input_player_widget.cpp4
-rw-r--r--src/yuzu/configuration/configure_tas.cpp84
-rw-r--r--src/yuzu/configuration/configure_tas.h38
-rw-r--r--src/yuzu/configuration/configure_tas.ui143
7 files changed, 267 insertions, 61 deletions
diff --git a/src/yuzu/configuration/configure_filesystem.cpp b/src/yuzu/configuration/configure_filesystem.cpp
index 4636d476e..013de02db 100644
--- a/src/yuzu/configuration/configure_filesystem.cpp
+++ b/src/yuzu/configuration/configure_filesystem.cpp
@@ -26,8 +26,6 @@ ConfigureFilesystem::ConfigureFilesystem(QWidget* parent)
[this] { SetDirectory(DirectoryTarget::Dump, ui->dump_path_edit); });
connect(ui->load_path_button, &QToolButton::pressed, this,
[this] { SetDirectory(DirectoryTarget::Load, ui->load_path_edit); });
- connect(ui->tas_path_button, &QToolButton::pressed, this,
- [this] { SetDirectory(DirectoryTarget::TAS, ui->tas_path_edit); });
connect(ui->reset_game_list_cache, &QPushButton::pressed, this,
&ConfigureFilesystem::ResetMetadata);
@@ -51,8 +49,6 @@ void ConfigureFilesystem::setConfiguration() {
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::DumpDir)));
ui->load_path_edit->setText(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::LoadDir)));
- ui->tas_path_edit->setText(
- QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::TASFile)));
ui->gamecard_inserted->setChecked(Settings::values.gamecard_inserted.GetValue());
ui->gamecard_current_game->setChecked(Settings::values.gamecard_current_game.GetValue());
@@ -74,11 +70,9 @@ void ConfigureFilesystem::applyConfiguration() {
ui->dump_path_edit->text().toStdString());
Common::FS::SetYuzuPath(Common::FS::YuzuPath::LoadDir,
ui->load_path_edit->text().toStdString());
- Common::FS::SetYuzuPath(Common::FS::YuzuPath::TASFile, ui->tas_path_edit->text().toStdString());
Settings::values.gamecard_inserted = ui->gamecard_inserted->isChecked();
Settings::values.gamecard_current_game = ui->gamecard_current_game->isChecked();
- Settings::values.pause_tas_on_load = ui->tas_pause_on_load->isChecked();
Settings::values.dump_exefs = ui->dump_exefs->isChecked();
Settings::values.dump_nso = ui->dump_nso->isChecked();
@@ -104,9 +98,6 @@ void ConfigureFilesystem::SetDirectory(DirectoryTarget target, QLineEdit* edit)
case DirectoryTarget::Load:
caption = tr("Select Mod Load Directory...");
break;
- case DirectoryTarget::TAS:
- caption = tr("Select TAS Directory...");
- break;
}
QString str;
diff --git a/src/yuzu/configuration/configure_filesystem.h b/src/yuzu/configuration/configure_filesystem.h
index 86dab8684..2147cd405 100644
--- a/src/yuzu/configuration/configure_filesystem.h
+++ b/src/yuzu/configuration/configure_filesystem.h
@@ -32,7 +32,6 @@ private:
Gamecard,
Dump,
Load,
- TAS,
};
void SetDirectory(DirectoryTarget target, QLineEdit* edit);
diff --git a/src/yuzu/configuration/configure_filesystem.ui b/src/yuzu/configuration/configure_filesystem.ui
index 8ac7250fd..62b9abc7a 100644
--- a/src/yuzu/configuration/configure_filesystem.ui
+++ b/src/yuzu/configuration/configure_filesystem.ui
@@ -219,55 +219,6 @@
</layout>
</widget>
</item>
- <item>
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>TAS Directories</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Path</string>
- </property>
- </widget>
- </item>
- <item row="0" column="3">
- <widget class="QToolButton" name="tas_path_button">
- <property name="text">
- <string>...</string>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QLineEdit" name="tas_path_edit"/>
- </item>
- <item row="0" column="1">
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Maximum</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>60</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="0" colspan="4">
- <widget class="QCheckBox" name="tas_pause_on_load">
- <property name="text">
- <string>Pause TAS execution during loads (SMO - 1.3)</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
</layout>
</item>
<item>
diff --git a/src/yuzu/configuration/configure_input_player_widget.cpp b/src/yuzu/configuration/configure_input_player_widget.cpp
index e649e2169..e4383676a 100644
--- a/src/yuzu/configuration/configure_input_player_widget.cpp
+++ b/src/yuzu/configuration/configure_input_player_widget.cpp
@@ -232,7 +232,7 @@ void PlayerControlPreview::UpdateInput() {
axis_values[Settings::NativeAnalog::RStick].value.x(),
axis_values[Settings::NativeAnalog::RStick].value.y()};
input.button_values = button_values;
- if (controller_callback.input != NULL) {
+ if (controller_callback.input != nullptr) {
controller_callback.input(std::move(input));
}
@@ -242,7 +242,7 @@ void PlayerControlPreview::UpdateInput() {
}
void PlayerControlPreview::SetCallBack(ControllerCallback callback_) {
- controller_callback = callback_;
+ controller_callback = std::move(callback_);
}
void PlayerControlPreview::paintEvent(QPaintEvent* event) {
diff --git a/src/yuzu/configuration/configure_tas.cpp b/src/yuzu/configuration/configure_tas.cpp
new file mode 100644
index 000000000..f2f91d84a
--- /dev/null
+++ b/src/yuzu/configuration/configure_tas.cpp
@@ -0,0 +1,84 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <QFileDialog>
+#include <QMessageBox>
+#include "common/fs/fs.h"
+#include "common/fs/path_util.h"
+#include "common/settings.h"
+#include "ui_configure_tas.h"
+#include "yuzu/configuration/configure_tas.h"
+#include "yuzu/uisettings.h"
+
+ConfigureTasDialog::ConfigureTasDialog(QWidget* parent)
+ : QDialog(parent), ui(std::make_unique<Ui::ConfigureTas>()) {
+
+ ui->setupUi(this);
+
+ setFocusPolicy(Qt::ClickFocus);
+ setWindowTitle(tr("TAS Configuration"));
+
+ connect(ui->tas_path_button, &QToolButton::pressed, this,
+ [this] { SetDirectory(DirectoryTarget::TAS, ui->tas_path_edit); });
+
+ LoadConfiguration();
+}
+
+ConfigureTasDialog::~ConfigureTasDialog() = default;
+
+void ConfigureTasDialog::LoadConfiguration() {
+ ui->tas_path_edit->setText(
+ QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::TASDir)));
+ ui->tas_enable->setChecked(Settings::values.tas_enable);
+ ui->tas_control_swap->setChecked(Settings::values.tas_swap_controllers);
+ ui->tas_loop_script->setChecked(Settings::values.tas_loop);
+ ui->tas_pause_on_load->setChecked(Settings::values.pause_tas_on_load);
+}
+
+void ConfigureTasDialog::ApplyConfiguration() {
+ Common::FS::SetYuzuPath(Common::FS::YuzuPath::TASDir, ui->tas_path_edit->text().toStdString());
+ Settings::values.tas_enable = ui->tas_enable->isChecked();
+ Settings::values.tas_swap_controllers = ui->tas_control_swap->isChecked();
+ Settings::values.tas_loop = ui->tas_loop_script->isChecked();
+ Settings::values.pause_tas_on_load = ui->tas_pause_on_load->isChecked();
+}
+
+void ConfigureTasDialog::SetDirectory(DirectoryTarget target, QLineEdit* edit) {
+ QString caption;
+
+ switch (target) {
+ case DirectoryTarget::TAS:
+ caption = tr("Select TAS Load Directory...");
+ break;
+ }
+
+ QString str = QFileDialog::getExistingDirectory(this, caption, edit->text());
+
+ if (str.isNull() || str.isEmpty()) {
+ return;
+ }
+
+ if (str.back() != QChar::fromLatin1('/')) {
+ str.append(QChar::fromLatin1('/'));
+ }
+
+ edit->setText(str);
+}
+
+void ConfigureTasDialog::changeEvent(QEvent* event) {
+ if (event->type() == QEvent::LanguageChange) {
+ RetranslateUI();
+ }
+
+ QDialog::changeEvent(event);
+}
+
+void ConfigureTasDialog::RetranslateUI() {
+ ui->retranslateUi(this);
+}
+
+void ConfigureTasDialog::HandleApplyButtonClicked() {
+ UISettings::values.configuration_applied = true;
+ ApplyConfiguration();
+}
diff --git a/src/yuzu/configuration/configure_tas.h b/src/yuzu/configuration/configure_tas.h
new file mode 100644
index 000000000..1546bf16f
--- /dev/null
+++ b/src/yuzu/configuration/configure_tas.h
@@ -0,0 +1,38 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <QDialog>
+
+namespace Ui {
+class ConfigureTas;
+}
+
+class ConfigureTasDialog : public QDialog {
+ Q_OBJECT
+
+public:
+ explicit ConfigureTasDialog(QWidget* parent);
+ ~ConfigureTasDialog() override;
+
+ /// Save all button configurations to settings file
+ void ApplyConfiguration();
+
+private:
+ enum class DirectoryTarget {
+ TAS,
+ };
+
+ void LoadConfiguration();
+
+ void SetDirectory(DirectoryTarget target, QLineEdit* edit);
+
+ void changeEvent(QEvent* event) override;
+ void RetranslateUI();
+
+ void HandleApplyButtonClicked();
+
+ std::unique_ptr<Ui::ConfigureTas> ui;
+};
diff --git a/src/yuzu/configuration/configure_tas.ui b/src/yuzu/configuration/configure_tas.ui
new file mode 100644
index 000000000..906e073ff
--- /dev/null
+++ b/src/yuzu/configuration/configure_tas.ui
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConfigureTas</class>
+ <widget class="QDialog" name="ConfigureTas">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_1">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>TAS Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="4">
+ <widget class="QCheckBox" name="tas_enable">
+ <property name="text">
+ <string>Enable TAS features</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="4">
+ <widget class="QCheckBox" name="tas_control_swap">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Automatic controller profile swapping</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="4">
+ <widget class="QCheckBox" name="tas_loop_script">
+ <property name="text">
+ <string>Loop script</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="4">
+ <widget class="QCheckBox" name="tas_pause_on_load">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Pause execution during loads</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>TAS Directories</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Path</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QToolButton" name="tas_path_button">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLineEdit" name="tas_path_edit"/>
+ </item>
+ <item row="0" column="1">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Maximum</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>60</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ConfigureTas</receiver>
+ <slot>accept()</slot>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ConfigureTas</receiver>
+ <slot>reject()</slot>
+ </connection>
+ </connections>
+</ui>