mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-06-04 22:00:17 +00:00
consistent way of for settingsSubtypes <-> string
This commit is contained in:
parent
e1f02dab31
commit
c47da4203f
4 changed files with 23 additions and 22 deletions
|
@ -161,7 +161,7 @@ fun checkVersionUpgrade(context: Context) {
|
||||||
split[1] = newName
|
split[1] = newName
|
||||||
split.joinToString(":")
|
split.joinToString(":")
|
||||||
}
|
}
|
||||||
Settings.writePrefAdditionalSubtypes(prefs, newSubtypeStrings.joinToString(";"))
|
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, newSubtypeStrings.joinToString(";")).apply()
|
||||||
}
|
}
|
||||||
// rename other custom layouts
|
// rename other custom layouts
|
||||||
LayoutUtilsCustom.onLayoutFileChanged()
|
LayoutUtilsCustom.onLayoutFileChanged()
|
||||||
|
@ -630,7 +630,7 @@ private fun upgradesWhenComingFromOldAppName(context: Context) {
|
||||||
val localeString = it.substringBefore(":")
|
val localeString = it.substringBefore(":")
|
||||||
additionalSubtypes.add(it.replace(localeString, localeString.constructLocale().toLanguageTag()))
|
additionalSubtypes.add(it.replace(localeString, localeString.constructLocale().toLanguageTag()))
|
||||||
}
|
}
|
||||||
Settings.writePrefAdditionalSubtypes(prefs, additionalSubtypes.joinToString(";"))
|
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, additionalSubtypes.joinToString(";")).apply()
|
||||||
}
|
}
|
||||||
// move pinned clips to credential protected storage if device is not locked (should never happen)
|
// move pinned clips to credential protected storage if device is not locked (should never happen)
|
||||||
if (!prefs.contains(Settings.PREF_PINNED_CLIPS)) return
|
if (!prefs.contains(Settings.PREF_PINNED_CLIPS)) return
|
||||||
|
|
|
@ -312,10 +312,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
||||||
mPrefs.edit().putBoolean(Settings.PREF_ALWAYS_INCOGNITO_MODE, !oldValue).apply();
|
mPrefs.edit().putBoolean(Settings.PREF_ALWAYS_INCOGNITO_MODE, !oldValue).apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writePrefAdditionalSubtypes(final SharedPreferences prefs, final String prefSubtypes) {
|
|
||||||
prefs.edit().putString(PREF_ADDITIONAL_SUBTYPES, prefSubtypes).apply();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int readHorizontalSpaceSwipe(final SharedPreferences prefs) {
|
public static int readHorizontalSpaceSwipe(final SharedPreferences prefs) {
|
||||||
return switch (prefs.getString(PREF_SPACE_HORIZONTAL_SWIPE, Defaults.PREF_SPACE_HORIZONTAL_SWIPE)) {
|
return switch (prefs.getString(PREF_SPACE_HORIZONTAL_SWIPE, Defaults.PREF_SPACE_HORIZONTAL_SWIPE)) {
|
||||||
case "move_cursor" -> KeyboardActionListener.SWIPE_MOVE_CURSOR;
|
case "move_cursor" -> KeyboardActionListener.SWIPE_MOVE_CURSOR;
|
||||||
|
|
|
@ -52,9 +52,8 @@ object SubtypeSettings {
|
||||||
|
|
||||||
fun addEnabledSubtype(prefs: SharedPreferences, newSubtype: InputMethodSubtype) {
|
fun addEnabledSubtype(prefs: SharedPreferences, newSubtype: InputMethodSubtype) {
|
||||||
val subtype = newSubtype.toSettingsSubtype()
|
val subtype = newSubtype.toSettingsSubtype()
|
||||||
val subtypes = prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!
|
val subtypes = createSettingsSubtypes(prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!) + subtype
|
||||||
.split(Separators.SETS).filter { it.isNotBlank() }.map { it.toSettingsSubtype() } + subtype
|
val newString = createPrefSubtypes(subtypes)
|
||||||
val newString = subtypes.map { it.toPref() }.toSortedSet().joinToString(Separators.SETS)
|
|
||||||
prefs.edit { putString(Settings.PREF_ENABLED_SUBTYPES, newString) }
|
prefs.edit { putString(Settings.PREF_ENABLED_SUBTYPES, newString) }
|
||||||
|
|
||||||
if (newSubtype !in enabledSubtypes) {
|
if (newSubtype !in enabledSubtypes) {
|
||||||
|
@ -155,6 +154,15 @@ object SubtypeSettings {
|
||||||
RichInputMethodManager.getInstance().refreshSubtypeCaches()
|
RichInputMethodManager.getInstance().refreshSubtypeCaches()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun createSettingsSubtypes(prefSubtypes: String): List<SettingsSubtype> =
|
||||||
|
prefSubtypes.split(Separators.SETS).mapNotNull {
|
||||||
|
if (it.isEmpty()) null
|
||||||
|
else it.toSettingsSubtype()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createPrefSubtypes(subtypes: Collection<SettingsSubtype>): String =
|
||||||
|
subtypes.map { it.toPref() }.toSortedSet().joinToString(Separators.SETS)
|
||||||
|
|
||||||
fun init(context: Context) {
|
fun init(context: Context) {
|
||||||
SubtypeLocaleUtils.init(context) // necessary to get the correct getKeyboardLayoutSetName
|
SubtypeLocaleUtils.init(context) // necessary to get the correct getKeyboardLayoutSetName
|
||||||
|
|
||||||
|
@ -205,7 +213,8 @@ object SubtypeSettings {
|
||||||
}
|
}
|
||||||
if (subtypesToRemove.isEmpty()) return
|
if (subtypesToRemove.isEmpty()) return
|
||||||
Log.w(TAG, "removing custom subtypes without main layout files: $subtypesToRemove")
|
Log.w(TAG, "removing custom subtypes without main layout files: $subtypesToRemove")
|
||||||
Settings.writePrefAdditionalSubtypes(prefs, additionalSubtypes.filterNot { it in subtypesToRemove }.joinToString(Separators.SETS))
|
// todo: now we have a qwerty fallback anyway, consider removing this method (makes bugs more obvious to users)
|
||||||
|
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, additionalSubtypes.filterNot { it in subtypesToRemove }.joinToString(Separators.SETS)).apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadAdditionalSubtypes(prefs: SharedPreferences) {
|
private fun loadAdditionalSubtypes(prefs: SharedPreferences) {
|
||||||
|
@ -218,8 +227,7 @@ object SubtypeSettings {
|
||||||
// requires loadResourceSubtypes to be called before
|
// requires loadResourceSubtypes to be called before
|
||||||
private fun loadEnabledSubtypes(context: Context) {
|
private fun loadEnabledSubtypes(context: Context) {
|
||||||
val prefs = context.prefs()
|
val prefs = context.prefs()
|
||||||
val settingsSubtypes = prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!
|
val settingsSubtypes = createSettingsSubtypes(prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!)
|
||||||
.split(Separators.SETS).filter { it.isNotEmpty() }.map { it.toSettingsSubtype() }
|
|
||||||
for (settingsSubtype in settingsSubtypes) {
|
for (settingsSubtype in settingsSubtypes) {
|
||||||
if (settingsSubtype.isAdditionalSubtype(prefs)) {
|
if (settingsSubtype.isAdditionalSubtype(prefs)) {
|
||||||
enabledSubtypes.add(settingsSubtype.toAdditionalSubtype())
|
enabledSubtypes.add(settingsSubtype.toAdditionalSubtype())
|
||||||
|
@ -253,12 +261,11 @@ object SubtypeSettings {
|
||||||
|
|
||||||
/** @return whether pref was changed */
|
/** @return whether pref was changed */
|
||||||
private fun removeEnabledSubtype(prefs: SharedPreferences, subtype: SettingsSubtype): Boolean {
|
private fun removeEnabledSubtype(prefs: SharedPreferences, subtype: SettingsSubtype): Boolean {
|
||||||
val oldSubtypes = prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!
|
val oldSubtypes = createSettingsSubtypes(prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!)
|
||||||
.split(Separators.SETS).filter { it.isNotEmpty() }.map { it.toSettingsSubtype() }
|
|
||||||
val newSubtypes = oldSubtypes - subtype
|
val newSubtypes = oldSubtypes - subtype
|
||||||
if (oldSubtypes == newSubtypes)
|
if (oldSubtypes == newSubtypes)
|
||||||
return false // already removed
|
return false // already removed
|
||||||
prefs.edit { putString(Settings.PREF_ENABLED_SUBTYPES, newSubtypes.joinToString(Separators.SETS) { it.toPref() }) }
|
prefs.edit { putString(Settings.PREF_ENABLED_SUBTYPES, createPrefSubtypes(newSubtypes)) }
|
||||||
if (subtype == prefs.getString(Settings.PREF_SELECTED_SUBTYPE, Defaults.PREF_SELECTED_SUBTYPE)!!.toSettingsSubtype()) {
|
if (subtype == prefs.getString(Settings.PREF_SELECTED_SUBTYPE, Defaults.PREF_SELECTED_SUBTYPE)!!.toSettingsSubtype()) {
|
||||||
// switch subtype if the currently used one has been disabled
|
// switch subtype if the currently used one has been disabled
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -53,10 +53,11 @@ object SubtypeUtilsAdditional {
|
||||||
val prefs = context.prefs()
|
val prefs = context.prefs()
|
||||||
SubtypeSettings.removeEnabledSubtype(context, subtype)
|
SubtypeSettings.removeEnabledSubtype(context, subtype)
|
||||||
val oldAdditionalSubtypesString = prefs.getString(Settings.PREF_ADDITIONAL_SUBTYPES, Defaults.PREF_ADDITIONAL_SUBTYPES)!!
|
val oldAdditionalSubtypesString = prefs.getString(Settings.PREF_ADDITIONAL_SUBTYPES, Defaults.PREF_ADDITIONAL_SUBTYPES)!!
|
||||||
val oldAdditionalSubtypes = createAdditionalSubtypes(oldAdditionalSubtypesString)
|
val oldAdditionalSubtypes = SubtypeSettings.createSettingsSubtypes(oldAdditionalSubtypesString)
|
||||||
val newAdditionalSubtypes = oldAdditionalSubtypes.filter { it != subtype }
|
val settingsSubtype = subtype.toSettingsSubtype()
|
||||||
val newAdditionalSubtypesString = createPrefSubtypes(newAdditionalSubtypes)
|
val newAdditionalSubtypes = oldAdditionalSubtypes.filter { it != settingsSubtype }
|
||||||
Settings.writePrefAdditionalSubtypes(prefs, newAdditionalSubtypesString)
|
val newAdditionalSubtypesString = SubtypeSettings.createPrefSubtypes(newAdditionalSubtypes)
|
||||||
|
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, newAdditionalSubtypesString).apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
// updates additional subtypes, enabled subtypes, and selected subtype
|
// updates additional subtypes, enabled subtypes, and selected subtype
|
||||||
|
@ -97,9 +98,6 @@ object SubtypeUtilsAdditional {
|
||||||
else it.toSettingsSubtype().toAdditionalSubtype()
|
else it.toSettingsSubtype().toAdditionalSubtype()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createPrefSubtypes(subtypes: Collection<InputMethodSubtype>): String =
|
|
||||||
subtypes.joinToString(Separators.SETS) { it.toSettingsSubtype().toPref() }
|
|
||||||
|
|
||||||
private fun getNameResId(locale: Locale, mainLayoutName: String): Int {
|
private fun getNameResId(locale: Locale, mainLayoutName: String): Int {
|
||||||
val nameId = SubtypeLocaleUtils.getSubtypeNameResId(locale, mainLayoutName)
|
val nameId = SubtypeLocaleUtils.getSubtypeNameResId(locale, mainLayoutName)
|
||||||
if (nameId != SubtypeLocaleUtils.UNKNOWN_KEYBOARD_LAYOUT) return nameId
|
if (nameId != SubtypeLocaleUtils.UNKNOWN_KEYBOARD_LAYOUT) return nameId
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue