Loading packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java +1 −61 Original line number Diff line number Diff line Loading @@ -35,12 +35,10 @@ import android.net.Uri; import android.os.Handler; import android.provider.Settings; import android.text.TextUtils; import android.util.ArraySet; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; Loading @@ -57,11 +55,8 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.settings.CurrentUserTracker; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; import java.io.FileDescriptor; import java.io.PrintWriter; Loading @@ -69,7 +64,7 @@ import java.lang.annotation.Retention; import java.text.NumberFormat; public class BatteryMeterView extends LinearLayout implements BatteryStateChangeCallback, Tunable, DarkReceiver { BatteryStateChangeCallback, DarkReceiver { @Retention(SOURCE) @IntDef({MODE_DEFAULT, MODE_ON, MODE_OFF, MODE_ESTIMATE}) Loading @@ -80,7 +75,6 @@ public class BatteryMeterView extends LinearLayout implements public static final int MODE_ESTIMATE = 3; private final ThemedBatteryDrawable mDrawable; private final String mSlotBattery; private final ImageView mBatteryIconView; private final CurrentUserTracker mUserTracker; private TextView mBatteryPercentView; Loading @@ -92,9 +86,6 @@ public class BatteryMeterView extends LinearLayout implements private int mLevel; private int mShowPercentMode = MODE_DEFAULT; private boolean mShowPercentAvailable; // Some places may need to show the battery conditionally, and not obey the tuner private boolean mIgnoreTunerUpdates; private boolean mIsSubscribedForTunerUpdates; private boolean mCharging; // Error state where we know nothing about the current battery state private boolean mBatteryStateUnknown; Loading Loading @@ -133,8 +124,6 @@ public class BatteryMeterView extends LinearLayout implements setupLayoutTransition(); mSlotBattery = context.getString( com.android.internal.R.string.status_bar_battery); mBatteryIconView = new ImageView(context); mBatteryIconView.setImageDrawable(mDrawable); final MarginLayoutParams mlp = new MarginLayoutParams( Loading Loading @@ -199,44 +188,6 @@ public class BatteryMeterView extends LinearLayout implements updateShowPercent(); } /** * Set {@code true} to turn off BatteryMeterView's subscribing to the tuner for updates, and * thus avoid it controlling its own visibility * * @param ignore whether to ignore the tuner or not */ public void setIgnoreTunerUpdates(boolean ignore) { mIgnoreTunerUpdates = ignore; updateTunerSubscription(); } private void updateTunerSubscription() { if (mIgnoreTunerUpdates) { unsubscribeFromTunerUpdates(); } else { subscribeForTunerUpdates(); } } private void subscribeForTunerUpdates() { if (mIsSubscribedForTunerUpdates || mIgnoreTunerUpdates) { return; } Dependency.get(TunerService.class) .addTunable(this, StatusBarIconController.ICON_HIDE_LIST); mIsSubscribedForTunerUpdates = true; } private void unsubscribeFromTunerUpdates() { if (!mIsSubscribedForTunerUpdates) { return; } Dependency.get(TunerService.class).removeTunable(this); mIsSubscribedForTunerUpdates = false; } public void setColorsFromContext(Context context) { if (context == null) { return; Loading @@ -250,15 +201,6 @@ public class BatteryMeterView extends LinearLayout implements return false; } @Override public void onTuningChanged(String key, String newValue) { if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { ArraySet<String> icons = StatusBarIconController.getIconHideList( getContext(), newValue); setVisibility(icons.contains(mSlotBattery) ? View.GONE : View.VISIBLE); } } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); Loading @@ -271,7 +213,6 @@ public class BatteryMeterView extends LinearLayout implements Settings.Global.getUriFor(Settings.Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME), false, mSettingObserver); updateShowPercent(); subscribeForTunerUpdates(); mUserTracker.startTracking(); } Loading @@ -281,7 +222,6 @@ public class BatteryMeterView extends LinearLayout implements mUserTracker.stopTracking(); mBatteryController.removeCallback(this); getContext().getContentResolver().unregisterContentObserver(mSettingObserver); unsubscribeFromTunerUpdates(); } @Override Loading packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java +57 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,12 @@ */ package com.android.systemui.battery; import android.util.ArraySet; import android.view.View; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.tuner.TunerService; import com.android.systemui.util.ViewController; import javax.inject.Inject; Loading @@ -23,6 +28,9 @@ import javax.inject.Inject; /** Controller for {@link BatteryMeterView}. **/ public class BatteryMeterViewController extends ViewController<BatteryMeterView> { private final ConfigurationController mConfigurationController; private final TunerService mTunerService; private final String mSlotBattery; private final ConfigurationController.ConfigurationListener mConfigurationListener = new ConfigurationController.ConfigurationListener() { Loading @@ -32,17 +40,37 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView> } }; private final TunerService.Tunable mTunable = new TunerService.Tunable() { @Override public void onTuningChanged(String key, String newValue) { if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { ArraySet<String> icons = StatusBarIconController.getIconHideList( getContext(), newValue); mView.setVisibility(icons.contains(mSlotBattery) ? View.GONE : View.VISIBLE); } } }; // Some places may need to show the battery conditionally, and not obey the tuner private boolean mIgnoreTunerUpdates; private boolean mIsSubscribedForTunerUpdates; @Inject public BatteryMeterViewController( BatteryMeterView view, ConfigurationController configurationController) { ConfigurationController configurationController, TunerService tunerService) { super(view); mConfigurationController = configurationController; mTunerService = tunerService; mSlotBattery = getResources().getString(com.android.internal.R.string.status_bar_battery); } @Override protected void onViewAttached() { mConfigurationController.addCallback(mConfigurationListener); subscribeForTunerUpdates(); } @Override Loading @@ -54,5 +82,33 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView> public void destroy() { super.destroy(); mConfigurationController.removeCallback(mConfigurationListener); unsubscribeFromTunerUpdates(); } /** * Turn off {@link BatteryMeterView}'s subscribing to the tuner for updates, and thus avoid it * controlling its own visibility. */ public void ignoreTunerUpdates() { mIgnoreTunerUpdates = true; unsubscribeFromTunerUpdates(); } private void subscribeForTunerUpdates() { if (mIsSubscribedForTunerUpdates || mIgnoreTunerUpdates) { return; } mTunerService.addTunable(mTunable, StatusBarIconController.ICON_HIDE_LIST); mIsSubscribedForTunerUpdates = true; } private void unsubscribeFromTunerUpdates() { if (!mIsSubscribedForTunerUpdates) { return; } mTunerService.removeTunable(mTunable); mIsSubscribedForTunerUpdates = false; } } No newline at end of file packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +0 −2 Original line number Diff line number Diff line Loading @@ -133,8 +133,6 @@ public class QuickStatusBarHeader extends FrameLayout { updateResources(); // Don't need to worry about tuner settings for this icon mBatteryRemainingIcon.setIgnoreTunerUpdates(true); // QS will always show the estimate, and BatteryMeterView handles the case where // it's unavailable or charging mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE); Loading packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +3 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,9 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader mCameraSlot = getResources().getString(com.android.internal.R.string.status_bar_camera); mMicSlot = getResources().getString(com.android.internal.R.string.status_bar_microphone); mLocationSlot = getResources().getString(com.android.internal.R.string.status_bar_location); // Don't need to worry about tuner settings for this icon mBatteryMeterViewController.ignoreTunerUpdates(); } @Override Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt +4 −3 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ import android.view.View 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.qs.carrier.QSCarrierGroupController import com.android.systemui.statusbar.phone.dagger.StatusBarComponent.StatusBarScope import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.SPLIT_SHADE_HEADER import javax.inject.Inject Loading Loading @@ -54,11 +54,12 @@ class SplitShadeHeaderController @Inject constructor( } init { batteryMeterViewController.init() val batteryIcon: BatteryMeterView = statusBar.findViewById(R.id.batteryRemainingIcon) // battery settings same as in QS icons batteryIcon.setIgnoreTunerUpdates(true) batteryMeterViewController.ignoreTunerUpdates() batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) batteryMeterViewController.init() val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons) iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags) Loading Loading
packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java +1 −61 Original line number Diff line number Diff line Loading @@ -35,12 +35,10 @@ import android.net.Uri; import android.os.Handler; import android.provider.Settings; import android.text.TextUtils; import android.util.ArraySet; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; Loading @@ -57,11 +55,8 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.settings.CurrentUserTracker; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; import java.io.FileDescriptor; import java.io.PrintWriter; Loading @@ -69,7 +64,7 @@ import java.lang.annotation.Retention; import java.text.NumberFormat; public class BatteryMeterView extends LinearLayout implements BatteryStateChangeCallback, Tunable, DarkReceiver { BatteryStateChangeCallback, DarkReceiver { @Retention(SOURCE) @IntDef({MODE_DEFAULT, MODE_ON, MODE_OFF, MODE_ESTIMATE}) Loading @@ -80,7 +75,6 @@ public class BatteryMeterView extends LinearLayout implements public static final int MODE_ESTIMATE = 3; private final ThemedBatteryDrawable mDrawable; private final String mSlotBattery; private final ImageView mBatteryIconView; private final CurrentUserTracker mUserTracker; private TextView mBatteryPercentView; Loading @@ -92,9 +86,6 @@ public class BatteryMeterView extends LinearLayout implements private int mLevel; private int mShowPercentMode = MODE_DEFAULT; private boolean mShowPercentAvailable; // Some places may need to show the battery conditionally, and not obey the tuner private boolean mIgnoreTunerUpdates; private boolean mIsSubscribedForTunerUpdates; private boolean mCharging; // Error state where we know nothing about the current battery state private boolean mBatteryStateUnknown; Loading Loading @@ -133,8 +124,6 @@ public class BatteryMeterView extends LinearLayout implements setupLayoutTransition(); mSlotBattery = context.getString( com.android.internal.R.string.status_bar_battery); mBatteryIconView = new ImageView(context); mBatteryIconView.setImageDrawable(mDrawable); final MarginLayoutParams mlp = new MarginLayoutParams( Loading Loading @@ -199,44 +188,6 @@ public class BatteryMeterView extends LinearLayout implements updateShowPercent(); } /** * Set {@code true} to turn off BatteryMeterView's subscribing to the tuner for updates, and * thus avoid it controlling its own visibility * * @param ignore whether to ignore the tuner or not */ public void setIgnoreTunerUpdates(boolean ignore) { mIgnoreTunerUpdates = ignore; updateTunerSubscription(); } private void updateTunerSubscription() { if (mIgnoreTunerUpdates) { unsubscribeFromTunerUpdates(); } else { subscribeForTunerUpdates(); } } private void subscribeForTunerUpdates() { if (mIsSubscribedForTunerUpdates || mIgnoreTunerUpdates) { return; } Dependency.get(TunerService.class) .addTunable(this, StatusBarIconController.ICON_HIDE_LIST); mIsSubscribedForTunerUpdates = true; } private void unsubscribeFromTunerUpdates() { if (!mIsSubscribedForTunerUpdates) { return; } Dependency.get(TunerService.class).removeTunable(this); mIsSubscribedForTunerUpdates = false; } public void setColorsFromContext(Context context) { if (context == null) { return; Loading @@ -250,15 +201,6 @@ public class BatteryMeterView extends LinearLayout implements return false; } @Override public void onTuningChanged(String key, String newValue) { if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { ArraySet<String> icons = StatusBarIconController.getIconHideList( getContext(), newValue); setVisibility(icons.contains(mSlotBattery) ? View.GONE : View.VISIBLE); } } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); Loading @@ -271,7 +213,6 @@ public class BatteryMeterView extends LinearLayout implements Settings.Global.getUriFor(Settings.Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME), false, mSettingObserver); updateShowPercent(); subscribeForTunerUpdates(); mUserTracker.startTracking(); } Loading @@ -281,7 +222,6 @@ public class BatteryMeterView extends LinearLayout implements mUserTracker.stopTracking(); mBatteryController.removeCallback(this); getContext().getContentResolver().unregisterContentObserver(mSettingObserver); unsubscribeFromTunerUpdates(); } @Override Loading
packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java +57 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,12 @@ */ package com.android.systemui.battery; import android.util.ArraySet; import android.view.View; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.tuner.TunerService; import com.android.systemui.util.ViewController; import javax.inject.Inject; Loading @@ -23,6 +28,9 @@ import javax.inject.Inject; /** Controller for {@link BatteryMeterView}. **/ public class BatteryMeterViewController extends ViewController<BatteryMeterView> { private final ConfigurationController mConfigurationController; private final TunerService mTunerService; private final String mSlotBattery; private final ConfigurationController.ConfigurationListener mConfigurationListener = new ConfigurationController.ConfigurationListener() { Loading @@ -32,17 +40,37 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView> } }; private final TunerService.Tunable mTunable = new TunerService.Tunable() { @Override public void onTuningChanged(String key, String newValue) { if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { ArraySet<String> icons = StatusBarIconController.getIconHideList( getContext(), newValue); mView.setVisibility(icons.contains(mSlotBattery) ? View.GONE : View.VISIBLE); } } }; // Some places may need to show the battery conditionally, and not obey the tuner private boolean mIgnoreTunerUpdates; private boolean mIsSubscribedForTunerUpdates; @Inject public BatteryMeterViewController( BatteryMeterView view, ConfigurationController configurationController) { ConfigurationController configurationController, TunerService tunerService) { super(view); mConfigurationController = configurationController; mTunerService = tunerService; mSlotBattery = getResources().getString(com.android.internal.R.string.status_bar_battery); } @Override protected void onViewAttached() { mConfigurationController.addCallback(mConfigurationListener); subscribeForTunerUpdates(); } @Override Loading @@ -54,5 +82,33 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView> public void destroy() { super.destroy(); mConfigurationController.removeCallback(mConfigurationListener); unsubscribeFromTunerUpdates(); } /** * Turn off {@link BatteryMeterView}'s subscribing to the tuner for updates, and thus avoid it * controlling its own visibility. */ public void ignoreTunerUpdates() { mIgnoreTunerUpdates = true; unsubscribeFromTunerUpdates(); } private void subscribeForTunerUpdates() { if (mIsSubscribedForTunerUpdates || mIgnoreTunerUpdates) { return; } mTunerService.addTunable(mTunable, StatusBarIconController.ICON_HIDE_LIST); mIsSubscribedForTunerUpdates = true; } private void unsubscribeFromTunerUpdates() { if (!mIsSubscribedForTunerUpdates) { return; } mTunerService.removeTunable(mTunable); mIsSubscribedForTunerUpdates = false; } } No newline at end of file
packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +0 −2 Original line number Diff line number Diff line Loading @@ -133,8 +133,6 @@ public class QuickStatusBarHeader extends FrameLayout { updateResources(); // Don't need to worry about tuner settings for this icon mBatteryRemainingIcon.setIgnoreTunerUpdates(true); // QS will always show the estimate, and BatteryMeterView handles the case where // it's unavailable or charging mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE); Loading
packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +3 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,9 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader mCameraSlot = getResources().getString(com.android.internal.R.string.status_bar_camera); mMicSlot = getResources().getString(com.android.internal.R.string.status_bar_microphone); mLocationSlot = getResources().getString(com.android.internal.R.string.status_bar_location); // Don't need to worry about tuner settings for this icon mBatteryMeterViewController.ignoreTunerUpdates(); } @Override Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt +4 −3 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ import android.view.View 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.qs.carrier.QSCarrierGroupController import com.android.systemui.statusbar.phone.dagger.StatusBarComponent.StatusBarScope import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.SPLIT_SHADE_HEADER import javax.inject.Inject Loading Loading @@ -54,11 +54,12 @@ class SplitShadeHeaderController @Inject constructor( } init { batteryMeterViewController.init() val batteryIcon: BatteryMeterView = statusBar.findViewById(R.id.batteryRemainingIcon) // battery settings same as in QS icons batteryIcon.setIgnoreTunerUpdates(true) batteryMeterViewController.ignoreTunerUpdates() batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) batteryMeterViewController.init() val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons) iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags) Loading