From d17f38494b8d64c16ac718c660a57cd89ab48b6f Mon Sep 17 00:00:00 2001
From: Zach Hilman <zachhilman@gmail.com>
Date: Thu, 22 Nov 2018 20:58:51 -0500
Subject: [PATCH] frontend: Add frontend applet for ProfileSelect

Responsible for selecting a profile and firing callback upon completion.
---
 src/core/CMakeLists.txt                      |  2 ++
 src/core/frontend/applets/profile_select.cpp | 19 ++++++++++++++
 src/core/frontend/applets/profile_select.h   | 27 ++++++++++++++++++++
 3 files changed, 48 insertions(+)
 create mode 100644 src/core/frontend/applets/profile_select.cpp
 create mode 100644 src/core/frontend/applets/profile_select.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 73aec8ab0b..4b51943ab5 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -79,6 +79,8 @@ add_library(core STATIC
     file_sys/vfs_vector.h
     file_sys/xts_archive.cpp
     file_sys/xts_archive.h
+    frontend/applets/profile_select.cpp
+    frontend/applets/profile_select.h
     frontend/applets/software_keyboard.cpp
     frontend/applets/software_keyboard.h
     frontend/emu_window.cpp
diff --git a/src/core/frontend/applets/profile_select.cpp b/src/core/frontend/applets/profile_select.cpp
new file mode 100644
index 0000000000..fbf5f2a9e5
--- /dev/null
+++ b/src/core/frontend/applets/profile_select.cpp
@@ -0,0 +1,19 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/frontend/applets/profile_select.h"
+#include "core/settings.h"
+
+namespace Core::Frontend {
+
+ProfileSelectApplet::~ProfileSelectApplet() = default;
+
+void DefaultProfileSelectApplet::SelectProfile(
+    std::function<void(std::optional<Service::Account::UUID>)> callback) const {
+    Service::Account::ProfileManager manager;
+    callback(manager.GetUser(Settings::values.current_user).value_or(Service::Account::UUID{}));
+    LOG_INFO(Service_ACC, "called, selecting current user instead of prompting...");
+}
+
+} // namespace Core::Frontend
diff --git a/src/core/frontend/applets/profile_select.h b/src/core/frontend/applets/profile_select.h
new file mode 100644
index 0000000000..fc8f7ae947
--- /dev/null
+++ b/src/core/frontend/applets/profile_select.h
@@ -0,0 +1,27 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <functional>
+#include <optional>
+#include "core/hle/service/acc/profile_manager.h"
+
+namespace Core::Frontend {
+
+class ProfileSelectApplet {
+public:
+    virtual ~ProfileSelectApplet();
+
+    virtual void SelectProfile(
+        std::function<void(std::optional<Service::Account::UUID>)> callback) const = 0;
+};
+
+class DefaultProfileSelectApplet final : public ProfileSelectApplet {
+public:
+    void SelectProfile(
+        std::function<void(std::optional<Service::Account::UUID>)> callback) const override;
+};
+
+} // namespace Core::Frontend
-- 
GitLab