make long-press toolbar pinning optional

This commit is contained in:
Helium314 2024-05-27 20:34:26 +02:00
parent 0f503389b3
commit 388366c242
10 changed files with 98 additions and 58 deletions

View file

@ -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 {