Swipe to dismiss suggestions
- Move dismiss suggestion logic into feature provider - In DashboardData, use hashcode as suggestion's stable id. This is much more likely to provide a truely stable id for each suggestion card. Eventually I want to use hash for all tiles to provide stable id. - Add a SuggestionDismissionController to handle swipe to dismiss callbacks Change-Id: If3770f07a90c5469a0b86fc28f3eb5e4c17227cd Fix: 35159816 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -17,7 +17,13 @@
|
||||
package com.android.settings.dashboard.suggestions;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settings.dashboard.DashboardAdapter;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.SuggestionParser;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
|
||||
import java.util.List;
|
||||
@@ -25,6 +31,7 @@ import java.util.List;
|
||||
public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider {
|
||||
|
||||
private final SuggestionRanker mSuggestionRanker;
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
|
||||
@Override
|
||||
public boolean isSmartSuggestionEnabled(Context context) {
|
||||
@@ -45,6 +52,8 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider
|
||||
public SuggestionFeatureProviderImpl(Context context) {
|
||||
mSuggestionRanker = new SuggestionRanker(
|
||||
new SuggestionFeaturizer(new EventStore(context.getApplicationContext())));
|
||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context)
|
||||
.getMetricsFeatureProvider();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,4 +61,24 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider
|
||||
mSuggestionRanker.rankSuggestions(suggestions, suggestionIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dismissSuggestion(Context context, SuggestionParser parser, Tile suggestion) {
|
||||
if (parser == null || suggestion == null) {
|
||||
return;
|
||||
}
|
||||
mMetricsFeatureProvider.action(
|
||||
context, MetricsProto.MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION,
|
||||
DashboardAdapter.getSuggestionIdentifier(context, suggestion));
|
||||
|
||||
final boolean isSmartSuggestionEnabled = isSmartSuggestionEnabled(context);
|
||||
if (!parser.dismissSuggestion(suggestion, isSmartSuggestionEnabled)) {
|
||||
return;
|
||||
}
|
||||
context.getPackageManager().setComponentEnabledSetting(
|
||||
suggestion.intent.getComponent(),
|
||||
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
|
||||
PackageManager.DONT_KILL_APP);
|
||||
parser.markCategoryDone(suggestion.category);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user