Tweaks to reminder scheduling to account for new date scheme

pull/14/head
Sam Bosley 12 years ago
parent bddc70bdb4
commit 7e2e378c2e

@ -14,6 +14,7 @@ import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
import com.timsu.astrid.R;
@ -156,6 +157,10 @@ public class Notifications extends BroadcastReceiver {
if(task.isCompleted() || task.isDeleted() || task.getValue(Task.USER_ID) != 0)
return false;
// new task edit in progress
if(TextUtils.isEmpty(task.getValue(Task.TITLE)))
return false;
// it's hidden - don't sound, don't delete
if(task.isHidden() && type == ReminderService.TYPE_RANDOM)
return true;

@ -255,13 +255,19 @@ public final class ReminderService {
private long calculateNextOverdueReminder(Task task) {
// Uses getNowValue() instead of DateUtilities.now()
if(task.hasDueDate() && task.getFlag(Task.REMINDER_FLAGS, Task.NOTIFY_AFTER_DEADLINE)) {
long dueDate = task.getValue(Task.DUE_DATE);
Date due = new Date(task.getValue(Task.DUE_DATE));
if (!task.hasDueTime()) {
due.setHours(23);
due.setMinutes(59);
due.setSeconds(59);
}
long dueDateForOverdue = due.getTime();
long lastReminder = task.getValue(Task.REMINDER_LAST);
if(dueDate > getNowValue())
return dueDate + (long)((0.5f + 2f * random.nextFloat()) * DateUtilities.ONE_HOUR);
if(dueDateForOverdue > getNowValue())
return dueDateForOverdue + (long)((0.5f + 2f * random.nextFloat()) * DateUtilities.ONE_HOUR);
if(lastReminder < dueDate)
if(lastReminder < dueDateForOverdue)
return getNowValue();
if(getNowValue() - lastReminder < 6 * DateUtilities.ONE_HOUR)

Loading…
Cancel
Save