summaryrefslogtreecommitdiffstats
path: root/src/yuzu/configuration/configure_ui.cpp
diff options
context:
space:
mode:
authorFearlessTobi <thm.frey@gmail.com>2020-01-24 00:15:51 +0100
committerFearlessTobi <thm.frey@gmail.com>2020-01-24 00:15:51 +0100
commitd0e4f1c6f43f51df8fdc8a056801a297c2706d56 (patch)
treeef6ada4ab6f44ce4e1203b9b5450bd71d82cbf04 /src/yuzu/configuration/configure_ui.cpp
parentMerge pull request #3341 from bunnei/time-posix-myrule (diff)
downloadyuzu-d0e4f1c6f43f51df8fdc8a056801a297c2706d56.tar
yuzu-d0e4f1c6f43f51df8fdc8a056801a297c2706d56.tar.gz
yuzu-d0e4f1c6f43f51df8fdc8a056801a297c2706d56.tar.bz2
yuzu-d0e4f1c6f43f51df8fdc8a056801a297c2706d56.tar.lz
yuzu-d0e4f1c6f43f51df8fdc8a056801a297c2706d56.tar.xz
yuzu-d0e4f1c6f43f51df8fdc8a056801a297c2706d56.tar.zst
yuzu-d0e4f1c6f43f51df8fdc8a056801a297c2706d56.zip
Diffstat (limited to 'src/yuzu/configuration/configure_ui.cpp')
-rw-r--r--src/yuzu/configuration/configure_ui.cpp152
1 files changed, 152 insertions, 0 deletions
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 <array>
+#include <utility>
+
+#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<int>::of(&QComboBox::currentIndexChanged), this,
+ &ConfigureUi::RequestGameListUpdate);
+ connect(ui->row_1_text_combobox, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
+ &ConfigureUi::RequestGameListUpdate);
+ connect(ui->row_2_text_combobox, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
+ &ConfigureUi::RequestGameListUpdate);
+
+ // Update text ComboBoxes after user interaction.
+ connect(ui->row_1_text_combobox, QOverload<int>::of(&QComboBox::activated),
+ [=]() { ConfigureUi::UpdateSecondRowComboBox(); });
+ connect(ui->row_2_text_combobox, QOverload<int>::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()));
+}