From 58031ee8a1db0eacab1ecaeb34e6d241e26f86e8 Mon Sep 17 00:00:00 2001 From: Faisal Amir Date: Sun, 24 Sep 2023 16:41:45 +0700 Subject: [PATCH 1/2] add: simple sample keyboard feature --- .../appkeyboard/model/KeyboardFeatureType.kt | 3 +- .../appkeyboard/services/KeyboardIME.kt | 5 ++++ .../appkeyboard/services/KeyboardUtil.kt | 6 ++++ .../ui/keyboard/dummy/DummyKeyboard.kt | 29 +++++++++++++++++++ .../templatetext/TemplateTextKeyboard.kt | 16 ++-------- app/src/main/res/layout/keyboard_dummy.xml | 17 +++++++++++ app/src/main/res/layout/keyboard_ime.xml | 12 ++++++++ 7 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/dummy/DummyKeyboard.kt create mode 100644 app/src/main/res/layout/keyboard_dummy.xml diff --git a/app/src/main/java/com/frogobox/appkeyboard/model/KeyboardFeatureType.kt b/app/src/main/java/com/frogobox/appkeyboard/model/KeyboardFeatureType.kt index bcf63db..812ea4b 100644 --- a/app/src/main/java/com/frogobox/appkeyboard/model/KeyboardFeatureType.kt +++ b/app/src/main/java/com/frogobox/appkeyboard/model/KeyboardFeatureType.kt @@ -20,5 +20,6 @@ enum class KeyboardFeatureType(val id: String, val title: String) { TEMPLATE_TEXT_LOVE("menu_template_text_love","Love Emoji"), TEMPLATE_TEXT_GREETING("menu_template_text_greeting", "Greeting"), CHANGE_KEYBOARD("menu_change_keyboard","Change Keyboard"), - SETTING("menu_setting","Setting") + SETTING("menu_setting","Setting"), + DUMMY("menu_dummy", "Dummy") } \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardIME.kt b/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardIME.kt index 590b7ec..387afdb 100644 --- a/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardIME.kt +++ b/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardIME.kt @@ -275,6 +275,11 @@ class KeyboardIME : BaseKeyboardIME() { }) } + KeyboardFeatureType.DUMMY -> { + hideMainKeyboard() + keyboardDummy.visible() + } + } } diff --git a/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardUtil.kt b/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardUtil.kt index d6decad..2d5d4c0 100644 --- a/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardUtil.kt +++ b/app/src/main/java/com/frogobox/appkeyboard/services/KeyboardUtil.kt @@ -88,6 +88,12 @@ class KeyboardUtil { KeyboardFeatureType.SETTING, R.drawable.ic_menu_setting, pref.loadPrefBoolean(KeyboardFeatureType.SETTING.id, true) + ), + KeyboardFeature( + KeyboardFeatureType.DUMMY.id, + KeyboardFeatureType.DUMMY, + com.frogobox.sdk.R.drawable.ic_frogo_cracked, + pref.loadPrefBoolean(KeyboardFeatureType.DUMMY.id, true) ) ).sortedBy { it.state } } diff --git a/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/dummy/DummyKeyboard.kt b/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/dummy/DummyKeyboard.kt new file mode 100644 index 0000000..12700bf --- /dev/null +++ b/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/dummy/DummyKeyboard.kt @@ -0,0 +1,29 @@ +package com.frogobox.appkeyboard.ui.keyboard.dummy + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import com.frogobox.appkeyboard.databinding.KeyboardDummyBinding +import com.frogobox.libkeyboard.common.core.BaseKeyboard + +class DummyKeyboard( + context: Context, + attrs: AttributeSet?, +) : BaseKeyboard(context, attrs) { + + override fun setupViewBinding(): KeyboardDummyBinding { + return KeyboardDummyBinding.inflate(LayoutInflater.from(context), this, true) + } + + override fun onCreate() { + initView() + } + + private fun initView() { + binding?.apply { + + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/templatetext/TemplateTextKeyboard.kt b/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/templatetext/TemplateTextKeyboard.kt index 213108b..a6cb82c 100644 --- a/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/templatetext/TemplateTextKeyboard.kt +++ b/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/templatetext/TemplateTextKeyboard.kt @@ -42,18 +42,12 @@ class TemplateTextKeyboard( private fun setupTitleContent(templateTextType: KeyboardFeatureType) { binding?.apply { tvToolbarTitle.text = when (templateTextType) { - NEWS -> "" - MOVIE -> "" - WEB -> "" - FORM -> "" - SETTING -> "" - KeyboardFeatureType.CHANGE_KEYBOARD -> "" - AUTO_TEXT -> "" TEMPLATE_TEXT_GAME -> getTitleText(TEMPLATE_TEXT_GAME.name) TEMPLATE_TEXT_APP -> getTitleText(TEMPLATE_TEXT_APP.name) TEMPLATE_TEXT_SALE -> getTitleText(TEMPLATE_TEXT_SALE.name) TEMPLATE_TEXT_GREETING -> getTitleText(TEMPLATE_TEXT_GREETING.name) TEMPLATE_TEXT_LOVE -> getTitleText(TEMPLATE_TEXT_LOVE.name) + else -> "" } } } @@ -61,18 +55,12 @@ class TemplateTextKeyboard( private fun setupRvContent(templateTextType: KeyboardFeatureType) { setupRv( when (templateTextType) { - NEWS -> listOf() - MOVIE -> listOf() - WEB -> listOf() - FORM -> listOf() - AUTO_TEXT -> listOf() - SETTING -> listOf() - KeyboardFeatureType.CHANGE_KEYBOARD -> listOf() TEMPLATE_TEXT_GAME -> TemplateTextUtils.getTextGame(context) TEMPLATE_TEXT_APP -> TemplateTextUtils.getTextApp(context) TEMPLATE_TEXT_SALE -> TemplateTextUtils.getTextSale(context) TEMPLATE_TEXT_GREETING -> TemplateTextUtils.getTextGreeting(context) TEMPLATE_TEXT_LOVE -> TemplateTextUtils.getTextLove(context) + else -> listOf() } ) } diff --git a/app/src/main/res/layout/keyboard_dummy.xml b/app/src/main/res/layout/keyboard_dummy.xml new file mode 100644 index 0000000..08228e6 --- /dev/null +++ b/app/src/main/res/layout/keyboard_dummy.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/keyboard_ime.xml b/app/src/main/res/layout/keyboard_ime.xml index 01aa5e0..dea1ccf 100644 --- a/app/src/main/res/layout/keyboard_ime.xml +++ b/app/src/main/res/layout/keyboard_ime.xml @@ -112,6 +112,18 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/mock_measure_height_keyboard" /> + + Date: Sun, 24 Sep 2023 20:32:23 +0700 Subject: [PATCH 2/2] feat: navigation example --- .../ui/keyboard/form/FormKeyboard.kt | 8 +++++++ .../util/KeyboardNavigationHelper.kt | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 app/src/main/java/com/frogobox/appkeyboard/util/KeyboardNavigationHelper.kt diff --git a/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/form/FormKeyboard.kt b/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/form/FormKeyboard.kt index 3d842ae..488f0a9 100644 --- a/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/form/FormKeyboard.kt +++ b/app/src/main/java/com/frogobox/appkeyboard/ui/keyboard/form/FormKeyboard.kt @@ -6,6 +6,8 @@ import android.util.Log import android.view.LayoutInflater import android.view.inputmethod.EditorInfo import com.frogobox.appkeyboard.databinding.KeyboardFormBinding +import com.frogobox.appkeyboard.ui.keyboard.movie.MovieKeyboard +import com.frogobox.appkeyboard.util.KeyboardNavigationHelper import com.frogobox.libkeyboard.common.core.BaseKeyboard /** @@ -23,6 +25,8 @@ class FormKeyboard( attrs: AttributeSet?, ) : BaseKeyboard(context, attrs) { + private val destinationKeyboard = MovieKeyboard(context, attrs) + override fun setupViewBinding(): KeyboardFormBinding { return KeyboardFormBinding.inflate(LayoutInflater.from(context), this, true) } @@ -34,6 +38,10 @@ class FormKeyboard( private fun initView() { binding?.apply { Log.d("FormKeyboard", "initView: ${etText.onCreateInputConnection(EditorInfo())}") + + btnSubmit.setOnClickListener { + KeyboardNavigationHelper.navigateTo(this@FormKeyboard, destinationKeyboard) + } } } diff --git a/app/src/main/java/com/frogobox/appkeyboard/util/KeyboardNavigationHelper.kt b/app/src/main/java/com/frogobox/appkeyboard/util/KeyboardNavigationHelper.kt new file mode 100644 index 0000000..cb0345f --- /dev/null +++ b/app/src/main/java/com/frogobox/appkeyboard/util/KeyboardNavigationHelper.kt @@ -0,0 +1,22 @@ +package com.frogobox.appkeyboard.util + +import android.view.ViewGroup +import com.frogobox.libkeyboard.common.core.BaseKeyboard + +class KeyboardNavigationHelper { + companion object { + fun navigateTo(baseKeyboard: BaseKeyboard<*>, destinationKeyboard: BaseKeyboard<*>) { + baseKeyboard.parent?.let { + if (it is ViewGroup) { + it.removeView(baseKeyboard) + } + } + + destinationKeyboard.parent?.let { + if (it is ViewGroup) { + it.addView(destinationKeyboard) + } + } + } + } +} \ No newline at end of file