Migrate “pref_hideAppSearchBar” to Preferences DataStore

This commit is contained in:
Patryk Michalik
2022-02-21 18:26:33 +01:00
parent 08158e30da
commit 5cfd1b0bbb
5 changed files with 22 additions and 10 deletions
@@ -21,7 +21,9 @@ import androidx.core.view.isVisible
import androidx.core.widget.addTextChangedListener
import app.lawnchair.launcher
import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.preferences2.PreferenceManager2
import app.lawnchair.search.LawnchairSearchAlgorithm
import app.lawnchair.util.viewAttachedScope
import com.android.launcher3.Insettable
import com.android.launcher3.LauncherState
import com.android.launcher3.R
@@ -29,6 +31,7 @@ import com.android.launcher3.allapps.*
import com.android.launcher3.allapps.search.AllAppsSearchBarController
import com.android.launcher3.search.SearchCallback
import com.android.launcher3.util.Themes
import com.patrykmichalik.preferencemanager.onEach
import java.util.*
import kotlin.math.max
@@ -94,8 +97,10 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) : LinearLayout(
}
)
val prefs = PreferenceManager.getInstance(context)
isVisible = !prefs.hideAppSearchBar.get()
val preferenceManager2 = PreferenceManager2.getInstance(context)
preferenceManager2.hideAppDrawerSearchBar.onEach(launchIn = viewAttachedScope) { hideAppDrawerSearchBar ->
isVisible = !hideAppDrawerSearchBar
}
}
override fun setFocusedResultTitle(title: CharSequence?) {
@@ -61,7 +61,6 @@ class PreferenceManager private constructor(private val context: Context) : Base
val smartSpaceEnable = BoolPref("pref_smartSpaceEnable", true, restart)
val minusOneEnable = BoolPref("pref_enableMinusOne", true, recreate)
val useFuzzySearch = BoolPref("pref_useFuzzySearch", false)
val hideAppSearchBar = BoolPref("pref_hideAppSearchBar", false, recreate)
// TODO: Add the ability to manually delete empty pages.
val allowEmptyPages = BoolPref("pref_allowEmptyPages", false)
@@ -91,6 +91,11 @@ class PreferenceManager2(private val context: Context) : PreferenceManager {
defaultValue = true,
)
val hideAppDrawerSearchBar = preference(
key = booleanPreferencesKey(name = "hide_app_drawer_search_bar"),
defaultValue = false,
)
companion object {
private val Context.preferencesDataStore by preferencesDataStore(
name = "preferences",
@@ -31,6 +31,7 @@ class SharedPreferencesMigration(private val context: Context) {
"pref_iconShape" to "icon_shape", "pref_themedHotseatQsb" to "themed_hotseat_qsb",
"pref_accentColor2" to "accent_color", "hidden-app-set" to "hidden_apps",
"pref_showStatusBar" to "show_status_bar", "pref_showSysUiScrim" to "show_top_shadow",
"pref_hideAppSearchBar" to "hide_app_drawer_search_bar",
)
fun produceMigration() = androidx.datastore.migrations.SharedPreferencesMigration(
@@ -24,7 +24,6 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.navigation.NavGraphBuilder
import app.lawnchair.preferences.getAdapter
import app.lawnchair.preferences.not
import app.lawnchair.preferences.preferenceManager
import app.lawnchair.preferences2.PreferenceCollectorScope
import app.lawnchair.preferences2.preferenceManager2
@@ -47,15 +46,18 @@ fun NavGraphBuilder.appDrawerGraph(route: String) {
interface AppDrawerPreferenceCollectorScope : PreferenceCollectorScope {
val hiddenApps: Set<String>
val hideAppDrawerSearchBar: Boolean
}
@Composable
fun AppDrawerPreferenceCollector(content: @Composable AppDrawerPreferenceCollectorScope.() -> Unit) {
val preferenceManager = preferenceManager2()
val hiddenApps by preferenceManager.hiddenApps.state()
ifNotNull(hiddenApps) {
val hideAppDrawerSearchBar by preferenceManager.hideAppDrawerSearchBar.state()
ifNotNull(hiddenApps, hideAppDrawerSearchBar) {
object : AppDrawerPreferenceCollectorScope {
override val hiddenApps = it[0] as Set<String>
override val hideAppDrawerSearchBar = it[1] as Boolean
override val coroutineScope = rememberCoroutineScope()
override val preferenceManager = preferenceManager
}.content()
@@ -85,14 +87,14 @@ fun AppDrawerPreferences() {
SuggestionsPreference()
}
val deviceSearchEnabled = LawnchairSearchAlgorithm.isDeviceSearchEnabled(LocalContext.current)
val showSearchBar = !prefs.hideAppSearchBar.getAdapter()
PreferenceGroup(heading = stringResource(id = R.string.pref_category_search)) {
SwitchPreference(
SwitchPreference2(
label = stringResource(id = R.string.show_app_search_bar),
adapter = showSearchBar
checked = !hideAppDrawerSearchBar,
edit = { hideAppDrawerSearchBar.set(value = !it) },
)
AnimatedVisibility(
visible = showSearchBar.state.value,
visible = !hideAppDrawerSearchBar,
enter = expandVertically() + fadeIn(),
exit = shrinkVertically() + fadeOut()
) {
@@ -113,7 +115,7 @@ fun AppDrawerPreferences() {
}
if (deviceSearchEnabled) {
AnimatedVisibility(
visible = showSearchBar.state.value,
visible = !hideAppDrawerSearchBar,
enter = expandVertically() + fadeIn(),
exit = shrinkVertically() + fadeOut()
) {