mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-02-10 08:50:42 +01:00
make sure event exporting is happening on a background thread
This commit is contained in:
parent
83d3f3a724
commit
614ed16c91
@ -28,49 +28,51 @@ class IcsExporter {
|
|||||||
return@getFileOutputStream
|
return@getFileOutputStream
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showExportingToast) {
|
Thread {
|
||||||
activity.toast(R.string.exporting)
|
if (showExportingToast) {
|
||||||
}
|
activity.toast(R.string.exporting)
|
||||||
|
|
||||||
it.bufferedWriter().use { out ->
|
|
||||||
out.writeLn(BEGIN_CALENDAR)
|
|
||||||
out.writeLn(CALENDAR_PRODID)
|
|
||||||
out.writeLn(CALENDAR_VERSION)
|
|
||||||
for (event in events) {
|
|
||||||
out.writeLn(BEGIN_EVENT)
|
|
||||||
event.title.replace("\n", "\\n").let { if (it.isNotEmpty()) out.writeLn("$SUMMARY:$it") }
|
|
||||||
event.description.replace("\n", "\\n").let { if (it.isNotEmpty()) out.writeLn("$DESCRIPTION$it") }
|
|
||||||
event.importId.let { if (it.isNotEmpty()) out.writeLn("$UID$it") }
|
|
||||||
event.eventType.let { out.writeLn("$CATEGORY_COLOR${activity.eventTypesDB.getEventTypeWithId(it)?.color}") }
|
|
||||||
event.eventType.let { out.writeLn("$CATEGORIES${activity.eventTypesDB.getEventTypeWithId(it)?.title}") }
|
|
||||||
event.lastUpdated.let { out.writeLn("$LAST_MODIFIED:${Formatter.getExportedTime(it)}") }
|
|
||||||
event.location.let { if (it.isNotEmpty()) out.writeLn("$LOCATION:$it") }
|
|
||||||
|
|
||||||
if (event.getIsAllDay()) {
|
|
||||||
out.writeLn("$DTSTART;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.startTS)}")
|
|
||||||
out.writeLn("$DTEND;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.endTS + DAY)}")
|
|
||||||
} else {
|
|
||||||
event.startTS.let { out.writeLn("$DTSTART:${Formatter.getExportedTime(it * 1000L)}") }
|
|
||||||
event.endTS.let { out.writeLn("$DTEND:${Formatter.getExportedTime(it * 1000L)}") }
|
|
||||||
}
|
|
||||||
|
|
||||||
out.writeLn("$STATUS$CONFIRMED")
|
|
||||||
Parser().getRepeatCode(event).let { if (it.isNotEmpty()) out.writeLn("$RRULE$it") }
|
|
||||||
|
|
||||||
fillReminders(event, out)
|
|
||||||
fillIgnoredOccurrences(event, out)
|
|
||||||
|
|
||||||
eventsExported++
|
|
||||||
out.writeLn(END_EVENT)
|
|
||||||
}
|
}
|
||||||
out.writeLn(END_CALENDAR)
|
|
||||||
}
|
|
||||||
|
|
||||||
callback(when {
|
it.bufferedWriter().use { out ->
|
||||||
eventsExported == 0 -> EXPORT_FAIL
|
out.writeLn(BEGIN_CALENDAR)
|
||||||
eventsFailed > 0 -> EXPORT_PARTIAL
|
out.writeLn(CALENDAR_PRODID)
|
||||||
else -> EXPORT_OK
|
out.writeLn(CALENDAR_VERSION)
|
||||||
})
|
for (event in events) {
|
||||||
|
out.writeLn(BEGIN_EVENT)
|
||||||
|
event.title.replace("\n", "\\n").let { if (it.isNotEmpty()) out.writeLn("$SUMMARY:$it") }
|
||||||
|
event.description.replace("\n", "\\n").let { if (it.isNotEmpty()) out.writeLn("$DESCRIPTION$it") }
|
||||||
|
event.importId.let { if (it.isNotEmpty()) out.writeLn("$UID$it") }
|
||||||
|
event.eventType.let { out.writeLn("$CATEGORY_COLOR${activity.eventTypesDB.getEventTypeWithId(it)?.color}") }
|
||||||
|
event.eventType.let { out.writeLn("$CATEGORIES${activity.eventTypesDB.getEventTypeWithId(it)?.title}") }
|
||||||
|
event.lastUpdated.let { out.writeLn("$LAST_MODIFIED:${Formatter.getExportedTime(it)}") }
|
||||||
|
event.location.let { if (it.isNotEmpty()) out.writeLn("$LOCATION:$it") }
|
||||||
|
|
||||||
|
if (event.getIsAllDay()) {
|
||||||
|
out.writeLn("$DTSTART;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.startTS)}")
|
||||||
|
out.writeLn("$DTEND;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.endTS + DAY)}")
|
||||||
|
} else {
|
||||||
|
event.startTS.let { out.writeLn("$DTSTART:${Formatter.getExportedTime(it * 1000L)}") }
|
||||||
|
event.endTS.let { out.writeLn("$DTEND:${Formatter.getExportedTime(it * 1000L)}") }
|
||||||
|
}
|
||||||
|
|
||||||
|
out.writeLn("$STATUS$CONFIRMED")
|
||||||
|
Parser().getRepeatCode(event).let { if (it.isNotEmpty()) out.writeLn("$RRULE$it") }
|
||||||
|
|
||||||
|
fillReminders(event, out)
|
||||||
|
fillIgnoredOccurrences(event, out)
|
||||||
|
|
||||||
|
eventsExported++
|
||||||
|
out.writeLn(END_EVENT)
|
||||||
|
}
|
||||||
|
out.writeLn(END_CALENDAR)
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(when {
|
||||||
|
eventsExported == 0 -> EXPORT_FAIL
|
||||||
|
eventsFailed > 0 -> EXPORT_PARTIAL
|
||||||
|
else -> EXPORT_OK
|
||||||
|
})
|
||||||
|
}.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user