mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-05-21 01:10:24 +00:00
make long-press toolbar pinning optional
This commit is contained in:
parent
0f503389b3
commit
388366c242
10 changed files with 98 additions and 58 deletions
|
@ -114,8 +114,6 @@ enum class ToolbarKey {
|
|||
|
||||
val toolbarKeyStrings: Set<String> = entries.mapTo(HashSet()) { it.toString().lowercase(Locale.US) }
|
||||
|
||||
fun toToolbarKeyString(keys: Collection<ToolbarKey>) = keys.joinToString(";") { it.name }
|
||||
|
||||
val defaultToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToString(";") {
|
||||
when (it) {
|
||||
INCOGNITO, AUTOCORRECT, UP, DOWN, ONE_HANDED, FULL_LEFT, FULL_RIGHT, CUT, CLEAR_CLIPBOARD -> "${it.name},false"
|
||||
|
@ -123,6 +121,10 @@ val defaultToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToString(
|
|||
}
|
||||
}
|
||||
|
||||
val defaultPinnedToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToString(";") {
|
||||
"${it.name},false"
|
||||
}
|
||||
|
||||
val defaultClipboardToolbarPref by lazy {
|
||||
val default = listOf(ONE_HANDED, UNDO, UP, DOWN, LEFT, RIGHT, CLEAR_CLIPBOARD, COPY, CUT, SELECT_WORD, CLOSE_HISTORY)
|
||||
val others = entries.filterNot { it in default }
|
||||
|
@ -132,6 +134,7 @@ val defaultClipboardToolbarPref by lazy {
|
|||
/** add missing keys, typically because a new key has been added */
|
||||
fun upgradeToolbarPrefs(prefs: SharedPreferences) {
|
||||
upgradeToolbarPref(prefs, Settings.PREF_TOOLBAR_KEYS, defaultToolbarPref)
|
||||
upgradeToolbarPref(prefs, Settings.PREF_PINNED_TOOLBAR_KEYS, defaultPinnedToolbarPref)
|
||||
upgradeToolbarPref(prefs, Settings.PREF_CLIPBOARD_TOOLBAR_KEYS, defaultClipboardToolbarPref)
|
||||
}
|
||||
|
||||
|
@ -159,8 +162,31 @@ private fun upgradeToolbarPref(prefs: SharedPreferences, pref: String, default:
|
|||
|
||||
fun getEnabledToolbarKeys(prefs: SharedPreferences) = getEnabledToolbarKeys(prefs, Settings.PREF_TOOLBAR_KEYS, defaultToolbarPref)
|
||||
|
||||
fun getPinnedToolbarKeys(prefs: SharedPreferences) = getEnabledToolbarKeys(prefs, Settings.PREF_PINNED_TOOLBAR_KEYS, defaultPinnedToolbarPref)
|
||||
|
||||
fun getEnabledClipboardToolbarKeys(prefs: SharedPreferences) = getEnabledToolbarKeys(prefs, Settings.PREF_CLIPBOARD_TOOLBAR_KEYS, defaultClipboardToolbarPref)
|
||||
|
||||
fun addPinnedKey(prefs: SharedPreferences, key: ToolbarKey) {
|
||||
// remove the existing version of this key and add the enabled one after the last currently enabled key
|
||||
val string = prefs.getString(Settings.PREF_PINNED_TOOLBAR_KEYS, defaultPinnedToolbarPref)!!
|
||||
val keys = string.split(";").toMutableList()
|
||||
keys.removeAll { it.startsWith(key.name + ",") }
|
||||
val lastEnabledIndex = keys.indexOfLast { it.endsWith("true") }
|
||||
keys.add(lastEnabledIndex + 1, key.name + ",true")
|
||||
prefs.edit { putString(Settings.PREF_PINNED_TOOLBAR_KEYS, keys.joinToString(";")) }
|
||||
}
|
||||
|
||||
fun removePinnedKey(prefs: SharedPreferences, key: ToolbarKey) {
|
||||
// just set it to disabled
|
||||
val string = prefs.getString(Settings.PREF_PINNED_TOOLBAR_KEYS, defaultPinnedToolbarPref)!!
|
||||
val result = string.split(";").joinToString(";") {
|
||||
if (it.startsWith(key.name + ","))
|
||||
key.name + ",false"
|
||||
else it
|
||||
}
|
||||
prefs.edit { putString(Settings.PREF_PINNED_TOOLBAR_KEYS, result) }
|
||||
}
|
||||
|
||||
private fun getEnabledToolbarKeys(prefs: SharedPreferences, pref: String, default: String): List<ToolbarKey> {
|
||||
val string = prefs.getString(pref, default)!!
|
||||
return string.split(";").mapNotNull {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue