diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-08-27 07:21:48 +0200 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-09-04 18:23:25 +0200 |
commit | 5ce3015945e327751a053f7a5a1331a33f07819e (patch) | |
tree | d12f57a8b573e466c2b5a18bf0a40a019782219a /src/yuzu | |
parent | Project Mjölnir: Part 2 - Controller Applet (diff) | |
download | yuzu-5ce3015945e327751a053f7a5a1331a33f07819e.tar yuzu-5ce3015945e327751a053f7a5a1331a33f07819e.tar.gz yuzu-5ce3015945e327751a053f7a5a1331a33f07819e.tar.bz2 yuzu-5ce3015945e327751a053f7a5a1331a33f07819e.tar.lz yuzu-5ce3015945e327751a053f7a5a1331a33f07819e.tar.xz yuzu-5ce3015945e327751a053f7a5a1331a33f07819e.tar.zst yuzu-5ce3015945e327751a053f7a5a1331a33f07819e.zip |
Diffstat (limited to 'src/yuzu')
-rw-r--r-- | src/yuzu/applets/controller.cpp | 20 | ||||
-rw-r--r-- | src/yuzu/applets/controller.h | 6 | ||||
-rw-r--r-- | src/yuzu/applets/controller.ui | 258 |
3 files changed, 275 insertions, 9 deletions
diff --git a/src/yuzu/applets/controller.cpp b/src/yuzu/applets/controller.cpp index 8ccf61be0..7482174c6 100644 --- a/src/yuzu/applets/controller.cpp +++ b/src/yuzu/applets/controller.cpp @@ -4,6 +4,7 @@ #include <algorithm> +#include "common/string_util.h" #include "core/core.h" #include "core/hle/lock.h" #include "core/hle/service/hid/controllers/npad.h" @@ -45,6 +46,7 @@ void UpdateController(Settings::ControllerType controller_type, std::size_t npad npad.UpdateControllerAt(npad.MapSettingsTypeToNPad(controller_type), npad_index, connected); } +// Returns true if the given controller type is compatible with the given parameters. bool IsControllerCompatible(Settings::ControllerType controller_type, Core::Frontend::ControllerParameters parameters) { switch (controller_type) { @@ -140,6 +142,12 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( ui->checkboxPlayer8LED4}, }}; + explain_text_labels = { + ui->labelPlayer1Explain, ui->labelPlayer2Explain, ui->labelPlayer3Explain, + ui->labelPlayer4Explain, ui->labelPlayer5Explain, ui->labelPlayer6Explain, + ui->labelPlayer7Explain, ui->labelPlayer8Explain, + }; + emulated_controllers = { ui->comboPlayer1Emulated, ui->comboPlayer2Emulated, ui->comboPlayer3Emulated, ui->comboPlayer4Emulated, ui->comboPlayer5Emulated, ui->comboPlayer6Emulated, @@ -200,6 +208,8 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( Settings::ControllerType::Handheld); }); } + + SetExplainText(i); } connect(ui->inputConfigButton, &QPushButton::clicked, this, @@ -468,6 +478,16 @@ void QtControllerSelectorDialog::UpdateBorderColor(std::size_t player_index) { .arg(parameters.border_colors[player_index][3]))); } +void QtControllerSelectorDialog::SetExplainText(std::size_t player_index) { + if (!parameters.enable_explain_text || player_index >= parameters.max_players) { + return; + } + + explain_text_labels[player_index]->setText(QString::fromStdString( + Common::StringFromFixedZeroTerminatedBuffer(parameters.explain_text[player_index].data(), + parameters.explain_text[player_index].size()))); +} + void QtControllerSelectorDialog::UpdateDockedState(bool is_handheld) { // Disallow changing the console mode if the controller type is handheld. ui->radioDocked->setEnabled(!is_handheld); diff --git a/src/yuzu/applets/controller.h b/src/yuzu/applets/controller.h index 1ec290e6c..db59dd631 100644 --- a/src/yuzu/applets/controller.h +++ b/src/yuzu/applets/controller.h @@ -59,6 +59,9 @@ private: // Updates the border color per player. void UpdateBorderColor(std::size_t player_index); + // Sets the "Explain Text" per player. + void SetExplainText(std::size_t player_index); + // Updates the console mode. void UpdateDockedState(bool is_handheld); @@ -94,6 +97,9 @@ private: // LED patterns for currently connected controllers/players. std::array<std::array<QCheckBox*, 4>, 8> led_patterns_boxes; + // Labels representing additional information known as "Explain Text" per player. + std::array<QLabel*, 8> explain_text_labels; + // Comboboxes with a list of emulated controllers per player. std::array<QComboBox*, 8> emulated_controllers; diff --git a/src/yuzu/applets/controller.ui b/src/yuzu/applets/controller.ui index d7db46613..c4108a979 100644 --- a/src/yuzu/applets/controller.ui +++ b/src/yuzu/applets/controller.ui @@ -468,13 +468,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer4" native="true"> + <widget class="QWidget" name="Player4Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_39"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer4Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -635,13 +665,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer2" native="true"> + <widget class="QWidget" name="Player2Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_37"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer2Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -806,13 +866,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer1" native="true"> + <widget class="QWidget" name="Player1Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_36"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer1Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -1086,13 +1176,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer3" native="true"> + <widget class="QWidget" name="Player3Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_38"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer3Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -1296,13 +1416,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer7" native="true"> + <widget class="QWidget" name="Player7Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_42"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer7Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -1463,13 +1613,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer8" native="true"> + <widget class="QWidget" name="Player8Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_35"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer8Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -1634,13 +1814,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer5" native="true"> + <widget class="QWidget" name="Player5Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_40"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer5Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -1801,13 +2011,43 @@ </widget> </item> <item> - <widget class="QWidget" name="fakeSpacerPlayer6" native="true"> + <widget class="QWidget" name="Player6Explain" native="true"> <property name="minimumSize"> <size> <width>0</width> <height>10</height> </size> </property> + <property name="maximumSize"> + <size> + <width>150</width> + <height>16777215</height> + </size> + </property> + <layout class="QVBoxLayout" name="verticalLayout_41"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="labelPlayer6Explain"> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </widget> </item> <item> @@ -2395,7 +2635,7 @@ <item alignment="Qt::AlignBottom"> <widget class="QDialogButtonBox" name="buttonBox"> <property name="enabled"> - <bool>false</bool> + <bool>true</bool> </property> <property name="standardButtons"> <set>QDialogButtonBox::Ok</set> |