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 5f3286767..98540dc6c 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,12 +17,10 @@ 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 @@ -88,9 +86,11 @@ class KeyboardParser(private val params: KeyboardParams, private val context: Co addNumberRowOrPopupKeys(baseKeys, numberRow) if (params.mId.isAlphabetKeyboard) addSymbolPopupKeys(baseKeys) - if (params.mId.isAlphaOrSymbolKeyboard && params.mId.mNumberRowEnabled) - baseKeys.add(0, numberRow - .mapTo(mutableListOf()) { it.copy(newLabelFlags = Key.LABEL_FLAGS_DISABLE_HINT_LABEL or defaultLabelFlags) }) + if (params.mId.isAlphaOrSymbolKeyboard && params.mId.mNumberRowEnabled) { + val newLabelFlags = defaultLabelFlags or + if (Settings.getInstance().current.mShowNumberRowHints) 0 else Key.LABEL_FLAGS_DISABLE_HINT_LABEL + baseKeys.add(0, numberRow.mapTo(mutableListOf()) { it.copy(newLabelFlags = newLabelFlags) }) + } if (!params.mAllowRedundantPopupKeys) params.baseKeys = baseKeys.flatMap { it.map { it.toKeyParams(params) } } diff --git a/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java b/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java index d1d2a3df3..92184838d 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java @@ -54,6 +54,7 @@ public final class PreferencesSettingsFragment extends SubScreenFragment { setupHistoryRetentionTimeSettings(); refreshEnablingsOfKeypressSoundAndVibrationAndHistRetentionSettings(); setLocalizedNumberRowVisibility(); + setNumberRowHintsVisibility(); findPreference(Settings.PREF_POPUP_KEYS_LABELS_ORDER).setVisible(getSharedPreferences().getBoolean(Settings.PREF_SHOW_HINTS, false)); findPreference(Settings.PREF_POPUP_KEYS_ORDER).setOnPreferenceClickListener((pref) -> { DialogUtilsKt.reorderDialog(requireContext(), Settings.PREF_POPUP_KEYS_ORDER, @@ -77,12 +78,18 @@ public final class PreferencesSettingsFragment extends SubScreenFragment { refreshEnablingsOfKeypressSoundAndVibrationAndHistRetentionSettings(); if (key == null) return; switch (key) { - case Settings.PREF_POPUP_KEYS_ORDER, Settings.PREF_SHOW_POPUP_HINTS, Settings.PREF_SHOW_NUMBER_ROW, + case Settings.PREF_POPUP_KEYS_ORDER, Settings.PREF_SHOW_POPUP_HINTS, Settings.PREF_SHOW_NUMBER_ROW_HINTS, Settings.PREF_POPUP_KEYS_LABELS_ORDER, Settings.PREF_LANGUAGE_SWITCH_KEY, - Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY , Settings.PREF_REMOVE_REDUNDANT_POPUPS-> mReloadKeyboard = true; + Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, Settings.PREF_REMOVE_REDUNDANT_POPUPS -> mReloadKeyboard = true; + case Settings.PREF_SHOW_NUMBER_ROW -> { + setNumberRowHintsVisibility(); + mReloadKeyboard = true; + } case Settings.PREF_LOCALIZED_NUMBER_ROW -> KeyboardLayoutSet.onSystemLocaleChanged(); - case Settings.PREF_SHOW_HINTS - -> findPreference(Settings.PREF_POPUP_KEYS_LABELS_ORDER).setVisible(prefs.getBoolean(Settings.PREF_SHOW_HINTS, false)); + case Settings.PREF_SHOW_HINTS -> { + findPreference(Settings.PREF_POPUP_KEYS_LABELS_ORDER).setVisible(prefs.getBoolean(Settings.PREF_SHOW_HINTS, false)); + setNumberRowHintsVisibility(); + } } } @@ -108,6 +115,12 @@ public final class PreferencesSettingsFragment extends SubScreenFragment { pref.setVisible(false); } + private void setNumberRowHintsVisibility() { + var prefs = getSharedPreferences(); + setPreferenceVisible(Settings.PREF_SHOW_NUMBER_ROW_HINTS, prefs.getBoolean(Settings.PREF_SHOW_HINTS, false) + && prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW, false)); + } + private void refreshEnablingsOfKeypressSoundAndVibrationAndHistRetentionSettings() { final SharedPreferences prefs = getSharedPreferences(); final Resources res = getResources(); diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 912384906..d8effb21b 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -147,6 +147,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_SHOW_NUMBER_ROW = "show_number_row"; public static final String PREF_LOCALIZED_NUMBER_ROW = "localized_number_row"; + public static final String PREF_SHOW_NUMBER_ROW_HINTS = "show_number_row_hints"; public static final String PREF_CUSTOM_CURRENCY_KEY = "custom_currency_key"; public static final String PREF_SHOW_HINTS = "show_hints"; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java index 2c1e494ca..acee04aa3 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -70,6 +70,7 @@ public class SettingsValues { private final boolean mShowsLanguageSwitchKey; public final boolean mShowsNumberRow; public final boolean mLocalizedNumberRow; + public final boolean mShowNumberRowHints; public final boolean mShowsHints; public final boolean mShowsPopupHints; public final boolean mSpaceForLangChange; @@ -174,6 +175,7 @@ public class SettingsValues { mShowsLanguageSwitchKey = prefs.getBoolean(Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, false); // only relevant for default functional key layout mShowsNumberRow = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW, false); mLocalizedNumberRow = prefs.getBoolean(Settings.PREF_LOCALIZED_NUMBER_ROW, true); + mShowNumberRowHints = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW_HINTS, false); mShowsHints = prefs.getBoolean(Settings.PREF_SHOW_HINTS, true); mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, false); mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, true); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 35d14c3e2..9607ac2f4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -239,6 +239,8 @@ Localize number row Prefer localized over latin numbers + + Show hints on number row Show key hints diff --git a/app/src/main/res/xml/prefs_screen_preferences.xml b/app/src/main/res/xml/prefs_screen_preferences.xml index 915d8a5b9..858016f8b 100644 --- a/app/src/main/res/xml/prefs_screen_preferences.xml +++ b/app/src/main/res/xml/prefs_screen_preferences.xml @@ -85,6 +85,12 @@ android:defaultValue="true" android:persistent="true" /> + +