diff --git a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt index 2b27a3e0b3..2b7da1e043 100644 --- a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt +++ b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt @@ -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. diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt index 1812c53579..423499c7ba 100644 --- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt +++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt @@ -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", diff --git a/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt b/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt index 6051ecbcfb..63276f95ec 100644 --- a/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt +++ b/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt @@ -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( diff --git a/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt index a6a288feed..4ee383c705 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt @@ -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( diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 774d7ca30b..0b7e910112 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -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()); } /**