diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/frontend/applets/controller.h | 3 | ||||
| -rw-r--r-- | src/core/hle/service/am/applets/controller.cpp | 37 | ||||
| -rw-r--r-- | src/core/hle/service/am/applets/controller.h | 5 | ||||
| -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 |
6 files changed, 304 insertions, 25 deletions
diff --git a/src/core/frontend/applets/controller.h b/src/core/frontend/applets/controller.h index 0908f2b69..a227f15cd 100644 --- a/src/core/frontend/applets/controller.h +++ b/src/core/frontend/applets/controller.h | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | namespace Core::Frontend { | 11 | namespace Core::Frontend { |
| 12 | 12 | ||
| 13 | using BorderColor = std::array<u8, 4>; | 13 | using BorderColor = std::array<u8, 4>; |
| 14 | using ExplainText = std::array<char, 0x81>; | ||
| 14 | 15 | ||
| 15 | struct ControllerParameters { | 16 | struct ControllerParameters { |
| 16 | s8 min_players{}; | 17 | s8 min_players{}; |
| @@ -19,6 +20,8 @@ struct ControllerParameters { | |||
| 19 | bool enable_single_mode{}; | 20 | bool enable_single_mode{}; |
| 20 | bool enable_border_color{}; | 21 | bool enable_border_color{}; |
| 21 | std::vector<BorderColor> border_colors{}; | 22 | std::vector<BorderColor> border_colors{}; |
| 23 | bool enable_explain_text{}; | ||
| 24 | std::vector<ExplainText> explain_text{}; | ||
| 22 | bool allow_pro_controller{}; | 25 | bool allow_pro_controller{}; |
| 23 | bool allow_handheld{}; | 26 | bool allow_handheld{}; |
| 24 | bool allow_dual_joycons{}; | 27 | bool allow_dual_joycons{}; |
diff --git a/src/core/hle/service/am/applets/controller.cpp b/src/core/hle/service/am/applets/controller.cpp index 2a45a388f..63c85256d 100644 --- a/src/core/hle/service/am/applets/controller.cpp +++ b/src/core/hle/service/am/applets/controller.cpp | |||
| @@ -19,8 +19,8 @@ namespace Service::AM::Applets { | |||
| 19 | [[maybe_unused]] constexpr ResultCode ERR_CONTROLLER_APPLET_3102{ErrorModule::HID, 3102}; | 19 | [[maybe_unused]] constexpr ResultCode ERR_CONTROLLER_APPLET_3102{ErrorModule::HID, 3102}; |
| 20 | 20 | ||
| 21 | static Core::Frontend::ControllerParameters ConvertToFrontendParameters( | 21 | static Core::Frontend::ControllerParameters ConvertToFrontendParameters( |
| 22 | ControllerSupportArgPrivate private_arg, ControllerSupportArgHeader header, | 22 | ControllerSupportArgPrivate private_arg, ControllerSupportArgHeader header, bool enable_text, |
| 23 | std::vector<IdentificationColor> identification_colors) { | 23 | std::vector<IdentificationColor> identification_colors, std::vector<ExplainText> text) { |
| 24 | HID::Controller_NPad::NPadType npad_style_set; | 24 | HID::Controller_NPad::NPadType npad_style_set; |
| 25 | npad_style_set.raw = private_arg.style_set; | 25 | npad_style_set.raw = private_arg.style_set; |
| 26 | 26 | ||
| @@ -31,6 +31,8 @@ static Core::Frontend::ControllerParameters ConvertToFrontendParameters( | |||
| 31 | .enable_single_mode = header.enable_single_mode, | 31 | .enable_single_mode = header.enable_single_mode, |
| 32 | .enable_border_color = header.enable_identification_color, | 32 | .enable_border_color = header.enable_identification_color, |
| 33 | .border_colors = identification_colors, | 33 | .border_colors = identification_colors, |
| 34 | .enable_explain_text = enable_text, | ||
| 35 | .explain_text = text, | ||
| 34 | .allow_pro_controller = npad_style_set.pro_controller == 1, | 36 | .allow_pro_controller = npad_style_set.pro_controller == 1, |
| 35 | .allow_handheld = npad_style_set.handheld == 1, | 37 | .allow_handheld = npad_style_set.handheld == 1, |
| 36 | .allow_dual_joycons = npad_style_set.joycon_dual == 1, | 38 | .allow_dual_joycons = npad_style_set.joycon_dual == 1, |
| @@ -126,31 +128,38 @@ void Controller::Execute() { | |||
| 126 | case LibraryAppletVersion::Version5: | 128 | case LibraryAppletVersion::Version5: |
| 127 | return ConvertToFrontendParameters( | 129 | return ConvertToFrontendParameters( |
| 128 | controller_private_arg, controller_user_arg_old.header, | 130 | controller_private_arg, controller_user_arg_old.header, |
| 131 | controller_user_arg_old.enable_explain_text, | ||
| 129 | std::vector<IdentificationColor>( | 132 | std::vector<IdentificationColor>( |
| 130 | controller_user_arg_old.identification_colors.begin(), | 133 | controller_user_arg_old.identification_colors.begin(), |
| 131 | controller_user_arg_old.identification_colors.end())); | 134 | controller_user_arg_old.identification_colors.end()), |
| 135 | std::vector<ExplainText>(controller_user_arg_old.explain_text.begin(), | ||
| 136 | controller_user_arg_old.explain_text.end())); | ||
| 132 | case LibraryAppletVersion::Version7: | 137 | case LibraryAppletVersion::Version7: |
| 133 | default: | 138 | default: |
| 134 | return ConvertToFrontendParameters( | 139 | return ConvertToFrontendParameters( |
| 135 | controller_private_arg, controller_user_arg_new.header, | 140 | controller_private_arg, controller_user_arg_new.header, |
| 141 | controller_user_arg_new.enable_explain_text, | ||
| 136 | std::vector<IdentificationColor>( | 142 | std::vector<IdentificationColor>( |
| 137 | controller_user_arg_new.identification_colors.begin(), | 143 | controller_user_arg_new.identification_colors.begin(), |
| 138 | controller_user_arg_new.identification_colors.end())); | 144 | controller_user_arg_new.identification_colors.end()), |
| 145 | std::vector<ExplainText>(controller_user_arg_new.explain_text.begin(), | ||
| 146 | controller_user_arg_new.explain_text.end())); | ||
| 139 | } | 147 | } |
| 140 | }(); | 148 | }(); |
| 141 | 149 | ||
| 142 | is_single_mode = parameters.enable_single_mode; | 150 | is_single_mode = parameters.enable_single_mode; |
| 143 | 151 | ||
| 144 | LOG_DEBUG( | 152 | LOG_DEBUG(Service_HID, |
| 145 | Service_HID, | 153 | "Controller Parameters: min_players={}, max_players={}, " |
| 146 | "Controller Parameters: min_players={}, max_players={}, keep_controllers_connected={}, " | 154 | "keep_controllers_connected={}, enable_single_mode={}, enable_border_color={}, " |
| 147 | "enable_single_mode={}, enable_border_color={}, allow_pro_controller={}, " | 155 | "enable_explain_text={}, allow_pro_controller={}, allow_handheld={}, " |
| 148 | "allow_handheld={}, allow_dual_joycons={}, allow_left_joycon={}, allow_right_joycon={}", | 156 | "allow_dual_joycons={}, allow_left_joycon={}, allow_right_joycon={}", |
| 149 | parameters.min_players, parameters.max_players, parameters.keep_controllers_connected, | 157 | parameters.min_players, parameters.max_players, |
| 150 | parameters.enable_single_mode, parameters.enable_border_color, | 158 | parameters.keep_controllers_connected, parameters.enable_single_mode, |
| 151 | parameters.allow_pro_controller, parameters.allow_handheld, | 159 | parameters.enable_border_color, parameters.enable_explain_text, |
| 152 | parameters.allow_dual_joycons, parameters.allow_left_joycon, | 160 | parameters.allow_pro_controller, parameters.allow_handheld, |
| 153 | parameters.allow_right_joycon); | 161 | parameters.allow_dual_joycons, parameters.allow_left_joycon, |
| 162 | parameters.allow_right_joycon); | ||
| 154 | 163 | ||
| 155 | frontend.ReconfigureControllers([this] { ConfigurationComplete(); }, parameters); | 164 | frontend.ReconfigureControllers([this] { ConfigurationComplete(); }, parameters); |
| 156 | break; | 165 | break; |
diff --git a/src/core/hle/service/am/applets/controller.h b/src/core/hle/service/am/applets/controller.h index 90a78d508..31ba2af4f 100644 --- a/src/core/hle/service/am/applets/controller.h +++ b/src/core/hle/service/am/applets/controller.h | |||
| @@ -16,6 +16,7 @@ class System; | |||
| 16 | namespace Service::AM::Applets { | 16 | namespace Service::AM::Applets { |
| 17 | 17 | ||
| 18 | using IdentificationColor = std::array<u8, 4>; | 18 | using IdentificationColor = std::array<u8, 4>; |
| 19 | using ExplainText = std::array<char, 0x81>; | ||
| 19 | 20 | ||
| 20 | enum class LibraryAppletVersion : u32_le { | 21 | enum class LibraryAppletVersion : u32_le { |
| 21 | Version3 = 0x3, // 1.0.0 - 2.3.0 | 22 | Version3 = 0x3, // 1.0.0 - 2.3.0 |
| @@ -65,7 +66,7 @@ struct ControllerSupportArgOld { | |||
| 65 | ControllerSupportArgHeader header{}; | 66 | ControllerSupportArgHeader header{}; |
| 66 | std::array<IdentificationColor, 4> identification_colors{}; | 67 | std::array<IdentificationColor, 4> identification_colors{}; |
| 67 | bool enable_explain_text{}; | 68 | bool enable_explain_text{}; |
| 68 | std::array<std::array<char, 0x81>, 4> explain_text{}; | 69 | std::array<ExplainText, 4> explain_text{}; |
| 69 | }; | 70 | }; |
| 70 | static_assert(sizeof(ControllerSupportArgOld) == 0x21C, | 71 | static_assert(sizeof(ControllerSupportArgOld) == 0x21C, |
| 71 | "ControllerSupportArgOld has incorrect size."); | 72 | "ControllerSupportArgOld has incorrect size."); |
| @@ -75,7 +76,7 @@ struct ControllerSupportArgNew { | |||
| 75 | ControllerSupportArgHeader header{}; | 76 | ControllerSupportArgHeader header{}; |
| 76 | std::array<IdentificationColor, 8> identification_colors{}; | 77 | std::array<IdentificationColor, 8> identification_colors{}; |
| 77 | bool enable_explain_text{}; | 78 | bool enable_explain_text{}; |
| 78 | std::array<std::array<char, 0x81>, 8> explain_text{}; | 79 | std::array<ExplainText, 8> explain_text{}; |
| 79 | }; | 80 | }; |
| 80 | static_assert(sizeof(ControllerSupportArgNew) == 0x430, | 81 | static_assert(sizeof(ControllerSupportArgNew) == 0x430, |
| 81 | "ControllerSupportArgNew has incorrect size."); | 82 | "ControllerSupportArgNew has incorrect size."); |
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 @@ | |||
| 4 | 4 | ||
| 5 | #include <algorithm> | 5 | #include <algorithm> |
| 6 | 6 | ||
| 7 | #include "common/string_util.h" | ||
| 7 | #include "core/core.h" | 8 | #include "core/core.h" |
| 8 | #include "core/hle/lock.h" | 9 | #include "core/hle/lock.h" |
| 9 | #include "core/hle/service/hid/controllers/npad.h" | 10 | #include "core/hle/service/hid/controllers/npad.h" |
| @@ -45,6 +46,7 @@ void UpdateController(Settings::ControllerType controller_type, std::size_t npad | |||
| 45 | npad.UpdateControllerAt(npad.MapSettingsTypeToNPad(controller_type), npad_index, connected); | 46 | npad.UpdateControllerAt(npad.MapSettingsTypeToNPad(controller_type), npad_index, connected); |
| 46 | } | 47 | } |
| 47 | 48 | ||
| 49 | // Returns true if the given controller type is compatible with the given parameters. | ||
| 48 | bool IsControllerCompatible(Settings::ControllerType controller_type, | 50 | bool IsControllerCompatible(Settings::ControllerType controller_type, |
| 49 | Core::Frontend::ControllerParameters parameters) { | 51 | Core::Frontend::ControllerParameters parameters) { |
| 50 | switch (controller_type) { | 52 | switch (controller_type) { |
| @@ -140,6 +142,12 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( | |||
| 140 | ui->checkboxPlayer8LED4}, | 142 | ui->checkboxPlayer8LED4}, |
| 141 | }}; | 143 | }}; |
| 142 | 144 | ||
| 145 | explain_text_labels = { | ||
| 146 | ui->labelPlayer1Explain, ui->labelPlayer2Explain, ui->labelPlayer3Explain, | ||
| 147 | ui->labelPlayer4Explain, ui->labelPlayer5Explain, ui->labelPlayer6Explain, | ||
| 148 | ui->labelPlayer7Explain, ui->labelPlayer8Explain, | ||
| 149 | }; | ||
| 150 | |||
| 143 | emulated_controllers = { | 151 | emulated_controllers = { |
| 144 | ui->comboPlayer1Emulated, ui->comboPlayer2Emulated, ui->comboPlayer3Emulated, | 152 | ui->comboPlayer1Emulated, ui->comboPlayer2Emulated, ui->comboPlayer3Emulated, |
| 145 | ui->comboPlayer4Emulated, ui->comboPlayer5Emulated, ui->comboPlayer6Emulated, | 153 | ui->comboPlayer4Emulated, ui->comboPlayer5Emulated, ui->comboPlayer6Emulated, |
| @@ -200,6 +208,8 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( | |||
| 200 | Settings::ControllerType::Handheld); | 208 | Settings::ControllerType::Handheld); |
| 201 | }); | 209 | }); |
| 202 | } | 210 | } |
| 211 | |||
| 212 | SetExplainText(i); | ||
| 203 | } | 213 | } |
| 204 | 214 | ||
| 205 | connect(ui->inputConfigButton, &QPushButton::clicked, this, | 215 | connect(ui->inputConfigButton, &QPushButton::clicked, this, |
| @@ -468,6 +478,16 @@ void QtControllerSelectorDialog::UpdateBorderColor(std::size_t player_index) { | |||
| 468 | .arg(parameters.border_colors[player_index][3]))); | 478 | .arg(parameters.border_colors[player_index][3]))); |
| 469 | } | 479 | } |
| 470 | 480 | ||
| 481 | void QtControllerSelectorDialog::SetExplainText(std::size_t player_index) { | ||
| 482 | if (!parameters.enable_explain_text || player_index >= parameters.max_players) { | ||
| 483 | return; | ||
| 484 | } | ||
| 485 | |||
| 486 | explain_text_labels[player_index]->setText(QString::fromStdString( | ||
| 487 | Common::StringFromFixedZeroTerminatedBuffer(parameters.explain_text[player_index].data(), | ||
| 488 | parameters.explain_text[player_index].size()))); | ||
| 489 | } | ||
| 490 | |||
| 471 | void QtControllerSelectorDialog::UpdateDockedState(bool is_handheld) { | 491 | void QtControllerSelectorDialog::UpdateDockedState(bool is_handheld) { |
| 472 | // Disallow changing the console mode if the controller type is handheld. | 492 | // Disallow changing the console mode if the controller type is handheld. |
| 473 | ui->radioDocked->setEnabled(!is_handheld); | 493 | 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: | |||
| 59 | // Updates the border color per player. | 59 | // Updates the border color per player. |
| 60 | void UpdateBorderColor(std::size_t player_index); | 60 | void UpdateBorderColor(std::size_t player_index); |
| 61 | 61 | ||
| 62 | // Sets the "Explain Text" per player. | ||
| 63 | void SetExplainText(std::size_t player_index); | ||
| 64 | |||
| 62 | // Updates the console mode. | 65 | // Updates the console mode. |
| 63 | void UpdateDockedState(bool is_handheld); | 66 | void UpdateDockedState(bool is_handheld); |
| 64 | 67 | ||
| @@ -94,6 +97,9 @@ private: | |||
| 94 | // LED patterns for currently connected controllers/players. | 97 | // LED patterns for currently connected controllers/players. |
| 95 | std::array<std::array<QCheckBox*, 4>, 8> led_patterns_boxes; | 98 | std::array<std::array<QCheckBox*, 4>, 8> led_patterns_boxes; |
| 96 | 99 | ||
| 100 | // Labels representing additional information known as "Explain Text" per player. | ||
| 101 | std::array<QLabel*, 8> explain_text_labels; | ||
| 102 | |||
| 97 | // Comboboxes with a list of emulated controllers per player. | 103 | // Comboboxes with a list of emulated controllers per player. |
| 98 | std::array<QComboBox*, 8> emulated_controllers; | 104 | std::array<QComboBox*, 8> emulated_controllers; |
| 99 | 105 | ||
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 @@ | |||
| 468 | </widget> | 468 | </widget> |
| 469 | </item> | 469 | </item> |
| 470 | <item> | 470 | <item> |
| 471 | <widget class="QWidget" name="fakeSpacerPlayer4" native="true"> | 471 | <widget class="QWidget" name="Player4Explain" native="true"> |
| 472 | <property name="minimumSize"> | 472 | <property name="minimumSize"> |
| 473 | <size> | 473 | <size> |
| 474 | <width>0</width> | 474 | <width>0</width> |
| 475 | <height>10</height> | 475 | <height>10</height> |
| 476 | </size> | 476 | </size> |
| 477 | </property> | 477 | </property> |
| 478 | <property name="maximumSize"> | ||
| 479 | <size> | ||
| 480 | <width>150</width> | ||
| 481 | <height>16777215</height> | ||
| 482 | </size> | ||
| 483 | </property> | ||
| 484 | <layout class="QVBoxLayout" name="verticalLayout_39"> | ||
| 485 | <property name="spacing"> | ||
| 486 | <number>0</number> | ||
| 487 | </property> | ||
| 488 | <property name="leftMargin"> | ||
| 489 | <number>0</number> | ||
| 490 | </property> | ||
| 491 | <property name="topMargin"> | ||
| 492 | <number>0</number> | ||
| 493 | </property> | ||
| 494 | <property name="rightMargin"> | ||
| 495 | <number>0</number> | ||
| 496 | </property> | ||
| 497 | <property name="bottomMargin"> | ||
| 498 | <number>0</number> | ||
| 499 | </property> | ||
| 500 | <item> | ||
| 501 | <widget class="QLabel" name="labelPlayer4Explain"> | ||
| 502 | <property name="alignment"> | ||
| 503 | <set>Qt::AlignCenter</set> | ||
| 504 | </property> | ||
| 505 | </widget> | ||
| 506 | </item> | ||
| 507 | </layout> | ||
| 478 | </widget> | 508 | </widget> |
| 479 | </item> | 509 | </item> |
| 480 | <item> | 510 | <item> |
| @@ -635,13 +665,43 @@ | |||
| 635 | </widget> | 665 | </widget> |
| 636 | </item> | 666 | </item> |
| 637 | <item> | 667 | <item> |
| 638 | <widget class="QWidget" name="fakeSpacerPlayer2" native="true"> | 668 | <widget class="QWidget" name="Player2Explain" native="true"> |
| 639 | <property name="minimumSize"> | 669 | <property name="minimumSize"> |
| 640 | <size> | 670 | <size> |
| 641 | <width>0</width> | 671 | <width>0</width> |
| 642 | <height>10</height> | 672 | <height>10</height> |
| 643 | </size> | 673 | </size> |
| 644 | </property> | 674 | </property> |
| 675 | <property name="maximumSize"> | ||
| 676 | <size> | ||
| 677 | <width>150</width> | ||
| 678 | <height>16777215</height> | ||
| 679 | </size> | ||
| 680 | </property> | ||
| 681 | <layout class="QVBoxLayout" name="verticalLayout_37"> | ||
| 682 | <property name="spacing"> | ||
| 683 | <number>0</number> | ||
| 684 | </property> | ||
| 685 | <property name="leftMargin"> | ||
| 686 | <number>0</number> | ||
| 687 | </property> | ||
| 688 | <property name="topMargin"> | ||
| 689 | <number>0</number> | ||
| 690 | </property> | ||
| 691 | <property name="rightMargin"> | ||
| 692 | <number>0</number> | ||
| 693 | </property> | ||
| 694 | <property name="bottomMargin"> | ||
| 695 | <number>0</number> | ||
| 696 | </property> | ||
| 697 | <item> | ||
| 698 | <widget class="QLabel" name="labelPlayer2Explain"> | ||
| 699 | <property name="alignment"> | ||
| 700 | <set>Qt::AlignCenter</set> | ||
| 701 | </property> | ||
| 702 | </widget> | ||
| 703 | </item> | ||
| 704 | </layout> | ||
| 645 | </widget> | 705 | </widget> |
| 646 | </item> | 706 | </item> |
| 647 | <item> | 707 | <item> |
| @@ -806,13 +866,43 @@ | |||
| 806 | </widget> | 866 | </widget> |
| 807 | </item> | 867 | </item> |
| 808 | <item> | 868 | <item> |
| 809 | <widget class="QWidget" name="fakeSpacerPlayer1" native="true"> | 869 | <widget class="QWidget" name="Player1Explain" native="true"> |
| 810 | <property name="minimumSize"> | 870 | <property name="minimumSize"> |
| 811 | <size> | 871 | <size> |
| 812 | <width>0</width> | 872 | <width>0</width> |
| 813 | <height>10</height> | 873 | <height>10</height> |
| 814 | </size> | 874 | </size> |
| 815 | </property> | 875 | </property> |
| 876 | <property name="maximumSize"> | ||
| 877 | <size> | ||
| 878 | <width>150</width> | ||
| 879 | <height>16777215</height> | ||
| 880 | </size> | ||
| 881 | </property> | ||
| 882 | <layout class="QVBoxLayout" name="verticalLayout_36"> | ||
| 883 | <property name="spacing"> | ||
| 884 | <number>0</number> | ||
| 885 | </property> | ||
| 886 | <property name="leftMargin"> | ||
| 887 | <number>0</number> | ||
| 888 | </property> | ||
| 889 | <property name="topMargin"> | ||
| 890 | <number>0</number> | ||
| 891 | </property> | ||
| 892 | <property name="rightMargin"> | ||
| 893 | <number>0</number> | ||
| 894 | </property> | ||
| 895 | <property name="bottomMargin"> | ||
| 896 | <number>0</number> | ||
| 897 | </property> | ||
| 898 | <item> | ||
| 899 | <widget class="QLabel" name="labelPlayer1Explain"> | ||
| 900 | <property name="alignment"> | ||
| 901 | <set>Qt::AlignCenter</set> | ||
| 902 | </property> | ||
| 903 | </widget> | ||
| 904 | </item> | ||
| 905 | </layout> | ||
| 816 | </widget> | 906 | </widget> |
| 817 | </item> | 907 | </item> |
| 818 | <item> | 908 | <item> |
| @@ -1086,13 +1176,43 @@ | |||
| 1086 | </widget> | 1176 | </widget> |
| 1087 | </item> | 1177 | </item> |
| 1088 | <item> | 1178 | <item> |
| 1089 | <widget class="QWidget" name="fakeSpacerPlayer3" native="true"> | 1179 | <widget class="QWidget" name="Player3Explain" native="true"> |
| 1090 | <property name="minimumSize"> | 1180 | <property name="minimumSize"> |
| 1091 | <size> | 1181 | <size> |
| 1092 | <width>0</width> | 1182 | <width>0</width> |
| 1093 | <height>10</height> | 1183 | <height>10</height> |
| 1094 | </size> | 1184 | </size> |
| 1095 | </property> | 1185 | </property> |
| 1186 | <property name="maximumSize"> | ||
| 1187 | <size> | ||
| 1188 | <width>150</width> | ||
| 1189 | <height>16777215</height> | ||
| 1190 | </size> | ||
| 1191 | </property> | ||
| 1192 | <layout class="QVBoxLayout" name="verticalLayout_38"> | ||
| 1193 | <property name="spacing"> | ||
| 1194 | <number>0</number> | ||
| 1195 | </property> | ||
| 1196 | <property name="leftMargin"> | ||
| 1197 | <number>0</number> | ||
| 1198 | </property> | ||
| 1199 | <property name="topMargin"> | ||
| 1200 | <number>0</number> | ||
| 1201 | </property> | ||
| 1202 | <property name="rightMargin"> | ||
| 1203 | <number>0</number> | ||
| 1204 | </property> | ||
| 1205 | <property name="bottomMargin"> | ||
| 1206 | <number>0</number> | ||
| 1207 | </property> | ||
| 1208 | <item> | ||
| 1209 | <widget class="QLabel" name="labelPlayer3Explain"> | ||
| 1210 | <property name="alignment"> | ||
| 1211 | <set>Qt::AlignCenter</set> | ||
| 1212 | </property> | ||
| 1213 | </widget> | ||
| 1214 | </item> | ||
| 1215 | </layout> | ||
| 1096 | </widget> | 1216 | </widget> |
| 1097 | </item> | 1217 | </item> |
| 1098 | <item> | 1218 | <item> |
| @@ -1296,13 +1416,43 @@ | |||
| 1296 | </widget> | 1416 | </widget> |
| 1297 | </item> | 1417 | </item> |
| 1298 | <item> | 1418 | <item> |
| 1299 | <widget class="QWidget" name="fakeSpacerPlayer7" native="true"> | 1419 | <widget class="QWidget" name="Player7Explain" native="true"> |
| 1300 | <property name="minimumSize"> | 1420 | <property name="minimumSize"> |
| 1301 | <size> | 1421 | <size> |
| 1302 | <width>0</width> | 1422 | <width>0</width> |
| 1303 | <height>10</height> | 1423 | <height>10</height> |
| 1304 | </size> | 1424 | </size> |
| 1305 | </property> | 1425 | </property> |
| 1426 | <property name="maximumSize"> | ||
| 1427 | <size> | ||
| 1428 | <width>150</width> | ||
| 1429 | <height>16777215</height> | ||
| 1430 | </size> | ||
| 1431 | </property> | ||
| 1432 | <layout class="QVBoxLayout" name="verticalLayout_42"> | ||
| 1433 | <property name="spacing"> | ||
| 1434 | <number>0</number> | ||
| 1435 | </property> | ||
| 1436 | <property name="leftMargin"> | ||
| 1437 | <number>0</number> | ||
| 1438 | </property> | ||
| 1439 | <property name="topMargin"> | ||
| 1440 | <number>0</number> | ||
| 1441 | </property> | ||
| 1442 | <property name="rightMargin"> | ||
| 1443 | <number>0</number> | ||
| 1444 | </property> | ||
| 1445 | <property name="bottomMargin"> | ||
| 1446 | <number>0</number> | ||
| 1447 | </property> | ||
| 1448 | <item> | ||
| 1449 | <widget class="QLabel" name="labelPlayer7Explain"> | ||
| 1450 | <property name="alignment"> | ||
| 1451 | <set>Qt::AlignCenter</set> | ||
| 1452 | </property> | ||
| 1453 | </widget> | ||
| 1454 | </item> | ||
| 1455 | </layout> | ||
| 1306 | </widget> | 1456 | </widget> |
| 1307 | </item> | 1457 | </item> |
| 1308 | <item> | 1458 | <item> |
| @@ -1463,13 +1613,43 @@ | |||
| 1463 | </widget> | 1613 | </widget> |
| 1464 | </item> | 1614 | </item> |
| 1465 | <item> | 1615 | <item> |
| 1466 | <widget class="QWidget" name="fakeSpacerPlayer8" native="true"> | 1616 | <widget class="QWidget" name="Player8Explain" native="true"> |
| 1467 | <property name="minimumSize"> | 1617 | <property name="minimumSize"> |
| 1468 | <size> | 1618 | <size> |
| 1469 | <width>0</width> | 1619 | <width>0</width> |
| 1470 | <height>10</height> | 1620 | <height>10</height> |
| 1471 | </size> | 1621 | </size> |
| 1472 | </property> | 1622 | </property> |
| 1623 | <property name="maximumSize"> | ||
| 1624 | <size> | ||
| 1625 | <width>150</width> | ||
| 1626 | <height>16777215</height> | ||
| 1627 | </size> | ||
| 1628 | </property> | ||
| 1629 | <layout class="QVBoxLayout" name="verticalLayout_35"> | ||
| 1630 | <property name="spacing"> | ||
| 1631 | <number>0</number> | ||
| 1632 | </property> | ||
| 1633 | <property name="leftMargin"> | ||
| 1634 | <number>0</number> | ||
| 1635 | </property> | ||
| 1636 | <property name="topMargin"> | ||
| 1637 | <number>0</number> | ||
| 1638 | </property> | ||
| 1639 | <property name="rightMargin"> | ||
| 1640 | <number>0</number> | ||
| 1641 | </property> | ||
| 1642 | <property name="bottomMargin"> | ||
| 1643 | <number>0</number> | ||
| 1644 | </property> | ||
| 1645 | <item> | ||
| 1646 | <widget class="QLabel" name="labelPlayer8Explain"> | ||
| 1647 | <property name="alignment"> | ||
| 1648 | <set>Qt::AlignCenter</set> | ||
| 1649 | </property> | ||
| 1650 | </widget> | ||
| 1651 | </item> | ||
| 1652 | </layout> | ||
| 1473 | </widget> | 1653 | </widget> |
| 1474 | </item> | 1654 | </item> |
| 1475 | <item> | 1655 | <item> |
| @@ -1634,13 +1814,43 @@ | |||
| 1634 | </widget> | 1814 | </widget> |
| 1635 | </item> | 1815 | </item> |
| 1636 | <item> | 1816 | <item> |
| 1637 | <widget class="QWidget" name="fakeSpacerPlayer5" native="true"> | 1817 | <widget class="QWidget" name="Player5Explain" native="true"> |
| 1638 | <property name="minimumSize"> | 1818 | <property name="minimumSize"> |
| 1639 | <size> | 1819 | <size> |
| 1640 | <width>0</width> | 1820 | <width>0</width> |
| 1641 | <height>10</height> | 1821 | <height>10</height> |
| 1642 | </size> | 1822 | </size> |
| 1643 | </property> | 1823 | </property> |
| 1824 | <property name="maximumSize"> | ||
| 1825 | <size> | ||
| 1826 | <width>150</width> | ||
| 1827 | <height>16777215</height> | ||
| 1828 | </size> | ||
| 1829 | </property> | ||
| 1830 | <layout class="QVBoxLayout" name="verticalLayout_40"> | ||
| 1831 | <property name="spacing"> | ||
| 1832 | <number>0</number> | ||
| 1833 | </property> | ||
| 1834 | <property name="leftMargin"> | ||
| 1835 | <number>0</number> | ||
| 1836 | </property> | ||
| 1837 | <property name="topMargin"> | ||
| 1838 | <number>0</number> | ||
| 1839 | </property> | ||
| 1840 | <property name="rightMargin"> | ||
| 1841 | <number>0</number> | ||
| 1842 | </property> | ||
| 1843 | <property name="bottomMargin"> | ||
| 1844 | <number>0</number> | ||
| 1845 | </property> | ||
| 1846 | <item> | ||
| 1847 | <widget class="QLabel" name="labelPlayer5Explain"> | ||
| 1848 | <property name="alignment"> | ||
| 1849 | <set>Qt::AlignCenter</set> | ||
| 1850 | </property> | ||
| 1851 | </widget> | ||
| 1852 | </item> | ||
| 1853 | </layout> | ||
| 1644 | </widget> | 1854 | </widget> |
| 1645 | </item> | 1855 | </item> |
| 1646 | <item> | 1856 | <item> |
| @@ -1801,13 +2011,43 @@ | |||
| 1801 | </widget> | 2011 | </widget> |
| 1802 | </item> | 2012 | </item> |
| 1803 | <item> | 2013 | <item> |
| 1804 | <widget class="QWidget" name="fakeSpacerPlayer6" native="true"> | 2014 | <widget class="QWidget" name="Player6Explain" native="true"> |
| 1805 | <property name="minimumSize"> | 2015 | <property name="minimumSize"> |
| 1806 | <size> | 2016 | <size> |
| 1807 | <width>0</width> | 2017 | <width>0</width> |
| 1808 | <height>10</height> | 2018 | <height>10</height> |
| 1809 | </size> | 2019 | </size> |
| 1810 | </property> | 2020 | </property> |
| 2021 | <property name="maximumSize"> | ||
| 2022 | <size> | ||
| 2023 | <width>150</width> | ||
| 2024 | <height>16777215</height> | ||
| 2025 | </size> | ||
| 2026 | </property> | ||
| 2027 | <layout class="QVBoxLayout" name="verticalLayout_41"> | ||
| 2028 | <property name="spacing"> | ||
| 2029 | <number>0</number> | ||
| 2030 | </property> | ||
| 2031 | <property name="leftMargin"> | ||
| 2032 | <number>0</number> | ||
| 2033 | </property> | ||
| 2034 | <property name="topMargin"> | ||
| 2035 | <number>0</number> | ||
| 2036 | </property> | ||
| 2037 | <property name="rightMargin"> | ||
| 2038 | <number>0</number> | ||
| 2039 | </property> | ||
| 2040 | <property name="bottomMargin"> | ||
| 2041 | <number>0</number> | ||
| 2042 | </property> | ||
| 2043 | <item> | ||
| 2044 | <widget class="QLabel" name="labelPlayer6Explain"> | ||
| 2045 | <property name="alignment"> | ||
| 2046 | <set>Qt::AlignCenter</set> | ||
| 2047 | </property> | ||
| 2048 | </widget> | ||
| 2049 | </item> | ||
| 2050 | </layout> | ||
| 1811 | </widget> | 2051 | </widget> |
| 1812 | </item> | 2052 | </item> |
| 1813 | <item> | 2053 | <item> |
| @@ -2395,7 +2635,7 @@ | |||
| 2395 | <item alignment="Qt::AlignBottom"> | 2635 | <item alignment="Qt::AlignBottom"> |
| 2396 | <widget class="QDialogButtonBox" name="buttonBox"> | 2636 | <widget class="QDialogButtonBox" name="buttonBox"> |
| 2397 | <property name="enabled"> | 2637 | <property name="enabled"> |
| 2398 | <bool>false</bool> | 2638 | <bool>true</bool> |
| 2399 | </property> | 2639 | </property> |
| 2400 | <property name="standardButtons"> | 2640 | <property name="standardButtons"> |
| 2401 | <set>QDialogButtonBox::Ok</set> | 2641 | <set>QDialogButtonBox::Ok</set> |