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

Commit 03563cba authored by Steve Elliott's avatar Steve Elliott
Browse files

[kairos] fix ModernStatusBarMobileView size issue

Kairos fork got out of sync with production impl.

Flag: com.android.systemui.status_bar_mobile_icon_kairos
Bug: 383172066
Test: atest
Change-Id: I886c1b754896d0ac9c8fba95b7cd4cc0c7742573
parent 97a2df5b
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.KairosBuilder
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.kairos.ExperimentalKairosApi
import com.android.systemui.kairos.Incremental
import com.android.systemui.kairos.KairosNetwork
import com.android.systemui.kairos.buildSpec
import com.android.systemui.kairos.combine
@@ -68,7 +69,8 @@ constructor(
            .toColdConflatedFlow(kairosNetwork)
            .stateIn(scope, SharingStarted.WhileSubscribed(), null)

    private val reposBySubIdK = buildIncremental {
    private val reposBySubIdK: Incremental<Int, MobileConnectionRepositoryKairosAdapter> =
        buildIncremental {
            kairosRepo.mobileConnectionsBySubId
                .mapValues { (subId, repo) ->
                    buildSpec {
@@ -81,7 +83,7 @@ constructor(
                .applyLatestSpecForKey()
        }

    private val reposBySubId =
    private val reposBySubId: StateFlow<Map<Int, MobileConnectionRepositoryKairosAdapter>> =
        reposBySubIdK
            .toColdConflatedFlow(kairosNetwork)
            .stateIn(scope, SharingStarted.Eagerly, emptyMap())
+18 −6
Original line number Diff line number Diff line
@@ -174,17 +174,29 @@ object MobileIconBinderKairos {
                        }

                        // Set the icon for the triangle
                        viewModel.icon.observe { icon ->
                        viewModel.icon.pairwise(initialPreviousValue = null).observe {
                            (oldIcon, newIcon) ->
                            val shouldRequestLayout =
                                when {
                                    oldIcon == null -> true
                                    oldIcon is SignalIconModel.Cellular &&
                                        newIcon is SignalIconModel.Cellular ->
                                        oldIcon.numberOfLevels != newIcon.numberOfLevels
                                    else -> false
                                }
                            viewModel.verboseLogger?.logBinderReceivedSignalIcon(
                                view,
                                viewModel.subscriptionId,
                                icon,
                                newIcon,
                            )
                            if (icon is SignalIconModel.Cellular) {
                            if (newIcon is SignalIconModel.Cellular) {
                                iconView.setImageDrawable(mobileDrawable)
                                mobileDrawable.level = icon.toSignalDrawableState()
                            } else if (icon is SignalIconModel.Satellite) {
                                IconViewBinder.bind(icon.icon, iconView)
                                mobileDrawable.level = newIcon.toSignalDrawableState()
                            } else if (newIcon is SignalIconModel.Satellite) {
                                IconViewBinder.bind(newIcon.icon, iconView)
                            }
                            if (shouldRequestLayout) {
                                iconView.requestLayout()
                            }
                        }

+28 −10
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import android.widget.ImageView
import com.android.settingslib.flags.Flags.newStatusBarIcons
import com.android.systemui.kairos.BuildSpec
import com.android.systemui.kairos.ExperimentalKairosApi
import com.android.systemui.kairos.KairosNetwork
@@ -130,17 +129,36 @@ class ModernStatusBarMobileView(context: Context, attrs: AttributeSet?) :
                        as ModernStatusBarMobileView)
                    .apply {
                        // Flag-specific configuration
                        if (newStatusBarIcons()) {
                            // New icon (with no embedded whitespace) is slightly shorter
                            // (but actually taller)
                            val iconView = requireViewById<ImageView>(R.id.mobile_signal)
                            val lp = iconView.layoutParams
                            lp.height =
                        if (NewStatusBarIcons.isEnabled) {
                            // triangle
                            requireViewById<ImageView>(R.id.mobile_signal).apply {
                                layoutParams.height =
                                    context.resources.getDimensionPixelSize(
                                        R.dimen.status_bar_mobile_signal_size_updated
                                    )
                            }

                            // RAT indicator container
                            requireViewById<FrameLayout>(R.id.mobile_type_container).apply {
                                (layoutParams as MarginLayoutParams).marginEnd =
                                    context.resources.getDimensionPixelSize(
                                        R.dimen.status_bar_mobile_container_margin_end
                                    )
                                layoutParams.height =
                                    context.resources.getDimensionPixelSize(
                                        R.dimen.status_bar_mobile_container_height_updated
                                    )
                            }

                            // RAT indicator
                            requireViewById<ImageView>(R.id.mobile_type).apply {
                                layoutParams.height =
                                    context.resources.getDimensionPixelSize(
                                        R.dimen.status_bar_mobile_type_size_updated
                                    )
                            }
                        }

                        subId = subscriptionId
                    }