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

Commit 982cee25 authored by Olivier St-Onge's avatar Olivier St-Onge Committed by Android (Google) Code Review
Browse files

Merge "Initial implementation for dual sim icon" into main

parents bec48ec2 27980c60
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@
        <item><xliff:g id="id">@string/status_bar_oem_satellite</xliff:g></item>
        <item><xliff:g id="id">@string/status_bar_wifi</xliff:g></item>
        <item><xliff:g id="id">@string/status_bar_hotspot</xliff:g></item>
        <item><xliff:g id="id">@string/status_bar_stacked_mobile</xliff:g></item>
        <item><xliff:g id="id">@string/status_bar_mobile</xliff:g></item>
        <item><xliff:g id="id">@string/status_bar_airplane</xliff:g></item>
        <item><xliff:g id="id">@string/status_bar_battery</xliff:g></item>
@@ -94,6 +95,7 @@
    <string translatable="false" name="status_bar_secure">secure</string>
    <string translatable="false" name="status_bar_clock">clock</string>
    <string translatable="false" name="status_bar_mobile">mobile</string>
    <string translatable="false" name="status_bar_stacked_mobile">stacked_mobile</string>
    <string translatable="false" name="status_bar_vpn">vpn</string>
    <string translatable="false" name="status_bar_ethernet">ethernet</string>
    <string translatable="false" name="status_bar_microphone">microphone</string>
+1 −0
Original line number Diff line number Diff line
@@ -3320,6 +3320,7 @@
  <java-symbol type="string" name="status_bar_no_calling" />
  <java-symbol type="string" name="status_bar_call_strength" />
  <java-symbol type="string" name="status_bar_mobile" />
  <java-symbol type="string" name="status_bar_stacked_mobile" />
  <java-symbol type="string" name="status_bar_ethernet" />
  <java-symbol type="string" name="status_bar_vpn" />
  <java-symbol type="string" name="status_bar_microphone" />
+33 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?><!--
  ~ Copyright (C) 2023 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<!-- Base layout that provides a single bindable compose view -->
<com.android.systemui.statusbar.pipeline.shared.ui.view.SingleBindableStatusBarComposeIconView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    >

    <androidx.compose.ui.platform.ComposeView
        android:id="@+id/compose_view"
        android:layout_height="@dimen/status_bar_bindable_icon_size"
        android:layout_width="wrap_content"
        android:layout_gravity="center_vertical"
        android:padding="4sp"
        />

</com.android.systemui.statusbar.pipeline.shared.ui.view.SingleBindableStatusBarComposeIconView>
+4 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.pipeline.icons.shared

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.pipeline.icons.shared.model.BindableIcon
import com.android.systemui.statusbar.pipeline.mobile.ui.StackedMobileBindableIcon
import com.android.systemui.statusbar.pipeline.satellite.ui.DeviceBasedSatelliteBindableIcon
import javax.inject.Inject

@@ -40,11 +41,12 @@ class BindableIconsRegistryImpl
@Inject
constructor(
    /** Bindables go here */
    oemSatellite: DeviceBasedSatelliteBindableIcon
    oemSatellite: DeviceBasedSatelliteBindableIcon,
    stackedMobile: StackedMobileBindableIcon,
) : BindableIconsRegistry {
    /**
     * Adding the injected bindables to this list will get them registered with
     * StatusBarIconController
     */
    override val bindableIcons: List<BindableIcon> = listOf(oemSatellite)
    override val bindableIcons: List<BindableIcon> = listOf(oemSatellite, stackedMobile)
}
+19 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.telephony.CarrierConfigManager
import android.telephony.SubscriptionManager
import android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING
import com.android.settingslib.SignalIcon.MobileIconGroup
import com.android.settingslib.flags.Flags
import com.android.settingslib.mobile.TelephonyIcons
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
@@ -28,6 +29,7 @@ import com.android.systemui.flags.FeatureFlagsClassic
import com.android.systemui.flags.Flags.FILTER_PROVISIONING_NETWORK_SUBSCRIPTIONS
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.logDiffsForTable
import com.android.systemui.statusbar.core.StatusBarRootModernization
import com.android.systemui.statusbar.pipeline.dagger.MobileSummaryLog
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
@@ -39,6 +41,7 @@ import com.android.systemui.util.CarrierConfigTracker
import java.lang.ref.WeakReference
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
@@ -79,6 +82,9 @@ interface MobileIconsInteractor {
     */
    val icons: StateFlow<List<MobileIconInteractor>>

    /** Whether the mobile icons can be stacked vertically. */
    val isStackable: StateFlow<Boolean>

    /** True if the active mobile data subscription has data enabled */
    val activeDataConnectionHasDataEnabled: StateFlow<Boolean>

@@ -126,6 +132,7 @@ interface MobileIconsInteractor {
    fun getMobileConnectionInteractorForSubId(subId: Int): MobileIconInteractor
}

@OptIn(ExperimentalCoroutinesApi::class)
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
@SysUISingleton
class MobileIconsInteractorImpl
@@ -290,6 +297,18 @@ constructor(
            }
            .stateIn(scope, SharingStarted.WhileSubscribed(), emptyList())

    override val isStackable =
        if (Flags.newStatusBarIcons() && StatusBarRootModernization.isEnabled) {
                icons.flatMapLatest { icons ->
                    combine(icons.map { it.isNonTerrestrial }) {
                        it.size == 2 && it.none { isNonTerrestrial -> isNonTerrestrial }
                    }
                }
            } else {
                flowOf(false)
            }
            .stateIn(scope, SharingStarted.WhileSubscribed(), false)

    /**
     * Copied from the old pipeline. We maintain a 2s period of time where we will keep the
     * validated bit from the old active network (A) while data is changing to the new one (B).
Loading