summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Zach Hilman2018-11-01 22:10:51 -0400
committerGravatar Zach Hilman2018-11-18 23:22:36 -0500
commitafe8df5020d575ee361078aa3bd52706f818dee4 (patch)
treeb34a17a9f9bd4022446c6547485476e4623ae5ce /src
parentqt: Add UI to configure mouse buttons (diff)
downloadyuzu-afe8df5020d575ee361078aa3bd52706f818dee4.tar.gz
yuzu-afe8df5020d575ee361078aa3bd52706f818dee4.tar.xz
yuzu-afe8df5020d575ee361078aa3bd52706f818dee4.zip
qt: Add UI to configure touchscreen parameters
This allows adjusting the finger, diameter, and angle of the emulated touchscreen. It also provides a warning to the user about what changing these parameters can do.
Diffstat (limited to 'src')
-rw-r--r--src/yuzu/CMakeLists.txt3
-rw-r--r--src/yuzu/configuration/configure_touchscreen_advanced.cpp48
-rw-r--r--src/yuzu/configuration/configure_touchscreen_advanced.h31
-rw-r--r--src/yuzu/configuration/configure_touchscreen_advanced.ui199
4 files changed, 281 insertions, 0 deletions
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index 36714f55e..ff06d2a9a 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -31,6 +31,8 @@ add_executable(yuzu
31 configuration/configure_mouse_advanced.h 31 configuration/configure_mouse_advanced.h
32 configuration/configure_system.cpp 32 configuration/configure_system.cpp
33 configuration/configure_system.h 33 configuration/configure_system.h
34 configuration/configure_touchscreen_advanced.cpp
35 configuration/configure_touchscreen_advanced.h
34 configuration/configure_web.cpp 36 configuration/configure_web.cpp
35 configuration/configure_web.h 37 configuration/configure_web.h
36 debugger/graphics/graphics_breakpoint_observer.cpp 38 debugger/graphics/graphics_breakpoint_observer.cpp
@@ -80,6 +82,7 @@ set(UIS
80 configuration/configure_input.ui 82 configuration/configure_input.ui
81 configuration/configure_mouse_advanced.ui 83 configuration/configure_mouse_advanced.ui
82 configuration/configure_system.ui 84 configuration/configure_system.ui
85 configuration/configure_touchscreen_advanced.ui
83 configuration/configure_web.ui 86 configuration/configure_web.ui
84 hotkeys.ui 87 hotkeys.ui
85 main.ui 88 main.ui
diff --git a/src/yuzu/configuration/configure_touchscreen_advanced.cpp b/src/yuzu/configuration/configure_touchscreen_advanced.cpp
new file mode 100644
index 000000000..6cf3dab97
--- /dev/null
+++ b/src/yuzu/configuration/configure_touchscreen_advanced.cpp
@@ -0,0 +1,48 @@
1// Copyright 2016 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include <algorithm>
6#include <memory>
7#include <utility>
8#include <QMenu>
9#include <QMessageBox>
10#include <QTimer>
11#include "common/assert.h"
12#include "common/param_package.h"
13#include "input_common/main.h"
14#include "ui_configure_touchscreen_advanced.h"
15#include "yuzu/configuration/config.h"
16#include "yuzu/configuration/configure_touchscreen_advanced.h"
17
18ConfigureTouchscreenAdvanced::ConfigureTouchscreenAdvanced(QWidget* parent)
19 : QDialog(parent), ui(std::make_unique<Ui::ConfigureTouchscreenAdvanced>()) {
20 ui->setupUi(this);
21
22 connect(ui->restore_defaults_button, &QPushButton::pressed, this,
23 &ConfigureTouchscreenAdvanced::restoreDefaults);
24
25 this->loadConfiguration();
26 this->resize(0, 0);
27}
28
29void ConfigureTouchscreenAdvanced::applyConfiguration() {
30 Settings::values.touchscreen.finger = ui->finger_box->value();
31 Settings::values.touchscreen.diameter_x = ui->diameter_x_box->value();
32 Settings::values.touchscreen.diameter_y = ui->diameter_y_box->value();
33 Settings::values.touchscreen.rotation_angle = ui->angle_box->value();
34}
35
36void ConfigureTouchscreenAdvanced::loadConfiguration() {
37 ui->finger_box->setValue(Settings::values.touchscreen.finger);
38 ui->diameter_x_box->setValue(Settings::values.touchscreen.diameter_x);
39 ui->diameter_y_box->setValue(Settings::values.touchscreen.diameter_y);
40 ui->angle_box->setValue(Settings::values.touchscreen.rotation_angle);
41}
42
43void ConfigureTouchscreenAdvanced::restoreDefaults() {
44 ui->finger_box->setValue(0);
45 ui->diameter_x_box->setValue(15);
46 ui->diameter_y_box->setValue(15);
47 ui->angle_box->setValue(0);
48}
diff --git a/src/yuzu/configuration/configure_touchscreen_advanced.h b/src/yuzu/configuration/configure_touchscreen_advanced.h
new file mode 100644
index 000000000..938a62ed3
--- /dev/null
+++ b/src/yuzu/configuration/configure_touchscreen_advanced.h
@@ -0,0 +1,31 @@
1// Copyright 2016 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <memory>
8#include <QDialog>
9#include <QWidget>
10#include "yuzu/configuration/config.h"
11
12namespace Ui {
13class ConfigureTouchscreenAdvanced;
14}
15
16class ConfigureTouchscreenAdvanced : public QDialog {
17 Q_OBJECT
18
19public:
20 explicit ConfigureTouchscreenAdvanced(QWidget* parent);
21
22 void applyConfiguration();
23
24private:
25 /// Load configuration settings.
26 void loadConfiguration();
27 /// Restore all buttons to their default values.
28 void restoreDefaults();
29
30 std::unique_ptr<Ui::ConfigureTouchscreenAdvanced> ui;
31};
diff --git a/src/yuzu/configuration/configure_touchscreen_advanced.ui b/src/yuzu/configuration/configure_touchscreen_advanced.ui
new file mode 100644
index 000000000..1171c2dd1
--- /dev/null
+++ b/src/yuzu/configuration/configure_touchscreen_advanced.ui
@@ -0,0 +1,199 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ui version="4.0">
3 <class>ConfigureTouchscreenAdvanced</class>
4 <widget class="QDialog" name="ConfigureTouchscreenAdvanced">
5 <property name="geometry">
6 <rect>
7 <x>0</x>
8 <y>0</y>
9 <width>298</width>
10 <height>339</height>
11 </rect>
12 </property>
13 <property name="windowTitle">
14 <string>Configure Touchscreen</string>
15 </property>
16 <layout class="QVBoxLayout" name="verticalLayout">
17 <item>
18 <widget class="QLabel" name="label_2">
19 <property name="minimumSize">
20 <size>
21 <width>280</width>
22 <height>0</height>
23 </size>
24 </property>
25 <property name="text">
26 <string>Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing.</string>
27 </property>
28 <property name="wordWrap">
29 <bool>true</bool>
30 </property>
31 </widget>
32 </item>
33 <item>
34 <spacer name="verticalSpacer_2">
35 <property name="orientation">
36 <enum>Qt::Vertical</enum>
37 </property>
38 <property name="sizeType">
39 <enum>QSizePolicy::Fixed</enum>
40 </property>
41 <property name="sizeHint" stdset="0">
42 <size>
43 <width>20</width>
44 <height>20</height>
45 </size>
46 </property>
47 </spacer>
48 </item>
49 <item>
50 <widget class="QGroupBox" name="gridGroupBox">
51 <property name="title">
52 <string>Touch Parameters</string>
53 </property>
54 <layout class="QGridLayout" name="gridLayout">
55 <item row="0" column="0">
56 <spacer name="horizontalSpacer">
57 <property name="orientation">
58 <enum>Qt::Horizontal</enum>
59 </property>
60 <property name="sizeHint" stdset="0">
61 <size>
62 <width>40</width>
63 <height>20</height>
64 </size>
65 </property>
66 </spacer>
67 </item>
68 <item row="2" column="1">
69 <widget class="QLabel" name="label_4">
70 <property name="text">
71 <string>Touch Diameter Y</string>
72 </property>
73 </widget>
74 </item>
75 <item row="0" column="1">
76 <widget class="QLabel" name="label">
77 <property name="text">
78 <string>Finger</string>
79 </property>
80 </widget>
81 </item>
82 <item row="0" column="3">
83 <spacer name="horizontalSpacer_2">
84 <property name="orientation">
85 <enum>Qt::Horizontal</enum>
86 </property>
87 <property name="sizeHint" stdset="0">
88 <size>
89 <width>40</width>
90 <height>20</height>
91 </size>
92 </property>
93 </spacer>
94 </item>
95 <item row="1" column="1">
96 <widget class="QLabel" name="label_3">
97 <property name="text">
98 <string>Touch Diameter X</string>
99 </property>
100 </widget>
101 </item>
102 <item row="0" column="2">
103 <widget class="QSpinBox" name="finger_box">
104 <property name="minimumSize">
105 <size>
106 <width>80</width>
107 <height>0</height>
108 </size>
109 </property>
110 </widget>
111 </item>
112 <item row="3" column="1">
113 <widget class="QLabel" name="label_5">
114 <property name="text">
115 <string>Rotational Angle</string>
116 </property>
117 </widget>
118 </item>
119 <item row="1" column="2">
120 <widget class="QSpinBox" name="diameter_x_box"/>
121 </item>
122 <item row="2" column="2">
123 <widget class="QSpinBox" name="diameter_y_box"/>
124 </item>
125 <item row="3" column="2">
126 <widget class="QSpinBox" name="angle_box"/>
127 </item>
128 </layout>
129 </widget>
130 </item>
131 <item>
132 <spacer name="verticalSpacer">
133 <property name="orientation">
134 <enum>Qt::Vertical</enum>
135 </property>
136 <property name="sizeHint" stdset="0">
137 <size>
138 <width>20</width>
139 <height>40</height>
140 </size>
141 </property>
142 </spacer>
143 </item>
144 <item>
145 <layout class="QHBoxLayout" name="horizontalLayout">
146 <item>
147 <widget class="QPushButton" name="restore_defaults_button">
148 <property name="text">
149 <string>Restore Defaults</string>
150 </property>
151 </widget>
152 </item>
153 <item>
154 <widget class="QDialogButtonBox" name="buttonBox">
155 <property name="standardButtons">
156 <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
157 </property>
158 </widget>
159 </item>
160 </layout>
161 </item>
162 </layout>
163 </widget>
164 <resources/>
165 <connections>
166 <connection>
167 <sender>buttonBox</sender>
168 <signal>accepted()</signal>
169 <receiver>ConfigureTouchscreenAdvanced</receiver>
170 <slot>accept()</slot>
171 <hints>
172 <hint type="sourcelabel">
173 <x>140</x>
174 <y>318</y>
175 </hint>
176 <hint type="destinationlabel">
177 <x>140</x>
178 <y>169</y>
179 </hint>
180 </hints>
181 </connection>
182 <connection>
183 <sender>buttonBox</sender>
184 <signal>rejected()</signal>
185 <receiver>ConfigureTouchscreenAdvanced</receiver>
186 <slot>reject()</slot>
187 <hints>
188 <hint type="sourcelabel">
189 <x>140</x>
190 <y>318</y>
191 </hint>
192 <hint type="destinationlabel">
193 <x>140</x>
194 <y>169</y>
195 </hint>
196 </hints>
197 </connection>
198 </connections>
199</ui>