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

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

2/N Remove SBIconCtrl and CommandQueue from QSBarHeader.

Remove StatusBarIconController and CommandQueue from QuickStatusBarHeader.
Relevant code has been moved to the controller.

Bug: 168904199
Test: atest SystemUITests
Change-Id: Ia310cf87f3da2312007dca295aa281516febe9a1
parent cd7aeb16
Loading
Loading
Loading
Loading
+13 −28
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import android.widget.Space;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
@@ -65,11 +64,8 @@ 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.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
import com.android.systemui.statusbar.phone.StatusBarWindowView;
import com.android.systemui.statusbar.phone.StatusIconContainer;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.ZenModeController;

@@ -91,18 +87,15 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
    public static final int MAX_TOOLTIP_SHOWN_COUNT = 2;

    private final ZenModeController mZenController;
    private final StatusBarIconController mStatusBarIconController;

    private boolean mExpanded;
    private boolean mQsDisabled;

    protected QuickQSPanel mHeaderQsPanel;
    private TintedIconManager mIconManager;
    private TouchAnimator mStatusIconsAlphaAnimator;
    private TouchAnimator mHeaderTextContainerAlphaAnimator;
    private TouchAnimator mPrivacyChipAlphaAnimator;
    private DualToneHandler mDualToneHandler;
    private final CommandQueue mCommandQueue;

    private View mSystemIconsView;
    private View mQuickQsStatusIcons;
@@ -142,16 +135,13 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn

    @Inject
    public QuickStatusBarHeader(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
            ZenModeController zenModeController, StatusBarIconController statusBarIconController,
            PrivacyItemController privacyItemController, CommandQueue commandQueue,
            ZenModeController zenModeController, PrivacyItemController privacyItemController,
            DemoModeController demoModeController, UserTracker userTracker) {
        super(context, attrs);
        mZenController = zenModeController;
        mStatusBarIconController = statusBarIconController;
        mPrivacyItemController = privacyItemController;
        mDualToneHandler = new DualToneHandler(
                new ContextThemeWrapper(context, R.style.QSHeaderTheme));
        mCommandQueue = commandQueue;
        mDemoModeController = demoModeController;
        mUserTracker = userTracker;
    }
@@ -163,11 +153,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
        mHeaderQsPanel = findViewById(R.id.quick_qs_panel);
        mSystemIconsView = findViewById(R.id.quick_status_bar_system_icons);
        mQuickQsStatusIcons = findViewById(R.id.quick_qs_status_icons);
        StatusIconContainer iconContainer = findViewById(R.id.statusIcons);
        // Ignore privacy icons because they show in the space above QQS
        iconContainer.addIgnoredSlots(getIgnoredIconSlots());
        iconContainer.setShouldRestrictIcons(false);
        mIconManager = new TintedIconManager(iconContainer, mCommandQueue);

        // Views corresponding to the header info section (e.g. ringer and next alarm).
        mHeaderTextContainerView = findViewById(R.id.header_text_container);
@@ -183,19 +168,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
        updateResources();

        Rect tintArea = new Rect(0, 0, 0, 0);
        int colorForeground = Utils.getColorAttrDefaultColor(getContext(),
                android.R.attr.colorForeground);
        float intensity = getColorIntensity(colorForeground);
        int fillColor = mDualToneHandler.getSingleColor(intensity);

        // Set light text on the header icons because they will always be on a black background
        applyDarkness(R.id.clock, tintArea, 0, DarkIconDispatcher.DEFAULT_ICON_TINT);

        // Set the correct tint for the status icons so they contrast
        mIconManager.setTint(fillColor);
        mNextAlarmIcon.setImageTintList(ColorStateList.valueOf(fillColor));
        mRingerModeIcon.setImageTintList(ColorStateList.valueOf(fillColor));

        mClockView = findViewById(R.id.clock);
        mDemoModeReceiver = new ClockDemoModeReceiver(mClockView);
        mSpace = findViewById(R.id.space);
@@ -214,6 +189,18 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
        mMicCameraIndicatorsEnabled = mPrivacyItemController.getMicCameraAvailable();
    }

    void onAttach(TintedIconManager iconManager) {
        int colorForeground = Utils.getColorAttrDefaultColor(getContext(),
                android.R.attr.colorForeground);
        float intensity = getColorIntensity(colorForeground);
        int fillColor = mDualToneHandler.getSingleColor(intensity);

        // Set the correct tint for the status icons so they contrast
        iconManager.setTint(fillColor);
        mNextAlarmIcon.setImageTintList(ColorStateList.valueOf(fillColor));
        mRingerModeIcon.setImageTintList(ColorStateList.valueOf(fillColor));
    }

    public QuickQSPanel getHeaderQsPanel() {
        return mHeaderQsPanel;
    }
@@ -436,7 +423,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        mStatusBarIconController.addIconGroup(mIconManager);
        mDemoModeController.addCallback(mDemoModeReceiver);
    }

@@ -511,7 +497,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
    @Override
    @VisibleForTesting
    public void onDetachedFromWindow() {
        mStatusBarIconController.removeIconGroup(mIconManager);
        mDemoModeController.removeCallback(mDemoModeReceiver);
        super.onDetachedFromWindow();
    }
+30 −3
Original line number Diff line number Diff line
@@ -41,6 +41,8 @@ import com.android.systemui.privacy.PrivacyChipEvent;
import com.android.systemui.privacy.PrivacyItem;
import com.android.systemui.privacy.PrivacyItemController;
import com.android.systemui.qs.carrier.QSCarrierGroupController;
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;
import com.android.systemui.statusbar.policy.NextAlarmController;
@@ -74,6 +76,10 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
    private final View mNextAlarmContainer;
    private final View mRingerContainer;
    private final QSTileHost mQSTileHost;
    private final StatusBarIconController mStatusBarIconController;
    private final CommandQueue mCommandQueue;
    private final StatusIconContainer mIconContainer;
    private final StatusBarIconController.TintedIconManager mIconManager;

    private boolean mListening;
    private AlarmClockInfo mNextAlarm;
@@ -175,7 +181,8 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
            ZenModeController zenModeController, NextAlarmController nextAlarmController,
            PrivacyItemController privacyItemController, RingerModeTracker ringerModeTracker,
            ActivityStarter activityStarter, UiEventLogger uiEventLogger,
            QSTileHost qsTileHost,
            QSTileHost qsTileHost, StatusBarIconController statusBarIconController,
            CommandQueue commandQueue,
            QSCarrierGroupController.Builder qsCarrierGroupControllerBuilder) {
        super(view);
        mZenModeController = zenModeController;
@@ -185,17 +192,23 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        mActivityStarter = activityStarter;
        mUiEventLogger = uiEventLogger;
        mQSTileHost = qsTileHost;
        mStatusBarIconController = statusBarIconController;
        mCommandQueue = commandQueue;
        mLifecycle = new LifecycleRegistry(mLifecycleOwner);

        mQSCarrierGroupController = qsCarrierGroupControllerBuilder
                .setQSCarrierGroup(mView.findViewById(R.id.carrier_group))
                .build();


        mPrivacyChip = mView.findViewById(R.id.privacy_chip);
        mHeaderQsPanel = mView.findViewById(R.id.quick_qs_panel);
        mNextAlarmContainer = mView.findViewById(R.id.alarm_container);
        mClockView = mView.findViewById(R.id.clock);
        mRingerContainer = mView.findViewById(R.id.ringer_container);
        mIconContainer = mView.findViewById(R.id.statusIcons);

        mIconManager = new StatusBarIconController.TintedIconManager(mIconContainer, mCommandQueue);
    }

    @Override
@@ -209,7 +222,15 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        mNextAlarmContainer.setOnClickListener(mOnClickListener);
        mRingerContainer.setOnClickListener(mOnClickListener);
        mPrivacyChip.setOnClickListener(mOnClickListener);

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

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

        mView.onAttach(mIconManager);
    }

    @Override
@@ -219,6 +240,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        mNextAlarmContainer.setOnClickListener(null);
        mRingerContainer.setOnClickListener(null);
        mPrivacyChip.setOnClickListener(null);
        mStatusBarIconController.removeIconGroup(mIconManager);
        setListening(false);
    }

@@ -274,6 +296,8 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        private final ActivityStarter mActivityStarter;
        private final UiEventLogger mUiEventLogger;
        private final QSTileHost mQsTileHost;
        private final StatusBarIconController mStatusBarIconController;
        private final CommandQueue mCommandQueue;
        private final QSCarrierGroupController.Builder mQSCarrierGroupControllerBuilder;
        private QuickStatusBarHeader mView;

@@ -281,6 +305,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        Builder(ZenModeController zenModeController, NextAlarmController nextAlarmController,
                PrivacyItemController privacyItemController, RingerModeTracker ringerModeTracker,
                ActivityStarter activityStarter, UiEventLogger uiEventLogger, QSTileHost qsTileHost,
                StatusBarIconController statusBarIconController, CommandQueue commandQueue,
                QSCarrierGroupController.Builder qsCarrierGroupControllerBuilder) {
            mZenModeController = zenModeController;
            mNextAlarmController = nextAlarmController;
@@ -289,6 +314,8 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
            mActivityStarter = activityStarter;
            mUiEventLogger = uiEventLogger;
            mQsTileHost = qsTileHost;
            mStatusBarIconController = statusBarIconController;
            mCommandQueue = commandQueue;
            mQSCarrierGroupControllerBuilder = qsCarrierGroupControllerBuilder;
        }

@@ -301,8 +328,8 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
        QuickStatusBarHeaderController build() {
            return new QuickStatusBarHeaderController(mView, mZenModeController,
                    mNextAlarmController, mPrivacyItemController, mRingerModeTracker,
                    mActivityStarter, mUiEventLogger, mQsTileHost,
                    mQSCarrierGroupControllerBuilder);
                    mActivityStarter, mUiEventLogger, mQsTileHost, mStatusBarIconController,
                    mCommandQueue, mQSCarrierGroupControllerBuilder);
        }
    }
}
+2 −4
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.CarrierText;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.SysuiBaseFragmentTest;
import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -116,13 +115,12 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {

        qs.setListening(false);
        processAllMessages();
        host.destroy();
        processAllMessages();

        // Manually push header through detach so it can handle standard cleanup it does on
        // removed from window.
        ((QuickStatusBarHeader) qs.getView().findViewById(R.id.header)).onDetachedFromWindow();

        host.destroy();
        processAllMessages();
    }

    @Test