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

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

Merge "Add a block list to IconManager" into sc-dev

parents 0cc4fd9d a725858e
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import com.android.systemui.privacy.logging.PrivacyLogger;
import com.android.systemui.qs.carrier.QSCarrierGroupController;
import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusIconContainer;
import com.android.systemui.statusbar.policy.Clock;
@@ -86,7 +85,6 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
    private final View mRingerContainer;
    private final QSTileHost mQSTileHost;
    private final StatusBarIconController mStatusBarIconController;
    private final CommandQueue mCommandQueue;
    private final DemoModeController mDemoModeController;
    private final UserTracker mUserTracker;
    private final StatusIconContainer mIconContainer;
@@ -204,7 +202,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
            PrivacyItemController privacyItemController, RingerModeTracker ringerModeTracker,
            ActivityStarter activityStarter, UiEventLogger uiEventLogger,
            QSTileHost qsTileHost, StatusBarIconController statusBarIconController,
            CommandQueue commandQueue, DemoModeController demoModeController,
            DemoModeController demoModeController,
            UserTracker userTracker, QuickQSPanelController quickQSPanelController,
            QSCarrierGroupController.Builder qsCarrierGroupControllerBuilder,
            PrivacyLogger privacyLogger,
@@ -219,7 +217,6 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        mUiEventLogger = uiEventLogger;
        mQSTileHost = qsTileHost;
        mStatusBarIconController = statusBarIconController;
        mCommandQueue = commandQueue;
        mDemoModeController = demoModeController;
        mUserTracker = userTracker;
        mLifecycle = new LifecycleRegistry(mLifecycleOwner);
@@ -238,7 +235,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        mRingerContainer = mView.findViewById(R.id.ringer_container);
        mIconContainer = mView.findViewById(R.id.statusIcons);

        mIconManager = new StatusBarIconController.TintedIconManager(mIconContainer, mCommandQueue);
        mIconManager = new StatusBarIconController.TintedIconManager(mIconContainer);
        mDemoModeReceiver = new ClockDemoModeReceiver(mClockView);
        mColorExtractor = colorExtractor;
        mOnColorsChangedListener = (extractor, which) -> {
+10 −2
Original line number Diff line number Diff line
@@ -42,6 +42,9 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;

import java.util.ArrayList;
import java.util.List;

/**
 * Contains the collapsed status bar and handles hiding/showing based on disable flags
 * and keyguard state. Also manages lifecycle to make sure the views it contains are being
@@ -70,6 +73,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
    private View mOperatorNameFrame;
    private CommandQueue mCommandQueue;

    private List<String> mBlockedIcons = new ArrayList<>();

    private SignalCallback mSignalCallback = new SignalCallback() {
        @Override
        public void setIsAirplaneMode(NetworkController.IconState icon) {
@@ -101,9 +106,12 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
            mStatusBar.restoreHierarchyState(
                    savedInstanceState.getSparseParcelableArray(EXTRA_PANEL_STATE));
        }
        mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons),
                Dependency.get(CommandQueue.class));
        mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons));
        mDarkIconManager.setShouldLog(true);
        mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_volume));
        mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_alarm_clock));
        mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_call_strength));
        mDarkIconManager.setBlockList(mBlockedIcons);
        Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager);
        mSystemIconArea = mStatusBar.findViewById(R.id.system_icon_area);
        mClockView = mStatusBar.findViewById(R.id.clock);
+14 −3
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
@@ -59,6 +58,8 @@ import com.android.systemui.statusbar.policy.UserInfoControllerImpl;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * The header group on Keyguard.
@@ -89,6 +90,7 @@ public class KeyguardStatusBarView extends RelativeLayout
    private int mSystemIconsBaseMargin;
    private View mSystemIconsContainer;
    private TintedIconManager mIconManager;
    private List<String> mBlockedIcons = new ArrayList<>();

    private View mCutoutSpace;
    private ViewGroup mStatusIconArea;
@@ -121,6 +123,7 @@ public class KeyguardStatusBarView extends RelativeLayout
        mStatusIconContainer = findViewById(R.id.statusIcons);

        loadDimens();
        loadBlockList();
        mBatteryController = Dependency.get(BatteryController.class);
    }

@@ -181,6 +184,14 @@ public class KeyguardStatusBarView extends RelativeLayout
                R.dimen.rounded_corner_content_padding);
    }

    // Set hidden status bar items
    private void loadBlockList() {
        Resources r = getResources();
        mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_volume));
        mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_alarm_clock));
        mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_call_strength));
    }

    private void updateVisibilities() {
        if (mMultiUserAvatar.getParent() != mStatusIconArea
                && !mKeyguardUserSwitcherEnabled) {
@@ -336,8 +347,8 @@ public class KeyguardStatusBarView extends RelativeLayout
        userInfoController.addCallback(this);
        userInfoController.reloadUserInfo();
        Dependency.get(ConfigurationController.class).addCallback(this);
        mIconManager = new TintedIconManager(findViewById(R.id.statusIcons),
                Dependency.get(CommandQueue.class));
        mIconManager = new TintedIconManager(findViewById(R.id.statusIcons));
        mIconManager.setBlockList(mBlockedIcons);
        Dependency.get(StatusBarIconController.class).addIconGroup(mIconManager);
        onThemeChanged();
    }
+45 −19
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_ICON
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_MOBILE;
import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_WIFI;

import android.annotation.Nullable;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
@@ -37,7 +38,6 @@ import com.android.systemui.R;
import com.android.systemui.demomode.DemoModeCommandReceiver;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.StatusBarMobileView;
import com.android.systemui.statusbar.StatusBarWifiView;
@@ -46,6 +46,7 @@ import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.CallIndicatorI
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;

import java.util.ArrayList;
import java.util.List;

public interface StatusBarIconController {
@@ -54,15 +55,22 @@ public interface StatusBarIconController {
     * When an icon is added with TAG_PRIMARY, it will be treated as the primary icon
     * in that slot and not added as a sub slot.
     */
    public static final int TAG_PRIMARY = 0;

    public void addIconGroup(IconManager iconManager);
    public void removeIconGroup(IconManager iconManager);
    public void setExternalIcon(String slot);
    public void setIcon(String slot, int resourceId, CharSequence contentDescription);
    public void setIcon(String slot, StatusBarIcon icon);
    public void setSignalIcon(String slot, WifiIconState state);
    public void setMobileIcons(String slot, List<MobileIconState> states);
    int TAG_PRIMARY = 0;

    /** */
    void addIconGroup(IconManager iconManager);
    /** */
    void removeIconGroup(IconManager iconManager);
    /** */
    void setExternalIcon(String slot);
    /** */
    void setIcon(String slot, int resourceId, CharSequence contentDescription);
    /** */
    void setIcon(String slot, StatusBarIcon icon);
    /** */
    void setSignalIcon(String slot, WifiIconState state);
    /** */
    void setMobileIcons(String slot, List<MobileIconState> states);
    /**
     * Display the no calling & SMS icons.
     */
@@ -85,8 +93,9 @@ public interface StatusBarIconController {
     * If you don't know what to pass for `tag`, either remove all icons for slot, or use
     * TAG_PRIMARY to refer to the first icon at a given slot.
     */
    public void removeIcon(String slot, int tag);
    public void removeAllIconsForSlot(String slot);
    void removeIcon(String slot, int tag);
    /** */
    void removeAllIconsForSlot(String slot);

    // TODO: See if we can rename this tunable name.
    String ICON_HIDE_LIST = "icon_blacklist";
@@ -108,12 +117,12 @@ public interface StatusBarIconController {
    /**
     * Version of ViewGroup that observes state from the DarkIconDispatcher.
     */
    public static class DarkIconManager extends IconManager {
    class DarkIconManager extends IconManager {
        private final DarkIconDispatcher mDarkIconDispatcher;
        private int mIconHPadding;

        public DarkIconManager(LinearLayout linearLayout, CommandQueue commandQueue) {
            super(linearLayout, commandQueue);
        public DarkIconManager(LinearLayout linearLayout) {
            super(linearLayout);
            mIconHPadding = mContext.getResources().getDimensionPixelSize(
                    R.dimen.status_bar_icon_padding);
            mDarkIconDispatcher = Dependency.get(DarkIconDispatcher.class);
@@ -169,11 +178,12 @@ public interface StatusBarIconController {
        }
    }

    public static class TintedIconManager extends IconManager {
    /** */
    class TintedIconManager extends IconManager {
        private int mColor;

        public TintedIconManager(ViewGroup group, CommandQueue commandQueue) {
            super(group, commandQueue);
        public TintedIconManager(ViewGroup group) {
            super(group);
        }

        @Override
@@ -219,7 +229,9 @@ public interface StatusBarIconController {
        private boolean mIsInDemoMode;
        protected DemoStatusIcons mDemoStatusIcons;

        public IconManager(ViewGroup group, CommandQueue commandQueue) {
        protected ArrayList<String> mBlockList = new ArrayList<>();

        public IconManager(ViewGroup group) {
            mGroup = group;
            mContext = group.getContext();
            mIconSize = mContext.getResources().getDimensionPixelSize(
@@ -234,6 +246,15 @@ public interface StatusBarIconController {
            mDemoable = demoable;
        }

        public void setBlockList(@Nullable List<String> blockList) {
            mBlockList.clear();
            if (blockList == null || blockList.isEmpty()) {
                return;
            }

            mBlockList.addAll(blockList);
        }

        public void setShouldLog(boolean should) {
            mShouldLog = should;
        }
@@ -249,6 +270,11 @@ public interface StatusBarIconController {

        protected StatusIconDisplayable addHolder(int index, String slot, boolean blocked,
                StatusBarIconHolder holder) {
            // This is a little hacky, and probably regrettable, but just set `blocked` on any icon
            // that is in our blocked list, then we'll never see it
            if (mBlockList.contains(slot)) {
                blocked = true;
            }
            switch (holder.getType()) {
                case TYPE_ICON:
                    return addIcon(index, slot, blocked, holder.getIcon());
+19 −1
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu

    private Context mContext;

    /** */
    @Inject
    public StatusBarIconControllerImpl(
            Context context,
@@ -84,6 +85,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        demoModeController.addCallback(this);
    }

    /** */
    @Override
    public void addIconGroup(IconManager group) {
        mIconGroups.add(group);
@@ -101,12 +103,14 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        }
    }

    /** */
    @Override
    public void removeIconGroup(IconManager group) {
        group.destroy();
        mIconGroups.remove(group);
    }

    /** */
    @Override
    public void onTuningChanged(String key, String newValue) {
        if (!ICON_HIDE_LIST.equals(key)) {
@@ -149,6 +153,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        mIconGroups.forEach(l -> l.onIconAdded(viewIndex, slot, hidden, holder));
    }

    /** */
    @Override
    public void setIcon(String slot, int resourceId, CharSequence contentDescription) {
        int index = getSlotIndex(slot);
@@ -290,8 +295,9 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
     * For backwards compatibility, in the event that someone gives us a slot and a status bar icon
     */
    private void setIcon(int index, StatusBarIcon icon) {
        String slot = getSlotName(index);
        if (icon == null) {
            removeAllIconsForSlot(getSlotName(index));
            removeAllIconsForSlot(slot);
            return;
        }

@@ -299,6 +305,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        setIcon(index, holder);
    }

    /** */
    @Override
    public void setIcon(int index, @NonNull StatusBarIconHolder holder) {
        boolean isNew = getIcon(index, holder.getTag()) == null;
@@ -328,6 +335,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        handleSet(index, holder);
    }

    /** */
    @Override
    public void setIconAccessibilityLiveRegion(String slotName, int accessibilityLiveRegion) {
        Slot slot = getSlot(slotName);
@@ -344,15 +352,18 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        }
    }

    /** */
    public void removeIcon(String slot) {
        removeAllIconsForSlot(slot);
    }

    /** */
    @Override
    public void removeIcon(String slot, int tag) {
        removeIcon(getSlotIndex(slot), tag);
    }

    /** */
    @Override
    public void removeAllIconsForSlot(String slotName) {
        Slot slot = getSlot(slotName);
@@ -369,6 +380,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        }
    }

    /** */
    @Override
    public void removeIcon(int index, int tag) {
        if (getIcon(index, tag) == null) {
@@ -384,6 +396,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        mIconGroups.forEach(l -> l.onSetIconHolder(viewIndex, holder));
    }

    /** */
    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println(TAG + " state:");
@@ -402,6 +415,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        super.dump(pw);
    }

    /** */
    @Override
    public void onDemoModeStarted() {
        for (IconManager manager : mIconGroups) {
@@ -411,6 +425,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        }
    }

    /** */
    @Override
    public void onDemoModeFinished() {
        for (IconManager manager : mIconGroups) {
@@ -420,6 +435,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        }
    }

    /** */
    @Override
    public void dispatchDemoCommand(String command, Bundle args) {
        for (IconManager manager : mIconGroups) {
@@ -429,6 +445,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        }
    }

    /** */
    @Override
    public List<String> demoCommands() {
        List<String> s = new ArrayList<>();
@@ -436,6 +453,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
        return s;
    }

    /** */
    @Override
    public void onDensityOrFontScaleChanged() {
        loadDimens();
Loading