summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ConfigurationControllerImpl.java19
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java32
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java34
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java36
5 files changed, 65 insertions, 58 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index f1d3e8c2c705..76177a310a06 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -346,7 +346,7 @@ public class CarStatusBar extends StatusBar implements
* changes.
*/
@Override
- protected void onDensityOrFontScaleChanged() {
+ public void onDensityOrFontScaleChanged() {
super.onDensityOrFontScaleChanged();
mController.onDensityOrFontScaleChanged();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ConfigurationControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ConfigurationControllerImpl.java
index e0f577da5100..85d2d73d7c28 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ConfigurationControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ConfigurationControllerImpl.java
@@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone;
import android.content.Context;
import android.content.om.IOverlayManager;
+import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -32,22 +33,14 @@ public class ConfigurationControllerImpl implements ConfigurationController,
ConfigurationChangedReceiver {
private final ArrayList<ConfigurationListener> mListeners = new ArrayList<>();
- private final IOverlayManager mOverlayManager;
+ private final Configuration mLastConfig = new Configuration();
private int mDensity;
private float mFontScale;
- private Map mActiveOverlays;
public ConfigurationControllerImpl(Context context) {
Configuration currentConfig = context.getResources().getConfiguration();
- mOverlayManager = IOverlayManager.Stub.asInterface(
- ServiceManager.getService(Context.OVERLAY_SERVICE));
mFontScale = currentConfig.fontScale;
mDensity = currentConfig.densityDpi;
- try {
- mActiveOverlays = mOverlayManager.getAllOverlays(UserHandle.getCallingUserId());
- } catch (RemoteException e) {
- mActiveOverlays = new HashMap();
- }
}
@Override
@@ -72,18 +65,12 @@ public class ConfigurationControllerImpl implements ConfigurationController,
mFontScale = fontScale;
}
- try {
- Map activeOverlays = mOverlayManager.getAllOverlays(UserHandle.getCallingUserId());
- if (!mActiveOverlays.equals(activeOverlays)) {
- mActiveOverlays = activeOverlays;
+ if ((mLastConfig.updateFrom(newConfig) & ActivityInfo.CONFIG_ASSETS_PATHS) != 0) {
listeners.forEach(l -> {
if (mListeners.contains(l)) {
l.onOverlayChanged();
}
});
- }
- } catch (RemoteException e) {
- e.rethrowAsRuntimeException();
}
}
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 6d6250e66e49..f7c2fc8633ab 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -22,23 +22,31 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
+import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
+import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import com.android.internal.statusbar.StatusBarIcon;
import com.android.settingslib.Utils;
import com.android.systemui.BatteryMeterView;
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.qs.QSPanel;
+import com.android.systemui.statusbar.phone.StatusBarIconController.IconManager;
+import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
+import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
+import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener;
@@ -48,7 +56,7 @@ import com.android.systemui.statusbar.policy.UserSwitcherController;
* The header group on Keyguard.
*/
public class KeyguardStatusBarView extends RelativeLayout
- implements BatteryStateChangeCallback, OnUserInfoChangedListener {
+ implements BatteryStateChangeCallback, OnUserInfoChangedListener, ConfigurationListener {
private boolean mBatteryCharging;
private boolean mKeyguardUserSwitcherShowing;
@@ -67,6 +75,7 @@ public class KeyguardStatusBarView extends RelativeLayout
private int mSystemIconsSwitcherHiddenExpandedMargin;
private int mSystemIconsBaseMargin;
private View mSystemIconsContainer;
+ private TintedIconManager mIconManager;
public KeyguardStatusBarView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -207,12 +216,18 @@ public class KeyguardStatusBarView extends RelativeLayout
mUserSwitcherController = Dependency.get(UserSwitcherController.class);
mMultiUserSwitch.setUserSwitcherController(mUserSwitcherController);
userInfoController.reloadUserInfo();
+ Dependency.get(ConfigurationController.class).addCallback(this);
+ mIconManager = new TintedIconManager(findViewById(R.id.statusIcons));
+ Dependency.get(StatusBarIconController.class).addIconGroup(mIconManager);
+ onOverlayChanged();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
Dependency.get(UserInfoController.class).removeCallback(this);
+ Dependency.get(StatusBarIconController.class).removeIconGroup(mIconManager);
+ Dependency.get(ConfigurationController.class).removeCallback(this);
}
@Override
@@ -321,5 +336,20 @@ public class KeyguardStatusBarView extends RelativeLayout
@ColorInt int textColor = Utils.getColorAttr(mContext, R.attr.bgProtectTextColor);
mCarrierLabel.setTextColor(textColor);
mBatteryView.setFillColor(textColor);
+ mIconManager.setTint(textColor);
+
+ float intensity = textColor == Color.WHITE ? 0 : 1;
+ Rect tintArea = new Rect(0, 0, 0, 0);
+
+ applyDarkness(R.id.signal_cluster, tintArea, intensity, textColor);
+ applyDarkness(R.id.battery, tintArea, intensity, textColor);
+ applyDarkness(R.id.clock, tintArea, intensity, textColor);
+ }
+
+ private void applyDarkness(int id, Rect tintArea, float intensity, int color) {
+ View v = findViewById(id);
+ if (v instanceof DarkReceiver) {
+ ((DarkReceiver) v).onDarkChanged(tintArea, intensity, color);
+ }
}
}
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 7564c8275ce4..30673cdfc086 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -267,7 +267,7 @@ public class StatusBar extends SystemUI implements DemoMode,
ActivatableNotificationView.OnActivatedListener,
ExpandableNotificationRow.ExpansionLogger, NotificationData.Environment,
ExpandableNotificationRow.OnExpandClickListener, InflationCallback,
- ColorExtractor.OnColorsChangedListener {
+ ColorExtractor.OnColorsChangedListener, ConfigurationListener {
public static final boolean MULTIUSER_DEBUG = false;
public static final boolean ENABLE_REMOTE_INPUT =
@@ -431,7 +431,6 @@ public class StatusBar extends SystemUI implements DemoMode,
Object mQueueLock = new Object();
protected StatusBarIconController mIconController;
- private IconManager mIconManager;
// expanded notifications
protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window
@@ -732,7 +731,6 @@ public class StatusBar extends SystemUI implements DemoMode,
private LogMaker mStatusBarStateLog;
private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger();
private NotificationIconAreaController mNotificationIconAreaController;
- private ConfigurationListener mConfigurationListener;
private boolean mReinflateNotificationsOnUserSwitched;
private HashMap<String, Entry> mPendingNotifications = new HashMap<>();
private boolean mClearAllEnabled;
@@ -971,23 +969,7 @@ public class StatusBar extends SystemUI implements DemoMode,
Dependency.get(ActivityStarterDelegate.class).setActivityStarterImpl(this);
- mConfigurationListener = new ConfigurationListener() {
- @Override
- public void onConfigChanged(Configuration newConfig) {
- StatusBar.this.onConfigurationChanged(newConfig);
- }
-
- @Override
- public void onDensityOrFontScaleChanged() {
- StatusBar.this.onDensityOrFontScaleChanged();
- }
-
- @Override
- public void onOverlayChanged() {
- StatusBar.this.onOverlayChanged();
- }
- };
- Dependency.get(ConfigurationController.class).addCallback(mConfigurationListener);
+ Dependency.get(ConfigurationController.class).addCallback(this);
// Make sure that we're using the correct theme
onOverlayChanged();
@@ -1039,8 +1021,6 @@ public class StatusBar extends SystemUI implements DemoMode,
.replace(R.id.status_bar_container, new CollapsedStatusBarFragment(),
CollapsedStatusBarFragment.TAG)
.commit();
- mIconManager = new IconManager(mKeyguardStatusBar.findViewById(R.id.statusIcons));
- Dependency.get(StatusBarIconController.class).addIconGroup(mIconManager);
mIconController = Dependency.get(StatusBarIconController.class);
mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow, mGroupManager);
@@ -1286,7 +1266,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mNotificationShelf.setStatusBarState(mState);
}
- protected void onDensityOrFontScaleChanged() {
+ public void onDensityOrFontScaleChanged() {
// start old BaseStatusBar.onDensityOrFontScaleChanged().
if (!KeyguardUpdateMonitor.getInstance(mContext).isSwitchingUser()) {
updateNotificationsOnDensityOrFontScaleChanged();
@@ -1313,7 +1293,7 @@ public class StatusBar extends SystemUI implements DemoMode,
reevaluateStyles();
}
- protected void onOverlayChanged() {
+ public void onOverlayChanged() {
final boolean usingDarkTheme = isUsingDarkTheme();
if (DEBUG) {
Log.d(TAG, "Updating theme because overlay changed. Is theme dark? " + usingDarkTheme);
@@ -1334,10 +1314,6 @@ public class StatusBar extends SystemUI implements DemoMode,
.setStatusBarKeyguardViewManager(mStatusBarKeyguardViewManager);
mKeyguardIndicationController.setVisible(mState == StatusBarState.KEYGUARD);
mKeyguardIndicationController.setDozing(mDozing);
-
- // Top status bar with system icons and clock
- mKeyguardStatusBar.onOverlayChanged();
- mIconManager.onOverlayChanged();
}
protected void reevaluateStyles() {
@@ -4054,7 +4030,7 @@ public class StatusBar extends SystemUI implements DemoMode,
}
Dependency.get(ActivityStarterDelegate.class).setActivityStarterImpl(null);
mDeviceProvisionedController.removeCallback(mUserSetupObserver);
- Dependency.get(ConfigurationController.class).removeCallback(mConfigurationListener);
+ Dependency.get(ConfigurationController.class).removeCallback(this);
}
private boolean mDemoModeAllowed;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index 64b21b457715..c2407652b2df 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -111,6 +111,31 @@ public interface StatusBarIconController {
}
}
+ public static class TintedIconManager extends IconManager {
+ private int mColor;
+
+ public TintedIconManager(ViewGroup group) {
+ super(group);
+ }
+
+ @Override
+ protected void onIconAdded(int index, String slot, boolean blocked, StatusBarIcon icon) {
+ StatusBarIconView v = addIcon(index, slot, blocked, icon);
+ v.setStaticDrawableColor(mColor);
+ }
+
+ public void setTint(int color) {
+ mColor = color;
+ for (int i = 0; i < mGroup.getChildCount(); i++) {
+ View child = mGroup.getChildAt(i);
+ if (child instanceof StatusBarIconView) {
+ StatusBarIconView icon = (StatusBarIconView) child;
+ icon.setStaticDrawableColor(mColor);
+ }
+ }
+ }
+ }
+
/**
* Turns info from StatusBarIconController into ImageViews in a ViewGroup.
*/
@@ -168,17 +193,6 @@ public interface StatusBarIconController {
}
}
- protected void onOverlayChanged() {
- @ColorInt int iconColor = Utils.getColorAttr(mContext, R.attr.bgProtectTextColor);
- for (int i = 0; i < mGroup.getChildCount(); i++) {
- View child = mGroup.getChildAt(i);
- if (child instanceof StatusBarIconView) {
- StatusBarIconView icon = (StatusBarIconView) child;
- icon.setStaticDrawableColor(iconColor);
- }
- }
- }
-
private void setHeightAndCenter(ImageView imageView, int height) {
ViewGroup.LayoutParams params = imageView.getLayoutParams();
params.height = height;