Migrate “pref_smartSpaceEnable” to Preferences DataStore

This commit is contained in:
Patryk
2022-03-09 15:52:58 +01:00
parent 31a526a5e1
commit 05cf6d03f0
5 changed files with 18 additions and 6 deletions
@@ -51,7 +51,6 @@ class PreferenceManager private constructor(private val context: Context) : Base
val folderColumns = IdpIntPref("pref_folderColumns", { numFolderColumns }, reloadGrid)
val folderRows = IdpIntPref("pref_folderRows", { numFolderRows }, reloadGrid)
val allAppsColumns = IdpIntPref("pref_allAppsColumns", { numAllAppsColumns }, reloadGrid)
val smartSpaceEnable = BoolPref("pref_smartSpaceEnable", true, restart)
val minusOneEnable = BoolPref("pref_enableMinusOne", true, recreate)
// TODO: Add the ability to manually delete empty pages.
@@ -187,6 +187,12 @@ class PreferenceManager2(private val context: Context) : PreferenceManager {
defaultValue = false,
)
val enableSmartspace = preference(
key = booleanPreferencesKey(name = "enable_smartspace"),
defaultValue = true,
onSet = { reloadHelper.restart() },
)
companion object {
private val Context.preferencesDataStore by preferencesDataStore(
name = "preferences",
@@ -37,7 +37,7 @@ class SharedPreferencesMigration(private val context: Context) {
"pref_showHomeLabels" to "show_icon_labels_on_home_screen", "pref_allAppsIconSizeFactor" to "drawer_icon_size_factor",
"pref_allAppsIconLabels" to "show_icon_labels_in_drawer", "pref_textSizeFactor" to "home_icon_label_size_factor",
"pref_allAppsTextSizeFactor" to "drawer_icon_label_size_factor", "pref_allAppsCellHeightMultiplier" to "drawer_cell_height_factor",
"pref_useFuzzySearch" to "enable_fuzzy_search",
"pref_useFuzzySearch" to "enable_fuzzy_search", "pref_smartSpaceEnable" to "enable_smartspace",
)
fun produceMigration() = androidx.datastore.migrations.SharedPreferencesMigration(
@@ -54,6 +54,7 @@ interface HomeScreenPreferenceCollectorScope : PreferenceCollectorScope {
val homeIconSizeFactor: Float
val showIconLabelsOnHomeScreen: Boolean
val homeIconLabelSizeFactor: Float
val enableSmartspace: Boolean
}
@Composable
@@ -67,11 +68,13 @@ fun HomeScreenPreferenceCollector(content: @Composable HomeScreenPreferenceColle
val homeIconSizeFactor by preferenceManager.homeIconSizeFactor.state()
val showIconLabelsOnHomeScreen by preferenceManager.showIconLabelsOnHomeScreen.state()
val homeIconLabelSizeFactor by preferenceManager.homeIconLabelSizeFactor.state()
val enableSmartspace by preferenceManager.enableSmartspace.state()
ifNotNull(
darkStatusBar, roundedWidgets,
showStatusBar, showTopShadow,
dt2s, homeIconSizeFactor,
showIconLabelsOnHomeScreen, homeIconLabelSizeFactor,
enableSmartspace,
) {
object : HomeScreenPreferenceCollectorScope {
override val darkStatusBar = it[0] as Boolean
@@ -82,6 +85,7 @@ fun HomeScreenPreferenceCollector(content: @Composable HomeScreenPreferenceColle
override val homeIconSizeFactor = it[5] as Float
override val showIconLabelsOnHomeScreen = it[6] as Boolean
override val homeIconLabelSizeFactor = it[7] as Float
override val enableSmartspace = it[8] as Boolean
override val coroutineScope = rememberCoroutineScope()
override val preferenceManager = preferenceManager
}.content()
@@ -132,8 +136,9 @@ fun HomeScreenPreferences() {
description = if (feedAvailable) null else stringResource(id = R.string.minus_one_unavailable),
enabled = feedAvailable,
)
SwitchPreference(
prefs.smartSpaceEnable.getAdapter(),
SwitchPreference2(
checked = enableSmartspace,
edit = { enableSmartspace.set(value = it) },
label = stringResource(id = R.string.smart_space_enable),
)
SwitchPreference2(
@@ -21,12 +21,14 @@ import android.content.Context;
import com.android.launcher3.BuildConfig;
import com.android.launcher3.Utilities;
import com.android.launcher3.uioverrides.DeviceFlag;
import com.patrykmichalik.preferencemanager.PreferenceExtensionsKt;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import app.lawnchair.preferences.PreferenceManager;
import app.lawnchair.preferences2.PreferenceManager2;
/**
* Defines a set of flags used to control various launcher behaviors.
@@ -55,8 +57,8 @@ public final class FeatureFlags {
* and should be modified at a project level.
*/
public static boolean topQsbOnFirstScreenEnabled(Context context) {
PreferenceManager prefs = PreferenceManager.getInstance(context);
return prefs.getSmartSpaceEnable().get();
PreferenceManager2 preferenceManager2 = PreferenceManager2.getInstance(context);
return PreferenceExtensionsKt.firstBlocking(preferenceManager2.getEnableSmartspace());
}
/**