Loading packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java +2 −0 Original line number Diff line number Diff line Loading @@ -203,6 +203,8 @@ public interface QS extends FragmentBase { */ void setIsNotificationPanelFullWidth(boolean isFullWidth); default void setQSExpandingOrCollapsing(boolean isQSExpandingOrCollapsing) {} /** * Callback for when QSPanel container is scrolled */ Loading packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt +37 −16 Original line number Diff line number Diff line Loading @@ -306,6 +306,7 @@ constructor( sceneState, viewModel.containerViewModel.editModeViewModel.isEditing, snapshotFlow { viewModel.expansionState }.map { it.progress }, snapshotFlow { viewModel.isQSExpandingOrCollapsing }, ) } Loading Loading @@ -537,6 +538,10 @@ constructor( return qqsVisible.value } override fun setQSExpandingOrCollapsing(isQSExpandingOrCollapsing: Boolean) { viewModel.isQSExpandingOrCollapsing = isQSExpandingOrCollapsing } private fun setListenerCollections() { lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { Loading Loading @@ -877,6 +882,7 @@ private suspend fun synchronizeQsState( state: MutableSceneTransitionLayoutState, editMode: Flow<Boolean>, expansion: Flow<Float>, isQSExpandingOrCollapsing: Flow<Boolean>, ) { coroutineScope { val animationScope = this Loading @@ -888,25 +894,42 @@ private suspend fun synchronizeQsState( currentTransition = null } editMode.combine(expansion, ::Pair).collectLatest { (editMode, progress) -> var lastValidProgress = 0f combine(editMode, expansion, isQSExpandingOrCollapsing, ::Triple).collectLatest { (editMode, progress, isQSExpandingOrCollapsing) -> if (editMode && state.currentScene != SceneKeys.EditMode) { state.setTargetScene(SceneKeys.EditMode, animationScope)?.second?.join() } else if (!editMode && state.currentScene == SceneKeys.EditMode) { state.setTargetScene(SceneKeys.QuickSettings, animationScope)?.second?.join() } if (!editMode) { when (progress) { 0f -> snapTo(QuickQuickSettings) 1f -> snapTo(QuickSettings) else -> { if (!isQSExpandingOrCollapsing) { if (progress == 0f) { snapTo(QuickQuickSettings) return@collectLatest } if (progress == 1f) { snapTo(QuickSettings) return@collectLatest } } var progress = progress if (progress >= 0f || progress <= 1f) { lastValidProgress = progress } else { progress = lastValidProgress } val transition = currentTransition if (transition != null) { transition.progress = progress return@collectLatest } val newTransition = ExpansionTransition(progress).also { currentTransition = it } val newTransition = ExpansionTransition(progress).also { currentTransition = it } state.startTransitionImmediately( animationScope = animationScope, transition = newTransition, Loading @@ -915,8 +938,6 @@ private suspend fun synchronizeQsState( } } } } } private class ExpansionTransition(currentProgress: Float) : TransitionState.Transition.ChangeScene( Loading packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt +3 −0 Original line number Diff line number Diff line Loading @@ -306,6 +306,8 @@ constructor( val animateTilesExpansion: Boolean get() = inFirstPage && !mediaSuddenlyAppearingInLandscape var isQSExpandingOrCollapsing by mutableStateOf(false) private val inFirstPage: Boolean get() = inFirstPageViewModel.inFirstPage Loading Loading @@ -539,6 +541,7 @@ constructor( println("proposedTranslation", proposedTranslation) println("expansionState", expansionState) println("forceQS", forceQs) println("isShadeExpandingOrCollapsing", isQSExpandingOrCollapsing) printSection("Derived values") { println("headerTranslation", headerTranslation) println("translationScaleY", translationScaleY) Loading packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java +11 −4 Original line number Diff line number Diff line Loading @@ -105,15 +105,14 @@ import com.android.systemui.util.kotlin.JavaAdapter; import dalvik.annotation.optimization.NeverCompile; import dagger.Lazy; import kotlin.Unit; import java.io.PrintWriter; import javax.inject.Inject; import javax.inject.Provider; import dagger.Lazy; import kotlin.Unit; /** Handles QuickSettings touch handling, expansion and animation state. */ @SysUISingleton public class QuickSettingsControllerImpl implements QuickSettingsController, Dumpable { Loading Loading @@ -2366,8 +2365,16 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum return; } if (startTracing) { if (mQs != null) { mQs.setQSExpandingOrCollapsing(true); } monitor.begin(mPanelView, Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); } else { if (mQs != null) { mQs.setQSExpandingOrCollapsing(false); } if (wasCancelled) { monitor.cancel(Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); } else { Loading Loading
packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java +2 −0 Original line number Diff line number Diff line Loading @@ -203,6 +203,8 @@ public interface QS extends FragmentBase { */ void setIsNotificationPanelFullWidth(boolean isFullWidth); default void setQSExpandingOrCollapsing(boolean isQSExpandingOrCollapsing) {} /** * Callback for when QSPanel container is scrolled */ Loading
packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt +37 −16 Original line number Diff line number Diff line Loading @@ -306,6 +306,7 @@ constructor( sceneState, viewModel.containerViewModel.editModeViewModel.isEditing, snapshotFlow { viewModel.expansionState }.map { it.progress }, snapshotFlow { viewModel.isQSExpandingOrCollapsing }, ) } Loading Loading @@ -537,6 +538,10 @@ constructor( return qqsVisible.value } override fun setQSExpandingOrCollapsing(isQSExpandingOrCollapsing: Boolean) { viewModel.isQSExpandingOrCollapsing = isQSExpandingOrCollapsing } private fun setListenerCollections() { lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { Loading Loading @@ -877,6 +882,7 @@ private suspend fun synchronizeQsState( state: MutableSceneTransitionLayoutState, editMode: Flow<Boolean>, expansion: Flow<Float>, isQSExpandingOrCollapsing: Flow<Boolean>, ) { coroutineScope { val animationScope = this Loading @@ -888,25 +894,42 @@ private suspend fun synchronizeQsState( currentTransition = null } editMode.combine(expansion, ::Pair).collectLatest { (editMode, progress) -> var lastValidProgress = 0f combine(editMode, expansion, isQSExpandingOrCollapsing, ::Triple).collectLatest { (editMode, progress, isQSExpandingOrCollapsing) -> if (editMode && state.currentScene != SceneKeys.EditMode) { state.setTargetScene(SceneKeys.EditMode, animationScope)?.second?.join() } else if (!editMode && state.currentScene == SceneKeys.EditMode) { state.setTargetScene(SceneKeys.QuickSettings, animationScope)?.second?.join() } if (!editMode) { when (progress) { 0f -> snapTo(QuickQuickSettings) 1f -> snapTo(QuickSettings) else -> { if (!isQSExpandingOrCollapsing) { if (progress == 0f) { snapTo(QuickQuickSettings) return@collectLatest } if (progress == 1f) { snapTo(QuickSettings) return@collectLatest } } var progress = progress if (progress >= 0f || progress <= 1f) { lastValidProgress = progress } else { progress = lastValidProgress } val transition = currentTransition if (transition != null) { transition.progress = progress return@collectLatest } val newTransition = ExpansionTransition(progress).also { currentTransition = it } val newTransition = ExpansionTransition(progress).also { currentTransition = it } state.startTransitionImmediately( animationScope = animationScope, transition = newTransition, Loading @@ -915,8 +938,6 @@ private suspend fun synchronizeQsState( } } } } } private class ExpansionTransition(currentProgress: Float) : TransitionState.Transition.ChangeScene( Loading
packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt +3 −0 Original line number Diff line number Diff line Loading @@ -306,6 +306,8 @@ constructor( val animateTilesExpansion: Boolean get() = inFirstPage && !mediaSuddenlyAppearingInLandscape var isQSExpandingOrCollapsing by mutableStateOf(false) private val inFirstPage: Boolean get() = inFirstPageViewModel.inFirstPage Loading Loading @@ -539,6 +541,7 @@ constructor( println("proposedTranslation", proposedTranslation) println("expansionState", expansionState) println("forceQS", forceQs) println("isShadeExpandingOrCollapsing", isQSExpandingOrCollapsing) printSection("Derived values") { println("headerTranslation", headerTranslation) println("translationScaleY", translationScaleY) Loading
packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java +11 −4 Original line number Diff line number Diff line Loading @@ -105,15 +105,14 @@ import com.android.systemui.util.kotlin.JavaAdapter; import dalvik.annotation.optimization.NeverCompile; import dagger.Lazy; import kotlin.Unit; import java.io.PrintWriter; import javax.inject.Inject; import javax.inject.Provider; import dagger.Lazy; import kotlin.Unit; /** Handles QuickSettings touch handling, expansion and animation state. */ @SysUISingleton public class QuickSettingsControllerImpl implements QuickSettingsController, Dumpable { Loading Loading @@ -2366,8 +2365,16 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum return; } if (startTracing) { if (mQs != null) { mQs.setQSExpandingOrCollapsing(true); } monitor.begin(mPanelView, Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); } else { if (mQs != null) { mQs.setQSExpandingOrCollapsing(false); } if (wasCancelled) { monitor.cancel(Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); } else { Loading