Loading src/com/android/settings/core/FeatureFlags.java +0 −1 Original line number Diff line number Diff line Loading @@ -25,5 +25,4 @@ public class FeatureFlags { public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher"; public static final String DYNAMIC_HOMEPAGE = "settings_dynamic_homepage"; public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid"; public static final String CONDITION_MANAGER_V2 = "settings_condition_manager_v2"; } src/com/android/settings/dashboard/DashboardAdapter.java +11 −41 Original line number Diff line number Diff line Loading @@ -40,10 +40,9 @@ import com.android.settings.R; import com.android.settings.R.id; 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.homepage.conditional.ConditionManager; import com.android.settings.homepage.conditional.ConditionalCard; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.RoundedHomepageIcon; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; Loading Loading @@ -88,7 +87,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash }; public DashboardAdapter(Context context, Bundle savedInstanceState, List<Condition> conditions, ConditionManager conditionManager, ConditionManager conditionManager, SuggestionControllerMixinCompat suggestionControllerMixin, Lifecycle lifecycle) { DashboardCategory category = null; Loading Loading @@ -116,8 +115,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash } mDashboardData = new DashboardData.Builder() .setConditions(conditions) .setConditionsV2( .setConditions( conditionManager == null ? null : conditionManager.getDisplayableCards()) .setSuggestions(mSuggestionAdapter.getSuggestions()) .setCategory(category) Loading @@ -142,7 +140,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash notifyDashboardDataChanged(prevData); } public void setConditions(List<Condition> conditions) { public void setConditions(List<ConditionalCard> conditions) { final DashboardData prevData = mDashboardData; Log.d(TAG, "adapter setConditions called"); mDashboardData = new DashboardData.Builder(prevData) Loading @@ -151,15 +149,6 @@ 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(); Loading Loading @@ -301,31 +290,12 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash @VisibleForTesting void onBindCondition(final ConditionContainerHolder holder, int position) { 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, final List<ConditionalCard> conditions = (List) mDashboardData.getItemEntityByPosition(position); final ConditionAdapter adapter = new ConditionAdapter( mContext, mConditionManager, conditions, mDashboardData.isConditionExpanded()); holder.data.setAdapter(adapter); } holder.data.setLayoutManager(new LinearLayoutManager(mContext)); } Loading src/com/android/settings/dashboard/DashboardData.java +22 −62 Original line number Diff line number Diff line Loading @@ -24,8 +24,7 @@ import androidx.annotation.VisibleForTesting; import androidx.recyclerview.widget.DiffUtil; import com.android.settings.R; import com.android.settings.homepage.conditional.Condition; import com.android.settings.homepage.conditional.v2.ConditionalCard; import com.android.settings.homepage.conditional.ConditionalCard; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; Loading Loading @@ -57,15 +56,13 @@ public class DashboardData { private final List<Item> mItems; private final DashboardCategory mCategory; private final List<Condition> mConditions; private final List<ConditionalCard> mConditionsV2; private final List<ConditionalCard> mConditions; private final List<Suggestion> mSuggestions; private final boolean mConditionExpanded; private DashboardData(Builder builder) { mCategory = builder.mCategory; mConditions = builder.mConditions; mConditionsV2 = builder.mConditionsV2; mSuggestions = builder.mSuggestions; mConditionExpanded = builder.mConditionExpanded; mItems = new ArrayList<>(); Loading Loading @@ -106,7 +103,7 @@ public class DashboardData { return mCategory; } public List<Condition> getConditions() { public List<ConditionalCard> getConditions() { return mConditions; } Loading Loading @@ -168,7 +165,8 @@ public class DashboardData { /** * Add item into list when {@paramref add} is true. * * @param item maybe {@link Condition}, {@link Tile}, {@link DashboardCategory} or null * @param item maybe {@link ConditionalCard}, {@link Tile}, {@link DashboardCategory} * or null * @param type type of the item, and value is the layout id * @param stableId The stable id for this item * @param add flag about whether to add item into list Loading @@ -184,11 +182,8 @@ public class DashboardData { * and mIsShowingAll, mConditionExpanded flag. */ private void buildItemsData() { final List<Condition> conditionsV1 = getConditionsToShow(mConditions); final boolean hasConditionsV1 = sizeOf(conditionsV1) > 0; final List<ConditionalCard> conditionsV2 = mConditionsV2; final boolean hasConditionsV2 = sizeOf(conditionsV2) > 0; final boolean hasConditions = hasConditionsV1 || hasConditionsV2; final List<ConditionalCard> conditions = mConditions; final boolean hasConditions = sizeOf(conditions) > 0; final List<Suggestion> suggestions = getSuggestionsToShow(mSuggestions); final boolean hasSuggestions = sizeOf(suggestions) > 0; Loading @@ -203,20 +198,14 @@ public class DashboardData { STABLE_ID_SUGGESTION_CONDITION_DIVIDER, hasSuggestions && hasConditions); /* Condition header. This will be present when there is condition and it is collapsed */ addToItemList(new ConditionHeaderData(conditionsV1, conditionsV2), addToItemList(new ConditionHeaderData(conditions), R.layout.condition_header, STABLE_ID_CONDITION_HEADER, hasConditions && !mConditionExpanded); /* Condition container. This is the card view that contains the list of conditions. * This will be added whenever the condition list is not empty and expanded */ if (hasConditionsV1) { addToItemList(conditionsV1, R.layout.condition_container, STABLE_ID_CONDITION_CONTAINER, hasConditionsV1 && mConditionExpanded); } if (hasConditionsV2) { addToItemList(conditionsV2, R.layout.condition_container, STABLE_ID_CONDITION_CONTAINER, hasConditionsV2 && mConditionExpanded); } addToItemList(conditions, R.layout.condition_container, STABLE_ID_CONDITION_CONTAINER, hasConditions && mConditionExpanded); /* Condition footer. This will be present when there is condition and it is expanded */ addToItemList(null /* item */, R.layout.condition_footer, Loading @@ -236,21 +225,6 @@ public class DashboardData { return list == null ? 0 : list.size(); } private List<Condition> getConditionsToShow(List<Condition> conditions) { if (conditions == null) { return null; } List<Condition> result = new ArrayList<>(); final int size = conditions == null ? 0 : conditions.size(); for (int i = 0; i < size; i++) { final Condition condition = conditions.get(i); if (condition.shouldShow()) { result.add(condition); } } return result; } private List<Suggestion> getSuggestionsToShow(List<Suggestion> suggestions) { if (suggestions == null) { return null; Loading @@ -270,8 +244,7 @@ public class DashboardData { */ public static class Builder { private DashboardCategory mCategory; private List<Condition> mConditions; private List<ConditionalCard> mConditionsV2; private List<ConditionalCard> mConditions; private List<Suggestion> mSuggestions; private boolean mConditionExpanded; Loading @@ -281,7 +254,6 @@ public class DashboardData { public Builder(DashboardData dashboardData) { mCategory = dashboardData.mCategory; mConditions = dashboardData.mConditions; mConditionsV2 = dashboardData.mConditionsV2; mSuggestions = dashboardData.mSuggestions; mConditionExpanded = dashboardData.mConditionExpanded; } Loading @@ -291,16 +263,11 @@ public class DashboardData { return this; } public Builder setConditions(List<Condition> conditions) { public Builder setConditions(List<ConditionalCard> conditions) { this.mConditions = conditions; return this; } public Builder setConditionsV2(List<ConditionalCard> conditions) { this.mConditionsV2 = conditions; return this; } public Builder setSuggestions(List<Suggestion> suggestions) { this.mSuggestions = suggestions; return this; Loading Loading @@ -374,7 +341,7 @@ public class DashboardData { } /** * The main data object in item, usually is a {@link Tile}, {@link Condition} * The main data object in item, usually is a {@link Tile}, {@link ConditionalCard} * object. This object can also be null when the * item is an divider line. Please refer to {@link #buildItemsData()} for * detail usage of the Item. Loading Loading @@ -448,24 +415,17 @@ public class DashboardData { public final CharSequence title; public final int conditionCount; public ConditionHeaderData(List<Condition> conditions, List<ConditionalCard> conditionsV2) { if (conditionsV2 == null) { public ConditionHeaderData(List<ConditionalCard> conditions) { conditionCount = sizeOf(conditions); title = conditionCount > 0 ? conditions.get(0).getTitle() : null; conditionIcons = new ArrayList<>(); for (int i = 0; conditions != null && i < conditions.size(); i++) { final Condition condition = conditions.get(i); conditionIcons.add(condition.getIcon()); if (conditions == null) { return; } } else { conditionCount = sizeOf(conditionsV2); title = conditionCount > 0 ? conditionsV2.get(0).getTitle() : null; conditionIcons = new ArrayList<>(); for (ConditionalCard card : conditionsV2) { for (ConditionalCard card : conditions) { conditionIcons.add(card.getIcon()); } } } } } src/com/android/settings/dashboard/DashboardSummary.java +12 −64 Original line number Diff line number Diff line Loading @@ -37,11 +37,10 @@ import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.core.SettingsBaseActivity.CategoryListener; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; import com.android.settings.homepage.conditional.Condition; import com.android.settings.homepage.conditional.ConditionListener; import com.android.settings.homepage.conditional.ConditionManager; import com.android.settings.homepage.conditional.FocusRecyclerView; import com.android.settings.homepage.conditional.FocusRecyclerView.FocusListener; import com.android.settings.homepage.conditional.ConditionManager; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.ActionBarShadowController; import com.android.settingslib.drawer.CategoryKey; Loading Loading @@ -74,7 +73,6 @@ public class DashboardSummary extends InstrumentedFragment private DashboardAdapter mAdapter; private SummaryLoader mSummaryLoader; private ConditionManager mConditionManager; private com.android.settings.homepage.conditional.v2.ConditionManager mConditionManager2; private LinearLayoutManager mLayoutManager; private SuggestionControllerMixinCompat mSuggestionControllerMixin; private DashboardFeatureProvider mDashboardFeatureProvider; Loading Loading @@ -123,18 +121,9 @@ public class DashboardSummary extends InstrumentedFragment mSummaryLoader = new SummaryLoader(activity, CategoryKey.CATEGORY_HOMEPAGE); if (com.android.settings.homepage.conditional.v2.ConditionManager.isEnabled(activity)) { mConditionManager = null; mConditionManager2 = new com.android.settings.homepage.conditional.v2.ConditionManager( mConditionManager = new ConditionManager( activity, this /* listener */); } else { mConditionManager = ConditionManager.get(activity, false); mConditionManager2 = null; } if (mConditionManager2 == null) { getSettingsLifecycle().addObserver(mConditionManager); } if (savedInstanceState != null) { mIsOnCategoriesChangedCalled = savedInstanceState.getBoolean(STATE_CATEGORIES_CHANGE_CALLED); Loading @@ -157,17 +146,7 @@ public class DashboardSummary extends InstrumentedFragment ((SettingsBaseActivity) getActivity()).addCategoryListener(this); mSummaryLoader.setListening(true); final int metricsCategory = getMetricsCategory(); if (mConditionManager2 == null) { for (Condition c : mConditionManager.getConditions()) { if (c.shouldShow()) { mMetricsFeatureProvider.visible(getContext(), metricsCategory, c.getMetricsConstant()); } } } else { mConditionManager2.startMonitoringStateChange(); } mConditionManager.startMonitoringStateChange(); if (DEBUG_TIMING) { Log.d(TAG, "onResume took " + (System.currentTimeMillis() - startTime) + " ms"); } Loading @@ -179,42 +158,16 @@ public class DashboardSummary extends InstrumentedFragment ((SettingsBaseActivity) getActivity()).remCategoryListener(this); mSummaryLoader.setListening(false); if (mConditionManager2 == null) { for (Condition c : mConditionManager.getConditions()) { if (c.shouldShow()) { mMetricsFeatureProvider.hidden(getContext(), c.getMetricsConstant()); } } } // Unregister condition listeners. if (mConditionManager != null) { mConditionManager.remListener(this); } if (mConditionManager2 != null) { mConditionManager2.stopMonitoringStateChange(); } mConditionManager.stopMonitoringStateChange(); } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { long startTime = System.currentTimeMillis(); if (mConditionManager2 == null) { if (hasWindowFocus) { Log.d(TAG, "Listening for condition changes"); mConditionManager.addListener(this); Log.d(TAG, "conditions refreshed"); mConditionManager.refreshAll(); } else { Log.d(TAG, "Stopped listening for condition changes"); mConditionManager.remListener(this); } } else { // TODO(b/112485407): Register monitoring for condition manager v2. if (hasWindowFocus) { mConditionManager2.startMonitoringStateChange(); mConditionManager.startMonitoringStateChange(); } else { mConditionManager2.stopMonitoringStateChange(); } mConditionManager.stopMonitoringStateChange(); } if (DEBUG_TIMING) { Log.d(TAG, "onWindowFocusChanged took " Loading Loading @@ -248,8 +201,7 @@ public class DashboardSummary extends InstrumentedFragment mDashboard.setListener(this); mDashboard.setItemAnimator(new DashboardItemAnimator()); mAdapter = new DashboardAdapter(getContext(), bundle, mConditionManager == null ? null : mConditionManager.getConditions(), mConditionManager2, mConditionManager, mSuggestionControllerMixin, getSettingsLifecycle()); mDashboard.setAdapter(mAdapter); Loading Loading @@ -290,14 +242,10 @@ public class DashboardSummary extends InstrumentedFragment // constructor when we create the view, the first handling is not necessary. // But, on the subsequent calls we need to handle it because there might be real changes to // conditions. if (mOnConditionsChangedCalled || mConditionManager2 != null) { if (mOnConditionsChangedCalled) { final boolean scrollToTop = mLayoutManager.findFirstCompletelyVisibleItemPosition() <= 1; if (mConditionManager2 == null) { mAdapter.setConditions(mConditionManager.getConditions()); } else { mAdapter.setConditionsV2(mConditionManager2.getDisplayableCards()); } mAdapter.setConditions(mConditionManager.getDisplayableCards()); if (scrollToTop) { mDashboard.scrollToPosition(0); Loading src/com/android/settings/homepage/conditional/AbnormalRingerConditionBase.javadeleted 100644 → 0 +0 −84 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.homepage.conditional; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; import android.provider.Settings; import com.android.settings.R; @Deprecated public abstract class AbnormalRingerConditionBase extends Condition { private final IntentFilter mFilter; protected final AudioManager mAudioManager; private final RingerModeChangeReceiver mReceiver; AbnormalRingerConditionBase(ConditionManager manager) { super(manager); mAudioManager = (AudioManager) mManager.getContext().getSystemService(Context.AUDIO_SERVICE); mReceiver = new RingerModeChangeReceiver(this); mFilter = new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); manager.getContext().registerReceiver(mReceiver, mFilter); } @Override public CharSequence[] getActions() { return new CharSequence[]{ mManager.getContext().getText(R.string.condition_device_muted_action_turn_on_sound) }; } @Override public void onPrimaryClick() { mManager.getContext().startActivity( new Intent(Settings.ACTION_SOUND_SETTINGS) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } @Override public void onActionClick(int index) { mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_NORMAL); mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 1, 0 /* flags */); refreshState(); } static class RingerModeChangeReceiver extends BroadcastReceiver { private final AbnormalRingerConditionBase mCondition; public RingerModeChangeReceiver(AbnormalRingerConditionBase condition) { mCondition = condition; } @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) { mCondition.refreshState(); } } } } Loading
src/com/android/settings/core/FeatureFlags.java +0 −1 Original line number Diff line number Diff line Loading @@ -25,5 +25,4 @@ public class FeatureFlags { public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher"; public static final String DYNAMIC_HOMEPAGE = "settings_dynamic_homepage"; public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid"; public static final String CONDITION_MANAGER_V2 = "settings_condition_manager_v2"; }
src/com/android/settings/dashboard/DashboardAdapter.java +11 −41 Original line number Diff line number Diff line Loading @@ -40,10 +40,9 @@ import com.android.settings.R; import com.android.settings.R.id; 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.homepage.conditional.ConditionManager; import com.android.settings.homepage.conditional.ConditionalCard; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.RoundedHomepageIcon; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; Loading Loading @@ -88,7 +87,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash }; public DashboardAdapter(Context context, Bundle savedInstanceState, List<Condition> conditions, ConditionManager conditionManager, ConditionManager conditionManager, SuggestionControllerMixinCompat suggestionControllerMixin, Lifecycle lifecycle) { DashboardCategory category = null; Loading Loading @@ -116,8 +115,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash } mDashboardData = new DashboardData.Builder() .setConditions(conditions) .setConditionsV2( .setConditions( conditionManager == null ? null : conditionManager.getDisplayableCards()) .setSuggestions(mSuggestionAdapter.getSuggestions()) .setCategory(category) Loading @@ -142,7 +140,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash notifyDashboardDataChanged(prevData); } public void setConditions(List<Condition> conditions) { public void setConditions(List<ConditionalCard> conditions) { final DashboardData prevData = mDashboardData; Log.d(TAG, "adapter setConditions called"); mDashboardData = new DashboardData.Builder(prevData) Loading @@ -151,15 +149,6 @@ 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(); Loading Loading @@ -301,31 +290,12 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash @VisibleForTesting void onBindCondition(final ConditionContainerHolder holder, int position) { 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, final List<ConditionalCard> conditions = (List) mDashboardData.getItemEntityByPosition(position); final ConditionAdapter adapter = new ConditionAdapter( mContext, mConditionManager, conditions, mDashboardData.isConditionExpanded()); holder.data.setAdapter(adapter); } holder.data.setLayoutManager(new LinearLayoutManager(mContext)); } Loading
src/com/android/settings/dashboard/DashboardData.java +22 −62 Original line number Diff line number Diff line Loading @@ -24,8 +24,7 @@ import androidx.annotation.VisibleForTesting; import androidx.recyclerview.widget.DiffUtil; import com.android.settings.R; import com.android.settings.homepage.conditional.Condition; import com.android.settings.homepage.conditional.v2.ConditionalCard; import com.android.settings.homepage.conditional.ConditionalCard; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; Loading Loading @@ -57,15 +56,13 @@ public class DashboardData { private final List<Item> mItems; private final DashboardCategory mCategory; private final List<Condition> mConditions; private final List<ConditionalCard> mConditionsV2; private final List<ConditionalCard> mConditions; private final List<Suggestion> mSuggestions; private final boolean mConditionExpanded; private DashboardData(Builder builder) { mCategory = builder.mCategory; mConditions = builder.mConditions; mConditionsV2 = builder.mConditionsV2; mSuggestions = builder.mSuggestions; mConditionExpanded = builder.mConditionExpanded; mItems = new ArrayList<>(); Loading Loading @@ -106,7 +103,7 @@ public class DashboardData { return mCategory; } public List<Condition> getConditions() { public List<ConditionalCard> getConditions() { return mConditions; } Loading Loading @@ -168,7 +165,8 @@ public class DashboardData { /** * Add item into list when {@paramref add} is true. * * @param item maybe {@link Condition}, {@link Tile}, {@link DashboardCategory} or null * @param item maybe {@link ConditionalCard}, {@link Tile}, {@link DashboardCategory} * or null * @param type type of the item, and value is the layout id * @param stableId The stable id for this item * @param add flag about whether to add item into list Loading @@ -184,11 +182,8 @@ public class DashboardData { * and mIsShowingAll, mConditionExpanded flag. */ private void buildItemsData() { final List<Condition> conditionsV1 = getConditionsToShow(mConditions); final boolean hasConditionsV1 = sizeOf(conditionsV1) > 0; final List<ConditionalCard> conditionsV2 = mConditionsV2; final boolean hasConditionsV2 = sizeOf(conditionsV2) > 0; final boolean hasConditions = hasConditionsV1 || hasConditionsV2; final List<ConditionalCard> conditions = mConditions; final boolean hasConditions = sizeOf(conditions) > 0; final List<Suggestion> suggestions = getSuggestionsToShow(mSuggestions); final boolean hasSuggestions = sizeOf(suggestions) > 0; Loading @@ -203,20 +198,14 @@ public class DashboardData { STABLE_ID_SUGGESTION_CONDITION_DIVIDER, hasSuggestions && hasConditions); /* Condition header. This will be present when there is condition and it is collapsed */ addToItemList(new ConditionHeaderData(conditionsV1, conditionsV2), addToItemList(new ConditionHeaderData(conditions), R.layout.condition_header, STABLE_ID_CONDITION_HEADER, hasConditions && !mConditionExpanded); /* Condition container. This is the card view that contains the list of conditions. * This will be added whenever the condition list is not empty and expanded */ if (hasConditionsV1) { addToItemList(conditionsV1, R.layout.condition_container, STABLE_ID_CONDITION_CONTAINER, hasConditionsV1 && mConditionExpanded); } if (hasConditionsV2) { addToItemList(conditionsV2, R.layout.condition_container, STABLE_ID_CONDITION_CONTAINER, hasConditionsV2 && mConditionExpanded); } addToItemList(conditions, R.layout.condition_container, STABLE_ID_CONDITION_CONTAINER, hasConditions && mConditionExpanded); /* Condition footer. This will be present when there is condition and it is expanded */ addToItemList(null /* item */, R.layout.condition_footer, Loading @@ -236,21 +225,6 @@ public class DashboardData { return list == null ? 0 : list.size(); } private List<Condition> getConditionsToShow(List<Condition> conditions) { if (conditions == null) { return null; } List<Condition> result = new ArrayList<>(); final int size = conditions == null ? 0 : conditions.size(); for (int i = 0; i < size; i++) { final Condition condition = conditions.get(i); if (condition.shouldShow()) { result.add(condition); } } return result; } private List<Suggestion> getSuggestionsToShow(List<Suggestion> suggestions) { if (suggestions == null) { return null; Loading @@ -270,8 +244,7 @@ public class DashboardData { */ public static class Builder { private DashboardCategory mCategory; private List<Condition> mConditions; private List<ConditionalCard> mConditionsV2; private List<ConditionalCard> mConditions; private List<Suggestion> mSuggestions; private boolean mConditionExpanded; Loading @@ -281,7 +254,6 @@ public class DashboardData { public Builder(DashboardData dashboardData) { mCategory = dashboardData.mCategory; mConditions = dashboardData.mConditions; mConditionsV2 = dashboardData.mConditionsV2; mSuggestions = dashboardData.mSuggestions; mConditionExpanded = dashboardData.mConditionExpanded; } Loading @@ -291,16 +263,11 @@ public class DashboardData { return this; } public Builder setConditions(List<Condition> conditions) { public Builder setConditions(List<ConditionalCard> conditions) { this.mConditions = conditions; return this; } public Builder setConditionsV2(List<ConditionalCard> conditions) { this.mConditionsV2 = conditions; return this; } public Builder setSuggestions(List<Suggestion> suggestions) { this.mSuggestions = suggestions; return this; Loading Loading @@ -374,7 +341,7 @@ public class DashboardData { } /** * The main data object in item, usually is a {@link Tile}, {@link Condition} * The main data object in item, usually is a {@link Tile}, {@link ConditionalCard} * object. This object can also be null when the * item is an divider line. Please refer to {@link #buildItemsData()} for * detail usage of the Item. Loading Loading @@ -448,24 +415,17 @@ public class DashboardData { public final CharSequence title; public final int conditionCount; public ConditionHeaderData(List<Condition> conditions, List<ConditionalCard> conditionsV2) { if (conditionsV2 == null) { public ConditionHeaderData(List<ConditionalCard> conditions) { conditionCount = sizeOf(conditions); title = conditionCount > 0 ? conditions.get(0).getTitle() : null; conditionIcons = new ArrayList<>(); for (int i = 0; conditions != null && i < conditions.size(); i++) { final Condition condition = conditions.get(i); conditionIcons.add(condition.getIcon()); if (conditions == null) { return; } } else { conditionCount = sizeOf(conditionsV2); title = conditionCount > 0 ? conditionsV2.get(0).getTitle() : null; conditionIcons = new ArrayList<>(); for (ConditionalCard card : conditionsV2) { for (ConditionalCard card : conditions) { conditionIcons.add(card.getIcon()); } } } } }
src/com/android/settings/dashboard/DashboardSummary.java +12 −64 Original line number Diff line number Diff line Loading @@ -37,11 +37,10 @@ import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.core.SettingsBaseActivity.CategoryListener; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; import com.android.settings.homepage.conditional.Condition; import com.android.settings.homepage.conditional.ConditionListener; import com.android.settings.homepage.conditional.ConditionManager; import com.android.settings.homepage.conditional.FocusRecyclerView; import com.android.settings.homepage.conditional.FocusRecyclerView.FocusListener; import com.android.settings.homepage.conditional.ConditionManager; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.ActionBarShadowController; import com.android.settingslib.drawer.CategoryKey; Loading Loading @@ -74,7 +73,6 @@ public class DashboardSummary extends InstrumentedFragment private DashboardAdapter mAdapter; private SummaryLoader mSummaryLoader; private ConditionManager mConditionManager; private com.android.settings.homepage.conditional.v2.ConditionManager mConditionManager2; private LinearLayoutManager mLayoutManager; private SuggestionControllerMixinCompat mSuggestionControllerMixin; private DashboardFeatureProvider mDashboardFeatureProvider; Loading Loading @@ -123,18 +121,9 @@ public class DashboardSummary extends InstrumentedFragment mSummaryLoader = new SummaryLoader(activity, CategoryKey.CATEGORY_HOMEPAGE); if (com.android.settings.homepage.conditional.v2.ConditionManager.isEnabled(activity)) { mConditionManager = null; mConditionManager2 = new com.android.settings.homepage.conditional.v2.ConditionManager( mConditionManager = new ConditionManager( activity, this /* listener */); } else { mConditionManager = ConditionManager.get(activity, false); mConditionManager2 = null; } if (mConditionManager2 == null) { getSettingsLifecycle().addObserver(mConditionManager); } if (savedInstanceState != null) { mIsOnCategoriesChangedCalled = savedInstanceState.getBoolean(STATE_CATEGORIES_CHANGE_CALLED); Loading @@ -157,17 +146,7 @@ public class DashboardSummary extends InstrumentedFragment ((SettingsBaseActivity) getActivity()).addCategoryListener(this); mSummaryLoader.setListening(true); final int metricsCategory = getMetricsCategory(); if (mConditionManager2 == null) { for (Condition c : mConditionManager.getConditions()) { if (c.shouldShow()) { mMetricsFeatureProvider.visible(getContext(), metricsCategory, c.getMetricsConstant()); } } } else { mConditionManager2.startMonitoringStateChange(); } mConditionManager.startMonitoringStateChange(); if (DEBUG_TIMING) { Log.d(TAG, "onResume took " + (System.currentTimeMillis() - startTime) + " ms"); } Loading @@ -179,42 +158,16 @@ public class DashboardSummary extends InstrumentedFragment ((SettingsBaseActivity) getActivity()).remCategoryListener(this); mSummaryLoader.setListening(false); if (mConditionManager2 == null) { for (Condition c : mConditionManager.getConditions()) { if (c.shouldShow()) { mMetricsFeatureProvider.hidden(getContext(), c.getMetricsConstant()); } } } // Unregister condition listeners. if (mConditionManager != null) { mConditionManager.remListener(this); } if (mConditionManager2 != null) { mConditionManager2.stopMonitoringStateChange(); } mConditionManager.stopMonitoringStateChange(); } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { long startTime = System.currentTimeMillis(); if (mConditionManager2 == null) { if (hasWindowFocus) { Log.d(TAG, "Listening for condition changes"); mConditionManager.addListener(this); Log.d(TAG, "conditions refreshed"); mConditionManager.refreshAll(); } else { Log.d(TAG, "Stopped listening for condition changes"); mConditionManager.remListener(this); } } else { // TODO(b/112485407): Register monitoring for condition manager v2. if (hasWindowFocus) { mConditionManager2.startMonitoringStateChange(); mConditionManager.startMonitoringStateChange(); } else { mConditionManager2.stopMonitoringStateChange(); } mConditionManager.stopMonitoringStateChange(); } if (DEBUG_TIMING) { Log.d(TAG, "onWindowFocusChanged took " Loading Loading @@ -248,8 +201,7 @@ public class DashboardSummary extends InstrumentedFragment mDashboard.setListener(this); mDashboard.setItemAnimator(new DashboardItemAnimator()); mAdapter = new DashboardAdapter(getContext(), bundle, mConditionManager == null ? null : mConditionManager.getConditions(), mConditionManager2, mConditionManager, mSuggestionControllerMixin, getSettingsLifecycle()); mDashboard.setAdapter(mAdapter); Loading Loading @@ -290,14 +242,10 @@ public class DashboardSummary extends InstrumentedFragment // constructor when we create the view, the first handling is not necessary. // But, on the subsequent calls we need to handle it because there might be real changes to // conditions. if (mOnConditionsChangedCalled || mConditionManager2 != null) { if (mOnConditionsChangedCalled) { final boolean scrollToTop = mLayoutManager.findFirstCompletelyVisibleItemPosition() <= 1; if (mConditionManager2 == null) { mAdapter.setConditions(mConditionManager.getConditions()); } else { mAdapter.setConditionsV2(mConditionManager2.getDisplayableCards()); } mAdapter.setConditions(mConditionManager.getDisplayableCards()); if (scrollToTop) { mDashboard.scrollToPosition(0); Loading
src/com/android/settings/homepage/conditional/AbnormalRingerConditionBase.javadeleted 100644 → 0 +0 −84 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.homepage.conditional; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; import android.provider.Settings; import com.android.settings.R; @Deprecated public abstract class AbnormalRingerConditionBase extends Condition { private final IntentFilter mFilter; protected final AudioManager mAudioManager; private final RingerModeChangeReceiver mReceiver; AbnormalRingerConditionBase(ConditionManager manager) { super(manager); mAudioManager = (AudioManager) mManager.getContext().getSystemService(Context.AUDIO_SERVICE); mReceiver = new RingerModeChangeReceiver(this); mFilter = new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); manager.getContext().registerReceiver(mReceiver, mFilter); } @Override public CharSequence[] getActions() { return new CharSequence[]{ mManager.getContext().getText(R.string.condition_device_muted_action_turn_on_sound) }; } @Override public void onPrimaryClick() { mManager.getContext().startActivity( new Intent(Settings.ACTION_SOUND_SETTINGS) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } @Override public void onActionClick(int index) { mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_NORMAL); mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 1, 0 /* flags */); refreshState(); } static class RingerModeChangeReceiver extends BroadcastReceiver { private final AbnormalRingerConditionBase mCondition; public RingerModeChangeReceiver(AbnormalRingerConditionBase condition) { mCondition = condition; } @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) { mCondition.refreshState(); } } } }