remove label processing from KeyboardParser

This commit is contained in:
Helium314 2024-05-18 14:52:12 +02:00
parent 1a630821db
commit 6bf29ffc16
2 changed files with 8 additions and 14 deletions

View file

@ -103,14 +103,13 @@ class KeyboardParser(private val params: KeyboardParams, private val context: Co
val functionalKeysFromBottom = functionalKeysBottom.getOrNull(i - bottomIndexOffset) ?: emptyList() val functionalKeysFromBottom = functionalKeysBottom.getOrNull(i - bottomIndexOffset) ?: emptyList()
functionalKeys.add(getFunctionalKeysBySide(functionalKeysFromTop, functionalKeysFromBottom)) functionalKeys.add(getFunctionalKeysBySide(functionalKeysFromTop, functionalKeysFromBottom))
row.mapNotNull { key -> row.map { key ->
val extraFlags = if (key.label.length > 2 && key.label.codePointCount(0, key.label.length) > 2 && !isEmoji(key.label)) val extraFlags = if (key.label.length > 2 && key.label.codePointCount(0, key.label.length) > 2 && !isEmoji(key.label))
Key.LABEL_FLAGS_AUTO_X_SCALE Key.LABEL_FLAGS_AUTO_X_SCALE
else 0 else 0
val keyData = key.processFunctionalKeys() ?: return@mapNotNull null // all keys could actually be functional keys...
if (DebugFlags.DEBUG_ENABLED) if (DebugFlags.DEBUG_ENABLED)
Log.d(TAG, "adding key ${keyData.label}, ${keyData.code}") Log.d(TAG, "adding key ${key.label}, ${key.code}")
keyData.toKeyParams(params, defaultLabelFlags or extraFlags) key.toKeyParams(params, defaultLabelFlags or extraFlags)
} }
} }
return setReasonableWidths(baseKeyParams, functionalKeys) return setReasonableWidths(baseKeyParams, functionalKeys)
@ -256,18 +255,11 @@ class KeyboardParser(private val params: KeyboardParams, private val context: Co
// functional keys from top rows are the outermost, if there are some in the same row // functional keys from top rows are the outermost, if there are some in the same row
functionalKeysFromTopLeft.addAll(functionalKeysFromBottomLeft) functionalKeysFromTopLeft.addAll(functionalKeysFromBottomLeft)
functionalKeysFromBottomRight.addAll(functionalKeysFromTopRight) functionalKeysFromBottomRight.addAll(functionalKeysFromTopRight)
val functionalKeysLeft = functionalKeysFromTopLeft.mapNotNull { it.processFunctionalKeys()?.toKeyParams(params) } val functionalKeysLeft = functionalKeysFromTopLeft.map { it.toKeyParams(params) }
val functionalKeysRight = functionalKeysFromBottomRight.mapNotNull { it.processFunctionalKeys()?.toKeyParams(params) } val functionalKeysRight = functionalKeysFromBottomRight.map { it.toKeyParams(params) }
return functionalKeysLeft to functionalKeysRight return functionalKeysLeft to functionalKeysRight
} }
// todo: try moving defaultLabelFlags and layoutInfo into KeyboardParams
private fun KeyData.processFunctionalKeys(): KeyData? = when (label) {
// todo: why defaultLabelFlags exactly here? is this for armenian or bengali period labels? try removing also check in holo theme
KeyLabel.PERIOD -> copy(newLabelFlags = labelFlags or defaultLabelFlags)
else -> this
}
private fun addNumberRowOrPopupKeys(baseKeys: MutableList<MutableList<KeyData>>) { private fun addNumberRowOrPopupKeys(baseKeys: MutableList<MutableList<KeyData>>) {
if (!params.mId.mNumberRowEnabled && params.mId.mElementId == KeyboardId.ELEMENT_SYMBOLS) { if (!params.mId.mNumberRowEnabled && params.mId.mElementId == KeyboardId.ELEMENT_SYMBOLS) {
// replace first symbols row with number row, but use the labels as popupKeys // replace first symbols row with number row, but use the labels as popupKeys

View file

@ -459,7 +459,9 @@ sealed interface KeyData : AbstractKeyData {
private fun getAdditionalLabelFlags(params: KeyboardParams): Int { private fun getAdditionalLabelFlags(params: KeyboardParams): Int {
return when (label) { return when (label) {
KeyLabel.ALPHA, KeyLabel.SYMBOL_ALPHA, KeyLabel.SYMBOL -> Key.LABEL_FLAGS_PRESERVE_CASE or Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR KeyLabel.ALPHA, KeyLabel.SYMBOL_ALPHA, KeyLabel.SYMBOL -> Key.LABEL_FLAGS_PRESERVE_CASE or Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR
KeyLabel.PERIOD, KeyLabel.COMMA -> Key.LABEL_FLAGS_HAS_POPUP_HINT // todo: period also has defaultLabelFlags -> when is this relevant? KeyLabel.COMMA -> Key.LABEL_FLAGS_HAS_POPUP_HINT
// essentially this only changes the appearance of the armenian period key in holo theme
KeyLabel.PERIOD -> Key.LABEL_FLAGS_HAS_POPUP_HINT and if (params.mId.isAlphabetKeyboard) params.mLocaleKeyboardInfos.labelFlags else 0
KeyLabel.ACTION -> { KeyLabel.ACTION -> {
Key.LABEL_FLAGS_PRESERVE_CASE or Key.LABEL_FLAGS_AUTO_X_SCALE or Key.LABEL_FLAGS_PRESERVE_CASE or Key.LABEL_FLAGS_AUTO_X_SCALE or
Key.LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO or Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR or Key.LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO or Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR or