From 2ff37206999d7b4c8de99b21b9364b56dcb7c3e1 Mon Sep 17 00:00:00 2001 From: Juan Flores Date: Thu, 30 Apr 2015 13:44:23 +0200 Subject: [PATCH] Alarm icon is not shown for secondary users The alarm icon is not shown in the status bar when switching to a secondary user and setting an alarm. Bug: 27688859 Change-Id: I9731e6772560853282b6c0348d647024d3424190 --- .../statusbar/phone/PhoneStatusBar.java | 2 +- .../statusbar/phone/PhoneStatusBarPolicy.java | 23 +++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 73361bdebcdba..23b085b16bb50 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -622,7 +622,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // Lastly, call to the icon policy to install/update all the icons. mIconPolicy = new PhoneStatusBarPolicy(mContext, mCastController, mHotspotController, - mUserInfoController, mBluetoothController); + mUserInfoController, mBluetoothController, mNextAlarmController); mIconPolicy.setCurrentUserSetup(mUserSetup); mSettingsObserver.onChange(false); // set up diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index fa9c4bbcb485a..e8ee876136a71 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -45,6 +45,8 @@ import com.android.systemui.statusbar.policy.BluetoothController.Callback; import com.android.systemui.statusbar.policy.CastController; import com.android.systemui.statusbar.policy.CastController.CastDevice; import com.android.systemui.statusbar.policy.HotspotController; +import com.android.systemui.statusbar.policy.NextAlarmController; +import com.android.systemui.statusbar.policy.NextAlarmController.NextAlarmChangeCallback; import com.android.systemui.statusbar.policy.UserInfoController; /** @@ -70,6 +72,7 @@ public class PhoneStatusBarPolicy implements Callback { private final Handler mHandler = new Handler(); private final CastController mCast; private final HotspotController mHotspot; + private final NextAlarmController mNextAlarm; private final AlarmManager mAlarmManager; private final UserInfoController mUserInfoController; @@ -93,10 +96,7 @@ public class PhoneStatusBarPolicy implements Callback { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); - if (action.equals(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED)) { - updateAlarm(); - } - else if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION) || + if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION) || action.equals(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION)) { updateVolumeZen(); } @@ -118,19 +118,20 @@ public class PhoneStatusBarPolicy implements Callback { }; public PhoneStatusBarPolicy(Context context, CastController cast, HotspotController hotspot, - UserInfoController userInfoController, BluetoothController bluetooth) { + UserInfoController userInfoController, BluetoothController bluetooth, + NextAlarmController nextAlarm) { mContext = context; mCast = cast; mHotspot = hotspot; mBluetooth = bluetooth; mBluetooth.addStateChangedCallback(this); mService = (StatusBarManager) context.getSystemService(Context.STATUS_BAR_SERVICE); + mNextAlarm = nextAlarm; mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); mUserInfoController = userInfoController; // listen for broadcasts IntentFilter filter = new IntentFilter(); - filter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); @@ -154,6 +155,7 @@ public class PhoneStatusBarPolicy implements Callback { // Alarm clock mService.setIcon(SLOT_ALARM_CLOCK, R.drawable.stat_sys_alarm, 0, null); mService.setIconVisibility(SLOT_ALARM_CLOCK, false); + mNextAlarm.addStateChangedCallback(mNextAlarmCallback); // zen mService.setIcon(SLOT_ZEN, R.drawable.stat_sys_zen_important, 0, null); @@ -387,7 +389,6 @@ public class PhoneStatusBarPolicy implements Callback { @Override public void onUserSwitchComplete(int newUserId) throws RemoteException { - updateAlarm(); profileChanged(newUserId); } @@ -411,6 +412,14 @@ public class PhoneStatusBarPolicy implements Callback { } }; + private final NextAlarmController.NextAlarmChangeCallback mNextAlarmCallback = + new NextAlarmController.NextAlarmChangeCallback() { + @Override + public void onNextAlarmChanged(AlarmManager.AlarmClockInfo nextAlarm) { + updateAlarm(); + } + }; + public void appTransitionStarting(long startTime, long duration) { updateManagedProfile(); }