Simplify config changes and request media host layout updates am: 73bf6685f6

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20553227

Change-Id: I00d2e216f2e8f7401a12fe31ef35647232bd13a2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Beth Thibodeau
2022-11-29 01:16:12 +00:00
committed by Automerger Merge Worker
6 changed files with 21 additions and 28 deletions

View File

@@ -465,6 +465,8 @@ public class QSPanel extends LinearLayout implements Tunable {
? Math.max(mMediaTotalBottomMargin - getPaddingBottom(), 0) : 0; ? Math.max(mMediaTotalBottomMargin - getPaddingBottom(), 0) : 0;
layoutParams.topMargin = mediaNeedsTopMargin() && !horizontal layoutParams.topMargin = mediaNeedsTopMargin() && !horizontal
? mMediaTopMargin : 0; ? mMediaTopMargin : 0;
// Call setLayoutParams explicitly to ensure that requestLayout happens
hostView.setLayoutParams(layoutParams);
} }
} }

View File

@@ -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.QSPanel.QS_SHOW_BRIGHTNESS;
import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER; import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;
import android.content.res.Configuration;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
@@ -63,17 +62,6 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
private boolean mGridContentVisible = true; 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() { private View.OnTouchListener mTileLayoutTouchListener = new View.OnTouchListener() {
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
@@ -131,7 +119,6 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
if (mView.isListening()) { if (mView.isListening()) {
refreshAllTiles(); refreshAllTiles();
} }
mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
switchTileLayout(true); switchTileLayout(true);
mBrightnessMirrorHandler.onQsPanelAttached(); mBrightnessMirrorHandler.onQsPanelAttached();
@@ -148,11 +135,18 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
@Override @Override
protected void onViewDetached() { protected void onViewDetached() {
mTunerService.removeTunable(mView); mTunerService.removeTunable(mView);
mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
mBrightnessMirrorHandler.onQsPanelDettached(); mBrightnessMirrorHandler.onQsPanelDettached();
super.onViewDetached(); super.onViewDetached();
} }
@Override
protected void onConfigurationChanged() {
mView.updateResources();
if (mView.isListening()) {
refreshAllTiles();
}
}
/** */ /** */
public void setVisibility(int visibility) { public void setVisibility(int visibility) {
mView.setVisibility(visibility); mView.setVisibility(visibility);

View File

@@ -90,11 +90,11 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
LargeScreenUtils.shouldUseSplitNotificationShade(getResources()); LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
mQSLogger.logOnConfigurationChanged(mLastOrientation, newConfig.orientation, mQSLogger.logOnConfigurationChanged(mLastOrientation, newConfig.orientation,
mView.getDumpableTag()); mView.getDumpableTag());
onConfigurationChanged();
if (newConfig.orientation != mLastOrientation) { if (newConfig.orientation != mLastOrientation) {
mLastOrientation = newConfig.orientation; mLastOrientation = newConfig.orientation;
switchTileLayout(false); switchTileLayout(false);
} }
onConfigurationChanged();
} }
}; };
@@ -408,6 +408,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
} }
if (mMediaHost != null) { if (mMediaHost != null) {
pw.println(" media bounds: " + mMediaHost.getCurrentBounds()); pw.println(" media bounds: " + mMediaHost.getCurrentBounds());
pw.println(" horizontal layout: " + mUsingHorizontalLayout);
pw.println(" last orientation: " + mLastOrientation);
} }
} }

View File

@@ -44,14 +44,6 @@ import javax.inject.Named;
@QSScope @QSScope
public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel> { 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; private final boolean mUsingCollapsedLandscapeMedia;
@Inject @Inject
@@ -95,13 +87,11 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
@Override @Override
protected void onViewAttached() { protected void onViewAttached() {
super.onViewAttached(); super.onViewAttached();
mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
} }
@Override @Override
protected void onViewDetached() { protected void onViewDetached() {
super.onViewDetached(); super.onViewDetached();
mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
} }
private void setMaxTiles(int parseNumTiles) { private void setMaxTiles(int parseNumTiles) {
@@ -111,6 +101,10 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
@Override @Override
protected void onConfigurationChanged() { protected void onConfigurationChanged() {
int newMaxTiles = getResources().getInteger(R.integer.quick_qs_panel_max_tiles);
if (newMaxTiles != mView.getNumQuickTiles()) {
setMaxTiles(newMaxTiles);
}
updateMediaExpansion(); updateMediaExpansion();
} }

View File

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

View File

@@ -126,8 +126,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
@Test @Test
fun testMediaExpansionUpdatedWhenConfigurationChanged() { fun testMediaExpansionUpdatedWhenConfigurationChanged() {
// times(2) because both controller and base controller are registering their listeners verify(quickQSPanel).addOnConfigurationChangedListener(captor.capture())
verify(quickQSPanel, times(2)).addOnConfigurationChangedListener(captor.capture())
// verify that media starts in the expanded state by default // verify that media starts in the expanded state by default
verify(mediaHost).expansion = MediaHostState.EXPANDED verify(mediaHost).expansion = MediaHostState.EXPANDED