| |
| |
|
|
| #pragma once |
|
|
| #include <jni.h> |
|
|
| #include "core/frontend/applets/software_keyboard.h" |
|
|
| namespace Common::Android::SoftwareKeyboard { |
|
|
| class AndroidKeyboard final : public Core::Frontend::SoftwareKeyboardApplet { |
| public: |
| ~AndroidKeyboard() override; |
|
|
| void Close() const override { |
| ExitKeyboard(); |
| } |
|
|
| void InitializeKeyboard(bool is_inline, |
| Core::Frontend::KeyboardInitializeParameters initialize_parameters, |
| SubmitNormalCallback submit_normal_callback_, |
| SubmitInlineCallback submit_inline_callback_) override; |
|
|
| void ShowNormalKeyboard() const override; |
|
|
| void ShowTextCheckDialog(Service::AM::Frontend::SwkbdTextCheckResult text_check_result, |
| std::u16string text_check_message) const override; |
|
|
| void ShowInlineKeyboard( |
| Core::Frontend::InlineAppearParameters appear_parameters) const override; |
|
|
| void HideInlineKeyboard() const override; |
|
|
| void InlineTextChanged(Core::Frontend::InlineTextParameters text_parameters) const override; |
|
|
| void ExitKeyboard() const override; |
|
|
| void SubmitInlineKeyboardText(std::u16string submitted_text); |
|
|
| void SubmitInlineKeyboardInput(int key_code); |
|
|
| private: |
| struct ResultData { |
| static ResultData CreateFromFrontend(jobject object); |
|
|
| std::string text; |
| Service::AM::Frontend::SwkbdResult result{}; |
| }; |
|
|
| void SubmitNormalText(const ResultData& result) const; |
|
|
| Core::Frontend::KeyboardInitializeParameters parameters{}; |
|
|
| mutable SubmitNormalCallback submit_normal_callback; |
| mutable SubmitInlineCallback submit_inline_callback; |
|
|
| private: |
| mutable bool m_is_inline_active{}; |
| std::u16string m_current_text; |
| }; |
|
|
| |
| void InitJNI(JNIEnv* env); |
|
|
| |
| void CleanupJNI(JNIEnv* env); |
|
|
| } |
|
|
| |
| extern "C" { |
| JNIEXPORT jobject JNICALL Java_org_citra_citra_1emu_applets_SoftwareKeyboard_ValidateFilters( |
| JNIEnv* env, jclass clazz, jstring text); |
|
|
| JNIEXPORT jobject JNICALL Java_org_citra_citra_1emu_applets_SoftwareKeyboard_ValidateInput( |
| JNIEnv* env, jclass clazz, jstring text); |
| } |
|
|