|
|
|
@ -21,12 +21,8 @@ |
|
|
|
#include "yuzu/configuration/configure_system.h"
|
|
|
|
#include "yuzu/main.h"
|
|
|
|
|
|
|
|
static std::string GetImagePath(Service::Account::UUID uuid) { |
|
|
|
return FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + |
|
|
|
"/system/save/8000000000000010/su/avators/" + uuid.FormatSwitch() + ".jpg"; |
|
|
|
} |
|
|
|
|
|
|
|
static const std::array<int, 12> days_in_month = {{ |
|
|
|
namespace { |
|
|
|
constexpr std::array<int, 12> days_in_month = {{ |
|
|
|
31, |
|
|
|
29, |
|
|
|
31, |
|
|
|
@ -42,7 +38,7 @@ static const std::array<int, 12> days_in_month = {{ |
|
|
|
}}; |
|
|
|
|
|
|
|
// Same backup JPEG used by acc IProfile::GetImage if no jpeg found
|
|
|
|
static constexpr std::array<u8, 107> backup_jpeg{ |
|
|
|
constexpr std::array<u8, 107> backup_jpeg{ |
|
|
|
0xff, 0xd8, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, |
|
|
|
0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x06, 0x06, 0x05, |
|
|
|
0x06, 0x09, 0x08, 0x0a, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x0a, 0x0c, 0x0f, 0x0c, 0x0a, 0x0b, 0x0e, |
|
|
|
@ -52,15 +48,32 @@ static constexpr std::array<u8, 107> backup_jpeg{ |
|
|
|
0x01, 0x01, 0x00, 0x00, 0x3f, 0x00, 0xd2, 0xcf, 0x20, 0xff, 0xd9, |
|
|
|
}; |
|
|
|
|
|
|
|
std::string GetImagePath(Service::Account::UUID uuid) { |
|
|
|
return FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + |
|
|
|
"/system/save/8000000000000010/su/avators/" + uuid.FormatSwitch() + ".jpg"; |
|
|
|
} |
|
|
|
|
|
|
|
std::string GetAccountUsername(const Service::Account::ProfileManager& manager, |
|
|
|
Service::Account::UUID uuid) { |
|
|
|
Service::Account::ProfileBase profile; |
|
|
|
if (!manager.GetProfileBase(uuid, profile)) { |
|
|
|
return ""; |
|
|
|
} |
|
|
|
|
|
|
|
return Common::StringFromFixedZeroTerminatedBuffer( |
|
|
|
reinterpret_cast<const char*>(profile.username.data()), profile.username.size()); |
|
|
|
} |
|
|
|
} // Anonymous namespace
|
|
|
|
|
|
|
|
ConfigureSystem::ConfigureSystem(QWidget* parent) |
|
|
|
: QWidget(parent), ui(new Ui::ConfigureSystem), |
|
|
|
profile_manager(std::make_unique<Service::Account::ProfileManager>()) { |
|
|
|
ui->setupUi(this); |
|
|
|
connect(ui->combo_birthmonth, |
|
|
|
static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, |
|
|
|
&ConfigureSystem::updateBirthdayComboBox); |
|
|
|
&ConfigureSystem::UpdateBirthdayComboBox); |
|
|
|
connect(ui->button_regenerate_console_id, &QPushButton::clicked, this, |
|
|
|
&ConfigureSystem::refreshConsoleID); |
|
|
|
&ConfigureSystem::RefreshConsoleID); |
|
|
|
|
|
|
|
layout = new QVBoxLayout; |
|
|
|
tree_view = new QTreeView; |
|
|
|
@ -154,7 +167,7 @@ void ConfigureSystem::UpdateCurrentUser() { |
|
|
|
|
|
|
|
const auto& current_user = profile_manager->GetUser(Settings::values.current_user); |
|
|
|
ASSERT(current_user != std::nullopt); |
|
|
|
const auto username = GetAccountUsername(*current_user); |
|
|
|
const auto username = GetAccountUsername(*profile_manager, *current_user); |
|
|
|
|
|
|
|
scene->clear(); |
|
|
|
scene->addPixmap( |
|
|
|
@ -164,14 +177,6 @@ void ConfigureSystem::UpdateCurrentUser() { |
|
|
|
|
|
|
|
void ConfigureSystem::ReadSystemSettings() {} |
|
|
|
|
|
|
|
std::string ConfigureSystem::GetAccountUsername(Service::Account::UUID uuid) const { |
|
|
|
Service::Account::ProfileBase profile; |
|
|
|
if (!profile_manager->GetProfileBase(uuid, profile)) |
|
|
|
return ""; |
|
|
|
return Common::StringFromFixedZeroTerminatedBuffer( |
|
|
|
reinterpret_cast<const char*>(profile.username.data()), profile.username.size()); |
|
|
|
} |
|
|
|
|
|
|
|
void ConfigureSystem::applyConfiguration() { |
|
|
|
if (!enabled) |
|
|
|
return; |
|
|
|
@ -180,7 +185,7 @@ void ConfigureSystem::applyConfiguration() { |
|
|
|
Settings::Apply(); |
|
|
|
} |
|
|
|
|
|
|
|
void ConfigureSystem::updateBirthdayComboBox(int birthmonth_index) { |
|
|
|
void ConfigureSystem::UpdateBirthdayComboBox(int birthmonth_index) { |
|
|
|
if (birthmonth_index < 0 || birthmonth_index >= 12) |
|
|
|
return; |
|
|
|
|
|
|
|
@ -205,7 +210,7 @@ void ConfigureSystem::updateBirthdayComboBox(int birthmonth_index) { |
|
|
|
ui->combo_birthday->setCurrentIndex(birthday_index); |
|
|
|
} |
|
|
|
|
|
|
|
void ConfigureSystem::refreshConsoleID() { |
|
|
|
void ConfigureSystem::RefreshConsoleID() { |
|
|
|
QMessageBox::StandardButton reply; |
|
|
|
QString warning_text = tr("This will replace your current virtual Switch with a new one. " |
|
|
|
"Your current virtual Switch will not be recoverable. " |
|
|
|
@ -232,8 +237,7 @@ void ConfigureSystem::SelectUser(const QModelIndex& index) { |
|
|
|
} |
|
|
|
|
|
|
|
void ConfigureSystem::AddUser() { |
|
|
|
Service::Account::UUID uuid; |
|
|
|
uuid.Generate(); |
|
|
|
const auto uuid = Service::Account::UUID::Generate(); |
|
|
|
|
|
|
|
bool ok = false; |
|
|
|
const auto username = |
|
|
|
@ -253,7 +257,7 @@ void ConfigureSystem::RenameUser() { |
|
|
|
const auto user = tree_view->currentIndex().row(); |
|
|
|
const auto uuid = profile_manager->GetUser(user); |
|
|
|
ASSERT(uuid != std::nullopt); |
|
|
|
const auto username = GetAccountUsername(*uuid); |
|
|
|
const auto username = GetAccountUsername(*profile_manager, *uuid); |
|
|
|
|
|
|
|
Service::Account::ProfileBase profile; |
|
|
|
if (!profile_manager->GetProfileBase(*uuid, profile)) |
|
|
|
@ -293,7 +297,7 @@ void ConfigureSystem::DeleteUser() { |
|
|
|
const auto index = tree_view->currentIndex().row(); |
|
|
|
const auto uuid = profile_manager->GetUser(index); |
|
|
|
ASSERT(uuid != std::nullopt); |
|
|
|
const auto username = GetAccountUsername(*uuid); |
|
|
|
const auto username = GetAccountUsername(*profile_manager, *uuid); |
|
|
|
|
|
|
|
const auto confirm = |
|
|
|
QMessageBox::question(this, tr("Confirm Delete"), |
|
|
|
@ -321,10 +325,10 @@ void ConfigureSystem::SetUserImage() { |
|
|
|
const auto index = tree_view->currentIndex().row(); |
|
|
|
const auto uuid = profile_manager->GetUser(index); |
|
|
|
ASSERT(uuid != std::nullopt); |
|
|
|
const auto username = GetAccountUsername(*uuid); |
|
|
|
const auto username = GetAccountUsername(*profile_manager, *uuid); |
|
|
|
|
|
|
|
const auto file = QFileDialog::getOpenFileName(this, tr("Select User Image"), QString(), |
|
|
|
"JPEG Images (*.jpg *.jpeg)"); |
|
|
|
tr("JPEG Images (*.jpg *.jpeg)")); |
|
|
|
|
|
|
|
if (file.isEmpty()) |
|
|
|
return; |
|
|
|
|