From 8d7ab5cb23a93a97555bd2bcf7576ac33186ca7f Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Thu, 22 Oct 2020 10:01:48 -0400 Subject: 8/N Pull some usage of the MediaHost out of QSPanel Bug: 168904199 Test: atest SystemUITests Change-Id: I1a1c257cc5e805835bbec124af12f1ebd5b47105 --- .../src/com/android/systemui/media/MediaHost.kt | 4 ++++ .../src/com/android/systemui/qs/QSPanel.java | 18 ++---------------- .../com/android/systemui/qs/QSPanelController.java | 7 +++++++ .../android/systemui/qs/QSPanelControllerBase.java | 20 +++++++++++++++----- .../src/com/android/systemui/qs/QuickQSPanel.java | 9 --------- .../android/systemui/qs/QuickQSPanelController.java | 9 +++++++++ 6 files changed, 37 insertions(+), 30 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt index 857c50fc8d32..b74ca283f16a 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt @@ -62,6 +62,10 @@ class MediaHost constructor( visibleChangedListeners.add(listener) } + fun removeVisibilityChangeListener(listener: (Boolean) -> Unit) { + visibleChangedListeners.remove(listener) + } + /** * Initialize this MediaObject and create a host view. * All state should already be set on this host before calling this method in order to avoid diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 8955a7e27dee..337f31e8efd7 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -42,7 +42,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.RemeasuringLinearLayout; import com.android.systemui.Dependency; import com.android.systemui.R; -import com.android.systemui.media.MediaHierarchyManager; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.plugins.qs.QSTile; @@ -69,7 +68,7 @@ public class QSPanel extends LinearLayout implements Tunable { private static final String TAG = "QSPanel"; protected final Context mContext; - protected final MediaHost mMediaHost; + private final MediaHost mMediaHost; /** * The index where the content starts that needs to be moved between parents @@ -144,10 +143,6 @@ public class QSPanel extends LinearLayout implements Tunable { mMediaTotalBottomMargin = getResources().getDimensionPixelSize( R.dimen.quick_settings_bottom_margin_media); mMediaHost = mediaHost; - mMediaHost.addVisibilityChangeListener((visible) -> { - onMediaVisibilityChanged(visible); - return null; - }); mContext = context; mQSLogger = qsLogger; mUiEventLogger = uiEventLogger; @@ -179,8 +174,6 @@ public class QSPanel extends LinearLayout implements Tunable { lp = new LayoutParams(LayoutParams.MATCH_PARENT, 0, 1); addView(mHorizontalLinearLayout, lp); - - initMediaHostState(); } mQSLogger.logAllTilesChangeListening(mListening, getDumpableTag(), ""); } @@ -220,17 +213,10 @@ public class QSPanel extends LinearLayout implements Tunable { return createRegularTileLayout(); } - protected void initMediaHostState() { - mMediaHost.setExpansion(1.0f); - mMediaHost.setShowsOnlyActiveMedia(false); - updateMediaDisappearParameters(); - mMediaHost.init(MediaHierarchyManager.LOCATION_QS); - } - /** * Update the way the media disappears based on if we're using the horizontal layout */ - private void updateMediaDisappearParameters() { + void updateMediaDisappearParameters() { if (!mUsingMediaPlayer) { return; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index 32c81af00870..eaa3ed059c34 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -28,6 +28,7 @@ import android.view.ViewGroup; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.systemui.dump.DumpManager; +import com.android.systemui.media.MediaHierarchyManager; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.plugins.qs.QSTile; @@ -99,6 +100,9 @@ public class QSPanelController extends QSPanelControllerBase { @Override public void onInit() { super.onInit(); + mMediaHost.setExpansion(1); + mMediaHost.setShowsOnlyActiveMedia(false); + mMediaHost.init(MediaHierarchyManager.LOCATION_QS); mQsCustomizerController.init(); mBrightnessSlider.init(); } @@ -106,6 +110,9 @@ public class QSPanelController extends QSPanelControllerBase { @Override protected void onViewAttached() { super.onViewAttached(); + + mView.updateMediaDisappearParameters(); + mTunerService.addTunable(mView, QS_SHOW_BRIGHTNESS); mView.updateResources(); if (mView.isListening()) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 06bf9acb64f0..2c4c8c2a498b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -39,6 +39,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.stream.Collectors; +import kotlin.Unit; +import kotlin.jvm.functions.Function1; + /** * Controller for QSPanel views. * @@ -48,7 +51,7 @@ public abstract class QSPanelControllerBase extends ViewContr implements Dumpable{ protected final QSTileHost mHost; private final QSCustomizerController mQsCustomizerController; - private final MediaHost mMediaHost; + protected final MediaHost mMediaHost; private final MetricsLogger mMetricsLogger; private final UiEventLogger mUiEventLogger; private final DumpManager mDumpManager; @@ -72,6 +75,12 @@ public abstract class QSPanelControllerBase extends ViewContr } }; + private final Function1 mMediaHostVisibilityListener = (visible) -> { + mView.onMediaVisibilityChanged(visible); + switchTileLayout(false); + return null; + }; + protected QSPanelControllerBase(T view, QSTileHost host, QSCustomizerController qsCustomizerController, MediaHost mediaHost, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { @@ -91,14 +100,13 @@ public abstract class QSPanelControllerBase extends ViewContr mQsTileRevealController.setExpansion(mRevealExpansion); } + mMediaHost.addVisibilityChangeListener(mMediaHostVisibilityListener); + mView.onMediaVisibilityChanged(mMediaHost.getVisible()); mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener); mHost.addCallback(mQSHostCallback); - mMediaHost.addVisibilityChangeListener(aBoolean -> { - switchTileLayout(false); - return null; - }); setTiles(); switchTileLayout(true); + mDumpManager.registerDumpable(mView.getDumpableTag(), this); } @@ -107,6 +115,8 @@ public abstract class QSPanelControllerBase extends ViewContr mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener); mHost.removeCallback(mQSHostCallback); + mMediaHost.removeVisibilityChangeListener(mMediaHostVisibilityListener); + for (TileRecord record : mRecords) { record.tile.removeCallbacks(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index 06e8634a0d1f..84c2ac24f144 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -29,7 +29,6 @@ import android.widget.LinearLayout; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; -import com.android.systemui.media.MediaHierarchyManager; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile.SignalState; @@ -88,14 +87,6 @@ public class QuickQSPanel extends QSPanel { return new DoubleLineTileLayout(mContext, mUiEventLogger); } - @Override - - protected void initMediaHostState() { - mMediaHost.setExpansion(0.0f); - mMediaHost.setShowsOnlyActiveMedia(true); - mMediaHost.init(MediaHierarchyManager.LOCATION_QQS); - } - @Override protected boolean needsDynamicRowsAndColumns() { return false; // QQS always have the same layout diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java index 7f50eef019a9..174a81f1d919 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java @@ -22,6 +22,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.dump.DumpManager; +import com.android.systemui.media.MediaHierarchyManager; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.customize.QSCustomizerController; @@ -57,6 +58,14 @@ public class QuickQSPanelController extends QSPanelControllerBase dumpManager); } + @Override + protected void onInit() { + super.onInit(); + mMediaHost.setExpansion(0.0f); + mMediaHost.setShowsOnlyActiveMedia(true); + mMediaHost.init(MediaHierarchyManager.LOCATION_QQS); + } + @Override protected void onViewAttached() { super.onViewAttached(); -- cgit v1.2.3-59-g8ed1b