From d0e4f1c6f43f51df8fdc8a056801a297c2706d56 Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Fri, 24 Jan 2020 00:15:51 +0100 Subject: yuzu/configuration: create UI tab and move gamelist settings there --- src/yuzu/CMakeLists.txt | 6 +- src/yuzu/configuration/configure.ui | 6 +- src/yuzu/configuration/configure_dialog.cpp | 6 +- src/yuzu/configuration/configure_gamelist.cpp | 146 ------------------------- src/yuzu/configuration/configure_gamelist.h | 38 ------- src/yuzu/configuration/configure_gamelist.ui | 133 ---------------------- src/yuzu/configuration/configure_general.cpp | 8 -- src/yuzu/configuration/configure_general.ui | 37 +------ src/yuzu/configuration/configure_ui.cpp | 152 ++++++++++++++++++++++++++ src/yuzu/configuration/configure_ui.h | 38 +++++++ src/yuzu/configuration/configure_ui.ui | 134 +++++++++++++++++++++++ 11 files changed, 338 insertions(+), 366 deletions(-) delete mode 100644 src/yuzu/configuration/configure_gamelist.cpp delete mode 100644 src/yuzu/configuration/configure_gamelist.h delete mode 100644 src/yuzu/configuration/configure_gamelist.ui create mode 100644 src/yuzu/configuration/configure_ui.cpp create mode 100644 src/yuzu/configuration/configure_ui.h create mode 100644 src/yuzu/configuration/configure_ui.ui diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index 11ae1e66e..a3fb91d29 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -36,9 +36,6 @@ add_executable(yuzu configuration/configure_filesystem.cpp configuration/configure_filesystem.h configuration/configure_filesystem.ui - configuration/configure_gamelist.cpp - configuration/configure_gamelist.h - configuration/configure_gamelist.ui configuration/configure_general.cpp configuration/configure_general.h configuration/configure_general.ui @@ -75,6 +72,9 @@ add_executable(yuzu configuration/configure_touchscreen_advanced.cpp configuration/configure_touchscreen_advanced.h configuration/configure_touchscreen_advanced.ui + configuration/configure_ui.cpp + configuration/configure_ui.h + configuration/configure_ui.ui configuration/configure_web.cpp configuration/configure_web.h configuration/configure_web.ui diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index 372427ae2..67b990f1a 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui @@ -48,7 +48,7 @@ General - + Game List @@ -166,9 +166,9 @@ 1 - ConfigureGameList + ConfigureUi QWidget -
configuration/configure_gamelist.h
+
configuration/configure_ui.h
1
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 8497eaa14..db3b19352 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -34,7 +34,7 @@ void ConfigureDialog::SetConfiguration() {} void ConfigureDialog::ApplyConfiguration() { ui->generalTab->ApplyConfiguration(); - ui->gameListTab->ApplyConfiguration(); + ui->uiTab->ApplyConfiguration(); ui->systemTab->ApplyConfiguration(); ui->profileManagerTab->ApplyConfiguration(); ui->filesystemTab->applyConfiguration(); @@ -74,7 +74,7 @@ Q_DECLARE_METATYPE(QList); void ConfigureDialog::PopulateSelectionList() { const std::array>, 5> items{ - {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->gameListTab}}, + {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->uiTab}}, {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab}}, {tr("Graphics"), {ui->graphicsTab}}, {tr("Audio"), {ui->audioTab}}, @@ -108,7 +108,7 @@ void ConfigureDialog::UpdateVisibleTabs() { {ui->audioTab, tr("Audio")}, {ui->debugTab, tr("Debug")}, {ui->webTab, tr("Web")}, - {ui->gameListTab, tr("Game List")}, + {ui->uiTab, tr("UI")}, {ui->filesystemTab, tr("Filesystem")}, {ui->serviceTab, tr("Services")}, }; diff --git a/src/yuzu/configuration/configure_gamelist.cpp b/src/yuzu/configuration/configure_gamelist.cpp deleted file mode 100644 index e43e84d39..000000000 --- a/src/yuzu/configuration/configure_gamelist.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2016 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include -#include - -#include "common/common_types.h" -#include "core/settings.h" -#include "ui_configure_gamelist.h" -#include "yuzu/configuration/configure_gamelist.h" -#include "yuzu/uisettings.h" - -namespace { -constexpr std::array default_icon_sizes{ - std::make_pair(0, QT_TR_NOOP("None")), - std::make_pair(32, QT_TR_NOOP("Small (32x32)")), - std::make_pair(64, QT_TR_NOOP("Standard (64x64)")), - std::make_pair(128, QT_TR_NOOP("Large (128x128)")), - std::make_pair(256, QT_TR_NOOP("Full Size (256x256)")), -}; - -constexpr std::array row_text_names{ - QT_TR_NOOP("Filename"), QT_TR_NOOP("Filetype"), QT_TR_NOOP("Title ID"), - QT_TR_NOOP("Title Name"), QT_TR_NOOP("None"), -}; -} // Anonymous namespace - -ConfigureGameList::ConfigureGameList(QWidget* parent) - : QWidget(parent), ui(new Ui::ConfigureGameList) { - ui->setupUi(this); - - InitializeIconSizeComboBox(); - InitializeRowComboBoxes(); - - SetConfiguration(); - - // Force game list reload if any of the relevant settings are changed. - connect(ui->show_unknown, &QCheckBox::stateChanged, this, - &ConfigureGameList::RequestGameListUpdate); - connect(ui->icon_size_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, - &ConfigureGameList::RequestGameListUpdate); - connect(ui->row_1_text_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, - &ConfigureGameList::RequestGameListUpdate); - connect(ui->row_2_text_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, - &ConfigureGameList::RequestGameListUpdate); - - // Update text ComboBoxes after user interaction. - connect(ui->row_1_text_combobox, QOverload::of(&QComboBox::activated), - [=]() { ConfigureGameList::UpdateSecondRowComboBox(); }); - connect(ui->row_2_text_combobox, QOverload::of(&QComboBox::activated), - [=]() { ConfigureGameList::UpdateFirstRowComboBox(); }); -} - -ConfigureGameList::~ConfigureGameList() = default; - -void ConfigureGameList::ApplyConfiguration() { - UISettings::values.show_unknown = ui->show_unknown->isChecked(); - UISettings::values.show_add_ons = ui->show_add_ons->isChecked(); - UISettings::values.icon_size = ui->icon_size_combobox->currentData().toUInt(); - UISettings::values.row_1_text_id = ui->row_1_text_combobox->currentData().toUInt(); - UISettings::values.row_2_text_id = ui->row_2_text_combobox->currentData().toUInt(); - Settings::Apply(); -} - -void ConfigureGameList::RequestGameListUpdate() { - UISettings::values.is_game_list_reload_pending.exchange(true); -} - -void ConfigureGameList::SetConfiguration() { - ui->show_unknown->setChecked(UISettings::values.show_unknown); - ui->show_add_ons->setChecked(UISettings::values.show_add_ons); - ui->icon_size_combobox->setCurrentIndex( - ui->icon_size_combobox->findData(UISettings::values.icon_size)); -} - -void ConfigureGameList::changeEvent(QEvent* event) { - if (event->type() == QEvent::LanguageChange) { - RetranslateUI(); - } - - QWidget::changeEvent(event); -} - -void ConfigureGameList::RetranslateUI() { - ui->retranslateUi(this); - - for (int i = 0; i < ui->icon_size_combobox->count(); i++) { - ui->icon_size_combobox->setItemText(i, tr(default_icon_sizes[i].second)); - } - - for (int i = 0; i < ui->row_1_text_combobox->count(); i++) { - const QString name = tr(row_text_names[i]); - - ui->row_1_text_combobox->setItemText(i, name); - ui->row_2_text_combobox->setItemText(i, name); - } -} - -void ConfigureGameList::InitializeIconSizeComboBox() { - for (const auto& size : default_icon_sizes) { - ui->icon_size_combobox->addItem(QString::fromUtf8(size.second), size.first); - } -} - -void ConfigureGameList::InitializeRowComboBoxes() { - UpdateFirstRowComboBox(true); - UpdateSecondRowComboBox(true); -} - -void ConfigureGameList::UpdateFirstRowComboBox(bool init) { - const int currentIndex = - init ? UISettings::values.row_1_text_id - : ui->row_1_text_combobox->findData(ui->row_1_text_combobox->currentData()); - - ui->row_1_text_combobox->clear(); - - for (std::size_t i = 0; i < row_text_names.size(); i++) { - const QString row_text_name = QString::fromUtf8(row_text_names[i]); - ui->row_1_text_combobox->addItem(row_text_name, QVariant::fromValue(i)); - } - - ui->row_1_text_combobox->setCurrentIndex(ui->row_1_text_combobox->findData(currentIndex)); - - ui->row_1_text_combobox->removeItem(4); // None - ui->row_1_text_combobox->removeItem( - ui->row_1_text_combobox->findData(ui->row_2_text_combobox->currentData())); -} - -void ConfigureGameList::UpdateSecondRowComboBox(bool init) { - const int currentIndex = - init ? UISettings::values.row_2_text_id - : ui->row_2_text_combobox->findData(ui->row_2_text_combobox->currentData()); - - ui->row_2_text_combobox->clear(); - - for (std::size_t i = 0; i < row_text_names.size(); ++i) { - const QString row_text_name = QString::fromUtf8(row_text_names[i]); - ui->row_2_text_combobox->addItem(row_text_name, QVariant::fromValue(i)); - } - - ui->row_2_text_combobox->setCurrentIndex(ui->row_2_text_combobox->findData(currentIndex)); - - ui->row_2_text_combobox->removeItem( - ui->row_2_text_combobox->findData(ui->row_1_text_combobox->currentData())); -} diff --git a/src/yuzu/configuration/configure_gamelist.h b/src/yuzu/configuration/configure_gamelist.h deleted file mode 100644 index ecd3fa174..000000000 --- a/src/yuzu/configuration/configure_gamelist.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2016 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include -#include - -namespace Ui { -class ConfigureGameList; -} - -class ConfigureGameList : public QWidget { - Q_OBJECT - -public: - explicit ConfigureGameList(QWidget* parent = nullptr); - ~ConfigureGameList() override; - - void ApplyConfiguration(); - -private: - void RequestGameListUpdate(); - - void SetConfiguration(); - - void changeEvent(QEvent*) override; - void RetranslateUI(); - - void InitializeIconSizeComboBox(); - void InitializeRowComboBoxes(); - - void UpdateFirstRowComboBox(bool init = false); - void UpdateSecondRowComboBox(bool init = false); - - std::unique_ptr ui; -}; diff --git a/src/yuzu/configuration/configure_gamelist.ui b/src/yuzu/configuration/configure_gamelist.ui deleted file mode 100644 index 7a69377e7..000000000 --- a/src/yuzu/configuration/configure_gamelist.ui +++ /dev/null @@ -1,133 +0,0 @@ - - - ConfigureGameList - - - - 0 - 0 - 300 - 377 - - - - Form - - - - - - - - General - - - - - - - - Show files with type 'Unknown' - - - - - - - Show Add-Ons Column - - - - - - - - - - - - Icon Size - - - - - - - - - - Icon Size: - - - - - - - - - - - - - - - - - Row Text - - - - - - - - - - Row 1 Text: - - - - - - - - - - - - - - Row 2 Text: - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp index 34e1d7fea..5ef927114 100644 --- a/src/yuzu/configuration/configure_general.cpp +++ b/src/yuzu/configuration/configure_general.cpp @@ -15,11 +15,6 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent) ui->setupUi(this); - for (const auto& theme : UISettings::themes) { - ui->theme_combobox->addItem(QString::fromUtf8(theme.first), - QString::fromUtf8(theme.second)); - } - SetConfiguration(); connect(ui->toggle_frame_limit, &QCheckBox::toggled, ui->frame_limit, &QSpinBox::setEnabled); @@ -30,7 +25,6 @@ ConfigureGeneral::~ConfigureGeneral() = default; void ConfigureGeneral::SetConfiguration() { ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing); ui->toggle_user_on_boot->setChecked(UISettings::values.select_user_on_boot); - ui->theme_combobox->setCurrentIndex(ui->theme_combobox->findData(UISettings::values.theme)); ui->toggle_background_pause->setChecked(UISettings::values.pause_when_in_background); ui->toggle_frame_limit->setChecked(Settings::values.use_frame_limit); @@ -41,8 +35,6 @@ void ConfigureGeneral::SetConfiguration() { void ConfigureGeneral::ApplyConfiguration() { UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked(); UISettings::values.select_user_on_boot = ui->toggle_user_on_boot->isChecked(); - UISettings::values.theme = - ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString(); UISettings::values.pause_when_in_background = ui->toggle_background_pause->isChecked(); Settings::values.use_frame_limit = ui->toggle_frame_limit->isChecked(); diff --git a/src/yuzu/configuration/configure_general.ui b/src/yuzu/configuration/configure_general.ui index 26b3486ff..857119bb3 100644 --- a/src/yuzu/configuration/configure_general.ui +++ b/src/yuzu/configuration/configure_general.ui @@ -65,39 +65,12 @@
- - - - Pause emulation when in background - - - - - - -
- - - - - Theme - - - - - - - - - Theme: - - - - - - - + + + Pause emulation when in background + + diff --git a/src/yuzu/configuration/configure_ui.cpp b/src/yuzu/configuration/configure_ui.cpp new file mode 100644 index 000000000..c4a84cc67 --- /dev/null +++ b/src/yuzu/configuration/configure_ui.cpp @@ -0,0 +1,152 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include + +#include "common/common_types.h" +#include "core/settings.h" +#include "ui_configure_ui.h" +#include "yuzu/configuration/configure_ui.h" +#include "yuzu/uisettings.h" + +namespace { +constexpr std::array default_icon_sizes{ + std::make_pair(0, QT_TR_NOOP("None")), + std::make_pair(32, QT_TR_NOOP("Small (32x32)")), + std::make_pair(64, QT_TR_NOOP("Standard (64x64)")), + std::make_pair(128, QT_TR_NOOP("Large (128x128)")), + std::make_pair(256, QT_TR_NOOP("Full Size (256x256)")), +}; + +constexpr std::array row_text_names{ + QT_TR_NOOP("Filename"), QT_TR_NOOP("Filetype"), QT_TR_NOOP("Title ID"), + QT_TR_NOOP("Title Name"), QT_TR_NOOP("None"), +}; +} // Anonymous namespace + +ConfigureUi::ConfigureUi(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureUi) { + ui->setupUi(this); + + for (const auto& theme : UISettings::themes) { + ui->theme_combobox->addItem(QString::fromUtf8(theme.first), + QString::fromUtf8(theme.second)); + } + + InitializeIconSizeComboBox(); + InitializeRowComboBoxes(); + + SetConfiguration(); + + // Force game list reload if any of the relevant settings are changed. + connect(ui->show_unknown, &QCheckBox::stateChanged, this, &ConfigureUi::RequestGameListUpdate); + connect(ui->icon_size_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, + &ConfigureUi::RequestGameListUpdate); + connect(ui->row_1_text_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, + &ConfigureUi::RequestGameListUpdate); + connect(ui->row_2_text_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, + &ConfigureUi::RequestGameListUpdate); + + // Update text ComboBoxes after user interaction. + connect(ui->row_1_text_combobox, QOverload::of(&QComboBox::activated), + [=]() { ConfigureUi::UpdateSecondRowComboBox(); }); + connect(ui->row_2_text_combobox, QOverload::of(&QComboBox::activated), + [=]() { ConfigureUi::UpdateFirstRowComboBox(); }); +} + +ConfigureUi::~ConfigureUi() = default; + +void ConfigureUi::ApplyConfiguration() { + UISettings::values.theme = + ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString(); + UISettings::values.show_unknown = ui->show_unknown->isChecked(); + UISettings::values.show_add_ons = ui->show_add_ons->isChecked(); + UISettings::values.icon_size = ui->icon_size_combobox->currentData().toUInt(); + UISettings::values.row_1_text_id = ui->row_1_text_combobox->currentData().toUInt(); + UISettings::values.row_2_text_id = ui->row_2_text_combobox->currentData().toUInt(); + Settings::Apply(); +} + +void ConfigureUi::RequestGameListUpdate() { + UISettings::values.is_game_list_reload_pending.exchange(true); +} + +void ConfigureUi::SetConfiguration() { + ui->theme_combobox->setCurrentIndex(ui->theme_combobox->findData(UISettings::values.theme)); + ui->show_unknown->setChecked(UISettings::values.show_unknown); + ui->show_add_ons->setChecked(UISettings::values.show_add_ons); + ui->icon_size_combobox->setCurrentIndex( + ui->icon_size_combobox->findData(UISettings::values.icon_size)); +} + +void ConfigureUi::changeEvent(QEvent* event) { + if (event->type() == QEvent::LanguageChange) { + RetranslateUI(); + } + + QWidget::changeEvent(event); +} + +void ConfigureUi::RetranslateUI() { + ui->retranslateUi(this); + + for (int i = 0; i < ui->icon_size_combobox->count(); i++) { + ui->icon_size_combobox->setItemText(i, tr(default_icon_sizes[i].second)); + } + + for (int i = 0; i < ui->row_1_text_combobox->count(); i++) { + const QString name = tr(row_text_names[i]); + + ui->row_1_text_combobox->setItemText(i, name); + ui->row_2_text_combobox->setItemText(i, name); + } +} + +void ConfigureUi::InitializeIconSizeComboBox() { + for (const auto& size : default_icon_sizes) { + ui->icon_size_combobox->addItem(QString::fromUtf8(size.second), size.first); + } +} + +void ConfigureUi::InitializeRowComboBoxes() { + UpdateFirstRowComboBox(true); + UpdateSecondRowComboBox(true); +} + +void ConfigureUi::UpdateFirstRowComboBox(bool init) { + const int currentIndex = + init ? UISettings::values.row_1_text_id + : ui->row_1_text_combobox->findData(ui->row_1_text_combobox->currentData()); + + ui->row_1_text_combobox->clear(); + + for (std::size_t i = 0; i < row_text_names.size(); i++) { + const QString row_text_name = QString::fromUtf8(row_text_names[i]); + ui->row_1_text_combobox->addItem(row_text_name, QVariant::fromValue(i)); + } + + ui->row_1_text_combobox->setCurrentIndex(ui->row_1_text_combobox->findData(currentIndex)); + + ui->row_1_text_combobox->removeItem(4); // None + ui->row_1_text_combobox->removeItem( + ui->row_1_text_combobox->findData(ui->row_2_text_combobox->currentData())); +} + +void ConfigureUi::UpdateSecondRowComboBox(bool init) { + const int currentIndex = + init ? UISettings::values.row_2_text_id + : ui->row_2_text_combobox->findData(ui->row_2_text_combobox->currentData()); + + ui->row_2_text_combobox->clear(); + + for (std::size_t i = 0; i < row_text_names.size(); ++i) { + const QString row_text_name = QString::fromUtf8(row_text_names[i]); + ui->row_2_text_combobox->addItem(row_text_name, QVariant::fromValue(i)); + } + + ui->row_2_text_combobox->setCurrentIndex(ui->row_2_text_combobox->findData(currentIndex)); + + ui->row_2_text_combobox->removeItem( + ui->row_2_text_combobox->findData(ui->row_1_text_combobox->currentData())); +} diff --git a/src/yuzu/configuration/configure_ui.h b/src/yuzu/configuration/configure_ui.h new file mode 100644 index 000000000..d471afe99 --- /dev/null +++ b/src/yuzu/configuration/configure_ui.h @@ -0,0 +1,38 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include + +namespace Ui { +class ConfigureUi; +} + +class ConfigureUi : public QWidget { + Q_OBJECT + +public: + explicit ConfigureUi(QWidget* parent = nullptr); + ~ConfigureUi() override; + + void ApplyConfiguration(); + +private: + void RequestGameListUpdate(); + + void SetConfiguration(); + + void changeEvent(QEvent*) override; + void RetranslateUI(); + + void InitializeIconSizeComboBox(); + void InitializeRowComboBoxes(); + + void UpdateFirstRowComboBox(bool init = false); + void UpdateSecondRowComboBox(bool init = false); + + std::unique_ptr ui; +}; diff --git a/src/yuzu/configuration/configure_ui.ui b/src/yuzu/configuration/configure_ui.ui new file mode 100644 index 000000000..aa36bd112 --- /dev/null +++ b/src/yuzu/configuration/configure_ui.ui @@ -0,0 +1,134 @@ + + + ConfigureUi + + + + 0 + 0 + 300 + 377 + + + + Form + + + + + + + + General + + + + + + + + + + Theme: + + + + + + + + + + + + + + + + + Game List + + + + + + + + Show files with type 'Unknown' + + + + + + + Show Add-Ons Column + + + + + + + + + Icon Size: + + + + + + + + + + + + + + Row 1 Text: + + + + + + + + + + + + + + Row 2 Text: + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + -- cgit v1.2.3