mirror of
https://github.com/yuzu-emu/yuzu-android
synced 2025-08-08 13:32:33 -07:00
am: Deglobalize software keyboard applet
This commit is contained in:
@@ -7,23 +7,13 @@
|
||||
|
||||
namespace Service::AM::Applets {
|
||||
|
||||
std::shared_ptr<Frontend::SoftwareKeyboardApplet> software_keyboard =
|
||||
std::make_shared<Frontend::DefaultSoftwareKeyboardApplet>();
|
||||
Applet::Applet() = default;
|
||||
|
||||
Applet::~Applet() = default;
|
||||
|
||||
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
|
||||
|
@@ -20,10 +20,17 @@ namespace Applets {
|
||||
|
||||
class Applet {
|
||||
public:
|
||||
Applet();
|
||||
virtual ~Applet();
|
||||
|
||||
virtual void Initialize(std::vector<std::shared_ptr<IStorage>> storage);
|
||||
|
||||
virtual IStorage Execute() = 0;
|
||||
|
||||
bool IsInitialized() const {
|
||||
return initialized;
|
||||
}
|
||||
|
||||
protected:
|
||||
struct CommonArguments {
|
||||
u32_le arguments_version;
|
||||
@@ -39,8 +46,5 @@ protected:
|
||||
bool initialized = false;
|
||||
};
|
||||
|
||||
void RegisterSoftwareKeyboard(std::shared_ptr<Frontend::SoftwareKeyboardApplet> applet);
|
||||
std::shared_ptr<Frontend::SoftwareKeyboardApplet> GetSoftwareKeyboard();
|
||||
|
||||
} // namespace Applets
|
||||
} // namespace Service::AM
|
||||
|
@@ -2,8 +2,10 @@
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <cstring>
|
||||
#include "common/assert.h"
|
||||
#include "common/string_util.h"
|
||||
#include "core/core.h"
|
||||
#include "core/frontend/applets/software_keyboard.h"
|
||||
#include "core/hle/service/am/am.h"
|
||||
#include "core/hle/service/am/applets/software_keyboard.h"
|
||||
@@ -11,11 +13,13 @@
|
||||
namespace Service::AM::Applets {
|
||||
|
||||
constexpr std::size_t SWKBD_OUTPUT_BUFFER_SIZE = 0x7D8;
|
||||
constexpr std::size_t SWKBD_OUTPUT_INTERACTIVE_BUFFER_SIZE = 0x7D4;
|
||||
constexpr std::size_t DEFAULT_MAX_LENGTH = 500;
|
||||
constexpr bool INTERACTIVE_STATUS_OK = false;
|
||||
|
||||
static Frontend::SoftwareKeyboardApplet::Parameters ConvertToFrontendParameters(
|
||||
static Core::Frontend::SoftwareKeyboardParameters ConvertToFrontendParameters(
|
||||
KeyboardConfig config, std::u16string initial_text) {
|
||||
Frontend::SoftwareKeyboardApplet::Parameters params{};
|
||||
Core::Frontend::SoftwareKeyboardParameters params{};
|
||||
|
||||
params.submit_text = Common::UTF16StringFromFixedZeroTerminatedBuffer(
|
||||
config.submit_text.data(), config.submit_text.size());
|
||||
@@ -34,6 +38,10 @@ static Frontend::SoftwareKeyboardApplet::Parameters ConvertToFrontendParameters(
|
||||
return params;
|
||||
}
|
||||
|
||||
SoftwareKeyboard::SoftwareKeyboard() = default;
|
||||
|
||||
SoftwareKeyboard::~SoftwareKeyboard() = default;
|
||||
|
||||
void SoftwareKeyboard::Initialize(std::vector<std::shared_ptr<IStorage>> storage_) {
|
||||
Applet::Initialize(std::move(storage_));
|
||||
|
||||
|
@@ -5,6 +5,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "common/common_funcs.h"
|
||||
#include "core/hle/service/am/am.h"
|
||||
#include "core/hle/service/am/applets/applets.h"
|
||||
|
||||
namespace Service::AM::Applets {
|
||||
@@ -45,13 +46,21 @@ static_assert(sizeof(KeyboardConfig) == 0x3E0, "KeyboardConfig has incorrect siz
|
||||
|
||||
class SoftwareKeyboard final : public Applet {
|
||||
public:
|
||||
SoftwareKeyboard();
|
||||
~SoftwareKeyboard() override;
|
||||
|
||||
void Initialize(std::vector<std::shared_ptr<IStorage>> storage) override;
|
||||
|
||||
bool TransactionComplete() const override;
|
||||
ResultCode GetStatus() const override;
|
||||
void ReceiveInteractiveData(std::shared_ptr<IStorage> storage) override;
|
||||
IStorage Execute() override;
|
||||
|
||||
private:
|
||||
KeyboardConfig config;
|
||||
std::u16string initial_text;
|
||||
bool complete = false;
|
||||
std::vector<u8> final_data;
|
||||
};
|
||||
|
||||
} // namespace Service::AM::Applets
|
||||
|
Reference in New Issue
Block a user