diff options
16 files changed, 105 insertions, 11 deletions
diff --git a/packages/SystemUI/res/layout/quick_qs_status_icons.xml b/packages/SystemUI/res/layout/quick_qs_status_icons.xml index 74c39a335f4d..5cac39f723e1 100644 --- a/packages/SystemUI/res/layout/quick_qs_status_icons.xml +++ b/packages/SystemUI/res/layout/quick_qs_status_icons.xml @@ -76,7 +76,7 @@ android:layout_height="match_parent" android:paddingEnd="@dimen/signal_cluster_battery_padding" /> - <com.android.systemui.BatteryMeterView + <com.android.systemui.battery.BatteryMeterView android:id="@+id/batteryRemainingIcon" android:layout_height="match_parent" android:layout_width="0dp" diff --git a/packages/SystemUI/res/layout/split_shade_header.xml b/packages/SystemUI/res/layout/split_shade_header.xml index 401dc1955dbd..f2c5b7bd491c 100644 --- a/packages/SystemUI/res/layout/split_shade_header.xml +++ b/packages/SystemUI/res/layout/split_shade_header.xml @@ -78,7 +78,7 @@ android:layout_height="match_parent" android:paddingEnd="@dimen/signal_cluster_battery_padding" /> - <com.android.systemui.BatteryMeterView + <com.android.systemui.battery.BatteryMeterView android:id="@+id/batteryRemainingIcon" android:layout_width="wrap_content" android:layout_height="match_parent" diff --git a/packages/SystemUI/res/layout/system_icons.xml b/packages/SystemUI/res/layout/system_icons.xml index 818d1d77177b..6d5c7d40a5f8 100644 --- a/packages/SystemUI/res/layout/system_icons.xml +++ b/packages/SystemUI/res/layout/system_icons.xml @@ -29,7 +29,7 @@ android:gravity="center_vertical" android:orientation="horizontal"/> - <com.android.systemui.BatteryMeterView android:id="@+id/battery" + <com.android.systemui.battery.BatteryMeterView android:id="@+id/battery" android:layout_height="match_parent" android:layout_width="wrap_content" android:clipToPadding="false" diff --git a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardStatusBarViewModule.java b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardStatusBarViewModule.java index a6725234e4af..fc14b6a99008 100644 --- a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardStatusBarViewModule.java +++ b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardStatusBarViewModule.java @@ -18,6 +18,7 @@ package com.android.keyguard.dagger; import com.android.keyguard.CarrierText; import com.android.systemui.R; +import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.statusbar.phone.KeyguardStatusBarView; import dagger.Module; @@ -31,4 +32,11 @@ public abstract class KeyguardStatusBarViewModule { static CarrierText getCarrierText(KeyguardStatusBarView view) { return view.findViewById(R.id.keyguard_carrier_text); } + + /** */ + @Provides + @KeyguardStatusBarViewScope + static BatteryMeterView getBatteryMeterView(KeyguardStatusBarView view) { + return view.findViewById(R.id.battery); + } } diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java index 9e764920b13f..88c09dc0fcf5 100644 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 The Android Open Source Project + * Copyright (C) 2021 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. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.systemui; +package com.android.systemui.battery; import static android.provider.Settings.System.SHOW_BATTERY_PERCENT; @@ -50,6 +50,9 @@ import android.widget.TextView; import androidx.annotation.StyleRes; import com.android.settingslib.graph.ThemedBatteryDrawable; +import com.android.systemui.Dependency; +import com.android.systemui.DualToneHandler; +import com.android.systemui.R; import com.android.systemui.animation.Interpolators; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.plugins.DarkIconDispatcher; diff --git a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java new file mode 100644 index 000000000000..27a6b3c18bbb --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2021 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. + */ +package com.android.systemui.battery; + +import com.android.systemui.util.ViewController; + +import javax.inject.Inject; +/** Controller for {@link BatteryMeterView}. **/ +public class BatteryMeterViewController extends ViewController<BatteryMeterView> { + + @Inject + public BatteryMeterViewController(BatteryMeterView view) { + super(view); + } + + @Override + protected void onViewAttached() { + } + + @Override + protected void onViewDetached() { + } +} diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 34fc2c0515a5..6bf9eb408518 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -35,8 +35,8 @@ import android.widget.Space; import androidx.annotation.NonNull; import com.android.settingslib.Utils; -import com.android.systemui.BatteryMeterView; import com.android.systemui.R; +import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.qs.QSDetail.Callback; import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager; import com.android.systemui.statusbar.phone.StatusBarWindowView; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java index 54876da91981..73d1489d08e0 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java @@ -25,6 +25,7 @@ import androidx.annotation.NonNull; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; +import com.android.systemui.battery.BatteryMeterViewController; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.demomode.DemoMode; import com.android.systemui.demomode.DemoModeController; @@ -69,6 +70,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader private final PrivacyLogger mPrivacyLogger; private final PrivacyDialogController mPrivacyDialogController; private final QSExpansionPathInterpolator mQSExpansionPathInterpolator; + private final BatteryMeterViewController mBatteryMeterViewController; private final FeatureFlags mFeatureFlags; private boolean mListening; @@ -134,6 +136,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader SysuiColorExtractor colorExtractor, PrivacyDialogController privacyDialogController, QSExpansionPathInterpolator qsExpansionPathInterpolator, + BatteryMeterViewController batteryMeterViewController, FeatureFlags featureFlags) { super(view); mPrivacyItemController = privacyItemController; @@ -145,6 +148,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader mPrivacyLogger = privacyLogger; mPrivacyDialogController = privacyDialogController; mQSExpansionPathInterpolator = qsExpansionPathInterpolator; + mBatteryMeterViewController = batteryMeterViewController; mFeatureFlags = featureFlags; mQSCarrierGroupController = qsCarrierGroupControllerBuilder @@ -170,6 +174,11 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader } @Override + protected void onInit() { + mBatteryMeterViewController.init(); + } + + @Override protected void onViewAttached() { mPrivacyChip.setOnClickListener(mOnClickListener); diff --git a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java index 36a1910c600a..2046550413d3 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java +++ b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java @@ -23,6 +23,7 @@ import android.view.LayoutInflater; import android.view.View; import com.android.systemui.R; +import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.dagger.qualifiers.RootView; import com.android.systemui.plugins.qs.QS; import com.android.systemui.qs.QSContainerImpl; @@ -109,6 +110,12 @@ public interface QSFragmentModule { /** */ @Provides + static BatteryMeterView providesBatteryMeterView(QuickStatusBarHeader quickStatusBarHeader) { + return quickStatusBarHeader.findViewById(R.id.batteryRemainingIcon); + } + + /** */ + @Provides static QSFooterView providesQSFooterView(@RootView View view) { return view.findViewById(R.id.qs_footer); } 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 222ed631fd65..a73cad7d2c6d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -42,9 +42,9 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.android.settingslib.Utils; -import com.android.systemui.BatteryMeterView; import com.android.systemui.R; import com.android.systemui.animation.Interpolators; +import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import java.io.FileDescriptor; 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 5d8d36e5caf6..bfadc3f7582a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java @@ -26,6 +26,7 @@ import androidx.annotation.NonNull; import com.android.keyguard.CarrierTextController; import com.android.systemui.R; +import com.android.systemui.battery.BatteryMeterViewController; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.policy.BatteryController; @@ -50,6 +51,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private final UserInfoController mUserInfoController; private final StatusBarIconController mStatusBarIconController; private final StatusBarIconController.TintedIconManager.Factory mTintedIconManagerFactory; + private final BatteryMeterViewController mBatteryMeterViewController; private final ConfigurationController.ConfigurationListener mConfigurationListener = new ConfigurationController.ConfigurationListener() { @@ -115,7 +117,8 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat BatteryController batteryController, UserInfoController userInfoController, StatusBarIconController statusBarIconController, - StatusBarIconController.TintedIconManager.Factory tintedIconManagerFactory) { + StatusBarIconController.TintedIconManager.Factory tintedIconManagerFactory, + BatteryMeterViewController batteryMeterViewController) { super(view); mCarrierTextController = carrierTextController; mConfigurationController = configurationController; @@ -124,6 +127,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat mUserInfoController = userInfoController; mStatusBarIconController = statusBarIconController; mTintedIconManagerFactory = tintedIconManagerFactory; + mBatteryMeterViewController = batteryMeterViewController; Resources r = getResources(); mBlockedIcons = Collections.unmodifiableList(Arrays.asList( @@ -136,6 +140,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat protected void onInit() { super.onInit(); mCarrierTextController.init(); + mBatteryMeterViewController.init(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt index 25ace19db0db..0a5fa1eb8236 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt @@ -17,8 +17,9 @@ package com.android.systemui.statusbar.phone import android.view.View -import com.android.systemui.BatteryMeterView import com.android.systemui.R +import com.android.systemui.battery.BatteryMeterView +import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.qs.carrier.QSCarrierGroupController import com.android.systemui.flags.FeatureFlags import com.android.systemui.statusbar.phone.dagger.StatusBarComponent.StatusBarScope @@ -31,7 +32,8 @@ class SplitShadeHeaderController @Inject constructor( @Named(SPLIT_SHADE_HEADER) private val statusBar: View, private val statusBarIconController: StatusBarIconController, qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder, - featureFlags: FeatureFlags + featureFlags: FeatureFlags, + batteryMeterViewController: BatteryMeterViewController ) { // TODO(b/194178072) Handle RSSI hiding when multi carrier @@ -56,6 +58,7 @@ class SplitShadeHeaderController @Inject constructor( // battery settings same as in QS icons batteryIcon.setIgnoreTunerUpdates(true) batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) + batteryMeterViewController.init() val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons) iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 068a7a00d523..6cafa0da523a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -136,6 +136,7 @@ import com.android.systemui.SystemUI; import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.animation.DelegateLaunchAnimatorController; import com.android.systemui.assist.AssistManager; +import com.android.systemui.battery.BatteryMeterViewController; import com.android.systemui.biometrics.AuthRippleController; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.camera.CameraIntents; @@ -773,6 +774,7 @@ public class StatusBar extends SystemUI implements private final ActivityIntentHelper mActivityIntentHelper; private NotificationStackScrollLayoutController mStackScrollerController; + private BatteryMeterViewController mBatteryMeterViewController; private final ColorExtractor.OnColorsChangedListener mOnColorsChangedListener = (extractor, which) -> updateTheme(); @@ -1205,6 +1207,11 @@ public class StatusBar extends SystemUI implements mStatusBarView.setScrimController(mScrimController); mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners); + mBatteryMeterViewController = new BatteryMeterViewController( + mStatusBarView.findViewById(R.id.battery) + ); + mBatteryMeterViewController.init(); + // CollapsedStatusBarFragment re-inflated PhoneStatusBarView and both of // mStatusBarView.mExpanded and mStatusBarView.mBouncerShowing are false. // PhoneStatusBarView's new instance will set to be gone in diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java index d691dca1c898..0e83eda2734a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java @@ -21,6 +21,7 @@ import android.view.View; import com.android.keyguard.LockIconView; import com.android.systemui.R; +import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.biometrics.AuthRippleView; import com.android.systemui.statusbar.phone.NotificationPanelView; import com.android.systemui.statusbar.phone.NotificationShadeWindowView; @@ -73,6 +74,13 @@ public abstract class StatusBarViewModule { /** */ @Provides @StatusBarComponent.StatusBarScope + static BatteryMeterView getBatteryMeterView(@Named(SPLIT_SHADE_HEADER) View view) { + return view.findViewById(R.id.batteryRemainingIcon); + } + + /** */ + @Provides + @StatusBarComponent.StatusBarScope public static TapAgainView getTapAgainView(NotificationPanelView npv) { return npv.getTapAgainView(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt index 7d5dba88a9b6..b3e00f826db9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt @@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest import com.android.internal.logging.UiEventLogger import com.android.systemui.R import com.android.systemui.SysuiTestCase +import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.colorextraction.SysuiColorExtractor import com.android.systemui.demomode.DemoModeController import com.android.systemui.flags.FeatureFlags @@ -87,6 +88,8 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() { @Mock private lateinit var privacyDialogController: PrivacyDialogController @Mock + private lateinit var batteryMeterViewController: BatteryMeterViewController + @Mock private lateinit var clock: Clock @Mock private lateinit var mockView: View @@ -133,6 +136,7 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() { colorExtractor, privacyDialogController, qsExpansionPathInterpolator, + batteryMeterViewController, featureFlags ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java index 0696369b8bbd..9cc762c8302e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java @@ -28,6 +28,7 @@ import androidx.test.filters.SmallTest; import com.android.keyguard.CarrierTextController; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; +import com.android.systemui.battery.BatteryMeterViewController; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.policy.BatteryController; @@ -59,6 +60,8 @@ public class KeyguardStatusBarViewControllerTest extends SysuiTestCase { private StatusBarIconController mStatusBarIconController; @Mock private FeatureFlags mFeatureFlags; + @Mock + private BatteryMeterViewController mBatteryMeterViewController; private KeyguardStatusBarViewController mController; @@ -78,7 +81,8 @@ public class KeyguardStatusBarViewControllerTest extends SysuiTestCase { mBatteryController, mUserInfoController, mStatusBarIconController, - new StatusBarIconController.TintedIconManager.Factory(mFeatureFlags) + new StatusBarIconController.TintedIconManager.Factory(mFeatureFlags), + mBatteryMeterViewController ); } |