summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnnie Chin <afchin@google.com>2015-04-23 17:04:11 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-04-23 17:04:12 +0000
commitea6b5f127abdea10a3528fc80fa9c82bbe221ca1 (patch)
tree210ae32e32434d68db19089fdbef9fdaf3234156
parent79d8607b20ac4fc15ca97c8552177ba03e9a706b (diff)
parent1ca117f15d3a1054fd690c09704afe424cb0f3c2 (diff)
downloadplatform_packages_apps_DeskClock-master-soong.tar.gz
platform_packages_apps_DeskClock-master-soong.tar.bz2
platform_packages_apps_DeskClock-master-soong.zip
Merge "Correctly reschedule alarms on system time change."android-m-preview-2android-m-preview-1android-m-previewmaster-soong
-rw-r--r--src/com/android/deskclock/alarms/AlarmStateManager.java3
-rw-r--r--src/com/android/deskclock/provider/Alarm.java26
2 files changed, 18 insertions, 11 deletions
diff --git a/src/com/android/deskclock/alarms/AlarmStateManager.java b/src/com/android/deskclock/alarms/AlarmStateManager.java
index 7b21ce4fb..c2762052e 100644
--- a/src/com/android/deskclock/alarms/AlarmStateManager.java
+++ b/src/com/android/deskclock/alarms/AlarmStateManager.java
@@ -631,6 +631,9 @@ public final class AlarmStateManager extends BroadcastReceiver {
// TODO: Refactor this code to not use the overloaded registerInstance method.
ContentResolver contentResolver = context.getContentResolver();
for (AlarmInstance instance : AlarmInstance.getInstances(contentResolver, null)) {
+ final Alarm alarm = Alarm.getAlarm(contentResolver, instance.mAlarmId);
+ instance.setAlarmTime(alarm.getNextAlarmTime(Calendar.getInstance()));
+ AlarmInstance.updateInstance(contentResolver, instance);
AlarmStateManager.registerInstance(context, instance, false);
}
AlarmStateManager.updateNextAlarm(context);
diff --git a/src/com/android/deskclock/provider/Alarm.java b/src/com/android/deskclock/provider/Alarm.java
index 277eb77cb..5494cb87c 100644
--- a/src/com/android/deskclock/provider/Alarm.java
+++ b/src/com/android/deskclock/provider/Alarm.java
@@ -298,17 +298,26 @@ public final class Alarm implements Parcelable, ClockContract.AlarmsColumns {
}
public AlarmInstance createInstanceAfter(Calendar time) {
+ Calendar nextInstanceTime = getNextAlarmTime(time);
+ AlarmInstance result = new AlarmInstance(nextInstanceTime, id);
+ result.mVibrate = vibrate;
+ result.mLabel = label;
+ result.mRingtone = alert;
+ return result;
+ }
+
+ public Calendar getNextAlarmTime(Calendar currentTime) {
Calendar nextInstanceTime = Calendar.getInstance();
- nextInstanceTime.set(Calendar.YEAR, time.get(Calendar.YEAR));
- nextInstanceTime.set(Calendar.MONTH, time.get(Calendar.MONTH));
- nextInstanceTime.set(Calendar.DAY_OF_MONTH, time.get(Calendar.DAY_OF_MONTH));
+ nextInstanceTime.set(Calendar.YEAR, currentTime.get(Calendar.YEAR));
+ nextInstanceTime.set(Calendar.MONTH, currentTime.get(Calendar.MONTH));
+ nextInstanceTime.set(Calendar.DAY_OF_MONTH, currentTime.get(Calendar.DAY_OF_MONTH));
nextInstanceTime.set(Calendar.HOUR_OF_DAY, hour);
nextInstanceTime.set(Calendar.MINUTE, minutes);
nextInstanceTime.set(Calendar.SECOND, 0);
nextInstanceTime.set(Calendar.MILLISECOND, 0);
- // If we are still behind the passed in time, then add a day
- if (nextInstanceTime.getTimeInMillis() <= time.getTimeInMillis()) {
+ // If we are still behind the passed in currentTime, then add a day
+ if (nextInstanceTime.getTimeInMillis() <= currentTime.getTimeInMillis()) {
nextInstanceTime.add(Calendar.DAY_OF_YEAR, 1);
}
@@ -317,12 +326,7 @@ public final class Alarm implements Parcelable, ClockContract.AlarmsColumns {
if (addDays > 0) {
nextInstanceTime.add(Calendar.DAY_OF_WEEK, addDays);
}
-
- AlarmInstance result = new AlarmInstance(nextInstanceTime, id);
- result.mVibrate = vibrate;
- result.mLabel = label;
- result.mRingtone = alert;
- return result;
+ return nextInstanceTime;
}
@Override