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()
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))
Key.LABEL_FLAGS_AUTO_X_SCALE
else 0
val keyData = key.processFunctionalKeys() ?: return@mapNotNull null // all keys could actually be functional keys...
if (DebugFlags.DEBUG_ENABLED)
Log.d(TAG, "adding key ${keyData.label}, ${keyData.code}")
keyData.toKeyParams(params, defaultLabelFlags or extraFlags)
Log.d(TAG, "adding key ${key.label}, ${key.code}")
key.toKeyParams(params, defaultLabelFlags or extraFlags)
}
}
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
functionalKeysFromTopLeft.addAll(functionalKeysFromBottomLeft)
functionalKeysFromBottomRight.addAll(functionalKeysFromTopRight)
val functionalKeysLeft = functionalKeysFromTopLeft.mapNotNull { it.processFunctionalKeys()?.toKeyParams(params) }
val functionalKeysRight = functionalKeysFromBottomRight.mapNotNull { it.processFunctionalKeys()?.toKeyParams(params) }
val functionalKeysLeft = functionalKeysFromTopLeft.map { it.toKeyParams(params) }
val functionalKeysRight = functionalKeysFromBottomRight.map { it.toKeyParams(params) }
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>>) {
if (!params.mId.mNumberRowEnabled && params.mId.mElementId == KeyboardId.ELEMENT_SYMBOLS) {
// 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 {
return when (label) {
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 -> {
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