| | |
| | |
| |
|
| | #include <functional> |
| | #include <utility> |
| | #include <vector> |
| | #include <QMessageBox> |
| | #include "common/settings.h" |
| | #include "core/core.h" |
| | #include "ui_configure_general.h" |
| | #include "yuzu/configuration/configuration_shared.h" |
| | #include "yuzu/configuration/configure_general.h" |
| | #include "yuzu/configuration/shared_widget.h" |
| | #include "yuzu/uisettings.h" |
| |
|
| | ConfigureGeneral::ConfigureGeneral(const Core::System& system_, |
| | std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_, |
| | const ConfigurationShared::Builder& builder, QWidget* parent) |
| | : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGeneral>()}, system{system_} { |
| | ui->setupUi(this); |
| |
|
| | Setup(builder); |
| |
|
| | SetConfiguration(); |
| |
|
| | connect(ui->button_reset_defaults, &QPushButton::clicked, this, |
| | &ConfigureGeneral::ResetDefaults); |
| |
|
| | if (!Settings::IsConfiguringGlobal()) { |
| | ui->button_reset_defaults->setVisible(false); |
| | } |
| | } |
| |
|
| | ConfigureGeneral::~ConfigureGeneral() = default; |
| |
|
| | void ConfigureGeneral::SetConfiguration() {} |
| |
|
| | void ConfigureGeneral::Setup(const ConfigurationShared::Builder& builder) { |
| | QLayout& general_layout = *ui->general_widget->layout(); |
| | QLayout& linux_layout = *ui->linux_widget->layout(); |
| |
|
| | std::map<u32, QWidget*> general_hold{}; |
| | std::map<u32, QWidget*> linux_hold{}; |
| |
|
| | std::vector<Settings::BasicSetting*> settings; |
| |
|
| | auto push = [&settings](auto& list) { |
| | for (auto setting : list) { |
| | settings.push_back(setting); |
| | } |
| | }; |
| |
|
| | push(UISettings::values.linkage.by_category[Settings::Category::UiGeneral]); |
| | push(Settings::values.linkage.by_category[Settings::Category::Linux]); |
| |
|
| | |
| | #ifndef __unix__ |
| | ui->LinuxGroupBox->setVisible(false); |
| | #endif |
| |
|
| | for (const auto setting : settings) { |
| | auto* widget = builder.BuildWidget(setting, apply_funcs); |
| |
|
| | if (widget == nullptr) { |
| | continue; |
| | } |
| | if (!widget->Valid()) { |
| | widget->deleteLater(); |
| | continue; |
| | } |
| |
|
| | switch (setting->GetCategory()) { |
| | case Settings::Category::UiGeneral: |
| | general_hold.emplace(setting->Id(), widget); |
| | break; |
| | case Settings::Category::Linux: |
| | linux_hold.emplace(setting->Id(), widget); |
| | break; |
| | default: |
| | widget->deleteLater(); |
| | } |
| | } |
| |
|
| | for (const auto& [id, widget] : general_hold) { |
| | general_layout.addWidget(widget); |
| | } |
| | for (const auto& [id, widget] : linux_hold) { |
| | linux_layout.addWidget(widget); |
| | } |
| | } |
| |
|
| | |
| | void ConfigureGeneral::SetResetCallback(std::function<void()> callback) { |
| | reset_callback = std::move(callback); |
| | } |
| |
|
| | void ConfigureGeneral::ResetDefaults() { |
| | QMessageBox::StandardButton answer = QMessageBox::question( |
| | this, tr("yuzu"), |
| | tr("This reset all settings and remove all per-game configurations. This will not delete " |
| | "game directories, profiles, or input profiles. Proceed?"), |
| | QMessageBox::Yes | QMessageBox::No, QMessageBox::No); |
| | if (answer == QMessageBox::No) { |
| | return; |
| | } |
| | UISettings::values.reset_to_defaults = true; |
| | UISettings::values.is_game_list_reload_pending.exchange(true); |
| | reset_callback(); |
| | } |
| |
|
| | void ConfigureGeneral::ApplyConfiguration() { |
| | bool powered_on = system.IsPoweredOn(); |
| | for (const auto& func : apply_funcs) { |
| | func(powered_on); |
| | } |
| | } |
| |
|
| | void ConfigureGeneral::changeEvent(QEvent* event) { |
| | if (event->type() == QEvent::LanguageChange) { |
| | RetranslateUI(); |
| | } |
| |
|
| | QWidget::changeEvent(event); |
| | } |
| |
|
| | void ConfigureGeneral::RetranslateUI() { |
| | ui->retranslateUi(this); |
| | } |
| |
|