From bd4348a982bb78b9507f6f277c7fcd1baa7be9fc Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 17 Apr 2013 13:39:10 -0700 Subject: [PATCH] Started building better monthly repeat logic --- .../com/todoroo/andlib/utility/DateUtilities.java | 15 +++++++++++++++ .../repeats/RepeatTaskCompleteListener.java | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/api/src/com/todoroo/andlib/utility/DateUtilities.java b/api/src/com/todoroo/andlib/utility/DateUtilities.java index 6c0b32a9b..32ea38579 100644 --- a/api/src/com/todoroo/andlib/utility/DateUtilities.java +++ b/api/src/com/todoroo/andlib/utility/DateUtilities.java @@ -247,6 +247,21 @@ public class DateUtilities { return DateUtilities.getDateStringHideYear(context, new Date(date)); } + public static boolean isEndOfMonth(Date d) { + int date = d.getDate(); + if (date < 28) + return false; + + int month = d.getMonth(); + if (month == Calendar.FEBRUARY) + return date >= 28; + + if (month == Calendar.APRIL || month == Calendar.JUNE || month == Calendar.SEPTEMBER || month == Calendar.NOVEMBER) + return date >= 30; + + return date >= 31; + } + /** * Calls getRelativeDay with abbreviated parameter defaulted to true */ diff --git a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java index eb5deae70..926001786 100644 --- a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java +++ b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java @@ -127,6 +127,8 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver { return handleSubdayRepeat(original, rrule); else if(rrule.getFreq() == Frequency.WEEKLY && rrule.getByDay().size() > 0 && repeatAfterCompletion) return handleWeeklyRepeatAfterComplete(rrule, original, task.hasDueTime()); + else if (rrule.getFreq() == Frequency.MONTHLY) + return handleMonthlyRepeat(original, startDateAsDV, rrule); else return invokeRecurrence(rrule, original, startDateAsDV); } @@ -153,6 +155,11 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver { return Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, time); } + private static long handleMonthlyRepeat(Date original, DateValue startDateAsDV, RRule rrule) { + // + return invokeRecurrence(rrule, original, startDateAsDV); + } + private static Comparator weekdayCompare = new Comparator() { @Override public int compare(WeekdayNum object1, WeekdayNum object2) {