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

Commit 58c8ec43 authored by Evan Laird's avatar Evan Laird
Browse files

[battery] new more specific view models

Instead of a single view model that describes the state needed for all
use cases (lock screen, home status bar, shade), this CL breaks out the
different behaviors into separate view models that are named by their
behavior.

When utilizing a UnifiedBattery, you can now chose between 3 concrete
view model behaviors that show percentage either when charging, based on
the setting, or always.

Test: BatteryViewModelAlwaysShowPercentTest
Test: BatteryViewModelBasedOnSettingTest
Test: BatteryViewModelShowWhenChargingTest
Test: manual via `adb shell cmd battery`
Bug: 406773990
Flag: com.android.settingslib.flags.new_status_bar_icons
Flag: com.android.systemui.status_bar_root_modernization
Change-Id: I212b07940ffc1e92d228b176f394549d58b08ad0
parent 5e2a4186
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -58,8 +58,8 @@ import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler
import com.android.systemui.statusbar.layout.mockStatusBarContentInsetsProvider
import com.android.systemui.statusbar.phone.ui.StatusBarIconController
import com.android.systemui.statusbar.phone.ui.TintedIconManager
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.batteryViewModelShowWhenChargingOrSettingFactory
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.batteryWithPercentViewModelFactory
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.unifiedBatteryViewModelFactory
import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.KeyguardStateController
@@ -200,7 +200,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() {
            iconManagerFactory,
            batteryMeterViewController,
            kosmos.batteryWithPercentViewModelFactory,
            kosmos.unifiedBatteryViewModelFactory,
            kosmos.batteryViewModelShowWhenChargingOrSettingFactory,
            shadeViewStateProvider,
            keyguardStateController,
            keyguardBypassController,
+5 −5
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ import com.android.systemui.statusbar.events.shared.model.SystemEventAnimationSt
import com.android.systemui.statusbar.featurepods.popups.ui.model.PopupChipModel
import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryNextToPercentViewModel
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.UnifiedBatteryViewModel
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel
import com.android.systemui.statusbar.pipeline.shared.ui.model.ChipsVisibilityModel
import com.android.systemui.statusbar.pipeline.shared.ui.model.SystemInfoCombinedVisibilityModel
import com.android.systemui.statusbar.pipeline.shared.ui.model.VisibilityModel
@@ -79,11 +79,11 @@ class FakeHomeStatusBarViewModel(
                mock(BatteryNextToPercentViewModel::class.java)
        }

    override val unifiedBatteryViewModel: UnifiedBatteryViewModel.Factory =
        object : UnifiedBatteryViewModel.Factory {
            override fun create(): UnifiedBatteryViewModel =
                mock(UnifiedBatteryViewModel::class.java)
    override val unifiedBatteryViewModel: BatteryViewModel.BasedOnUserSetting.Factory =
        BatteryViewModel.BasedOnUserSetting.Factory {
            mock(BatteryViewModel.BasedOnUserSetting::class.java)
        }

    override val systemStatusIconsViewModelFactory: SystemStatusIconsViewModel.Factory =
        object : SystemStatusIconsViewModel.Factory {
            override fun create(): SystemStatusIconsViewModel =
+2 −2
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ import com.android.systemui.statusbar.pipeline.battery.ui.composable.BatteryWith
import com.android.systemui.statusbar.pipeline.battery.ui.composable.BatteryWithEstimate
import com.android.systemui.statusbar.pipeline.battery.ui.composable.ShowPercentMode
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryNextToPercentViewModel
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.UnifiedBatteryViewModel
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
@@ -122,7 +122,7 @@ constructor(
    private val shadeDisplaysRepositoryLazy: Lazy<ShadeDisplaysRepository>,
    private val variableDateViewControllerFactory: VariableDateViewController.Factory,
    @Named(SHADE_HEADER) private val batteryMeterViewController: BatteryMeterViewController,
    private val unifiedBatteryViewModelFactory: UnifiedBatteryViewModel.Factory,
    private val unifiedBatteryViewModelFactory: BatteryViewModel.AlwaysShowPercent.Factory,
    private val tandemBatteryViewModelFactory: BatteryNextToPercentViewModel.Factory,
    private val dumpManager: DumpManager,
    private val shadeCarrierGroupControllerBuilder: ShadeCarrierGroupController.Builder,
+2 −2
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark
import com.android.systemui.statusbar.phone.domain.interactor.ShadeDarkIconInteractor
import com.android.systemui.statusbar.phone.ui.StatusBarIconController
import com.android.systemui.statusbar.phone.ui.TintedIconManager
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.UnifiedBatteryViewModel
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModelKairos
@@ -86,7 +86,7 @@ constructor(
    private val tintedIconManagerFactory: TintedIconManager.Factory,
    private val batteryMeterViewControllerFactory: BatteryMeterViewController.Factory,
    val statusBarIconController: StatusBarIconController,
    val batteryViewModelFactory: UnifiedBatteryViewModel.Factory,
    val batteryViewModelFactory: BatteryViewModel.AlwaysShowPercent.Factory,
    val kairosNetwork: KairosNetwork,
    val mobileIconsViewModelKairos: dagger.Lazy<MobileIconsViewModelKairos>,
    private val dualShadeEducationInteractor: DualShadeEducationInteractor,
+1 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ import com.android.systemui.statusbar.pipeline.battery.shared.ui.BatteryColors
import com.android.systemui.statusbar.pipeline.battery.shared.ui.BatteryGlyph
import com.android.systemui.statusbar.pipeline.battery.ui.composable.BatteryLayout
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.UnifiedBatteryViewModel.Companion.glyphRepresentation
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel.Companion.glyphRepresentation
import java.text.NumberFormat

/**
Loading