Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68e9d615 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove condition manager v1 code."

parents 2061a110 a4b14bd9
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -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";
}
+11 −41
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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)
@@ -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)
@@ -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();
@@ -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));
    }

+22 −62
Original line number Diff line number Diff line
@@ -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;

@@ -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<>();
@@ -106,7 +103,7 @@ public class DashboardData {
        return mCategory;
    }

    public List<Condition> getConditions() {
    public List<ConditionalCard> getConditions() {
        return mConditions;
    }

@@ -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
@@ -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;
@@ -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,
@@ -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;
@@ -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;

@@ -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;
        }
@@ -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;
@@ -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.
@@ -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());
            }
        }
    }
    }

}
+12 −64
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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);
@@ -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");
        }
@@ -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 "
@@ -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);
@@ -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);
+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