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

Commit 87c82ef9 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov Committed by Android (Google) Code Review
Browse files

Merge "[SB] Control ongoing activity chips visibility in binder not fragment." into main

parents 02eba929 4ad89818
Loading
Loading
Loading
Loading
+49 −21
Original line number Diff line number Diff line
@@ -89,6 +89,16 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa
                    launch {
                        viewModel.primaryOngoingActivityChip.collect { primaryChipModel ->
                            OngoingActivityChipBinder.bind(primaryChipModel, primaryChipView)
                            if (StatusBarSimpleFragment.isEnabled) {
                                when (primaryChipModel) {
                                    is OngoingActivityChipModel.Shown ->
                                        primaryChipView.show(shouldAnimateChange = true)
                                    is OngoingActivityChipModel.Hidden ->
                                        primaryChipView.hide(
                                            shouldAnimateChange = primaryChipModel.shouldAnimate
                                        )
                                }
                            } else {
                                when (primaryChipModel) {
                                    is OngoingActivityChipModel.Shown ->
                                        listener.onOngoingActivityStatusChanged(
@@ -106,6 +116,7 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa
                            }
                        }
                    }
                }

                if (Flags.statusBarScreenSharingChips() && Flags.statusBarRonChips()) {
                    val primaryChipView: View =
@@ -118,6 +129,13 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa
                            // TODO(b/364653005): Don't show the secondary chip if there isn't
                            // enough space for it.
                            OngoingActivityChipBinder.bind(chips.secondary, secondaryChipView)

                            if (StatusBarSimpleFragment.isEnabled) {
                                primaryChipView.adjustVisibility(chips.primary.toVisibilityModel())
                                secondaryChipView.adjustVisibility(
                                    chips.secondary.toVisibilityModel()
                                )
                            } else {
                                listener.onOngoingActivityStatusChanged(
                                    hasPrimaryOngoingActivity =
                                        chips.primary is OngoingActivityChipModel.Shown,
@@ -129,6 +147,7 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa
                            }
                        }
                    }
                }

                if (SceneContainerFlag.isEnabled) {
                    launch {
@@ -164,6 +183,15 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa
        }
    }

    private fun OngoingActivityChipModel.toVisibilityModel():
        CollapsedStatusBarViewModel.VisibilityModel {
        return CollapsedStatusBarViewModel.VisibilityModel(
            visibility = if (this is OngoingActivityChipModel.Shown) View.VISIBLE else View.GONE,
            // TODO(b/364653005): Figure out the animation story here.
            shouldAnimateChange = true,
        )
    }

    private fun animateLightsOutView(view: View, visible: Boolean) {
        view.animate().cancel()

+1 −3
Original line number Diff line number Diff line
@@ -96,8 +96,6 @@ interface CollapsedStatusBarViewModel {
    val isNotificationIconContainerVisible: Flow<VisibilityModel>
    val isSystemInfoVisible: Flow<VisibilityModel>

    // TODO(b/364360986): Add isOngoingActivityChipVisible: Flow<VisibilityModel>

    /**
     * Apps can request a low profile mode [android.view.View.SYSTEM_UI_FLAG_LOW_PROFILE] where
     * status bar and navigation icons dim. In this mode, a notification dot appears where the
@@ -211,7 +209,7 @@ constructor(
                isStatusBarAllowed && visibilityViaDisableFlags.areNotificationIconsAllowed
            VisibilityModel(
                showNotificationIconContainer.toVisibilityInt(),
                visibilityViaDisableFlags.animate
                visibilityViaDisableFlags.animate,
            )
        }
    override val isSystemInfoVisible: Flow<VisibilityModel> =