show Same Day monthly repeating options only at months with enough days

This commit is contained in:
tibbi 2017-05-08 22:13:32 +02:00
parent 6fc6514caa
commit e53f7f9a87
1 changed files with 12 additions and 1 deletions

View File

@ -26,7 +26,7 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
currStart.plusYears(repeatInterval / YEAR)
} else if (repeatInterval % MONTH == 0) {
if (repeatRule == REPEAT_MONTH_SAME_DAY) {
currStart.plusMonths(repeatInterval / MONTH)
addMonthsWithSameDay(currStart, original)
} else if (repeatRule == REPEAT_MONTH_EVERY_XTH_DAY) {
addXthDayInterval(currStart, original)
} else {
@ -46,6 +46,17 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
endTS = newEndTS
}
// if an event should happen on 31st with Same Day monthly repetition, dont show it at all at months with 30 or less days
private fun addMonthsWithSameDay(currStart: DateTime, original: Event): DateTime {
var newDateTime = currStart.plusMonths(repeatInterval / MONTH)
while (newDateTime.dayOfMonth().maximumValue < Formatter.getDateTimeFromTS(original.startTS).dayOfMonth().maximumValue) {
newDateTime = newDateTime.plusMonths(repeatInterval / MONTH)
newDateTime = newDateTime.withDayOfMonth(newDateTime.dayOfMonth().maximumValue)
}
return newDateTime
}
// handle monthly repetitions like Third Monday
private fun addXthDayInterval(currStart: DateTime, original: Event): DateTime {
val day = currStart.dayOfWeek
var order = (currStart.dayOfMonth - 1) / 7