diff options
Diffstat (limited to 'src/icalwrap/icalvcalendar.rs')
-rw-r--r-- | src/icalwrap/icalvcalendar.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/icalwrap/icalvcalendar.rs b/src/icalwrap/icalvcalendar.rs index bc4066d..1c64b9b 100644 --- a/src/icalwrap/icalvcalendar.rs +++ b/src/icalwrap/icalvcalendar.rs @@ -141,7 +141,15 @@ impl IcalVCalendar { pub fn with_dtstart(self, dtstart: &IcalTime) -> Self { let event = self.get_principal_event(); unsafe { - ical::icalcomponent_set_dtstart(event.get_ptr(), **dtstart); + let timezone = event.get_dtstart().and_then(|x| x.get_timezone()); + match timezone { + Some(timezone) => { + ical::icalcomponent_set_dtstart(event.get_ptr(), *dtstart.with_timezone(&timezone)); + }, + None => { + ical::icalcomponent_set_dtstart(event.get_ptr(), **dtstart); + } + } } self } @@ -149,7 +157,15 @@ impl IcalVCalendar { pub fn with_dtend(self, dtend: &IcalTime) -> Self { let event = self.get_principal_event(); unsafe { - ical::icalcomponent_set_dtend(event.get_ptr(), **dtend); + let timezone = event.get_dtend().and_then(|x| x.get_timezone()); + match timezone { + Some(timezone) => { + ical::icalcomponent_set_dtend(event.get_ptr(), *dtend.with_timezone(&timezone)); + }, + None => { + ical::icalcomponent_set_dtend(event.get_ptr(), **dtend); + } + } } self } |