diff options
3 files changed, 41 insertions, 29 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java index 4abf88602947..4b9a8744900d 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java @@ -229,17 +229,6 @@ public class KeyguardStatusView extends GridLayout { return mClockView.getTextSize(); } - public static String formatNextAlarm(Context context, AlarmManager.AlarmClockInfo info) { - if (info == null) { - return ""; - } - String skeleton = DateFormat.is24HourFormat(context, ActivityManager.getCurrentUser()) - ? "EHm" - : "Ehma"; - String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); - return DateFormat.format(pattern, info.getTriggerTime()).toString(); - } - private void updateOwnerInfo() { if (mOwnerInfo == null) return; String ownerInfo = getOwnerInfo(); diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java index 2b09903a524d..bd46c5f8ad0b 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java @@ -16,17 +16,23 @@ package com.android.systemui.keyguard; +import android.app.ActivityManager; +import android.app.AlarmManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.graphics.drawable.Icon; import android.icu.text.DateFormat; import android.icu.text.DisplayContext; import android.net.Uri; import android.os.Handler; +import android.text.TextUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; +import com.android.systemui.statusbar.policy.NextAlarmController; +import com.android.systemui.statusbar.policy.NextAlarmControllerImpl; import java.util.Date; import java.util.Locale; @@ -39,20 +45,26 @@ import androidx.app.slice.builders.ListBuilder.RowBuilder; /** * Simple Slice provider that shows the current date. */ -public class KeyguardSliceProvider extends SliceProvider { +public class KeyguardSliceProvider extends SliceProvider implements + NextAlarmController.NextAlarmChangeCallback { public static final String KEYGUARD_SLICE_URI = "content://com.android.systemui.keyguard/main"; public static final String KEYGUARD_DATE_URI = "content://com.android.systemui.keyguard/date"; + public static final String KEYGUARD_NEXT_ALARM_URI = + "content://com.android.systemui.keyguard/alarm"; private final Date mCurrentTime = new Date(); protected final Uri mSliceUri; protected final Uri mDateUri; + protected final Uri mAlarmUri; private final Handler mHandler; private String mDatePattern; private DateFormat mDateFormat; private String mLastText; private boolean mRegistered; private boolean mRegisteredEveryMinute; + private String mNextAlarm; + private NextAlarmController mNextAlarmController; /** * Receiver responsible for time ticking and updating the date format. @@ -86,24 +98,42 @@ public class KeyguardSliceProvider extends SliceProvider { mHandler = handler; mSliceUri = Uri.parse(KEYGUARD_SLICE_URI); mDateUri = Uri.parse(KEYGUARD_DATE_URI); + mAlarmUri = Uri.parse(KEYGUARD_NEXT_ALARM_URI); } - - @Override public Slice onBindSlice(Uri sliceUri) { - return new ListBuilder(mSliceUri) - .addRow(new RowBuilder(mDateUri).setTitle(mLastText)).build(); + ListBuilder builder = new ListBuilder(mSliceUri) + .addRow(new RowBuilder(mDateUri).setTitle(mLastText)); + if (!TextUtils.isEmpty(mNextAlarm)) { + Icon icon = Icon.createWithResource(getContext(), R.drawable.ic_access_alarms_big); + builder.addRow(new RowBuilder(mAlarmUri).setTitle(mNextAlarm).addEndItem(icon)); + } + + return builder.build(); } @Override public boolean onCreateSliceProvider() { + mNextAlarmController = new NextAlarmControllerImpl(getContext()); + mNextAlarmController.addCallback(this); mDatePattern = getContext().getString(R.string.system_ui_date_pattern); registerClockUpdate(false /* everyMinute */); updateClock(); return true; } + public static String formatNextAlarm(Context context, AlarmManager.AlarmClockInfo info) { + if (info == null) { + return ""; + } + String skeleton = android.text.format.DateFormat + .is24HourFormat(context, ActivityManager.getCurrentUser()) ? "EHm" : "Ehma"; + String pattern = android.text.format.DateFormat + .getBestDateTimePattern(Locale.getDefault(), skeleton); + return android.text.format.DateFormat.format(pattern, info.getTriggerTime()).toString(); + } + /** * Registers a broadcast receiver for clock updates, include date, time zone and manually * changing the date/time via the settings app. @@ -169,4 +199,10 @@ public class KeyguardSliceProvider extends SliceProvider { void cleanDateFormat() { mDateFormat = null; } + + @Override + public void onNextAlarmChanged(AlarmManager.AlarmClockInfo nextAlarm) { + mNextAlarm = formatNextAlarm(getContext(), nextAlarm); + getContext().getContentResolver().notifyChange(mSliceUri, null /* observer */); + } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java index 0b7b6d555fdf..927a49cb60f3 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java @@ -18,11 +18,6 @@ package com.android.systemui.qs; import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS; -import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_QS_DATE; - -import android.app.ActivityManager; -import android.app.AlarmManager; -import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; @@ -31,7 +26,6 @@ import android.graphics.PorterDuff.Mode; import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; import android.os.UserManager; -import android.provider.AlarmClock; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.util.AttributeSet; @@ -39,24 +33,19 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import android.widget.Toast; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; -import com.android.keyguard.KeyguardStatusView; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.settingslib.Utils; import com.android.settingslib.drawable.UserIconDrawable; import com.android.systemui.Dependency; -import com.android.systemui.FontSizeUtils; import com.android.systemui.R; import com.android.systemui.R.dimen; -import com.android.systemui.R.id; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.qs.TouchAnimator.Builder; -import com.android.systemui.qs.TouchAnimator.ListenerAdapter; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.ExpandableIndicator; import com.android.systemui.statusbar.phone.MultiUserSwitch; @@ -65,8 +54,6 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; -import com.android.systemui.statusbar.policy.NextAlarmController; -import com.android.systemui.statusbar.policy.NextAlarmController.NextAlarmChangeCallback; import com.android.systemui.statusbar.policy.UserInfoController; import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener; import com.android.systemui.tuner.TunerService; |