From e9325210c74fa0b30493880d33343b0fc8ecd2be Mon Sep 17 00:00:00 2001 From: jimzzz Date: Sat, 9 May 2026 08:39:19 +0800 Subject: [PATCH 1/4] feat: switch numeric inputs to symbols keyboard --- .../main/java/be/scri/helpers/KeyHandler.kt | 4 +-- .../be/scri/helpers/ui/KeyboardUIManager.kt | 8 ++++- .../be/scri/services/EnglishKeyboardIME.kt | 1 - .../be/scri/services/GeneralKeyboardIME.kt | 35 +++++++++++------- .../be/scri/services/ItalianKeyboardIME.kt | 1 - .../be/scri/services/RussianKeyboardIME.kt | 1 - .../be/scri/services/SwedishKeyboardIME.kt | 1 - .../scri/helpers/ui/KeyboardUIManagerTest.kt | 1 + .../GeneralKeyboardIMEInputTypeTest.kt | 36 +++++++++++++++++++ 9 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt diff --git a/app/src/main/java/be/scri/helpers/KeyHandler.kt b/app/src/main/java/be/scri/helpers/KeyHandler.kt index 928e29790..33bc0fae4 100644 --- a/app/src/main/java/be/scri/helpers/KeyHandler.kt +++ b/app/src/main/java/be/scri/helpers/KeyHandler.kt @@ -20,9 +20,9 @@ import be.scri.services.GeneralKeyboardIME.ScribeState class KeyHandler( private val ime: GeneralKeyboardIME, ) { - private val suggestionHandler = SuggestionHandler(ime) + private val suggestionHandler = ime.suggestionHandler private val spaceKeyProcessor = SpaceKeyProcessor(ime, suggestionHandler) - private val autocompletionHandler = AutocompletionHandler(ime) + private val autocompletionHandler = ime.autocompletionHandler /** Tracks if the last key pressed was a space, used for "period on double space" logic. */ private var wasLastKeySpace: Boolean = false diff --git a/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt b/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt index 928a94523..e76f8fb18 100644 --- a/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt +++ b/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt @@ -62,6 +62,8 @@ class KeyboardUIManager( fun getKeyboardLayoutXML(): Int + fun getCurrentKeyboardLayoutXML(): Int + fun getCurrentEnterKeyType(): Int fun commitText(text: String) @@ -226,7 +228,11 @@ class KeyboardUIManager( binding.scribeKeyOptions.foreground = AppCompatResources.getDrawable(context, R.drawable.ic_scribe_icon_vector) - initializeKeyboard(listener.getKeyboardLayoutXML()) + val keyboardXml = listener.getCurrentKeyboardLayoutXML() + initializeKeyboard(keyboardXml) + if (keyboardXml == R.xml.keys_symbols) { + setupCurrencySymbol(language) + } updateButtonVisibility(ScribeState.IDLE, emojiAutoSuggestionEnabled, autoSuggestEmojis) updateEmojiSuggestion(ScribeState.IDLE, emojiAutoSuggestionEnabled, autoSuggestEmojis) diff --git a/app/src/main/java/be/scri/services/EnglishKeyboardIME.kt b/app/src/main/java/be/scri/services/EnglishKeyboardIME.kt index 572d84bd9..8978d7232 100644 --- a/app/src/main/java/be/scri/services/EnglishKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/EnglishKeyboardIME.kt @@ -32,7 +32,6 @@ class EnglishKeyboardIME : GeneralKeyboardIME("English") { override var inputTypeClass: Int = InputType.TYPE_CLASS_TEXT override var enterKeyType: Int = IME_ACTION_NONE override var switchToLetters: Boolean = false - override var hasTextBeforeCursor: Boolean = false private val keyHandler by lazy { KeyHandler(this) } diff --git a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt index e59b56c3a..bea2d01ef 100644 --- a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt @@ -121,8 +121,8 @@ abstract class GeneralKeyboardIME( private val shiftPermToggleSpeed: Int = DEFAULT_SHIFT_PERM_TOGGLE_SPEED private lateinit var dbManagers: DatabaseManagers - private lateinit var suggestionHandler: SuggestionHandler - private lateinit var autocompletionHandler: AutocompletionHandler + internal lateinit var suggestionHandler: SuggestionHandler + internal lateinit var autocompletionHandler: AutocompletionHandler private lateinit var autocompletionManager: AutocompletionDataManager private var dataContract: DataContract? = null @@ -176,6 +176,12 @@ abstract class GeneralKeyboardIME( internal const val MAX_TEXT_LENGTH = 1000 const val COMMIT_TEXT_CURSOR_POSITION = 1 internal const val CUSTOM_CURSOR = "│" // special tall cursor character + + internal fun shouldUseNumericKeyboard(inputType: Int): Boolean = + when (inputType and TYPE_MASK_CLASS) { + TYPE_CLASS_NUMBER, TYPE_CLASS_DATETIME, TYPE_CLASS_PHONE -> true + else -> false + } } enum class ScribeState { IDLE, SELECT_COMMAND, TRANSLATE, CONJUGATE, PLURAL, SELECT_VERB_CONJUNCTION, INVALID, ALREADY_PLURAL } @@ -287,16 +293,12 @@ abstract class GeneralKeyboardIME( hasTextBeforeCursor = currentInputConnection?.getTextBeforeCursor(1, 0)?.isNotEmpty() == true val keyboardXml = - when (inputTypeClass) { - TYPE_CLASS_NUMBER, TYPE_CLASS_DATETIME, TYPE_CLASS_PHONE -> { - keyboardMode = keyboardSymbols - R.xml.keys_symbols - } - - else -> { - keyboardMode = keyboardLetters - getKeyboardLayoutXML() - } + if (shouldUseNumericKeyboard(attribute.inputType)) { + keyboardMode = keyboardSymbols + R.xml.keys_symbols + } else { + keyboardMode = keyboardLetters + getKeyboardLayoutXML() } loadLanguageData() @@ -304,7 +306,7 @@ abstract class GeneralKeyboardIME( keyboard = KeyboardBase(this, keyboardXml, enterKeyType) keyboardView?.setKeyboard(keyboard!!) - if (keyboardXml == R.xml.keys_symbols) { + if (this::uiManager.isInitialized && keyboardXml == R.xml.keys_symbols) { uiManager.setupCurrencySymbol(language) } } @@ -727,6 +729,13 @@ abstract class GeneralKeyboardIME( override fun getCurrentEnterKeyType(): Int = enterKeyType + override fun getCurrentKeyboardLayoutXML(): Int = + when (keyboardMode) { + keyboardSymbols -> R.xml.keys_symbols + keyboardSymbolShift -> R.xml.keys_symbols_shift + else -> getKeyboardLayoutXML() + } + override fun onKeyboardActionListener(): KeyboardView.OnKeyboardActionListener = this override fun processLinguisticSuggestions(word: String) { diff --git a/app/src/main/java/be/scri/services/ItalianKeyboardIME.kt b/app/src/main/java/be/scri/services/ItalianKeyboardIME.kt index d4da08ce8..26826de08 100644 --- a/app/src/main/java/be/scri/services/ItalianKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/ItalianKeyboardIME.kt @@ -32,7 +32,6 @@ class ItalianKeyboardIME : GeneralKeyboardIME("Italian") { override var inputTypeClass: Int = InputType.TYPE_CLASS_TEXT override var enterKeyType: Int = IME_ACTION_NONE override var switchToLetters: Boolean = false - override var hasTextBeforeCursor: Boolean = false private val keyHandler by lazy { KeyHandler(this) } diff --git a/app/src/main/java/be/scri/services/RussianKeyboardIME.kt b/app/src/main/java/be/scri/services/RussianKeyboardIME.kt index 753982b88..afb59dbfb 100644 --- a/app/src/main/java/be/scri/services/RussianKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/RussianKeyboardIME.kt @@ -32,7 +32,6 @@ class RussianKeyboardIME : GeneralKeyboardIME("Russian") { override var inputTypeClass: Int = InputType.TYPE_CLASS_TEXT override var enterKeyType: Int = IME_ACTION_NONE override var switchToLetters: Boolean = false - override var hasTextBeforeCursor: Boolean = false private val keyHandler by lazy { KeyHandler(this) } diff --git a/app/src/main/java/be/scri/services/SwedishKeyboardIME.kt b/app/src/main/java/be/scri/services/SwedishKeyboardIME.kt index 3404336ad..f423aae6e 100644 --- a/app/src/main/java/be/scri/services/SwedishKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/SwedishKeyboardIME.kt @@ -42,7 +42,6 @@ class SwedishKeyboardIME : GeneralKeyboardIME("Swedish") { override var inputTypeClass: Int = InputType.TYPE_CLASS_TEXT override var enterKeyType: Int = IME_ACTION_NONE override var switchToLetters: Boolean = false - override var hasTextBeforeCursor: Boolean = false private val keyHandler by lazy { KeyHandler(this) } diff --git a/app/src/test/kotlin/be/scri/helpers/ui/KeyboardUIManagerTest.kt b/app/src/test/kotlin/be/scri/helpers/ui/KeyboardUIManagerTest.kt index c5818c0a7..2e0c5088f 100644 --- a/app/src/test/kotlin/be/scri/helpers/ui/KeyboardUIManagerTest.kt +++ b/app/src/test/kotlin/be/scri/helpers/ui/KeyboardUIManagerTest.kt @@ -57,6 +57,7 @@ class KeyboardUIManagerTest { // Mock Listener listener = mockk(relaxed = true) every { listener.getKeyboardLayoutXML() } returns be.scri.R.xml.keys_letters_english + every { listener.getCurrentKeyboardLayoutXML() } returns be.scri.R.xml.keys_letters_english every { listener.onKeyboardActionListener() } returns mockk() // Init Manager diff --git a/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt b/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt new file mode 100644 index 000000000..093ef7808 --- /dev/null +++ b/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package be.scri.services + +import android.text.InputType +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Test + +class GeneralKeyboardIMEInputTypeTest { + @Test + fun shouldUseNumericKeyboard_returnsTrueForNumberInputs() { + val inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL + + assertTrue(GeneralKeyboardIME.shouldUseNumericKeyboard(inputType)) + } + + @Test + fun shouldUseNumericKeyboard_returnsTrueForDateTimeInputs() { + val inputType = InputType.TYPE_CLASS_DATETIME or InputType.TYPE_DATETIME_VARIATION_DATE + + assertTrue(GeneralKeyboardIME.shouldUseNumericKeyboard(inputType)) + } + + @Test + fun shouldUseNumericKeyboard_returnsTrueForPhoneInputs() { + assertTrue(GeneralKeyboardIME.shouldUseNumericKeyboard(InputType.TYPE_CLASS_PHONE)) + } + + @Test + fun shouldUseNumericKeyboard_returnsFalseForTextInputs() { + val inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + + assertFalse(GeneralKeyboardIME.shouldUseNumericKeyboard(inputType)) + } +} From 9efaeb0aef2078722023155be83e8c6c249cdaf2 Mon Sep 17 00:00:00 2001 From: jimzzz Date: Thu, 4 Jun 2026 14:04:45 +0800 Subject: [PATCH 2/4] feat: implement numeric keyboard layout and input type handling --- .../be/scri/services/GeneralKeyboardIME.kt | 31 ++++++++----- app/src/main/res/xml/keys_numeric.xml | 46 +++++++++++++++++++ .../GeneralKeyboardIMEInputTypeTest.kt | 22 +++++++++ gradle/wrapper/gradle-wrapper.properties | 7 +-- 4 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 app/src/main/res/xml/keys_numeric.xml diff --git a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt index bea2d01ef..135e549b9 100644 --- a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt @@ -144,6 +144,7 @@ abstract class GeneralKeyboardIME( var wordSuggestions: List? = null var checkIfPluralWord: Boolean = false private var currentEnterKeyType: Int? = null + private var isNumericKeyboardActive: Boolean = false internal var currentState: ScribeState = ScribeState.IDLE internal var invalidCommandSource: ScribeState = ScribeState.IDLE @@ -182,6 +183,16 @@ abstract class GeneralKeyboardIME( TYPE_CLASS_NUMBER, TYPE_CLASS_DATETIME, TYPE_CLASS_PHONE -> true else -> false } + + internal fun getKeyboardLayoutXMLForInputType( + inputType: Int, + letterKeyboardLayoutXML: Int, + ): Int = + if (shouldUseNumericKeyboard(inputType)) { + R.xml.keys_numeric + } else { + letterKeyboardLayoutXML + } } enum class ScribeState { IDLE, SELECT_COMMAND, TRANSLATE, CONJUGATE, PLURAL, SELECT_VERB_CONJUNCTION, INVALID, ALREADY_PLURAL } @@ -292,14 +303,9 @@ abstract class GeneralKeyboardIME( // This setter triggers the logic in the property override if not shadowed. hasTextBeforeCursor = currentInputConnection?.getTextBeforeCursor(1, 0)?.isNotEmpty() == true - val keyboardXml = - if (shouldUseNumericKeyboard(attribute.inputType)) { - keyboardMode = keyboardSymbols - R.xml.keys_symbols - } else { - keyboardMode = keyboardLetters - getKeyboardLayoutXML() - } + isNumericKeyboardActive = shouldUseNumericKeyboard(attribute.inputType) + keyboardMode = if (isNumericKeyboardActive) keyboardSymbols else keyboardLetters + val keyboardXml = getKeyboardLayoutXMLForInputType(attribute.inputType, getKeyboardLayoutXML()) loadLanguageData() @@ -731,11 +737,14 @@ abstract class GeneralKeyboardIME( override fun getCurrentKeyboardLayoutXML(): Int = when (keyboardMode) { - keyboardSymbols -> R.xml.keys_symbols + keyboardSymbols -> getPrimarySymbolKeyboardLayoutXML() keyboardSymbolShift -> R.xml.keys_symbols_shift else -> getKeyboardLayoutXML() } + private fun getPrimarySymbolKeyboardLayoutXML(): Int = + if (isNumericKeyboardActive) R.xml.keys_numeric else R.xml.keys_symbols + override fun onKeyboardActionListener(): KeyboardView.OnKeyboardActionListener = this override fun processLinguisticSuggestions(word: String) { @@ -1180,7 +1189,7 @@ abstract class GeneralKeyboardIME( R.xml.keys_symbols_shift } else { this.keyboardMode = keyboardSymbols - R.xml.keys_symbols + getPrimarySymbolKeyboardLayoutXML() } keyboard = KeyboardBase(this, keyboardXml, enterKeyType) keyboardView!!.setKeyboard(keyboard!!) @@ -1205,7 +1214,7 @@ abstract class GeneralKeyboardIME( val keyboardXml = if (keyboardMode == keyboardLetters) { this.keyboardMode = keyboardSymbols - R.xml.keys_symbols + getPrimarySymbolKeyboardLayoutXML() } else { this.keyboardMode = keyboardLetters getKeyboardLayoutXML() diff --git a/app/src/main/res/xml/keys_numeric.xml b/app/src/main/res/xml/keys_numeric.xml new file mode 100644 index 000000000..2d3ee570e --- /dev/null +++ b/app/src/main/res/xml/keys_numeric.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt b/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt index 093ef7808..684127cf0 100644 --- a/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt +++ b/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt @@ -3,7 +3,9 @@ package be.scri.services import android.text.InputType +import be.scri.R import org.junit.Assert.assertFalse +import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test @@ -33,4 +35,24 @@ class GeneralKeyboardIMEInputTypeTest { assertFalse(GeneralKeyboardIME.shouldUseNumericKeyboard(inputType)) } + + @Test + fun getKeyboardLayoutXMLForInputType_returnsNumericLayoutForNumberInputs() { + val inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL + + assertEquals( + R.xml.keys_numeric, + GeneralKeyboardIME.getKeyboardLayoutXMLForInputType(inputType, R.xml.keys_letters_english), + ) + } + + @Test + fun getKeyboardLayoutXMLForInputType_returnsLetterLayoutForTextInputs() { + val inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + + assertEquals( + R.xml.keys_letters_english, + GeneralKeyboardIME.getKeyboardLayoutXMLForInputType(inputType, R.xml.keys_letters_english), + ) + } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b94a71a3b..33fb9d5b9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Tue Jan 04 09:48:27 CET 2022 +#Sat May 09 08:20:13 PST 2026 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionSha256Sum=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists From 5b4c823e7f3e787c02f16cbda44c4f183e6b9c8b Mon Sep 17 00:00:00 2001 From: jimzzz Date: Fri, 5 Jun 2026 21:13:49 +0800 Subject: [PATCH 3/4] feat: enhance numeric keyboard handling and visibility logic --- .../be/scri/helpers/ui/KeyboardUIManager.kt | 32 +++++++++++++++---- .../be/scri/services/GeneralKeyboardIME.kt | 11 +++++-- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt b/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt index e76f8fb18..225e69d37 100644 --- a/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt +++ b/app/src/main/java/be/scri/helpers/ui/KeyboardUIManager.kt @@ -71,6 +71,8 @@ class KeyboardUIManager( fun onKeyboardActionListener(): KeyboardView.OnKeyboardActionListener fun processLinguisticSuggestions(word: String) + + fun isNumericKeyboardActive(): Boolean } var keyboardView: KeyboardView = binding.keyboardView @@ -161,7 +163,12 @@ class KeyboardUIManager( val isUserDarkMode = getIsDarkModeOrNot(context) when (currentState) { - ScribeState.IDLE -> setupIdleView(language, emojiAutoSuggestionEnabled, autoSuggestEmojis) + ScribeState.IDLE -> + setupIdleView( + language, + emojiAutoSuggestionEnabled, + autoSuggestEmojis, + ) ScribeState.SELECT_COMMAND -> setupSelectCommandView(language) ScribeState.INVALID -> setupInvalidView(language, invalidCommandSource) ScribeState.TRANSLATE -> { @@ -186,7 +193,7 @@ class KeyboardUIManager( emojiAutoSuggestionEnabled: Boolean, autoSuggestEmojis: MutableList?, ) { - binding.commandOptionsBar.visibility = View.VISIBLE + binding.commandOptionsBar.visibility = if (listener.isNumericKeyboardActive()) View.GONE else View.VISIBLE binding.toolbarBar.visibility = View.GONE val isUserDarkMode = getIsDarkModeOrNot(context) @@ -245,7 +252,7 @@ class KeyboardUIManager( * (Translate, Conjugate, Plural). */ private fun setupSelectCommandView(language: String) { - binding.commandOptionsBar.visibility = View.VISIBLE + binding.commandOptionsBar.visibility = if (listener.isNumericKeyboardActive()) View.GONE else View.VISIBLE binding.toolbarBar.visibility = View.GONE val isUserDarkMode = getIsDarkModeOrNot(context) @@ -792,6 +799,8 @@ class KeyboardUIManager( * Disables all auto-suggestions and resets the suggestion buttons to their default, inactive state. */ fun disableAutoSuggest(language: String) { + val isNumericKeyboard = listener.getCurrentKeyboardLayoutXML() == R.xml.keys_numeric + binding.translateBtnRight.visibility = View.INVISIBLE binding.translateBtnLeft.visibility = View.INVISIBLE binding.translateBtn.visibility = View.VISIBLE @@ -807,9 +816,20 @@ class KeyboardUIManager( binding.translateBtn.background = null binding.translateBtn.setOnClickListener(createSuggestionClickListener(suggestion1)) - val suggestion2 = suggestions.getOrNull(1) ?: "" - binding.conjugateBtn.text = suggestion2 - binding.conjugateBtn.setOnClickListener(createSuggestionClickListener(suggestion2)) + if (isNumericKeyboard) { + binding.conjugateBtn.text = "" + binding.conjugateBtn.setOnClickListener(null) + binding.conjugateBtn.visibility = View.GONE + binding.separator2.visibility = View.GONE + binding.separator3.visibility = View.GONE + } else { + val suggestion2 = suggestions.getOrNull(1) ?: "" + binding.conjugateBtn.visibility = View.VISIBLE + binding.conjugateBtn.text = suggestion2 + binding.conjugateBtn.setOnClickListener(createSuggestionClickListener(suggestion2)) + binding.separator2.visibility = View.VISIBLE + binding.separator3.visibility = View.VISIBLE + } val suggestion3 = suggestions.getOrNull(2) ?: "" binding.pluralBtn.text = suggestion3 diff --git a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt index 135e549b9..6a609402e 100644 --- a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt @@ -342,7 +342,7 @@ abstract class GeneralKeyboardIME( banner.visibility = if (hasData) View.GONE else View.VISIBLE binding.commandOptionsBar.visibility = - if (hasData) View.VISIBLE else View.GONE + if (hasData && !isNumericKeyboardActive) View.VISIBLE else View.GONE val isDarkMode = getIsDarkModeOrNot(applicationContext) val bannerColor = if (isDarkMode) R.color.dark_tutorial_button_color else R.color.light_tutorial_button_color val bannerTextColor = if (isDarkMode) R.color.dark_button_outline_color else R.color.light_text_color @@ -735,6 +735,8 @@ abstract class GeneralKeyboardIME( override fun getCurrentEnterKeyType(): Int = enterKeyType + override fun isNumericKeyboardActive(): Boolean = isNumericKeyboardActive + override fun getCurrentKeyboardLayoutXML(): Int = when (keyboardMode) { keyboardSymbols -> getPrimarySymbolKeyboardLayoutXML() @@ -742,8 +744,11 @@ abstract class GeneralKeyboardIME( else -> getKeyboardLayoutXML() } - private fun getPrimarySymbolKeyboardLayoutXML(): Int = - if (isNumericKeyboardActive) R.xml.keys_numeric else R.xml.keys_symbols + private fun getPrimarySymbolKeyboardLayoutXML(): Int = if (isNumericKeyboardActive) { + R.xml.keys_numeric + } else { + R.xml.keys_symbols + } override fun onKeyboardActionListener(): KeyboardView.OnKeyboardActionListener = this From b0392105dd73ab7987584879eb407731dc7499db Mon Sep 17 00:00:00 2001 From: Andrew Tavis McAllister Date: Sat, 6 Jun 2026 11:23:38 +0200 Subject: [PATCH 4/4] Run ktlint --format --- .../main/java/be/scri/services/GeneralKeyboardIME.kt | 11 ++++++----- .../scri/services/GeneralKeyboardIMEInputTypeTest.kt | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt index 6a609402e..e8f0dbd34 100644 --- a/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt +++ b/app/src/main/java/be/scri/services/GeneralKeyboardIME.kt @@ -744,11 +744,12 @@ abstract class GeneralKeyboardIME( else -> getKeyboardLayoutXML() } - private fun getPrimarySymbolKeyboardLayoutXML(): Int = if (isNumericKeyboardActive) { - R.xml.keys_numeric - } else { - R.xml.keys_symbols - } + private fun getPrimarySymbolKeyboardLayoutXML(): Int = + if (isNumericKeyboardActive) { + R.xml.keys_numeric + } else { + R.xml.keys_symbols + } override fun onKeyboardActionListener(): KeyboardView.OnKeyboardActionListener = this diff --git a/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt b/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt index 684127cf0..797167697 100644 --- a/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt +++ b/app/src/test/kotlin/be/scri/services/GeneralKeyboardIMEInputTypeTest.kt @@ -4,8 +4,8 @@ package be.scri.services import android.text.InputType import be.scri.R -import org.junit.Assert.assertFalse import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test