summaryrefslogtreecommitdiffstats
path: root/src/core/frontend/applets/software_keyboard.h
diff options
context:
space:
mode:
authorMorph <39850852+Morph1984@users.noreply.github.com>2021-03-16 18:01:03 +0100
committerMorph <39850852+Morph1984@users.noreply.github.com>2021-04-15 07:53:17 +0200
commit578e6c5a57bc29aed27e604ac0ede34f87bae86d (patch)
tree7b2ec7df82c7bc93f5b058486b6fd1a567838a3c /src/core/frontend/applets/software_keyboard.h
parentapplets/swkbd: Implement the Normal and Inline Software Keyboard Applet (diff)
downloadyuzu-578e6c5a57bc29aed27e604ac0ede34f87bae86d.tar
yuzu-578e6c5a57bc29aed27e604ac0ede34f87bae86d.tar.gz
yuzu-578e6c5a57bc29aed27e604ac0ede34f87bae86d.tar.bz2
yuzu-578e6c5a57bc29aed27e604ac0ede34f87bae86d.tar.lz
yuzu-578e6c5a57bc29aed27e604ac0ede34f87bae86d.tar.xz
yuzu-578e6c5a57bc29aed27e604ac0ede34f87bae86d.tar.zst
yuzu-578e6c5a57bc29aed27e604ac0ede34f87bae86d.zip
Diffstat (limited to '')
-rw-r--r--src/core/frontend/applets/software_keyboard.h98
1 files changed, 97 insertions, 1 deletions
diff --git a/src/core/frontend/applets/software_keyboard.h b/src/core/frontend/applets/software_keyboard.h
index 54528837e..506eb35bb 100644
--- a/src/core/frontend/applets/software_keyboard.h
+++ b/src/core/frontend/applets/software_keyboard.h
@@ -1,20 +1,116 @@
-// Copyright 2018 yuzu emulator team
+// Copyright 2021 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
+#include <functional>
+#include <thread>
+
#include "common/common_types.h"
+#include "core/hle/service/am/applets/software_keyboard_types.h"
+
namespace Core::Frontend {
+struct KeyboardInitializeParameters {
+ std::u16string ok_text;
+ std::u16string header_text;
+ std::u16string sub_text;
+ std::u16string guide_text;
+ std::u16string initial_text;
+ u32 max_text_length;
+ u32 min_text_length;
+ s32 initial_cursor_position;
+ Service::AM::Applets::SwkbdType type;
+ Service::AM::Applets::SwkbdPasswordMode password_mode;
+ Service::AM::Applets::SwkbdTextDrawType text_draw_type;
+ Service::AM::Applets::SwkbdKeyDisableFlags key_disable_flags;
+ bool use_blur_background;
+ bool enable_backspace_button;
+ bool enable_return_button;
+ bool disable_cancel_button;
+};
+
+struct InlineAppearParameters {
+ u32 max_text_length;
+ u32 min_text_length;
+ f32 key_top_scale_x;
+ f32 key_top_scale_y;
+ f32 key_top_translate_x;
+ f32 key_top_translate_y;
+ Service::AM::Applets::SwkbdType type;
+ Service::AM::Applets::SwkbdKeyDisableFlags key_disable_flags;
+ bool key_top_as_floating;
+ bool enable_backspace_button;
+ bool enable_return_button;
+ bool disable_cancel_button;
+};
+
+struct InlineTextParameters {
+ std::u16string input_text;
+ s32 cursor_position;
+};
+
class SoftwareKeyboardApplet {
public:
virtual ~SoftwareKeyboardApplet();
+
+ virtual void InitializeKeyboard(
+ bool is_inline, KeyboardInitializeParameters initialize_parameters,
+ std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)>
+ submit_normal_callback_,
+ std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
+ submit_inline_callback_) = 0;
+
+ virtual void ShowNormalKeyboard() const = 0;
+
+ virtual void ShowTextCheckDialog(Service::AM::Applets::SwkbdTextCheckResult text_check_result,
+ std::u16string text_check_message) const = 0;
+
+ virtual void ShowInlineKeyboard(InlineAppearParameters appear_parameters) const = 0;
+
+ virtual void HideInlineKeyboard() const = 0;
+
+ virtual void InlineTextChanged(InlineTextParameters text_parameters) const = 0;
+
+ virtual void ExitKeyboard() const = 0;
};
class DefaultSoftwareKeyboardApplet final : public SoftwareKeyboardApplet {
public:
+ ~DefaultSoftwareKeyboardApplet() override;
+
+ void InitializeKeyboard(
+ bool is_inline, KeyboardInitializeParameters initialize_parameters,
+ std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)>
+ submit_normal_callback_,
+ std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
+ submit_inline_callback_) override;
+
+ void ShowNormalKeyboard() const override;
+
+ void ShowTextCheckDialog(Service::AM::Applets::SwkbdTextCheckResult text_check_result,
+ std::u16string text_check_message) const override;
+
+ void ShowInlineKeyboard(InlineAppearParameters appear_parameters) const override;
+
+ void HideInlineKeyboard() const override;
+
+ void InlineTextChanged(InlineTextParameters text_parameters) const override;
+
+ void ExitKeyboard() const override;
+
+private:
+ void SubmitNormalText(std::u16string text) const;
+ void SubmitInlineText(std::u16string_view text) const;
+
+ KeyboardInitializeParameters parameters;
+
+ mutable std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)>
+ submit_normal_callback;
+ mutable std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)>
+ submit_inline_callback;
};
} // namespace Core::Frontend