summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/core/hle/service/am/applets/applets.cpp29
-rw-r--r--src/core/hle/service/am/applets/applets.h46
3 files changed, 77 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 64fdf38cd..698f21a39 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -150,6 +150,8 @@ add_library(core STATIC
hle/service/am/applet_ae.h
hle/service/am/applet_oe.cpp
hle/service/am/applet_oe.h
+ hle/service/am/applets/applets.cpp
+ hle/service/am/applets/applets.h
hle/service/am/idle.cpp
hle/service/am/idle.h
hle/service/am/omm.cpp
diff --git a/src/core/hle/service/am/applets/applets.cpp b/src/core/hle/service/am/applets/applets.cpp
new file mode 100644
index 000000000..8cc4b0f1a
--- /dev/null
+++ b/src/core/hle/service/am/applets/applets.cpp
@@ -0,0 +1,29 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/frontend/applets/software_keyboard.h"
+#include "core/hle/service/am/applets/applets.h"
+
+namespace Service::AM::Applets {
+
+std::shared_ptr<Frontend::SoftwareKeyboardApplet> software_keyboard =
+ std::make_shared<Frontend::DefaultSoftwareKeyboardApplet>();
+
+void Applet::Initialize(std::vector<std::shared_ptr<IStorage>> storage) {
+ storage_stack = std::move(storage);
+ initialized = true;
+}
+
+void RegisterSoftwareKeyboard(std::shared_ptr<Frontend::SoftwareKeyboardApplet> applet) {
+ if (applet == nullptr)
+ return;
+
+ software_keyboard = std::move(applet);
+}
+
+std::shared_ptr<Frontend::SoftwareKeyboardApplet> GetSoftwareKeyboard() {
+ return software_keyboard;
+}
+
+} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applets.h b/src/core/hle/service/am/applets/applets.h
new file mode 100644
index 000000000..1f91392b4
--- /dev/null
+++ b/src/core/hle/service/am/applets/applets.h
@@ -0,0 +1,46 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <memory>
+#include <vector>
+#include "common/swap.h"
+
+namespace Frontend {
+class SoftwareKeyboardApplet;
+}
+
+namespace Service::AM {
+
+class IStorage;
+
+namespace Applets {
+
+class Applet {
+public:
+ virtual void Initialize(std::vector<std::shared_ptr<IStorage>> storage);
+
+ virtual IStorage Execute() = 0;
+
+protected:
+ struct CommonArguments {
+ u32_le arguments_version;
+ u32_le size;
+ u32_le library_version;
+ u32_le theme_color;
+ u8 play_startup_sound;
+ u64_le system_tick;
+ };
+ static_assert(sizeof(CommonArguments) == 0x20, "CommonArguments has incorrect size.");
+
+ std::vector<std::shared_ptr<IStorage>> storage_stack;
+ bool initialized = false;
+};
+
+void RegisterSoftwareKeyboard(std::shared_ptr<Frontend::SoftwareKeyboardApplet> applet);
+std::shared_ptr<Frontend::SoftwareKeyboardApplet> GetSoftwareKeyboard();
+
+} // namespace Applets
+} // namespace Service::AM