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

Commit 39a9943d authored by Steve Elliott's avatar Steve Elliott Committed by Android (Google) Code Review
Browse files

Merge changes I886c1b75,I12a80e19 into main

* changes:
  [kairos] fix ModernStatusBarMobileView size issue
  [kairos] Rename GroupedEvents -> KeyedEvents
parents 76b78135 03563cba
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())
+3 −3
Original line number Diff line number Diff line
@@ -28,8 +28,8 @@ import com.android.systemui.activated
import com.android.systemui.kairos.BuildScope
import com.android.systemui.kairos.Events
import com.android.systemui.kairos.ExperimentalKairosApi
import com.android.systemui.kairos.GroupedEvents
import com.android.systemui.kairos.Incremental
import com.android.systemui.kairos.KeyedEvents
import com.android.systemui.kairos.State
import com.android.systemui.kairos.TransactionScope
import com.android.systemui.kairos.asIncremental
@@ -84,13 +84,13 @@ constructor(
            event?.let { (event.subId ?: lastSeenSubId.sample())?.let { it to event } }
        }

    private val mobileEventsBySubId: GroupedEvents<Int, FakeNetworkEventModel> =
    private val mobileEventsBySubId: KeyedEvents<Int, FakeNetworkEventModel> =
        mobileEventsWithSubId.map { mapOf(it) }.groupByKey()

    private val carrierMergedEvents: Events<FakeWifiEventModel.CarrierMerged> =
        wifiEvents.filterIsInstance<FakeWifiEventModel.CarrierMerged>()

    private val wifiEventsBySubId: GroupedEvents<Int, FakeWifiEventModel.CarrierMerged> =
    private val wifiEventsBySubId: KeyedEvents<Int, FakeWifiEventModel.CarrierMerged> =
        carrierMergedEvents.groupBy { it.subscriptionId }

    private val lastSeenSubId: State<Int?> = buildState {
+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
                    }

+1 −1
Original line number Diff line number Diff line
@@ -186,7 +186,7 @@ fun <A, B> Events<A>.map(transform: TransactionScope.(A) -> B): Events<B> {

/**
 * Like [map], but the emission is not cached during the transaction. Use only if [transform] is
 * fast and pure.
 * fast and pure. If you are unsure if you need this, then you should prefer [map].
 *
 * @sample com.android.systemui.kairos.KairosSamples.mapCheap
 * @see map
Loading