yuzu qt: Use lambda and std::function for reset callback

Also makes use of std::move, and performs a clang-format cleanup.

This addresses review comments.

Co-authored-by: LC <mathew1800@gmail.com>
This commit is contained in:
lat9nq 2021-05-25 22:14:55 -04:00
parent 4a3d57e469
commit c17e1bd7a8
4 changed files with 17 additions and 19 deletions

View File

@ -16,10 +16,6 @@
#include "yuzu/configuration/configure_input_player.h"
#include "yuzu/hotkeys.h"
static void CloseDialog(ConfigureDialog *dialog) {
dialog->close();
}
ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
InputCommon::InputSubsystem* input_subsystem)
: QDialog(parent), ui(new Ui::ConfigureDialog), registry(registry) {
@ -31,7 +27,7 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
ui->inputTab->Initialize(input_subsystem);
ui->generalTab->SetResetCallback(&CloseDialog, this);
ui->generalTab->SetResetCallback([&] { this->close(); });
SetConfiguration();
PopulateSelectionList();

View File

@ -2,6 +2,8 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <functional>
#include <utility>
#include <QCheckBox>
#include <QMessageBox>
#include <QSpinBox>
@ -57,10 +59,8 @@ void ConfigureGeneral::SetConfiguration() {
}
// Called to set the callback when resetting settings to defaults
void ConfigureGeneral::SetResetCallback(void (*callback)(ConfigureDialog*),
ConfigureDialog* param) {
ResetCallback = callback;
reset_callback_param = param;
void ConfigureGeneral::SetResetCallback(std::function<void()> callback) {
reset_callback = std::move(callback);
}
void ConfigureGeneral::ResetDefaults() {
@ -69,11 +69,12 @@ void ConfigureGeneral::ResetDefaults() {
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)
if (answer == QMessageBox::No) {
return;
}
UISettings::values.reset_to_defaults = true;
UISettings::values.is_game_list_reload_pending.exchange(true);
(*ResetCallback)(reset_callback_param);
reset_callback();
}
void ConfigureGeneral::ApplyConfiguration() {

View File

@ -4,6 +4,7 @@
#pragma once
#include <functional>
#include <memory>
#include <QWidget>
@ -26,7 +27,7 @@ public:
explicit ConfigureGeneral(QWidget* parent = nullptr);
~ConfigureGeneral() override;
void SetResetCallback(void (*callback)(ConfigureDialog*), ConfigureDialog *param);
void SetResetCallback(std::function<void()> callback);
void ResetDefaults();
void ApplyConfiguration();
@ -38,8 +39,7 @@ private:
void SetupPerGameUI();
void (*ResetCallback)(ConfigureDialog*);
ConfigureDialog *reset_callback_param;
std::function<void()> reset_callback;
std::unique_ptr<Ui::ConfigureGeneral> ui;

View File

@ -2611,17 +2611,18 @@ void GMainWindow::OnConfigure() {
LOG_WARNING(Frontend, "Failed to remove game metadata cache files");
}
// Explicitly save the game directories, since reinitializing config does not do so.
QVector<UISettings::GameDir> old_game_dirs = UISettings::values.game_dirs;
QVector<u64> old_favorited_ids = UISettings::values.favorited_ids;
// Explicitly save the game directories, since reinitializing config does not explicitly do
// so.
QVector<UISettings::GameDir> old_game_dirs = std::move(UISettings::values.game_dirs);
QVector<u64> old_favorited_ids = std::move(UISettings::values.favorited_ids);
Settings::values.disabled_addons.clear();
config = std::make_unique<Config>();
UISettings::values.reset_to_defaults = false;
UISettings::values.game_dirs = old_game_dirs;
UISettings::values.favorited_ids = old_favorited_ids;
UISettings::values.game_dirs = std::move(old_game_dirs);
UISettings::values.favorited_ids = std::move(old_favorited_ids);
InitializeRecentFileMenuActions();