qt: Add per game config dialog with tabs

This commit is contained in:
Zach Hilman
2018-10-17 21:29:51 -04:00
parent 1485616a54
commit 4c54b9446a
4 changed files with 202 additions and 0 deletions

View File

@@ -29,6 +29,8 @@ add_executable(yuzu
configuration/configure_input.h
configuration/configure_system.cpp
configuration/configure_system.h
configuration/configure_per_game_dialog.cpp
configuration/configure_per_game_dialog.h
configuration/configure_web.cpp
configuration/configure_web.h
debugger/graphics/graphics_breakpoint_observer.cpp
@@ -74,6 +76,7 @@ set(UIS
configuration/configure_general.ui
configuration/configure_graphics.ui
configuration/configure_input.ui
configuration/configure_per_game.ui
configuration/configure_system.ui
configuration/configure_web.ui
hotkeys.ui

View File

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ConfigurePerGameDialog</class>
<widget class="QDialog" name="ConfigurePerGameDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>461</width>
<height>500</height>
</rect>
</property>
<property name="windowTitle">
<string>yuzu Game Configuration</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="ConfigurePerGameGeneral" name="generalTab">
<attribute name="title">
<string>General</string>
</attribute>
</widget>
<widget class="ConfigureInput" name="inputTab">
<attribute name="title">
<string>Input</string>
</attribute>
</widget>
<widget class="ConfigureGraphics" name="graphicsTab">
<attribute name="title">
<string>Graphics</string>
</attribute>
</widget>
<widget class="ConfigureAudio" name="audioTab">
<attribute name="title">
<string>Audio</string>
</attribute>
</widget>
<widget class="ConfigureDebug" name="debugTab">
<attribute name="title">
<string>Debug</string>
</attribute>
</widget>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ConfigurePerGameGeneral</class>
<extends>QWidget</extends>
<header>configuration/configure_per_general.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ConfigureInput</class>
<extends>QWidget</extends>
<header>configuration/configure_input.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ConfigureGraphics</class>
<extends>QWidget</extends>
<header>configuration/configure_graphics.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ConfigureAudio</class>
<extends>QWidget</extends>
<header>configuration/configure_audio.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ConfigureDebug</class>
<extends>QWidget</extends>
<header>configuration/configure_debug.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>ConfigurePerGameDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>220</x>
<y>380</y>
</hint>
<hint type="destinationlabel">
<x>220</x>
<y>200</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>ConfigurePerGameDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>220</x>
<y>380</y>
</hint>
<hint type="destinationlabel">
<x>220</x>
<y>200</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,45 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/settings.h"
#include "ui_configure_per_game.h"
#include "yuzu/configuration/config.h"
#include "yuzu/configuration/configure_per_game_dialog.h"
ConfigurePerGameDialog::ConfigurePerGameDialog(QWidget* parent, FileSys::VirtualFile file,
const PerGameValuesChange& change)
: QDialog(parent), ui(new Ui::ConfigurePerGameDialog) {
ui->setupUi(this);
ui->generalTab->loadFromFile(std::move(file));
ui->generalTab->loadValuesChange(change);
ui->inputTab->setPerGame(true);
ui->inputTab->loadValuesChange(change);
ui->graphicsTab->setPerGame(true);
ui->graphicsTab->loadValuesChange(change);
ui->audioTab->setPerGame(true);
ui->audioTab->loadValuesChange(change);
ui->debugTab->setPerGame(true);
ui->debugTab->loadValuesChange(change);
this->setConfiguration();
}
ConfigurePerGameDialog::~ConfigurePerGameDialog() = default;
void ConfigurePerGameDialog::setConfiguration() {}
PerGameValuesChange ConfigurePerGameDialog::applyConfiguration() {
PerGameValuesChange out{};
ui->generalTab->applyConfiguration();
ui->generalTab->mergeValuesChange(out);
ui->inputTab->applyConfiguration();
ui->inputTab->mergeValuesChange(out);
ui->graphicsTab->applyConfiguration();
ui->graphicsTab->mergeValuesChange(out);
ui->audioTab->applyConfiguration();
ui->audioTab->mergeValuesChange(out);
ui->debugTab->applyConfiguration();
ui->debugTab->mergeValuesChange(out);
Settings::Apply();
return out;
}

View File

@@ -0,0 +1,29 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include <memory>
#include <QDialog>
#include "core/file_sys/vfs.h"
namespace Ui {
class ConfigurePerGameDialog;
}
class ConfigurePerGameDialog : public QDialog {
Q_OBJECT
public:
explicit ConfigurePerGameDialog(QWidget* parent, FileSys::VirtualFile file,
const PerGameValuesChange& change);
~ConfigurePerGameDialog();
PerGameValuesChange applyConfiguration();
private:
void setConfiguration();
std::unique_ptr<Ui::ConfigurePerGameDialog> ui;
};