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

Commit bc24cc59 authored by Alex Florescu's avatar Alex Florescu
Browse files

Don't use horizontal layout for quicksettings when using 2-column shade

Bug: 171917882
Test: atest SystemUITests + manual
Change-Id: Ic059840244585a1f2989bdcd09d792d0968e53d1
parent 5d3e81d3
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -40,6 +40,7 @@ import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.settings.brightness.BrightnessController;
import com.android.systemui.settings.brightness.BrightnessController;
import com.android.systemui.settings.brightness.BrightnessSlider;
import com.android.systemui.settings.brightness.BrightnessSlider;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService;


@@ -92,9 +93,10 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
            DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
            DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
            QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
            QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
            BrightnessSlider.Factory brightnessSliderFactory,
            BrightnessSlider.Factory brightnessSliderFactory,
            @Named(QS_LABELS_FLAG) boolean qsLabelsFlag) {
            @Named(QS_LABELS_FLAG) boolean qsLabelsFlag,
            FeatureFlags featureFlags) {
        super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
        super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
                metricsLogger, uiEventLogger, qsLogger, dumpManager);
                metricsLogger, uiEventLogger, qsLogger, dumpManager, featureFlags);
        mQsSecurityFooter = qsSecurityFooter;
        mQsSecurityFooter = qsSecurityFooter;
        mTunerService = tunerService;
        mTunerService = tunerService;
        mQsCustomizerController = qsCustomizerController;
        mQsCustomizerController = qsCustomizerController;
+20 −6
Original line number Original line Diff line number Diff line
@@ -34,6 +34,8 @@ import com.android.systemui.plugins.qs.QSTileView;
import com.android.systemui.qs.customize.QSCustomizerController;
import com.android.systemui.qs.customize.QSCustomizerController;
import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.util.Utils;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.animation.DisappearParameters;
import com.android.systemui.util.animation.DisappearParameters;


@@ -63,6 +65,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
    private final UiEventLogger mUiEventLogger;
    private final UiEventLogger mUiEventLogger;
    private final QSLogger mQSLogger;
    private final QSLogger mQSLogger;
    private final DumpManager mDumpManager;
    private final DumpManager mDumpManager;
    private final FeatureFlags mFeatureFlags;
    protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
    protected final ArrayList<TileRecord> mRecords = new ArrayList<>();


    private int mLastOrientation;
    private int mLastOrientation;
@@ -93,11 +96,18 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr


    private boolean mUsingHorizontalLayout;
    private boolean mUsingHorizontalLayout;


    protected QSPanelControllerBase(T view, QSTileHost host,
    protected QSPanelControllerBase(
            T view,
            QSTileHost host,
            QSCustomizerController qsCustomizerController,
            QSCustomizerController qsCustomizerController,
            @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer, MediaHost mediaHost,
            @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer,
            MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger,
            MediaHost mediaHost,
            DumpManager dumpManager) {
            MetricsLogger metricsLogger,
            UiEventLogger uiEventLogger,
            QSLogger qsLogger,
            DumpManager dumpManager,
            FeatureFlags featureFlags
    ) {
        super(view);
        super(view);
        mHost = host;
        mHost = host;
        mQsCustomizerController = qsCustomizerController;
        mQsCustomizerController = qsCustomizerController;
@@ -107,6 +117,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
        mUiEventLogger = uiEventLogger;
        mUiEventLogger = uiEventLogger;
        mQSLogger = qsLogger;
        mQSLogger = qsLogger;
        mDumpManager = dumpManager;
        mDumpManager = dumpManager;
        mFeatureFlags = featureFlags;
    }
    }


    @Override
    @Override
@@ -334,6 +345,9 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
    }
    }


    boolean shouldUseHorizontalLayout() {
    boolean shouldUseHorizontalLayout() {
        if (Utils.shouldUseSplitNotificationShade(mFeatureFlags, getResources()))  {
            return false;
        }
        return mUsingMediaPlayer && mMediaHost.getVisible()
        return mUsingMediaPlayer && mMediaHost.getVisible()
                    && getResources().getConfiguration().orientation
                    && getResources().getConfiguration().orientation
                    == Configuration.ORIENTATION_LANDSCAPE;
                    == Configuration.ORIENTATION_LANDSCAPE;
+5 −2
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.customize.QSCustomizerController;
import com.android.systemui.qs.customize.QSCustomizerController;
import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.statusbar.FeatureFlags;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
@@ -57,9 +58,11 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
            @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer,
            @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer,
            @Named(QUICK_QS_PANEL) MediaHost mediaHost,
            @Named(QUICK_QS_PANEL) MediaHost mediaHost,
            MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger,
            MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger,
            DumpManager dumpManager, @Named(QS_LABELS_FLAG) boolean qsLabelsFlag) {
            DumpManager dumpManager, @Named(QS_LABELS_FLAG) boolean qsLabelsFlag,
            FeatureFlags featureFlags
    ) {
        super(view, qsTileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger,
        super(view, qsTileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger,
                uiEventLogger, qsLogger, dumpManager);
                uiEventLogger, qsLogger, dumpManager, featureFlags);
        mUseSideLabels = qsLabelsFlag;
        mUseSideLabels = qsLabelsFlag;
    }
    }


+2 −6
Original line number Original line Diff line number Diff line
@@ -134,6 +134,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.util.Utils;
import com.android.wm.shell.animation.FlingAnimationUtils;
import com.android.wm.shell.animation.FlingAnimationUtils;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
@@ -783,18 +784,13 @@ public class NotificationPanelViewController extends PanelViewController {
            mNotificationStackScrollLayoutController.setLayoutParams(lp);
            mNotificationStackScrollLayoutController.setLayoutParams(lp);
        }
        }


        if (shouldUseSplitNotificationShade()) {
        if (Utils.shouldUseSplitNotificationShade(mFeatureFlags, mResources)) {
            // In order to change the constraints at runtime, all children of the Constraint Layout
            // In order to change the constraints at runtime, all children of the Constraint Layout
            // must have ids.
            // must have ids.
            ensureAllViewsHaveIds(mNotificationContainerParent);
            ensureAllViewsHaveIds(mNotificationContainerParent);
        }
        }
    }
    }


    private boolean shouldUseSplitNotificationShade() {
        return mFeatureFlags.isTwoColumnNotificationShadeEnabled()
                && mResources.getBoolean(R.bool.config_use_split_notification_shade);
    }

    private static void ensureAllViewsHaveIds(ViewGroup parentView) {
    private static void ensureAllViewsHaveIds(ViewGroup parentView) {
        for (int i = 0; i < parentView.getChildCount(); i++) {
        for (int i = 0; i < parentView.getChildCount(); i++) {
            View childView = parentView.getChildAt(i);
            View childView = parentView.getChildAt(i);
+14 −0
Original line number Original line Diff line number Diff line
@@ -20,12 +20,15 @@ import android.Manifest;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.provider.Settings;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.TextUtils;
import android.view.View;
import android.view.View;


import com.android.systemui.R;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.FeatureFlags;


import java.util.HashSet;
import java.util.HashSet;
import java.util.List;
import java.util.List;
@@ -163,4 +166,15 @@ public class Utils {
        }
        }
        return apps;
        return apps;
    }
    }

    /**
     * Returns true if the device should use the split notification shade, based on feature flags,
     * orientation and screen width.
     */
    public static boolean shouldUseSplitNotificationShade(FeatureFlags featureFlags,
            Resources resources) {
        return featureFlags.isTwoColumnNotificationShadeEnabled()
                && resources.getBoolean(R.bool.config_use_split_notification_shade);
    }

}
}
Loading