Loading core/res/res/values/config.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading packages/SystemUI/res/layout/bindable_status_bar_compose_icon.xml 0 → 100644 +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> packages/SystemUI/src/com/android/systemui/statusbar/pipeline/icons/shared/BindableIconsRegistry.kt +4 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) } packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt +19 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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> Loading Loading @@ -126,6 +132,7 @@ interface MobileIconsInteractor { fun getMobileConnectionInteractorForSubId(subId: Int): MobileIconInteractor } @OptIn(ExperimentalCoroutinesApi::class) @Suppress("EXPERIMENTAL_IS_NOT_ENABLED") @SysUISingleton class MobileIconsInteractorImpl Loading Loading @@ -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 Loading
core/res/res/values/config.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading
packages/SystemUI/res/layout/bindable_status_bar_compose_icon.xml 0 → 100644 +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>
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/icons/shared/BindableIconsRegistry.kt +4 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) }
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt +19 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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> Loading Loading @@ -126,6 +132,7 @@ interface MobileIconsInteractor { fun getMobileConnectionInteractorForSubId(subId: Int): MobileIconInteractor } @OptIn(ExperimentalCoroutinesApi::class) @Suppress("EXPERIMENTAL_IS_NOT_ENABLED") @SysUISingleton class MobileIconsInteractorImpl Loading Loading @@ -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