mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-05-31 11:52:13 +00:00
Add option to replace period key's popup keys with the locale-specific top level domains for URL and email inputs. On by default.
Also change the wide keyboard's '.com' key to use the same TLD list. Tweak TLD list order, putting default ones first, so that .com is the first TLD.
This commit is contained in:
parent
4310025b2d
commit
3b415d5b0a
7 changed files with 35 additions and 10 deletions
|
@ -44,7 +44,7 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) {
|
|||
"mns" -> Key.LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO
|
||||
else -> 0
|
||||
}
|
||||
val tlds = getLocaleTlds(locale) // todo: USE IT
|
||||
val tlds = getLocaleTlds(locale)
|
||||
|
||||
init {
|
||||
readStream(dataStream, false, true)
|
||||
|
@ -91,8 +91,8 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) {
|
|||
|
||||
fun addDefaultTlds(locale: Locale) {
|
||||
if ((locale.language != "en" && euroLocales.matches(locale.language)) || euroCountries.matches(locale.country))
|
||||
tlds.add(".eu")
|
||||
tlds.addAll(defaultTlds.splitOnWhitespace())
|
||||
tlds.add(0, ".eu")
|
||||
tlds.addAll(0, defaultTlds.splitOnWhitespace())
|
||||
}
|
||||
|
||||
/** Pair(extraKeysLeft, extraKeysRight) */
|
||||
|
@ -226,9 +226,9 @@ private fun getStreamForLocale(locale: Locale, context: Context) =
|
|||
}
|
||||
}
|
||||
|
||||
private fun getLocaleTlds(locale: Locale): LinkedHashSet<String> {
|
||||
private fun getLocaleTlds(locale: Locale): ArrayList<String> {
|
||||
val ccLower = locale.country.lowercase()
|
||||
val tlds = LinkedHashSet<String>()
|
||||
val tlds = arrayListOf<String>()
|
||||
if (ccLower.isEmpty() || locale.language == SubtypeLocaleUtils.NO_LANGUAGE)
|
||||
return tlds
|
||||
specialCountryTlds.forEach {
|
||||
|
|
|
@ -482,8 +482,7 @@ sealed interface KeyData : AbstractKeyData {
|
|||
KeyLabel.DELETE -> "!icon/delete_key|!code/key_delete"
|
||||
KeyLabel.SHIFT -> "${getShiftLabel(params)}|!code/key_shift"
|
||||
// KeyLabel.EMOJI -> "!icon/emoji_normal_key|!code/key_emoji"
|
||||
// todo (later): label and popupKeys for .com should be in localeKeyTexts, handled similar to currency key
|
||||
KeyLabel.COM -> ".com"
|
||||
KeyLabel.COM -> params.mLocaleKeyboardInfos.tlds.first()
|
||||
KeyLabel.LANGUAGE_SWITCH -> "!icon/language_switch_key|!code/key_language_switch"
|
||||
KeyLabel.ZWNJ -> "!icon/zwnj_key|\u200C"
|
||||
KeyLabel.CURRENCY -> params.mLocaleKeyboardInfos.currencyKey.first
|
||||
|
@ -546,12 +545,12 @@ sealed interface KeyData : AbstractKeyData {
|
|||
|
||||
private fun getAdditionalPopupKeys(params: KeyboardParams): PopupSet<AbstractKeyData>? {
|
||||
if (groupId == GROUP_COMMA) return SimplePopups(getCommaPopupKeys(params))
|
||||
if (groupId == GROUP_PERIOD) return SimplePopups(getPunctuationPopupKeys(params))
|
||||
if (groupId == GROUP_PERIOD) return getPeriodPopups(params)
|
||||
if (groupId == GROUP_ENTER) return getActionKeyPopupKeys(params)
|
||||
if (groupId == GROUP_NO_DEFAULT_POPUP) return null
|
||||
return when (label) {
|
||||
KeyLabel.COMMA -> SimplePopups(getCommaPopupKeys(params))
|
||||
KeyLabel.PERIOD -> SimplePopups(getPunctuationPopupKeys(params))
|
||||
KeyLabel.PERIOD -> getPeriodPopups(params)
|
||||
KeyLabel.ACTION -> getActionKeyPopupKeys(params)
|
||||
KeyLabel.SHIFT -> {
|
||||
if (params.mId.isAlphabetKeyboard) SimplePopups(
|
||||
|
@ -561,13 +560,24 @@ sealed interface KeyData : AbstractKeyData {
|
|||
)
|
||||
) else null // why the alphabet popup keys actually?
|
||||
}
|
||||
KeyLabel.COM -> SimplePopups(listOf(Key.POPUP_KEYS_HAS_LABELS, ".net", ".org", ".gov", ".edu"))
|
||||
KeyLabel.COM -> SimplePopups(
|
||||
listOf(Key.POPUP_KEYS_HAS_LABELS).plus(params.mLocaleKeyboardInfos.tlds.drop(1))
|
||||
)
|
||||
|
||||
KeyLabel.ZWNJ -> SimplePopups(listOf("!icon/zwj_key|\u200D"))
|
||||
// only add currency popups if there are none defined on the key
|
||||
KeyLabel.CURRENCY -> if (popup.isEmpty()) SimplePopups(params.mLocaleKeyboardInfos.currencyKey.second) else null
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
private fun getPeriodPopups(params: KeyboardParams): SimplePopups =
|
||||
SimplePopups(
|
||||
if (Settings.getInstance().current.mShowTldPopupKeys
|
||||
&& params.mId.mMode in setOf(KeyboardId.MODE_URL, KeyboardId.MODE_EMAIL)
|
||||
) params.mLocaleKeyboardInfos.tlds
|
||||
else getPunctuationPopupKeys(params)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -123,6 +123,7 @@ object Defaults {
|
|||
const val PREF_POPUP_KEYS_ORDER = POPUP_KEYS_ORDER_DEFAULT
|
||||
const val PREF_POPUP_KEYS_LABELS_ORDER = POPUP_KEYS_LABEL_DEFAULT
|
||||
const val PREF_SHOW_POPUP_HINTS = false
|
||||
const val PREF_SHOW_TLD_POPUP_KEYS = true
|
||||
const val PREF_MORE_POPUP_KEYS = "main"
|
||||
const val PREF_SPACE_TO_CHANGE_LANG = true
|
||||
const val PREF_LANGUAGE_SWIPE_DISTANCE = 5
|
||||
|
|
|
@ -131,6 +131,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
|||
public static final String PREF_POPUP_KEYS_LABELS_ORDER = "popup_keys_labels_order";
|
||||
public static final String PREF_SHOW_POPUP_HINTS = "show_popup_hints";
|
||||
public static final String PREF_MORE_POPUP_KEYS = "more_popup_keys";
|
||||
public static final String PREF_SHOW_TLD_POPUP_KEYS = "show_tld_popup_keys";
|
||||
|
||||
public static final String PREF_SPACE_TO_CHANGE_LANG = "prefs_long_press_keyboard_to_change_lang";
|
||||
public static final String PREF_LANGUAGE_SWIPE_DISTANCE = "language_swipe_distance";
|
||||
|
|
|
@ -65,6 +65,7 @@ public class SettingsValues {
|
|||
public final boolean mShowNumberRowHints;
|
||||
public final boolean mShowsHints;
|
||||
public final boolean mShowsPopupHints;
|
||||
public final boolean mShowTldPopupKeys;
|
||||
public final boolean mSpaceForLangChange;
|
||||
public final boolean mShowsEmojiKey;
|
||||
public final boolean mVarToolbarDirection;
|
||||
|
@ -172,6 +173,7 @@ public class SettingsValues {
|
|||
mShowNumberRowHints = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW_HINTS, Defaults.PREF_SHOW_NUMBER_ROW_HINTS);
|
||||
mShowsHints = prefs.getBoolean(Settings.PREF_SHOW_HINTS, Defaults.PREF_SHOW_HINTS);
|
||||
mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, Defaults.PREF_SHOW_POPUP_HINTS);
|
||||
mShowTldPopupKeys = prefs.getBoolean(Settings.PREF_SHOW_TLD_POPUP_KEYS, Defaults.PREF_SHOW_TLD_POPUP_KEYS);
|
||||
mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, Defaults.PREF_SPACE_TO_CHANGE_LANG);
|
||||
mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, Defaults.PREF_SHOW_EMOJI_KEY);
|
||||
mVarToolbarDirection = prefs.getBoolean(Settings.PREF_VARIABLE_TOOLBAR_DIRECTION, Defaults.PREF_VARIABLE_TOOLBAR_DIRECTION);
|
||||
|
|
|
@ -46,6 +46,7 @@ fun PreferencesScreen(
|
|||
Settings.PREF_POPUP_KEYS_LABELS_ORDER else null,
|
||||
Settings.PREF_POPUP_KEYS_ORDER,
|
||||
Settings.PREF_SHOW_POPUP_HINTS,
|
||||
Settings.PREF_SHOW_TLD_POPUP_KEYS,
|
||||
Settings.PREF_POPUP_ON,
|
||||
if (AudioAndHapticFeedbackManager.getInstance().hasVibrator())
|
||||
Settings.PREF_VIBRATE_ON else null,
|
||||
|
@ -92,6 +93,12 @@ fun createPreferencesSettings(context: Context) = listOf(
|
|||
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_SHOW_TLD_POPUP_KEYS, R.string.show_tld_popup_keys,
|
||||
R.string.show_tld_popup_keys_summary
|
||||
) {
|
||||
SwitchPreference(it, Defaults.PREF_SHOW_TLD_POPUP_KEYS) { KeyboardSwitcher.getInstance().setThemeNeedsReload() }
|
||||
},
|
||||
Setting(context, Settings.PREF_POPUP_ON, R.string.popup_on_keypress) {
|
||||
SwitchPreference(it, Defaults.PREF_POPUP_ON) { KeyboardSwitcher.getInstance().reloadKeyboard() }
|
||||
},
|
||||
|
|
|
@ -249,6 +249,10 @@
|
|||
<string name="hint_source">Select hint source</string>
|
||||
<!-- Title of the setting to set popup key order -->
|
||||
<string name="popup_order">Select popup key order</string>
|
||||
<!-- Title of the setting to show TLD popup keys -->
|
||||
<string name="show_tld_popup_keys">Show TLD popup keys</string>
|
||||
<!-- 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>
|
||||
<!-- Names of the popup key classes -->
|
||||
<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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue