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

Commit 8ecfa7c3 authored by Dave Mankoff's avatar Dave Mankoff Committed by Android (Google) Code Review
Browse files

Merge "Stop sharing the QSPanel outside of its Fragment."

parents 8c452a24 80d0a3b7
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 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.systemui.qs;

import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.qs.DetailAdapter;

import javax.inject.Inject;

/**
 * Proxy class for talking with the QSPanel and showing custom content within it.
 */
@SysUISingleton
public class QSDetailDisplayer {
    private QSPanelController mQsPanelController;

    @Inject
    public QSDetailDisplayer() {
    }

    public void setQsPanelController(QSPanelController qsPanelController) {
        mQsPanelController = qsPanelController;
    }

    /** Show the supplied DetailAdapter in the Quick Settings. */
    public void showDetailAdapter(DetailAdapter detailAdapter, int x, int y) {
        if (mQsPanelController != null) {
            mQsPanelController.showDetailDapater(detailAdapter, x, y);
        }
    }
}
+0 −12
Original line number Diff line number Diff line
@@ -17,22 +17,10 @@ package com.android.systemui.qs;

import android.view.View;

import androidx.annotation.Nullable;

/**
 * The bottom footer of the quick settings panel.
 */
public interface QSFooter {
    /**
     * Sets the given {@link QSPanel} to be the one that will display the quick settings.
     */
    void setQSPanel(@Nullable QSPanel panel);

    /**
     * Sets the given {@link QuickQSPanel} to be the one associated with quick settings.
     */
    default void setQQSPanel(@Nullable QuickQSPanel panel) {};

    /**
     * Sets whether or not the footer should be visible.
     *
+1 −19
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ public class QSFooterView extends FrameLayout {
    private boolean mShouldShowBuildText;

    private boolean mQsDisabled;
    private QuickQSPanel mQuickQsPanel;

    private boolean mExpanded;

@@ -115,8 +114,6 @@ public class QSFooterView extends FrameLayout {

        updateResources();

        addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight,
                oldBottom) -> updateAnimator(right - left));
        setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
        setBuildText();
    }
@@ -139,9 +136,7 @@ public class QSFooterView extends FrameLayout {
        }
    }

    private void updateAnimator(int width) {
        int numTiles = mQuickQsPanel != null ? mQuickQsPanel.getNumQuickTiles()
                : QuickQSPanel.getDefaultMaxTiles();
    void updateAnimator(int width, int numTiles) {
        int size = mContext.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size)
                - mContext.getResources().getDimensionPixelSize(dimen.qs_quick_tile_padding);
        int remaining = (width - numTiles * size) / (numTiles - 1);
@@ -289,19 +284,6 @@ public class QSFooterView extends FrameLayout {
        return mExpanded && mMultiUserSwitch.isMultiUserEnabled();
    }

    /** */
    public void setQSPanel(final QSPanel qsPanel) {
        if (qsPanel != null) {
            mMultiUserSwitch.setQsPanel(qsPanel);
            qsPanel.setFooterPageIndicator(mPageIndicator);
        }
    }

    public void setQQSPanel(@Nullable QuickQSPanel panel) {
        mQuickQsPanel = panel;
    }


    void onUserInfoChanged(Drawable picture, boolean isGuestUser) {
        if (picture != null && isGuestUser && !(picture instanceof UserIconDrawable)) {
            picture = picture.getConstantState().newDrawable(getResources()).mutate();
+18 −16
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@ import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;

import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.keyguard.KeyguardUpdateMonitor;
@@ -35,6 +33,7 @@ import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.phone.MultiUserSwitch;
import com.android.systemui.statusbar.phone.SettingsButton;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.UserInfoController;
@@ -55,11 +54,15 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
    private final DeviceProvisionedController mDeviceProvisionedController;
    private final UserTracker mUserTracker;
    private final QSPanelController mQsPanelController;
    private final QSDetailDisplayer mQsDetailDisplayer;
    private final QuickQSPanelController mQuickQSPanelController;
    private final TunerService mTunerService;
    private final MetricsLogger mMetricsLogger;
    private final SettingsButton mSettingsButton;
    private final TextView mBuildText;
    private final View mEdit;
    private final MultiUserSwitch mMultiUserSwitch;
    private final PageIndicator mPageIndicator;

    private final UserInfoController.OnUserInfoChangedListener mOnUserInfoChangedListener =
            new UserInfoController.OnUserInfoChangedListener() {
@@ -119,8 +122,9 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
    QSFooterViewController(QSFooterView view, UserManager userManager,
            UserInfoController userInfoController, ActivityStarter activityStarter,
            DeviceProvisionedController deviceProvisionedController, UserTracker userTracker,
            QSPanelController qsPanelController, TunerService tunerService,
            MetricsLogger metricsLogger) {
            QSPanelController qsPanelController, QSDetailDisplayer qsDetailDisplayer,
            QuickQSPanelController quickQSPanelController,
            TunerService tunerService, MetricsLogger metricsLogger) {
        super(view);
        mUserManager = userManager;
        mUserInfoController = userInfoController;
@@ -128,17 +132,24 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
        mDeviceProvisionedController = deviceProvisionedController;
        mUserTracker = userTracker;
        mQsPanelController = qsPanelController;
        mQsDetailDisplayer = qsDetailDisplayer;
        mQuickQSPanelController = quickQSPanelController;
        mTunerService = tunerService;
        mMetricsLogger = metricsLogger;

        mSettingsButton = mView.findViewById(R.id.settings_button);
        mBuildText = mView.findViewById(R.id.build);
        mEdit = mView.findViewById(android.R.id.edit);
        mMultiUserSwitch = mView.findViewById(R.id.multi_user_switch);
        mPageIndicator = mView.findViewById(R.id.footer_page_indicator);
    }


    @Override
    protected void onViewAttached() {
        mView.addOnLayoutChangeListener(
                (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) ->
                        mView.updateAnimator(
                                right - left, mQuickQSPanelController.getNumQuickTiles()));
        mSettingsButton.setOnClickListener(mSettingsOnClickListener);
        mBuildText.setOnLongClickListener(view -> {
            CharSequence buildText = mBuildText.getText();
@@ -158,6 +169,8 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
                mActivityStarter.postQSRunnableDismissingKeyguard(() ->
                        mQsPanelController.showEdit(view)));

        mMultiUserSwitch.setQSDetailDisplayer(mQsDetailDisplayer);
        mQsPanelController.setFooterPageIndicator(mPageIndicator);
        mView.updateEverything(isTunerEnabled());
    }

@@ -166,12 +179,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
        setListening(false);
    }


    @Override
    public void setQSPanel(@Nullable QSPanel panel) {
        mView.setQSPanel(panel);
    }

    @Override
    public void setVisibility(int visibility) {
        mView.setVisibility(visibility);
@@ -219,11 +226,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
        mView.setExpandClickListener(onClickListener);
    }

    @Override
    public void setQQSPanel(@Nullable QuickQSPanel panel) {
        mView.setQQSPanel(panel);
    }

    @Override
    public void disable(int state1, int state2, boolean animate) {
        mView.disable(state2, isTunerEnabled());
+8 −5
Original line number Diff line number Diff line
@@ -80,6 +80,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca

    private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
    private final InjectionInflationController mInjectionInflater;
    private final CommandQueue mCommandQueue;
    private final QSDetailDisplayer mQsDetailDisplayer;
    private final QSFragmentComponent.Factory mQsComponentFactory;
    private final QSTileHost mHost;
    private boolean mShowCollapsedOnKeyguard;
@@ -102,9 +104,12 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
    public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler,
            InjectionInflationController injectionInflater, QSTileHost qsTileHost,
            StatusBarStateController statusBarStateController, CommandQueue commandQueue,
            QSDetailDisplayer qsDetailDisplayer,
            QSFragmentComponent.Factory qsComponentFactory) {
        mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler;
        mInjectionInflater = injectionInflater;
        mCommandQueue = commandQueue;
        mQsDetailDisplayer = qsDetailDisplayer;
        mQsComponentFactory = qsComponentFactory;
        commandQueue.observe(getLifecycle(), this);
        mHost = qsTileHost;
@@ -144,6 +149,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
        mQSPanelController.setHeaderContainer(view.findViewById(R.id.header_text_container));
        mFooter = qsFragmentComponent.getQSFooter();

        mQsDetailDisplayer.setQsPanelController(mQSPanelController);

        mQSContainerImplController = qsFragmentComponent.getQSContainerImplController();
        mQSContainerImplController.init();
        mContainer = mQSContainerImplController.getView();
@@ -183,6 +190,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
            setListening(false);
        }
        mQSCustomizerController.setQs(null);
        mQsDetailDisplayer.setQsPanelController(null);
    }

    @Override
@@ -254,7 +262,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca

    public void setHost(QSTileHost qsh) {
        mHeader.setQSPanel(mQSPanelController.getView());
        mFooter.setQSPanel(mQSPanelController.getView());
        mQSDetail.setHost(qsh);
    }

@@ -321,10 +328,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
        return mQSPanelController;
    }

    public QSPanel getQsPanel() {
        return mQSPanelController.getView();
    }

    @Override
    public boolean isShowingDetail() {
        return mQSCustomizerController.isCustomizing() || mQSDetail.isShowingDetail();
Loading