Insert calendar reminders

This commit is contained in:
M66B 2023-05-18 09:23:59 +02:00
parent ef061a965f
commit 11ecd31633
1 changed files with 52 additions and 2 deletions

View File

@ -39,14 +39,18 @@ import java.util.TimeZone;
import biweekly.ICalVersion; import biweekly.ICalVersion;
import biweekly.ICalendar; import biweekly.ICalendar;
import biweekly.component.VAlarm;
import biweekly.component.VEvent; import biweekly.component.VEvent;
import biweekly.io.TimezoneAssignment; import biweekly.io.TimezoneAssignment;
import biweekly.io.TimezoneInfo; import biweekly.io.TimezoneInfo;
import biweekly.io.WriteContext; import biweekly.io.WriteContext;
import biweekly.io.scribe.property.RecurrenceRuleScribe; import biweekly.io.scribe.property.RecurrenceRuleScribe;
import biweekly.parameter.ParticipationStatus; import biweekly.parameter.ParticipationStatus;
import biweekly.property.Action;
import biweekly.property.Attendee; import biweekly.property.Attendee;
import biweekly.property.RecurrenceRule; import biweekly.property.RecurrenceRule;
import biweekly.property.Trigger;
import biweekly.util.Duration;
import biweekly.util.ICalDate; import biweekly.util.ICalDate;
public class CalendarHelper { public class CalendarHelper {
@ -101,7 +105,10 @@ public class CalendarHelper {
Long existId = exists(context, selectedAccount, selectedName, uid); Long existId = exists(context, selectedAccount, selectedName, uid);
if (existId != null) { if (existId != null) {
EntityLog.log(context, EntityLog.Type.General, message, "Event exists uid=" + uid + " id=" + existId); EntityLog.log(context, EntityLog.Type.General, message, "Event exists uid=" + uid + " id=" + existId);
return existId; if (BuildConfig.DEBUG)
delete(context, event, message);
else
return existId;
} }
} }
@ -241,9 +248,52 @@ public class CalendarHelper {
" level=" + level + " level=" + level +
" status=" + pstatus); " status=" + pstatus);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.w(ex); Log.e(ex);
} }
if (status == CalendarContract.Events.STATUS_CONFIRMED) {
for (VAlarm valarm : event.getAlarms())
try {
// BEGIN:VALARM
// ACTION:DISPLAY
// DESCRIPTION:This is an event reminder
// TRIGGER:-P0DT0H30M0S
// END:VALARM
Action action = valarm.getAction();
Trigger trigger = valarm.getTrigger();
EntityLog.log(context, EntityLog.Type.General, message, "Event reminder" +
" action=" + (action == null ? null : action.getValue()) +
" related=" + (trigger == null ? null : trigger.getRelated()) +
" duration=" + (trigger == null ? null : trigger.getDuration()));
if (action != null && trigger != null &&
Action.DISPLAY.equals(action.getValue()) &&
trigger.getRelated() == null && trigger.getDuration() != null) {
Duration duration = trigger.getDuration();
Integer w = duration.getWeeks();
Integer d = duration.getDays();
Integer h = duration.getHours();
Integer m = duration.getMinutes();
int minutes = (w == null ? 0 : w * 7 * 24 * 60) +
(d == null ? 0 : d * 24 * 60) +
(h == null ? 0 : h * 60) +
(m == null ? 0 : m);
ContentValues cv = new ContentValues();
cv.put(CalendarContract.Reminders.EVENT_ID, eventId);
cv.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
cv.put(CalendarContract.Reminders.MINUTES, minutes);
Uri reminder = resolver.insert(CalendarContract.Reminders.CONTENT_URI, cv);
EntityLog.log(context, EntityLog.Type.General, message, "Inserted event reminder" +
" w=" + w + " d=" + d + " h=" + h + " m=" + m +
" uri=" + reminder);
}
} catch (Throwable ex) {
Log.e(ex);
}
}
return eventId; return eventId;
} }
} }