diff options
| author | 2024-08-21 10:46:04 -0400 | |
|---|---|---|
| committer | 2024-08-21 10:52:29 -0400 | |
| commit | 3f152a62416d2cc140a64f0dba478845508b2fdb (patch) | |
| tree | f9f10fb205ac7107ee14394256311b88e556924b | |
| parent | ccf4f5a80847bf04d991c38ab9ee8912a997c755 (diff) | |
Add and init media hosts.
This prevents a crash when expanding the shade in lockscreen, as it
expects to have QQS and QS media hosts. They are not attached to
anything yet, but eventually they will be used for media composables.
Also, fix an incorrect `isFullyCollapsed`. Now it matches the logic in
QSImpl.
Test: manual
Bug: 353253280
Flag: com.android.systemui.qs_ui_refactor_compose_fragment
Change-Id: I89fb43fd7b4264f82fa15eb49b2234af4af9ae25
2 files changed, 19 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt index 5d81d4f3f9ec..9f9c8e910f20 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt @@ -53,6 +53,10 @@ import com.android.compose.modifiers.padding import com.android.compose.theme.PlatformTheme import com.android.systemui.compose.modifiers.sysuiResTag import com.android.systemui.lifecycle.repeatWhenAttached +import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager +import com.android.systemui.media.controls.ui.view.MediaHost +import com.android.systemui.media.dagger.MediaModule.QS_PANEL +import com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL import com.android.systemui.plugins.qs.QS import com.android.systemui.plugins.qs.QSContainerController import com.android.systemui.qs.composefragment.viewmodel.QSFragmentComposeViewModel @@ -65,6 +69,7 @@ import com.android.systemui.res.R import com.android.systemui.util.LifecycleFragment import java.util.function.Consumer import javax.inject.Inject +import javax.inject.Named import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.Flow @@ -77,6 +82,8 @@ class QSFragmentCompose @Inject constructor( private val qsFragmentComposeViewModelFactory: QSFragmentComposeViewModel.Factory, + @Named(QUICK_QS_PANEL) private val qqsMediaHost: MediaHost, + @Named(QS_PANEL) private val qsMediaHost: MediaHost, ) : LifecycleFragment(), QS { private val scrollListener = MutableStateFlow<QS.ScrollListener?>(null) @@ -99,6 +106,8 @@ constructor( QSComposeFragment.isUnexpectedlyInLegacyMode() viewModel = qsFragmentComposeViewModelFactory.create(lifecycleScope) + qqsMediaHost.init(MediaHierarchyManager.LOCATION_QQS) + qsMediaHost.init(MediaHierarchyManager.LOCATION_QS) setListenerCollections() } @@ -274,7 +283,7 @@ constructor( ) {} override fun isFullyCollapsed(): Boolean { - return !viewModel.isQSVisible + return viewModel.qsExpansionValue <= 0f } override fun setCollapsedMediaVisibilityChangedListener(listener: Consumer<Boolean>?) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt index 9e109e436226..7d52216a4d2e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt @@ -18,6 +18,7 @@ package com.android.systemui.qs.composefragment.viewmodel import android.content.res.Resources import android.graphics.Rect +import androidx.annotation.FloatRange import androidx.lifecycle.LifecycleCoroutineScope import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import com.android.systemui.dagger.qualifiers.Main @@ -79,11 +80,17 @@ constructor( _qsVisible.value = value } - private val _qsExpansion = MutableStateFlow(0f) + // This can only be negative if undefined (in which case it will be -1f), else it will be + // in [0, 1]. In some cases, it could be set back to -1f internally to indicate that it's + // different to every value in [0, 1]. + @FloatRange(from = -1.0, to = 1.0) private val _qsExpansion = MutableStateFlow(-1f) var qsExpansionValue: Float get() = _qsExpansion.value set(value) { - _qsExpansion.value = value + if (value < 0f) { + _qsExpansion.value = -1f + } + _qsExpansion.value = value.coerceIn(0f, 1f) } private val _panelFraction = MutableStateFlow(0f) |