diff options
4 files changed, 55 insertions, 7 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt index 57b7df7a8d31..31f8590c0378 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt @@ -51,11 +51,13 @@ import com.android.systemui.res.R import com.android.systemui.shade.ShadeViewStateProvider import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.StatusBarState +import com.android.systemui.statusbar.core.NewStatusBarIcons import com.android.systemui.statusbar.data.repository.StatusBarContentInsetsProviderStore 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.batteryViewModelFactory import com.android.systemui.statusbar.policy.BatteryController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController @@ -85,6 +87,7 @@ import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) @RunWithLooper(setAsMainLooper = true) +@DisableFlags(NewStatusBarIcons.FLAG_NAME) class KeyguardStatusBarViewControllerTest : SysuiTestCase() { private lateinit var kosmos: Kosmos private lateinit var testScope: TestScope @@ -190,6 +193,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { statusBarIconController, iconManagerFactory, batteryMeterViewController, + kosmos.batteryViewModelFactory, shadeViewStateProvider, keyguardStateController, keyguardBypassController, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java index a339bc98457e..c9a40f8ab5a5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -47,6 +47,7 @@ import com.android.settingslib.Utils; import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.res.R; +import com.android.systemui.statusbar.core.NewStatusBarIcons; import com.android.systemui.statusbar.layout.StatusBarContentInsetsProvider; import com.android.systemui.statusbar.phone.SysuiDarkIconDispatcher.DarkChange; import com.android.systemui.statusbar.phone.ui.TintedIconManager; @@ -78,7 +79,7 @@ public class KeyguardStatusBarView extends RelativeLayout { private TextView mCarrierLabel; private ImageView mMultiUserAvatar; - private BatteryMeterView mBatteryView; + @Nullable private BatteryMeterView mBatteryView; private StatusIconContainer mStatusIconContainer; private StatusBarUserSwitcherContainer mUserSwitcherContainer; @@ -127,6 +128,11 @@ public class KeyguardStatusBarView extends RelativeLayout { mMultiUserAvatar = findViewById(R.id.multi_user_avatar); mCarrierLabel = findViewById(R.id.keyguard_carrier_text); mBatteryView = mSystemIconsContainer.findViewById(R.id.battery); + if (NewStatusBarIcons.isEnabled()) { + // When this flag is rolled forward, this whole view can be removed + mBatteryView.setVisibility(View.GONE); + mBatteryView = null; + } mCutoutSpace = findViewById(R.id.cutout_space_view); mStatusIconArea = findViewById(R.id.status_icon_area); mStatusIconContainer = findViewById(R.id.statusIcons); @@ -255,7 +261,10 @@ public class KeyguardStatusBarView extends RelativeLayout { mMultiUserAvatar.setVisibility(View.GONE); } } - mBatteryView.setForceShowPercent(mBatteryCharging && mShowPercentAvailable); + + if (mBatteryView != null) { + mBatteryView.setForceShowPercent(mBatteryCharging && mShowPercentAvailable); + } } private void updateSystemIconsLayoutParams() { @@ -435,7 +444,9 @@ public class KeyguardStatusBarView extends RelativeLayout { /** Should only be called from {@link KeyguardStatusBarViewController}. */ void onThemeChanged(TintedIconManager iconManager) { - mBatteryView.setColorsFromContext(mContext); + if (mBatteryView != null) { + mBatteryView.setColorsFromContext(mContext); + } updateIconsAndTextColors(iconManager); } @@ -443,7 +454,9 @@ public class KeyguardStatusBarView extends RelativeLayout { void onOverlayChanged() { final int carrierTheme = R.style.TextAppearance_StatusBar_Clock; mCarrierLabel.setTextAppearance(carrierTheme); - mBatteryView.updatePercentView(); + if (mBatteryView != null) { + mBatteryView.updatePercentView(); + } final int userSwitcherTheme = R.style.TextAppearance_StatusBar_UserChip; TextView userSwitcherName = mUserSwitcherContainer.findViewById(R.id.current_user_name); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java index 40245aef4f67..de7215461c80 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java @@ -34,10 +34,12 @@ import android.provider.Settings; import android.util.MathUtils; import android.view.DisplayCutout; import android.view.View; +import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import androidx.compose.ui.platform.ComposeView; import androidx.core.animation.Animator; import androidx.core.animation.AnimatorListenerAdapter; import androidx.core.animation.ValueAnimator; @@ -62,6 +64,7 @@ import com.android.systemui.shade.ShadeViewStateProvider; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; +import com.android.systemui.statusbar.core.NewStatusBarIcons; import com.android.systemui.statusbar.data.repository.StatusBarContentInsetsProviderStore; import com.android.systemui.statusbar.disableflags.DisableStateTracker; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; @@ -71,10 +74,13 @@ import com.android.systemui.statusbar.notification.AnimatableProperty; import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; +import com.android.systemui.statusbar.phone.domain.interactor.DarkIconInteractor; import com.android.systemui.statusbar.phone.fragment.StatusBarIconBlocklistKt; import com.android.systemui.statusbar.phone.fragment.StatusBarSystemEventDefaultAnimator; 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.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -125,6 +131,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private final StatusBarIconController mStatusBarIconController; private final TintedIconManager.Factory mTintedIconManagerFactory; private final BatteryMeterViewController mBatteryMeterViewController; + private final BatteryViewModel.Factory mBatteryViewModelFactory; private final ShadeViewStateProvider mShadeViewStateProvider; private final KeyguardStateController mKeyguardStateController; private final KeyguardBypassController mKeyguardBypassController; @@ -145,7 +152,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private final GlanceableHubToLockscreenTransitionViewModel mHubToLockscreenTransitionViewModel; private final LockscreenToGlanceableHubTransitionViewModel mLockscreenToHubTransitionViewModel; - private View mSystemIconsContainer; + private ViewGroup mSystemIconsContainer; private final StatusOverlayHoverListenerFactory mStatusOverlayHoverListenerFactory; private final ConfigurationController.ConfigurationListener mConfigurationListener = @@ -327,6 +334,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat StatusBarIconController statusBarIconController, TintedIconManager.Factory tintedIconManagerFactory, BatteryMeterViewController batteryMeterViewController, + BatteryViewModel.Factory batteryViewModelFactory, ShadeViewStateProvider shadeViewStateProvider, KeyguardStateController keyguardStateController, KeyguardBypassController bypassController, @@ -360,6 +368,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat mStatusBarIconController = statusBarIconController; mTintedIconManagerFactory = tintedIconManagerFactory; mBatteryMeterViewController = batteryMeterViewController; + mBatteryViewModelFactory = batteryViewModelFactory; mShadeViewStateProvider = shadeViewStateProvider; mKeyguardStateController = keyguardStateController; mKeyguardBypassController = bypassController; @@ -417,7 +426,9 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat protected void onInit() { super.onInit(); mCarrierTextController.init(); - mBatteryMeterViewController.init(); + if (!NewStatusBarIcons.isEnabled()) { + mBatteryMeterViewController.init(); + } if (isMigrationEnabled()) { KeyguardStatusBarViewBinder.bind(mView, mKeyguardStatusBarViewModel); } @@ -469,6 +480,15 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat mToGlanceableHubStatusBarAlphaConsumer, mCoroutineDispatcher); collectFlow(mView, mHubToLockscreenTransitionViewModel.getStatusBarAlpha(), mFromGlanceableHubStatusBarAlphaConsumer, mCoroutineDispatcher); + if (NewStatusBarIcons.isEnabled()) { + ComposeView batteryComposeView = new ComposeView(mContext); + UnifiedBatteryViewBinder.bind( + batteryComposeView, + mBatteryViewModelFactory, + DarkIconInteractor.toIsAreaDark(mView.darkChangeFlow())); + + mSystemIconsContainer.addView(batteryComposeView, -1); + } } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/battery/ui/binder/UnifiedBatteryViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/battery/ui/binder/UnifiedBatteryViewBinder.kt index 903844efa3f0..9665c33ac4c7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/battery/ui/binder/UnifiedBatteryViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/battery/ui/binder/UnifiedBatteryViewBinder.kt @@ -16,7 +16,10 @@ package com.android.systemui.statusbar.pipeline.battery.ui.binder +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.ViewCompositionStrategy import androidx.core.view.isVisible @@ -27,6 +30,8 @@ import com.android.systemui.lifecycle.repeatWhenAttached 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 */ @@ -47,7 +52,13 @@ object UnifiedBatteryViewBinder { ) setContent { val isDark by isAreaDark.collectAsStateWithLifecycle(IsAreaDark { true }) - UnifiedBattery(viewModelFactory = viewModelFactory, isDark = isDark) + UnifiedBattery( + modifier = + Modifier.height(STATUS_BAR_BATTERY_HEIGHT) + .width(STATUS_BAR_BATTERY_WIDTH), + viewModelFactory = viewModelFactory, + isDark = isDark, + ) } } } |