From 7e2e378c2e7f81e147427ec302917710e6c39b58 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Tue, 17 Apr 2012 11:55:39 -0700 Subject: [PATCH] Tweaks to reminder scheduling to account for new date scheme --- .../todoroo/astrid/reminders/Notifications.java | 5 +++++ .../todoroo/astrid/reminders/ReminderService.java | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java b/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java index 258e90058..64cb2cfc5 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/Notifications.java @@ -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; diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderService.java b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderService.java index ea208d2b9..cb8a3be14 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderService.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderService.java @@ -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)