forked from eden-emu/eden

Adds an option to set a user's profile image from the avatars in the firmware. Background color can be changed with a color picker. Also modifies profile image saving to account for this, and as a result images are now saved as JPEG with 100% quality. Any PNG, JPEG, or BMP can now also be used in the image file picker instead of just JPEG. Using ryujinx's implementation and other parts of the yuzu codebase for reference. Credit: Torzu, lui Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/56 Co-authored-by: lui <lui@vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion> Co-committed-by: lui <lui@vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion> Co-authored-by: lui <lui@vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion> Co-authored-by: Maufeat <sahyno1996@gmail.com> Reviewed-on: eden-emu/eden#205 Co-authored-by: JPikachu <jpikachu@noreply.localhost> Co-committed-by: JPikachu <jpikachu@noreply.localhost>
81 lines
3 KiB
C++
81 lines
3 KiB
C++
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include "common/uuid.h"
|
|
#include "core/hle/service/glue/glue_manager.h"
|
|
#include "core/hle/service/service.h"
|
|
|
|
namespace Service::Account {
|
|
|
|
class ProfileManager;
|
|
|
|
class Module final {
|
|
public:
|
|
class Interface : public ServiceFramework<Interface> {
|
|
public:
|
|
explicit Interface(std::shared_ptr<Module> module_,
|
|
std::shared_ptr<ProfileManager> profile_manager_, Core::System& system_,
|
|
const char* name);
|
|
~Interface() override;
|
|
|
|
void GetUserCount(HLERequestContext& ctx);
|
|
void GetUserExistence(HLERequestContext& ctx);
|
|
void ListAllUsers(HLERequestContext& ctx);
|
|
void ListOpenUsers(HLERequestContext& ctx);
|
|
void GetLastOpenedUser(HLERequestContext& ctx);
|
|
void GetProfile(HLERequestContext& ctx);
|
|
void InitializeApplicationInfo(HLERequestContext& ctx);
|
|
void InitializeApplicationInfoRestricted(HLERequestContext& ctx);
|
|
void GetBaasAccountManagerForApplication(HLERequestContext& ctx);
|
|
void IsUserRegistrationRequestPermitted(HLERequestContext& ctx);
|
|
void TrySelectUserWithoutInteractionDeprecated(HLERequestContext& ctx);
|
|
void TrySelectUserWithoutInteraction(HLERequestContext& ctx);
|
|
void IsUserAccountSwitchLocked(HLERequestContext& ctx);
|
|
void InitializeApplicationInfoV2(HLERequestContext& ctx);
|
|
void BeginUserRegistration(HLERequestContext& ctx);
|
|
void CompleteUserRegistration(HLERequestContext& ctx);
|
|
void DeleteUser(HLERequestContext& ctx);
|
|
void SetUserPosition(HLERequestContext& ctx);
|
|
void GetProfileEditor(HLERequestContext& ctx);
|
|
void ListQualifiedUsers(HLERequestContext& ctx);
|
|
void ListOpenContextStoredUsers(HLERequestContext& ctx);
|
|
void StoreSaveDataThumbnailApplication(HLERequestContext& ctx);
|
|
void GetBaasAccountManagerForSystemService(HLERequestContext& ctx);
|
|
void StoreSaveDataThumbnailSystem(HLERequestContext& ctx);
|
|
|
|
private:
|
|
Result InitializeApplicationInfoBase();
|
|
void StoreSaveDataThumbnail(HLERequestContext& ctx, const Common::UUID& uuid,
|
|
const u64 tid);
|
|
|
|
enum class ApplicationType : u32_le {
|
|
GameCard = 0,
|
|
Digital = 1,
|
|
Unknown = 3,
|
|
};
|
|
|
|
struct ApplicationInfo {
|
|
Service::Glue::ApplicationLaunchProperty launch_property;
|
|
ApplicationType application_type;
|
|
|
|
constexpr explicit operator bool() const {
|
|
return launch_property.title_id != 0x0;
|
|
}
|
|
};
|
|
|
|
ApplicationInfo application_info{};
|
|
|
|
protected:
|
|
std::shared_ptr<Module> module;
|
|
std::shared_ptr<ProfileManager> profile_manager;
|
|
};
|
|
};
|
|
|
|
void LoopProcess(Core::System& system);
|
|
|
|
} // namespace Service::Account
|