add a helper function for adding new events in caldav
This commit is contained in:
parent
3ed2c4e472
commit
f4c28d26f0
|
@ -8,6 +8,7 @@ import android.app.NotificationManager
|
|||
import android.app.PendingIntent
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.ComponentName
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
|
@ -336,6 +337,28 @@ fun Context.fetchCalDAVCalendarEvents(calendarId: Long, eventTypeId: Int) {
|
|||
}
|
||||
}
|
||||
|
||||
fun Context.addCalDAVEvent(event: Event, calendarId: Int) {
|
||||
val durationMinutes = (event.endTS - event.startTS) / 1000 / 60
|
||||
val uri = CalendarContract.Events.CONTENT_URI
|
||||
val values = ContentValues().apply {
|
||||
put(CalendarContract.Events.CALENDAR_ID, calendarId)
|
||||
put(CalendarContract.Events.TITLE, event.title)
|
||||
put(CalendarContract.Events.DESCRIPTION, event.description)
|
||||
put(CalendarContract.Events.DTSTART, event.startTS * 1000L)
|
||||
put(CalendarContract.Events.ALL_DAY, if (event.getIsAllDay()) 1 else 0)
|
||||
put(CalendarContract.Events.RRULE, Parser().getShortRepeatInterval(event))
|
||||
put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().toString())
|
||||
|
||||
if (event.repeatInterval > 0) {
|
||||
put(CalendarContract.Events.DURATION, Parser().getDurationString(durationMinutes))
|
||||
} else {
|
||||
put(CalendarContract.Events.DTEND, event.endTS * 1000L)
|
||||
}
|
||||
}
|
||||
|
||||
contentResolver.insert(uri, values)
|
||||
}
|
||||
|
||||
fun Context.getCalDAVEventReminders(eventId: Long): List<Int> {
|
||||
val reminders = ArrayList<Int>()
|
||||
val uri = CalendarContract.Reminders.CONTENT_URI
|
||||
|
|
|
@ -69,26 +69,11 @@ class IcsExporter {
|
|||
if (minutes != -1) {
|
||||
out.writeLn(BEGIN_ALARM)
|
||||
out.writeLn("$ACTION$DISPLAY")
|
||||
out.writeLn("$TRIGGER${getReminderString(minutes)}")
|
||||
out.writeLn("$TRIGGER${Parser().getDurationString(minutes)}")
|
||||
out.writeLn(END_ALARM)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getReminderString(minutes: Int): String {
|
||||
var days = 0
|
||||
var hours = 0
|
||||
var remainder = minutes
|
||||
if (remainder >= DAY_MINUTES) {
|
||||
days = Math.floor(((remainder / DAY_MINUTES).toDouble())).toInt()
|
||||
remainder -= days * DAY_MINUTES
|
||||
}
|
||||
if (remainder >= 60) {
|
||||
hours = Math.floor(((remainder / 60).toDouble())).toInt()
|
||||
remainder -= hours * 60
|
||||
}
|
||||
return "-P${days}DT${hours}H${remainder}M0S"
|
||||
}
|
||||
|
||||
private fun fillIgnoredOccurrences(event: Event, out: BufferedWriter) {
|
||||
event.ignoreEventOccurrences.forEach {
|
||||
out.writeLn("$EXDATE:$it}")
|
||||
|
|
|
@ -208,4 +208,20 @@ class Parser {
|
|||
}
|
||||
|
||||
private fun getDurationValue(duration: String, char: String) = Regex("[0-9]+(?=$char)").find(duration)?.value?.toInt() ?: 0
|
||||
|
||||
// from 65 to P0DT1H5M0S
|
||||
fun getDurationString(minutes: Int): String {
|
||||
var days = 0
|
||||
var hours = 0
|
||||
var remainder = minutes
|
||||
if (remainder >= DAY_MINUTES) {
|
||||
days = Math.floor((remainder / DAY_MINUTES).toDouble()).toInt()
|
||||
remainder -= days * DAY_MINUTES
|
||||
}
|
||||
if (remainder >= 60) {
|
||||
hours = Math.floor((remainder / 60).toDouble()).toInt()
|
||||
remainder -= hours * 60
|
||||
}
|
||||
return "-P${days}DT${hours}H${remainder}M0S"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue