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

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

Merge "[kairos] ModernShadeCarrierGroupMobileView.binding" into main

parents 5c7913e3 5bdf6d0e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -675,7 +675,7 @@ private fun ShadeCarrierGroupKairos(
                val scope = rememberCoroutineScope()
                AndroidView(
                    factory = { context ->
                        ModernShadeCarrierGroupMobileView.constructAndBind(
                        ModernShadeCarrierGroupMobileView.constructAndBindKairos(
                                context = context,
                                logger = iconsViewModel.logger,
                                slot = "mobile_carrier_shade_group",
+1 −1
Original line number Diff line number Diff line
@@ -289,7 +289,7 @@ public class ShadeCarrierGroupController {
                        mMobileContextProvider.getMobileContextForSub(iconData.subId, mContext);

                Pair<ModernShadeCarrierGroupMobileView, Job> viewAndJob =
                        ModernShadeCarrierGroupMobileView.constructAndBind(
                        ModernShadeCarrierGroupMobileView.constructAndBindKairos(
                                mobileContext,
                                mobileIconsViewModel.getLogger(),
                                "mobile_carrier_shade_group",
+25 −9
Original line number Diff line number Diff line
@@ -24,19 +24,27 @@ import com.android.systemui.kairos.util.nameTag
import com.android.systemui.lifecycle.repeatWhenWindowIsVisible
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.ShadeCarrierGroupMobileIconViewModelKairos
import com.android.systemui.util.AutoMarqueeTextView
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch

object ShadeCarrierBinderKairos {
    /** Binds the view to the view-model, continuing to update the former based on the latter */
    @ExperimentalKairosApi
    suspend fun bind(
    fun bind(
        subId: Int,
        carrierTextView: AutoMarqueeTextView,
        viewModel: BuildSpec<ShadeCarrierGroupMobileIconViewModelKairos>,
        kairosNetwork: KairosNetwork,
    ) {
        scope: CoroutineScope,
    ): Pair<ShadeCarrierBinding, Job> {
        carrierTextView.isVisible = true
        val job =
            scope.launch {
                carrierTextView.repeatWhenWindowIsVisible {
            kairosNetwork.activateSpec(nameTag { "ShadeCarrierBinderKairos(subId=$subId).bind" }) {
                    kairosNetwork.activateSpec(
                        nameTag { "ShadeCarrierBinderKairos(subId=$subId).bind" }
                    ) {
                        viewModel.applySpec().carrierName.observe(
                            name = nameTag { "ShadeCarrierBinderKairos(subId=$subId).carrierName" }
                        ) {
@@ -45,4 +53,12 @@ object ShadeCarrierBinderKairos {
                    }
                }
            }
        val binding =
            object : ShadeCarrierBinding {
                override fun setTextAppearance(resId: Int) {
                    carrierTextView.setTextAppearance(resId)
                }
            }
        return binding to job
    }
}
+10 −3
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ class ModernShadeCarrierGroupMobileView(context: Context, attrs: AttributeSet?)
         */
        @ExperimentalKairosApi
        @JvmStatic
        fun constructAndBind(
        fun constructAndBindKairos(
            context: Context,
            logger: MobileViewLogger,
            slot: String,
@@ -161,13 +161,20 @@ class ModernShadeCarrierGroupMobileView(context: Context, attrs: AttributeSet?)

                    val textView =
                        view.requireViewById<AutoMarqueeTextView>(R.id.mobile_carrier_text)
                    launch {
                    val (shadeCarrierBinding, _) =
                        ShadeCarrierBinderKairos.bind(
                            subscriptionId,
                            textView,
                            buildSpec { viewModel },
                            kairosNetwork,
                            this,
                        )
                    view.binding =
                        object : ModernShadeCarrierGroupMobileViewBinding {
                            override fun setStyleAndTint(style: Int, fgColor: Int, bgColor: Int) {
                                iconView.setStaticDrawableColor(fgColor, bgColor)
                                shadeCarrierBinding.setTextAppearance(style)
                            }
                        }
                }
        }