diff options
| author | 2020-10-22 10:01:48 -0400 | |
|---|---|---|
| committer | 2020-11-16 15:22:40 -0500 | |
| commit | 8d7ab5cb23a93a97555bd2bcf7576ac33186ca7f (patch) | |
| tree | c4b99104739b093aee65268382b55329133a6c74 | |
| parent | d13bbe78ebd7f7980c6a8e4847d079d789e4cde1 (diff) | |
8/N Pull some usage of the MediaHost out of QSPanel
Bug: 168904199
Test: atest SystemUITests
Change-Id: I1a1c257cc5e805835bbec124af12f1ebd5b47105
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<QSPanel> { @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<QSPanel> { @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<T extends QSPanel> 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<T extends QSPanel> extends ViewContr } }; + private final Function1<Boolean, Unit> 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<T extends QSPanel> 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<T extends QSPanel> 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; @@ -89,14 +88,6 @@ public class QuickQSPanel extends QSPanel { } @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; @@ -58,6 +59,14 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel> } @Override + protected void onInit() { + super.onInit(); + mMediaHost.setExpansion(0.0f); + mMediaHost.setShowsOnlyActiveMedia(true); + mMediaHost.init(MediaHierarchyManager.LOCATION_QQS); + } + + @Override protected void onViewAttached() { super.onViewAttached(); mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener); |