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

Commit f8eea659 authored by Evan Laird's avatar Evan Laird
Browse files

[sb] adjust paddings around new wifi/mobile icons

- Constrain the RAT height to 12sp
- 3sp of padding on the start/end of each icon group
- adjust the padding of the system icons container in all contexts
  (keyguard, home screen, shade header)
- ShadeHead.kt will be updated next

Test: manual (see screenshots)
Test: screenshot tests
Flag: com.android.settingslib.flags.new_status_bar_icons
Bug: 397936541
Change-Id: I2aec5ca6f38703314df442c79f9194c6794dd5d9
parent 0f44b427
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -189,6 +189,9 @@
    <!-- End padding for left-aligned status bar clock -->
    <dimen name="status_bar_left_clock_end_padding">2sp</dimen>

    <!-- Margins before/after the new wifi icon -->
    <dimen name="status_bar_wifi_signal_horizontal_margin">3sp</dimen>

    <!-- Spacing after the wifi signals that is present if there are any icons following it. -->
    <dimen name="status_bar_wifi_signal_spacer_width">2.5sp</dimen>

@@ -197,6 +200,7 @@
    <!-- Size of the view displaying the wifi signal icon in the status bar. This value should
        match the core/status_bar_system_icon_size and change to sp unit -->
    <dimen name="status_bar_wifi_signal_size">15sp</dimen>
    <dimen name="status_bar_wifi_signal_height_updated">12sp</dimen>

    <!-- Size of the view displaying the mobile inout icon in the status bar. -->
    <dimen name="status_bar_mobile_inout_container_size">17sp</dimen>
@@ -218,13 +222,17 @@
        Note: can be removed once new_status_bar_icons is rolled out -->
    <dimen name="status_bar_mobile_container_corner_radius">9sp</dimen>

    <!-- Start-side margin for the mobile container (before the RAT or triangle) -->
    <dimen name="status_bar_mobile_container_margin_start">3sp</dimen>
    <dimen name="status_bar_mobile_container_margin_end">3sp</dimen>

    <!-- Size of the view displaying the mobile signal icon in the status bar. This value should
        match the viewport height of mobile signal drawables such as ic_lte_mobiledata -->
    <dimen name="status_bar_mobile_type_size_updated">12sp</dimen>
    <!-- Size of the view that contains the network type. Should be equal to
   status_bar_mobile_type_size + 2, to account for 1sp top and bottom padding -->
    <dimen name="status_bar_mobile_container_height_updated">14sp</dimen>
    <dimen name="status_bar_mobile_container_margin_end">2sp</dimen>
    <dimen name="status_bar_mobile_container_height_updated">12sp</dimen>
    <dimen name="status_bar_mobile_type_container_margin_end">2sp</dimen>
    <!-- Corner radius for the background of the network type indicator. Should be equal to
        status_bar_mobile_container_height / 2 -->
    <dimen name="status_bar_mobile_container_corner_radius_updated">7sp</dimen>
@@ -1013,6 +1021,8 @@

    <!-- Padding between signal cluster and battery icon -->
    <dimen name="signal_cluster_battery_padding">6dp</dimen>
    <!-- Padding between signal cluster and battery icon when NewStatusBarIcons is on -->
    <dimen name="signal_cluster_battery_padding_new">3sp</dimen>

    <!-- end padding for battery icon in status bar -->
    <dimen name="status_bar_battery_end_padding">0dp</dimen>
+6 −1
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.view.ViewGroup
import android.view.WindowInsets
import android.widget.TextView
import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
@@ -45,6 +44,7 @@ import androidx.core.view.doOnLayout
import androidx.core.view.isVisible
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.app.animation.Interpolators
import com.android.keyguard.AlphaOptimizedLinearLayout
import com.android.settingslib.Utils
import com.android.systemui.Dumpable
import com.android.systemui.animation.ShadeInterpolation
@@ -78,6 +78,7 @@ import com.android.systemui.statusbar.phone.ui.StatusBarIconController
import com.android.systemui.statusbar.phone.ui.TintedIconManager
import com.android.systemui.statusbar.pipeline.battery.ui.composable.BatteryWithEstimate
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel
import com.android.systemui.statusbar.pipeline.shared.ui.view.SystemStatusIconsLayoutHelper
import com.android.systemui.statusbar.policy.Clock
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.NextAlarmController
@@ -361,6 +362,10 @@ constructor(
                fgColor, /* single tone (current default) */
            )
        } else {
            // Configure the correct margins for the system icon container
            val statusIcons = mView.requireViewById<AlphaOptimizedLinearLayout>(R.id.statusIcons)
            SystemStatusIconsLayoutHelper.configurePaddingForNewStatusBarIcons(statusIcons)

            // Configure the compose battery view
            val batteryComposeView =
                ComposeView(mView.context).apply {
+6 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import androidx.core.animation.AnimatorListenerAdapter;
import androidx.core.animation.ValueAnimator;

import com.android.app.animation.InterpolatorsAndroidX;
import com.android.keyguard.AlphaOptimizedLinearLayout;
import com.android.keyguard.CarrierTextController;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
@@ -82,6 +83,7 @@ import com.android.systemui.statusbar.phone.ui.StatusBarIconController;
import com.android.systemui.statusbar.phone.ui.TintedIconManager;
import com.android.systemui.statusbar.pipeline.battery.ui.binder.UnifiedBatteryViewBinder;
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel;
import com.android.systemui.statusbar.pipeline.shared.ui.view.SystemStatusIconsLayoutHelper;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -492,6 +494,10 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
                    DarkIconInteractor.toIsAreaDark(mView.darkChangeFlow()));

            mSystemIconsContainer.addView(batteryComposeView, -1);
            // Set the margins for the system icons appropriately
            AlphaOptimizedLinearLayout systemIcons =
                    mSystemIconsContainer.findViewById(R.id.statusIcons);
            SystemStatusIconsLayoutHelper.configurePaddingForNewStatusBarIcons(systemIcons);
        }
    }

+55 −59
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import android.widget.ImageView
import com.android.keyguard.AlphaOptimizedLinearLayout
import com.android.systemui.kairos.BuildSpec
import com.android.systemui.kairos.ExperimentalKairosApi
import com.android.systemui.kairos.KairosNetwork
@@ -51,27 +52,26 @@ class ModernStatusBarMobileView(context: Context, attrs: AttributeSet?) :
            "viewString=${super.toString()}"
    }

    companion object {

    /**
         * Inflates a new instance of [ModernStatusBarMobileView], binds it to [viewModel], and
         * returns it.
     * When [NewStatusBarIcons] is enabled, we have to tweak the layout. This can be moved directly
     * into the layout xml when the flag is rolled out fully
     */
        @JvmStatic
        fun constructAndBind(
            context: Context,
            logger: MobileViewLogger,
            slot: String,
            viewModel: LocationBasedMobileViewModel,
        ): ModernStatusBarMobileView {
            return (LayoutInflater.from(context)
                    .inflate(R.layout.status_bar_mobile_signal_group_new, null)
                    as ModernStatusBarMobileView)
                .also {
                    // Flag-specific configuration
                    if (NewStatusBarIcons.isEnabled) {
    private fun configureLayoutForNewStatusBarIcons() {
        // Margins around the entire container
        requireViewById<AlphaOptimizedLinearLayout>(R.id.mobile_group).apply {
            val lp = layoutParams as MarginLayoutParams
            lp.marginStart =
                context.resources.getDimensionPixelSize(
                    R.dimen.status_bar_mobile_container_margin_start
                )
            lp.marginEnd =
                context.resources.getDimensionPixelSize(
                    R.dimen.status_bar_mobile_container_margin_end
                )
        }

        // triangle
                        it.requireViewById<ImageView>(R.id.mobile_signal).apply {
        requireViewById<ImageView>(R.id.mobile_signal).apply {
            layoutParams.height =
                context.resources.getDimensionPixelSize(
                    R.dimen.status_bar_mobile_signal_size_updated
@@ -79,10 +79,12 @@ class ModernStatusBarMobileView(context: Context, attrs: AttributeSet?) :
        }

        // RAT indicator container
                        it.requireViewById<FrameLayout>(R.id.mobile_type_container).apply {
        requireViewById<FrameLayout>(R.id.mobile_type_container).apply {
            // marginStart is moved to the outer group
            (layoutParams as MarginLayoutParams).marginStart = 0
            (layoutParams as MarginLayoutParams).marginEnd =
                context.resources.getDimensionPixelSize(
                                    R.dimen.status_bar_mobile_container_margin_end
                    R.dimen.status_bar_mobile_type_container_margin_end
                )
            layoutParams.height =
                context.resources.getDimensionPixelSize(
@@ -91,19 +93,39 @@ class ModernStatusBarMobileView(context: Context, attrs: AttributeSet?) :
        }

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

                    it.subId = viewModel.subscriptionId
                    it.initView(slot) {
                        MobileIconBinder.bind(view = it, viewModel = viewModel, logger = logger)
    companion object {

        /**
         * Inflates a new instance of [ModernStatusBarMobileView], binds it to [viewModel], and
         * returns it.
         */
        @JvmStatic
        fun constructAndBind(
            context: Context,
            logger: MobileViewLogger,
            slot: String,
            viewModel: LocationBasedMobileViewModel,
        ): ModernStatusBarMobileView {
            return (LayoutInflater.from(context)
                    .inflate(R.layout.status_bar_mobile_signal_group_new, null)
                    as ModernStatusBarMobileView)
                .apply {
                    // Flag-specific configuration
                    if (NewStatusBarIcons.isEnabled) {
                        configureLayoutForNewStatusBarIcons()
                    }

                    subId = viewModel.subscriptionId
                    initView(slot) {
                        MobileIconBinder.bind(view = this, viewModel = viewModel, logger = logger)
                    }
                    logger.logNewViewBinding(it, viewModel)
                    logger.logNewViewBinding(this, viewModel)
                }
        }

@@ -130,33 +152,7 @@ class ModernStatusBarMobileView(context: Context, attrs: AttributeSet?) :
                    .apply {
                        // Flag-specific configuration
                        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
                                    )
                            }
                            configureLayoutForNewStatusBarIcons()
                        }

                        subId = subscriptionId
+5 −1
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
@@ -69,6 +68,7 @@ import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewM
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarIconBlockListBinder
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinder
import com.android.systemui.statusbar.pipeline.shared.ui.model.VisibilityModel
import com.android.systemui.statusbar.pipeline.shared.ui.view.SystemStatusIconsLayoutHelper
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel.HomeStatusBarViewModelFactory
import javax.inject.Inject
@@ -294,6 +294,10 @@ fun StatusBarRoot(
                    // of the system_icons container
                    if (NewStatusBarIcons.isEnabled) {
                        addBatteryComposable(phoneStatusBarView, statusBarViewModel)
                        // Also adjust the paddings :)
                        SystemStatusIconsLayoutHelper.configurePaddingForNewStatusBarIcons(
                            phoneStatusBarView.requireViewById(R.id.statusIcons)
                        )
                    }

                    notificationIconsBinder.bindWhileAttached(
Loading