From 3306ffb8493dd6cfe28d31f4f89fa1e0309a7406 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Mon, 26 Aug 2024 23:11:59 +0200 Subject: [PATCH] allow customizing number row so users can do #558 themselves --- .../keyboard/internal/keyboard_parser/KeyboardParser.kt | 5 ++++- .../internal/keyboard_parser/RawKeyboardParser.kt | 9 +++++++-- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt index dbbc53922..3e4dd16df 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt @@ -17,10 +17,12 @@ import helium314.keyboard.keyboard.internal.keyboard_parser.floris.TextKeyData import helium314.keyboard.latin.common.isEmoji import helium314.keyboard.latin.define.DebugFlags import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.CUSTOM_LAYOUT_PREFIX import helium314.keyboard.latin.utils.POPUP_KEYS_LAYOUT import helium314.keyboard.latin.utils.POPUP_KEYS_NUMBER import helium314.keyboard.latin.utils.ScriptUtils import helium314.keyboard.latin.utils.ScriptUtils.script +import helium314.keyboard.latin.utils.getCustomLayoutFiles import helium314.keyboard.latin.utils.replaceFirst import helium314.keyboard.latin.utils.splitAt import helium314.keyboard.latin.utils.sumOf @@ -269,7 +271,7 @@ class KeyboardParser(private val params: KeyboardParams, private val context: Co } private fun getNumberRow(): MutableList { - val row = RawKeyboardParser.parseLayout("number_row.txt", params, context).first() + val row = RawKeyboardParser.parseLayout(LAYOUT_NUMBER_ROW, params, context).first() val localizedNumbers = params.mLocaleKeyboardInfos.localizedNumberKeys if (localizedNumbers?.size != 10) return row if (Settings.getInstance().current.mLocalizedNumberRow) { @@ -314,3 +316,4 @@ const val LAYOUT_NUMPAD_LANDSCAPE = "numpad_landscape" const val LAYOUT_NUMBER = "number" const val LAYOUT_PHONE = "phone" const val LAYOUT_PHONE_SYMBOLS = "phone_symbols" +const val LAYOUT_NUMBER_ROW = "number_row" diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/RawKeyboardParser.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/RawKeyboardParser.kt index ed6507f24..248d80fd4 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/RawKeyboardParser.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/RawKeyboardParser.kt @@ -37,7 +37,7 @@ object RawKeyboardParser { private val rawLayoutCache = hashMapOf MutableList>>() val symbolAndNumberLayouts = listOf(LAYOUT_SYMBOLS, LAYOUT_SYMBOLS_SHIFTED, LAYOUT_SYMBOLS_ARABIC, - LAYOUT_NUMBER, LAYOUT_NUMPAD, LAYOUT_NUMPAD_LANDSCAPE, LAYOUT_PHONE, LAYOUT_PHONE_SYMBOLS) + LAYOUT_NUMBER, LAYOUT_NUMPAD, LAYOUT_NUMPAD_LANDSCAPE, LAYOUT_PHONE, LAYOUT_PHONE_SYMBOLS, LAYOUT_NUMBER_ROW) fun clearCache() = rawLayoutCache.clear() @@ -91,7 +91,12 @@ object RawKeyboardParser { try { getCustomLayoutFile(layoutFileName, context).readText() } catch (e: Exception) { // fall back to defaults if for some reason file is broken - val name = if (layoutName.contains("functional")) "functional_keys.json" else "qwerty.txt" + val name = when { + layoutName.contains("functional") -> "functional_keys.json" + layoutName.contains("number_row") -> "number_row.txt" + layoutName.contains("symbols") -> "symbols.txt" + else -> "qwerty.txt" + } Log.e(TAG, "cannot open layout $layoutName, falling back to $name", e) context.assets.open("layouts${File.separator}$name").reader().use { it.readText() } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bd74923d4..2536ce1f7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -529,6 +529,8 @@ disposition rather than other common dispositions for Latin languages. [CHAR LIM Numpad Numpad (landscape) + + Number row Set background image