Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f152a62 authored by Fabián Kozynski's avatar Fabián Kozynski
Browse files

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
parent ccf4f5a8
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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>?) {
+9 −2
Original line number Diff line number Diff line
@@ -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)