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

Commit 87d873fc authored by Evan Laird's avatar Evan Laird Committed by Android (Google) Code Review
Browse files

Merge changes from topics "battery-chip-color", "battery-sp" into main

* changes:
  [sb] use sp to define the status bar battery metrics
  [bat] use battery charging fg color for chip bg
parents 4f53d43f 3b86e162
Loading
Loading
Loading
Loading
+22 −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.
-->

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/ongoing_appops_chip_bg_corner_radius" />
    <!--  Use the battery charging fg color, since the battery will
          always be charging in this chip see BatteryColors.kt -->
    <solid android:color="#162100" />
</shape>
 No newline at end of file
+2 −3
Original line number Diff line number Diff line
@@ -36,11 +36,10 @@ import android.view.WindowInsets
import android.widget.TextView
import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.unit.dp
import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.core.view.doOnLayout
import androidx.core.view.isVisible
@@ -369,7 +368,7 @@ constructor(
                        id = R.id.battery_meter_composable_view
                        val showBatteryEstimate by showBatteryEstimate.collectAsStateWithLifecycle()
                        BatteryWithEstimate(
                            modifier = Modifier.height(17.dp).wrapContentWidth(),
                            modifier = Modifier.wrapContentSize(),
                            viewModelFactory = batteryViewModelFactory,
                            isDark = { true },
                            showEstimate = showBatteryEstimate,
+6 −5
Original line number Diff line number Diff line
@@ -22,10 +22,11 @@ import android.util.AttributeSet
import android.view.View
import android.widget.FrameLayout
import android.widget.LinearLayout
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalDensity
import com.android.systemui.res.R
import com.android.systemui.statusbar.core.NewStatusBarIcons
import com.android.systemui.statusbar.events.BackgroundAnimatableView
@@ -62,10 +63,10 @@ constructor(level: Int, context: Context, attrs: AttributeSet? = null) :
        composeInner.apply {
            setContent {
                val isFull = BatteryInteractor.isBatteryFull(level)
                val height =
                    with(LocalDensity.current) { BatteryViewModel.STATUS_BAR_BATTERY_HEIGHT.toDp() }
                BatteryCanvas(
                    modifier =
                        Modifier.width(BatteryViewModel.STATUS_BAR_BATTERY_WIDTH)
                            .height(BatteryViewModel.STATUS_BAR_BATTERY_HEIGHT),
                    modifier = Modifier.height(height).aspectRatio(BatteryViewModel.ASPECT_RATIO),
                    path = BatteryFrame.pathSpec,
                    // TODO(b/394659067): get a content description for this chip
                    contentDescription = "",
@@ -95,6 +96,6 @@ constructor(level: Int, context: Context, attrs: AttributeSet? = null) :

    @SuppressLint("UseCompatLoadingForDrawables")
    private fun updateResources() {
        roundedContainer.background = mContext.getDrawable(R.drawable.statusbar_chip_bg)
        roundedContainer.background = mContext.getDrawable(R.drawable.statusbar_battery_chip_bg)
    }
}
+4 −4
Original line number Diff line number Diff line
@@ -16,11 +16,12 @@

package com.android.systemui.statusbar.pipeline.battery.ui.binder

import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.core.view.isVisible
import androidx.lifecycle.Lifecycle
@@ -31,7 +32,6 @@ import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark
import com.android.systemui.statusbar.pipeline.battery.ui.composable.UnifiedBattery
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel.Companion.STATUS_BAR_BATTERY_HEIGHT
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel.Companion.STATUS_BAR_BATTERY_WIDTH
import kotlinx.coroutines.flow.Flow

/** In cases where the battery needs to be bound to an existing android view */
@@ -52,10 +52,10 @@ object UnifiedBatteryViewBinder {
                    )
                    setContent {
                        val isDark by isAreaDark.collectAsStateWithLifecycle(IsAreaDark { true })
                        val height = with(LocalDensity.current) { STATUS_BAR_BATTERY_HEIGHT.toDp() }
                        UnifiedBattery(
                            modifier =
                                Modifier.height(STATUS_BAR_BATTERY_HEIGHT)
                                    .width(STATUS_BAR_BATTERY_WIDTH),
                                Modifier.height(height).aspectRatio(BatteryViewModel.ASPECT_RATIO),
                            viewModelFactory = viewModelFactory,
                            isDark = isDark,
                        )
+12 −7
Original line number Diff line number Diff line
@@ -19,19 +19,22 @@ package com.android.systemui.statusbar.pipeline.battery.ui.composable
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.dp
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel

@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable
fun BatteryWithEstimate(
    viewModelFactory: BatteryViewModel.Factory,
@@ -42,20 +45,22 @@ fun BatteryWithEstimate(
    val viewModel =
        rememberViewModel(traceName = "BatteryWithEstimate") { viewModelFactory.create() }

    val batteryHeight =
        with(LocalDensity.current) { BatteryViewModel.STATUS_BAR_BATTERY_HEIGHT.toDp() }

    Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
        UnifiedBattery(
            viewModelFactory = viewModelFactory,
            isDark = isDark,
            modifier =
                Modifier.fillMaxHeight()
                    .padding(vertical = 2.dp)
                    .align(Alignment.Bottom)
                    .aspectRatio(viewModel.aspectRatio),
                Modifier.height(batteryHeight)
                    .align(Alignment.CenterVertically)
                    .aspectRatio(BatteryViewModel.ASPECT_RATIO),
        )
        if (showEstimate) {
            viewModel.batteryTimeRemainingEstimate?.let {
                Spacer(modifier.width(4.dp))
                Text(text = it, color = Color.White)
                Text(text = it, color = Color.White, style = MaterialTheme.typography.bodyMedium)
            }
        }
    }
Loading