Added yearly repeats and fixed monthly to really add a calendar-month.

pull/14/head
Arne Jans 13 years ago
parent a79e19637f
commit c7b076a460

@ -37,6 +37,42 @@ public class DateUtilities {
return date.getTime();
}
/**
* Add the specified amount of months to the given time.<br/>
* The day of month will stay the same.<br/>
*
* @param time the base-time (in milliseconds) to which the amount of months is added
* @param interval the amount of months to be added
* @return the calculated time in milliseconds
*/
public static final long addCalendarMonthsToUnixtime(long time, int interval) {
long result = 0;
Date date = new Date(time);
int month = date.getMonth();
int year = date.getYear();
int yearsToAdd = interval / 12;
int monthsToAdd = interval % 12;
year += yearsToAdd;
month += monthsToAdd;
// correct month overflow
if (month > Calendar.DECEMBER) {
month = month - Calendar.DECEMBER - 1;
year++;
}
// the day stays the same, thats the point
// it's especially important for birthday-reminders
date.setMonth(month);
date.setYear(year);
result = date.getTime();
return result;
}
/** Returns unixtime for current time */
public static final long now() {
return System.currentTimeMillis();

@ -189,7 +189,10 @@ public class NotificationActivity extends TaskListActivity implements OnTimeSetL
time += value * 7 * DateUtilities.ONE_DAY;
break;
case RepeatControlSet.INTERVAL_MONTHS:
time += value * 30 * DateUtilities.ONE_DAY;
time = DateUtilities.addCalendarMonthsToUnixtime(time, 1);
break;
case RepeatControlSet.INTERVAL_YEARS:
time = DateUtilities.addCalendarMonthsToUnixtime(time, 12);
break;
}

@ -50,6 +50,7 @@ public class RepeatControlSet implements TaskEditControlSet {
public static final int INTERVAL_MONTHS = 2;
public static final int INTERVAL_HOURS = 3;
public static final int INTERVAL_MINUTES = 4;
public static final int INTERVAL_YEARS = 5;
private static final int TYPE_DUE_DATE = 0;
private static final int TYPE_COMPLETION_DATE = 1;
@ -203,6 +204,9 @@ public class RepeatControlSet implements TaskEditControlSet {
case MINUTELY:
interval.setSelection(INTERVAL_MINUTES);
break;
case YEARLY:
interval.setSelection(INTERVAL_YEARS);
break;
default:
// an unhandled recurrence
exceptionService.reportError("repeat-unhandled-rule", //$NON-NLS-1$
@ -273,6 +277,9 @@ public class RepeatControlSet implements TaskEditControlSet {
case INTERVAL_MINUTES:
rrule.setFreq(Frequency.MINUTELY);
break;
case INTERVAL_YEARS:
rrule.setFreq(Frequency.YEARLY);
break;
}
result = rrule.toIcal();

@ -80,6 +80,10 @@ public class RepeatDetailExposer extends BroadcastReceiver {
interval = r.getQuantityString(R.plurals.DUt_months, rrule.getInterval(),
rrule.getInterval());
break;
case YEARLY:
interval = r.getQuantityString(R.plurals.DUt_years, rrule.getInterval(),
rrule.getInterval());
break;
default:
// not designed to be used, only a fail-safe
interval = rrule.getInterval() + "-" + rrule.getFreq().name(); //$NON-NLS-1$

@ -1750,12 +1750,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Interval de Repecitiò</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dia/es</item>
<item>Setmana/es</item>
<item>Mes/os</item>
<item>Hora/es</item>
<item>Minut/s</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1737,12 +1737,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Opakovací interval</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dnů</item>
<item>Týdnů</item>
<item>Měsíců</item>
<item>Hodin</item>
<item>Minut</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1733,12 +1733,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Repeat Interval</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dag(e)</item>
<item>Uge(r)</item>
<item>Måned(er)</item>
<item>Time(r)</item>
<item>Minut(er)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1730,12 +1730,13 @@ Achtung: diese Aufgaben sind unwiederbringlich verloren, wenn Sie kein Backup ge
<string name="repeat_interval_prompt">Wiederholungsintervall</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Tag(e)</item>
<item>Woche(n)</item>
<item>Monat(e)</item>
<item>Stunde(n)</item>
<item>Minute(n)</item>
<item>Jahr(e)</item>
</string-array>
<string-array name="repeat_type">

@ -1748,12 +1748,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Intervalo de repetición</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Día(s)</item>
<item>Semana(s)</item>
<item>Mes(es)</item>
<item>Hora(s)</item>
<item>Minuto(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1734,12 +1734,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Interval de répétition</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Jour(s)</item>
<item>Semaine(s)</item>
<item>Mois</item>
<item>Heure(s)</item>
<item>Minute(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1763,12 +1763,13 @@ you get stuff done. It features reminders, tags, sync, Locale plug-in, a widget
<string name="repeat_interval_prompt">Repeat Interval</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>יום/ימים</item>
<item>שבוע/(ות)</item>
<item>חודש/ים</item>
<item>שעה/ות</item>
<item>דקה/דקות</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1734,12 +1734,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Intervallo di ripetizione</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Giorno(i)</item>
<item>Settimana(e)</item>
<item>Mese(i)</item>
<item>Ora(e)</item>
<item>Minuto(i)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1738,12 +1738,13 @@ you get stuff done. It features reminders, tags, sync, Locale plug-in, a widget
<string name="repeat_interval_prompt">繰り返し間隔</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>日毎</item>
<item>週毎</item>
<item>か月毎</item>
<item>時間毎</item>
<item>Minutes</item>
<item>Minute(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1745,12 +1745,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">반복 주기</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item></item>
<item></item>
<item></item>
<item></item>
<item>Minutes</item>
<item>Minute(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1741,12 +1741,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Gjentakelsesintervall</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dag(er)</item>
<item>Uke(r)</item>
<item>Måned(er)</item>
<item>Time(r)</item>
<item>Minutt(er)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1716,12 +1716,13 @@
<string name="repeat_interval_prompt">Herhaal interval</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dag(en)</item>
<item>Week/Weken</item>
<item>Maand(en)</item>
<item>Uur/Uren</item>
<item>Minuut/Minuten</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1745,12 +1745,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Odstęp powtarzania</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dzień/Dni</item>
<item>Tydzień/Tygodni(e)</item>
<item>Miesiąc/Miesiący(e)</item>
<item>Godzinę(y)/Godzin</item>
<item>Minuta/Minut</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1753,12 +1753,13 @@ Astrid might not let you know when your tasks are due.\n
<string name="repeat_interval_prompt">Repeat Interval</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dia(s)</item>
<item>Semana(s)</item>
<item>Mês(es)</item>
<item>Hora(s)</item>
<item>Minuto(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1734,12 +1734,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Интервал повтора</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>День(дней)</item>
<item>Неделя(ль)</item>
<item>Месяц(ев)</item>
<item>Час(ов)</item>
<item>минут(а)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1733,12 +1733,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">Upprepningsintervall</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Dag(ar)</item>
<item>Vecka (veckor)</item>
<item>Månad(er)</item>
<item>Timme (timmar)</item>
<item>Minut(er)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1761,12 +1761,13 @@ you get stuff done. It features reminders, tags, sync, Locale plug-in, a widget
<string name="repeat_interval_prompt">Repeat Interval</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>วัน</item>
<item>สัปดาห์</item>
<item>เดือน</item>
<item>ชั่วโมง</item>
<item>นาที</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1717,12 +1717,13 @@
<string name="repeat_interval_prompt">重复间隔</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item></item>
<item></item>
<item></item>
<item>小时</item>
<item>Minutes</item>
<item>Minute(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -1734,12 +1734,13 @@ Astrid is open-source and proudly maintained by Todoroo, Inc.</string>
<string name="repeat_interval_prompt">重複間隔</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item></item>
<item></item>
<item></item>
<item>小時</item>
<item>Minutes</item>
<item>Minute(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

@ -20,12 +20,13 @@
<string name="repeat_interval_prompt">Repeat Interval</string>
<string-array name="repeat_interval">
<!-- repeat interval (days,weeks,months,hours,minutes) -->
<!-- repeat interval (days,weeks,months,hours,minutes,years) -->
<item>Day(s)</item>
<item>Week(s)</item>
<item>Month(s)</item>
<item>Hour(s)</item>
<item>Minute(s)</item>
<item>Year(s)</item>
</string-array>
<string-array name="repeat_type">

Loading…
Cancel
Save