Merge "[Dagger] Add BatteryMeterViewController. Future CLs will move Dependency.get calls from BatteryMeterView to this controller." into sc-v2-dev

This commit is contained in:
Caitlin Cassidy
2021-08-02 19:44:34 +00:00
committed by Android (Google) Code Review
16 changed files with 105 additions and 11 deletions

View File

@@ -76,7 +76,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingEnd="@dimen/signal_cluster_battery_padding" /> android:paddingEnd="@dimen/signal_cluster_battery_padding" />
<com.android.systemui.BatteryMeterView <com.android.systemui.battery.BatteryMeterView
android:id="@+id/batteryRemainingIcon" android:id="@+id/batteryRemainingIcon"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"

View File

@@ -78,7 +78,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingEnd="@dimen/signal_cluster_battery_padding" /> android:paddingEnd="@dimen/signal_cluster_battery_padding" />
<com.android.systemui.BatteryMeterView <com.android.systemui.battery.BatteryMeterView
android:id="@+id/batteryRemainingIcon" android:id="@+id/batteryRemainingIcon"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"

View File

@@ -29,7 +29,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"/> 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_height="match_parent"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:clipToPadding="false" android:clipToPadding="false"

View File

@@ -18,6 +18,7 @@ package com.android.keyguard.dagger;
import com.android.keyguard.CarrierText; import com.android.keyguard.CarrierText;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.statusbar.phone.KeyguardStatusBarView; import com.android.systemui.statusbar.phone.KeyguardStatusBarView;
import dagger.Module; import dagger.Module;
@@ -31,4 +32,11 @@ public abstract class KeyguardStatusBarViewModule {
static CarrierText getCarrierText(KeyguardStatusBarView view) { static CarrierText getCarrierText(KeyguardStatusBarView view) {
return view.findViewById(R.id.keyguard_carrier_text); return view.findViewById(R.id.keyguard_carrier_text);
} }
/** */
@Provides
@KeyguardStatusBarViewScope
static BatteryMeterView getBatteryMeterView(KeyguardStatusBarView view) {
return view.findViewById(R.id.battery);
}
} }

View File

@@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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 * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.android.systemui; package com.android.systemui.battery;
import static android.provider.Settings.System.SHOW_BATTERY_PERCENT; import static android.provider.Settings.System.SHOW_BATTERY_PERCENT;
@@ -50,6 +50,9 @@ import android.widget.TextView;
import androidx.annotation.StyleRes; import androidx.annotation.StyleRes;
import com.android.settingslib.graph.ThemedBatteryDrawable; 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.animation.Interpolators;
import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher;

View File

@@ -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() {
}
}

View File

@@ -35,8 +35,8 @@ import android.widget.Space;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import com.android.systemui.BatteryMeterView;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.qs.QSDetail.Callback; import com.android.systemui.qs.QSDetail.Callback;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager; import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
import com.android.systemui.statusbar.phone.StatusBarWindowView; import com.android.systemui.statusbar.phone.StatusBarWindowView;

View File

@@ -25,6 +25,7 @@ import androidx.annotation.NonNull;
import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.ColorExtractor;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.battery.BatteryMeterViewController;
import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.demomode.DemoMode; import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController; import com.android.systemui.demomode.DemoModeController;
@@ -69,6 +70,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
private final PrivacyLogger mPrivacyLogger; private final PrivacyLogger mPrivacyLogger;
private final PrivacyDialogController mPrivacyDialogController; private final PrivacyDialogController mPrivacyDialogController;
private final QSExpansionPathInterpolator mQSExpansionPathInterpolator; private final QSExpansionPathInterpolator mQSExpansionPathInterpolator;
private final BatteryMeterViewController mBatteryMeterViewController;
private final FeatureFlags mFeatureFlags; private final FeatureFlags mFeatureFlags;
private boolean mListening; private boolean mListening;
@@ -134,6 +136,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
SysuiColorExtractor colorExtractor, SysuiColorExtractor colorExtractor,
PrivacyDialogController privacyDialogController, PrivacyDialogController privacyDialogController,
QSExpansionPathInterpolator qsExpansionPathInterpolator, QSExpansionPathInterpolator qsExpansionPathInterpolator,
BatteryMeterViewController batteryMeterViewController,
FeatureFlags featureFlags) { FeatureFlags featureFlags) {
super(view); super(view);
mPrivacyItemController = privacyItemController; mPrivacyItemController = privacyItemController;
@@ -145,6 +148,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
mPrivacyLogger = privacyLogger; mPrivacyLogger = privacyLogger;
mPrivacyDialogController = privacyDialogController; mPrivacyDialogController = privacyDialogController;
mQSExpansionPathInterpolator = qsExpansionPathInterpolator; mQSExpansionPathInterpolator = qsExpansionPathInterpolator;
mBatteryMeterViewController = batteryMeterViewController;
mFeatureFlags = featureFlags; mFeatureFlags = featureFlags;
mQSCarrierGroupController = qsCarrierGroupControllerBuilder mQSCarrierGroupController = qsCarrierGroupControllerBuilder
@@ -169,6 +173,11 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
mLocationSlot = getResources().getString(com.android.internal.R.string.status_bar_location); mLocationSlot = getResources().getString(com.android.internal.R.string.status_bar_location);
} }
@Override
protected void onInit() {
mBatteryMeterViewController.init();
}
@Override @Override
protected void onViewAttached() { protected void onViewAttached() {
mPrivacyChip.setOnClickListener(mOnClickListener); mPrivacyChip.setOnClickListener(mOnClickListener);

View File

@@ -23,6 +23,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.dagger.qualifiers.RootView; import com.android.systemui.dagger.qualifiers.RootView;
import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.qs.QS;
import com.android.systemui.qs.QSContainerImpl; import com.android.systemui.qs.QSContainerImpl;
@@ -107,6 +108,12 @@ public interface QSFragmentModule {
return quickStatusBarHeader.findViewById(R.id.quick_qs_panel); return quickStatusBarHeader.findViewById(R.id.quick_qs_panel);
} }
/** */
@Provides
static BatteryMeterView providesBatteryMeterView(QuickStatusBarHeader quickStatusBarHeader) {
return quickStatusBarHeader.findViewById(R.id.batteryRemainingIcon);
}
/** */ /** */
@Provides @Provides
static QSFooterView providesQSFooterView(@RootView View view) { static QSFooterView providesQSFooterView(@RootView View view) {

View File

@@ -42,9 +42,9 @@ import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import com.android.systemui.BatteryMeterView;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.animation.Interpolators; import com.android.systemui.animation.Interpolators;
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import java.io.FileDescriptor; import java.io.FileDescriptor;

View File

@@ -26,6 +26,7 @@ import androidx.annotation.NonNull;
import com.android.keyguard.CarrierTextController; import com.android.keyguard.CarrierTextController;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.battery.BatteryMeterViewController;
import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController;
@@ -50,6 +51,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
private final UserInfoController mUserInfoController; private final UserInfoController mUserInfoController;
private final StatusBarIconController mStatusBarIconController; private final StatusBarIconController mStatusBarIconController;
private final StatusBarIconController.TintedIconManager.Factory mTintedIconManagerFactory; private final StatusBarIconController.TintedIconManager.Factory mTintedIconManagerFactory;
private final BatteryMeterViewController mBatteryMeterViewController;
private final ConfigurationController.ConfigurationListener mConfigurationListener = private final ConfigurationController.ConfigurationListener mConfigurationListener =
new ConfigurationController.ConfigurationListener() { new ConfigurationController.ConfigurationListener() {
@@ -115,7 +117,8 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
BatteryController batteryController, BatteryController batteryController,
UserInfoController userInfoController, UserInfoController userInfoController,
StatusBarIconController statusBarIconController, StatusBarIconController statusBarIconController,
StatusBarIconController.TintedIconManager.Factory tintedIconManagerFactory) { StatusBarIconController.TintedIconManager.Factory tintedIconManagerFactory,
BatteryMeterViewController batteryMeterViewController) {
super(view); super(view);
mCarrierTextController = carrierTextController; mCarrierTextController = carrierTextController;
mConfigurationController = configurationController; mConfigurationController = configurationController;
@@ -124,6 +127,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
mUserInfoController = userInfoController; mUserInfoController = userInfoController;
mStatusBarIconController = statusBarIconController; mStatusBarIconController = statusBarIconController;
mTintedIconManagerFactory = tintedIconManagerFactory; mTintedIconManagerFactory = tintedIconManagerFactory;
mBatteryMeterViewController = batteryMeterViewController;
Resources r = getResources(); Resources r = getResources();
mBlockedIcons = Collections.unmodifiableList(Arrays.asList( mBlockedIcons = Collections.unmodifiableList(Arrays.asList(
@@ -136,6 +140,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
protected void onInit() { protected void onInit() {
super.onInit(); super.onInit();
mCarrierTextController.init(); mCarrierTextController.init();
mBatteryMeterViewController.init();
} }
@Override @Override

View File

@@ -17,8 +17,9 @@
package com.android.systemui.statusbar.phone package com.android.systemui.statusbar.phone
import android.view.View import android.view.View
import com.android.systemui.BatteryMeterView
import com.android.systemui.R 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.qs.carrier.QSCarrierGroupController
import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.FeatureFlags
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent.StatusBarScope 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, @Named(SPLIT_SHADE_HEADER) private val statusBar: View,
private val statusBarIconController: StatusBarIconController, private val statusBarIconController: StatusBarIconController,
qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder, qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder,
featureFlags: FeatureFlags featureFlags: FeatureFlags,
batteryMeterViewController: BatteryMeterViewController
) { ) {
// TODO(b/194178072) Handle RSSI hiding when multi carrier // TODO(b/194178072) Handle RSSI hiding when multi carrier
@@ -56,6 +58,7 @@ class SplitShadeHeaderController @Inject constructor(
// battery settings same as in QS icons // battery settings same as in QS icons
batteryIcon.setIgnoreTunerUpdates(true) batteryIcon.setIgnoreTunerUpdates(true)
batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE)
batteryMeterViewController.init()
val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons) val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons)
iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags) iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags)

View File

@@ -136,6 +136,7 @@ import com.android.systemui.SystemUI;
import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.DelegateLaunchAnimatorController; import com.android.systemui.animation.DelegateLaunchAnimatorController;
import com.android.systemui.assist.AssistManager; import com.android.systemui.assist.AssistManager;
import com.android.systemui.battery.BatteryMeterViewController;
import com.android.systemui.biometrics.AuthRippleController; import com.android.systemui.biometrics.AuthRippleController;
import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.camera.CameraIntents; import com.android.systemui.camera.CameraIntents;
@@ -773,6 +774,7 @@ public class StatusBar extends SystemUI implements
private final ActivityIntentHelper mActivityIntentHelper; private final ActivityIntentHelper mActivityIntentHelper;
private NotificationStackScrollLayoutController mStackScrollerController; private NotificationStackScrollLayoutController mStackScrollerController;
private BatteryMeterViewController mBatteryMeterViewController;
private final ColorExtractor.OnColorsChangedListener mOnColorsChangedListener = private final ColorExtractor.OnColorsChangedListener mOnColorsChangedListener =
(extractor, which) -> updateTheme(); (extractor, which) -> updateTheme();
@@ -1205,6 +1207,11 @@ public class StatusBar extends SystemUI implements
mStatusBarView.setScrimController(mScrimController); mStatusBarView.setScrimController(mScrimController);
mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners); mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners);
mBatteryMeterViewController = new BatteryMeterViewController(
mStatusBarView.findViewById(R.id.battery)
);
mBatteryMeterViewController.init();
// CollapsedStatusBarFragment re-inflated PhoneStatusBarView and both of // CollapsedStatusBarFragment re-inflated PhoneStatusBarView and both of
// mStatusBarView.mExpanded and mStatusBarView.mBouncerShowing are false. // mStatusBarView.mExpanded and mStatusBarView.mBouncerShowing are false.
// PhoneStatusBarView's new instance will set to be gone in // PhoneStatusBarView's new instance will set to be gone in

View File

@@ -21,6 +21,7 @@ import android.view.View;
import com.android.keyguard.LockIconView; import com.android.keyguard.LockIconView;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.biometrics.AuthRippleView; import com.android.systemui.biometrics.AuthRippleView;
import com.android.systemui.statusbar.phone.NotificationPanelView; import com.android.systemui.statusbar.phone.NotificationPanelView;
import com.android.systemui.statusbar.phone.NotificationShadeWindowView; import com.android.systemui.statusbar.phone.NotificationShadeWindowView;
@@ -70,6 +71,13 @@ public abstract class StatusBarViewModule {
return notificationShadeWindowView.findViewById(R.id.split_shade_status_bar); return notificationShadeWindowView.findViewById(R.id.split_shade_status_bar);
} }
/** */
@Provides
@StatusBarComponent.StatusBarScope
static BatteryMeterView getBatteryMeterView(@Named(SPLIT_SHADE_HEADER) View view) {
return view.findViewById(R.id.batteryRemainingIcon);
}
/** */ /** */
@Provides @Provides
@StatusBarComponent.StatusBarScope @StatusBarComponent.StatusBarScope

View File

@@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest
import com.android.internal.logging.UiEventLogger import com.android.internal.logging.UiEventLogger
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.colorextraction.SysuiColorExtractor import com.android.systemui.colorextraction.SysuiColorExtractor
import com.android.systemui.demomode.DemoModeController import com.android.systemui.demomode.DemoModeController
import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.FeatureFlags
@@ -87,6 +88,8 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() {
@Mock @Mock
private lateinit var privacyDialogController: PrivacyDialogController private lateinit var privacyDialogController: PrivacyDialogController
@Mock @Mock
private lateinit var batteryMeterViewController: BatteryMeterViewController
@Mock
private lateinit var clock: Clock private lateinit var clock: Clock
@Mock @Mock
private lateinit var mockView: View private lateinit var mockView: View
@@ -133,6 +136,7 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() {
colorExtractor, colorExtractor,
privacyDialogController, privacyDialogController,
qsExpansionPathInterpolator, qsExpansionPathInterpolator,
batteryMeterViewController,
featureFlags featureFlags
) )
} }

View File

@@ -28,6 +28,7 @@ import androidx.test.filters.SmallTest;
import com.android.keyguard.CarrierTextController; import com.android.keyguard.CarrierTextController;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.battery.BatteryMeterViewController;
import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController;
@@ -59,6 +60,8 @@ public class KeyguardStatusBarViewControllerTest extends SysuiTestCase {
private StatusBarIconController mStatusBarIconController; private StatusBarIconController mStatusBarIconController;
@Mock @Mock
private FeatureFlags mFeatureFlags; private FeatureFlags mFeatureFlags;
@Mock
private BatteryMeterViewController mBatteryMeterViewController;
private KeyguardStatusBarViewController mController; private KeyguardStatusBarViewController mController;
@@ -78,7 +81,8 @@ public class KeyguardStatusBarViewControllerTest extends SysuiTestCase {
mBatteryController, mBatteryController,
mUserInfoController, mUserInfoController,
mStatusBarIconController, mStatusBarIconController,
new StatusBarIconController.TintedIconManager.Factory(mFeatureFlags) new StatusBarIconController.TintedIconManager.Factory(mFeatureFlags),
mBatteryMeterViewController
); );
} }