8/N Pull some usage of the MediaHost out of QSPanel
Bug: 168904199
Test: atest SystemUITests
Change-Id: I1a1c257cc5e805835bbec124af12f1ebd5b47105
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt
index 857c50f..b74ca28 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 @@
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 8955a7e..337f31e 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.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 @@
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 @@
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 @@
lp = new LayoutParams(LayoutParams.MATCH_PARENT, 0, 1);
addView(mHorizontalLinearLayout, lp);
-
- initMediaHostState();
}
mQSLogger.logAllTilesChangeListening(mListening, getDumpableTag(), "");
}
@@ -220,17 +213,10 @@
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 32c81af..eaa3ed0 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 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 @@
@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 @@
@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 06bf9ac..2c4c8c2 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.Collection;
import java.util.stream.Collectors;
+import kotlin.Unit;
+import kotlin.jvm.functions.Function1;
+
/**
* Controller for QSPanel views.
*
@@ -48,7 +51,7 @@
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 @@
}
};
+ 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 @@
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 @@
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 06e8634..84c2ac24 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 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 @@
}
@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 7f50eef..174a81f 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.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 @@
}
@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);