add repeat limit to exported events if available

This commit is contained in:
tibbi
2017-04-04 22:48:58 +02:00
parent a76f61b5e7
commit 8296bb507e

View File

@@ -35,7 +35,7 @@ class IcsExporter {
event.endTS.let { out.writeLn("$DTEND:${Formatter.getExportedTime(it)}") } event.endTS.let { out.writeLn("$DTEND:${Formatter.getExportedTime(it)}") }
} }
fillRepeatInterval(event.repeatInterval, out) fillRepeatInterval(event, out)
out.writeLn("$STATUS$CONFIRMED") out.writeLn("$STATUS$CONFIRMED")
out.writeLn(END_EVENT) out.writeLn(END_EVENT)
@@ -52,21 +52,27 @@ class IcsExporter {
} }
} }
private fun fillRepeatInterval(repeatInterval: Int, out: BufferedWriter) { private fun fillRepeatInterval(event: Event, out: BufferedWriter) {
val repeatInterval = event.repeatInterval
if (repeatInterval == 0) if (repeatInterval == 0)
return return
val freq = getFreq(repeatInterval) val freq = getFreq(repeatInterval)
val interval = getInterval(repeatInterval) val interval = getInterval(repeatInterval)
val rrule = "$RRULE=$FREQ=$freq;$INTERVAL=$interval" val repeatLimit = getRepeatLimitString(event)
val rrule = "$RRULE$FREQ=$freq;$INTERVAL=$interval$repeatLimit"
out.writeLn(rrule) out.writeLn(rrule)
} }
private fun getFreq(interval: Int) = when (interval) { private fun getFreq(interval: Int): String {
DAY -> DAILY return if (interval % YEAR == 0)
WEEK -> WEEKLY YEARLY
MONTH -> MONTHLY else if (interval % MONTH == 0)
else -> YEARLY MONTHLY
else if (interval % WEEK == 0)
WEEKLY
else
DAILY
} }
private fun getInterval(interval: Int): Int { private fun getInterval(interval: Int): Int {
@@ -79,4 +85,11 @@ class IcsExporter {
else else
interval / DAY interval / DAY
} }
private fun getRepeatLimitString(event: Event): String {
return if (event.repeatLimit == 0)
""
else
";$UNTIL=${Formatter.getDayCodeFromTS(event.repeatLimit)}"
}
} }