diff --git a/lawnchair/res/values-zh-rCN/strings.xml b/lawnchair/res/values-zh-rCN/strings.xml index e88a650a99..d656ae9d2b 100644 --- a/lawnchair/res/values-zh-rCN/strings.xml +++ b/lawnchair/res/values-zh-rCN/strings.xml @@ -361,6 +361,7 @@ 标签 从应用抽屉隐藏 建议 + 在抽屉顶部展示建议的应用 Lawnchair 错误报告 %1$s 已崩溃 diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml index a459cb0e71..3999d9a10f 100644 --- a/lawnchair/res/values/config.xml +++ b/lawnchair/res/values/config.xml @@ -96,6 +96,7 @@ false false false + true true true true diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml index 3082df7407..b8c213db18 100644 --- a/lawnchair/res/values/strings.xml +++ b/lawnchair/res/values/strings.xml @@ -450,6 +450,8 @@ Hide from App Drawer Suggestions + Show suggested apps at drawer top + %1$d%% diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt index 9dcec5da4d..010cd4c744 100644 --- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt +++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt @@ -227,6 +227,12 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre onSet = { reloadHelper.recreate() }, ) + val showSuggestedAppsInDrawer = preference( + key = booleanPreferencesKey(name = "show_suggested_apps_at_drawer_top"), + defaultValue = context.resources.getBoolean(R.bool.config_default_show_suggested_apps_at_drawer_top), + onSet = { reloadHelper.recreate() }, + ) + val enableFontSelection = preference( key = booleanPreferencesKey(name = "enable_font_selection"), defaultValue = context.resources.getBoolean(R.bool.config_default_enable_font_selection), diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt index 722640dc54..222a7db97d 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt @@ -6,6 +6,8 @@ import android.content.pm.PackageManager import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import app.lawnchair.preferences.getAdapter +import app.lawnchair.preferences2.preferenceManager2 import com.android.launcher3.R @SuppressLint("WrongConstant") @@ -23,5 +25,14 @@ fun SuggestionsPreference() { context.startActivity(intent) }, ) + } else { + // On some devices, the Suggestions activity could not be found or PACKAGE_USAGE_STATS is not granted. + + val prefs2 = preferenceManager2() + val showRecentAppsInDrawer = prefs2.showSuggestedAppsInDrawer.getAdapter() + SwitchPreference( + label = stringResource(id = R.string.show_suggested_apps_at_drawer_top), + adapter = showRecentAppsInDrawer, + ) } } diff --git a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java index 3510fbef38..31bb6958cd 100644 --- a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java +++ b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java @@ -43,11 +43,14 @@ import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.touch.ItemLongClickListener; import com.android.launcher3.views.ActivityContext; +import com.patrykmichalik.opto.core.PreferenceExtensionsKt; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import app.lawnchair.preferences2.PreferenceManager2; + @TargetApi(Build.VERSION_CODES.P) public class PredictionRowView extends LinearLayout implements OnDeviceProfileChangeListener, FloatingHeaderRow { @@ -66,6 +69,8 @@ public class PredictionRowView private boolean mPredictionsEnabled = false; private OnLongClickListener mOnIconLongClickListener = ItemLongClickListener.INSTANCE_ALL_APPS; + private final PreferenceManager2 prefs2 = PreferenceManager2.getInstance(getContext()); + public PredictionRowView(@NonNull Context context) { this(context, null); } @@ -97,9 +102,10 @@ public class PredictionRowView } private void updateVisibility() { - setVisibility(mPredictionsEnabled ? VISIBLE : GONE); + boolean enabled = mPredictionsEnabled && PreferenceExtensionsKt.firstBlocking(prefs2.getShowSuggestedAppsInDrawer()); + setVisibility(enabled ? VISIBLE : GONE); if (mActivityContext.getAppsView() != null) { - if (mPredictionsEnabled) { + if (enabled) { mActivityContext.getAppsView().getAppsStore().registerIconContainer(this); } else { mActivityContext.getAppsView().getAppsStore().unregisterIconContainer(this);