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

Commit 73bf6685 authored by Beth Thibodeau's avatar Beth Thibodeau
Browse files

Simplify config changes and request media host layout updates

- Each QSPanelController* class had its own OnConfigurationChangeListener,
  in addition to an overridable method in the base class that was called
  in the listener - moved the child class listener code into that method
  so there's a single listener registered.
- When reattaching the media host after an orientation change,
  explicitly call setLayoutParams to ensure that a layout update is
  requested
- Add more info about current config to dumpsys

Bug: 198319256
Test: atest com.android.systemui.qs
Test: manual - verify media view looks correct when rotating
Change-Id: I5b34ba85e98b4fbf8fe3b24893d0423146aa5f75
Merged-In: I5b34ba85e98b4fbf8fe3b24893d0423146aa5f75
(cherry picked from commit 48cd3b60)
parent 2d2cda16
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -465,6 +465,8 @@ public class QSPanel extends LinearLayout implements Tunable {
                    ? Math.max(mMediaTotalBottomMargin - getPaddingBottom(), 0) : 0;
            layoutParams.topMargin = mediaNeedsTopMargin() && !horizontal
                    ? mMediaTopMargin : 0;
            // Call setLayoutParams explicitly to ensure that requestLayout happens
            hostView.setLayoutParams(layoutParams);
        }
    }

+8 −14
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS;
import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;

import android.content.res.Configuration;
import android.view.MotionEvent;
import android.view.View;

@@ -63,17 +62,6 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {

    private boolean mGridContentVisible = true;

    private final QSPanel.OnConfigurationChangedListener mOnConfigurationChangedListener =
            new QSPanel.OnConfigurationChangedListener() {
        @Override
        public void onConfigurationChange(Configuration newConfig) {
            mView.updateResources();
            if (mView.isListening()) {
                refreshAllTiles();
            }
        }
    };

    private View.OnTouchListener mTileLayoutTouchListener = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
@@ -131,7 +119,6 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
        if (mView.isListening()) {
            refreshAllTiles();
        }
        mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
        switchTileLayout(true);
        mBrightnessMirrorHandler.onQsPanelAttached();

@@ -148,11 +135,18 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
    @Override
    protected void onViewDetached() {
        mTunerService.removeTunable(mView);
        mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
        mBrightnessMirrorHandler.onQsPanelDettached();
        super.onViewDetached();
    }

    @Override
    protected void onConfigurationChanged() {
        mView.updateResources();
        if (mView.isListening()) {
            refreshAllTiles();
        }
    }

    /** */
    public void setVisibility(int visibility) {
        mView.setVisibility(visibility);
+3 −1
Original line number Diff line number Diff line
@@ -90,11 +90,11 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
                            LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
                    mQSLogger.logOnConfigurationChanged(mLastOrientation, newConfig.orientation,
                            mView.getDumpableTag());
                    onConfigurationChanged();
                    if (newConfig.orientation != mLastOrientation) {
                        mLastOrientation = newConfig.orientation;
                        switchTileLayout(false);
                    }
                    onConfigurationChanged();
                }
            };

@@ -408,6 +408,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
        }
        if (mMediaHost != null) {
            pw.println("  media bounds: " + mMediaHost.getCurrentBounds());
            pw.println("  horizontal layout: " + mUsingHorizontalLayout);
            pw.println("  last orientation: " + mLastOrientation);
        }
    }

+4 −10
Original line number Diff line number Diff line
@@ -44,14 +44,6 @@ import javax.inject.Named;
@QSScope
public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel> {

    private final QSPanel.OnConfigurationChangedListener mOnConfigurationChangedListener =
            newConfig -> {
                int newMaxTiles = getResources().getInteger(R.integer.quick_qs_panel_max_tiles);
                if (newMaxTiles != mView.getNumQuickTiles()) {
                    setMaxTiles(newMaxTiles);
                }
            };

    private final boolean mUsingCollapsedLandscapeMedia;

    @Inject
@@ -95,13 +87,11 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
    @Override
    protected void onViewAttached() {
        super.onViewAttached();
        mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
    }

    @Override
    protected void onViewDetached() {
        super.onViewDetached();
        mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
    }

    private void setMaxTiles(int parseNumTiles) {
@@ -111,6 +101,10 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>

    @Override
    protected void onConfigurationChanged() {
        int newMaxTiles = getResources().getInteger(R.integer.quick_qs_panel_max_tiles);
        if (newMaxTiles != mView.getNumQuickTiles()) {
            setMaxTiles(newMaxTiles);
        }
        updateMediaExpansion();
    }

+3 −1
Original line number Diff line number Diff line
@@ -224,7 +224,9 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
                + "  Tile records:\n"
                + "    " + mockTileString + "\n"
                + "    " + mockTileViewString + "\n"
                + "  media bounds: null\n";
                + "  media bounds: null\n"
                + "  horizontal layout: false\n"
                + "  last orientation: 0\n";
        assertEquals(expected, w.getBuffer().toString());
    }

Loading