From 0f60b6b751b142835336ca8d78acca6955883d91 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 26 Oct 2023 12:57:42 +0200 Subject: [PATCH] Timezone/rrule --- .../eu/faircode/email/CalendarHelper.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/CalendarHelper.java b/app/src/main/java/eu/faircode/email/CalendarHelper.java index 18f7771704..8c281705df 100644 --- a/app/src/main/java/eu/faircode/email/CalendarHelper.java +++ b/app/src/main/java/eu/faircode/email/CalendarHelper.java @@ -39,6 +39,7 @@ import java.util.TimeZone; import biweekly.ICalVersion; import biweekly.ICalendar; +import biweekly.component.ICalComponent; import biweekly.component.VAlarm; import biweekly.component.VEvent; import biweekly.io.TimezoneAssignment; @@ -109,6 +110,44 @@ public class CalendarHelper { } } + if (false) { + // BEGIN:VCALENDAR + // METHOD:REQUEST + // PRODID:Microsoft Exchange Server 2010 + // VERSION:2.0 + // BEGIN:VTIMEZONE + // TZID:W. Europe Standard Time + // BEGIN:STANDARD + // DTSTART:16010101T030000 + // TZOFFSETFROM:+0200 + // TZOFFSETTO:+0100 + // RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10 + // END:STANDARD + // BEGIN:DAYLIGHT + // DTSTART:16010101T020000 + // TZOFFSETFROM:+0100 + // TZOFFSETTO:+0200 + // RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3 + // END:DAYLIGHT + // END:VTIMEZONE + // BEGIN:VEVENT + // UID:... + // DTSTART;TZID=W. Europe Standard Time:20231030T100000 + // DTEND;TZID=W. Europe Standard Time:20231030T110000 + // ... + for (TimezoneAssignment assignment : icalendar.getTimezoneInfo().getTimezones()) { + for (List components : assignment.getComponent().getComponents().getMap().values()) + for (ICalComponent component : components) { + RecurrenceRule recurrence = component.getProperty(RecurrenceRule.class); + if (recurrence != null) { + RecurrenceRuleScribe scribe = new RecurrenceRuleScribe(); + WriteContext wcontext = new WriteContext(ICalVersion.V2_0, icalendar.getTimezoneInfo(), null); + String rrule = scribe.writeText(recurrence, wcontext); + } + } + } + } + String organizer = (event.getOrganizer() == null ? null : event.getOrganizer().getEmail()); String summary = (event.getSummary() == null ? null : event.getSummary().getValue());