settings: Add users and current_user settings and remove username
This commit is contained in:
parent
50e4e81fd3
commit
e7e3d5898e
3 changed files with 54 additions and 6 deletions
|
@ -8,6 +8,7 @@
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
#include "core/hle/service/acc/profile_manager.h"
|
||||||
|
|
||||||
namespace Settings {
|
namespace Settings {
|
||||||
|
|
||||||
|
@ -114,7 +115,8 @@ struct Values {
|
||||||
// System
|
// System
|
||||||
bool use_docked_mode;
|
bool use_docked_mode;
|
||||||
bool enable_nfc;
|
bool enable_nfc;
|
||||||
std::string username;
|
int current_user;
|
||||||
|
std::vector<std::pair<std::string, Service::Account::UUID>> users;
|
||||||
int language_index;
|
int language_index;
|
||||||
|
|
||||||
// Controls
|
// Controls
|
||||||
|
|
|
@ -123,7 +123,25 @@ void Config::ReadValues() {
|
||||||
qt_config->beginGroup("System");
|
qt_config->beginGroup("System");
|
||||||
Settings::values.use_docked_mode = qt_config->value("use_docked_mode", false).toBool();
|
Settings::values.use_docked_mode = qt_config->value("use_docked_mode", false).toBool();
|
||||||
Settings::values.enable_nfc = qt_config->value("enable_nfc", true).toBool();
|
Settings::values.enable_nfc = qt_config->value("enable_nfc", true).toBool();
|
||||||
Settings::values.username = qt_config->value("username", "yuzu").toString().toStdString();
|
|
||||||
|
Settings::values.users.clear();
|
||||||
|
const auto size = qt_config->beginReadArray("users");
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
qt_config->setArrayIndex(i);
|
||||||
|
const Service::Account::UUID uuid(qt_config->value("uuid_low").toULongLong(),
|
||||||
|
qt_config->value("uuid_high").toULongLong());
|
||||||
|
Settings::values.users.emplace_back(qt_config->value("username").toString().toStdString(),
|
||||||
|
uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
qt_config->endArray();
|
||||||
|
|
||||||
|
if (Settings::values.users.empty())
|
||||||
|
Settings::values.users.emplace_back("yuzu", Service::Account::UUID{}.Generate());
|
||||||
|
|
||||||
|
Settings::values.current_user =
|
||||||
|
std::clamp(qt_config->value("current_user", 0).toInt(), 0, size);
|
||||||
|
|
||||||
Settings::values.language_index = qt_config->value("language_index", 1).toInt();
|
Settings::values.language_index = qt_config->value("language_index", 1).toInt();
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
|
|
||||||
|
@ -260,7 +278,19 @@ void Config::SaveValues() {
|
||||||
qt_config->beginGroup("System");
|
qt_config->beginGroup("System");
|
||||||
qt_config->setValue("use_docked_mode", Settings::values.use_docked_mode);
|
qt_config->setValue("use_docked_mode", Settings::values.use_docked_mode);
|
||||||
qt_config->setValue("enable_nfc", Settings::values.enable_nfc);
|
qt_config->setValue("enable_nfc", Settings::values.enable_nfc);
|
||||||
qt_config->setValue("username", QString::fromStdString(Settings::values.username));
|
qt_config->setValue("current_user", Settings::values.current_user);
|
||||||
|
|
||||||
|
qt_config->beginWriteArray("users", Settings::values.users.size());
|
||||||
|
for (std::size_t i = 0; i < Settings::values.users.size(); ++i) {
|
||||||
|
qt_config->setArrayIndex(i);
|
||||||
|
const auto& user = Settings::values.users[i];
|
||||||
|
qt_config->setValue("uuid_low", user.second.uuid[0]);
|
||||||
|
qt_config->setValue("uuid_high", user.second.uuid[1]);
|
||||||
|
qt_config->setValue("username", QString::fromStdString(user.first));
|
||||||
|
}
|
||||||
|
|
||||||
|
qt_config->endArray();
|
||||||
|
|
||||||
qt_config->setValue("language_index", Settings::values.language_index);
|
qt_config->setValue("language_index", Settings::values.language_index);
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
|
|
||||||
|
|
|
@ -126,9 +126,25 @@ void Config::ReadValues() {
|
||||||
// System
|
// System
|
||||||
Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false);
|
Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false);
|
||||||
Settings::values.enable_nfc = sdl2_config->GetBoolean("System", "enable_nfc", true);
|
Settings::values.enable_nfc = sdl2_config->GetBoolean("System", "enable_nfc", true);
|
||||||
Settings::values.username = sdl2_config->Get("System", "username", "yuzu");
|
const auto size = sdl2_config->GetInteger("System", "users_size", 0);
|
||||||
if (Settings::values.username.empty()) {
|
|
||||||
Settings::values.username = "yuzu";
|
Settings::values.users.clear();
|
||||||
|
for (std::size_t i = 0; i < size; ++i) {
|
||||||
|
const auto uuid_low = std::stoull(
|
||||||
|
sdl2_config->Get("System", fmt::format("users_{}_uuid_low", i), "0"), nullptr, 0);
|
||||||
|
const auto uuid_high = std::stoull(
|
||||||
|
sdl2_config->Get("System", fmt::format("users_{}_uuid_high", i), "0"), nullptr, 0);
|
||||||
|
Settings::values.users.emplace_back(
|
||||||
|
sdl2_config->Get("System", fmt::format("users_{}_username", i), ""),
|
||||||
|
Service::Account::UUID{uuid_low, uuid_high});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Settings::values.users.empty()) {
|
||||||
|
Settings::values.users.emplace_back("yuzu", Service::Account::UUID{1, 0});
|
||||||
|
LOG_WARNING(
|
||||||
|
Config,
|
||||||
|
"You are using the default UUID of {1, 0}! This might cause issues down the road! "
|
||||||
|
"Please consider randomizing a UUID and adding it to the sdl2_config.ini file.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Miscellaneous
|
// Miscellaneous
|
||||||
|
|
Loading…
Reference in a new issue