Compare commits

...

1 Commits

Author SHA1 Message Date
german
efea779558 UI: Use a compatibility questionnaire 2021-11-29 20:34:04 -06:00
3 changed files with 839 additions and 101 deletions

View File

@@ -16,12 +16,18 @@ CompatDB::CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent)
: QWizard(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint),
ui{std::make_unique<Ui::CompatDB>()}, telemetry_session{telemetry_session_} {
ui->setupUi(this);
connect(ui->radioButton_Perfect, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Great, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Okay, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Bad, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_IntroMenu, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_WontBoot, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_GameBoot_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_GameBoot_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Gameplay_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Gameplay_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Freeze_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Freeze_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Graphical_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Graphical_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Audio_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Audio_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Complete_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Complete_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(button(NextButton), &QPushButton::clicked, this, &CompatDB::Submit);
connect(&testcase_watcher, &QFutureWatcher<bool>::finished, this,
&CompatDB::OnTestcaseSubmitted);
@@ -31,29 +37,90 @@ CompatDB::~CompatDB() = default;
enum class CompatDBPage {
Intro = 0,
Selection = 1,
Final = 2,
GameBoot = 1,
GamePlay = 2,
Freeze = 3,
FreezeSelection = 4,
Graphical = 5,
GraphicalSelection = 6,
Audio = 7,
AudioSelection = 8,
Complete = 9,
Final = 10,
};
void CompatDB::Submit() {
QButtonGroup* compatibility = new QButtonGroup(this);
compatibility->addButton(ui->radioButton_Perfect, 0);
compatibility->addButton(ui->radioButton_Great, 1);
compatibility->addButton(ui->radioButton_Okay, 2);
compatibility->addButton(ui->radioButton_Bad, 3);
compatibility->addButton(ui->radioButton_IntroMenu, 4);
compatibility->addButton(ui->radioButton_WontBoot, 5);
QButtonGroup* compatibility_GameBoot = new QButtonGroup(this);
compatibility_GameBoot->addButton(ui->radioButton_GameBoot_Yes, 0);
compatibility_GameBoot->addButton(ui->radioButton_GameBoot_No, 1);
QButtonGroup* compatibility_Gameplay = new QButtonGroup(this);
compatibility_Gameplay->addButton(ui->radioButton_Gameplay_Yes, 0);
compatibility_Gameplay->addButton(ui->radioButton_Gameplay_No, 1);
QButtonGroup* compatibility_Freeze = new QButtonGroup(this);
compatibility_Freeze->addButton(ui->radioButton_Freeze_Yes, 0);
compatibility_Freeze->addButton(ui->radioButton_Freeze_No, 1);
QButtonGroup* compatibility_Graphical = new QButtonGroup(this);
compatibility_Graphical->addButton(ui->radioButton_Graphical_Yes, 0);
compatibility_Graphical->addButton(ui->radioButton_Graphical_No, 1);
QButtonGroup* compatibility_Audio = new QButtonGroup(this);
compatibility_Audio->addButton(ui->radioButton_Audio_Yes, 0);
compatibility_Audio->addButton(ui->radioButton_Audio_No, 1);
QButtonGroup* compatibility_Complete = new QButtonGroup(this);
compatibility_Complete->addButton(ui->radioButton_Complete_Yes, 0);
compatibility_Complete->addButton(ui->radioButton_Complete_No, 1);
const int compatiblity = static_cast<int>(CalculateCompatibility());
switch ((static_cast<CompatDBPage>(currentId()))) {
case CompatDBPage::Selection:
if (compatibility->checkedId() == -1) {
case CompatDBPage::Intro:
break;
case CompatDBPage::GameBoot:
if (compatibility_GameBoot->checkedId() == -1) {
button(NextButton)->setEnabled(false);
}
break;
case CompatDBPage::GamePlay:
if (compatibility_Gameplay->checkedId() == -1) {
button(NextButton)->setEnabled(false);
}
break;
case CompatDBPage::Freeze:
if (compatibility_Freeze->checkedId() == -1) {
button(NextButton)->setEnabled(false);
}
break;
case CompatDBPage::FreezeSelection:
break;
case CompatDBPage::Graphical:
if (compatibility_Graphical->checkedId() == -1) {
button(NextButton)->setEnabled(false);
}
break;
case CompatDBPage::GraphicalSelection:
break;
case CompatDBPage::Audio:
if (compatibility_Audio->checkedId() == -1) {
button(NextButton)->setEnabled(false);
}
break;
case CompatDBPage::AudioSelection:
break;
case CompatDBPage::Complete:
if (compatibility_Complete->checkedId() == -1) {
button(NextButton)->setEnabled(false);
}
break;
case CompatDBPage::Final:
back();
LOG_DEBUG(Frontend, "Compatibility Rating: {}", compatibility->checkedId());
// TODO: Use checkboxes to submit aditional data
LOG_DEBUG(Frontend, "Compatibility Rating: {}", compatiblity);
telemetry_session.AddField(Common::Telemetry::FieldType::UserFeedback, "Compatibility",
compatibility->checkedId());
compatiblity);
button(NextButton)->setEnabled(false);
button(NextButton)->setText(tr("Submitting"));
@@ -67,6 +134,130 @@ void CompatDB::Submit() {
}
}
int CompatDB::nextId() const {
switch ((static_cast<CompatDBPage>(currentId()))) {
case CompatDBPage::Intro:
return static_cast<int>(CompatDBPage::GameBoot);
case CompatDBPage::GameBoot:
if (ui->radioButton_GameBoot_No->isChecked()) {
return static_cast<int>(CompatDBPage::Final);
}
return static_cast<int>(CompatDBPage::GamePlay);
case CompatDBPage::GamePlay:
if (ui->radioButton_Gameplay_No->isChecked()) {
return static_cast<int>(CompatDBPage::Final);
}
return static_cast<int>(CompatDBPage::Freeze);
case CompatDBPage::Freeze:
if (ui->radioButton_Freeze_Yes->isChecked()) {
return static_cast<int>(CompatDBPage::FreezeSelection);
}
return static_cast<int>(CompatDBPage::Graphical);
case CompatDBPage::FreezeSelection:
return static_cast<int>(CompatDBPage::Final);
case CompatDBPage::Graphical:
if (ui->radioButton_Graphical_Yes->isChecked()) {
return static_cast<int>(CompatDBPage::GraphicalSelection);
}
return static_cast<int>(CompatDBPage::Audio);
case CompatDBPage::GraphicalSelection:
return static_cast<int>(CompatDBPage::Audio);
case CompatDBPage::Audio:
if (ui->radioButton_Audio_Yes->isChecked()) {
return static_cast<int>(CompatDBPage::AudioSelection);
}
return static_cast<int>(CompatDBPage::Complete);
case CompatDBPage::AudioSelection:
return static_cast<int>(CompatDBPage::Complete);
case CompatDBPage::Complete:
return static_cast<int>(CompatDBPage::Final);
case CompatDBPage::Final:
return static_cast<int>(CompatDBPage::Final);
default:
LOG_ERROR(Frontend, "Unexpected page: {}", currentId());
return static_cast<int>(CompatDBPage::Intro);
}
}
CompatibilityStatus CompatDB::CalculateCompatibility() const {
int score = 0;
if (ui->radioButton_GameBoot_No->isChecked()) {
return CompatibilityStatus::WontBoot;
}
if (ui->radioButton_Gameplay_No->isChecked()) {
return CompatibilityStatus::IntroMenu;
}
if (ui->radioButton_Freeze_Yes->isChecked()) {
return CompatibilityStatus::Bad;
}
if (ui->radioButton_Graphical_Yes->isChecked()) {
score++;
if (ui->checkbox_Graphical_missing->isChecked()) {
score += 3;
}
if (ui->checkbox_Graphical_corrupted->isChecked()) {
score += 3;
}
if (ui->checkbox_Graphical_fliquer->isChecked()) {
score += 2;
}
if (ui->checkbox_Graphical_wrong_orientation->isChecked()) {
score++;
}
if (ui->checkbox_Graphical_wrong_colors->isChecked()) {
score++;
}
if (ui->checkbox_Graphical_wrong_animation->isChecked()) {
score++;
}
if (ui->checkbox_Graphical_overlay->isChecked()) {
score++;
}
}
if (ui->radioButton_Audio_Yes->isChecked()) {
score++;
if (ui->checkbox_Audio_faster->isChecked()) {
score++;
}
if (ui->checkbox_Audio_slower->isChecked()) {
score++;
}
if (ui->checkbox_Audio_loud->isChecked()) {
score++;
}
if (ui->checkbox_Audio_quiet->isChecked()) {
score++;
}
if (ui->checkbox_Freeze_Audio_corrupted->isChecked()) {
score += 2;
}
if (ui->checkbox_Freeze_Audio_missing->isChecked()) {
score += 2;
}
}
if (ui->radioButton_Complete_No->isChecked()) {
score++;
}
// The lower the score the better
if (score == 0) {
return CompatibilityStatus::Perfect;
}
if (score < 5) {
return CompatibilityStatus::Great;
}
if (score < 10) {
return CompatibilityStatus::Okay;
}
return CompatibilityStatus::Bad;
}
void CompatDB::OnTestcaseSubmitted() {
if (!testcase_watcher.result()) {
QMessageBox::critical(this, tr("Communication error"),

View File

@@ -13,12 +13,22 @@ namespace Ui {
class CompatDB;
}
enum class CompatibilityStatus {
Perfect = 0,
Great = 1,
Okay = 2,
Bad = 3,
IntroMenu = 4,
WontBoot = 5,
};
class CompatDB : public QWizard {
Q_OBJECT
public:
explicit CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent = nullptr);
~CompatDB();
int nextId() const override;
private:
QFutureWatcher<bool> testcase_watcher;
@@ -26,6 +36,7 @@ private:
std::unique_ptr<Ui::CompatDB> ui;
void Submit();
CompatibilityStatus CalculateCompatibility() const;
void OnTestcaseSubmitted();
void EnableNext();

View File

@@ -58,7 +58,7 @@
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Report">
<widget class="QWizardPage" name="wizard_GameBoot">
<property name="title">
<string>Report Game Compatibility</string>
</property>
@@ -67,16 +67,16 @@
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QRadioButton" name="radioButton_Perfect">
<widget class="QRadioButton" name="radioButton_GameBoot_Yes">
<property name="text">
<string>Perfect</string>
<string>Yes</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lbl_Perfect">
<widget class="QLabel" name="lbl_GameBoot_Yes">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions flawlessly with no audio or graphical glitches.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game starts to output video or audio&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
@@ -84,93 +84,22 @@
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="radioButton_Great">
<widget class="QRadioButton" name="radioButton_GameBoot_No">
<property name="text">
<string>Great </string>
<string>No </string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="lbl_Great">
<widget class="QLabel" name="lbl_GameBoot_No">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions with minor graphical or audio glitches and is playable from start to finish. May require some workarounds.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game doesn't get past the loading yuzu screen&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QRadioButton" name="radioButton_Okay">
<property name="text">
<string>Okay</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="lbl_Okay">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions with major graphical or audio glitches, but game is playable from start to finish with workarounds.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QRadioButton" name="radioButton_Bad">
<property name="text">
<string>Bad</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="lbl_Bad">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches even with workarounds.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QRadioButton" name="radioButton_IntroMenu">
<property name="text">
<string>Intro/Menu</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLabel" name="lbl_IntroMenu">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start Screen.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QRadioButton" name="radioButton_WontBoot">
<property name="text">
<string>Won't Boot</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="lbl_WontBoot">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The game crashes when attempting to startup.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
@@ -179,7 +108,7 @@
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Independent of speed or performance, how well does this game play from start to finish on this version of yuzu?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game boot?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
@@ -201,12 +130,619 @@
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_GamePlay">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">2</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QRadioButton" name="radioButton_Gameplay_Yes">
<property name="text">
<string>Yes</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lbl_Gameplay_Yes">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You can get past the intro/menu and into gameplay&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="radioButton_Gameplay_No">
<property name="text">
<string>No </string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="lbl_Gameplay_No">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The game crashes or freezes while loading or using the menu&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game reach gameplay?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Freeze">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">3</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QRadioButton" name="radioButton_Freeze_Yes">
<property name="text">
<string>Yes</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lbl_Freeze_Yes">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The game crashes or freezes while loading or using the menu&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="radioButton_Freeze_No">
<property name="text">
<string>No </string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="lbl_Freeze_No">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The game never stops working&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game crash, freeze or lockup during gameplay?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Freeze_optional">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">4</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_crash">
<property name="text">
<string>The game crashes at specific points</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_random_crash">
<property name="text">
<string>The game randomly crashes</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_freeze">
<property name="text">
<string>The game freezes at specific points</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_random_freeze">
<property name="text">
<string>The game randomly freezes </string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_softlock">
<property name="text">
<string>The game softlocks</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_memoryleak">
<property name="text">
<string>The has memory leaks</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check the boxes with the issue&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Graphical">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">5</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QRadioButton" name="radioButton_Graphical_Yes">
<property name="text">
<string>Yes</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lbl_Graphical_Yes">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The game has graphical errors&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="radioButton_Graphical_No">
<property name="text">
<string>No </string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="lbl_Graphical_No">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Everything is rendered as it looks on the Nintendo Switch&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game have any graphical glitches?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Graphical_optional">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">6</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QCheckBox" name="checkbox_Graphical_missing">
<property name="text">
<string>Missing textures</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkbox_Graphical_corrupted">
<property name="text">
<string>Corruped textures</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkbox_Graphical_fliquer">
<property name="text">
<string>Fliquering graphics</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkbox_Graphical_wrong_orientation">
<property name="text">
<string>Wrong orientation</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="checkbox_Graphical_wrong_colors">
<property name="text">
<string>Wrong colors</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="checkbox_Graphical_wrong_animation">
<property name="text">
<string>Wrong animation</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QCheckBox" name="checkbox_Graphical_overlay">
<property name="text">
<string>Overlayed images</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check the boxes with the issue&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Audio">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">7</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QRadioButton" name="radioButton_Audio_Yes">
<property name="text">
<string>Yes</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lbl_Audio_Yes">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Audio is missing, faster, slower, corrupted, etc.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="radioButton_Audio_No">
<property name="text">
<string>No </string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="lbl_Audio_No">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Audio is played perfectly, or almost perfectly with minimum distortion&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game have any audio glitches / missing effects?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Audio_optional">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">8</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QCheckBox" name="checkbox_Audio_faster">
<property name="text">
<string>Audio is faster</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkbox_Audio_slower">
<property name="text">
<string>Audio is slower</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkbox_Audio_loud">
<property name="text">
<string>Volume too high</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkbox_Audio_quiet">
<property name="text">
<string>Volume too low</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_Audio_corrupted">
<property name="text">
<string>Corrupted audio</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="checkbox_Freeze_Audio_missing">
<property name="text">
<string>Missing audio</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check the boxes with the issue&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_Complete">
<property name="title">
<string>Report Game Compatibility</string>
</property>
<attribute name="pageId">
<string notr="true">9</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QRadioButton" name="radioButton_Complete_Yes">
<property name="text">
<string>Yes</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lbl_Complete_Yes">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You can finish the game without any workaround&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="radioButton_Complete_No">
<property name="text">
<string>No </string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="lbl_Complete_No">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You can't get past a certain area&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_Independent">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Is the game completely playable from start to finish?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizard_ThankYou">
<property name="title">
<string>Thank you for your submission!</string>
</property>
<attribute name="pageId">
<string notr="true">2</string>
<string notr="true">10</string>
</attribute>
</widget>
</widget>