New ConditionManager
- Create a new ConditionManager that loads data and filters displayable condtionals in memory - Separete conditional controller logic and ui model - Plumb new ui model into DashboardAdapater, and create a new ConditionAdapter to manage UI. Bug: 112485407 Test: robotests Change-Id: If56d141d135341e9b8c2dc80e43c3d40b1de1340
This commit is contained in:
@@ -42,6 +42,8 @@ import com.android.settings.dashboard.DashboardData.ConditionHeaderData;
|
||||
import com.android.settings.dashboard.suggestions.SuggestionAdapter;
|
||||
import com.android.settings.homepage.conditional.Condition;
|
||||
import com.android.settings.homepage.conditional.ConditionAdapter;
|
||||
import com.android.settings.homepage.conditional.v2.ConditionManager;
|
||||
import com.android.settings.homepage.conditional.v2.ConditionalCard;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.widget.RoundedHomepageIcon;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
@@ -71,6 +73,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
private boolean mFirstFrameDrawn;
|
||||
private RecyclerView mRecyclerView;
|
||||
private SuggestionAdapter mSuggestionAdapter;
|
||||
private ConditionManager mConditionManager;
|
||||
|
||||
@VisibleForTesting
|
||||
DashboardData mDashboardData;
|
||||
@@ -85,8 +88,8 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
};
|
||||
|
||||
public DashboardAdapter(Context context, Bundle savedInstanceState,
|
||||
List<Condition> conditions, SuggestionControllerMixinCompat suggestionControllerMixin,
|
||||
Lifecycle lifecycle) {
|
||||
List<Condition> conditions, ConditionManager conditionManager,
|
||||
SuggestionControllerMixinCompat suggestionControllerMixin, Lifecycle lifecycle) {
|
||||
|
||||
DashboardCategory category = null;
|
||||
boolean conditionExpanded = false;
|
||||
@@ -96,6 +99,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
mMetricsFeatureProvider = factory.getMetricsFeatureProvider();
|
||||
mDashboardFeatureProvider = factory.getDashboardFeatureProvider(context);
|
||||
mCache = new IconCache(context);
|
||||
mConditionManager = conditionManager;
|
||||
mSuggestionAdapter = new SuggestionAdapter(mContext, suggestionControllerMixin,
|
||||
savedInstanceState, this /* callback */, lifecycle);
|
||||
|
||||
@@ -113,6 +117,8 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
|
||||
mDashboardData = new DashboardData.Builder()
|
||||
.setConditions(conditions)
|
||||
.setConditionsV2(
|
||||
conditionManager == null ? null : conditionManager.getDisplayableCards())
|
||||
.setSuggestions(mSuggestionAdapter.getSuggestions())
|
||||
.setCategory(category)
|
||||
.setConditionExpanded(conditionExpanded)
|
||||
@@ -145,6 +151,15 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
notifyDashboardDataChanged(prevData);
|
||||
}
|
||||
|
||||
public void setConditionsV2(List<ConditionalCard> conditions) {
|
||||
final DashboardData prevData = mDashboardData;
|
||||
Log.d(TAG, "adapter setConditions called");
|
||||
mDashboardData = new DashboardData.Builder(prevData)
|
||||
.setConditionsV2(conditions)
|
||||
.build();
|
||||
notifyDashboardDataChanged(prevData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuggestionClosed(Suggestion suggestion) {
|
||||
final List<Suggestion> list = mDashboardData.getSuggestions();
|
||||
@@ -286,11 +301,31 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
|
||||
@VisibleForTesting
|
||||
void onBindCondition(final ConditionContainerHolder holder, int position) {
|
||||
final ConditionAdapter adapter = new ConditionAdapter(mContext,
|
||||
(List<Condition>) mDashboardData.getItemEntityByPosition(position),
|
||||
mDashboardData.isConditionExpanded());
|
||||
adapter.addDismissHandling(holder.data);
|
||||
holder.data.setAdapter(adapter);
|
||||
final List conditions = (List) mDashboardData.getItemEntityByPosition(position);
|
||||
final List<Condition> conditionsV1;
|
||||
final List<ConditionalCard> conditionsV2;
|
||||
if (conditions == null || conditions.isEmpty()) {
|
||||
conditionsV1 = null;
|
||||
conditionsV2 = null;
|
||||
} else if (conditions.get(0) instanceof Condition) {
|
||||
conditionsV1 = conditions;
|
||||
conditionsV2 = null;
|
||||
} else {
|
||||
conditionsV1 = null;
|
||||
conditionsV2 = conditions;
|
||||
}
|
||||
if (conditionsV2 == null) {
|
||||
final ConditionAdapter adapter = new ConditionAdapter(mContext,
|
||||
conditionsV1, mDashboardData.isConditionExpanded());
|
||||
adapter.addDismissHandling(holder.data);
|
||||
holder.data.setAdapter(adapter);
|
||||
} else {
|
||||
final com.android.settings.homepage.conditional.v2.ConditionAdapter adapter =
|
||||
new com.android.settings.homepage.conditional.v2.ConditionAdapter(
|
||||
mContext, mConditionManager, conditionsV2,
|
||||
mDashboardData.isConditionExpanded());
|
||||
holder.data.setAdapter(adapter);
|
||||
}
|
||||
holder.data.setLayoutManager(new LinearLayoutManager(mContext));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user