From e408bbceed90da8965480e23d05fb764fcbfbb84 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Thu, 11 Oct 2018 09:16:32 -0400 Subject: [PATCH] configure_system: Clear selection after user delete --- src/core/hle/service/acc/profile_manager.cpp | 2 +- src/yuzu/configuration/configure_system.cpp | 28 ++++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp index b0ea06b480..43743d39e5 100644 --- a/src/core/hle/service/acc/profile_manager.cpp +++ b/src/core/hle/service/acc/profile_manager.cpp @@ -323,7 +323,7 @@ void ProfileManager::WriteUserSaveFile() { FileUtil::IOFile save(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + "/system/save/8000000000000010/su/avators/profiles.dat", - "rb"); + "wb"); save.Resize(sizeof(ProfileDataRaw)); save.Seek(0, SEEK_SET); diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index af2acdd453..87301b5a2f 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/src/yuzu/configuration/configure_system.cpp @@ -13,6 +13,7 @@ #include #include "common/common_paths.h" #include "common/logging/backend.h" +#include "common/string_util.h" #include "core/core.h" #include "core/settings.h" #include "ui_configure_system.h" @@ -112,8 +113,6 @@ void ConfigureSystem::setConfiguration() { item_model->removeRows(0, item_model->rowCount()); list_items.clear(); - ui->pm_add->setEnabled(profile_manager->GetUserCount() < 8); - PopulateUserList(); UpdateCurrentUser(); } @@ -156,6 +155,8 @@ void ConfigureSystem::PopulateUserList() { } void ConfigureSystem::UpdateCurrentUser() { + ui->pm_add->setEnabled(profile_manager->GetUserCount() < 8); + const auto& current_user = profile_manager->GetAllUsers()[Settings::values.current_user]; const auto username = GetAccountUsername(current_user); @@ -230,10 +231,7 @@ void ConfigureSystem::SelectUser(const QModelIndex& index) { UpdateCurrentUser(); ui->pm_remove->setEnabled(profile_manager->GetUserCount() >= 2); - ui->pm_remove->setEnabled(false); - ui->pm_rename->setEnabled(true); - ui->pm_set_image->setEnabled(true); } @@ -282,9 +280,12 @@ void ConfigureSystem::RenameUser() { profile_manager->SetProfileBase(uuid, profile); - list_items[user][0] = new QStandardItem{ - GetIcon(uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), - QString::fromStdString(username_std + '\n' + uuid.FormatSwitch())}; + item_model->setItem( + user, 0, + new QStandardItem{ + GetIcon(uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), + QString::fromStdString(username_std + '\n' + uuid.FormatSwitch())}); + UpdateCurrentUser(); } void ConfigureSystem::DeleteUser() { @@ -302,11 +303,13 @@ void ConfigureSystem::DeleteUser() { if (Settings::values.current_user == tree_view->currentIndex().row()) Settings::values.current_user = 0; + UpdateCurrentUser(); if (!profile_manager->RemoveUser(uuid)) return; item_model->removeRows(tree_view->currentIndex().row(), 1); + tree_view->clearSelection(); ui->pm_remove->setEnabled(false); ui->pm_rename->setEnabled(false); @@ -334,7 +337,10 @@ void ConfigureSystem::SetUserImage() { FileUtil::CreateFullPath(GetImagePath(uuid)); FileUtil::Copy(file.toStdString(), GetImagePath(uuid)); - list_items[index][0] = new QStandardItem{ - GetIcon(uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), - QString::fromStdString(username + '\n' + uuid.FormatSwitch())}; + item_model->setItem( + index, 0, + new QStandardItem{ + GetIcon(uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), + QString::fromStdString(username + '\n' + uuid.FormatSwitch())}); + UpdateCurrentUser(); }