diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.cpp | 86 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 28 | 
3 files changed, 56 insertions, 61 deletions
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index f7a9a8dd4..1fe9a7edd 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -125,7 +125,8 @@ void Config::ReadValues() {      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.current_user = std::clamp(qt_config->value("current_user", 0).toInt(), 0, 7); +    Settings::values.current_user = std::clamp<int>(qt_config->value("current_user", 0).toInt(), 0, +                                                    Service::Account::MAX_USERS - 1);      Settings::values.language_index = qt_config->value("language_index", 1).toInt();      qt_config->endGroup(); diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index 87301b5a2..02e061ebc 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/src/yuzu/configuration/configure_system.cpp @@ -131,38 +131,33 @@ static QPixmap GetIcon(Service::Account::UUID uuid) {  void ConfigureSystem::PopulateUserList() {      const auto& profiles = profile_manager->GetAllUsers(); -    std::transform( -        profiles.begin(), profiles.end(), std::back_inserter(list_items), -        [this](const Service::Account::UUID& user) { -            Service::Account::ProfileBase profile; -            if (!profile_manager->GetProfileBase(user, profile)) -                return QList<QStandardItem*>{}; -            const auto username = Common::StringFromFixedZeroTerminatedBuffer( -                reinterpret_cast<const char*>(profile.username.data()), profile.username.size()); - -            return QList<QStandardItem*>{new QStandardItem{ -                GetIcon(user).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), -                QString::fromStdString(username + '\n' + user.FormatSwitch())}}; -        }); - -    list_items.erase( -        std::remove_if(list_items.begin(), list_items.end(), -                       [](const auto& list) { return list == QList<QStandardItem*>{}; }), -        list_items.end()); +    for (const auto& user : profiles) { +        Service::Account::ProfileBase profile; +        if (!profile_manager->GetProfileBase(user, profile)) +            continue; + +        const auto username = Common::StringFromFixedZeroTerminatedBuffer( +            reinterpret_cast<const char*>(profile.username.data()), profile.username.size()); + +        list_items.push_back(QList<QStandardItem*>{new QStandardItem{ +            GetIcon(user).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), +            QString::fromStdString(username + '\n' + user.FormatSwitch())}}); +    }      for (const auto& item : list_items)          item_model->appendRow(item);  }  void ConfigureSystem::UpdateCurrentUser() { -    ui->pm_add->setEnabled(profile_manager->GetUserCount() < 8); +    ui->pm_add->setEnabled(profile_manager->GetUserCount() < Service::Account::MAX_USERS); -    const auto& current_user = profile_manager->GetAllUsers()[Settings::values.current_user]; -    const auto username = GetAccountUsername(current_user); +    const auto& current_user = profile_manager->GetUser(Settings::values.current_user); +    ASSERT(current_user != boost::none); +    const auto username = GetAccountUsername(*current_user);      scene->clear();      scene->addPixmap( -        GetIcon(current_user).scaled(48, 48, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); +        GetIcon(*current_user).scaled(48, 48, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));      ui->current_user_username->setText(QString::fromStdString(username));  } @@ -255,13 +250,12 @@ void ConfigureSystem::AddUser() {  void ConfigureSystem::RenameUser() {      const auto user = tree_view->currentIndex().row(); -    ASSERT(user < 8); - -    const auto uuid = profile_manager->GetAllUsers()[user]; -    const auto username = GetAccountUsername(uuid); +    const auto uuid = profile_manager->GetUser(user); +    ASSERT(uuid != boost::none); +    const auto username = GetAccountUsername(*uuid);      Service::Account::ProfileBase profile; -    if (!profile_manager->GetProfileBase(uuid, profile)) +    if (!profile_manager->GetProfileBase(*uuid, profile))          return;      bool ok = false; @@ -273,26 +267,28 @@ void ConfigureSystem::RenameUser() {          return;      const auto username_std = new_username.toStdString(); -    if (username_std.size() > profile.username.size()) -        std::copy_n(username_std.begin(), profile.username.size(), profile.username.begin()); -    else +    if (username_std.size() > profile.username.size()) { +        std::copy_n(username_std.begin(), std::min(profile.username.size(), username_std.size()), +                    profile.username.begin()); +    } else {          std::copy(username_std.begin(), username_std.end(), profile.username.begin()); +    } -    profile_manager->SetProfileBase(uuid, profile); +    profile_manager->SetProfileBase(*uuid, profile);      item_model->setItem(          user, 0,          new QStandardItem{ -            GetIcon(uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), -            QString::fromStdString(username_std + '\n' + uuid.FormatSwitch())}); +            GetIcon(*uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), +            QString::fromStdString(username_std + '\n' + uuid->FormatSwitch())});      UpdateCurrentUser();  }  void ConfigureSystem::DeleteUser() {      const auto index = tree_view->currentIndex().row(); -    ASSERT(index < 8); -    const auto uuid = profile_manager->GetAllUsers()[index]; -    const auto username = GetAccountUsername(uuid); +    const auto uuid = profile_manager->GetUser(index); +    ASSERT(uuid != boost::none); +    const auto username = GetAccountUsername(*uuid);      const auto confirm = QMessageBox::question(          this, tr("Confirm Delete"), @@ -305,7 +301,7 @@ void ConfigureSystem::DeleteUser() {          Settings::values.current_user = 0;      UpdateCurrentUser(); -    if (!profile_manager->RemoveUser(uuid)) +    if (!profile_manager->RemoveUser(*uuid))          return;      item_model->removeRows(tree_view->currentIndex().row(), 1); @@ -317,9 +313,9 @@ void ConfigureSystem::DeleteUser() {  void ConfigureSystem::SetUserImage() {      const auto index = tree_view->currentIndex().row(); -    ASSERT(index < 8); -    const auto uuid = profile_manager->GetAllUsers()[index]; -    const auto username = GetAccountUsername(uuid); +    const auto uuid = profile_manager->GetUser(index); +    ASSERT(uuid != boost::none); +    const auto username = GetAccountUsername(*uuid);      const auto file = QFileDialog::getOpenFileName(this, tr("Select User Image"), QString(),                                                     "JPEG Images (*.jpg *.jpeg)"); @@ -327,20 +323,20 @@ void ConfigureSystem::SetUserImage() {      if (file.isEmpty())          return; -    FileUtil::Delete(GetImagePath(uuid)); +    FileUtil::Delete(GetImagePath(*uuid));      const auto raw_path =          FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + "/system/save/8000000000000010";      if (FileUtil::Exists(raw_path) && !FileUtil::IsDirectory(raw_path))          FileUtil::Delete(raw_path); -    FileUtil::CreateFullPath(GetImagePath(uuid)); -    FileUtil::Copy(file.toStdString(), GetImagePath(uuid)); +    FileUtil::CreateFullPath(GetImagePath(*uuid)); +    FileUtil::Copy(file.toStdString(), GetImagePath(*uuid));      item_model->setItem(          index, 0,          new QStandardItem{ -            GetIcon(uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), -            QString::fromStdString(username + '\n' + uuid.FormatSwitch())}); +            GetIcon(*uuid).scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), +            QString::fromStdString(username + '\n' + uuid->FormatSwitch())});      UpdateCurrentUser();  } diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 9a3535e77..47f494841 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -762,19 +762,16 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target          Service::Account::ProfileManager manager{};          const auto user_ids = manager.GetAllUsers();          QStringList list; -        std::transform( -            user_ids.begin(), user_ids.end(), std::back_inserter(list), -            [&manager](const auto& user_id) -> QString { -                if (user_id == Service::Account::UUID{}) -                    return ""; -                Service::Account::ProfileBase base; -                if (!manager.GetProfileBase(user_id, base)) -                    return ""; - -                return QString::fromStdString(Common::StringFromFixedZeroTerminatedBuffer( -                    reinterpret_cast<const char*>(base.username.data()), base.username.size())); -            }); -        list.removeAll(""); +        for (const auto& user_id : user_ids) { +            if (user_id == Service::Account::UUID{}) +                continue; +            Service::Account::ProfileBase base; +            if (!manager.GetProfileBase(user_id, base)) +                continue; + +            list.push_back(QString::fromStdString(Common::StringFromFixedZeroTerminatedBuffer( +                reinterpret_cast<const char*>(base.username.data()), base.username.size()))); +        }          bool ok = false;          const auto index_string = @@ -787,10 +784,11 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target          const auto index = list.indexOf(index_string);          ASSERT(index != -1 && index < 8); -        const auto user_id = manager.GetAllUsers()[index]; +        const auto user_id = manager.GetUser(index); +        ASSERT(user_id != boost::none);          path = nand_dir + FileSys::SaveDataFactory::GetFullPath(FileSys::SaveDataSpaceId::NandUser,                                                                  FileSys::SaveDataType::SaveData, -                                                                program_id, user_id.uuid, 0); +                                                                program_id, user_id->uuid, 0);          if (!FileUtil::Exists(path)) {              FileUtil::CreateFullPath(path);  | 
