Enable TLD hint

Avoid TLD popups on tablet
Revert to using set for TLDs, and insert default ones first
Move setting one slot up
Tweak setting description
Update docs
This commit is contained in:
eranl 2025-03-09 00:53:07 +02:00
parent 3b415d5b0a
commit 85b02a2e88
7 changed files with 19 additions and 18 deletions

View file

@ -100,8 +100,6 @@ __Planned features and improvements:__
* Add and enable emoji dictionaries by default (if available for language) * Add and enable emoji dictionaries by default (if available for language)
* Clearer / more intuitive arrangement of settings * Clearer / more intuitive arrangement of settings
* Maybe hide some less used settings by default (similar to color customization) * Maybe hide some less used settings by default (similar to color customization)
* Make use of the `.com` key in URL fields (currently only available for tablets)
* With language-dependent TLDs
* [Bug fixes](https://github.com/Helium314/HeliBoard/issues?q=is%3Aissue+is%3Aopen+label%3Abug) * [Bug fixes](https://github.com/Helium314/HeliBoard/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
__What will _not_ be added:__ __What will _not_ be added:__

View file

@ -15,7 +15,7 @@
{ "$": "keyboard_state_selector", "emojiKeyEnabled": { "$": "keyboard_state_selector", "alphabet": { "label": "emoji" }}}, { "$": "keyboard_state_selector", "emojiKeyEnabled": { "$": "keyboard_state_selector", "alphabet": { "label": "emoji" }}},
{ "$": "keyboard_state_selector", "symbols": { "label": "numpad" }}, { "$": "keyboard_state_selector", "symbols": { "label": "numpad" }},
{ "label": "space" }, { "label": "space" },
{ "label": "period", "labelFlags": 1073741824 }, { "label": "period" },
{ "label": "action", "width": 0.15 } { "label": "action", "width": 0.15 }
] ]
] ]

View file

@ -89,12 +89,6 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) {
} }
} }
fun addDefaultTlds(locale: Locale) {
if ((locale.language != "en" && euroLocales.matches(locale.language)) || euroCountries.matches(locale.country))
tlds.add(0, ".eu")
tlds.addAll(0, defaultTlds.splitOnWhitespace())
}
/** Pair(extraKeysLeft, extraKeysRight) */ /** Pair(extraKeysLeft, extraKeysRight) */
fun getTabletExtraKeys(elementId: Int): Pair<List<KeyData>, List<KeyData>> { fun getTabletExtraKeys(elementId: Int): Pair<List<KeyData>, List<KeyData>> {
val flags = Key.LABEL_FLAGS_FONT_DEFAULT val flags = Key.LABEL_FLAGS_FONT_DEFAULT
@ -205,7 +199,6 @@ private fun createLocaleKeyTexts(context: Context, params: KeyboardParams, popup
if (locale == params.mId.locale) return@forEach if (locale == params.mId.locale) return@forEach
lkt.addFile(getStreamForLocale(locale, context), true) lkt.addFile(getStreamForLocale(locale, context), true)
} }
lkt.addDefaultTlds(params.mId.locale)
when (popupKeysSetting) { when (popupKeysSetting) {
POPUP_KEYS_MAIN -> lkt.addFile(context.assets.open("$LOCALE_TEXTS_FOLDER/more_popups_main.txt"), false) POPUP_KEYS_MAIN -> lkt.addFile(context.assets.open("$LOCALE_TEXTS_FOLDER/more_popups_main.txt"), false)
POPUP_KEYS_MORE -> lkt.addFile(context.assets.open("$LOCALE_TEXTS_FOLDER/more_popups_more.txt"), false) POPUP_KEYS_MORE -> lkt.addFile(context.assets.open("$LOCALE_TEXTS_FOLDER/more_popups_more.txt"), false)
@ -226,20 +219,28 @@ private fun getStreamForLocale(locale: Locale, context: Context) =
} }
} }
private fun getLocaleTlds(locale: Locale): ArrayList<String> { private fun getLocaleTlds(locale: Locale): LinkedHashSet<String> {
val tlds = getDefaultTlds(locale)
val ccLower = locale.country.lowercase() val ccLower = locale.country.lowercase()
val tlds = arrayListOf<String>()
if (ccLower.isEmpty() || locale.language == SubtypeLocaleUtils.NO_LANGUAGE) if (ccLower.isEmpty() || locale.language == SubtypeLocaleUtils.NO_LANGUAGE)
return tlds return tlds
specialCountryTlds.forEach { specialCountryTlds.forEach {
if (ccLower != it.first) return@forEach if (ccLower != it.first) return@forEach
tlds.addAll(it.second.splitOnWhitespace()) tlds.addAll(it.second.splitOnWhitespace())
return tlds return@getLocaleTlds tlds
} }
tlds.add(".$ccLower") tlds.add(".$ccLower")
return tlds return tlds
} }
private fun getDefaultTlds(locale: Locale): LinkedHashSet<String> {
val tlds = linkedSetOf<String>()
tlds.addAll(defaultTlds.splitOnWhitespace())
if ((locale.language != "en" && euroLocales.matches(locale.language)) || euroCountries.matches(locale.country))
tlds.add(".eu")
return tlds
}
fun clearCache() = localeKeyboardInfosCache.clear() fun clearCache() = localeKeyboardInfosCache.clear()
// cache the texts, so they don't need to be read over and over // cache the texts, so they don't need to be read over and over

View file

@ -24,6 +24,7 @@ import helium314.keyboard.latin.common.StringUtils
import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.settings.Settings
import helium314.keyboard.latin.spellcheck.AndroidSpellCheckerService import helium314.keyboard.latin.spellcheck.AndroidSpellCheckerService
import helium314.keyboard.latin.utils.InputTypeUtils import helium314.keyboard.latin.utils.InputTypeUtils
import helium314.keyboard.latin.utils.LayoutType
import helium314.keyboard.latin.utils.Log import helium314.keyboard.latin.utils.Log
import helium314.keyboard.latin.utils.ToolbarKey import helium314.keyboard.latin.utils.ToolbarKey
import helium314.keyboard.latin.utils.getCodeForToolbarKey import helium314.keyboard.latin.utils.getCodeForToolbarKey
@ -574,6 +575,7 @@ sealed interface KeyData : AbstractKeyData {
private fun getPeriodPopups(params: KeyboardParams): SimplePopups = private fun getPeriodPopups(params: KeyboardParams): SimplePopups =
SimplePopups( SimplePopups(
if (Settings.getInstance().current.mShowTldPopupKeys if (Settings.getInstance().current.mShowTldPopupKeys
&& params.mId.mSubtype.layouts[LayoutType.FUNCTIONAL] != "functional_keys_tablet"
&& params.mId.mMode in setOf(KeyboardId.MODE_URL, KeyboardId.MODE_EMAIL) && params.mId.mMode in setOf(KeyboardId.MODE_URL, KeyboardId.MODE_EMAIL)
) params.mLocaleKeyboardInfos.tlds ) params.mLocaleKeyboardInfos.tlds
else getPunctuationPopupKeys(params) else getPunctuationPopupKeys(params)

View file

@ -90,15 +90,15 @@ fun createPreferencesSettings(context: Context) = listOf(
Setting(context, Settings.PREF_POPUP_KEYS_ORDER, R.string.popup_order) { Setting(context, Settings.PREF_POPUP_KEYS_ORDER, R.string.popup_order) {
ReorderSwitchPreference(it, Defaults.PREF_POPUP_KEYS_ORDER) ReorderSwitchPreference(it, Defaults.PREF_POPUP_KEYS_ORDER)
}, },
Setting(context, Settings.PREF_SHOW_POPUP_HINTS, R.string.show_popup_hints, R.string.show_popup_hints_summary) {
SwitchPreference(it, Defaults.PREF_SHOW_POPUP_HINTS) { KeyboardSwitcher.getInstance().setThemeNeedsReload() }
},
Setting( Setting(
context, Settings.PREF_SHOW_TLD_POPUP_KEYS, R.string.show_tld_popup_keys, context, Settings.PREF_SHOW_TLD_POPUP_KEYS, R.string.show_tld_popup_keys,
R.string.show_tld_popup_keys_summary R.string.show_tld_popup_keys_summary
) { ) {
SwitchPreference(it, Defaults.PREF_SHOW_TLD_POPUP_KEYS) { KeyboardSwitcher.getInstance().setThemeNeedsReload() } SwitchPreference(it, Defaults.PREF_SHOW_TLD_POPUP_KEYS) { KeyboardSwitcher.getInstance().setThemeNeedsReload() }
}, },
Setting(context, Settings.PREF_SHOW_POPUP_HINTS, R.string.show_popup_hints, R.string.show_popup_hints_summary) {
SwitchPreference(it, Defaults.PREF_SHOW_POPUP_HINTS) { KeyboardSwitcher.getInstance().setThemeNeedsReload() }
},
Setting(context, Settings.PREF_POPUP_ON, R.string.popup_on_keypress) { Setting(context, Settings.PREF_POPUP_ON, R.string.popup_on_keypress) {
SwitchPreference(it, Defaults.PREF_POPUP_ON) { KeyboardSwitcher.getInstance().reloadKeyboard() } SwitchPreference(it, Defaults.PREF_POPUP_ON) { KeyboardSwitcher.getInstance().reloadKeyboard() }
}, },

View file

@ -252,7 +252,7 @@
<!-- Title of the setting to show TLD popup keys --> <!-- Title of the setting to show TLD popup keys -->
<string name="show_tld_popup_keys">Show TLD popup keys</string> <string name="show_tld_popup_keys">Show TLD popup keys</string>
<!-- Description of the setting to show TLD popup keys --> <!-- Description of the setting to show TLD popup keys -->
<string name="show_tld_popup_keys_summary">Replace period key popups with top level domains for URL and email inputs</string> <string name="show_tld_popup_keys_summary">Replace period key popups with top level domains when typing URLs and email addresses</string>
<!-- Names of the popup key classes --> <!-- Names of the popup key classes -->
<string name="popup_keys_number" tools:keep="@string/popup_keys_number">Number row</string> <string name="popup_keys_number" tools:keep="@string/popup_keys_number">Number row</string>
<string name="popup_keys_language" tools:keep="@string/popup_keys_language">Language</string> <string name="popup_keys_language" tools:keep="@string/popup_keys_language">Language</string>

View file

@ -89,7 +89,7 @@ Usually the label is what is displayed on the key. However, there are some speci
* _symbol_alpha_: toggle alpha / symbol keyboard * _symbol_alpha_: toggle alpha / symbol keyboard
* _numpad_: toggle numpad layout * _numpad_: toggle numpad layout
* _emoji_: switch to emoji view * _emoji_: switch to emoji view
* _com_: display common TLDs (.com and similar, currently not localized) * _com_: display common TLDs (.com and similar, localized)
* _language_switch_: language switch key * _language_switch_: language switch key
* _action_: the action (enter) key * _action_: the action (enter) key
* _delete_: delete key * _delete_: delete key