summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java24
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/battery/ui/binder/UnifiedBatteryViewBinder.kt13
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,
+ )
}
}
}