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

Commit dbd75e92 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

3/N Move PrivacyItemController out of QSBarHeader.

Move PrivacyItemController out of QuickStatusBarHeader and
into its controller.

Change-Id: Ibdc24912fd333d80ab13dfd5df12ebc27d68353f
Test: atest SystemUITests
parent df721fcc
Loading
Loading
Loading
Loading
+2 −30
Original line number Diff line number Diff line
@@ -61,7 +61,6 @@ import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.privacy.OngoingPrivacyChip;
import com.android.systemui.privacy.PrivacyItemController;
import com.android.systemui.qs.QSDetail.Callback;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
@@ -69,8 +68,6 @@ import com.android.systemui.statusbar.phone.StatusBarWindowView;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.ZenModeController;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;

@@ -119,7 +116,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
    private boolean mAllIndicatorsEnabled;
    private boolean mMicCameraIndicatorsEnabled;

    private PrivacyItemController mPrivacyItemController;
    // Used for RingerModeTracker
    private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this);

@@ -135,11 +131,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn

    @Inject
    public QuickStatusBarHeader(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
            ZenModeController zenModeController, PrivacyItemController privacyItemController,
            DemoModeController demoModeController, UserTracker userTracker) {
            ZenModeController zenModeController, DemoModeController demoModeController,
            UserTracker userTracker) {
        super(context, attrs);
        mZenController = zenModeController;
        mPrivacyItemController = privacyItemController;
        mDualToneHandler = new DualToneHandler(
                new ContextThemeWrapper(context, R.style.QSHeaderTheme));
        mDemoModeController = demoModeController;
@@ -184,9 +179,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
        mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE);
        mRingerModeTextView.setSelected(true);
        mNextAlarmTextView.setSelected(true);

        mAllIndicatorsEnabled = mPrivacyItemController.getAllIndicatorsAvailable();
        mMicCameraIndicatorsEnabled = mPrivacyItemController.getMicCameraAvailable();
    }

    void onAttach(TintedIconManager iconManager) {
@@ -205,22 +197,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
        return mHeaderQsPanel;
    }

    List<String> getIgnoredIconSlots() {
        ArrayList<String> ignored = new ArrayList<>();
        if (getChipEnabled()) {
            ignored.add(mContext.getResources().getString(
                    com.android.internal.R.string.status_bar_camera));
            ignored.add(mContext.getResources().getString(
                    com.android.internal.R.string.status_bar_microphone));
            if (mAllIndicatorsEnabled) {
                ignored.add(mContext.getResources().getString(
                        com.android.internal.R.string.status_bar_location));
            }
        }

        return ignored;
    }

    void updateStatusText(int ringerMode, AlarmClockInfo nextAlarm) {
        boolean changed = updateRingerStatus(ringerMode) || updateAlarmStatus(nextAlarm);

@@ -579,10 +555,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
        }
    }

    boolean getChipEnabled() {
        return mMicCameraIndicatorsEnabled || mAllIndicatorsEnabled;
    }

    private static class ClockDemoModeReceiver implements DemoMode {
        private Clock mClockView;

+28 −3
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import com.android.systemui.statusbar.policy.ZenModeController.Callback;
import com.android.systemui.util.RingerModeTracker;
import com.android.systemui.util.ViewController;

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

import javax.inject.Inject;
@@ -141,7 +142,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader

        private void update() {
            StatusIconContainer iconContainer = mView.requireViewById(R.id.statusIcons);
            iconContainer.setIgnoredSlots(mView.getIgnoredIconSlots());
            iconContainer.setIgnoredSlots(getIgnoredIconSlots());
            setChipVisibility(!mPrivacyChip.getPrivacyList().isEmpty());
        }
    };
@@ -224,10 +225,13 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        mPrivacyChip.setOnClickListener(mOnClickListener);

        // Ignore privacy icons because they show in the space above QQS
        mIconContainer.addIgnoredSlots(mView.getIgnoredIconSlots());
        mIconContainer.addIgnoredSlots(getIgnoredIconSlots());
        mIconContainer.setShouldRestrictIcons(false);
        mStatusBarIconController.addIconGroup(mIconManager);

        mAllIndicatorsEnabled = mPrivacyItemController.getAllIndicatorsAvailable();
        mMicCameraIndicatorsEnabled = mPrivacyItemController.getMicCameraAvailable();

        setChipVisibility(mPrivacyChip.getVisibility() == View.VISIBLE);

        mView.onAttach(mIconManager);
@@ -275,7 +279,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
    }

    private void setChipVisibility(boolean chipVisible) {
        if (chipVisible && mView.getChipEnabled()) {
        if (chipVisible && getChipEnabled()) {
            mPrivacyChip.setVisibility(View.VISIBLE);
            // Makes sure that the chip is logged as viewed at most once each time QS is opened
            // mListening makes sure that the callback didn't return after the user closed QS
@@ -288,6 +292,27 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        }
    }

    private List<String> getIgnoredIconSlots() {
        ArrayList<String> ignored = new ArrayList<>();
        if (getChipEnabled()) {
            ignored.add(mView.getResources().getString(
                    com.android.internal.R.string.status_bar_camera));
            ignored.add(mView.getResources().getString(
                    com.android.internal.R.string.status_bar_microphone));
            if (mAllIndicatorsEnabled) {
                ignored.add(mView.getResources().getString(
                        com.android.internal.R.string.status_bar_location));
            }
        }

        return ignored;
    }


    private boolean getChipEnabled() {
        return mMicCameraIndicatorsEnabled || mAllIndicatorsEnabled;
    }

    static class Builder {
        private final ZenModeController mZenModeController;
        private final NextAlarmController mNextAlarmController;